class StateDataFlowsListView(TreeView): builder = glade.get_glade_path("data_flow_list_widget.glade") top = 'tree_view' def __init__(self): super(StateDataFlowsListView, self).__init__() self.tree_view = self['tree_view']
def __init__(self): super().__init__(builder_filename=glade.get_glade_path( 'semantic_data_editor.glade'), parent='semantic_data_vbox') self.scrollbar_widget = self['semantic_data_scroller'] self['delete_entry'].set_border_width(constants.BUTTON_BORDER_WIDTH) self['new_dict_entry'].set_border_width(constants.BUTTON_BORDER_WIDTH) self['new_entry'].set_border_width(constants.BUTTON_BORDER_WIDTH) tree_view = self["semantic_data_tree_view"] # prepare tree view columns key_renderer = Gtk.CellRendererText() key_renderer.set_property('editable', True) col = Gtk.TreeViewColumn('Key', key_renderer, text=self.KEY_STORAGE_ID) tree_view.append_column(col) value_renderer = Gtk.CellRendererText() value_renderer.set_property('editable', True) col = Gtk.TreeViewColumn('Value', value_renderer, text=self.VALUE_STORAGE_ID) tree_view.append_column(col) is_dict_renderer = Gtk.CellRendererText() col = Gtk.TreeViewColumn('Is Dict', is_dict_renderer, text=self.IS_DICT_STORAGE_ID) tree_view.append_column(col) gui_helper_label.ellipsize_labels_recursively( self['semantic_data_toolbar'])
class TopToolBarView(View): builder = glade.get_glade_path("top_tool_bar.glade") top = 'top_toolbar' def __init__(self): View.__init__(self) self.get_top_widget().set_events(gtk.gdk.POINTER_MOTION_MASK | gtk.gdk.POINTER_MOTION_HINT_MASK | gtk.gdk.BUTTON_PRESS_MASK) close_label = gui_helper_label.create_button_label( constants.BUTTON_CLOSE) self['close_button'].set_label_widget(close_label) self['close_button'].set_tooltip_text("Close RAFCON") maximize_label = gui_helper_label.create_button_label( constants.BUTTON_EXP) self['maximize_button'].set_label_widget(maximize_label) self['minimize_button'].set_label('_') self['minimize_button'].set_tooltip_text("Minimize main window") redock_label = gui_helper_label.create_button_label( constants.BUTTON_UNDOCK) self['redock_button'].set_label_widget(redock_label) self['redock_button'].set_tooltip_text("Re-Dock widget to main window")
class LinkageOverviewView(View): builder = glade.get_glade_path("linkage_overview_one.glade") top = 'linkage_container' def __init__(self): View.__init__(self) self.inputs_view = LinkageOverviewDataView() self.outputs_view = LinkageOverviewDataView() self.scope_view = LinkageOverviewDataView() self.outcomes_view = LinkageOverviewLogicView() self['inputs_scroller'].add(self.inputs_view.get_top_widget()) self['outputs_scroller'].add(self.outputs_view.get_top_widget()) self['scoped_scroller'].add(self.scope_view.get_top_widget()) self['outcomes_scroller'].add(self.outcomes_view.get_top_widget()) self.inputs_view.scrollbar_widget = self['inputs_scroller'] self.outputs_view.scrollbar_widget = self['outputs_scroller'] self.scope_view.scrollbar_widget = self['scoped_scroller'] self.outcomes_view.scrollbar_widget = self['outcomes_scroller'] gui_helper_label.set_label_markup( self['data_linkage_label'], 'DATA LINKAGE', letter_spacing=constants.LETTER_SPACING_1PT) gui_helper_label.set_label_markup( self['logical_linkage_label'], 'LOGICAL LINKAGE', letter_spacing=constants.LETTER_SPACING_1PT)
class DebugConsoleView(View): builder = glade.get_glade_path("debug_console.glade") top = 'console_container' def __init__(self): View.__init__(self) self._lock = threading.Lock() ###################################################### # Logging text view ###################################################### self.logging_console_view = LoggingConsoleView() self['console'].pack_start(self.logging_console_view.get_top_widget(), True, True, 0) self.logging_console_view.get_top_widget().show() ###################################################### # initial configuration of the console ###################################################### self['button_follow_logging'].set_active(global_gui_config.get_config_value('CONSOLE_FOLLOW_LOGGING', True)) self['button_show_verbose'].set_active(global_gui_config.get_config_value('LOGGING_SHOW_VERBOSE', True)) self['button_show_debug'].set_active(global_gui_config.get_config_value('LOGGING_SHOW_DEBUG', True)) self['button_show_info'].set_active(global_gui_config.get_config_value('LOGGING_SHOW_INFO', True)) self['button_show_warning'].set_active(global_gui_config.get_config_value('LOGGING_SHOW_WARNING', True)) self['button_show_error'].set_active(global_gui_config.get_config_value('LOGGING_SHOW_ERROR', True)) self['undock_console_button'].set_image(gui_helper_label.create_button_label(constants.BUTTON_UNDOCK)) self['undock_console_button'].set_tooltip_text("Undock debug console widget") self['console_hide_button'].set_image(gui_helper_label.create_button_label(constants.BUTTON_DOWNA)) gui_helper_label.ellipsize_labels_recursively(self['debug_console_button_hbox'])
class ToolBarView(View): builder = glade.get_glade_path("tool_bar.glade") top = 'toolbar' def __init__(self): View.__init__(self) button_new = self['button_new'] button_new.set_label_widget(create_label_widget_with_icon(constants.BUTTON_NEW, _("New state machine"))) button_refresh = self['button_refresh'] button_refresh.set_label_widget(create_label_widget_with_icon(constants.BUTTON_REFR, _("Refresh"), "Refresh all libraries and state machines")) button_refresh_selected = self['button_refresh_selected'] button_refresh_selected.set_label_widget(create_label_widget_with_icon(constants.BUTTON_REFR, _("Refresh Selected"), "Refresh selected state machine")) button_open = self['button_open'] button_open.set_label_widget(create_label_widget_with_icon(constants.BUTTON_OPEN, _("Open state machine"))) button_save = self['button_save'] button_save.set_label_widget(create_label_widget_with_icon(constants.BUTTON_SAVE, _("Save state machine"))) button_refresh_libs = self['button_refresh_libs'] button_refresh_libs.set_label_widget( create_label_widget_with_icon(constants.BUTTON_REFR, _("Refresh Libraries"), "Refresh all libraries")) button_bake_state_machine = self['button_bake_state_machine'] button_bake_state_machine.set_label_widget( create_label_widget_with_icon( constants.BUTTON_BAKE, _("Bake State Machine"), "Saves the currently selected state machine and all library folders it refers to"))
class StateTransitionsListView(TreeView): builder = glade.get_glade_path("transition_list_widget.glade") top = 'tree_view' def __init__(self): super(StateTransitionsListView, self).__init__() self.tree_view = self['tree_view']
def __init__(self): super().__init__(builder_filename=glade.get_glade_path('tool_bar.glade'), parent='toolbar') button_new = self['button_new'] button_new.set_label_widget(create_label_widget_with_icon(constants.BUTTON_NEW, _("New state machine"))) button_refresh = self['button_refresh'] button_refresh.set_label_widget(create_label_widget_with_icon(constants.BUTTON_REFR, _("Refresh"), "Refresh all libraries and state machines")) button_refresh_selected = self['button_refresh_selected'] button_refresh_selected.set_label_widget(create_label_widget_with_icon(constants.ICON_REFRESH_SELECTED, _("Refresh Selected"), "Refresh selected state machine")) button_open = self['button_open'] button_open.set_label_widget(create_label_widget_with_icon(constants.BUTTON_OPEN, _("Open state machine"))) button_save = self['button_save'] button_save.set_label_widget(create_label_widget_with_icon(constants.BUTTON_SAVE, _("Save state machine"))) button_refresh_libs = self['button_refresh_libs'] button_refresh_libs.set_label_widget( create_label_widget_with_icon(constants.ICON_REFRESH_LIBS, _("Refresh Libraries"), "Refresh all libraries")) button_bake_state_machine = self['button_bake_state_machine'] button_bake_state_machine.set_label_widget( create_label_widget_with_icon( constants.BUTTON_BAKE, _("Bake State Machine"), "Saves the currently selected state machine and all library folders it refers to"))
def __init__(self): super().__init__( builder_filename=glade.get_glade_path('menu_bar.glade'), parent='menubar') self.insert_accelerators = { 'new': Gtk.accelerator_parse('<control>N'), 'open': Gtk.accelerator_parse('<control>O'), 'save': Gtk.accelerator_parse('<control>S'), 'quit': Gtk.accelerator_parse('<control>Q'), 'cut': Gtk.accelerator_parse('<control>X'), 'copy': Gtk.accelerator_parse('<control>C'), 'paste': Gtk.accelerator_parse('<control>V'), } self.sub_menu_open_recently = Gtk.Menu() self['open_recent'].set_submenu(self.sub_menu_open_recently) for menu_item_name in self.buttons: # set icon self.set_menu_item_icon(menu_item_name, self.buttons[menu_item_name]) # set accelerator if in shortcuts dictionary with menu_item_name == key if menu_item_name in global_gui_config.get_config_value( 'SHORTCUTS'): shortcuts = global_gui_config.get_config_value( 'SHORTCUTS')[menu_item_name] if shortcuts: main_shortcut = shortcuts[0] if isinstance( shortcuts, list) else shortcuts self.set_menu_item_accelerator(menu_item_name, main_shortcut) for sub_menu_name in self.sub_menus: sub_menu = self[sub_menu_name] sub_menu.set_reserve_toggle_size(False)
class StateOverviewView(View): builder = glade.get_glade_path("state_overview_widget.glade") top = 'properties_widget_bg' def __init__(self): View.__init__(self) self['properties_widget'].set_border_width(constants.GRID_SIZE * 2)
class LinkageOverviewLogicView(TreeView): builder = glade.get_glade_path("linkage_overview_logic.glade") top = 'tree_view' def __init__(self): super(LinkageOverviewLogicView, self).__init__() self._treeView = weakref.ref(self) @property def treeView(self): return self._treeView()
def __init__(self): super().__init__(builder_filename=glade.get_glade_path( 'global_variable_editor_widget.glade'), parent='global_variable_vbox') self['new_global_variable_button'].set_border_width( constants.BUTTON_BORDER_WIDTH) self['delete_global_variable_button'].set_border_width( constants.BUTTON_BORDER_WIDTH) self['lock_global_variable_button'].set_border_width( constants.BUTTON_BORDER_WIDTH) self['unlock_global_variable_button'].set_border_width( constants.BUTTON_BORDER_WIDTH) self.scrollbar_widget = self['scroller'] label.ellipsize_labels_recursively(self['global_variables_toolbar'])
class GlobalVariableEditorView(View): builder = glade.get_glade_path("global_variable_editor_widget.glade") top = 'global_variable_vbox' def __init__(self): View.__init__(self) self['new_global_variable_button'].set_border_width(constants.BUTTON_BORDER_WIDTH) self['delete_global_variable_button'].set_border_width(constants.BUTTON_BORDER_WIDTH) self['lock_global_variable_button'].set_border_width(constants.BUTTON_BORDER_WIDTH) self['unlock_global_variable_button'].set_border_width(constants.BUTTON_BORDER_WIDTH) self.scrollbar_widget = self['scroller'] label.ellipsize_labels_recursively(self['global_variables_toolbar'])
class GlobalVariableEditorView(View): builder = glade.get_glade_path("global_variable_editor_widget.glade") top = 'global_variable_vbox' def __init__(self): View.__init__(self) self['new_global_variable_button'].set_border_width( constants.BUTTON_BORDER_WIDTH) self['delete_global_variable_button'].set_border_width( constants.BUTTON_BORDER_WIDTH) self['lock_global_variable_button'].set_border_width( constants.BUTTON_BORDER_WIDTH) self['unlock_global_variable_button'].set_border_width( constants.BUTTON_BORDER_WIDTH)
class UndockedWindowView(View): builder = glade.get_glade_path("undocked_window.glade") top = 'undock_window' def __init__(self, title): View.__init__(self) toolbar = Gtk.Toolbar() toolbar.props.show_arrow = False fullscreen_icon = label.create_button_label(constants.BUTTON_EXP) self['maximize_button'] = Gtk.ToolButton() self['maximize_button'].set_icon_widget(fullscreen_icon) redock_icon = label.create_button_label(constants.BUTTON_UNDOCK) self['redock_button'] = Gtk.ToolButton() self['redock_button'].set_icon_widget(redock_icon) self['redock_button'].set_tooltip_text("Redock") toolbar.insert(self['maximize_button'], 0) toolbar.insert(self['redock_button'], 1) self['headerbar'].props.title = title self['headerbar'].pack_end(toolbar) self['headerbar'].show_all() self.get_top_widget().set_titlebar(self['headerbar']) def initialize_title(self, window_title): """Initialize the title of the un-docked window :param window_title: The title of the window """ self['headerbar'].props.title = window_title def reset_title(self, title, notebook_identifier): """Triggered whenever a notebook tab is switched in the left bar. Resets the title of the un-docked window to the format 'upper_open_tab / lower_open_tab' :param title: The name of the newly selected tab :param notebook: string taking one of two values 'upper' or 'lower' indicating which notebook was changed """ current_title = self.get_top_widget().get_title() upper_title = current_title.split('/')[0].strip() lower_title = current_title.split('/')[1].strip() if notebook_identifier == 'upper': new_title = title + ' / ' + lower_title else: new_title = upper_title + ' / ' + title self['headerbar'].props.title = new_title
def __init__(self): super().__init__(builder_filename=glade.get_glade_path( 'state_data_flows_widget.glade'), parent='data_flows_container') self.data_flows_listView = StateDataFlowsListView() self['data_flows_scroller'].add( self.data_flows_listView.get_parent_widget()) self.data_flows_listView.scrollbar_widget = self['data_flows_scroller'] self['internal_d_checkbutton'].set_border_width( constants.BUTTON_BORDER_WIDTH) self['connected_to_d_checkbutton'].set_border_width( constants.BUTTON_BORDER_WIDTH) self['add_d_button'].set_border_width(constants.BUTTON_BORDER_WIDTH) self['remove_d_button'].set_border_width(constants.BUTTON_BORDER_WIDTH) gui_helper_label.ellipsize_labels_recursively( self['data_flows_toolbar'])
def __init__(self): super().__init__(builder_filename=glade.get_glade_path( 'linkage_overview_one.glade'), parent='linkage_container') self.inputs_view = LinkageOverviewDataView() self.outputs_view = LinkageOverviewDataView() self.scope_view = LinkageOverviewDataView() self.outcomes_view = LinkageOverviewLogicView() self['inputs_scroller'].add(self.inputs_view.get_parent_widget()) self['outputs_scroller'].add(self.outputs_view.get_parent_widget()) self['scoped_scroller'].add(self.scope_view.get_parent_widget()) self['outcomes_scroller'].add(self.outcomes_view.get_parent_widget()) self.inputs_view.scrollbar_widget = self['inputs_scroller'] self.outputs_view.scrollbar_widget = self['outputs_scroller'] self.scope_view.scrollbar_widget = self['scoped_scroller'] self.outcomes_view.scrollbar_widget = self['outcomes_scroller']
class StateDataFlowsEditorView(View): builder = glade.get_glade_path("state_data_flows_widget.glade") top = 'data_flows_container' def __init__(self): View.__init__(self) self.data_flows_listView = StateDataFlowsListView() self['data_flows_scroller'].add(self.data_flows_listView.get_top_widget()) self.data_flows_listView.scrollbar_widget = self['data_flows_scroller'] self['internal_d_checkbutton'].set_border_width(constants.BUTTON_BORDER_WIDTH) self['connected_to_d_checkbutton'].set_border_width(constants.BUTTON_BORDER_WIDTH) self['add_d_button'].set_border_width(constants.BUTTON_BORDER_WIDTH) self['remove_d_button'].set_border_width(constants.BUTTON_BORDER_WIDTH) gui_helper_label.ellipsize_labels_recursively(self['data_flows_toolbar'])
class UndockedWindowView(View): builder = glade.get_glade_path("undocked_window.glade") top = 'undock_window' def __init__(self, title): View.__init__(self) self.top_tool_bar = TopToolBarView() self['top_menu_hbox'].remove(self['top_tool_bar_placeholder']) self['top_menu_hbox'].pack_end(self.top_tool_bar.get_top_widget(), expand=True, fill=True, padding=0) self['top_menu_hbox'].reorder_child(self.top_tool_bar.get_top_widget(), 1) self.get_top_widget().set_decorated(False) if not ('3.0.101' in os.uname()[2] and 'kde' == os.environ.get('DESKTOP_SESSION')): self.get_top_widget().set_type_hint( gtk.gdk.WINDOW_TYPE_HINT_UTILITY) def initialize_title(self, window_title): """Initialize the title of the un-docked window :param window_title: The title of the window """ self.get_top_widget().set_title(window_title) def reset_title(self, title, notebook_identifier): """Triggered whenever a notebook tab is switched in the left bar. Resets the title of the un-docked window to the format 'upper_open_tab / lower_open_tab' :param title: The name of the newly selected tab :param notebook: string taking one of two values 'upper' or 'lower' indicating which notebook was changed """ current_title = self.get_top_widget().get_title() upper_title = current_title.split('/')[0].strip() lower_title = current_title.split('/')[1].strip() if notebook_identifier == 'upper': new_title = title + ' / ' + lower_title else: new_title = upper_title + ' / ' + title self.get_top_widget().set_title(new_title)
class StateTransitionsEditorView(View): builder = glade.get_glade_path("state_transitions_widget.glade") top = 'vbox2' def __init__(self): View.__init__(self) gui_helper_label.set_label_markup(self['transitions_label'], 'TRANSITIONS', letter_spacing=constants.LETTER_SPACING_1PT) self.transitions_listView = StateTransitionsListView() self['transitions_scroller'].add(self.transitions_listView.get_top_widget()) self.transitions_listView.scrollbar_widget = self['transitions_scroller'] self['internal_t_checkbutton'].set_border_width(constants.BUTTON_BORDER_WIDTH) self['connected_to_t_checkbutton'].set_border_width(constants.BUTTON_BORDER_WIDTH) self['add_t_button'].set_border_width(constants.BUTTON_BORDER_WIDTH) self['remove_t_button'].set_border_width(constants.BUTTON_BORDER_WIDTH)
def __init__(self, title): super().__init__( builder_filename=glade.get_glade_path('undocked_window.glade'), parent='undock_window') toolbar = Gtk.Toolbar() toolbar.props.show_arrow = False fullscreen_icon = label.create_button_label(constants.BUTTON_EXP) self['maximize_button'] = Gtk.ToolButton() self['maximize_button'].set_icon_widget(fullscreen_icon) redock_icon = label.create_button_label(constants.BUTTON_UNDOCK) self['redock_button'] = Gtk.ToolButton() self['redock_button'].set_icon_widget(redock_icon) self['redock_button'].set_tooltip_text("Redock") toolbar.insert(self['maximize_button'], 0) toolbar.insert(self['redock_button'], 1) self['headerbar'].props.title = title self['headerbar'].pack_end(toolbar) self['headerbar'].show_all() self.get_parent_widget().set_titlebar(self['headerbar'])
class LinkageOverviewView(View): builder = glade.get_glade_path("linkage_overview_one.glade") top = 'linkage_container' def __init__(self): View.__init__(self) self.inputs_view = LinkageOverviewDataView() self.outputs_view = LinkageOverviewDataView() self.scope_view = LinkageOverviewDataView() self.outcomes_view = LinkageOverviewLogicView() self['inputs_scroller'].add(self.inputs_view.get_top_widget()) self['outputs_scroller'].add(self.outputs_view.get_top_widget()) self['scoped_scroller'].add(self.scope_view.get_top_widget()) self['outcomes_scroller'].add(self.outcomes_view.get_top_widget()) self.inputs_view.scrollbar_widget = self['inputs_scroller'] self.outputs_view.scrollbar_widget = self['outputs_scroller'] self.scope_view.scrollbar_widget = self['scoped_scroller'] self.outcomes_view.scrollbar_widget = self['outcomes_scroller']
class SemanticDataEditorView(View): """ The view of the Semantic Data Editor widget """ builder = glade.get_glade_path("semantic_data_editor.glade") top = 'semantic_data_vbox' KEY_STORAGE_ID = 0 VALUE_STORAGE_ID = 1 IS_DICT_STORAGE_ID = 2 KEY_COLUMN_ID = 0 VALUE_COLUMN_ID = 1 IS_DICT_COLUMN_ID = 2 def __init__(self): super(SemanticDataEditorView, self).__init__() self.scrollbar_widget = self['semantic_data_scroller'] self['delete_entry'].set_border_width(constants.BUTTON_BORDER_WIDTH) self['new_dict_entry'].set_border_width(constants.BUTTON_BORDER_WIDTH) self['new_entry'].set_border_width(constants.BUTTON_BORDER_WIDTH) tree_view = self["semantic_data_tree_view"] # prepare tree view columns key_renderer = Gtk.CellRendererText() key_renderer.set_property('editable', True) col = Gtk.TreeViewColumn('Key', key_renderer, text=self.KEY_STORAGE_ID) tree_view.append_column(col) value_renderer = Gtk.CellRendererText() value_renderer.set_property('editable', True) col = Gtk.TreeViewColumn('Value', value_renderer, text=self.VALUE_STORAGE_ID) tree_view.append_column(col) is_dict_renderer = Gtk.CellRendererText() col = Gtk.TreeViewColumn('Is Dict', is_dict_renderer, text=self.IS_DICT_STORAGE_ID) tree_view.append_column(col) gui_helper_label.ellipsize_labels_recursively(self['semantic_data_toolbar'])
class StateTransitionsEditorView(View): builder = glade.get_glade_path("state_transitions_widget.glade") top = 'vbox2' def __init__(self): View.__init__(self) self.transitions_listView = StateTransitionsListView() self['transitions_scroller'].add( self.transitions_listView.get_top_widget()) self.transitions_listView.scrollbar_widget = self[ 'transitions_scroller'] self['internal_t_checkbutton'].set_border_width( constants.BUTTON_BORDER_WIDTH) self['connected_to_t_checkbutton'].set_border_width( constants.BUTTON_BORDER_WIDTH) self['add_t_button'].set_border_width(constants.BUTTON_BORDER_WIDTH) self['remove_t_button'].set_border_width(constants.BUTTON_BORDER_WIDTH) gui_helper_label.ellipsize_labels_recursively( self['transitions_toolbar'])
class StateDataFlowsEditorView(View): builder = glade.get_glade_path("state_data_flows_widget.glade") top = 'data_flows_container' def __init__(self): View.__init__(self) gui_helper_label.set_label_markup( self['data_flows_label'], 'DATA FLOWS', letter_spacing=constants.LETTER_SPACING_1PT) self.data_flows_listView = StateDataFlowsListView() self['dataflows_scroller'].add( self.data_flows_listView.get_top_widget()) self.data_flows_listView.scrollbar_widget = self['dataflows_scroller'] self['internal_d_checkbutton'].set_border_width( constants.BUTTON_BORDER_WIDTH) self['connected_to_d_checkbutton'].set_border_width( constants.BUTTON_BORDER_WIDTH) self['add_d_button'].set_border_width(constants.BUTTON_BORDER_WIDTH) self['remove_d_button'].set_border_width(constants.BUTTON_BORDER_WIDTH)
def __init__(self): super().__init__(builder_filename=glade.get_glade_path('main_window.glade'), parent='main_window') if os.getenv("RAFCON_START_MINIMIZED", False): self.get_parent_widget().iconify() # Add gui components by removing their corresponding placeholders defined in the glade file first and then # adding the widgets. self.left_bar_notebooks = [self['upper_notebook'], self['lower_notebook']] ################################################ # Undock Buttons ################################################ self['undock_left_bar_button'].set_image(gui_helper_label.create_button_label(constants.BUTTON_UNDOCK)) self['undock_left_bar_button'].set_tooltip_text("Undock left side bar widget") self['undock_right_bar_button'].set_image(gui_helper_label.create_button_label(constants.BUTTON_UNDOCK)) self['undock_right_bar_button'].set_tooltip_text("Undock right side bar widget") self['collapse_tree_button'].set_image(gui_helper_label.create_button_label(constants.ICON_TREE_FOLD)) self['collapse_tree_button'].set_tooltip_text("Collapse tree of widget") self['show_search_bar'].set_image(gui_helper_label.create_button_label(constants.BUTTON_SHOW_SEARCH_BAR)) self['show_search_bar'].set_tooltip_text("Show state machine search bar") ###################################################### # Library Tree ###################################################### self.library_tree = LibraryTreeView() self.library_tree.show() self['libraries_scrolledwindow'].add(self.library_tree) ###################################################### # Library Usages Tree ###################################################### self.library_usages_tree = LibraryTreeView() self.library_usages_tree.show() self['library_usages_scrolledwindow'].add(self.library_usages_tree) ###################################################### # State Icons ###################################################### self.state_icons = StateIconView() self.state_icons.show() self["state_icons_box"].pack_start(self.state_icons.get_parent_widget(), True, True, 0) ###################################################### # State Machine Tree ###################################################### self.state_machine_tree = StateMachineTreeView() self.state_machine_tree.show() self['states_tree_scrolledwindow'].add(self.state_machine_tree) ###################################################### # Global Variable Manager ###################################################### self.global_var_editor = GlobalVariableEditorView() self.global_var_editor.show() self['global_variables_eventbox'].add(self.global_var_editor.get_parent_widget()) ###################################################### # State Machine History ###################################################### self.state_machine_history = ModificationHistoryView() self.state_machine_history.show() self['history_alignment'].add(self.state_machine_history.get_parent_widget()) ###################################################### # State Machine Execution History ###################################################### self.execution_history = ExecutionHistoryView() self.execution_history.show() self['execution_history_alignment'].add(self.execution_history.get_parent_widget()) ###################################################### # rotate all tab labels by 90 degrees and make detachable ###################################################### self.rotate_and_detach_tab_labels() self['upper_notebook'].set_current_page(0) self['lower_notebook'].set_current_page(0) ###################################################### # State-machines-editor (graphical) ###################################################### self.state_machines_editor = StateMachinesEditorView() self.state_machines_editor.show() self['central_vbox'].pack_start(self.state_machines_editor.get_parent_widget(), True, True, 0) self['central_vbox'].reorder_child(self.state_machines_editor.get_parent_widget(), 1) ###################################################### # Notification Bar ###################################################### self.notification_bar = NotificationBarView() self.notification_bar.show() self['central_vbox'].pack_start(self.notification_bar.get_parent_widget(), False, True, 0) self['central_vbox'].reorder_child(self.notification_bar.get_parent_widget(), 2) ###################################################### # States-editor ###################################################### self.states_editor = StatesEditorView() self['state_editor_eventbox'].add(self.states_editor.get_parent_widget()) self.states_editor.show() ###################################################### # Debug Console ###################################################### self.debug_console_view = DebugConsoleView() self['debug_console_viewport'].add(self.debug_console_view.get_parent_widget()) self.debug_console_view.get_parent_widget().show() # map hide and undock buttons within and debug widget to be usable from main window view with generic naming self['undock_console_button'] = self.debug_console_view['undock_console_button'] self['console_hide_button'] = self.debug_console_view['console_hide_button'] self['console_container'] = self.debug_console_view['console_container'] self['console'] = self.debug_console_view['console'] ################################################## # HeaderBar with MenuBar ################################################## self.menu_bar = MenuBarView() self.menu_bar.show() self['headerbar'].pack_start(self.menu_bar.get_parent_widget()) self['headerbar'].show() self.tool_bar = ToolBarView() self.tool_bar.show() self['top_level_vbox'].remove(self['tool_bar_placeholder']) self['top_level_vbox'].pack_start(self.tool_bar.get_parent_widget(), expand=False, fill=True, padding=0) self['top_level_vbox'].reorder_child(self.tool_bar.get_parent_widget(), 0) ################################################ # Hide Buttons ################################################ self['left_bar_hide_button'].set_image(gui_helper_label.create_button_label(constants.BUTTON_LEFTA)) self['right_bar_hide_button'].set_image(gui_helper_label.create_button_label(constants.BUTTON_RIGHTA)) ################################################ # Return Buttons ################################################ self['left_bar_return_button'].set_image(gui_helper_label.create_button_label(constants.BUTTON_RIGHTA)) self['right_bar_return_button'].set_image(gui_helper_label.create_button_label(constants.BUTTON_LEFTA)) self['console_return_button'].set_image(gui_helper_label.create_button_label(constants.BUTTON_UPA)) # -------------------------------------------------------------------------- # Edit graphical_editor_shortcuts # -------------------------------------------------------------------------- button_start_shortcut = self['button_start_shortcut'] button_start_shortcut.set_tooltip_text('Run') button_stop_shortcut = self['button_stop_shortcut'] button_stop_shortcut.set_tooltip_text('Stop') button_pause_shortcut = self['button_pause_shortcut'] button_pause_shortcut.set_tooltip_text('Pause') button_run_this_state_shortcut = self['button_run_this_state_shortcut'] button_run_this_state_shortcut.set_tooltip_text('Run Selected State') button_run_only_this_state_shortcut = self['button_run_only_this_state_shortcut'] button_run_only_this_state_shortcut.set_tooltip_text('Only Run Selected State') button_start_from_shortcut = self['button_start_from_shortcut'] button_start_from_shortcut.set_tooltip_text('Run From Selected State') button_run_to_shortcut = self['button_run_to_shortcut'] button_run_to_shortcut.set_tooltip_text('Run Until Selected State (Selected State Excluded)') button_step_mode_shortcut = self['button_step_mode_shortcut'] button_step_mode_shortcut.set_tooltip_text('Enter Step Mode') button_step_in_shortcut = self['button_step_in_shortcut'] button_step_in_shortcut.set_tooltip_text('Step Into (One Level In -> Child-State))') button_step_over_shortcut = self['button_step_over_shortcut'] button_step_over_shortcut.set_tooltip_text('Step Over (the next Sibling-State))') button_step_out_shortcut = self['button_step_out_shortcut'] button_step_out_shortcut.set_tooltip_text('Step Out (One Level Up -> Parent-State)') button_step_backward_shortcut = self['button_step_backward_shortcut'] button_step_backward_shortcut.set_tooltip_text('Step Backward') button_start_shortcut.set_label_widget(gui_helper_label.create_button_label(constants.BUTTON_START)) button_stop_shortcut.set_label_widget(gui_helper_label.create_button_label(constants.BUTTON_STOP)) button_pause_shortcut.set_label_widget(gui_helper_label.create_button_label(constants.BUTTON_PAUSE)) button_run_this_state_shortcut.set_label_widget(gui_helper_label.create_button_label(constants.BUTTON_RUN_SELECTED_STATE)) button_run_only_this_state_shortcut.set_label_widget(gui_helper_label.create_button_label(constants.BUTTON_ONLY_RUN_SELECTED_STATE)) button_start_from_shortcut.set_label_widget(gui_helper_label.create_button_label(constants.BUTTON_START_FROM_SELECTED_STATE)) button_run_to_shortcut.set_label_widget(gui_helper_label.create_button_label(constants.BUTTON_RUN_TO_SELECTED_STATE)) button_step_mode_shortcut.set_label_widget(gui_helper_label.create_button_label(constants.BUTTON_STEPM)) button_step_in_shortcut.set_label_widget(gui_helper_label.create_button_label(constants.BUTTON_STEP_INTO)) button_step_over_shortcut.set_label_widget(gui_helper_label.create_button_label(constants.BUTTON_STEP_OVER)) button_step_out_shortcut.set_label_widget(gui_helper_label.create_button_label(constants.BUTTON_STEP_OUT)) button_step_backward_shortcut.set_label_widget(gui_helper_label.create_button_label(constants.BUTTON_BACKW)) self.left_bar_window = UndockedWindowView('left_bar_window') self.right_bar_window = UndockedWindowView('right_bar_window') self.console_window = UndockedWindowView('console_window') gui_helper_label.ellipsize_labels_recursively(self['execution_ticker_text'], Pango.EllipsizeMode.START)
def __init__(self): super().__init__(builder_filename=glade.get_glade_path( 'output_ports_list_widget.glade'), parent='output_ports_tree_view')
class MainWindowView(View): builder = glade.get_glade_path("main_window.glade") top = 'main_window' def __init__(self): View.__init__(self) if os.getenv("RAFCON_START_MINIMIZED", False): self.get_top_widget().iconify() # Add gui components by removing their corresponding placeholders defined in the glade file first and then # adding the widgets. self.left_bar_notebooks = [self['upper_notebook'], self['lower_notebook']] ################################################ # Undock Buttons ################################################ self['undock_left_bar_button'].set_image(gui_helper_label.create_button_label(constants.BUTTON_UNDOCK)) self['undock_left_bar_button'].set_tooltip_text("Undock left side bar widget") self['undock_right_bar_button'].set_image(gui_helper_label.create_button_label(constants.BUTTON_UNDOCK)) self['undock_right_bar_button'].set_tooltip_text("Undock right side bar widget") self['collapse_tree_button'].set_image(gui_helper_label.create_button_label(constants.BUTTON_COLLAPSE)) self['collapse_tree_button'].set_tooltip_text("Collapse tree of widget") ###################################################### # Library Tree ###################################################### self.library_tree = LibraryTreeView() self.library_tree.show() self['libraries_scrolledwindow'].add(self.library_tree) ###################################################### # State Icons ###################################################### self.state_icons = StateIconView() self.state_icons.show() self["state_icons_box"].pack_start(self.state_icons.get_top_widget(), True, True, 0) ###################################################### # State Machine Tree ###################################################### self.state_machine_tree = StateMachineTreeView() self.state_machine_tree.show() self['states_tree_scrolledwindow'].add(self.state_machine_tree) ###################################################### # Global Variable Manager ###################################################### self.global_var_editor = GlobalVariableEditorView() self.global_var_editor.show() self['global_variables_eventbox'].add(self.global_var_editor.get_top_widget()) ###################################################### # State Machine History ###################################################### self.state_machine_history = ModificationHistoryView() self.state_machine_history.show() self['history_alignment'].add(self.state_machine_history.get_top_widget()) ###################################################### # State Machine Execution History ###################################################### self.execution_history = ExecutionHistoryView() self.execution_history.show() self['execution_history_alignment'].add(self.execution_history.get_top_widget()) ###################################################### # rotate all tab labels by 90 degrees and make detachable ###################################################### self.rotate_and_detach_tab_labels() self['upper_notebook'].set_current_page(0) self['lower_notebook'].set_current_page(0) ###################################################### # State-machines-editor (graphical) ###################################################### self.state_machines_editor = StateMachinesEditorView() self.state_machines_editor.show() self['graphical_editor_vbox'].pack_start(self.state_machines_editor.get_top_widget(), True, True, 0) self['graphical_editor_vbox'].reorder_child(self.state_machines_editor.get_top_widget(), 0) ###################################################### # States-editor ###################################################### self.states_editor = StatesEditorView() self['state_editor_eventbox'].add(self.states_editor.get_top_widget()) self.states_editor.show() ###################################################### # Debug Console ###################################################### self.debug_console_view = DebugConsoleView() self['debug_console_viewport'].add(self.debug_console_view.get_top_widget()) self.debug_console_view.get_top_widget().show() # map hide and undock buttons within and debug widget to be usable from main window view with generic naming self['undock_console_button'] = self.debug_console_view['undock_console_button'] self['console_hide_button'] = self.debug_console_view['console_hide_button'] self['console_container'] = self.debug_console_view['console_container'] self['console'] = self.debug_console_view['console'] ################################################## # HeaderBar with MenuBar ################################################## self.menu_bar = MenuBarView(self) self.menu_bar.show() self['headerbar'].pack_start(self.menu_bar.get_top_widget()) self['headerbar'].show() self.tool_bar = ToolBarView() self.tool_bar.show() self['top_level_vbox'].remove(self['tool_bar_placeholder']) self['top_level_vbox'].pack_start(self.tool_bar.get_top_widget(), expand=False, fill=True, padding=0) self['top_level_vbox'].reorder_child(self.tool_bar.get_top_widget(), 0) ################################################ # Hide Buttons ################################################ self['left_bar_hide_button'].set_image(gui_helper_label.create_button_label(constants.BUTTON_LEFTA)) self['right_bar_hide_button'].set_image(gui_helper_label.create_button_label(constants.BUTTON_RIGHTA)) ################################################ # Return Buttons ################################################ self['left_bar_return_button'].set_image(gui_helper_label.create_button_label(constants.BUTTON_RIGHTA)) self['right_bar_return_button'].set_image(gui_helper_label.create_button_label(constants.BUTTON_LEFTA)) self['console_return_button'].set_image(gui_helper_label.create_button_label(constants.BUTTON_UPA)) # -------------------------------------------------------------------------- # Edit graphical_editor_shortcuts # -------------------------------------------------------------------------- button_start_shortcut = self['button_start_shortcut'] button_start_shortcut.set_tooltip_text('Run') button_stop_shortcut = self['button_stop_shortcut'] button_stop_shortcut.set_tooltip_text('Stop') button_pause_shortcut = self['button_pause_shortcut'] button_pause_shortcut.set_tooltip_text('Pause') button_start_from_shortcut = self['button_start_from_shortcut'] button_start_from_shortcut.set_tooltip_text('Run From Selected State') button_run_to_shortcut = self['button_run_to_shortcut'] button_run_to_shortcut.set_tooltip_text('Run Until Selected State (Selected State Excluded)') button_step_mode_shortcut = self['button_step_mode_shortcut'] button_step_mode_shortcut.set_tooltip_text('Enter Step Mode') button_step_in_shortcut = self['button_step_in_shortcut'] button_step_in_shortcut.set_tooltip_text('Step Into (One Level In -> Child-State))') button_step_over_shortcut = self['button_step_over_shortcut'] button_step_over_shortcut.set_tooltip_text('Step Over (the next Sibling-State))') button_step_out_shortcut = self['button_step_out_shortcut'] button_step_out_shortcut.set_tooltip_text('Step Out (One Level Up -> Parent-State)') button_step_backward_shortcut = self['button_step_backward_shortcut'] button_step_backward_shortcut.set_tooltip_text('Step Backward') button_start_shortcut.set_label_widget(gui_helper_label.create_button_label(constants.BUTTON_START)) button_stop_shortcut.set_label_widget(gui_helper_label.create_button_label(constants.BUTTON_STOP)) button_pause_shortcut.set_label_widget(gui_helper_label.create_button_label(constants.BUTTON_PAUSE)) button_start_from_shortcut.set_label_widget(gui_helper_label.create_button_label(constants.BUTTON_START_FROM_SELECTED_STATE)) button_run_to_shortcut.set_label_widget(gui_helper_label.create_button_label(constants.BUTTON_RUN_TO_SELECTED_STATE)) button_step_mode_shortcut.set_label_widget(gui_helper_label.create_button_label(constants.BUTTON_STEPM)) button_step_in_shortcut.set_label_widget(gui_helper_label.create_button_label(constants.BUTTON_STEP_INTO)) button_step_over_shortcut.set_label_widget(gui_helper_label.create_button_label(constants.BUTTON_STEP_OVER)) button_step_out_shortcut.set_label_widget(gui_helper_label.create_button_label(constants.BUTTON_STEP_OUT)) button_step_backward_shortcut.set_label_widget(gui_helper_label.create_button_label(constants.BUTTON_BACKW)) # -------------------------------------------------------------------------- # Gtk TODO: find replacement for methods set_tab_hborder and set_tab_vborder # self['upper_notebook'].set_tab_hborder(constants.TAB_BORDER_WIDTH * 2) # self['upper_notebook'].set_tab_vborder(constants.TAB_BORDER_WIDTH * 3) # if global_gui_config.get_config_value("USE_ICONS_AS_TAB_LABELS", True): # self['lower_notebook'].set_tab_hborder(int(constants.TAB_BORDER_WIDTH * 2 / 1.4)) # else: # self['lower_notebook'].set_tab_hborder(constants.TAB_BORDER_WIDTH * 2) # self['lower_notebook'].set_tab_vborder(constants.TAB_BORDER_WIDTH * 3) self.left_bar_window = UndockedWindowView('left_bar_window') self.right_bar_window = UndockedWindowView('right_bar_window') self.console_window = UndockedWindowView('console_window') gui_helper_label.ellipsize_labels_recursively(self['execution_ticker_text'], Pango.EllipsizeMode.START) def rotate_and_detach_tab_labels(self): """Rotates tab labels of a given notebook by 90 degrees and makes them detachable. :param notebook: GTK Notebook container, whose tab labels are to be rotated and made detachable """ icons = {'Libraries': constants.SIGN_LIB, 'States Tree': constants.ICON_TREE, 'Global Variables': constants.ICON_GLOB, 'Modification History': constants.ICON_HIST, 'Execution History': constants.ICON_EHIST, 'network': constants.ICON_NET} for notebook in self.left_bar_notebooks: for i in range(notebook.get_n_pages()): child = notebook.get_nth_page(i) tab_label = notebook.get_tab_label(child) tab_label_text = tab_label.get_text() notebook.set_tab_label(child, gui_helper_label.create_tab_header_label(tab_label_text, icons)) notebook.set_tab_reorderable(child, True) notebook.set_tab_detachable(child, True) def bring_tab_to_the_top(self, tab_label): """Find tab with label tab_label in list of notebooks and set it to the current page. :param tab_label: String containing the label of the tab to be focused """ found = False for notebook in self.left_bar_notebooks: for i in range(notebook.get_n_pages()): if gui_helper_label.get_notebook_tab_title(notebook, i) == gui_helper_label.get_widget_title(tab_label): found = True break if found: notebook.set_current_page(i) break
class MenuBarView(View): builder = glade.get_glade_path("menu_bar.glade") top = 'menubar' buttons = { # ----------------------------------------------- # File # ----------------------------------------------- 'new': constants.BUTTON_NEW, 'open': constants.BUTTON_OPEN, 'open_recent': constants.BUTTON_OPEN, 'save': constants.BUTTON_SAVE, 'save_as': constants.BUTTON_SAVE, 'save_as_copy': constants.BUTTON_SAVE, 'save_state_as': constants.BUTTON_SAVE, 'menu_properties': constants.BUTTON_PROP, 'refresh_all': constants.BUTTON_REFR, 'refresh_libraries': constants.BUTTON_REFR, 'bake_state_machine': constants.BUTTON_BAKE, 'quit': constants.BUTTON_QUIT, # ----------------------------------------------- # Edit # ----------------------------------------------- 'cut': constants.BUTTON_CUT, 'copy': constants.BUTTON_COPY, 'paste': constants.BUTTON_PASTE, 'is_start_state': constants.BUTTON_SQUARE, 'add': constants.BUTTON_ADD, 'group': constants.BUTTON_GROUP, 'ungroup': constants.BUTTON_UNGR, 'substitute_state': constants.BUTTON_REFR, 'delete': constants.BUTTON_DEL, 'undo': constants.BUTTON_UNDO, 'redo': constants.BUTTON_REDO, # ----------------------------------------------- # View # ----------------------------------------------- 'data_flow_mode': None, 'show_data_flows': None, 'show_data_values': None, 'show_aborted_preempted': None, 'expert_view': constants.BUTTON_VIEW, 'full_screen': None, # ----------------------------------------------- # Execution # ----------------------------------------------- 'start': constants.BUTTON_START, 'start_from_selected': constants.BUTTON_START_FROM_SELECTED_STATE, 'pause': constants.BUTTON_PAUSE, 'stop': constants.BUTTON_STOP, 'step_mode': constants.BUTTON_STEPM, 'step_into': constants.BUTTON_STEP_INTO, 'step_over': constants.BUTTON_STEP_OVER, 'step_out': constants.BUTTON_STEP_OUT, 'backward_step': constants.BUTTON_BACKW, 'run_to_selected': constants.BUTTON_RUN_TO_SELECTED_STATE, # ----------------------------------------------- # Help # ----------------------------------------------- 'about': constants.BUTTON_ABOUT } def __init__(self, top_window): View.__init__(self) self.win = top_window['main_window'] self.insert_accelerators = {'new': gtk.accelerator_parse('<control>N'), 'open': gtk.accelerator_parse('<control>O'), 'save': gtk.accelerator_parse('<control>S'), # 'save_as': gtk.accelerator_parse('<shift><control>S'), # no default accelerator insert 'quit': gtk.accelerator_parse('<control>Q'), 'cut': gtk.accelerator_parse('<control>X'), 'copy': gtk.accelerator_parse('<control>C'), 'paste': gtk.accelerator_parse('<control>V'), # 'delete': gtk.accelerator_parse('Delete'), # no default accelerator insert # 'undo': gtk.accelerator_parse('<control>Z'), # no default accelerator insert # 'redo': gtk.accelerator_parse('<control>Y'), # no default accelerator insert } self.sub_menu_open_recently = gtk.Menu() self['open_recent'].set_submenu(self.sub_menu_open_recently) for menu_item_name in self.buttons.iterkeys(): # set icon self.set_menu_item_icon(menu_item_name, self.buttons[menu_item_name]) # set accelerator if in shortcuts dictionary with menu_item_name == key if menu_item_name in global_gui_config.get_config_value('SHORTCUTS'): shortcuts = global_gui_config.get_config_value('SHORTCUTS')[menu_item_name] if shortcuts: self.set_menu_item_accelerator(menu_item_name, shortcuts[0]) def set_menu_item_icon(self, menu_item_name, uni_code=None): menu_item = self[menu_item_name] if uni_code is not None: label = gtk.Label() set_label_markup(label, '&#x' + uni_code + ';', font=constants.ICON_FONT, font_size=constants.FONT_SIZE_BIG) menu_item.set_image(label) menu_item.set_always_show_image(True) def set_menu_item_sensitive(self, menu_item_name, sensitive): self[menu_item_name].set_sensitive(sensitive) def set_menu_item_accelerator(self, menu_item_name, accel_code): menu_item = self[menu_item_name] if menu_item_name in self.insert_accelerators: key, mod = self.insert_accelerators[menu_item_name] menu_item.remove_accelerator(self['accelgroup1'], key, mod) key, mod = gtk.accelerator_parse(accel_code) menu_item.add_accelerator("activate", self['accelgroup1'], key, mod, gtk.ACCEL_VISIBLE) self.insert_accelerators[menu_item_name] = (key, mod)
class LinkageOverviewDataView(TreeView): builder = glade.get_glade_path("linkage_overview_data.glade") top = 'tree_view' def __init__(self): super(LinkageOverviewDataView, self).__init__()