Esempio n. 1
0
    def __init__(self, model, view, find_usages=False):
        assert isinstance(model, LibraryManagerModel)
        assert isinstance(view, Gtk.TreeView)
        ExtendedController.__init__(self, model, view)
        self.tree_store = Gtk.TreeStore(GObject.TYPE_STRING, GObject.TYPE_PYOBJECT, GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING)
        self.filter = self.tree_store.filter_new()
        self.filter_value = ''
        self.find_usages = find_usages

        if find_usages:
            self.filter.set_visible_func(self._library_usages_filter)
            self.usages = None
        else:
            self.filter.set_visible_func(self._search_filter)

        view.set_model(self.filter)
        view.set_tooltip_column(3)

        # Gtk TODO: solve via Gtk.TargetList? https://python-gtk-3-tutorial.readthedocs.io/en/latest/drag_and_drop.html
        view.drag_source_set(Gdk.ModifierType.BUTTON1_MASK, [Gtk.TargetEntry.new('STRING', 0, 0)], Gdk.DragAction.COPY)

        self.library_row_iter_dict_by_library_path = {}
        self.__expansion_state = None

        self.update()
Esempio n. 2
0
    def __init__(self, model, view):
        """Constructor
        :param model StateMachineModel should be exchangeable
        """
        assert isinstance(model, StateMachineManagerModel)

        ExtendedController.__init__(self, model, view)
        self.view_is_registered = False

        self._mode = 'branch'
        self.with_tree = True
        self.tree_folded = False

        assert self._mode in ['trail', 'branch']
        self.history_tree_store = Gtk.TreeStore(
            GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING,
            GObject.TYPE_STRING, GObject.TYPE_STRING, GObject.TYPE_STRING,
            GObject.TYPE_PYOBJECT, GObject.TYPE_STRING, GObject.TYPE_STRING)
        if view is not None:
            view['history_tree'].set_model(self.history_tree_store)
        view['history_tree'].set_tooltip_column(8)

        # view.set_hover_expand(True)

        self.__my_selected_sm_id = None
        self._selected_sm_model = None

        self.doing_update = False
        self.no_cursor_observation = False
        self.next_activity_focus_self = True
        self.on_toggle_mode_check_gaphas_view_is_meta_data_consistent = True

        self.register()
Esempio n. 3
0
    def __init__(self, state_machine_manager_model, view, redock_method):
        ExtendedController.__init__(self, state_machine_manager_model, view)

        self.top_tool_bar_undocked_window_controller = TopToolBarUndockedWindowController(state_machine_manager_model,
                                                                                          view, redock_method)

        self.add_controller('top_tool_bar_undocked_window_controller', self.top_tool_bar_undocked_window_controller)
Esempio n. 4
0
    def __init__(self, model=None, view=None, shortcut_manager=None):
        ExtendedController.__init__(self, model, view)

        self.shortcut_manager = shortcut_manager

        view.drag_source_set(Gdk.ModifierType.BUTTON1_MASK, None, Gdk.DragAction.COPY)
        view.drag_source_add_text_targets()
Esempio n. 5
0
    def __init__(self, model, view):
        """Constructor"""
        assert isinstance(model, AbstractStateModel)
        assert isinstance(view, StateEditorView)
        ExtendedController.__init__(self, model, view)

        if isinstance(model, LibraryStateModel) and not model.state_copy_initialized:
            model.enforce_generation_of_state_copy_model()
            logger.info("Respective state editor's state is most likely not drawn in the graphical editor. -> {0}"
                        "".format(model))
        sv_and_source_script_state_m = model.state_copy if isinstance(model, LibraryStateModel) else model

        self.add_controller('properties_ctrl', StateOverviewController(model, view.properties_view))

        self.inputs_ctrl = InputPortListController(model, view.inputs_view)
        self.add_controller('input_data_ports', self.inputs_ctrl)
        self.outputs_ctrl = OutputPortListController(model, view.outputs_view)
        self.add_controller('output_data_ports', self.outputs_ctrl)
        self.scopes_ctrl = ScopedVariableListController(sv_and_source_script_state_m, view.scopes_view)
        self.add_controller('scoped_variables', self.scopes_ctrl)
        self.add_controller('outcomes', StateOutcomesEditorController(model, view.outcomes_view))

        self.add_controller('transitions_ctrl', StateTransitionsEditorController(model, view.transitions_view))
        self.add_controller('data_flows_ctrl', StateDataFlowsEditorController(model, view.data_flows_view))

        self.add_controller('linkage_overview_ctrl', LinkageOverviewController(model, view.linkage_overview))

        self.add_controller('description_ctrl', DescriptionEditorController(model, view.description_view))
        if not isinstance(model, ContainerStateModel) and not isinstance(model, LibraryStateModel) or \
                isinstance(model, LibraryStateModel) and not isinstance(model.state_copy, ContainerStateModel):
            self.add_controller('source_ctrl', SourceEditorController(sv_and_source_script_state_m, view.source_view))
        else:
            view.source_view.get_parent_widget().destroy()
        self.add_controller('semantic_data_ctrl', SemanticDataEditorController(model, view.semantic_data_view))
Esempio n. 6
0
    def __init__(self, core_config_model, view, gui_config_model):
        assert isinstance(view, PreferencesWindowView)
        assert isinstance(core_config_model, ConfigModel)
        assert isinstance(gui_config_model, ConfigModel)
        ExtendedController.__init__(self, core_config_model, view)
        self.core_config_model = core_config_model
        self.gui_config_model = gui_config_model
        self.observe_model(gui_config_model)

        # (config_key, config_value, text_visible, toggle_activatable, toggle_visible, text_editable, toggle_value)
        self.core_list_store = Gtk.ListStore(GObject.TYPE_STRING,
                                             GObject.TYPE_STRING, bool, bool,
                                             bool, bool, bool)
        self.library_list_store = Gtk.ListStore(GObject.TYPE_STRING,
                                                GObject.TYPE_STRING)
        self.gui_list_store = Gtk.ListStore(GObject.TYPE_STRING,
                                            GObject.TYPE_STRING, bool, bool,
                                            bool, bool, bool)
        self.shortcut_list_store = Gtk.ListStore(GObject.TYPE_STRING,
                                                 GObject.TYPE_STRING)

        self._lib_counter = 0
        self._gui_checkbox = Gtk.CheckButton(label="GUI Config")
        self._core_checkbox = Gtk.CheckButton(label="Core Config")
        self._last_path = self.core_config_model.config.path
    def __init__(self, state_machine_manager_model, view):
        assert isinstance(state_machine_manager_model, StateMachineManagerModel)
        assert isinstance(view, StateMachinesEditorView)
        ExtendedController.__init__(self, state_machine_manager_model, view, spurious=True)

        self.tabs = {}
        self.last_focused_state_machine_ids = collections.deque(maxlen=10)
Esempio n. 8
0
 def __init__(self, model, view):
     """Constructor"""
     assert isinstance(model, StateMachineExecutionEngineModel)
     ExtendedController.__init__(self, model, view)
     self.observe_model(rafcon.gui.singleton.gui_config_model)
     self.current_observed_sm_m = None
     self._view_initialized = True
Esempio n. 9
0
    def __init__(self, model, view):
        ExtendedController.__init__(self, model, view)

        self.add_controller('input_data_ports',
                            InputPortListController(model, view.inputs_view))
        self.add_controller('output_data_ports',
                            OutputPortListController(model, view.outputs_view))
        self.add_controller(
            'outcomes', StateOutcomesEditorController(model,
                                                      view.outcomes_view))

        scoped_variable_state_m = model.state_copy if isinstance(
            model, LibraryStateModel) else model
        self.add_controller(
            'scoped_variables',
            ScopedVariableListController(scoped_variable_state_m,
                                         view.scope_view))

        if not isinstance(scoped_variable_state_m, ContainerStateModel):
            view['scoped_box'].destroy()

        view.inputs_view.show()
        view.outputs_view.show()
        view.scope_view.show()
        view.outcomes_view.show()
Esempio n. 10
0
    def __init__(self, state_machine_manager_model, view, shortcut_manager,
                 sm_execution_engine):
        assert isinstance(view, MainWindowView)
        ExtendedController.__init__(self, state_machine_manager_model,
                                    view.menu_bar)
        self.shortcut_manager = shortcut_manager
        self.logging_console_view = view.debug_console_view.logging_console_view
        self.main_window_view = view
        self.observe_model(gui_singletons.core_config_model)
        self.observe_model(gui_singletons.gui_config_model)
        self.observe_model(gui_singletons.runtime_config_model)

        self._destroyed = False
        self.handler_ids = {}
        self.registered_shortcut_callbacks = {}
        self.registered_view = False
        # this is not a model but the state machine execution engine of the core (or the overwritten execution engine
        # of the monitoring plugin
        self.state_machine_execution_engine = sm_execution_engine
        self.full_screen_flag = False
        self.full_screen_window = Gtk.Window(type=Gtk.WindowType.TOPLEVEL)
        self.main_position = None
        self.sm_notebook = self.main_window_view.state_machines_editor[
            'notebook']
        self.full_screen_window.add_accel_group(
            self.shortcut_manager.accel_group)
        self.main_window_view.right_bar_window.get_top_widget(
        ).add_accel_group(self.shortcut_manager.accel_group)
        self.main_window_view.left_bar_window.get_top_widget().add_accel_group(
            self.shortcut_manager.accel_group)
        self.main_window_view.console_window.get_top_widget().add_accel_group(
            self.shortcut_manager.accel_group)
Esempio n. 11
0
 def __init__(self, model, view, ctrl_class, *args, **kwargs):
     """Constructor
     """
     ExtendedController.__init__(self, model, view)
     self.shortcut_manager = None
     self.add_controller(
         'widget_ctrl',
         ctrl_class(model, view.get_top_widget(), *args, **kwargs))
 def __init__(self, model, view):
     # assert isinstance(model, StateMachineManagerModel)
     assert isinstance(view, ServerView)
     ExtendedController.__init__(self, model, view)
     self.connection_list_store = Gtk.ListStore(str, str, int, str)
     self.global_network_config = global_network_config
     self.config_list_store = Gtk.ListStore(str, str)
     self._actual_entry = None
     self.history_list_store = Gtk.ListStore(str)
     self.message_list_store = Gtk.ListStore(str)
     self.network_manager_model = model
Esempio n. 13
0
    def __init__(self, state_machine_manager_model, view):
        assert isinstance(state_machine_manager_model,
                          StateMachineManagerModel)
        assert isinstance(view, StateMachinesEditorView)
        ExtendedController.__init__(self, state_machine_manager_model, view)

        self.tabs = {}
        self.last_focused_state_machine_ids = collections.deque(maxlen=10)

        self.state_machine_execution_model = gui_singletons.state_machine_execution_model
        self.observe_model(self.state_machine_execution_model)
Esempio n. 14
0
 def __init__(self, model, view):
     assert isinstance(view, ClientView)
     ExtendedController.__init__(self, model, view)
     self.connection_list_store = Gtk.ListStore(str, str, str, str)
     self.global_network_config = global_network_config
     self.config_list_store = Gtk.ListStore(str, str)
     self._actual_entry = None
     self.list = []
     self.history_list_store = Gtk.ListStore(str)
     self.message_list_store = Gtk.ListStore(str)
     self.network_manager_model = model
Esempio n. 15
0
    def __init__(self, model, view):
        assert isinstance(model, LibraryManagerModel)
        assert isinstance(view, gtk.TreeView)
        ExtendedController.__init__(self, model, view)
        self.tree_store = gtk.TreeStore(str, gobject.TYPE_PYOBJECT, str, str, str)
        view.set_model(self.tree_store)
        view.set_tooltip_column(3)

        view.drag_source_set(gtk.gdk.BUTTON1_MASK, [('STRING', 0, 0)], gtk.gdk.ACTION_COPY)

        self.library_row_iter_dict_by_library_path = {}
        self.__expansion_state = None

        self.update()
Esempio n. 16
0
    def __init__(self, model, view):
        assert isinstance(model, StateMachineManagerModel)
        ExtendedController.__init__(self, model, view)
        self.observe_model(gui_config_model)

        for state_machine_m in list(self.model.state_machines.values()):
            self.observe_model(state_machine_m)

        # TODO: Workaround used for tab-close on middle click
        # Workaround used for tab-close on middle click
        # Event is fired when the user clicks on the tab with the middle mouse button
        view.notebook.connect("tab_close_event", self.on_close_clicked)

        self.tabs = {}
        self.closed_tabs = {}
Esempio n. 17
0
    def __init__(self, state_machine_manager_model, view):
        assert isinstance(state_machine_manager_model,
                          StateMachineManagerModel)
        assert isinstance(view, MainWindowView)
        ExtendedController.__init__(self, state_machine_manager_model, view)

        gui_singletons.main_window_controller = self
        self.observe_model(gui_singletons.gui_config_model)

        self.shortcut_manager = None
        self.handler_ids = {}
        self.currently_pressed_keys = set()

        self.state_machine_execution_model = gui_singletons.state_machine_execution_model
        self.observe_model(self.state_machine_execution_model)

        # shortcut manager
        self.shortcut_manager = ShortcutManager(view['main_window'])

        ######################################################
        # debug console
        ######################################################
        debug_console_controller = DebugConsoleController(
            gui_singletons.gui_config_model, view.debug_console_view)
        self.add_controller('debug_console_controller',
                            debug_console_controller)

        ######################################################
        # library tree
        ######################################################
        self.library_manager_model = gui_singletons.library_manager_model
        library_controller = LibraryTreeController(self.library_manager_model,
                                                   view.library_tree)
        self.add_controller('library_controller', library_controller)

        ######################################################
        # state icons
        ######################################################
        state_icon_controller = StateIconController(
            state_machine_manager_model, view.state_icons,
            self.shortcut_manager)
        self.add_controller('state_icon_controller', state_icon_controller)

        ######################################################
        # state machine tree
        ######################################################
        state_machine_tree_controller = StateMachineTreeController(
            state_machine_manager_model, view.state_machine_tree)
        self.add_controller('state_machine_tree_controller',
                            state_machine_tree_controller)

        ######################################################
        # states editor
        ######################################################
        states_editor_ctrl = StatesEditorController(
            state_machine_manager_model, view.states_editor)
        self.add_controller('states_editor_ctrl', states_editor_ctrl)

        ######################################################
        # state machines editor
        ######################################################
        state_machines_editor_ctrl = StateMachinesEditorController(
            state_machine_manager_model, view.state_machines_editor)
        self.add_controller('state_machines_editor_ctrl',
                            state_machines_editor_ctrl)

        ######################################################
        # global variable editor
        ######################################################
        global_variable_manager_ctrl = GlobalVariableManagerController(
            gui_singletons.global_variable_manager_model,
            view.global_var_editor)
        self.add_controller('global_variable_manager_ctrl',
                            global_variable_manager_ctrl)

        ######################################################
        # modification history
        ######################################################
        state_machine_history_controller = ModificationHistoryTreeController(
            state_machine_manager_model, view.state_machine_history)
        self.add_controller('state_machine_history_controller',
                            state_machine_history_controller)
        self.modification_history_was_focused = False

        ######################################################
        # state machine execution history
        ######################################################
        execution_history_ctrl = ExecutionHistoryTreeController(
            state_machine_manager_model, view.execution_history)
        self.add_controller('execution_history_ctrl', execution_history_ctrl)

        ######################################################
        # menu bar
        ######################################################
        menu_bar_controller = MenuBarController(
            state_machine_manager_model, view, self.shortcut_manager,
            rafcon.core.singleton.state_machine_execution_engine)
        self.add_controller('menu_bar_controller', menu_bar_controller)

        ######################################################
        # tool bar
        ######################################################
        tool_bar_controller = ToolBarController(state_machine_manager_model,
                                                view.tool_bar)
        self.add_controller('tool_bar_controller', tool_bar_controller)

        ######################################################
        # Undocked Windows Controllers
        ######################################################
        for window_key in constants.UNDOCKABLE_WINDOW_KEYS:
            widget_name = window_key.lower() + "_container"
            window_ctrl_name = window_key.lower() + "_window_controller"
            undocked_window_view = getattr(view,
                                           window_key.lower() + "_window")
            redock_callback = partial(self.redock_sidebar, window_key,
                                      widget_name, window_ctrl_name)
            window_ctrl = UndockedWindowController(state_machine_manager_model,
                                                   undocked_window_view,
                                                   redock_callback)
            self.add_controller(window_ctrl_name, window_ctrl)

        # Initialize the Left-Bar Notebooks' titles according to initially-selected tabs
        upper_title = gui_helper_label.set_notebook_title(
            view['upper_notebook'], view['upper_notebook'].get_current_page(),
            view['upper_notebook_title'])
        lower_title = gui_helper_label.set_notebook_title(
            view['lower_notebook'], view['lower_notebook'].get_current_page(),
            view['lower_notebook_title'])

        # Initialize the Left-Bar un-docked window title
        view.left_bar_window.initialize_title(
            gui_helper_label.create_left_bar_window_title(
                upper_title, lower_title))
        view.right_bar_window.initialize_title('STATE EDITOR')
        view.console_window.initialize_title('CONSOLE')

        self.left_bar_child = view['top_level_h_pane'].get_child1()
        self.right_bar_child = view['right_h_pane'].get_child2()
        self.console_child = view['central_v_pane'].get_child2()

        self.left_bar_hidden = False
        self.right_bar_hidden = False
        self.console_hidden = False
Esempio n. 18
0
 def __init__(self, model=None, view=None):
     ExtendedController.__init__(self, model, view)
     StateMachineRightClickMenu.__init__(self)
Esempio n. 19
0
    def __init__(self, model=None, view=None, shortcut_manager=None):
        ExtendedController.__init__(self, model, view)

        self.shortcut_manager = shortcut_manager
        view.drag_source_set(gtk.gdk.BUTTON1_MASK, [('STRING', 0, 0)], gtk.gdk.ACTION_COPY)
Esempio n. 20
0
 def __init__(self, model, view):
     """Constructor
     """
     ExtendedController.__init__(self, model, view)
     self.df_list_ctrl = StateDataFlowsListController(model, view.data_flows_listView)
     self.add_controller('df_list_ctrl', self.df_list_ctrl)
Esempio n. 21
0
 def __init__(self, state_machine_manager_model, view):
     ExtendedController.__init__(self, state_machine_manager_model, view)
     self.menu_bar_ctrl = gui_singletons.main_window_controller.get_controller(
         'menu_bar_controller')
     self.shortcut_manager = None