Toolbars work again.
This commit is contained in:
@@ -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())
|
||||
|
||||
|
Reference in New Issue
Block a user