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
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))
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
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
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