def __init__(self, parent=None): super(TabEditor, self).__init__(parent) if parent is not None: self.setParent(parent) self.setLayout(QtWidgets.QVBoxLayout(self)) self.layout().setContentsMargins(0, 0, 0, 0) self.tab_widget = QtWidgets.QWidget() twl = QtWidgets.QHBoxLayout(self.tab_widget) self.tab_widget_layout = twl self.tab_widget_layout.setContentsMargins(0, 0, 0, 0) self.tabs = Tabs() self.tab_widget_layout.addWidget(self.tabs) # add corner buttons tb = QtWidgets.QToolButton() self.tab_list_button = tb tb.setArrowType(QtCore.Qt.DownArrow) tb.setToolTip('Click for a list of tabs.') tb.setAutoRaise(True) tb.setFixedSize(24, 24) self.tab_list_button.clicked.connect(self.show_tab_menu) nb = QtWidgets.QToolButton() self.new_tab_button = nb nb.setToolTip('Click to add a new tab.') nb.setText('+') nb.setAutoRaise(True) self.new_tab_button.clicked.connect(self.new_tab) for button in [self.new_tab_button, self.tab_list_button]: self.tab_widget_layout.addWidget(button) self.editor = editor.Editor(handle_shortcuts=False) for widget in self.tab_widget, self.editor: self.layout().addWidget(widget) # Give the autosave a chance to load all # tabs before connecting signals between # tabs and editor. QtCore.QTimer.singleShot(0, self.connect_signals)
def new_button(self): i = self.currentIndex() + 1 e = Editor() self.insertTab(i, e, '') b = QtWidgets.QToolButton() b.editor = e b.clicked.connect(self.close_tab) self.tabs.append(b) b.setText('x') l = QtWidgets.QLabel('Widget') self.tabs.append(l) tb = self.tabBar() tb.setTabButton(i, QtWidgets.QTabBar.RightSide, b) tb.setTabButton(i, QtWidgets.QTabBar.LeftSide, l)
def setup_new_tab_btn(self): """ Adds a new tab [+] button to the right of the tabs. """ widget = QtWidgets.QWidget() widget.setObjectName('Tab_Widget_New_Button') self.insertTab(0, widget, '') nb = self.new_btn = QtWidgets.QToolButton() nb.setMinimumSize(QtCore.QSize(50, 10)) nb.setText('+') # you could set an icon instead of text nb.setAutoRaise(True) nb.clicked.connect(self.new_tab) tabBar = self.tabBar() tabBar.setTabButton(0, QtWidgets.QTabBar.RightSide, nb) tabBar.setTabEnabled(0, False)
def build_layout(self): """ Create the layout. """ layout = QtWidgets.QVBoxLayout(self) layout.setContentsMargins(0, 0, 0, 0) # self.setup_menu() self.menubar = menubar.MenuBar(self) left_widget = QtWidgets.QWidget() left_layout = QtWidgets.QVBoxLayout(left_widget) path_edit = QtWidgets.QLineEdit() path_edit.textChanged.connect(self.update_tree) self.path_edit = path_edit splitter = QtWidgets.QSplitter(QtCore.Qt.Horizontal) self.splitter = splitter self.xpanded = False self.setLayout(layout) self.tool_button = QtWidgets.QToolButton() self.tool_button.setText('<') self.tool_button.clicked.connect(self.xpand) self.tool_button.setMaximumWidth(20) layout.addWidget(splitter) browse = browser.FileTree(NUKE_DIR) self.browser = browse left_layout.addWidget(self.path_edit) left_layout.addWidget(self.browser) self.tabs = edittabs.EditTabs() widgets = [left_widget, self.tool_button, self.tabs] for w in widgets: splitter.addWidget(w) splitter.setSizes([200, 10, 800]) self.install_features() self.check_modified_tabs() if self.tabs.count() == 0: self.tabs.new_tab()
def build_layout(self): """ Create the layout. """ layout = QtWidgets.QVBoxLayout(self) layout.setContentsMargins(0, 0, 0, 0) # self.setup_menu() self.read_only = True self.menubar = menubar.MenuBar(self) left_widget = QtWidgets.QWidget() left_layout = QtWidgets.QVBoxLayout(left_widget) path_edit = QtWidgets.QLineEdit() path_edit.textChanged.connect(self.update_tree) self.path_edit = path_edit splitter = QtWidgets.QSplitter(QtCore.Qt.Horizontal) self.splitter = splitter self.xpanded = False self.setLayout(layout) self.tool_button = QtWidgets.QToolButton() self.tool_button.setText('<') self.tool_button.clicked.connect(self.xpand) self.tool_button.setMaximumWidth(20) layout.addWidget(splitter) browse = browser.FileTree(NUKE_DIR) self.browser = browse left_layout.addWidget(self.path_edit) left_layout.addWidget(self.browser) self.editor = editor.Editor(handle_shortcuts=True) self.editor.path = 'C:/Users/tsalx/Desktop/temp_editor_save.py' widgets = [left_widget, self.tool_button, self.editor] for w in widgets: splitter.addWidget(w) splitter.setSizes([200, 10, 800]) self.browser.path_signal.connect(self.read) self.editor.textChanged.connect(self.write) self.editor.modificationChanged.connect(self.handle_changed)
def __init__(self, editor, tabs=None, replace=False): super(SearchPanel, self).__init__() self.setObjectName('SearchPanel') layout = QtWidgets.QGridLayout(self) self.setLayout(layout) self.editor = editor self.find = FindPalette(editor, tabs=tabs) layout.addWidget(self.find, 0, 1) self.find_button = QtWidgets.QPushButton('Find') layout.addWidget(self.find_button, 0, 2) self.previous_button = QtWidgets.QPushButton('Previous') # layout.addWidget(self.previous_button,0,2) self.tabs = tabs if tabs is not None: self.search_across_tabs_check = QtWidgets.QToolButton( checkable=True, checked=False) icon = self.style().standardIcon( QtWidgets.QStyle.SP_FileDialogContentsView) self.search_across_tabs_check.setIcon(icon) self.search_across_tabs_check.setToolTip( 'Search across all open tabs') layout.addWidget(self.search_across_tabs_check, 0, 0) self.search_across_tabs_check.clicked.connect( self.find.toggle_search_across_tabs) self.search_across_tabs_check.clicked.connect( self.change_find_across_tabs_icon) if replace: self.replace_within_selection = False self.replace_within_selection_check = QtWidgets.QToolButton( checkable=True, checked=False) self.replace_within_selection_check.setToolTip( 'Replace only within selection') layout.addWidget(self.replace_within_selection_check, 1, 0) self.replace_within_selection_check.clicked.connect( self.toggle_replace_within_selection) self.replace = EditLine(editor) layout.addWidget(self.replace, 1, 1) self.replace_button = QtWidgets.QPushButton('Replace') layout.addWidget(self.replace_button, 1, 2) self.replace_button.clicked.connect(self.find_and_replace) self.replace.ctrl_enter_signal.connect(self.find_and_replace) self.replace.escape_signal.connect(self.remove_from_tabeditor) if PREVIOUS_REPLACEMENT is not None: self.replace.setText(PREVIOUS_REPLACEMENT) self.replace.textChanged.connect(self.remember_replacement) self.setTabOrder(self.find, self.replace) self.close_button = QtWidgets.QPushButton() icon = self.style().standardIcon( QtWidgets.QStyle.SP_TitleBarCloseButton) self.close_button.setIcon(icon) self.close_button.setFlat(True) layout.addWidget(self.close_button, 0, 3) self.insert_self_in_parent() self.find.escape_signal.connect(self.remove_from_tabeditor) self.find_button.clicked.connect(self.find.find) self.previous_button.clicked.connect(self.find.find_previous) self.close_button.clicked.connect(self.close)