def changeIcon(button=button, icon=icon, toggle_icon=toggle_icon, size=icon_size): if button.isChecked(): button.setIcon(pyqt.get_icon(toggle_icon, size)) else: button.setIcon(pyqt.get_icon(icon, size))
def create_key_button(self, item_data): """Create a keyframing button Args: item_data (dict): Attribute channel configuration dictionary Returns: QPushButton: The keyframe button """ button = create_button() attr = self.namespace_sync(item_data["fullName"]) refresh_key_button_color(button, attr) # right click menu pop_menu = QtWidgets.QMenu(button) next_key_action = QtWidgets.QAction('Next Keyframe', button) next_key_action.setIcon(pyqt.get_icon("arrow-right")) next_key_action.triggered.connect(partial(cmu.next_keyframe, attr)) pop_menu.addAction(next_key_action) previous_key_action = QtWidgets.QAction('previous Keyframe', button) previous_key_action.setIcon(pyqt.get_icon("arrow-left")) previous_key_action.triggered.connect( partial(cmu.previous_keyframe, attr)) pop_menu.addAction(previous_key_action) pop_menu.addSeparator() remove_animation_action = QtWidgets.QAction('Remove Animation', button) remove_animation_action.setIcon(pyqt.get_icon("trash")) remove_animation_action.triggered.connect( partial(cmu.remove_animation, attr)) pop_menu.addAction(remove_animation_action) def context_menu(point): pop_menu.exec_(button.mapToGlobal(point)) button.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) button.customContextMenuRequested.connect(context_menu) def button_clicked(): has_key = cmu.current_frame_has_key(attr) key_val = cmu.value_equal_keyvalue(attr) if has_key and key_val: cmu.remove_key(attr) else: cmu.set_key(attr) refresh_key_button_color(button, attr) button.clicked.connect(button_clicked) return button
def create_button(size=17, text=None, icon=None, toggle_icon=None, icon_size=None, toolTip=None): """Create and configure a QPsuhButton Args: size (int, optional): Size of the button text (str, optional): Text of the button icon (str, optional): Icon name toggle_icon (str, optional): Toggle icon name. If exist will make the button checkable icon_size (int, optional): Icon size toolTip (str, optional): Buttom tool tip Returns: QPushButton: The reated button """ button = QtWidgets.QPushButton() button.setMaximumHeight(size) button.setMinimumHeight(size) button.setMaximumWidth(size) button.setMinimumWidth(size) if toolTip: button.setToolTip(toolTip) if text: button.setText(text) if icon: if not icon_size: icon_size = size - 3 button.setIcon(pyqt.get_icon(icon, icon_size)) if toggle_icon: button.setCheckable(True) def changeIcon(button=button, icon=icon, toggle_icon=toggle_icon, size=icon_size): if button.isChecked(): button.setIcon(pyqt.get_icon(toggle_icon, size)) else: button.setIcon(pyqt.get_icon(icon, size)) button.clicked.connect(changeIcon) return button
def create_menu(self): self.menu = QtWidgets.QMenu(self) reset_value_action = QtWidgets.QAction('Reset Value to Default', self) reset_value_action.setIcon(pyqt.get_icon("rewind")) reset_value_action.triggered.connect(self.reset_value_slot) self.menu.addAction(reset_value_action) self.menu.addSeparator() sync_graph_editor_action = QtWidgets.QAction( 'Sync Selected with Graph Editor', self) sync_graph_editor_action.setIcon(pyqt.get_icon("activity")) sync_graph_editor_action.triggered.connect(self.sync_graph_editor) self.menu.addAction(sync_graph_editor_action) self.menu.addSeparator() select_attr_host_action = QtWidgets.QAction('Select Host', self) select_attr_host_action.setIcon(pyqt.get_icon("arrow-up")) select_attr_host_action.triggered.connect(self.select_host) self.menu.addAction(select_attr_host_action) self.menu.addSeparator() set_range_action = QtWidgets.QAction('Set Range', self) set_range_action.setIcon(pyqt.get_icon("sliders")) set_range_action.triggered.connect(self.set_range_slot) self.menu.addAction(set_range_action) self.menu.addSeparator() self.menu.addSeparator() set_color_action = QtWidgets.QAction('Set Color', self) set_color_action.setIcon(pyqt.get_icon("edit-2")) set_color_action.triggered.connect(self.set_color_slot) self.menu.addAction(set_color_action) auto_color_host_action = QtWidgets.QAction('Auto Color by Host', self) auto_color_host_action.setIcon(pyqt.get_icon("edit-3")) auto_color_host_action.triggered.connect(self.auto_color_host_slot) self.menu.addAction(auto_color_host_action) auto_color_axis_action = QtWidgets.QAction('Auto Color by Axis', self) auto_color_axis_action.setIcon(pyqt.get_icon("edit-3")) auto_color_axis_action.triggered.connect(self.auto_color_axis_slot) self.menu.addAction(auto_color_axis_action) clear_color_action = QtWidgets.QAction('Clear Color', self) clear_color_action.setIcon(pyqt.get_icon("x-octagon")) clear_color_action.triggered.connect(self.clear_color_slot) self.menu.addAction(clear_color_action)
def create_actions(self): # file actions self.file_new_node_action = QtWidgets.QAction("New Node", self) self.file_new_node_action.setIcon(pyqt.get_icon("mgear_plus-square")) self.file_save_node_action = QtWidgets.QAction("Save Current Node", self) self.file_save_node_action.setIcon(pyqt.get_icon("mgear_save")) self.set_external_config_action = QtWidgets.QAction( "Add External Config", self) self.set_external_config_action.setIcon( pyqt.get_icon("mgear_plus-circle")) self.remove_external_config_action = QtWidgets.QAction( "Remove External Config", self) self.remove_external_config_action.setIcon( pyqt.get_icon("mgear_minus-circle")) self.file_export_all_action = QtWidgets.QAction( "Export All Tabs", self) self.file_export_all_action.setIcon(pyqt.get_icon("mgear_log-out")) self.file_export_current_action = QtWidgets.QAction( "Export Current Tab", self) self.file_export_current_action.setIcon(pyqt.get_icon("mgear_log-out")) self.file_import_action = QtWidgets.QAction("Import", self) self.file_import_action.setIcon(pyqt.get_icon("mgear_log-in")) self.file_import_add_action = QtWidgets.QAction("Import Add", self) self.file_import_add_action.setIcon(pyqt.get_icon("mgear_log-in")) self.use_node_namespace_action = QtWidgets.QAction( "Use Namespace From ChannelMaster Node", self) self.use_node_namespace_action.setCheckable(True) self.use_node_namespace_action.setChecked(True) self.use_only_local_data_action = QtWidgets.QAction( "Use Only Data Embedded in Local Node", self) self.use_only_local_data_action.setCheckable(True) # Display actions self.display_fullname_action = QtWidgets.QAction( "Channel Full Name", self) self.display_fullname_action.setCheckable(True) self.display_fullname_action.setShortcut(QtGui.QKeySequence("Ctrl+F")) self.scrubbing_update_action = QtWidgets.QAction( "Update Value While Scrubbing", self) self.scrubbing_update_action.setCheckable(True) self.scrubbing_update_action.setShortcut(QtGui.QKeySequence("Ctrl+U")) self.display_edit_channel_order_action = QtWidgets.QAction( "Edit Channel Order", self) self.display_sync_graph_action = QtWidgets.QAction( "Sync with Graph Editor", self) self.display_sync_graph_action.setIcon(pyqt.get_icon("mgear_activity")) self.display_auto_sync_graph_action = QtWidgets.QAction( "Auto Sync with Graph Editor", self) self.display_auto_sync_graph_action.setCheckable(True) self.display_order_default_action = QtWidgets.QAction("Default", self) self.display_order_alphabetical_action = QtWidgets.QAction( "Alphabetical", self) # Key actions self.key_all_action = QtWidgets.QAction("Keyframe", self) self.key_all_action.setIcon(pyqt.get_icon("mgear_key")) self.key_all_action.setShortcut(QtGui.QKeySequence("S")) self.key_copy_action = QtWidgets.QAction("Copy Key", self) self.key_copy_action.setIcon(pyqt.get_icon("mgear_copy")) self.key_copy_action.setShortcut(QtGui.QKeySequence("Ctrl+C")) self.key_paste_action = QtWidgets.QAction("Paste Key", self) self.key_paste_action.setIcon(pyqt.get_icon("mgear_clipboard")) self.key_paste_action.setShortcut(QtGui.QKeySequence("Ctrl+V")) self.key_all_tabs_action = QtWidgets.QAction("Keyframe All Tabs", self) self.key_all_tabs_action.setCheckable(True) self.copypaste_all_channels_action = QtWidgets.QAction( "Copy/Paste All Channels", self) self.copypaste_all_channels_action.setCheckable(True) self.key_del_frame_action = QtWidgets.QAction( "Delete Current Frame Keyframe", self) self.key_del_frame_action.setIcon(pyqt.get_icon("mgear_trash-2")) self.key_del_frame_action.setShortcut(QtGui.QKeySequence("Shift+S")) # Tabs Actions self.tab_new_action = QtWidgets.QAction("New Tab", self) self.tab_new_action.setIcon(pyqt.get_icon("mgear_menu")) self.tab_del_action = QtWidgets.QAction("Delete Current Tab", self) self.tab_del_action.setIcon(pyqt.get_icon("mgear_trash-2")) self.tab_dup_action = QtWidgets.QAction("Duplicate Tab", self) self.tab_dup_action.setIcon(pyqt.get_icon("mgear_copy")) self.tab_rename_action = QtWidgets.QAction("Rename Tab", self)
def create_actions(self): # file actions self.file_new_node_action = QtWidgets.QAction("New Node", self) self.file_new_node_action.setIcon(pyqt.get_icon("plus-square")) self.file_save_node_action = QtWidgets.QAction("Save Current Node", self) self.file_save_node_action.setIcon(pyqt.get_icon("save")) self.file_export_all_action = QtWidgets.QAction( "Export All Tabs", self) self.file_export_all_action.setIcon(pyqt.get_icon("log-out")) self.file_export_current_action = QtWidgets.QAction( "Export Current Tab", self) self.file_export_current_action.setIcon(pyqt.get_icon("log-out")) self.file_import_action = QtWidgets.QAction("Import", self) self.file_import_action.setIcon(pyqt.get_icon("log-in")) self.file_import_add_action = QtWidgets.QAction("Import Add", self) self.file_import_add_action.setIcon(pyqt.get_icon("log-in")) # Display actions self.display_fullname_action = QtWidgets.QAction( "Channel Full Name", self) self.display_fullname_action.setCheckable(True) self.display_fullname_action.setShortcut(QtGui.QKeySequence("Ctrl+F")) self.scrubbing_update_action = QtWidgets.QAction( "Update Value While Scrubbing", self) self.scrubbing_update_action.setCheckable(True) self.scrubbing_update_action.setShortcut(QtGui.QKeySequence("Ctrl+U")) self.display_edit_channel_order_action = QtWidgets.QAction( "Edit Channel Order", self) self.display_sync_graph_action = QtWidgets.QAction( "Sync with Graph Editor", self) self.display_sync_graph_action.setIcon(pyqt.get_icon("activity")) self.display_auto_sync_graph_action = QtWidgets.QAction( "Auto Sync with Graph Editor", self) self.display_auto_sync_graph_action.setCheckable(True) self.display_order_default_action = QtWidgets.QAction("Default", self) self.display_order_alphabetical_action = QtWidgets.QAction( "Alphabetical", self) # Key actions self.key_all_action = QtWidgets.QAction("Keyframe", self) self.key_all_action.setIcon(pyqt.get_icon("key")) self.key_all_action.setShortcut(QtGui.QKeySequence("S")) self.key_copy_action = QtWidgets.QAction("Copy Key", self) self.key_copy_action.setIcon(pyqt.get_icon("copy")) self.key_copy_action.setShortcut(QtGui.QKeySequence("Ctrl+C")) self.key_paste_action = QtWidgets.QAction("Paste Key", self) self.key_paste_action.setIcon(pyqt.get_icon("clipboard")) self.key_paste_action.setShortcut(QtGui.QKeySequence("Ctrl+V")) self.key_all_tabs_action = QtWidgets.QAction("Keyframe All Tabs", self) self.key_all_tabs_action.setCheckable(True) self.copypaste_all_channels_action = QtWidgets.QAction( "Copy/Paste All Channels", self) self.copypaste_all_channels_action.setCheckable(True) self.key_del_frame_action = QtWidgets.QAction( "Delete Current Frame Keyframe", self) self.key_del_frame_action.setIcon(pyqt.get_icon("trash-2")) self.key_del_frame_action.setShortcut(QtGui.QKeySequence("Shift+S")) # Tabs Actions self.tab_new_action = QtWidgets.QAction("New Tab", self) self.tab_new_action.setIcon(pyqt.get_icon("menu")) self.tab_del_action = QtWidgets.QAction("Delete Current Tab", self) self.tab_del_action.setIcon(pyqt.get_icon("trash-2")) self.tab_dup_action = QtWidgets.QAction("Duplicate Tab", self) self.tab_dup_action.setIcon(pyqt.get_icon("copy")) self.tab_rename_action = QtWidgets.QAction("Rename Tab", self)