Added docstrings.
This commit is contained in:
parent
f7ededa451
commit
1f9a400057
@ -80,12 +80,17 @@ class ObjectTable:
|
||||
|
||||
class ViewFrame (gtk.Frame):
|
||||
"""
|
||||
A ViewFrame is a gtk bin that contains a view.
|
||||
A ViewFrame is a gtk container widget that contains a View.
|
||||
The ViewFrame is either active or inactive, and belongs to a group of
|
||||
VeiwFrames of which only one can be active at any time.
|
||||
"""
|
||||
|
||||
def __init__(self, view_frames):
|
||||
"""Initializes a new ViewFrame.
|
||||
@param view_frames: A list of view frames to which the new view
|
||||
frame shouls belong. Only one ViewFrame in this list can be
|
||||
active at any time.
|
||||
"""
|
||||
gtk.Frame.__init__(self)
|
||||
self.focused = False
|
||||
self.view_frames = view_frames
|
||||
@ -101,7 +106,7 @@ class ViewFrame (gtk.Frame):
|
||||
vbox.pack_start(gtk.HSeparator(), expand=False)
|
||||
|
||||
self._ebox_button_event = ebox.connect("button-press-event",
|
||||
self.on_button_press_event)
|
||||
self._on_button_press_event)
|
||||
## Keep the references for later use.
|
||||
self._vbox = vbox
|
||||
self._ebox = ebox
|
||||
@ -123,14 +128,16 @@ class ViewFrame (gtk.Frame):
|
||||
|
||||
# Set view
|
||||
self._view = self.empty_view
|
||||
self._view.connect("button-press-event", self.on_button_press_event)
|
||||
self._view.connect("button-press-event", self._on_button_press_event)
|
||||
self._vbox.add(self._view)
|
||||
self._view_title.set_text(self._view.title)
|
||||
self.show_all()
|
||||
self._view.show()
|
||||
|
||||
def focus(self):
|
||||
"""Gets focus and ensures that no other window is in focus."""
|
||||
"""Gets focus and ensures that no other ViewFrame in the same set
|
||||
is in focus.
|
||||
"""
|
||||
if self.focused:
|
||||
self.emit('focus-changed', self, True)
|
||||
return self
|
||||
@ -155,7 +162,9 @@ class ViewFrame (gtk.Frame):
|
||||
self.emit('focus-changed', self, False)
|
||||
|
||||
def set_view(self, view):
|
||||
"""Set view to view or to empty view if parameter is None"""
|
||||
"""Set view to view or to empty view if parameter is None
|
||||
@param view: An instance of View
|
||||
"""
|
||||
|
||||
# if None is passed, use empty view
|
||||
if view == None:
|
||||
@ -174,7 +183,7 @@ class ViewFrame (gtk.Frame):
|
||||
self._view.disconnect(self._button_event)
|
||||
|
||||
self._button_event = view.connect("button-press-event",
|
||||
self.on_button_press_event)
|
||||
self._on_button_press_event)
|
||||
|
||||
# remove old view, set new view
|
||||
if self._view:
|
||||
@ -190,12 +199,15 @@ class ViewFrame (gtk.Frame):
|
||||
self._view = view
|
||||
|
||||
def get_view(self):
|
||||
"""Returns current view, or None if the empty view is set."""
|
||||
"""Returns current view, or None if the empty view is set.
|
||||
@returns: None if the ViewFrame is currently displaying it's
|
||||
EmptyView. Otherwise it returns the currently displeyd View.
|
||||
"""
|
||||
if self._view == self.empty_view:
|
||||
return None
|
||||
return self._view
|
||||
|
||||
def on_button_press_event(self, widget, event):
|
||||
def _on_button_press_event(self, widget, event):
|
||||
if not self.focused:
|
||||
self.focus()
|
||||
|
||||
@ -211,6 +223,12 @@ class ViewFrame (gtk.Frame):
|
||||
|
||||
|
||||
class MainView (gtk.Notebook):
|
||||
"""The MainView class displays the Views in Fluents.
|
||||
|
||||
MainView, of which there is normally only one instance, contains a
|
||||
gtk.Table that holds all the visible Views, and a single ViewFrame
|
||||
that is used for maximizing plots.
|
||||
"""
|
||||
def __init__(self):
|
||||
gtk.Notebook.__init__(self)
|
||||
self.set_show_tabs(False)
|
||||
@ -222,7 +240,7 @@ class MainView (gtk.Notebook):
|
||||
self.update_small_views()
|
||||
|
||||
for vf in self._view_frames:
|
||||
vf.connect('focus-changed', self.on_view_focus_changed)
|
||||
vf.connect('focus-changed', self._on_view_focus_changed)
|
||||
|
||||
self.append_page(self._small_views)
|
||||
self.append_page(self._large_view)
|
||||
@ -293,28 +311,39 @@ class MainView (gtk.Notebook):
|
||||
self.set_current_page(0)
|
||||
|
||||
def insert_view(self, view):
|
||||
"""Set a view in the currently active ViewFrame"""
|
||||
"""Set a view in the currently active ViewFrame.
|
||||
@param view: An instance of View.
|
||||
"""
|
||||
if self.get_current_page() == 0:
|
||||
vf = self.get_active_small_view()
|
||||
else:
|
||||
vf = self._large_view
|
||||
vf.set_view(view)
|
||||
|
||||
def set_all_plots(self, plots):
|
||||
"""Displays all the plots in the list plots, and hides all other plots"""
|
||||
def set_all_plots(self, views):
|
||||
"""Displays all the views in the list, and hides all other views.
|
||||
|
||||
Loops through all ViewFrames from top left to bottom right, and sets
|
||||
their currently active View to the next view in the list. After the
|
||||
last view is placed in a ViewFrame, the remaining ViewFrames are
|
||||
emptied.
|
||||
|
||||
@param views: A list of views to set.
|
||||
"""
|
||||
for y in range(self._views.ysize):
|
||||
for x in range(self._views.xsize):
|
||||
if plots:
|
||||
self._views[x, y].set_view(plots.pop())
|
||||
if views:
|
||||
self._views[x, y].set_view(views.pop())
|
||||
else:
|
||||
self._views[x, y].set_view(None)
|
||||
|
||||
def on_view_focus_changed(self, widget, vf, focused):
|
||||
def _on_view_focus_changed(self, widget, vf, focused):
|
||||
if focused:
|
||||
self.emit('view-changed', vf)
|
||||
|
||||
def resize_table(self, width, height):
|
||||
|
||||
"""Resizes the list of small views.
|
||||
"""
|
||||
## Hide all plots that will be removed from the screen.
|
||||
for x in range(self._views.xsize):
|
||||
for y in range(self._views.ysize):
|
||||
@ -335,12 +364,14 @@ class MainView (gtk.Notebook):
|
||||
|
||||
|
||||
class View (gtk.Frame):
|
||||
"""The base class of everything that is shown in the center view of fluents.
|
||||
"""The base class of everything that is shown in the center view of
|
||||
fluents.
|
||||
|
||||
Most views should rather subclass Plot, which automatically handles freezing and
|
||||
toolbars, and sets up matplotlib Figure and Canvas objects.
|
||||
Most views should rather subclass Plot, which automatically handles
|
||||
freezing, creates a toolbar, and sets up matplotlib Figure and Canvas
|
||||
objects.
|
||||
"""
|
||||
|
||||
|
||||
def __init__(self, title):
|
||||
gtk.Frame.__init__(self)
|
||||
self.title = title
|
||||
|
Reference in New Issue
Block a user