def ui(self): super(BadgeExample, self).ui() avatar_pixmap = tpDcc.ResourcesMgr().pixmap('user') standalone_lyt = layouts.HorizontalLayout() standalone_lyt.addWidget(badge.Badge.create_count(0, parent=self)) standalone_lyt.addWidget(badge.Badge.create_count(20, parent=self)) standalone_lyt.addWidget(badge.Badge.create_count(100, parent=self)) standalone_lyt.addWidget(badge.Badge.create_dot(True, parent=self)) standalone_lyt.addWidget(badge.Badge.create_text('new', parent=self)) standalone_lyt.addStretch() btn = buttons.BaseToolButton().image('trash') new_avatar = avatar.Avatar.large(avatar_pixmap) btn_alert = buttons.BaseToolButton().image('notification').large() badge1 = badge.Badge.create_dot(True, widget=btn, parent=self) badge2 = badge.Badge.create_dot(True, widget=new_avatar, parent=self) self._badge3 = badge.Badge.create_dot(True, widget=btn_alert, parent=self) btn.clicked.connect(lambda: badge1._set_dot(False)) spin_box = spinbox.BaseSpinBox() spin_box.setRange(0, 9999) spin_box.valueChanged.connect(self._on_set_count) spin_box.setValue(1) self.register_field('button1_selected', 'A') menu1 = menu.BaseMenu() menu1.set_data(['A', 'B', 'C', 'D']) select1 = combobox.BaseComboBox() select1.set_menu(menu1) self.bind('button1_selected', select1, 'value', signal='valueChanged') badge_hot = badge.Badge.create_text('hot', widget=label.BaseLabel('Hello Badge '), parent=self) sub_lyt1 = layouts.HorizontalLayout() sub_lyt1.addWidget(badge1) sub_lyt1.addWidget(badge2) sub_lyt1.addWidget(self._badge3) sub_lyt1.addStretch() sub_lyt2 = layouts.HorizontalLayout() sub_lyt2.addWidget(badge_hot) sub_lyt2.addWidget(select1) sub_lyt2.addStretch() self.main_layout.addWidget(dividers.Divider('use standalone')) self.main_layout.addLayout(standalone_lyt) self.main_layout.addWidget(dividers.Divider('different type')) self.main_layout.addLayout(sub_lyt1) self.main_layout.addWidget(spin_box) self.main_layout.addWidget(dividers.Divider('different type')) self.main_layout.addLayout(sub_lyt2) self.main_layout.addStretch()
def search(self): """ Adds a search icon button for line edit :return: self """ prefix_btn = buttons.BaseToolButton().image('search').icon_only() suffix_btn = buttons.BaseToolButton().image('close').icon_only() suffix_btn.clicked.connect(self.clear) self.set_prefix_widget(prefix_btn) self.set_suffix_widget(suffix_btn) self.setPlaceholderText('Enter keyword to search ...') return self
def error(self): """ Shows error in line edit with red style :return: self """ def _on_show_detail(self): dlg = QTextEdit(self) dlg.setReadOnly(True) geo = QApplication.desktop().screenGeometry() dlg.setGeometry(geo.width() / 2, geo.height() / 2, geo.width() / 4, geo.height() / 4) dlg.setWindowTitle('Error Detail Information') dlg.setText(self.property('history')) dlg.setWindowFlags(Qt.Dialog) dlg.show() self.setProperty('theme_type', 'error') self.setReadOnly(True) _suffix_btn = buttons.BaseToolButton().image( 'delete_message').icon_only() _suffix_btn.clicked.connect(partial(_on_show_detail, self)) self.set_suffix_widget(_suffix_btn) self.setPlaceholderText('Error information will be here ...') return self
def add_item(self, data_dict, index=None): """ Adds a new item to the breadcrumb :param data_dict: dict :param index: int """ btn = buttons.BaseToolButton() btn.setText(data_dict.get('text')) if data_dict.get('image'): btn.image(data_dict.get('image')) if data_dict.get('tooltip'): btn.setProperty('toolTip', data_dict.get('tooltip')) if data_dict.get('clicked'): btn.clicked.connect(data_dict.get('clicked')) if data_dict.get('text'): if data_dict.get('svg') or data_dict.get('icon'): btn.text_beside_icon() else: btn.text_only() else: btn.icon_only() if self._button_group.buttons(): separator = label.BaseLabel(self._separator).secondary() self._separators.append(separator) self.main_layout.insertWidget(self.main_layout.count() - 1, separator) self.main_layout.insertWidget(self.main_layout.count() - 1, btn) if index is None: self._button_group.addButton(btn) else: self._button_group.addButton(btn, index)
def ui(self): super(LineEditExample, self).ui() size_lyt = layouts.HorizontalLayout() line_edit_small = lineedit.BaseLineEdit().small() line_edit_small.setPlaceholderText('small size') line_edit_medium = lineedit.BaseLineEdit().medium() line_edit_medium.setPlaceholderText('default size') line_edit_large = lineedit.BaseLineEdit().large() line_edit_large.setPlaceholderText('large size') size_lyt.addWidget(line_edit_small) size_lyt.addWidget(line_edit_medium) size_lyt.addWidget(line_edit_large) line_edit_tool_btn = lineedit.BaseLineEdit(text='BaseToolButton') line_edit_tool_btn.set_prefix_widget( buttons.BaseToolButton().image('user').icon_only()) line_edit_label = lineedit.BaseLineEdit(text='BaseLabel') line_lbl = label.BaseLabel('User').mark().secondary() line_lbl.setAlignment(Qt.AlignCenter) line_lbl.setFixedWidth(80) line_edit_label.set_prefix_widget(line_lbl) line_edit_btn = lineedit.BaseLineEdit('BaseButton') push_btn = buttons.BaseButton('Go').primary() line_edit_btn.set_suffix_widget(push_btn) search_engine_line = lineedit.BaseLineEdit().search_engine().large() search_engine_line.returnPressed.connect(self._on_search) line_edit_options = lineedit.BaseLineEdit() combo_box = combobox.BaseComboBox() option_menu = menu.BaseMenu() option_menu.set_separator('|') option_menu.set_data([r'http://', r'https://']) combo_box.set_menu(option_menu) combo_box.set_value('http://') combo_box.setFixedWidth(90) line_edit_options.set_prefix_widget(combo_box) self.main_layout.addWidget(dividers.Divider('different size')) self.main_layout.addLayout(size_lyt) self.main_layout.addWidget( dividers.Divider('custom prefix and suffix widget')) self.main_layout.addWidget(line_edit_tool_btn) self.main_layout.addWidget(line_edit_label) self.main_layout.addWidget(line_edit_btn) self.main_layout.addWidget(dividers.Divider('preset')) self.main_layout.addWidget(label.BaseLabel('error')) self.main_layout.addWidget( lineedit.BaseLineEdit( 'waring: file d:/ddd/ccc.jpg not exists.').error()) self.main_layout.addWidget(label.BaseLabel('search')) self.main_layout.addWidget(lineedit.BaseLineEdit().search().small()) self.main_layout.addWidget(label.BaseLabel('search engine')) self.main_layout.addWidget(search_engine_line) self.main_layout.addWidget(label.BaseLabel('file')) self.main_layout.addWidget(lineedit.BaseLineEdit().file().small()) self.main_layout.addWidget(label.BaseLabel('folder')) self.main_layout.addWidget(lineedit.BaseLineEdit().folder().small()) self.main_layout.addWidget(label.BaseLabel('options')) self.main_layout.addWidget(line_edit_options) self.main_layout.addStretch()
def ui(self): super(DictItemWidget, self).ui() current_theme = self.theme() separator_color = current_theme.accent_color if current_theme else '#E2AC2C' separator = "<span style='color:{}'> ▸ </span>".format( separator_color) self._entry_str = text.TextWidget() self._entry_str.set_use_button(False) if self._name is not None: self._entry_str.set_text(self._name) self._entry_str.set_placeholder('Set a key name') self._value_str = text.TextWidget() self._value_str.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) self._value_str.set_use_button(False) if self._value is not None: self._value_str.set_text(str(self._value)) self._value_str.set_placeholder('Set a value') self._remove_btn = buttons.BaseToolButton().image('delete').icon_only() self.main_layout.addWidget(self._entry_str) self.main_layout.addWidget(label.BaseLabel(separator).secondary()) self.main_layout.addWidget(self._value_str) self.main_layout.addSpacing(10) self.main_layout.addWidget(self._remove_btn)
def ui(self): super(MetaCard, self).ui() self._title_layout = layouts.HorizontalLayout() self._cover_label = QLabel() self._cover_label.setFixedSize(QSize(200, 200)) self._avatar = avatar.Avatar() self._title_label = label.BaseLabel().h4() self._description_label = label.BaseLabel().secondary() self._description_label.setWordWrap(True) self._description_label.theme_elide_mode = Qt.ElideRight self._extra_btn = buttons.BaseToolButton( parent=self).image('more').icon_only() self._title_layout.addWidget(self._title_label) self._title_layout.addStretch() self._title_layout.addWidget(self._extra_btn) self._extra_btn.setVisible(self._extra) content_lyt = layouts.FormLayout(margins=(5, 5, 5, 5)) content_lyt.addRow(self._avatar, self._title_layout) content_lyt.addRow(self._description_label) self._btn_lyt = layouts.HorizontalLayout() self.main_layout.addWidget(self._cover_label) self.main_layout.addLayout(content_lyt) self.main_layout.addLayout(self._btn_lyt) self.main_layout.addStretch()
def set_icon(self, new_icon): from tpDcc.libs.qt.widgets import buttons new_icon = icon.colorize_icon(icon=new_icon, size=self._icon_size, color=self._icon_color) icon_widget = buttons.BaseToolButton(parent=self) icon_widget.setIconSize(QSize(self._icon_size, self._icon_size)) icon_widget.setIcon(new_icon) self._tooltip_icon = icon_widget
def ui(self): super(ListWidget, self).ui() widget_layout = layouts.VerticalLayout() btn_layout = layouts.HorizontalLayout() add_btn = buttons.BaseToolButton().image('plus').icon_only() add_btn.clicked.connect(self._on_add_default_entry) add_btn.setMinimumWidth(25) btn_layout.addStretch() btn_layout.addWidget(add_btn) widget_layout.addWidget(dividers.Divider()) widget_layout.addLayout(btn_layout) self.main_layout.addLayout(widget_layout)
def ui(self): super(ListItemWidget, self).ui() self._value_str = text.TextWidget() self._value_str.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) self._value_str.set_use_button(False) if self._value is not None: self._value_str.set_text(str(self._value)) self._value_str.set_placeholder('Set a value') self._remove_btn = buttons.BaseToolButton().image('delete').icon_only() self.main_layout.addWidget(self._value_str) self.main_layout.addSpacing(10) self.main_layout.addWidget(self._remove_btn)
def _setup_toolbar(self): """ Internal function that setups script editor toolbar """ toolbar = QToolBar('Script Editor ToolBar', parent=self) toolbar.setIconSize(QSize(16, 16)) execute_btn = buttons.BaseToolButton(parent=self) execute_btn.setToolButtonStyle(Qt.ToolButtonTextUnderIcon) execute_selected_btn = buttons.BaseToolButton(parent=self) execute_selected_btn.setToolButtonStyle(Qt.ToolButtonTextUnderIcon) clear_output_btn = buttons.BaseToolButton(parent=self) clear_output_btn.setToolButtonStyle(Qt.ToolButtonTextUnderIcon) toolbar.addWidget(execute_btn) toolbar.addWidget(execute_selected_btn) toolbar.addWidget(clear_output_btn) execute_btn.setDefaultAction(self._execute_all_action) execute_selected_btn.setDefaultAction(self._execute_selected_action) clear_output_btn.setDefaultAction(self._clear_output_action) return toolbar
def ui(self): super(BaseMessage, self).ui() current_theme = self.theme() self._icon_label = avatar.Avatar() self._icon_label.theme_size = current_theme.huge if current_theme else theme.Theme.Sizes.HUGE self._content_label = label.BaseLabel().secondary() self._close_btn = buttons.BaseToolButton().image( 'close', theme='window').large().icon_only() self.main_layout.addWidget(self._icon_label) self.main_layout.addWidget(self._content_label) self.main_layout.addStretch() self.main_layout.addWidget(self._close_btn)
def ui(self): super(Page, self).ui() current_theme = self.theme() self._page_setting_menu = menu.BaseMenu(parent=self) self._display_label = label.BaseLabel() self._display_label.setAlignment(Qt.AlignCenter) self._change_page_size_btn = combobox.BaseComboBox().small() self._change_page_size_btn.setFixedWidth(110) self._change_page_size_btn.set_menu(self._page_setting_menu) self._change_page_size_btn.set_formatter( lambda x: '{} per page'.format(x)) self._pre_btn = buttons.BaseToolButton().image( 'arrow_left').icon_only().small() self._next_btn = buttons.BaseToolButton().image( 'arrow_right').icon_only().small() self._current_page_spin_box = spinbox.BaseSpinBox() self._current_page_spin_box.setMinimum(1) self._current_page_spin_box.theme_size = current_theme.small if current_theme else theme.Theme.Sizes.SMALL self._total_page_lbl = label.BaseLabel() self.main_layout.addStretch() self.main_layout.addWidget(self._display_label) self.main_layout.addStretch() self.main_layout.addWidget(label.BaseLabel('|').secondary()) self.main_layout.addWidget(self._change_page_size_btn) self.main_layout.addWidget(label.BaseLabel('|').secondary()) self.main_layout.addWidget(self._pre_btn) self.main_layout.addWidget(label.BaseLabel('Page')) self.main_layout.addWidget(self._current_page_spin_box) self.main_layout.addWidget(label.BaseLabel('/')) self.main_layout.addWidget(self._total_page_lbl) self.main_layout.addWidget(self._next_btn)
def ui(self): super(BaseMessage, self).ui() label_layout = layouts.VerticalLayout(spacing=0, margins=(0, 0, 0, 0)) self._icon_label = avatar.Avatar() self._icon_label.theme_size = self.theme_size label_layout.addStretch() label_layout.addWidget(self._icon_label) label_layout.addStretch() self._content_label = label.BaseLabel().secondary() self._close_btn = buttons.BaseToolButton().image( 'close', theme='window').large().icon_only() self.main_layout.addLayout(label_layout) self.main_layout.addWidget(self._content_label) self.main_layout.addStretch() self.main_layout.addWidget(self._close_btn)
def ui(self): super(MenuTabWidgetExample, self).ui() item_list = [{ 'text': 'Overview', 'image': 'home', 'clicked': partial(message.PopupMessage.info, 'A', parent=self) }, { 'text': 'B', 'image': 'user', 'clicked': partial(message.PopupMessage.info, 'B', parent=self) }, { 'text': 'Notice', 'image': 'notification', 'clicked': partial(message.PopupMessage.info, 'C', parent=self) }] tool_bar = tabs.MenuTabWidget() tool_bar.insert_widget( label.BaseLabel('Hello World!').h4().secondary().strong()) tool_bar.append_widget( badge.Badge.create_dot(show=True, widget=buttons.BaseToolButton().image( 'user').icon_only().large(), parent=self)) self._content_widget = label.BaseLabel() for index, data_dict in enumerate(item_list): tool_bar.add_menu(data_dict, index) tool_bar.tool_btn_grp.checked = False self.main_layout.addWidget(tool_bar) self.main_layout.addWidget(self._content_widget)
def ui(self): super(ToolButtonExample, self).ui() size_lyt = layouts.VerticalLayout() sub_lyt1 = layouts.HorizontalLayout() size_lyt.addLayout(sub_lyt1) sub_lyt1.addWidget(buttons.BaseToolButton().image('back').icon_only()) sub_lyt1.addWidget(buttons.BaseToolButton().image('next').icon_only()) sub_lyt1.addWidget( buttons.BaseToolButton().image('collapse').icon_only()) sub_lyt1.addWidget( buttons.BaseToolButton().image('expand').icon_only()) state_lyt = layouts.HorizontalLayout() btn1 = buttons.BaseToolButton().image('list').icon_only() btn1.setEnabled(False) btn2 = buttons.BaseToolButton().image('trash').icon_only() btn2.setCheckable(True) state_lyt.addWidget(btn1) state_lyt.addWidget(btn2) state_lyt.addStretch() btn_trash = buttons.BaseToolButton().image('trash').text_beside_icon() btn_trash.setText('Delete') btn_login = buttons.BaseToolButton().image('user').text_beside_icon() btn_login.setText('Login') btn_lyt = layouts.HorizontalLayout() btn_lyt.addWidget(btn_trash) btn_lyt.addWidget(btn_login) btn_lyt.addStretch() self.main_layout.addWidget(dividers.Divider('different button size')) self.main_layout.addLayout(size_lyt) self.main_layout.addWidget(dividers.Divider('disabled & checkable')) self.main_layout.addLayout(state_lyt) self.main_layout.addWidget(dividers.Divider('type=normal')) self.main_layout.addLayout(btn_lyt)
def ui(self): super(BaseCard, self).ui() widget_theme = self.theme() map_label = { widget_theme.small if widget_theme else theme.Theme.Sizes.SMALL: (label.BaseLabel.Levels.H4, 10), widget_theme.medium if widget_theme else theme.Theme.Sizes.MEDIUM: (label.BaseLabel.Levels.H3, 15), widget_theme.large if widget_theme else theme.Theme.Sizes.LARGE: (label.BaseLabel.Levels.H2, 20) } size = self._size or widget_theme.default if widget_theme else theme.Theme.Sizes.MEDIUM padding = map_label.get(size)[-1] self._title_layout = layouts.HorizontalLayout(margins=(padding, padding, padding, padding)) self._title_label = label.BaseLabel(text=self._title, parent=self) self._title_label.level = map_label.get(size)[0] if self._image: self._title_icon = avatar.Avatar() self._title_icon.image = self._image self._title_icon.theme_size = size self._title_layout.addWidget(self._title_icon) self._title_layout.addWidget(self._title_label) self._title_layout.addStretch() if self._extra: self._extra_button = buttons.BaseToolButton( parent=self).image('more').icon_only() self._title_layout.addWidget(self._extra_button) self._content_layout = layouts.VerticalLayout() if self._title: self.main_layout.addLayout(self._title_layout) self.main_layout.addWidget(dividers.Divider()) self.main_layout.addLayout(self._content_layout)
def ui(self): super(PopupMessage, self).ui() current_theme = self.theme() self.setObjectName('message') self.setWindowFlags(Qt.FramelessWindowHint | Qt.Dialog | Qt.WA_TranslucentBackground | Qt.WA_DeleteOnClose) # self.setAttribute(Qt.WA_TranslucentBackground) if self._theme_type == MessageTypes.LOADING: icon_label = loading.CircleLoading.tiny(parent=self) else: icon_label = avatar.Avatar.tiny() current_type = self._theme_type or MessageTypes.INFO if current_theme: icon_label.image = resources.pixmap( current_type, color=getattr(current_theme, '{}_color'.format(current_type))) main_frame = QFrame(self) main_frame_layout = layouts.HorizontalLayout(spacing=5, margins=(5, 5, 5, 5)) main_frame.setLayout(main_frame_layout) self.main_layout.addWidget(main_frame) self._content_label = label.BaseLabel(parent=self) self._content_label.setText(self._text) self._close_btn = buttons.BaseToolButton(parent=self).image( 'close', theme='window').icon_only().tiny() self._close_btn.setVisible(self._closable or False) main_frame_layout.addWidget(icon_label) main_frame_layout.addWidget(self._content_label) main_frame_layout.addStretch() main_frame_layout.addWidget(self._close_btn)
def ui(self): super(TextWidget, self).ui() self.text_widget = self.get_text_widget() self.text_widget.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) self.text_label = label.BaseLabel(self._name) self.text_label.setAlignment(Qt.AlignRight) self.text_label.setMinimumWidth(75) self.text_label.setAttribute(Qt.WA_TransparentForMouseEvents) self._setup_text_widget() self.main_layout.addWidget(self.text_label) self.main_layout.addSpacing(5) self.main_layout.addWidget(self.text_widget) if not self._name: self.text_label.setVisible(False) self.insert_button = buttons.BaseToolButton().image('back').icon_only() self.insert_button.setMaximumWidth(20) # self.insert_button.hide() self.main_layout.addWidget(self.insert_button)
def ui(self): super(DragDoubleSpinBoxLineAxis, self).ui() axis_widget = QFrame() axis_widget.setFrameStyle(QFrame.StyledPanel | QFrame.Raised) axis_layout = layouts.HorizontalLayout(spacing=0, margins=(0, 0, 0, 0)) axis_widget.setLayout(axis_layout) self._axis_btn = buttons.get_axis_button(axis_type=self._axis, parent=self) self._line = DragDoubleSpinBoxLine(start=self._start, max=self._max, min=self._min, positive=self._positive, parent=self) self._reset_btn = buttons.BaseToolButton( parent=self).image('reset').icon_only() self._reset_btn.setVisible(self._reset) self._reset_btn.setEnabled(self._reset) axis_layout.addWidget(self._axis_btn) axis_layout.addWidget(self._line) axis_layout.addWidget(self._reset_btn) self.main_layout.addWidget(axis_widget)
def ui(self): super(SliderPanel, self).ui() self._title_label = label.BaseLabel(parent=self).h4() self._title_label.setText(self._title) self._close_btn = buttons.BaseToolButton( parent=self).icon_only().image('close', theme='window').small() self._close_btn.setVisible(self._closable or False) title_layout = layouts.HorizontalLayout() title_layout.addWidget(self._title_label) title_layout.addStretch() title_layout.addWidget(self._close_btn) self._button_layout = layouts.HorizontalLayout() self._button_layout.addStretch() self._scroll_area = QScrollArea() self.main_layout.addLayout(title_layout) self.main_layout.addWidget(dividers.Divider()) self.main_layout.addWidget(self._scroll_area) self.main_layout.addWidget(dividers.Divider()) self.main_layout.addLayout(self._button_layout)
def ui(self): super(NameIt, self).ui() tools_toolbar = toolbar.ToolBar('Main ToolBar', parent=self) tools_toolbar.setMovable(False) # tools_toolbar.setAllowedAreas(Qt.TopToolBarArea | Qt.BottomToolBarArea) self.main_layout.addWidget(tools_toolbar) refresh_btn = buttons.BaseToolButton(parent=tools_toolbar) refresh_btn.setIcon(resources.icon('refresh')) refresh_btn.clicked.connect(self._on_refresh) self._refresh_btn = tools_toolbar.addWidget(refresh_btn) self._refresh_btn.setEnabled(False) save_btn = buttons.BaseToolButton(parent=tools_toolbar) save_btn.setIcon(resources.icon('save')) save_btn.clicked.connect(self._on_save) self._save_btn = tools_toolbar.addWidget(save_btn) self._save_btn.setEnabled(False) if self._is_renamer_tool_available(): renamer_btn = buttons.BaseToolButton(parent=tools_toolbar) renamer_btn.setIcon(resources.icon('rename')) renamer_btn.clicked.connect(self._on_open_renamer_tool) tools_toolbar.addWidget(renamer_btn) self._name_file_line = directory.SelectFile(label_text='Naming File', parent=tools_toolbar) tools_toolbar.addWidget(self._name_file_line) base_layout = layouts.HorizontalLayout(spacing=0, margins=(0, 0, 0, 0)) self.main_layout.addLayout(base_layout) panels_splitter = QSplitter(parent=self) panels_splitter.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) base_layout.addWidget(panels_splitter) left_panel_widget = QWidget() left_panel_layout = layouts.VerticalLayout(margins=(5, 0, 5, 0)) left_panel_widget.setLayout(left_panel_layout) panels_splitter.addWidget(left_panel_widget) # Tab Widget rules_tab = QWidget() tokens_tab = QWidget() templates_tab = QWidget() templates_tokens_tab = QWidget() self.tabs = tabs.BaseTabWidget() self.tabs.addTab(rules_tab, 'Rules') self.tabs.addTab(tokens_tab, 'Tokens') self.tabs.addTab(templates_tab, 'Templates') self.tabs.addTab(templates_tokens_tab, 'Templates Tokens') left_panel_layout.addWidget(self.tabs) # Rules Tab rules_main_layout = layouts.VerticalLayout(spacing=0, margins=(5, 5, 5, 5)) self.rules_list = QListWidget() rules_main_layout.addWidget(self.rules_list) left_panel_buttons_layout_rules = layouts.HorizontalLayout(margins=(5, 5, 5, 0)) rules_main_layout.addLayout(left_panel_buttons_layout_rules) self.add_rule_btn = buttons.BaseButton(parent=self) self.remove_rule_btn = buttons.BaseButton(parent=self) self.add_rule_btn.setIcon(resources.icon('plus')) self.remove_rule_btn.setIcon(resources.icon('minus')) left_panel_buttons_layout_rules.addStretch() left_panel_buttons_layout_rules.addWidget(self.add_rule_btn) left_panel_buttons_layout_rules.addWidget(self.remove_rule_btn) rules_tab.setLayout(rules_main_layout) # Tokens Tab tokens_main_layout = layouts.VerticalLayout(margins=(5, 5, 5, 5)) tokens_main_layout.setSpacing(0) self.tokens_list = QListWidget() tokens_main_layout.addWidget(self.tokens_list) left_panel_buttons_layout_tokens = layouts.HorizontalLayout( margins=(5, 5, 5, 0)) tokens_main_layout.addLayout(left_panel_buttons_layout_tokens) self.add_token_btn = buttons.BaseButton(parent=self) self.remove_token_btn = buttons.BaseButton(parent=self) self.add_token_btn.setIcon(resources.icon('plus')) self.remove_token_btn.setIcon(resources.icon('minus')) left_panel_buttons_layout_tokens.addStretch() left_panel_buttons_layout_tokens.addWidget(self.add_token_btn) left_panel_buttons_layout_tokens.addWidget(self.remove_token_btn) tokens_tab.setLayout(tokens_main_layout) # Templates Tab templates_main_layout = layouts.VerticalLayout(spacing=0, margins=(5, 5, 5, 5)) self.templates_list = QListWidget() templates_main_layout.addWidget(self.templates_list) left_panel_buttons_layout_templates = layouts.HorizontalLayout( margins=(5, 5, 5, 0)) templates_main_layout.addLayout(left_panel_buttons_layout_templates) self.add_template_btn = buttons.BaseButton(parent=self) self.remove_template_btn = buttons.BaseButton(parent=self) self.add_template_btn.setIcon(resources.icon('plus')) self.remove_template_btn.setIcon(resources.icon('minus')) left_panel_buttons_layout_templates.addStretch() left_panel_buttons_layout_templates.addWidget(self.add_template_btn) left_panel_buttons_layout_templates.addWidget(self.remove_template_btn) templates_tab.setLayout(templates_main_layout) # Template Tokens Tab templates_tokens_main_layout = layouts.VerticalLayout(spacing=0, margins=(5, 5, 5, 5)) self.template_tokens_list = QListWidget() templates_tokens_main_layout.addWidget(self.template_tokens_list) left_panel_buttons_layout_templates_tokens = layouts.HorizontalLayout( margins=(5, 5, 5, 0)) left_panel_buttons_layout_templates_tokens.setContentsMargins( 5, 5, 5, 0) templates_tokens_main_layout.addLayout( left_panel_buttons_layout_templates_tokens) self.add_template_token_btn = buttons.BaseButton(parent=self) self.remove_template_token_btn = buttons.BaseButton(parent=self) self.add_template_token_btn.setIcon(resources.icon('plus')) self.remove_template_token_btn.setIcon(resources.icon('minus')) left_panel_buttons_layout_templates_tokens.addStretch() left_panel_buttons_layout_templates_tokens.addWidget( self.add_template_token_btn) left_panel_buttons_layout_templates_tokens.addWidget( self.remove_template_token_btn) templates_tokens_tab.setLayout(templates_tokens_main_layout) # === PROPERTIES === # main_group = QGroupBox('Properties') panels_splitter.addWidget(main_group) self.group_layout = layouts.VerticalLayout(spacing=0, margins=(5, 5, 5, 5)) main_group.setLayout(self.group_layout) # Rules Panel self.rules_widget = QWidget(self) rules_layout = layouts.GridLayout() self.rules_widget.setLayout(rules_layout) expression_lbl = label.BaseLabel('Expression', parent=self) self.expression_line = lineedit.BaseLineEdit(parent=self) self.expression_btn = buttons.BaseButton(' <', parent=self) self.expression_btn.setEnabled(False) self.expression_btn.setStyleSheet( "QPushButton::menu-indicator{image:url(none.jpg);}") self.expression_menu = QMenu(self) self.expression_btn.setMenu(self.expression_menu) iterator_lbl = label.BaseLabel('Iterator', parent=self) self.iterator_cbx = combobox.BaseComboBox(parent=self) for it_format in [ '@', '@^', '#', '##', '###', '####', '#####', 'None' ]: self.iterator_cbx.addItem(it_format) description_rule_lbl = label.BaseLabel('Description', parent=self) self.description_rule_text = QTextEdit(parent=self) self.group_layout.addWidget(self.rules_widget) rules_layout.addWidget(expression_lbl, 0, 0, Qt.AlignRight) rules_layout.addWidget(self.expression_line, 0, 1) rules_layout.addWidget(self.expression_btn, 0, 2) rules_layout.addWidget(iterator_lbl, 1, 0, Qt.AlignRight | Qt.AlignTop) rules_layout.addWidget(self.iterator_cbx, 1, 1, 1, 2) rules_layout.addWidget(description_rule_lbl, 2, 0, Qt.AlignRight | Qt.AlignTop) rules_layout.addWidget(self.description_rule_text, 2, 1, 1, 2) # Tokens Panel self.tokens_widget = QWidget(parent=self) tokens_layout = layouts.GridLayout() self.tokens_widget.setLayout(tokens_layout) values_lbl = label.BaseLabel('Values') data = {'key': list(), 'value': list()} self.values_table = TokensTable(data, 0, 2) self.values_table.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) values_buttons_layout = layouts.HorizontalLayout(margins=(5, 5, 5, 0)) self.add_key_value_btn = buttons.BaseButton(parent=self) self.remove_key_value_btn = buttons.BaseButton(parent=self) self.add_key_value_btn.setIcon(resources.icon('plus')) self.remove_key_value_btn.setIcon(resources.icon('minus')) values_buttons_layout.addWidget(self.add_key_value_btn) values_buttons_layout.addWidget(self.remove_key_value_btn) values_buttons_layout.addStretch() default_lbl = label.BaseLabel('Default', parent=self) self.default_cbx = combobox.BaseComboBox(parent=self) description_tokens_lbl = label.BaseLabel('Description', parent=self) self.description_token_text = QTextEdit(parent=self) self.group_layout.addWidget(self.tokens_widget) self.tokens_widget.hide() tokens_layout.addWidget(values_lbl, 0, 0, Qt.AlignRight | Qt.AlignTop) tokens_layout.addWidget(self.values_table, 0, 1, 2, 1) tokens_layout.addLayout(values_buttons_layout, 0, 2) tokens_layout.addWidget(default_lbl, 4, 0, Qt.AlignRight) tokens_layout.addWidget(self.default_cbx, 4, 1, 1, 2) tokens_layout.addWidget(description_tokens_lbl, 5, 0, Qt.AlignRight | Qt.AlignTop) tokens_layout.addWidget(self.description_token_text, 5, 1, 1, 2) # Templates Panel self.templates_widget = QWidget(parent=self) templates_layout = layouts.VerticalLayout() self.templates_widget.setLayout(templates_layout) pattern_layout = layouts.HorizontalLayout(spacing=5, margins=(5, 5, 5, 5)) pattern_lbl = label.BaseLabel('Pattern: ', parent=self) self.pattern_line = lineedit.BaseLineEdit(parent=self) pattern_layout.addWidget(pattern_lbl) pattern_layout.addWidget(self.pattern_line) templates_layout.addLayout(pattern_layout) templates_layout.addLayout(dividers.DividerLayout()) self.template_tokens_layout = layouts.GridLayout() self.template_tokens_layout.setAlignment(Qt.AlignTop) template_tokens_frame = QFrame(parent=self) template_tokens_frame.setFrameShape(QFrame.StyledPanel) template_tokens_frame.setFrameShadow(QFrame.Sunken) template_tokens_frame.setLayout(self.template_tokens_layout) templates_layout.addWidget(template_tokens_frame) self.group_layout.addWidget(self.templates_widget) self.templates_widget.hide() # Templates Tokens Panel self.templates_tokens_widget = QWidget(parent=self) templates_tokens_layout = layouts.VerticalLayout() self.templates_tokens_widget.setLayout(templates_tokens_layout) description_templates_token_layout = layouts.HorizontalLayout( spacing=5, margins=(5, 5, 5, 5)) description_tokens_layout = layouts.VerticalLayout() description_templates_token_lbl = label.BaseLabel('Description: ', parent=self) description_tokens_layout.addWidget(description_templates_token_lbl) description_tokens_layout.addStretch() self.description_templates_token_text = QTextEdit(parent=self) description_templates_token_layout.addLayout(description_tokens_layout) description_templates_token_layout.addWidget( self.description_templates_token_text) templates_tokens_layout.addLayout(description_templates_token_layout) self.group_layout.addWidget(self.templates_tokens_widget) self.templates_tokens_widget.hide() # Initialize database self._init_db() # First update of the UI self.update_expression_menu() self.update_tokens_properties_state() self.update_rules_properties_state() self.update_templates_properties_state()
def ui(self): super(SnapshotWindow, self).ui() camera_icon = resources.icon('camera') cancel_icon = resources.icon('delete') self._link_icon = resources.icon('link') self._unlink_icon = resources.icon('unlink') self._lock_icon = resources.icon('lock') self._unlock_icon = resources.icon('unlock') self.window().setWindowFlags(self.window().windowFlags() | Qt.WindowStaysOnTopHint) self._setup_dragger() self.main_widget.setStyleSheet('WindowContents { background-color: transparent; }') snap_layout = layouts.HorizontalLayout(spacing=0) self._snap_widget = QWidget() self._snap_widget.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) left_panel = SnapshotFrame(self) left_panel.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Expanding) left_panel.setFixedWidth(qtutils.dpi_scale(5)) right_panel = SnapshotFrame(self) right_panel.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.MinimumExpanding) right_panel.setFixedWidth(qtutils.dpi_scale(5)) snap_layout.addWidget(left_panel) snap_layout.addWidget(self._snap_widget, stretch=1) snap_layout.addWidget(right_panel) buttom_layout = layouts.HorizontalLayout(margins=(5, 5, 5, 5)) self._bottom_bar = SnapshotFrame(self) self._bottom_bar.setLayout(buttom_layout) self._bottom_bar.setFixedHeight(qtutils.dpi_scale(33)) self._image_size_lbl = label.BaseLabel('Image Size') qtutils.set_horizontal_size_policy(self._image_size_lbl, QSizePolicy.Ignored) self._image_size_lbl.setMaximumWidth(self._image_size_lbl.sizeHint().width()) self._width_line = lineedit.BaseLineEdit(input_mode='int') self._width_line.setMinimumWidth(qtutils.dpi_scale(19)) qtutils.set_size_hint(self._width_line, qtutils.size_by_dpi(QSize(40, self._width_line.sizeHint().height()))) self._height_line = lineedit.BaseLineEdit(input_mode='int') self._height_line.setMinimumHeight(qtutils.dpi_scale(19)) qtutils.set_size_hint(self._height_line, qtutils.size_by_dpi(QSize(40, self._height_line.sizeHint().height()))) self._aspect_link_button = buttons.BaseToolButton() self._aspect_link_button.setIcon(self._link_icon) self._aspect_link_button.setCheckable(True) self._aspect_link_button.setMinimumWidth(qtutils.dpi_scale(24)) self._aspect_link_button.setChecked(True) self._lock_button = buttons.BaseToolButton() self._lock_button.setCheckable(True) self._lock_button.setIcon(self._unlock_icon) self._snapshot_button = buttons.BaseButton('Snapshot', camera_icon) self._snapshot_button.setMaximumWidth(self._snapshot_button.sizeHint().width()) self._cancel_button = buttons.BaseButton('Cancel', cancel_icon) qtutils.set_horizontal_size_policy(self._cancel_button, QSizePolicy.Ignored) self._cancel_button.setMaximumWidth(self._cancel_button.sizeHint().width()) self._cancel_button.setMinimumWidth(qtutils.dpi_scale(24)) buttom_layout.addWidget(self._image_size_lbl, 4) buttom_layout.addWidget(self._width_line) buttom_layout.addWidget(self._aspect_link_button) buttom_layout.addWidget(self._height_line) buttom_layout.addWidget(self._lock_button) buttom_layout.addStretch() buttom_layout.addWidget(self._snapshot_button, 3) buttom_layout.addWidget(self._cancel_button, 3) self.main_layout.addLayout(snap_layout) self.main_layout.addWidget(self._bottom_bar) self.window().setMinimumSize(98, 142)
def ui(self): super(ToolsetWidget, self).ui() self.setContentsMargins(0, 0, 0, 0) self._contents_layout.setContentsMargins(0, 0, 0, 0) self._contents_layout.setSpacing(0) self._stacked_widget = stack.SlidingOpacityStackedWidget(self) # NOTE: tpDcc style uses this objectName to apply specific style to this widget self._stacked_widget.setObjectName('toolsetStackedWidget') self._stacked_widget.setContentsMargins(0, 0, 0, 0) self._stacked_widget.setLineWidth(0) self.main_layout.addWidget(self._stacked_widget) self.show_expand_indicator(False) self.set_title_text_mouse_transparent(True) self._display_mode_button = DisplayModeButton(color=self._icon_color, size=16, parent=self) self._display_mode_button.setFixedSize(QSize(22, 22)) self._connect_button = buttons.BaseToolButton( parent=self).image('connect').icon_only() self._connect_button.setFixedSize(QSize(22, 22)) self._connect_button.setEnabled(False) self._connect_button.setToolTip('No connected to any DCC') self._manual_button = buttons.BaseMenuButton(parent=self) self._manual_button.set_icon(resources.icon('manual')) self._manual_button.setFixedSize(QSize(22, 22)) self._help_button = buttons.BaseMenuButton(parent=self) self._help_button.set_icon(resources.icon('help')) self._help_button.setFixedSize(QSize(22, 22)) self._help_switch = switch.SwitchWidget(parent=self) self._settings_button = buttons.BaseMenuButton(parent=self) self._settings_button.set_icon(resources.icon('settings')) self._settings_button.setFixedSize(QSize(22, 22)) self._help_widget = ToolsetHelpWidget() empty_widget = QWidget() empty_layout = layouts.HorizontalLayout(spacing=0, margins=(0, 0, 0, 0)) empty_widget.setLayout(empty_layout) empty_layout.addStretch() empty_label = label.BaseLabel('Tool has no UI') empty_label.theme_level = label.BaseLabel.Levels.H1 empty_layout.addWidget(empty_label) empty_layout.addStretch() self._preferences_widget = preferences.PreferencesWidget(parent=self) # We call if after setting all buttons self.set_icon_color(self._icon_color) self.visual_update(collapse=True) self._dccs_menu = QMenu(self) display_button_pos = 7 self._title_frame.horizontal_layout.insertWidget( display_button_pos - 1, self._manual_button) self._title_frame.horizontal_layout.insertWidget( display_button_pos - 1, self._help_switch) self._title_frame.horizontal_layout.insertWidget( display_button_pos - 1, self._help_button) self._title_frame.horizontal_layout.insertWidget( display_button_pos - 1, self._settings_button) self._title_frame.horizontal_layout.insertWidget( 0, self._connect_button) self._title_frame.horizontal_layout.insertWidget( display_button_pos, self._display_mode_button) self._title_frame.horizontal_layout.setSpacing(0) self._title_frame.horizontal_layout.setContentsMargins(0, 0, 0, 0) self._title_frame.delete_button.setIconSize(QSize(12, 12)) self._title_frame.item_icon_button.setIconSize(QSize(20, 20)) font = QFont() font.setBold(True) self.setFont(font) if not dcc.is_standalone(): self._connect_button.setVisible(False) self._stacked_widget.addWidget(empty_widget) self._stacked_widget.addWidget(self._widget_hider) self._stacked_widget.addWidget(self._preferences_widget) self._widget_hider.setVisible(False) self._preferences_widget.setVisible(False)