Ejemplo n.º 1
0
    def generate_right_click_menu(self, kind='library'):
        menu = Gtk.Menu()
        if kind == 'library':
            menu.append(create_menu_item("Add as library (link)", constants.BUTTON_ADD,
                                         partial(self.insert_button_clicked, as_template=False)))
            menu.append(create_menu_item("Add as template (copy)", constants.BUTTON_COPY,
                                         partial(self.insert_button_clicked, as_template=True)))
            menu.append(Gtk.SeparatorMenuItem())
            menu.append(create_menu_item("Open", constants.BUTTON_OPEN, self.open_button_clicked))
            menu.append(create_menu_item("Open and run", constants.BUTTON_START, self.open_run_button_clicked))
            menu.append(Gtk.SeparatorMenuItem())
            menu.append(create_menu_item("Rename library", constants.BUTTON_RENAME,
                                         self.menu_item_rename_libraries_or_root_clicked))
            menu.append(create_menu_item("Remove library", constants.BUTTON_DEL,
                                         self.menu_item_remove_libraries_or_root_clicked))
            menu.append(create_menu_item("Relocate library", constants.BUTTON_RELOCATE,
                                         self.menu_item_relocate_libraries_or_root_clicked))

            sub_menu_item, sub_menu = append_sub_menu_to_parent_menu("Substitute as library", menu,
                                                                     constants.BUTTON_REFR)

            sub_menu.append(create_menu_item("Keep state name", constants.BUTTON_LEFTA,
                                             partial(self.substitute_as_library_clicked, keep_name=True)))
            sub_menu.append(create_menu_item("Take name from Library", constants.BUTTON_EXCHANGE,
                                             partial(self.substitute_as_library_clicked, keep_name=False)))

            sub_menu_item, sub_menu = append_sub_menu_to_parent_menu("Substitute as template", menu,
                                                                     constants.BUTTON_REFR)

            sub_menu.append(create_menu_item("Keep state name", constants.BUTTON_LEFTA,
                                             partial(self.substitute_as_template_clicked, keep_name=True)))
            sub_menu.append(create_menu_item("Take name from Library", constants.BUTTON_EXCHANGE,
                                             partial(self.substitute_as_template_clicked, keep_name=False)))

            menu.append(create_menu_item("Find usages in libraries", constants.ICON_FIND_USAGES,
                                         self.menu_item_find_usages_clicked))

        elif kind in ['library root', 'library tree']:
            menu.append(create_menu_item("Add library root", constants.BUTTON_NEW,
                                         self.menu_item_add_library_root_clicked))
            if kind == 'library root':
                menu.append(create_menu_item("Rename library root", constants.BUTTON_RENAME,
                                             self.menu_item_rename_libraries_or_root_clicked))
                menu.append(create_menu_item("Remove library root", constants.BUTTON_DEL,
                                             self.menu_item_remove_libraries_or_root_clicked))
                menu.append(create_menu_item("Relocate library root", constants.BUTTON_RELOCATE,
                                             self.menu_item_relocate_libraries_or_root_clicked))
        elif kind == 'libraries':
            menu.append(create_menu_item("Remove libraries", constants.BUTTON_DEL,
                                         self.menu_item_remove_libraries_or_root_clicked))
            menu.append(create_menu_item("Relocate libraries", constants.BUTTON_RELOCATE,
                                         self.menu_item_relocate_libraries_or_root_clicked))

        return menu
Ejemplo n.º 2
0
 def insert_execution_sub_menu_in_menu(self, menu, shortcuts_dict,
                                       accel_group):
     execution_sub_menu_item, execution_sub_menu = append_sub_menu_to_parent_menu(
         "Execution", menu, constants.BUTTON_START)
     execution_sub_menu.append(
         create_menu_item(
             "from here",
             constants.BUTTON_START_FROM_SELECTED_STATE,
             self.on_run_from_selected_state_activate,
             accel_code=shortcuts_dict['start_from_selected'][0],
             accel_group=accel_group))
     execution_sub_menu.append(
         create_menu_item("stop here",
                          constants.BUTTON_RUN_TO_SELECTED_STATE,
                          self.on_run_to_selected_state_activate,
                          accel_code=shortcuts_dict['run_to_selected'][0],
                          accel_group=accel_group))
     execution_sub_menu.append(
         create_menu_item("run this state",
                          constants.BUTTON_RUN_SELECTED_STATE,
                          self.on_run_selected_state_activate,
                          accel_code=shortcuts_dict['run_selected'][0],
                          accel_group=accel_group))
     execution_sub_menu.append(
         create_menu_item("only run this state",
                          constants.BUTTON_ONLY_RUN_SELECTED_STATE,
                          self.on_run_only_selected_state_activate,
                          accel_code=shortcuts_dict['only_run_selected'][0],
                          accel_group=accel_group))
Ejemplo n.º 3
0
    def generate_right_click_menu_library(self):
        menu = gtk.Menu()
        accel_group = self.accel_group
        shortcuts_dict = global_gui_config.get_config_value('SHORTCUTS')

        self.insert_show_library_content_in_menu(menu, shortcuts_dict, accel_group)

        self.insert_is_start_state_in_menu(menu, shortcuts_dict, accel_group)

        self.insert_execution_sub_menu_in_menu(menu, shortcuts_dict, accel_group)

        self.insert_copy_cut_paste_in_menu(menu, shortcuts_dict, accel_group, no_paste=True)

        menu.append(create_image_menu_item("Group states", constants.BUTTON_GROUP, self.on_group_states_activate,
                                           accel_code=shortcuts_dict['group'][0], accel_group=accel_group))

        menu.append(create_image_menu_item("Open separately", constants.BUTTON_OPEN,
                                           self.on_open_library_state_separately_activate,
                                           accel_code=shortcuts_dict['open_library_state_separately'][0],
                                           accel_group=accel_group))

        menu.append(create_image_menu_item("Substitute state with library", constants.BUTTON_REFR,
                                           self.on_substitute_state_activate,
                                           accel_code=shortcuts_dict['substitute_state'][0], accel_group=accel_group))

        sub_menu_item, sub_menu = append_sub_menu_to_parent_menu("Substitute library with template", menu,
                                                                 constants.BUTTON_REFR)
        sub_menu.append(create_image_menu_item("Keep state name", constants.BUTTON_LEFTA,
                        partial(self.on_substitute_library_with_template_activate, keep_name=True)))

        sub_menu.append(create_image_menu_item("Take name from library", constants.BUTTON_EXCHANGE,
                        partial(self.on_substitute_library_with_template_activate, keep_name=False)))

        return menu
Ejemplo n.º 4
0
    def generate_right_click_menu(self, kind='library'):
        menu = gtk.Menu()
        if kind == 'library':
            menu.append(create_image_menu_item("Add as library (link)", constants.BUTTON_ADD,
                                               partial(self.insert_button_clicked, as_template=False)))
            menu.append(create_image_menu_item("Add as template (copy)", constants.BUTTON_COPY,
                                               partial(self.insert_button_clicked, as_template=True)))
            menu.append(gtk.SeparatorMenuItem())
            menu.append(create_image_menu_item("Open", constants.BUTTON_OPEN, self.open_button_clicked))
            menu.append(create_image_menu_item("Open and run", constants.BUTTON_START, self.open_run_button_clicked))
            menu.append(gtk.SeparatorMenuItem())
            menu.append(create_image_menu_item("Remove library", constants.BUTTON_DEL, self.delete_button_clicked))

            sub_menu_item, sub_menu = append_sub_menu_to_parent_menu("Substitute as library", menu,
                                                                     constants.BUTTON_REFR)

            sub_menu.append(create_image_menu_item("Keep state name", constants.BUTTON_LEFTA,
                            partial(self.substitute_as_library_clicked, keep_name=True)))
            sub_menu.append(create_image_menu_item("Take name from Library", constants.BUTTON_EXCHANGE,
                            partial(self.substitute_as_library_clicked, keep_name=False)))

            sub_menu_item, sub_menu = append_sub_menu_to_parent_menu("Substitute as template", menu,
                                                                     constants.BUTTON_REFR)

            sub_menu.append(create_image_menu_item("Keep state name", constants.BUTTON_LEFTA,
                            partial(self.substitute_as_template_clicked, keep_name=True)))
            sub_menu.append(create_image_menu_item("Take name from Library", constants.BUTTON_EXCHANGE,
                            partial(self.substitute_as_template_clicked, keep_name=False)))
        elif kind == 'library root':
            menu.append(create_image_menu_item("Add library root", constants.BUTTON_DEL, self.add_button_clicked))
            menu.append(create_image_menu_item("Remove library root", constants.BUTTON_DEL, self.delete_button_clicked))
        elif kind == 'libraries':
            menu.append(create_image_menu_item("Remove libraries", constants.BUTTON_DEL, self.delete_button_clicked))
        elif kind == 'library tree':
            menu.append(create_image_menu_item("Add library root", constants.BUTTON_DEL, self.add_button_clicked))

        return menu
Ejemplo n.º 5
0
    def generate_right_click_menu_state(self):
        menu = Gtk.Menu()
        accel_group = self.accel_group
        shortcuts_dict = global_gui_config.get_config_value('SHORTCUTS')

        self.insert_is_start_state_in_menu(menu, shortcuts_dict, accel_group)

        self.insert_execution_sub_menu_in_menu(menu, shortcuts_dict,
                                               accel_group)

        menu.append(Gtk.SeparatorMenuItem())

        add_sub_menu_item, add_sub_menu = append_sub_menu_to_parent_menu(
            "Add", menu, constants.BUTTON_ADD)

        add_state_sub_menu_item, add_state_sub_menu = append_sub_menu_to_parent_menu(
            "State", add_sub_menu, constants.BUTTON_ADD)

        add_state_sub_menu.append(
            create_menu_item(
                "Execution State",
                constants.BUTTON_ADD,
                self.on_add_execution_state_activate,
                accel_code=shortcuts_dict['add_execution_state'][0],
                accel_group=accel_group))
        add_state_sub_menu.append(
            create_menu_item(
                "Hierarchy State",
                constants.BUTTON_ADD,
                self.on_add_hierarchy_state_activate,
                accel_code=shortcuts_dict['add_hierarchy_state'][0],
                accel_group=accel_group))
        add_state_sub_menu.append(
            create_menu_item(
                "Preemptive State",
                constants.BUTTON_ADD,
                self.on_add_preemptive_state_activate,
                accel_code=shortcuts_dict['add_preemptive_state'][0],
                accel_group=accel_group))
        add_state_sub_menu.append(
            create_menu_item("Barrier State",
                             constants.BUTTON_ADD,
                             self.on_add_barrier_state_activate,
                             accel_code=shortcuts_dict['add_barrier_state'][0],
                             accel_group=accel_group))

        add_sub_menu.append(Gtk.SeparatorMenuItem())

        add_sub_menu.append(
            create_menu_item("Outcome",
                             constants.BUTTON_ADD,
                             self.on_add_outcome,
                             accel_code=shortcuts_dict['add_outcome'][0],
                             accel_group=accel_group))
        add_sub_menu.append(
            create_menu_item("Output Port",
                             constants.BUTTON_ADD,
                             self.on_add_output,
                             accel_code=shortcuts_dict['add_output'][0],
                             accel_group=accel_group))
        add_sub_menu.append(
            create_menu_item("Input Port",
                             constants.BUTTON_ADD,
                             self.on_add_input,
                             accel_code=shortcuts_dict['add_input'][0],
                             accel_group=accel_group))
        add_sub_menu.append(
            create_menu_item(
                "Scoped Variable",
                constants.BUTTON_ADD,
                self.on_add_scoped_variable,
                accel_code=shortcuts_dict['add_scoped_variable'][0],
                accel_group=accel_group))
        menu.append(
            create_menu_item("Delete",
                             constants.BUTTON_DEL,
                             self.on_delete,
                             accel_code=shortcuts_dict['delete'][0],
                             accel_group=accel_group))
        menu.append(Gtk.SeparatorMenuItem())

        self.insert_copy_cut_paste_in_menu(menu, shortcuts_dict, accel_group)

        from rafcon.core.states.barrier_concurrency_state import DeciderState
        selection = gui_singletons.state_machine_manager_model.get_selected_state_machine_model(
        ).selection
        selected_state_m = selection.get_selected_state()
        all_m_list = gui_singletons.state_machine_manager_model.get_selected_state_machine_model(
        ).selection.get_all()
        if any([isinstance(elem, (AbstractStateModel, ScopedVariableModel)) for elem in all_m_list]) and \
                all([isinstance(elem, (AbstractStateModel, ScopedVariableModel, TransitionModel, DataFlowModel))
                     for elem in all_m_list]) and \
                all([not state_m.state.is_root_state for state_m in selection.states]):
            menu.append(
                create_menu_item("Group states",
                                 constants.BUTTON_GROUP,
                                 self.on_group_states_activate,
                                 accel_code=shortcuts_dict['group'][0],
                                 accel_group=accel_group))
        if len(selection.states) == 1:
            if isinstance(selected_state_m, ContainerStateModel
                          ) and not selected_state_m.state.is_root_state:
                menu.append(
                    create_menu_item("Ungroup states",
                                     constants.BUTTON_UNGR,
                                     self.on_ungroup_state_activate,
                                     accel_code=shortcuts_dict['ungroup'][0],
                                     accel_group=accel_group))
            if not isinstance(
                    selected_state_m.state,
                    DeciderState) and not selected_state_m.state.is_root_state:
                menu.append(
                    create_menu_item(
                        "Substitute state",
                        constants.BUTTON_REFR,
                        self.on_substitute_state_activate,
                        accel_code=shortcuts_dict['substitute_state'][0],
                        accel_group=accel_group))

            from rafcon.gui.controllers.state_editor.overview import StateOverviewController
            allowed_state_classes = StateOverviewController.get_allowed_state_classes(
                selected_state_m.state)
            if len(allowed_state_classes) > 1:
                change_type_sub_menu_item, change_type_sub_menu = append_sub_menu_to_parent_menu(
                    "Change state type", menu, constants.BUTTON_EXCHANGE)
                for state_class in allowed_state_classes:
                    callback_function = partial(self.on_type_change_activate,
                                                target_class=state_class)
                    class_item = create_menu_item(state_class.__name__,
                                                  constants.SIGN_LIB,
                                                  callback_function,
                                                  accel_code=None,
                                                  accel_group=accel_group)

                    if isinstance(selected_state_m.state, state_class):
                        class_item.set_sensitive(False)
                    change_type_sub_menu.append(class_item)
        menu.append(Gtk.SeparatorMenuItem())

        # save state as but not for root state, therefore the user should use save state machine as
        if len(selection.states
               ) == 1 and not selected_state_m.state.is_root_state:
            _, save_as_sub_menu = append_sub_menu_to_parent_menu(
                "Save state as", menu, constants.BUTTON_SAVE)
            callback_function = partial(
                self.on_save_as_activate,
                save_as_function=gui_helper_state_machine.
                save_selected_state_as)
            save_as_sub_menu.append(
                create_menu_item("State machine",
                                 constants.BUTTON_SAVE,
                                 callback_function,
                                 accel_code=shortcuts_dict['save_state_as'][0],
                                 accel_group=accel_group))
            save_as_library_sub_menu_item, save_as_library_sub_menu = append_sub_menu_to_parent_menu(
                "Library", save_as_sub_menu, constants.SIGN_LIB)
            library_root_paths = core_singletons.library_manager.library_root_paths
            for library_root_key in library_root_paths.keys():
                callback_function = partial(
                    self.on_save_as_activate,
                    path=library_root_paths[library_root_key],
                    save_as_function=gui_helper_state_machine.
                    save_selected_state_as)
                save_as_library_sub_menu.append(
                    create_menu_item(library_root_key,
                                     constants.SIGN_LIB,
                                     callback_function,
                                     accel_code=None,
                                     accel_group=accel_group))
        else:
            _, save_as_sub_menu = append_sub_menu_to_parent_menu(
                "Save state machine as", menu, constants.BUTTON_SAVE)
            callback_function = partial(
                self.on_save_as_activate,
                save_as_function=gui_helper_state_machine.save_state_machine_as
            )
            save_as_sub_menu.append(
                create_menu_item("State machine",
                                 constants.BUTTON_SAVE,
                                 callback_function,
                                 accel_code=shortcuts_dict['save_as'][0],
                                 accel_group=accel_group))
            save_as_library_sub_menu_item, save_as_library_sub_menu = append_sub_menu_to_parent_menu(
                "Library", save_as_sub_menu, constants.SIGN_LIB)
            library_root_paths = core_singletons.library_manager.library_root_paths
            for library_root_key in library_root_paths.keys():
                callback_function = partial(
                    self.on_save_as_activate,
                    path=library_root_paths[library_root_key],
                    save_as_function=gui_helper_state_machine.
                    save_state_machine_as)
                save_as_library_sub_menu.append(
                    create_menu_item(library_root_key,
                                     constants.SIGN_LIB,
                                     callback_function,
                                     accel_code=None,
                                     accel_group=accel_group))
        menu.append(Gtk.SeparatorMenuItem())
        callback_function = partial(self.on_change_background_color,
                                    state_model=selected_state_m)
        menu.append(
            create_menu_item("Change Background Color",
                             constants.BUTTON_CHANGE_BACKGROUND_COLOR,
                             callback_function,
                             accel_group=accel_group))
        return menu