diff --git a/fluent b/fluent
index 908fff0..495bd35 100755
--- a/fluent
+++ b/fluent
@@ -47,6 +47,16 @@ class FluentApp:
self.log_view.show()
return self.log_view
+ def create_small_view(self, str1, str2, int1, int2):
+ self.small_view = plots.SmallView()
+ self.small_view.show()
+ return self.small_view
+
+ def create_large_view(self, str1, str2, int1, int2):
+ self.large_view = plots.LargeView()
+ self.large_view.show()
+ return self.large_view
+
def create_navigator_view(self, str1, str2, int1, int2):
self.navigator_view = navigator.NavigatorView(self.navigator, self)
self.navigator_view.show()
@@ -66,23 +76,11 @@ class FluentApp:
wf_box.pack_end(wf_menu)
# Set up plot
- pt = self.widget_tree.get_widget('plot_table')
+ pt = self.widget_tree.get_widget('small_view')
plot = plots.SinePlot()
plot.show()
plot.mark_active(True)
- pt.add(plot)
-
- plot2 = plots.EmptyPlot()
- plot2.show()
- pt.attach(plot2, 1, 2, 0, 1)
-
- plot3 = plots.EmptyPlot()
- plot3.show()
- pt.attach(plot3, 0, 1, 1, 2)
-
- plot4 = plots.EmptyPlot()
- plot4.show()
- pt.attach(plot4, 1, 2, 1, 2)
+# pt.set_child(plot, 0, 1)
# Set up plot toolbar
dock = self.widget_tree.get_widget('plot_toolbar_dock')
@@ -91,15 +89,20 @@ class FluentApp:
# Connect signals
signals = {'on_quit1_activate' : (gtk.main_quit),
'on_appwindow_delete_event' : (gtk.main_quit),
- 'on_view_log_activate' : (self.toggle_view_log)}
+ 'on_view_log_activate' : (self.toggle_view_log),
+ 'on_zoom_in_button_clicked' : (self.on_single_view),
+ 'on_zoom_out_button_clicked' : (self.on_multiple_view)}
self.widget_tree.signal_autoconnect(signals)
# Log that we've set up the app now
logger.log('debug', 'Program started')
def change_plot(self, plot):
- pt = self.widget_tree.get_widget('plot_table')
- pt.attach(plot, 1, 2, 1, 2)
+ pt = self.widget_tree.get_widget('small_view')
+ pt.set_child(plot, 1, 1)
+# plot.hide()
+# pt.remove(plot)
+# plot.unparent()
def toggle_view_log(self, menu_item):
lw = self.widget_tree.get_widget('logview')
@@ -109,6 +112,13 @@ class FluentApp:
lw.unparent()
logger.log('debug', 'Toggling log window visibility')
+ def on_single_view(self, button):
+ nb = self.widget_tree.get_widget('view_notebook')
+ nb.set_current_page(1)
+
+ def on_multiple_view(self, button):
+ nb = self.widget_tree.get_widget('view_notebook')
+ nb.set_current_page(0)
if __name__ == '__main__':
gnome.program_init(PROGRAM_NAME, VERSION)
diff --git a/system/fluent.glade b/system/fluent.glade
index 0ae35ce..3ff4956 100644
--- a/system/fluent.glade
+++ b/system/fluent.glade
@@ -305,12 +305,13 @@
False
-
+
True
gtk-zoom-in
True
True
False
+
False
@@ -319,12 +320,13 @@
-
+
True
gtk-zoom-out
True
True
False
+
False
@@ -432,13 +434,79 @@
-
+
True
- 2
- 2
- True
- 3
- 3
+ False
+ False
+ GTK_POS_TOP
+ False
+ False
+
+
+
+ True
+ create_small_view
+ 0
+ 0
+ Mon, 17 Apr 2006 15:44:29 GMT
+
+
+ False
+ True
+
+
+
+
+
+ True
+ label15
+ False
+ False
+ GTK_JUSTIFY_LEFT
+ False
+ False
+ 0.449999988079
+ 0.5
+ 0
+ 0
+
+
+ tab
+
+
+
+
+
+ True
+ create_large_view
+ 0
+ 0
+ Mon, 17 Apr 2006 15:44:42 GMT
+
+
+ False
+ True
+
+
+
+
+
+ True
+ label16
+ False
+ False
+ GTK_JUSTIFY_LEFT
+ False
+ False
+ 0.5
+ 0.5
+ 0
+ 0
+
+
+ tab
+
+
True
diff --git a/system/navigator.py b/system/navigator.py
index ff2dc70..d611016 100644
--- a/system/navigator.py
+++ b/system/navigator.py
@@ -14,7 +14,7 @@ class NavigatorStore (gtk.TreeStore):
iter = self.append(None)
self.set_value(iter, 0, ('Sine Plot 1'))
- self.set_value(iter, 1, (plots.EmptyPlot()))
+ self.set_value(iter, 1, (plots.EmptyView()))
def plot_at(self, path):
iter = self.get_iter(path)
@@ -39,9 +39,6 @@ class NavigatorView (gtk.TreeView):
logger.log('debug', 'Initializing naviagor window')
def row_activated_handler(self, widget, path, column):
- #self.app.change_window(
- #
-
plot = self.navigator.plot_at(path)
logger.log('notice', 'Button pressed')
self.app.change_plot(plot)
diff --git a/system/plots.py b/system/plots.py
index e78b649..3d554e9 100644
--- a/system/plots.py
+++ b/system/plots.py
@@ -10,11 +10,90 @@ from matplotlib.backends.backend_gtk import NavigationToolbar2GTK as NavigationT
import scipy
import logger
+class SmallView (gtk.Table):
+ def __init__(self):
+ gtk.Table.__init__(self, 2, 2, True)
+
+ self.child_views = [[EmptyView(), EmptyView()],
+ [EmptyView(), EmptyView()]]
+ self.cols = 2
+ self.rows = 2
+
+ self.active_x = 0
+ self.active_y = 0
+
+ for x in range(self.cols):
+ for y in range(self.rows):
+ child = self.child_views[x][y]
+ child.parent_signalling = child.connect('button_press_event', self.__view_button_event__)
+ self.attach(child, x, x+1, y, y+1)
+
+ def set_child(self, child, col, row):
+ cur_widget = self.child_views[col][row]
+ cur_widget.disconnect(cur_widget.parent_signalling)
+ self.remove(cur_widget)
+ self.attach(child, col, col+1, row, row+1)
+ child.parent_signalling = child.connect('button_press_event', self.__view_button_event__)
+ self.child_views[col][row] = child
+ child.show()
+
+ def remove_child(self, col, row):
+ self.remove(selv.child_views[col, row])
+ self.attach(col, row, EmptyView())
+
+ def show(self):
+ for x in self.child_views:
+ for y in x:
+ y.show()
+ gtk.Table.show(self)
+
+ def hide(self):
+ for x in self.child_views:
+ for y in x:
+ y.hide()
+ gtk.Table.hide(self)
+
+ def set_active(self, x, y):
+ old_focus = self.child_views[self.active_x][self.active_y]
+ new_focus = self.child_views[x][y]
+ old_focus.mark_active(False)
+ new_focus.mark_active(True)
+ self.active_x = x
+ self.active_y = y
+
+ def find_child(self, child):
+ for i, row in enumerate(self.child_views):
+ for j, v in enumerate(row):
+ if v == child:
+ return (i, j)
+ return None
+
+ def __view_button_event__(self, view, *rest):
+ loc = self.find_child(view)
+ if loc:
+ self.set_active(loc[0], loc[1])
+
+class LargeView (gtk.Frame):
+ def __init__(self):
+ gtk.Frame.__init__(self)
+ self.child_view = EmptyView()
+ self.add(self.child_view)
+
+ def set_child(self, child):
+ pass
+
+ def hide(self):
+ self.child_view.hide()
+ gtk.Frame.hide(self)
+
+ def show(self):
+ self.child_view.show()
+ gtk.Frame.show(self)
+
class Plot (gtk.Frame):
def __init__(self):
gtk.Frame.__init__(self)
- self.canvas = None
self.mark_active(False)
self.connect('button_press_event', self.on_button_press)
@@ -23,9 +102,7 @@ class Plot (gtk.Frame):
self.mark_active(True)
def get_toolbar(self, window):
- self.toolbar = NavigationToolbar(self.canvas, window)
- self.toolbar.set_property('show-arrow', False)
- return self.toolbar
+ return None
def mark_active(self, active):
if active:
@@ -33,19 +110,32 @@ class Plot (gtk.Frame):
else:
self.set_shadow_type(gtk.SHADOW_ETCHED_IN)
-
-class EmptyPlot (Plot):
+class EmptyView (Plot):
def __init__(self):
Plot.__init__(self)
- label = gtk.Label('No plot')
- label.show()
- self.add(label)
+
+ label = gtk.Label('No view')
+ ebox = gtk.EventBox()
+ ebox.add(label)
+ self.add(ebox)
+ label.connect('button_press_event', self.on_button_press)
- def get_toolbar(self, window):
- return None
+ self.label = label
+ self.ebox = ebox
+ self.show()
+ def show(self):
+ self.ebox.show()
+ self.label.show()
+ Plot.show(self)
+
+ def hide(self):
+ self.label.hide()
+ self.ebox.hide()
+ Plot.hide(self)
+
class SinePlot (Plot):
-
+
def __init__(self):
Plot.__init__(self)
fig = Figure(figsize=(5,4), dpi=72)
@@ -57,6 +147,11 @@ class SinePlot (Plot):
self.add(self.canvas)
self.canvas.show()
+ def get_toolbar(self, window):
+ self.toolbar = NavigationToolbar(self.canvas, window)
+ self.toolbar.set_property('show-arrow', False)
+ return self.toolbar
+
class ScatterPlot (Plot):
def __init__(self):
Plot.__init__(self)
@@ -69,3 +164,8 @@ class ScatterPlot (Plot):
self.add(self.canvas)
self.canvas.show()
+ def get_toolbar(self, window):
+ self.toolbar = NavigationToolbar(self.canvas, window)
+ self.toolbar.set_property('show-arrow', False)
+ return self.toolbar
+