Esempio n. 1
0
    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)
Esempio n. 2
0
 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)
Esempio n. 3
0
    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)
Esempio n. 4
0
    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()
Esempio n. 5
0
    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)
Esempio n. 6
0
    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)