* fluent, system/plots.py: Switching between four and one view now sort of
works. Still a bit buggy, and with messy code.
This commit is contained in:
@@ -10,6 +10,46 @@ from matplotlib.backends.backend_gtk import NavigationToolbar2GTK as NavigationT
|
||||
import scipy
|
||||
import logger
|
||||
|
||||
class MainView (gtk.Notebook):
|
||||
def __init__(self):
|
||||
gtk.Notebook.__init__(self)
|
||||
self.set_show_tabs(False)
|
||||
self.set_show_border(False)
|
||||
|
||||
# Add a multiple pane view and a single pane view.
|
||||
self.small_view = SmallView()
|
||||
self.small_view.show()
|
||||
self.large_view = LargeView()
|
||||
self.large_view.show()
|
||||
|
||||
self.append_page(self.small_view)
|
||||
self.append_page(self.large_view)
|
||||
self.set_current_page(0)
|
||||
|
||||
# Set current view to the upper left view.
|
||||
self.current_view = self.small_view.get_view(0, 0)
|
||||
self.current_view.mark_active(True)
|
||||
|
||||
def goto_small(self):
|
||||
if self.get_current_page() == 0:
|
||||
return None
|
||||
self.set_current_page(0)
|
||||
view = self.large_view.remove_child()
|
||||
self.small_view.return_current(view)
|
||||
|
||||
def goto_large(self):
|
||||
if self.get_current_page() == 1:
|
||||
return None
|
||||
self.set_current_page(1)
|
||||
view = self.small_view.borrow_current()
|
||||
self.large_view.set_child(view)
|
||||
|
||||
def show(self):
|
||||
gtk.Notebook.show(self)
|
||||
|
||||
def insert_view(self, view):
|
||||
self.small_view.insert_view(view)
|
||||
|
||||
class SmallView (gtk.Table):
|
||||
def __init__(self):
|
||||
gtk.Table.__init__(self, 2, 2, True)
|
||||
@@ -21,6 +61,9 @@ class SmallView (gtk.Table):
|
||||
|
||||
self.active_x = 0
|
||||
self.active_y = 0
|
||||
|
||||
self.set_row_spacings(3)
|
||||
self.set_col_spacings(3)
|
||||
|
||||
for x in range(self.cols):
|
||||
for y in range(self.rows):
|
||||
@@ -37,10 +80,22 @@ class SmallView (gtk.Table):
|
||||
self.child_views[col][row] = child
|
||||
child.show()
|
||||
|
||||
def borrow_current(self):
|
||||
self.borrowed = self.child_views[self.active_x][self.active_y]
|
||||
self.remove_child(self.active_x, self.active_y)
|
||||
return self.borrowed
|
||||
|
||||
def return_current(self, view):
|
||||
self.set_child(view, self.active_x, self.active_y)
|
||||
|
||||
def remove_child(self, col, row):
|
||||
self.remove(selv.child_views[col, row])
|
||||
self.attach(col, row, EmptyView())
|
||||
self.remove(self.child_views[col][row])
|
||||
self.attach(EmptyView(), col, col+1, row, row+1)
|
||||
|
||||
def insert_view(self, child):
|
||||
if not self.find_child(child):
|
||||
self.set_child(child, self.active_x, self.active_y)
|
||||
|
||||
def show(self):
|
||||
for x in self.child_views:
|
||||
for y in x:
|
||||
@@ -73,6 +128,9 @@ class SmallView (gtk.Table):
|
||||
if loc:
|
||||
self.set_active(loc[0], loc[1])
|
||||
|
||||
def get_view(self, x, y):
|
||||
return self.child_views[x][y]
|
||||
|
||||
class LargeView (gtk.Frame):
|
||||
def __init__(self):
|
||||
gtk.Frame.__init__(self)
|
||||
@@ -80,7 +138,11 @@ class LargeView (gtk.Frame):
|
||||
self.add(self.child_view)
|
||||
|
||||
def set_child(self, child):
|
||||
pass
|
||||
self.remove(self.child_view)
|
||||
self.child_view.hide()
|
||||
self.add(child)
|
||||
self.child_view = child
|
||||
child.show()
|
||||
|
||||
def hide(self):
|
||||
self.child_view.hide()
|
||||
@@ -90,6 +152,12 @@ class LargeView (gtk.Frame):
|
||||
self.child_view.show()
|
||||
gtk.Frame.show(self)
|
||||
|
||||
def remove_child(self):
|
||||
child = self.child_view
|
||||
child.hide()
|
||||
self.remove(child)
|
||||
return child
|
||||
|
||||
class Plot (gtk.Frame):
|
||||
|
||||
def __init__(self):
|
||||
@@ -108,7 +176,7 @@ class Plot (gtk.Frame):
|
||||
if active:
|
||||
self.set_shadow_type(gtk.SHADOW_IN)
|
||||
else:
|
||||
self.set_shadow_type(gtk.SHADOW_ETCHED_IN)
|
||||
self.set_shadow_type(gtk.SHADOW_OUT)
|
||||
|
||||
class EmptyView (Plot):
|
||||
def __init__(self):
|
||||
|
Reference in New Issue
Block a user