Toolbars work again.

This commit is contained in:
2006-06-01 13:51:16 +00:00
parent 0670c42bd4
commit aca9a47f56
2 changed files with 95 additions and 187 deletions

View File

@@ -22,8 +22,7 @@ GLADEFILENAME = os.path.join(DATADIR, 'fluents.glade')
class FluentApp:
def __init__(self, wf):
# Application variables
def __init__(self, wf): # Application variables
self.project = None
self.current_data = None
self._last_view = None
@@ -33,67 +32,6 @@ class FluentApp:
self.widget_tree = gtk.glade.XML(GLADEFILENAME, 'appwindow')
self.workflow = wf(self)
def set_project(self, project):
logger.log('notice', 'Creating a new project')
self.project = project
self.workflow.add_project(self.project)
self.navigator_view.add_project(self.project)
def set_workflow(self, workflow):
self.workflow = workflow
self.wf_menu.set_workflow(self.workflow)
def custom_object_factory(self, glade, function_name, widget_name,\
str1, str2, int1, int2):
handler = getattr(self, function_name)
return handler(str1, str2, int1, int2)
def create_logview(self, str1, str2, int1, int2):
# Set up log view
self.log_view = logger.LogView(logger.logger)
# self.log_view.set_level('notice')
self.log_view.show()
return self.log_view
def create_main_view(self, str1, str2, int1, int2):
self.main_view = plots.MainView()
self.main_view.show()
return self.main_view
def _update_toolbar(self, view):
logger.log("debug", "view changed to %s" % view)
# don't do anything on no change
if self._last_view == view:
return
self._last_view = view
window = self.widget_tree.get_widget('plot_toolbar_dock')
if self._plot_toolbar:
window.remove(self._plot_toolbar)
self._plot_toolbar = view.get_toolbar()
if self._plot_toolbar:
window.add(self._plot_toolbar)
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,project):
self.large_view = plots.LargeView()
self.large_view.show()
return self.large_view
def create_navigator_view(self, str1, str2, int1, int2):
# tree = self.project.data_tree
self.navigator_view = navigator.NavigatorView(None, self)
self.navigator_view.show()
return self.navigator_view
def show(self):
self.init_gui()
def init_gui(self):
self['appwindow'].set_size_request(800, 600)
@@ -121,20 +59,80 @@ class FluentApp:
}
self.widget_tree.signal_autoconnect(signals)
self['main_view'].connect('view-changed', self.on_view_changed)
# Log that we've set up the app now
logger.log('debug', 'Program started')
def set_project(self, project):
logger.log('notice', 'Creating a new project')
self.project = project
self.workflow.add_project(self.project)
self.navigator_view.add_project(self.project)
def set_workflow(self, workflow):
self.workflow = workflow
self.wf_menu.set_workflow(self.workflow)
def show(self):
self.init_gui()
def change_plot(self, plot):
pt = self.widget_tree.get_widget('main_view')
pt.insert_view(plot)
def get_active_view_frame(self):
return self['main_view'].get_active_view_frame()
def _update_toolbar(self, view):
"Set the plot specific toolbar to the toolbar of the currently active plot."
# don't do anything on no change
if self._last_view == view:
return
self._last_view = view
logger.log("debug", "view changed to %s" % view)
window = self.widget_tree.get_widget('plot_toolbar_dock')
if self._plot_toolbar:
window.remove(self._plot_toolbar)
self._plot_toolbar = view.get_toolbar()
if self._plot_toolbar:
window.add(self._plot_toolbar)
# Methods to create GUI widgets from CustomWidgets in the glade file.
# The custom_object_factory calls other functions to generate specific
# widgets.
def custom_object_factory(self, glade, fun_name, widget_name, s1, s2, i1, i2):
"Called by the glade file reader to create custom GUI widgets."
handler = getattr(self, fun_name)
return handler(s1, s2, i1, i2)
def create_logview(self, str1, str2, int1, int2):
self.log_view = logger.LogView(logger.logger)
self.log_view.show()
return self.log_view
def create_main_view(self, str1, str2, int1, int2):
self.main_view = plots.MainView()
self.main_view.show()
return self.main_view
def create_navigator_view(self, str1, str2, int1, int2):
self.navigator_view = navigator.NavigatorView(None, self)
self.navigator_view.show()
return self.navigator_view
# Event handlers.
def on_single_view(self, *ignored):
nb = self.widget_tree.get_widget('main_view')
nb.goto_large()
self['main_view'].goto_large()
def on_multiple_view(self, *ignored):
nb = self.widget_tree.get_widget('main_view')
nb.goto_small()
self['main_view'].goto_small()
def __getitem__(self, key):
return self.widget_tree.get_widget(key)
@@ -162,3 +160,7 @@ class FluentApp:
logger.log('warning', e)
else:
logger.log('notice', 'Successfully reloaded workflow')
def on_view_changed(self, widget, vf):
self._update_toolbar(vf.get_view())