예제 #1
0
class MenubarUI(object):
    def __init__(self, main_window: QMainWindow):
        """
        菜单栏
        外观模式
        :param main_window:
        """
        self.main_window = main_window

        self.menubar = QMenuBar(main_window)

        self.menu_list = []
        self.option_menu = OptionMenu(self.menubar, self.main_window)
        self.view_menu = ViewMenu(self.menubar)
        self.help_menu = HelpMenu(self.menubar, self.main_window)

    def setup_ui(self) -> None:
        font = QFont()
        font.setPointSize(10)
        self.menubar.setFont(font)

        # self.menubar.setGeometry(QRect(0, 0, 800, 25))
        self.menubar.setFixedHeight(30)
        self.menubar.setObjectName("menubar")
        self.main_window.setMenuBar(self.menubar)

        self.load_ui()
        self.show_ui()

        if settings.LOAD_EFFECT_ON:
            load_animation.load_animation(self.menubar)

    # noinspection PyArgumentList
    def retranslate_ui(self) -> None:
        self.menubar.setWindowTitle(_translate("MenubarUI", "菜单栏"))

    def load_ui(self) -> None:
        """
        加载模块
        :return:
        """
        self.menu_list.append(self.option_menu)
        self.menu_list.append(self.view_menu)
        self.menu_list.append(self.help_menu)

    def show_ui(self) -> None:
        """
        显示数据
        :return:
        """
        for view in self.menu_list:
            view.setup_ui()
            view.retranslate_ui()
예제 #2
0
    def __init__(self, app: QApplication):
        super().__init__()

        Settings.load()

        self.setWindowTitle(APP_NAME)

        self.app = app
        app.setApplicationName(APP_NAME)
        app.setApplicationDisplayName(APP_NAME)

        self.preview_image = QLabel('No items to preview')
        self.preview_image.setFixedHeight(USABLE_HEIGHT)

        self.props_empty = False

        self.save_image_button = QPushButton('Save image')
        self.save_image_button.setDisabled(True)

        self.tree_view = ItemView()
        self.items = self.create_model()
        self.item_data = []
        self.tree_view.setRootIsDecorated(False)
        # self.tree_view.setAlternatingRowColors(True)
        self.tree_view.setModel(self.items)
        self.tree_view.clicked.connect(self.tree_view_clicked)
        self.tree_view.rowMoved.connect(self.tree_view_reorder)
        self.tree_view.setDragEnabled(True)
        self.tree_view.setDragDropMode(QTreeView.InternalMove)
        self.tree_view.setItemsExpandable(False)
        self.tree_view.setDragDropOverwriteMode(False)

        root = QVBoxLayout()

        items_layout = QHBoxLayout()

        group = QGroupBox('Source items:')
        layout = QVBoxLayout()
        layout.addWidget(self.tree_view)
        buttons = QHBoxLayout()

        add_menu = QMenu()
        add_menu.addAction(Text.get_add_add_action(self))
        add_menu.addAction(Image.get_add_add_action(self))
        add_menu.addAction(Barcode.get_add_add_action(self))
        add_menu.addAction(QrCode.get_add_add_action(self))

        add_menu.addSeparator()
        add_menu.addAction(Spacing.get_add_add_action(self))

        add_button = QPushButton('Add')
        add_button.setMenu(add_menu)
        buttons.addWidget(add_button)

        #buttons.addWidget(add_text_button)
        #buttons.addWidget(add_barcode_button)
        buttons.addStretch()
        buttons.setSpacing(1)

        b_down = QPushButton('⬇︎')
        b_down.clicked.connect(lambda _: self.move_item(1))
        b_up = QPushButton('⬆︎')
        b_up.clicked.connect(lambda _: self.move_item(-1))
        b_delete = QPushButton('Delete')
        b_delete.clicked.connect(self.delete_item)

        b_clone = QPushButton('Copy')
        b_clone.clicked.connect(self.on_clone)

        buttons.addWidget(b_clone)
        buttons.addSpacing(10)
        buttons.addWidget(b_up)
        buttons.addWidget(b_down)
        buttons.addSpacing(10)
        buttons.addWidget(b_delete)

        layout.addLayout(buttons)
        group.setLayout(layout)
        items_layout.addWidget(group)

        self.property_group = QGroupBox('Item properties:')
        self.props_layout = QVBoxLayout()

        self.property_group.setLayout(self.props_layout)

        self.props_current = QLabel()
        self.props_layout.addWidget(self.props_current)
        self.save_printable_button = QPushButton('Save Changes')
        self.save_printable_button.clicked.connect(self.save_props)
        self.props_layout.addWidget(self.save_printable_button)
        self.update_props()

        items_layout.addWidget(self.property_group)

        root.addLayout(items_layout)

        group = QGroupBox('Preview:')
        layout = QVBoxLayout()

        preview_wrapper = QScrollArea(self)

        #prev_layout = QHBoxLayout()
        preview_wrapper.setWidget(self.preview_image)
        preview_wrapper.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded)
        preview_wrapper.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        preview_wrapper.setWidgetResizable(True)
        preview_wrapper.setFixedHeight(USABLE_HEIGHT)
        layout.addWidget(preview_wrapper)

        # layout.addWidget(self.save_image_button)
        group.setLayout(layout)
        group.setSizePolicy(
            QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed))

        root.addWidget(group)

        self.printer_select = QComboBox(self)
        fs_model = QFileSystemModel(self)
        #model_proxy = QSortFilterProxyModel(self)
        #model_proxy.setSourceModel(fs_model)
        # fs_model.setNameFilters(['tty.PT-P3*'])

        potential_printer = None
        printers = QStandardItemModel()

        #for p in QDir('/dev').entryList(['tty*'], QDir.System, QDir.Name):
        #    if p.startswith('tty.'):
        for p in LabelMaker.list_serial_ports():
            # pprint(p.__dict__)
            item = [QStandardItem(p.name), QStandardItem(p.device)]
            print(p.name)
            printers.appendRow(item)
            '''
            item = QStandardItem('/dev/' + p)
            printers.appendRow(item)
            if p.startswith('tty.PT-P3'):
                potential_printer = item
            '''

        #print(printers.entryList())

        #model_proxy.setRecursiveFilteringEnabled(True)
        #model_proxy.setFilterKeyColumn(0)

        fs_model.setRootPath('/dev/')  #/Users/nilsmasen')
        fs_model.setFilter(QDir.System)

        dev_index = fs_model.index('/dev')
        #proxy_dev = model_proxy.mapFromSource(dev_index)

        self.printer_select.setModel(printers)

        if potential_printer is not None:
            index = printers.indexFromItem(potential_printer)
            self.printer_select.setCurrentIndex(index.row())
        #printer_select.setRootModelIndex(dev_index)
        #printer_select.setRootIndex(dev_index)
        #printer_select.setExpanded(dev_index, True)
        #model_proxy.setFilterWildcard('tty*')

        bottom_box = QGroupBox('Print label: ')
        bottom_bar = QHBoxLayout()
        bottom_bar.addWidget(QLabel('Print device:'))
        bottom_bar.addWidget(self.printer_select)
        bottom_bar.addStretch()
        # /dev/tty.PT-P300BT0607-Serial
        print_button = QPushButton('Print')
        print_button.setFixedWidth(100)
        bottom_bar.addWidget(print_button)
        print_button.clicked.connect(self.print_clicked)

        bottom_box.setLayout(bottom_bar)
        root.addWidget(bottom_box)

        root_widget = QWidget()
        root_widget.setFixedWidth(800)
        root_widget.setLayout(root)
        self.setCentralWidget(root_widget)
        menu = QMenuBar()
        self.setMenuBar(menu)

        menu.setWindowTitle(APP_NAME)
        tools_menu = menu.addMenu('Python')
        prefs = QAction('&Preferences', self)
        prefs.triggered.connect(self.on_prefs)
        tools_menu.addAction(prefs)
        about = QAction('About ' + APP_NAME, self)
        about.triggered.connect(self.on_prefs)
        about.setMenuRole(QAction.AboutRole)
        tools_menu.addAction(about)

        file_menu = menu.addMenu('Label')
        act_new = QAction('&New', self)
        act_new.triggered.connect(self.on_new)
        file_menu.addAction(act_new)
        file_menu.addSeparator()
        act_open = QAction('&Open', self)
        act_open.triggered.connect(self.on_open)
        act_open.setShortcut(QKeySequence('Ctrl+O'))
        file_menu.addAction(act_open)
        file_menu.addSeparator()
        act_save = QAction('&Save', self)
        act_save.triggered.connect(self.on_save)
        act_save.setShortcut(QKeySequence("Ctrl+S"))
        file_menu.addAction(act_save)
        act_save_as = QAction('Save &as...', self)
        act_save_as.triggered.connect(self.on_save_as)
        act_save_as.setShortcut(QKeySequence("Ctrl+Shift+S"))
        file_menu.addAction(act_save_as)
        file_menu.addSeparator()
        file_menu.addAction(QAction('&Export image', self))