Exemplo n.º 1
0
    def initUI(self):
        self.setWindowTitle("上传文件")
        self.setWindowIcon(QIcon("./icon/upload.ico"))
        self.logo = QLabel()
        self.logo.setPixmap(QPixmap("./icon/logo3.gif"))
        self.logo.setStyleSheet("background-color:rgb(0,153,255);")
        self.logo.setAlignment(Qt.AlignCenter)

        # btn 1
        self.btn_chooseDir = QPushButton("选择文件夹", self)
        self.btn_chooseDir.setObjectName("btn_chooseDir")
        self.btn_chooseDir.setObjectName("btn_chooseDir")
        self.btn_chooseDir.setIcon(QIcon("./icon/folder.gif"))

        # btn 2
        self.btn_chooseMutiFile = QPushButton("选择多文件", self)
        self.btn_chooseDir.setObjectName("btn_chooseMutiFile")
        self.btn_chooseMutiFile.setObjectName("btn_chooseMutiFile")
        self.btn_chooseMutiFile.setIcon(QIcon("./icon/file.ico"))

        # btn 3
        self.btn_deleteSelect = QPushButton("删除", self)
        self.btn_deleteSelect.setObjectName("btn_deleteSelect")
        self.btn_deleteSelect.setIcon(QIcon("./icon/delete.ico"))

        # 列表
        self.list_view = QListView(self)
        self.list_view.setViewMode(QListView.ListMode)
        self.slm = QStandardItem()
        self.model = QStandardItemModel()
        self.list_view.setModel(self.model)
        self.model.removeRows(0, self.model.rowCount())  # 清除旧的选择
        self.list_view.setEditTriggers(QAbstractItemView.NoEditTriggers)
        self.list_view.setSelectionBehavior(QAbstractItemView.SelectRows)
        self.list_view.setSelectionMode(QAbstractItemView.ExtendedSelection)

        self.buttonBox = QDialogButtonBox()
        self.buttonBox.setOrientation(Qt.Horizontal)
        self.buttonBox.setStandardButtons(QDialogButtonBox.Ok
                                          | QDialogButtonBox.Cancel)

        grid = QGridLayout()
        grid.setSpacing(10)
        grid.addWidget(self.logo, 1, 0, 1, 3)
        grid.addWidget(self.btn_chooseDir, 2, 0)
        grid.addWidget(self.btn_chooseMutiFile, 2, 2)
        grid.addWidget(self.list_view, 3, 0, 2, 3)
        grid.addWidget(self.btn_deleteSelect, 5, 0)
        grid.addWidget(self.buttonBox, 5, 1, 1, 2)
        self.setLayout(grid)

        self.setMinimumWidth(350)

        # 设置信号
        self.btn_chooseDir.clicked.connect(self.slot_btn_chooseDir)
        self.btn_chooseMutiFile.clicked.connect(self.slot_btn_chooseMutiFile)
        self.btn_deleteSelect.clicked.connect(self.slot_btn_deleteSelect)

        self.buttonBox.accepted.connect(self.slot_btn_ok)
        self.buttonBox.accepted.connect(self.accept)
        self.buttonBox.rejected.connect(self.clear_old)
        self.buttonBox.rejected.connect(self.reject)
Exemplo n.º 2
0
 def findExamOnClick(self):
     model = QStandardItemModel(self.findExamList)
     for i in Exam.find_by_date(self.findExamInput.date().toString("dd.MM.yyyy")):
         item = QStandardItem(i.to_string())
         model.appendRow(item)
     self.findExamList.setModel(model)
Exemplo n.º 3
0
 def findExaminerClick(self):
     model = QStandardItemModel(self.findExaminerList)
     for i in Examiner.findBySurname(self.findExaminerInput.text()):
         item = QStandardItem(i.to_string())
         model.appendRow(item)
     self.findExaminerList.setModel(model)
Exemplo n.º 4
0
    def __init__(self, parent=None):  # pylint: disable=too-many-statements
        super(WatchersPanel, self).__init__(parent=parent)
        self._app_window = parent

        if self._app_window.dwarf is None:
            print('Watcherpanel created before Dwarf exists')
            return

        self._uppercase_hex = True
        self.setAutoFillBackground(True)

        # connect to dwarf
        self._app_window.dwarf.onWatcherAdded.connect(self._on_watcher_added)
        self._app_window.dwarf.onWatcherRemoved.connect(
            self._on_watcher_removed)

        # setup our model
        self._watchers_model = QStandardItemModel(0, 5)
        self._watchers_model.setHeaderData(0, Qt.Horizontal, 'Address')
        self._watchers_model.setHeaderData(1, Qt.Horizontal, 'R')
        self._watchers_model.setHeaderData(1, Qt.Horizontal, Qt.AlignCenter,
                                           Qt.TextAlignmentRole)
        self._watchers_model.setHeaderData(2, Qt.Horizontal, 'W')
        self._watchers_model.setHeaderData(2, Qt.Horizontal, Qt.AlignCenter,
                                           Qt.TextAlignmentRole)
        self._watchers_model.setHeaderData(3, Qt.Horizontal, 'X')
        self._watchers_model.setHeaderData(3, Qt.Horizontal, Qt.AlignCenter,
                                           Qt.TextAlignmentRole)
        self._watchers_model.setHeaderData(4, Qt.Horizontal, 'S')
        self._watchers_model.setHeaderData(4, Qt.Horizontal, Qt.AlignCenter,
                                           Qt.TextAlignmentRole)

        # setup ui
        v_box = QVBoxLayout(self)
        v_box.setContentsMargins(0, 0, 0, 0)
        self.list_view = DwarfListView()
        self.list_view.setModel(self._watchers_model)
        self.list_view.header().setSectionResizeMode(0, QHeaderView.Stretch)
        self.list_view.header().setSectionResizeMode(
            1, QHeaderView.ResizeToContents | QHeaderView.Fixed)
        self.list_view.header().setSectionResizeMode(
            2, QHeaderView.ResizeToContents | QHeaderView.Fixed)
        self.list_view.header().setSectionResizeMode(
            3, QHeaderView.ResizeToContents | QHeaderView.Fixed)
        self.list_view.header().setSectionResizeMode(
            4, QHeaderView.ResizeToContents | QHeaderView.Fixed)
        self.list_view.header().setStretchLastSection(False)
        self.list_view.doubleClicked.connect(self._on_item_dblclick)
        self.list_view.setContextMenuPolicy(Qt.CustomContextMenu)
        self.list_view.customContextMenuRequested.connect(self._on_contextmenu)

        v_box.addWidget(self.list_view)
        #header = QHeaderView(Qt.Horizontal, self)

        h_box = QHBoxLayout()
        h_box.setContentsMargins(5, 2, 5, 5)
        btn1 = QPushButton(QIcon(utils.resource_path('assets/icons/plus.svg')),
                           '')
        btn1.setFixedSize(20, 20)
        btn1.clicked.connect(self._on_additem_clicked)
        btn2 = QPushButton(QIcon(utils.resource_path('assets/icons/dash.svg')),
                           '')
        btn2.setFixedSize(20, 20)
        btn2.clicked.connect(self.delete_items)
        btn3 = QPushButton(
            QIcon(utils.resource_path('assets/icons/trashcan.svg')), '')
        btn3.setFixedSize(20, 20)
        btn3.clicked.connect(self.clear_list)
        h_box.addWidget(btn1)
        h_box.addWidget(btn2)
        h_box.addSpacerItem(
            QSpacerItem(0, 0, QSizePolicy.Expanding, QSizePolicy.Preferred))
        h_box.addWidget(btn3)
        # header.setLayout(h_box)
        # header.setFixedHeight(25)
        # v_box.addWidget(header)
        v_box.addLayout(h_box)

        # create a centered dot icon
        _section_width = self.list_view.header().sectionSize(2)
        self._new_pixmap = QPixmap(_section_width, 20)
        self._new_pixmap.fill(Qt.transparent)
        painter = QPainter(self._new_pixmap)
        rect = QRect((_section_width * 0.5), 0, 20, 20)
        painter.setBrush(QColor('#666'))
        painter.setPen(QColor('#666'))
        painter.drawEllipse(rect)
        self._dot_icon = QIcon(self._new_pixmap)

        # shortcuts
        shortcut_add = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_W),
                                 self._app_window, self._on_additem_clicked)
        shortcut_add.setAutoRepeat(False)

        self.setLayout(v_box)
Exemplo n.º 5
0
    def __init__(self):
        super(MyWindow, self).__init__()
        self.lz = []
        self.ts = 0
        self.zahlenListe = []
        dir = os.path.dirname(sys.argv[0])
        self.settingsfile = "%s/%s" % (dir, "Lotto.conf")
        self.zahlen = "%s/%s" % (dir, "zahlen.txt")
        print(self.settingsfile)
        self.settings = QSettings(self.settingsfile, QSettings.IniFormat)
        self.setStyleSheet(stylesheet(self))
        self.lottolink = 'https://www.dielottozahlende.net/lotto-6-aus-49'
        self.mysuper = 5
        self.model = QStandardItemModel(self)
        self.model.setRowCount(7)
        self.tableview = QTableView(self)
        self.tableview.setSortingEnabled(False)
        self.tableview.setGridStyle(1)
        if int(sys.version[0]) > 2:
            self.tableview.setFixedHeight(149)
        else:
            self.tableview.setFixedHeight(171)
        self.tableview.setSizeAdjustPolicy(QAbstractScrollArea.AdjustIgnored)
        self.tableview.horizontalHeader().setStretchLastSection(True)
        self.tableview.verticalHeader().setStretchLastSection(False)
        self.tableview.setCornerButtonEnabled(True)
        self.tableview.setShowGrid(True)
        self.tableview.setModel(self.model)
        self.tableview.hideRow(6)
        self.tableview.hideColumn(13)
        self.pushButtonLoad = QPushButton()
        self.pushButtonLoad.setText("Zahlen holen")
        self.pushButtonLoad.setIcon(QIcon.fromTheme("view-refresh"))
        self.pushButtonLoad.clicked.connect(self.getLotto)
        self.pushButtonLoad.setFixedWidth(110)
        self.pushButtonLoad.setFixedHeight(24)

        self.zahlenAction = QAction(QIcon.fromTheme("edit"),
                                    "Editor",
                                    self,
                                    triggered=self.edit_Tipps,
                                    shortcut="F5")
        self.addAction(self.zahlenAction)

        self.superAction = QAction(QIcon.fromTheme("edit"),
                                   "Superzahl",
                                   self,
                                   triggered=self.setMySuper,
                                   shortcut="F6")
        self.addAction(self.superAction)

        self.infoAction = QAction(QIcon.fromTheme("help-info"),
                                  "Information",
                                  self,
                                  triggered=self.showInfo,
                                  shortcut="F1")
        self.addAction(self.infoAction)

        self.lbl = QLabel()

        self.hbox = QHBoxLayout()
        self.hbox.addWidget(self.pushButtonLoad)

        grid = QVBoxLayout()
        grid.setSpacing(10)
        grid.addLayout(self.hbox)
        grid.addWidget(self.tableview)
        grid.addWidget(self.lbl)

        mywidget = QWidget()
        mywidget.setLayout(grid)
        self.setCentralWidget(mywidget)

        self.readSettings()
        self.tableview.resizeColumnsToContents()
        self.tableview.resizeRowsToContents()
        self.setHeaders()

        print("Wilkommen bei Lotto")
        self.statusBar().showMessage(
            "%s %s" % ("Willkommen bei LottoCheck",
                       " *** F5 Lottozahlen ändern *** F6 Superzahl ändern"),
            0)
Exemplo n.º 6
0
    def __init__(self):
        super().__init__()
        # Get the keys for the autocompletion.
        self.genreKeysList = []
        self.characterKeysList = []
        self.ratingKeysList = {}
        self.formatKeysList = []
        self.otherKeysList = []
        self.authorRoleList = []
        for g in self.acbfGenreList.values():
            self.genreKeysList.append(g)
        for r in self.acbfAuthorRolesList.values():
            self.authorRoleList.append(r)
        mainP = Path(os.path.abspath(__file__)).parent
        self.get_auto_completion_keys(mainP)
        extraKeyP = Path(QDir.homePath()) / Application.readSetting(
            self.configGroup, "extraKeysLocation", str())
        self.get_auto_completion_keys(extraKeyP)

        # Setup the dialog.
        self.setLayout(QVBoxLayout())
        mainWidget = QTabWidget()
        self.layout().addWidget(mainWidget)
        self.setWindowTitle(i18n("Comic Metadata"))
        buttons = QDialogButtonBox(QDialogButtonBox.Ok
                                   | QDialogButtonBox.Cancel)
        self.layout().addWidget(buttons)
        buttons.accepted.connect(self.accept)
        buttons.rejected.connect(self.reject)

        # Title, concept, summary, genre, characters, format, rating, language, series, other keywords
        metadataPage = QWidget()
        mformLayout = QFormLayout()
        metadataPage.setLayout(mformLayout)

        self.lnTitle = QLineEdit()
        self.lnTitle.setToolTip(i18n("The proper title of the comic."))

        self.teSummary = QPlainTextEdit()
        self.teSummary.setToolTip(
            i18n("What will you tell others to entice them to read your comic?"
                 ))

        self.lnGenre = QLineEdit()
        genreCompletion = multi_entry_completer()
        genreCompletion.setModel(QStringListModel(self.genreKeysList))
        self.lnGenre.setCompleter(genreCompletion)
        genreCompletion.setCaseSensitivity(False)
        self.lnGenre.setToolTip(
            i18n(
                "The genre of the work. Prefilled values are from the ACBF, but you can fill in your own. Separate genres with commas. Try to limit the amount to about two or three."
            ))

        self.lnCharacters = QLineEdit()
        characterCompletion = multi_entry_completer()
        characterCompletion.setModel(QStringListModel(self.characterKeysList))
        characterCompletion.setCaseSensitivity(False)
        characterCompletion.setFilterMode(
            Qt.MatchContains
        )  # So that if there is a list of names with last names, people can type in a last name.
        self.lnCharacters.setCompleter(characterCompletion)
        self.lnCharacters.setToolTip(
            i18n(
                "The names of the characters that this comic revolves around. Comma-separated."
            ))

        self.lnFormat = QLineEdit()
        formatCompletion = multi_entry_completer()
        formatCompletion.setModel(QStringListModel(self.formatKeysList))
        formatCompletion.setCaseSensitivity(False)
        self.lnFormat.setCompleter(formatCompletion)

        ratingLayout = QHBoxLayout()
        self.cmbRatingSystem = QComboBox()
        self.cmbRatingSystem.addItems(self.ratingKeysList.keys())
        self.cmbRatingSystem.setEditable(True)
        self.cmbRating = QComboBox()
        self.cmbRating.setEditable(True)
        self.cmbRatingSystem.currentIndexChanged.connect(
            self.slot_refill_ratings)
        ratingLayout.addWidget(self.cmbRatingSystem)
        ratingLayout.addWidget(self.cmbRating)

        self.lnSeriesName = QLineEdit()
        self.lnSeriesName.setToolTip(
            i18n(
                "If this is part of a series, enter the name of the series and the number."
            ))
        self.spnSeriesNumber = QSpinBox()
        self.spnSeriesNumber.setPrefix(i18n("No. "))
        self.spnSeriesVol = QSpinBox()
        self.spnSeriesVol.setPrefix(i18n("Vol. "))
        seriesLayout = QHBoxLayout()
        seriesLayout.addWidget(self.lnSeriesName)
        seriesLayout.addWidget(self.spnSeriesVol)
        seriesLayout.addWidget(self.spnSeriesNumber)

        otherCompletion = multi_entry_completer()
        otherCompletion.setModel(QStringListModel(self.otherKeysList))
        otherCompletion.setCaseSensitivity(False)
        otherCompletion.setFilterMode(Qt.MatchContains)
        self.lnOtherKeywords = QLineEdit()
        self.lnOtherKeywords.setCompleter(otherCompletion)
        self.lnOtherKeywords.setToolTip(
            i18n(
                "Other keywords that do not fit in the previously mentioned sets. As always, comma-separated."
            ))

        self.cmbLanguage = language_combo_box()
        self.cmbCountry = country_combo_box()
        self.cmbLanguage.currentIndexChanged.connect(
            self.slot_update_countries)
        self.cmbReadingMode = QComboBox()
        self.cmbReadingMode.addItem(i18n("Left to Right"))
        self.cmbReadingMode.addItem(i18n("Right to Left"))

        self.cmbCoverPage = QComboBox()
        self.cmbCoverPage.setToolTip(
            i18n(
                "Which page is the cover page? This will be empty if there are no pages."
            ))

        mformLayout.addRow(i18n("Title:"), self.lnTitle)
        mformLayout.addRow(i18n("Cover page:"), self.cmbCoverPage)
        mformLayout.addRow(i18n("Summary:"), self.teSummary)
        mformLayout.addRow(i18n("Language:"), self.cmbLanguage)
        mformLayout.addRow("", self.cmbCountry)
        mformLayout.addRow(i18n("Reading direction:"), self.cmbReadingMode)
        mformLayout.addRow(i18n("Genre:"), self.lnGenre)
        mformLayout.addRow(i18n("Characters:"), self.lnCharacters)
        mformLayout.addRow(i18n("Format:"), self.lnFormat)
        mformLayout.addRow(i18n("Rating:"), ratingLayout)
        mformLayout.addRow(i18n("Series:"), seriesLayout)
        mformLayout.addRow(i18n("Other:"), self.lnOtherKeywords)

        mainWidget.addTab(metadataPage, i18n("Work"))

        # The page for the authors.
        authorPage = QWidget()
        authorPage.setLayout(QVBoxLayout())
        explanation = QLabel(
            i18n(
                "The following is a table of the authors that contributed to this comic. You can set their nickname, proper names (first, middle, last), role (penciller, inker, etc), email and homepage."
            ))
        explanation.setWordWrap(True)
        self.authorModel = QStandardItemModel(0, 8)
        labels = [
            i18n("Nick Name"),
            i18n("Given Name"),
            i18n("Middle Name"),
            i18n("Family Name"),
            i18n("Role"),
            i18n("Email"),
            i18n("Homepage"),
            i18n("Language")
        ]
        self.authorModel.setHorizontalHeaderLabels(labels)
        self.authorTable = QTableView()
        self.authorTable.setModel(self.authorModel)
        self.authorTable.verticalHeader().setDragEnabled(True)
        self.authorTable.verticalHeader().setDropIndicatorShown(True)
        self.authorTable.verticalHeader().setSectionsMovable(True)
        self.authorTable.verticalHeader().sectionMoved.connect(
            self.slot_reset_author_row_visual)
        delegate = author_delegate()
        delegate.setCompleterData(self.authorRoleList, 4)
        delegate.setLanguageData(len(labels) - 1)
        self.authorTable.setItemDelegate(delegate)
        author_button_layout = QWidget()
        author_button_layout.setLayout(QHBoxLayout())
        btn_add_author = QPushButton(i18n("Add Author"))
        btn_add_author.clicked.connect(self.slot_add_author)
        btn_remove_author = QPushButton(i18n("Remove Author"))
        btn_remove_author.clicked.connect(self.slot_remove_author)
        author_button_layout.layout().addWidget(btn_add_author)
        author_button_layout.layout().addWidget(btn_remove_author)
        authorPage.layout().addWidget(explanation)
        authorPage.layout().addWidget(self.authorTable)
        authorPage.layout().addWidget(author_button_layout)
        mainWidget.addTab(authorPage, i18n("Authors"))

        # The page with publisher information.
        publisherPage = QWidget()
        publisherLayout = QFormLayout()
        publisherPage.setLayout(publisherLayout)
        self.publisherName = QLineEdit()
        self.publisherName.setToolTip(
            i18n(
                "The name of the company, group or person who is responsible for the final version the reader gets."
            ))
        publishDateLayout = QHBoxLayout()
        self.publishDate = QDateEdit()
        self.publishDate.setDisplayFormat(QLocale().system().dateFormat())
        currentDate = QPushButton(i18n("Set Today"))
        currentDate.setToolTip(
            i18n("Sets the publish date to the current date."))
        currentDate.clicked.connect(self.slot_set_date)
        publishDateLayout.addWidget(self.publishDate)
        publishDateLayout.addWidget(currentDate)
        self.publishCity = QLineEdit()
        self.publishCity.setToolTip(
            i18n(
                "Traditional publishers are always mentioned in source with the city they are located."
            ))
        self.isbn = QLineEdit()
        self.license = license_combo_box(
        )  # Maybe ought to make this a QLineEdit...
        self.license.setEditable(True)
        self.license.completer().setCompletionMode(QCompleter.PopupCompletion)
        dataBaseReference = QVBoxLayout()
        self.ln_database_name = QLineEdit()
        self.ln_database_name.setToolTip(
            i18n(
                "If there is an entry in a comics data base, that should be added here. It is unlikely to be a factor for comics from scratch, but useful when doing a conversion."
            ))
        self.cmb_entry_type = QComboBox()
        self.cmb_entry_type.addItems(["IssueID", "SeriesID", "URL"])
        self.cmb_entry_type.setEditable(True)
        self.ln_database_entry = QLineEdit()
        dbHorizontal = QHBoxLayout()
        dbHorizontal.addWidget(self.ln_database_name)
        dbHorizontal.addWidget(self.cmb_entry_type)
        dataBaseReference.addLayout(dbHorizontal)
        dataBaseReference.addWidget(self.ln_database_entry)
        publisherLayout.addRow(i18n("Name:"), self.publisherName)
        publisherLayout.addRow(i18n("City:"), self.publishCity)
        publisherLayout.addRow(i18n("Date:"), publishDateLayout)
        publisherLayout.addRow(i18n("ISBN:"), self.isbn)
        publisherLayout.addRow(i18n("License:"), self.license)
        publisherLayout.addRow(i18n("Database:"), dataBaseReference)

        mainWidget.addTab(publisherPage, i18n("Publisher"))
    def __init__(self):
        super().__init__()
        self.setWindowTitle(self.stringName)

        # Setup layout:
        base = QHBoxLayout()
        widget = QWidget()
        widget.setLayout(base)
        baseLayout = QSplitter()
        base.addWidget(baseLayout)
        self.setWidget(widget)
        buttonLayout = QVBoxLayout()
        buttonBox = QWidget()
        buttonBox.setLayout(buttonLayout)
        baseLayout.addWidget(buttonBox)

        # Comic page list and pages model
        self.comicPageList = QListView()
        self.comicPageList.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.comicPageList.setDragEnabled(True)
        self.comicPageList.setDragDropMode(QAbstractItemView.InternalMove)
        self.comicPageList.setDefaultDropAction(Qt.MoveAction)
        self.comicPageList.setAcceptDrops(True)
        self.comicPageList.setItemDelegate(comic_page_delegate())
        self.pagesModel = QStandardItemModel()
        self.comicPageList.doubleClicked.connect(self.slot_open_page)
        self.comicPageList.setIconSize(QSize(128, 128))
        # self.comicPageList.itemDelegate().closeEditor.connect(self.slot_write_description)
        self.pagesModel.layoutChanged.connect(self.slot_write_config)
        self.pagesModel.rowsInserted.connect(self.slot_write_config)
        self.pagesModel.rowsRemoved.connect(self.slot_write_config)
        self.pagesModel.rowsMoved.connect(self.slot_write_config)
        self.comicPageList.setModel(self.pagesModel)
        pageBox = QWidget()
        pageBox.setLayout(QVBoxLayout())
        zoomSlider = QSlider(Qt.Horizontal, None)
        zoomSlider.setRange(1, 8)
        zoomSlider.setValue(4)
        zoomSlider.setTickInterval(1)
        zoomSlider.setMinimumWidth(10)
        zoomSlider.valueChanged.connect(self.slot_scale_thumbnails)
        self.projectName = Elided_Text_Label()
        pageBox.layout().addWidget(self.projectName)
        pageBox.layout().addWidget(zoomSlider)
        pageBox.layout().addWidget(self.comicPageList)
        baseLayout.addWidget(pageBox)

        self.btn_project = QToolButton()
        self.btn_project.setPopupMode(QToolButton.MenuButtonPopup)
        self.btn_project.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)
        menu_project = QMenu()
        self.action_new_project = QAction(i18n("New Project"), self)
        self.action_new_project.triggered.connect(self.slot_new_project)
        self.action_load_project = QAction(i18n("Open Project"), self)
        self.action_load_project.triggered.connect(self.slot_open_config)
        menu_project.addAction(self.action_new_project)
        menu_project.addAction(self.action_load_project)
        self.btn_project.setMenu(menu_project)
        self.btn_project.setDefaultAction(self.action_load_project)
        buttonLayout.addWidget(self.btn_project)

        # Settings dropdown with actions for the different settings menus.
        self.btn_settings = QToolButton()
        self.btn_settings.setPopupMode(QToolButton.MenuButtonPopup)
        self.btn_settings.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)
        self.action_edit_project_settings = QAction(i18n("Project Settings"), self)
        self.action_edit_project_settings.triggered.connect(self.slot_edit_project_settings)
        self.action_edit_meta_data = QAction(i18n("Meta Data"), self)
        self.action_edit_meta_data.triggered.connect(self.slot_edit_meta_data)
        self.action_edit_export_settings = QAction(i18n("Export Settings"), self)
        self.action_edit_export_settings.triggered.connect(self.slot_edit_export_settings)
        menu_settings = QMenu()
        menu_settings.addAction(self.action_edit_project_settings)
        menu_settings.addAction(self.action_edit_meta_data)
        menu_settings.addAction(self.action_edit_export_settings)
        self.btn_settings.setDefaultAction(self.action_edit_project_settings)
        self.btn_settings.setMenu(menu_settings)
        buttonLayout.addWidget(self.btn_settings)
        self.btn_settings.setDisabled(True)

        # Add page drop down with different page actions.
        self.btn_add_page = QToolButton()
        self.btn_add_page.setPopupMode(QToolButton.MenuButtonPopup)
        self.btn_add_page.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)

        self.action_add_page = QAction(i18n("Add Page"), self)
        self.action_add_page.triggered.connect(self.slot_add_new_page_single)
        self.action_add_template = QAction(i18n("Add Page from Template"), self)
        self.action_add_template.triggered.connect(self.slot_add_new_page_from_template)
        self.action_add_existing = QAction(i18n("Add Existing Pages"), self)
        self.action_add_existing.triggered.connect(self.slot_add_page_from_url)
        self.action_remove_selected_page = QAction(i18n("Remove Page"), self)
        self.action_remove_selected_page.triggered.connect(self.slot_remove_selected_page)
        self.action_resize_all_pages = QAction(i18n("Batch Resize"), self)
        self.action_resize_all_pages.triggered.connect(self.slot_batch_resize)
        self.btn_add_page.setDefaultAction(self.action_add_page)
        self.action_show_page_viewer = QAction(i18n("View Page In Window"), self)
        self.action_show_page_viewer.triggered.connect(self.slot_show_page_viewer)
        self.action_scrape_authors = QAction(i18n("Scrape Author Info"), self)
        self.action_scrape_authors.setToolTip(i18n("Search for author information in documents and add it to the author list. This does not check for duplicates."))
        self.action_scrape_authors.triggered.connect(self.slot_scrape_author_list)
        self.action_scrape_translations = QAction(i18n("Scrape Text for Translation"), self)
        self.action_scrape_translations.triggered.connect(self.slot_scrape_translations)
        actionList = []
        menu_page = QMenu()
        actionList.append(self.action_add_page)
        actionList.append(self.action_add_template)
        actionList.append(self.action_add_existing)
        actionList.append(self.action_remove_selected_page)
        actionList.append(self.action_resize_all_pages)
        actionList.append(self.action_show_page_viewer)
        actionList.append(self.action_scrape_authors)
        actionList.append(self.action_scrape_translations)
        menu_page.addActions(actionList)
        self.btn_add_page.setMenu(menu_page)
        buttonLayout.addWidget(self.btn_add_page)
        self.btn_add_page.setDisabled(True)

        self.comicPageList.setContextMenuPolicy(Qt.ActionsContextMenu)
        self.comicPageList.addActions(actionList)

        # Export button that... exports.
        self.btn_export = QPushButton(i18n("Export Comic"))
        self.btn_export.clicked.connect(self.slot_export)
        buttonLayout.addWidget(self.btn_export)
        self.btn_export.setDisabled(True)

        self.btn_project_url = QPushButton(i18n("Copy Location"))
        self.btn_project_url.setToolTip(i18n("Copies the path of the project to the clipboard. Useful for quickly copying to a file manager or the like."))
        self.btn_project_url.clicked.connect(self.slot_copy_project_url)
        self.btn_project_url.setDisabled(True)
        buttonLayout.addWidget(self.btn_project_url)

        self.page_viewer_dialog = comics_project_page_viewer.comics_project_page_viewer()
        
        self.pagesWatcher = QFileSystemWatcher()
        self.pagesWatcher.fileChanged.connect(self.slot_start_delayed_check_page_update)

        buttonLayout.addItem(QSpacerItem(0, 0, QSizePolicy.Minimum, QSizePolicy.MinimumExpanding))
Exemplo n.º 8
0
	def __init__(self, window):
		super().__init__()
		self.setupUi(self)
		self.video = api.video()
		self.control = api.control()
		self._window = window
		
		self.recordedSegments = []
		self.totalRecordedFrames = 0
		
		self.videoState = None
		self.regionBeingSaved = None
		
		self.saveCancelled = False
		
		#Use get and set marked regions, they redraw.
		self.markedRegions = [
			{'region id': 'aaaaaaaa', 'hue': 240, 'mark end': 19900, 'mark start': 13002, 'saved': 0.0, 'highlight': 0, 'segment ids': ['KxIjG09V'], 'region name': 'Clip 1'},
			{'region id': 'aaaaaaab', 'hue': 300, 'mark end': 41797, 'mark start': 40597, 'saved': 0.0, 'highlight': 0, 'segment ids': ['KxIjG09V'], 'region name': 'Clip 2'},
			{'region id': 'aaaaaaac', 'hue': 420, 'mark end': 43897, 'mark start': 41797, 'saved': 0.0, 'highlight': 0, 'segment ids': ['KxIjG09V'], 'region name': 'Clip 3'},
			{'region id': 'aaaaaaad', 'hue': 180, 'mark end': 53599, 'mark start': 52699, 'saved': 0.0, 'highlight': 0, 'segment ids': ['KxIjG09V'], 'region name': 'Clip 4'},
			{'region id': 'aaaaaaae', 'hue': 360, 'mark end': 52699, 'mark start': 51799, 'saved': 0.0, 'highlight': 0, 'segment ids': ['KxIjG09V'], 'region name': 'Clip 5'},
			{'region id': 'aaaaaaaf', 'hue': 210, 'mark end': 80000, 'mark start': 35290, 'saved': 0.0, 'highlight': 0, 'segment ids': ['KxIjG09V'], 'region name': 'Clip 6'},
			{'region id': 'aaaaaaag', 'hue': 390, 'mark end': 42587, 'mark start': 16716, 'saved': 0.0, 'highlight': 0, 'segment ids': ['KxIjG09V'], 'region name': 'Clip 7'},
			{'region id': 'aaaaaaah', 'hue': 270, 'mark end': 25075, 'mark start': 17016, 'saved': 0.0, 'highlight': 0, 'segment ids': ['KxIjG09V'], 'region name': 'Clip 8'},
			{'region id': 'aaaaaaai', 'hue': 330, 'mark end': 36617, 'mark start': 28259, 'saved': 0.0, 'highlight': 0, 'segment ids': ['KxIjG09V'], 'region name': 'Clip 9'},
			{'region id': 'aaaaaaaj', 'hue': 240, 'mark end': 39005, 'mark start': 32637, 'saved': 0.0, 'highlight': 0, 'segment ids': ['KxIjG09V'], 'region name': 'Clip 10'},
			{'region id': 'aaaaaaak', 'hue': 300, 'mark end': 39668, 'mark start': 36219, 'saved': 0.0, 'highlight': 0, 'segment ids': ['KxIjG09V'], 'region name': 'Clip 11'},
			{'region id': 'aaaaaaal', 'hue': 420, 'mark end': 39068, 'mark start': 37868, 'saved': 0.0, 'highlight': 0, 'segment ids': ['KxIjG09V'], 'region name': 'Clip 12'},
			{'region id': 'aaaaaaam', 'hue': 180, 'mark end': 13930, 'mark start': 0,     'saved': 0.0, 'highlight': 0, 'segment ids': ['ldPxTT5R', 'KxIjG09V'], 'region name': 'Clip 13'},
		]
		self.markedRegions = [
			{'region id': 'aaaaaaaa', 'hue': 240, 'mark end': 199, 'mark start': 130, 'saved': 0.0, 'highlight': 0, 'segment ids': ['KxIjG09V'], 'region name': 'Clip 1'},
			{'region id': 'aaaaaaab', 'hue': 300, 'mark end': 417, 'mark start': 105, 'saved': 0.0, 'highlight': 0, 'segment ids': ['KxIjG09V'], 'region name': 'Clip 2'},
		]
		self.markedRegions = []
		self.markedStart = None #Note: Mark start/end are reversed if start is after end.
		self.markedEnd = None
		
		# Panel init.
		self.setFixedSize(window.app.primaryScreen().virtualSize())
		self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
		self.setAttribute(QtCore.Qt.WA_TranslucentBackground, True)
		
		#Put the video here.
		self.videoArea = self.uiVideoArea.geometry()
		self.uiVideoArea.deleteLater() #Don't need this any more!
		
		self.uiBatteryReadout.anchorPoint = self.uiBatteryReadout.rect()
		self.uiBatteryReadout.formatString = self.uiBatteryReadout.text()
		self.uiBatteryReadout.clicked.connect(lambda: window.show('power'))
		self.updateBatteryTimer = QtCore.QTimer()
		self.updateBatteryTimer.timeout.connect(self.updateBattery)
		self.updateBatteryTimer.setInterval(2000) #ms
		
		self.labelUpdateIdleDelayTimer = QtCore.QTimer() #Used to skip calling the api alltogether when seeking.
		self.labelUpdateIdleDelayTimer.setInterval(32)
		self.labelUpdateIdleDelayTimer.setSingleShot(True)
		self.labelUpdateTimer = QtCore.QTimer()
		self.labelUpdateTimer.setInterval(32) #ms, cap at 60fps. (Technically this is just a penalty, we need to *race* the timer and the dbus call but we can't easily do that because we need something like .~*Promise.all()*~. for that and it's a bit of a pain in the neck to construct right now.)
		self.labelUpdateTimer.setSingleShot(True) #Start the timer again after the update.
		lastKnownFrame = -1
		lastKnownFilesaveStatus = False
		iteration = 0
		noLoopUpdateCounter = 0 #When < 0, don't update slider to avoid the following issue: 1) Slider is updated. 2) D-Bus message is sent. 3) Slider is updated several times more. 4) D-Bus message returns and updates slider. 5) Slider is updated from old position, producing a jerk or a jump.
		def checkLastKnownFrame(status=None):
			nonlocal iteration
			nonlocal lastKnownFrame
			nonlocal lastKnownFilesaveStatus
			nonlocal noLoopUpdateCounter
			
			if not self.isVisible(): #Stop updates if screen has been exited.
				return
			
			iteration += 1
			noLoopUpdateCounter += 1
			#log.debug(f'iteration {iteration} (f{lastKnownFrame}, {lastKnownFilesaveStatus})')
			#log.debug(f'loop {noLoopUpdateCounter}')
			
			if status and self.videoState in ('play', 'filesave'):
				if status['position'] != lastKnownFrame:
					lastKnownFrame = status['position']
					self.uiCurrentFrame.setValue(lastKnownFrame)
					if noLoopUpdateCounter > 0:
						self.uiSeekSlider.blockSignals(True)
						self.uiSeekSlider.setValue(lastKnownFrame)
						self.uiSeekSlider.blockSignals(False)
				
				if status['filesave'] != lastKnownFilesaveStatus:
					lastKnownFilesaveStatus = status['filesave']
					if not lastKnownFilesaveStatus:
						#Restore the seek rate display to the manual play rate.
						self.uiSeekRate.setValue(self.seekRate)
				
				if self.videoState == 'filesave':
					region = [r for r in self.markedRegions if r['region id'] == self.regionBeingSaved][:1]
					if region: #Protect against resets in the middle of saving.
						region = region[0]
						region['saved'] = max( #We seem to get a few frames where we're incorrectly positioned before ending. Disallow negative progress.
							region['saved'],
							(lastKnownFrame - region['mark start']) / (region['mark end'] - region['mark start'])
						)
				
				#Set the seek rate counter back to what the camera operator set it to.
				if lastKnownFilesaveStatus:
					self.uiSeekRate.setValue(status['framerate'])
			
			#Loop after a short timeout, if the screen is still visible.
			if noLoopUpdateCounter > 0:
				self.labelUpdateTimer.start()
			else:
				self.labelUpdateIdleDelayTimer.start()
		self.labelUpdateIdleDelayTimer.timeout.connect(checkLastKnownFrame)
		self.labelUpdateTimer.timeout.connect(lambda: #Now, the timer is not running, so we can't just stop it to stop this process. We may be waiting on the dbus call instead.
			self.video.call('status').then(checkLastKnownFrame) )
		
		self.uiCurrentFrame.suffixFormatString = self.uiCurrentFrame.suffix()
		self.uiCurrentFrame.valueChanged.connect(lambda f: 
			self.uiCurrentFrame.hasFocus() and self.video.call('playback', {'position':f}) )
		
		self.seekRate = 60
		self.uiSeekRate.setValue(self.seekRate)
		
		self.uiSeekBackward.pressed.connect( lambda: self.video.call('playback', {'framerate': -self.seekRate}))
		self.uiSeekBackward.released.connect(lambda: self.video.call('playback', {'framerate': 0}))
		self.uiSeekForward.pressed.connect(  lambda: self.video.call('playback', {'framerate': +self.seekRate}))
		self.uiSeekForward.released.connect( lambda: self.video.call('playback', {'framerate': 0}))
		
		self.uiSeekFaster.clicked.connect(self.seekFaster)
		self.uiSeekSlower.clicked.connect(self.seekSlower)
		
		self.uiMarkStart.clicked.connect(self.markStart)
		self.uiMarkEnd.clicked.connect(self.markEnd)
		
		self.uiSave.clicked.connect(self.onSaveClicked)
		self.uiSaveCancel.clicked.connect(self.cancelSave)
		self.uiSaveCancel.hide()
		
		self.uiSavedFileSettings.clicked.connect(lambda: window.show('file_settings'))
		self.uiDone.clicked.connect(window.back)
		
		self.uiSeekSliderBaseStyleSheet = self.uiSeekSlider.styleSheet()
		settings.observe('theme', 'dark', lambda name:
			self.uiSeekSlider.setStyleSheet(
				self.uiSeekSliderBaseStyleSheet + f"""
					/* ----- Play And Save Screen Styling ----- */
					
					
					Slider::handle:horizontal {{
						image: url(:/assets/images/{theme(name).slider.videoSeekHandle}); /* File name fields: width x height + horizontal padding. */
						margin: -200px -40px; /* y: -slider groove margin. x: touch padding outsidet the groove. Clipped by Slider width. Should be enough for most customizations if we move stuff around. */
					}}
					
					Slider::groove {{
						border: none;
						background-color: none;
					}}
				"""
			)
		)
		#Heatmap got delayed. Don't report different size/touchMargins for heatmap styling.
		self.uiSeekSlider.sliderSize = lambda: QtCore.QSize(156, 61) #Line up focus ring.
		#self.uiSeekSlider.touchMargins = lambda: { "top": 10, "left": 10, "bottom": 10, "right": 10, } #Report real margins.
		#self.uiSeekSlider.focusGeometryNudge = (0,0,0,0)
		self.uiSeekSlider.touchMargins = lambda: { "top": 10, "left": 0, "bottom": 10, "right": 0, } #Report real margins.
		self.uiSeekSlider.debounce.sliderMoved.connect(lambda frame: 
			self.video.callSync('playback', {'position': frame}) )
		self.uiSeekSlider.debounce.sliderMoved.connect(lambda frame: 
			self.uiCurrentFrame.setValue(frame) )
		#last_perf = perf_counter()
		#def countPerfs(*_):
		#	nonlocal last_perf
		#	log.debug(f'update took {(perf_counter() - last_perf)*1000}ms')
		#	last_perf = perf_counter()
		#self.uiSeekSlider.debounce.sliderMoved.connect(countPerfs)
		def updateNoLoopUpdateCounter(*_):
			nonlocal noLoopUpdateCounter
			noLoopUpdateCounter = -10 #Delay updating until the d-bus call has had a chance to return.
		self.uiSeekSlider.debounce.sliderMoved.connect(updateNoLoopUpdateCounter)
		
		self.motionHeatmap = QImage() #Updated by updateMotionHeatmap, used by self.paintMotionHeatmap.
		self.uiTimelineVisualization.paintEvent = self.paintMotionHeatmap
		self.uiTimelineVisualization.hide() #Heatmap got delayed. Hide for now, some logic still depends on it.
		
		#Set up for marked regions.
		self._tracks = [] #Used as cache for updateMarkedRegions / paintMarkedRegions.
		self.uiEditMarkedRegions.formatString = self.uiEditMarkedRegions.text()
		self.uiMarkedRegionVisualization.setAttribute(QtCore.Qt.WA_TransparentForMouseEvents, True)
		self.uiMarkedRegionVisualization.paintEvent = self.paintMarkedRegions
		self.regionsListModel = QStandardItemModel(parent=self.uiMarkedRegions)
		self.uiMarkedRegions.setModel(self.regionsListModel)
		self.regionsListModel.rowsRemoved.connect(self.regionListElementDeleted)
		self.regionsListModel.dataChanged.connect(self.regionListElementChanged)
		self.updateMarkedRegions()
		
		self.markedRegionMenu = MenuToggle(
			menu = self.uiMarkedRegionsPanel,
			button = self.uiEditMarkedRegions,
			focusTarget = self.uiMarkedRegions,
			xRange = (-self.uiMarkedRegionsPanel.width(), -1),
			duration = 30,
		)
		#delay(self, 1, self.markedRegionMenu.toggle) #mmm, just like a crappy javascript app - work around a mysterious black bar appearing on the right-hand side of the window.
		#This doesn't work, never fires.
		#self.uiMarkedRegionsPanel.focusInEvent = self.uiMarkedRegions.setFocus
		
		self.uiMarkedRegionsPanelHeader.setAttribute(QtCore.Qt.WA_TransparentForMouseEvents)
		self.uiMarkedRegionsPanelHeaderX.setAttribute(QtCore.Qt.WA_TransparentForMouseEvents)
		self.uiMarkedRegionPanelClose.clicked.connect(self.markedRegionMenu.forceHide)
		self.uiMarkedRegions.setItemDelegate(EditMarkedRegionsItemDelegate())
		self.lastSelectedRegion = None
		self.uiMarkedRegions.clicked.connect(self.selectMarkedRegion)
		
		api.observe('videoState', self.onVideoStateChangeAlways)
		api.observe('state', self.onStateChangeAlways)
		
		api.signal.observe('sof', self.onSOF)
		api.signal.observe('eof', self.onEOF)
    def __init__(self, cols: dict, parent=None, address_space: dict=None):
        super(AnalyzerView, self).__init__(parent)
        self.cols = cols
        self.address_space = address_space
        self.dataformat = {}

        self.entry = QLineEdit(self)
        self.entry.setClearButtonEnabled(True)
        self.entry.setPlaceholderText('Base Address or Register Name')
        completer = QCompleter()
        completer.setCaseSensitivity(Qt.CaseInsensitive)
        completer.setFilterMode(Qt.MatchContains)
        self.entry.setCompleter(completer)
        self.entry.setMinimumWidth(500)
        self.entry.setMinimumHeight(35)
        self.close_btn = QPushButton('X', self,)
        self.close_btn.setMaximumWidth(40)
        hbox1 = QHBoxLayout()
        hbox1.addWidget(self.entry)
        hbox1.addStretch(1)
        # hbox1.addWidget()

        ctrl_box = QHBoxLayout()
        self.show_detail = QCheckBox('Show Detail', self)
        self.show_reserved = QCheckBox('Show Reserved', self)
        self.add_col = QPushButton('Add Column', self,)
        self.add_col.setDisabled(True)
        ctrl_box.addWidget(self.show_detail)
        # ctrl_box.addWidget(detail_label)
        ctrl_box.addWidget(self.show_reserved)
        ctrl_box.addWidget(self.add_col)
        ctrl_box.addStretch(1)
        ctrl_box.addWidget(self.close_btn)

        self.string_model = QStringListModel()
        completer.setModel(self.string_model)
        self.string_model.setStringList(self.address_space.keys())

        self.model = QStandardItemModel()
        self.table = TableView(self)
        self.table.setWordWrap(True)
        self.table.setModel(self.model)
        self.table.setHorizontalHeader(MetaHeaderView(Qt.Horizontal, parent=self.table))
        vbox = QVBoxLayout()
        vbox.addLayout(hbox1)
        # vbox.addWidget(self.entry)
        vbox.addLayout(ctrl_box)
        vbox.addWidget(self.table)
        self.setLayout(vbox)
        # self.table.horizontalHeader().setHidden(True)
        self.table.verticalHeader().setHidden(True)
        self.table.setShowGrid(False)
        self.table.setSizeAdjustPolicy(
            QAbstractScrollArea.AdjustToContents
        )
        # self.table.setMinimumHeight(600)
        self.reserved_row = []
        self.add_col.clicked.connect(self.add_column)
        self.close_btn.clicked.connect(self.close)
        self.show_detail.stateChanged.connect(self.detail)
        self.show_reserved.stateChanged.connect(self.hide_reserved)
        self.entry.textChanged.connect(self.create_rows)
        # self.table.dataChangedSignal.connect(self.test)
        self.default_col = list(self.cols.keys()).index('Default')
        self.create_cols()
        self.detail()
Exemplo n.º 10
0
    def load_data_2_table(self, header_data, detail_data):
        try:
            if self.content_tab_wg.count() and self.content_tab_wg.widget(
                    0).__getattribute__("attr") == "tab":
                if self.tab_page.model():
                    self.tab_page.model().deleteLater()
            else:
                self.tab_page = QTableView()
                self.tab_page.clicked.connect(self.slot_jump_2_web_page)
                self.tab_page.__setattr__("attr", "tab")
                self.tab_page.setAlternatingRowColors(True)
                self.content_tab_wg.addTab(self.tab_page, "数据表页")

            col_num = 3 if [
                x for x in list(detail_data.values()) if isinstance(x, str)
            ] else 2
            row_num = len(detail_data)
            self.tab_page_model = QStandardItemModel(row_num, col_num)
            if col_num == 2:
                self.tab_page_model.setHorizontalHeaderLabels(
                    [header_data, "项目"])
            else:
                self.tab_page_model.setHorizontalHeaderLabels(
                    [header_data, "项目", "查看详情"])
            for col_idx in range(col_num):
                if col_idx == 0:  # 第一列类别
                    for row_idx in range(row_num):
                        self.tab_page_model.setItem(
                            row_idx, col_idx,
                            QStandardItem(list(detail_data.keys())[row_idx]))
                elif col_num == 2:  # 无第三列,第二列显示子项 标题内容
                    col2_content = [
                        x for x in list(detail_data.values())
                        if isinstance(x, dict) and "标签" not in list(
                            detail_data.keys()) and len(x) <= 10
                    ]
                    if col2_content:
                        for row_idx in range(row_num):
                            self.tab_page_model.setItem(
                                row_idx, col_idx,
                                QStandardItem("、".join(
                                    map(self.strip_colon,
                                        col2_content[row_idx].keys()))))
                    else:
                        school_count_list = []
                        for x in detail_data.values():
                            if not x:
                                school_count_list.append("")
                            else:
                                school_count_list.append(len(x))
                        for row_idx in range(row_num):
                            self.tab_page_model.setItem(
                                row_idx, col_idx,
                                QStandardItem(str(school_count_list[row_idx])))
                elif col_num == 3 and col_idx == 1:  # 有第三列,第二列显示详情
                    for row_idx in range(row_num):
                        school_content = list(detail_data.values())[row_idx]
                        if isinstance(school_content, dict):
                            school_content = "、".join(school_content.keys())
                        elif isinstance(school_content, list):
                            school_content = "、".join(school_content)
                        self.tab_page_model.setItem(
                            row_idx, col_idx, QStandardItem(school_content))
                elif col_num == 3 and col_idx == 2:  # 有第三列,第三列跳转页面
                    for row_idx in range(row_num):
                        school_content = list(detail_data.keys())[row_idx]
                        if school_content not in ["专业列表", "标签", "优势专业"]:
                            self.tab_page_model.setItem(
                                row_idx, col_idx, QStandardItem("跳转"))

            self.tab_page.setModel(self.tab_page_model)
            self.tab_page.setEditTriggers(QTableView.NoEditTriggers)
            self.tab_page.horizontalHeader().setSectionResizeMode(
                QHeaderView.ResizeToContents)
            self.content_tab_wg.setCurrentIndex(0)
        except Exception as e:
            logger_current.error("更新数据表信息:%s, 异常:%s" % (header_data, e))
Exemplo n.º 11
0
 def getModel(self):
     self.m_model = QStandardItemModel(0, 1, self)
     m_completer = QCompleter(self.m_model, self)
     self.lineEdit.setCompleter(m_completer)
     m_completer.activated[str].connect(self.onUrlChoosed)
Exemplo n.º 12
0
    def __init__(self, parent=None):
        super(MyWindow, self).__init__(parent)
        #uic.loadUi('gui_template.ui',self)

        try:
            self.path_home = os.path.expanduser("~\\Desktop\\")
        except Exception:
            self.path_home = ""

        for curren_dir in ["interim_image"]:
            if os.path.exists(curren_dir):
                if os.path.isdir(curren_dir):
                    print(curren_dir + " is here")
                else:
                    try:
                        os.mkdir(curren_dir)
                    except OSError:
                        print("Error generate dir " + curren_dir)
            else:
                try:
                    os.mkdir(curren_dir)
                except OSError:
                    print("Error generate dir " + curren_dir)

        # Load last path for files
        try:
            with open('last_path.json', "r") as f:
                path_dict = {i: j for i, j in json.load(f).items()}
            self.path_image = path_dict["path_image"]
            self.path_dir_images = path_dict["path_dir_images"]
            self.path_dir_dirs = path_dict["path_dir_dirs"]
            self.path_excel = path_dict["path_excel"]
            self.path_excels = path_dict["path_excels"]
            self.path_vez_excel = path_dict["path_vez_excel"]
            self.path_ro_excel = path_dict["path_ro_excel"]
            self.path_ro_word = path_dict["path_ro_word"]
        except Exception:
            self.path_image = self.path_home
            self.path_dir_images = self.path_home
            self.path_dir_dirs = self.path_home
            self.path_excel = self.path_home
            self.path_excels = self.path_home
            self.path_vez_excel = self.path_home
            self.path_ro_excel = self.path_home
            self.path_ro_word = self.path_home

        self.lv_c = 5
        self.t_c = 0.5
        self.imnam = "слои"

        desktop = QApplication.desktop()
        wd = desktop.width()
        hg = desktop.height()
        ww = 1000
        wh = 500
        if ww > wd: ww = int(0.7 * wd)
        if wh > hg: wh = int(0.7 * hg)
        x = (wd - ww) // 2
        y = (hg - wh) // 2
        self.setGeometry(x, y, ww, wh)

        topVBoxLayout = QVBoxLayout(self)
        topVBoxLayout.setContentsMargins(0, 0, 0, 0)

        SPFrame = QFrame()
        SPFrame.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
        SPFrame.setMinimumSize(QSize(150, 100))

        self.ImFrame = QFrame()
        self.ImFrame.setSizePolicy(QSizePolicy.Expanding,
                                   QSizePolicy.Expanding)
        #self.ImFrame.setMinimumSize(QSize(300, 100))

        TbFrame = QFrame()
        TbFrame.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
        TbFrame.setMinimumSize(QSize(0, 100))

        RFrame = QFrame()
        RFrame.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Expanding)
        RFrame.setMinimumSize(QSize(0, 100))

        self.listView = CustomList()  #QListView()
        self.listView.clicked.connect(self.OpenPict)
        self.select_able = True
        self.listView.setcloseEditorSignal(self.Rename)
        #self.listView.editingFinished.connect(self.Rename)
        #self.listView.edit.connect(self.Rename)

        BoxLayout1 = QVBoxLayout()
        self.progress_bar = QProgressBar()
        self.progress_bar.setAlignment(Qt.AlignHCenter)
        BoxLayout1.addWidget(self.progress_bar)
        BoxLayout1.addWidget(self.listView)

        SPFrame.setLayout(BoxLayout1)

        self.Table = CustomTable()  #QTableWidget()
        self.Table.setcloseEditorSignal(
            lambda: self.WriteTable(who_edited="table"))
        #self.Table.itemChanged(lambda:print("change2"))
        self.Table.cellClicked[int, int].connect(self.PosChangedCell)
        self.Table.setColumnCount(3)
        self.Table.setHorizontalHeaderLabels(["p", "h", "d"])
        self.Table.setRowCount(30)
        self.Table.setColumnWidth(0, 50)
        self.Table.setColumnWidth(1, 50)
        self.Table.setColumnWidth(2, 50)
        self.Table.setItemDelegate(DownloadDelegate(self))
        BoxLayout2 = QHBoxLayout()
        BoxLayout2.addWidget(self.Table)
        TbFrame.setLayout(BoxLayout2)

        self.pe1 = QLabel("Рэ1=")
        self.pe2 = QLabel("Рэ2=")
        self.pe = QLabel("Рэ=")
        lb1 = QLabel("Длинна вертикального")
        lb2 = QLabel("заземлителя lв, м")
        lb3 = QLabel("Глубина заложения")
        lb4 = QLabel("вертикального заземлителя t, м")
        lb5 = QLabel("Эквивалентное сопротивление")
        lb6 = QLabel("Двухслойная модель")
        lb7 = QLabel("Однослойная модель")
        lb8 = QLabel("Шаблон искомого изображения")
        lb9 = QLabel("Название проекта")
        lb10 = QLabel("Название ВЛ")
        self.vl = QDoubleSpinBox()
        self.vl.setValue(self.lv_c)
        self.vl.valueChanged.connect(self.WriteTable)
        self.t = QDoubleSpinBox()
        self.t.setValue(self.t_c)
        self.t.valueChanged.connect(self.WriteTable)
        self.pe1_le = QLineEdit()
        self.pe2_le = QLineEdit()
        self.pe_le = QLineEdit()
        self.ImageName = QLineEdit()
        self.ImageName.setText(self.imnam)
        self.NPrj = QLineEdit()
        self.NVL = QLineEdit()
        self.ImageName.editingFinished.connect(self.ReadImName)
        spacerItem = QSpacerItem(2, 20, QSizePolicy.Minimum,
                                 QSizePolicy.Expanding)
        BoxLayout3 = QVBoxLayout()
        BoxLayout4 = QHBoxLayout()
        BoxLayout5 = QHBoxLayout()
        BoxLayout6 = QHBoxLayout()
        BoxLayout3.addWidget(lb8)
        BoxLayout3.addWidget(self.ImageName)
        BoxLayout3.addWidget(lb9)
        BoxLayout3.addWidget(self.NPrj)
        BoxLayout3.addWidget(lb10)
        BoxLayout3.addWidget(self.NVL)
        BoxLayout3.addWidget(lb1)
        BoxLayout3.addWidget(lb2)
        BoxLayout3.addWidget(self.vl)
        BoxLayout3.addWidget(lb3)
        BoxLayout3.addWidget(lb4)
        BoxLayout3.addWidget(self.t)
        BoxLayout3.addWidget(lb5)
        BoxLayout3.addWidget(lb6)
        BoxLayout4.addWidget(self.pe1)
        BoxLayout4.addWidget(self.pe1_le)
        BoxLayout3.addLayout(BoxLayout4)
        BoxLayout5.addWidget(self.pe2)
        BoxLayout5.addWidget(self.pe2_le)
        BoxLayout3.addLayout(BoxLayout5)
        BoxLayout3.addWidget(lb7)
        BoxLayout6.addWidget(self.pe)
        BoxLayout6.addWidget(self.pe_le)
        BoxLayout3.addLayout(BoxLayout6)
        BoxLayout3.addItem(spacerItem)
        RFrame.setLayout(BoxLayout3)

        Splitter1 = QSplitter(Qt.Horizontal)
        Splitter1.addWidget(SPFrame)
        Splitter1.addWidget(self.ImFrame)
        Splitter1.addWidget(TbFrame)
        Splitter1.addWidget(RFrame)
        Splitter1.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
        Splitter1.setStretchFactor(1, 4)
        Splitter1.setStretchFactor(1, 1)

        topVBoxLayout.addWidget(Splitter1)

        self.central_widget = QWidget()
        self.central_widget.setLayout(topVBoxLayout)
        self.setCentralWidget(self.central_widget)

        #self.resize()
        #self.central_widget.show()
        self.PaintForm = MyFrame(False, parent=self.ImFrame)

        self.statusBar()
        menubar = self.menuBar()

        exitAction = QAction('&Выход', self)  #QIcon('exit.png'),
        exitAction.setShortcut('Ctrl+Q')
        exitAction.setStatusTip('Выход и программы')
        exitAction.triggered.connect(lambda: self.closeEvent(QCloseEvent()))

        Open0Action = QAction('&Открыть изображение',
                              self)  #QIcon('exit.png'),
        Open0Action.setShortcut('Ctrl+1')
        Open0Action.setStatusTip(
            'Результаты ВЭЗ предоставлены одиночными изображениями')
        Open0Action.triggered.connect(self.Op0)

        Open1Action = QAction('&Открыть папку изображений',
                              self)  #QIcon('exit.png'),
        Open1Action.setShortcut('Ctrl+2')
        Open1Action.setStatusTip(
            'Результаты ВЭЗ предоставлены одиночными изображениями')
        Open1Action.triggered.connect(lambda: self.Op12(0))

        Open2Action = QAction('&Открыть папку каталогов',
                              self)  #QIcon('exit.png'),
        Open2Action.setShortcut('Ctrl+3')
        Open2Action.setStatusTip('Результаты ВЭЗ предоставлены набором файлов')
        Open2Action.triggered.connect(lambda: self.Op12(1))

        Open3Action = QAction('&Открыть файл Ecxel', self)  #QIcon('exit.png'),
        Open3Action.setShortcut('Ctrl+4')
        Open3Action.setStatusTip('Результаты ВЭЗ файле Ecxel')
        Open3Action.triggered.connect(self.Op3)

        Open4Action = QAction('&Открыть файлы Ecxel',
                              self)  #QIcon('exit.png'),
        Open4Action.setShortcut('Ctrl+5')
        Open4Action.setStatusTip('Результаты ВЭЗ в нескольких файлах Ecxel')
        Open4Action.triggered.connect(self.Op4)

        NewPick = QAction("Добавить точку", self)
        NewPick.setShortcut('Ctrl+A')
        NewPick.setStatusTip('Добавить новую точку')
        NewPick.triggered.connect(self.NewPick)

        DelPick = QAction("Удалить точку", self)
        DelPick.setShortcut('Ctrl+D')
        DelPick.setStatusTip('Удалить точку из списка')
        DelPick.triggered.connect(self.DelPick)

        ReRead = QAction("Прочитать изображение", self)
        ReRead.setShortcut('Ctrl+R')
        ReRead.setStatusTip('Принудительно считывает информацию с изображения')
        ReRead.triggered.connect(self.ReReadImage)

        Select = QAction("Выбрать все точки", self)
        Select.setShortcut('Ctrl+W')
        Select.setStatusTip('Выбираем все точки из списка')
        Select.triggered.connect(self.select)

        ClearTable = QAction("Очистить таблицу", self)
        ClearTable.setShortcut('Ctrl+Shift+D')
        ClearTable.setStatusTip('Очищает текущую таблицу')
        ClearTable.triggered.connect(self.ClearTable)

        SetLvCheck = QAction("Установить lв выбранным точкам", self)
        SetLvCheck.setShortcut('Ctrl+E')
        SetLvCheck.setStatusTip('Изменяет lв выбраных точек на текущее')
        SetLvCheck.triggered.connect(self.SetLvCheck)

        SetTCheck = QAction("Установить t выбранным точкам", self)
        SetTCheck.setShortcut('Ctrl+T')
        SetTCheck.setStatusTip('Изменяет t выбраных точек на текущее')
        SetTCheck.triggered.connect(self.SetTCheck)

        Save1VEZExcel = QAction("Сохранить ВЭЗ в Excel", self)
        Save1VEZExcel.setShortcut('Ctrl+6')
        Save1VEZExcel.setStatusTip('Сохраняет выбраные ВЭЗ в Excel файл')
        Save1VEZExcel.triggered.connect(lambda: self.Save1VEZExcel(1))

        Save2VEZExcel = QAction("Сохранить Pэ в Excel", self)
        Save2VEZExcel.setShortcut('Ctrl+7')
        Save2VEZExcel.setStatusTip('Сохраняет выбраные Рэ в Excel файл')
        Save2VEZExcel.triggered.connect(lambda: self.Save1VEZExcel(2))

        Save3VEZExcel = QAction("Сохранить Pэ в Word", self)
        Save3VEZExcel.setShortcut('Ctrl+8')
        Save3VEZExcel.setStatusTip('Сохраняет выбраные Рэ в Word файл')
        Save3VEZExcel.triggered.connect(lambda: self.Save1VEZExcel(3))

        EditWord = QAction("Редактировать шаблон Word", self)
        EditWord.setShortcut('Ctrl+G')
        EditWord.setStatusTip('Запускает окно для редактирования шаблона Word')
        EditWord.triggered.connect(self.EditWord)

        zoomIn = QAction("Увеличить изображение", self)
        zoomIn.setShortcut('Ctrl++')
        zoomIn.setStatusTip('Увеличивает открытое изображение')
        zoomIn.triggered.connect(self.PaintForm.zoomIn)

        zoomOut = QAction("Уменьшить изображение", self)
        zoomOut.setShortcut('Ctrl+-')
        zoomOut.setStatusTip('Уменьшает открытое изображение')
        zoomOut.triggered.connect(self.PaintForm.zoomOut)

        Rotate1 = QAction("Повернуть изображение по ч.с", self)
        Rotate1.setShortcut('Ctrl+Shift++')
        Rotate1.setStatusTip('Поворачивает изображение по часовой стрелке')
        Rotate1.triggered.connect(lambda: self.PaintForm.Rotate(1))

        Rotate2 = QAction("Повернуть изображение против ч.с", self)
        Rotate2.setShortcut('Ctrl+Shift+-')
        Rotate2.setStatusTip(
            'Поворачивает изображение ппротив часовой стрелке')
        Rotate2.triggered.connect(lambda: self.PaintForm.Rotate(-1))

        NormalSize = QAction("Вернуть исходный размер", self)
        NormalSize.setShortcut('Ctrl+F')
        NormalSize.setStatusTip('Вернуть исходный размер изображения')
        NormalSize.triggered.connect(self.PaintForm.normalSize)

        fileMenu = menubar.addMenu('&Файл')
        fileMenu.addAction(Open0Action)
        fileMenu.addAction(Open1Action)
        fileMenu.addAction(Open2Action)
        fileMenu.addAction(Open3Action)
        fileMenu.addAction(Open4Action)
        fileMenu.addAction(exitAction)

        editMenu = menubar.addMenu('&Правка')
        editMenu.addAction(NewPick)
        editMenu.addAction(DelPick)
        editMenu.addAction(ReRead)
        editMenu.addAction(Select)
        editMenu.addAction(SetLvCheck)
        editMenu.addAction(SetTCheck)
        editMenu.addAction(ClearTable)

        imageMenu = menubar.addMenu('&Изображение')
        imageMenu.addAction(zoomIn)
        imageMenu.addAction(zoomOut)
        imageMenu.addAction(Rotate1)
        imageMenu.addAction(Rotate2)
        imageMenu.addAction(NormalSize)

        reportMenu = menubar.addMenu('&Отчёт')
        reportMenu.addAction(Save1VEZExcel)
        reportMenu.addAction(Save2VEZExcel)
        reportMenu.addAction(Save3VEZExcel)
        reportMenu.addAction(EditWord)

        self.setWindowTitle('VEZRead')
        self.setWindowIcon(QIcon('images\\op1.png'))

        self.d = {}
        self.sp_m = []
        self.file_path = []
        self.file_name = []
        self.arr = []
        self.stst = []
        self.arr_lv = []
        self.arr_t = []
        self.adres = None
        self.ski = QStandardItemModel()
        self.listView.setModel(self.ski)
        self.listView.pressed.connect(self.presseditem)

        self.sel = True
        self.block = True
        self.back_colors = ((255, 255, 255, 255), (255, 0, 0, 50),
                            (255, 255, 0, 50), (0, 255, 0, 50))

        self.pos_changed_cell = (0, 0)
Exemplo n.º 13
0
    def initLandmarkList(self):

        # initialize the landmarkTableModel (QTableView)
        landmark_model = QStandardItemModel(0, 0)
        landmark_model.setHorizontalHeaderItem(0, QStandardItem(''))
        landmark_model.setHorizontalHeaderItem(1, QStandardItem('Source x'))
        landmark_model.setHorizontalHeaderItem(2, QStandardItem('Source y'))
        landmark_model.setHorizontalHeaderItem(3, QStandardItem('Target x'))
        landmark_model.setHorizontalHeaderItem(4, QStandardItem('Target y'))
        landmark_model.setHorizontalHeaderItem(5, QStandardItem('Set'))
        landmark_model.setHorizontalHeaderItem(6, QStandardItem('Move'))
        landmark_model.setHorizontalHeaderItem(7, QStandardItem('Clear'))
        self.lTable.setModel(landmark_model)

        header = self.lTable.horizontalHeader()
        for i in range(8):
            if i not in [3,4]: # fixed width for target columns
                header.setSectionResizeMode(
                    i, QHeaderView.ResizeToContents)

        self.lTable.setColumnWidth(3, 70)
        self.lTable.setColumnWidth(4, 70)
        self.lTable.verticalHeader().setSectionResizeMode(
            QHeaderView.ResizeToContents)

        landmark_model = self.lTable.model()
        for id,(key,source_target) \
            in enumerate(self.gm.magc_landmarks.items()):

            # source_target is a dictionary for each landmark
            # that contains two keys
            # source: the landmark in source coordinates
            # target: the landmark in target coordinates
            # the target key does not exist until it is either
            # manually defined
            # or inferred when enough (2) other target landmarks
            # have been defined

            item0 = QStandardItem(str(key))
            item1 = QStandardItem(str(source_target['source'][0]))
            item2 = QStandardItem(str(source_target['source'][1]))

            item5 = QPushButton('Set')
            item5.setFixedSize(QSize(50, 40))
            item5.clicked.connect(self.set_landmark(id))

            item6 = QPushButton('Go to')
            item6.setFixedSize(QSize(60, 40))
            item6.clicked.connect(self.goto_landmark(id))

            if self.cfg['sys']['simulation_mode'] == 'True':
                item5.setEnabled(False)
                item6.setEnabled(False)

            item7 = QPushButton('Clear')
            item7.setFixedSize(QSize(60, 40))
            item7.clicked.connect(self.clear_landmark(id))

            if 'target' in source_target:
                item0.setBackground(GREEN)

                item3 = QStandardItem(str(source_target['target'][0]))
                item3.setBackground(GREEN)

                item4 = QStandardItem(str(source_target['target'][1]))
                item4.setBackground(GREEN)
            else:
                item0.setBackground(GRAY)

                item3 = QStandardItem('')
                item3.setBackground(GRAY)

                item4 = QStandardItem('')
                item4.setBackground(GRAY)

                item6.setEnabled(False)
                item7.setEnabled(False)

            item3.setCheckable(False)
            item4.setCheckable(False)

            landmark_model.appendRow([item0, item1, item2, item3, item4])
            self.lTable.setIndexWidget(landmark_model.index(id, 5), item5)
            self.lTable.setIndexWidget(landmark_model.index(id, 6), item6)
            self.lTable.setIndexWidget(landmark_model.index(id, 7), item7)
Exemplo n.º 14
0
    def __init__(self, parent=None):  # pylint: disable=too-many-statements
        super(ModulesPanel, self).__init__(parent)
        self._app_window = parent

        if self._app_window.dwarf is None:
            print('ModulesPanel created before Dwarf exists')
            return

        self._app_window.dwarf.onSetModules.connect(self.set_modules)

        self._uppercase_hex = True

        # setup models
        self.modules_list = None
        self.modules_model = QStandardItemModel(0, 4, self)
        self.modules_model.setHeaderData(0, Qt.Horizontal, 'Name')
        self.modules_model.setHeaderData(1, Qt.Horizontal, 'Base')
        self.modules_model.setHeaderData(1, Qt.Horizontal, Qt.AlignCenter,
                                         Qt.TextAlignmentRole)
        self.modules_model.setHeaderData(2, Qt.Horizontal, 'Size')
        self.modules_model.setHeaderData(2, Qt.Horizontal, Qt.AlignCenter,
                                         Qt.TextAlignmentRole)
        self.modules_model.setHeaderData(3, Qt.Horizontal, 'Path')

        self.imports_list = None
        self.imports_model = QStandardItemModel(0, 4, self)
        self.imports_model.setHeaderData(0, Qt.Horizontal, 'Import')
        self.imports_model.setHeaderData(1, Qt.Horizontal, 'Address')
        self.imports_model.setHeaderData(1, Qt.Horizontal, Qt.AlignCenter,
                                         Qt.TextAlignmentRole)
        self.imports_model.setHeaderData(2, Qt.Horizontal, 'Module')
        self.imports_model.setHeaderData(2, Qt.Horizontal, Qt.AlignCenter,
                                         Qt.TextAlignmentRole)
        self.imports_model.setHeaderData(3, Qt.Horizontal, 'Type')

        self.exports_list = None
        self.exports_model = QStandardItemModel(0, 3, self)
        self.exports_model.setHeaderData(0, Qt.Horizontal, 'Export')
        self.exports_model.setHeaderData(1, Qt.Horizontal, 'Address')
        self.exports_model.setHeaderData(1, Qt.Horizontal, Qt.AlignCenter,
                                         Qt.TextAlignmentRole)
        self.exports_model.setHeaderData(2, Qt.Horizontal, 'Type')

        self.symbols_list = None
        self.symbols_model = QStandardItemModel(0, 3, self)
        self.symbols_model.setHeaderData(0, Qt.Horizontal, 'Export')
        self.symbols_model.setHeaderData(1, Qt.Horizontal, 'Address')
        self.symbols_model.setHeaderData(1, Qt.Horizontal, Qt.AlignCenter,
                                         Qt.TextAlignmentRole)
        self.symbols_model.setHeaderData(2, Qt.Horizontal, 'Type')

        # setup ui
        main_wrapper = QVBoxLayout()
        main_wrapper.setContentsMargins(0, 0, 0, 0)
        h_box = QHBoxLayout()
        self.modules_list = DwarfListView()
        self.modules_list.setContextMenuPolicy(Qt.CustomContextMenu)
        self.modules_list.customContextMenuRequested.connect(
            self._on_modules_contextmenu)
        self.modules_list.setEditTriggers(self.modules_list.NoEditTriggers)
        self.modules_list.clicked.connect(self._module_clicked)
        self.modules_list.doubleClicked.connect(self._module_dblclicked)
        self.modules_list.setModel(self.modules_model)
        self.modules_list.header().setSectionResizeMode(
            0, QHeaderView.ResizeToContents)
        self.modules_list.header().setSectionResizeMode(
            1, QHeaderView.ResizeToContents)
        self.modules_list.header().setSectionResizeMode(
            2, QHeaderView.ResizeToContents)
        h_box.addWidget(self.modules_list)
        self.modules_list.selectionModel().selectionChanged.connect(
            self._module_clicked)

        hv_box = QVBoxLayout()
        self.imports_list = DwarfListView()
        self.imports_list.setContextMenuPolicy(Qt.CustomContextMenu)
        self.imports_list.customContextMenuRequested.connect(
            self._on_imports_contextmenu)
        self.imports_list.setEditTriggers(self.modules_list.NoEditTriggers)
        self.imports_list.doubleClicked.connect(self._import_dblclicked)
        self.imports_list.setModel(self.imports_model)
        self.imports_list.header().setSectionResizeMode(
            0, QHeaderView.ResizeToContents)
        self.imports_list.header().setSectionResizeMode(
            1, QHeaderView.ResizeToContents)
        self.imports_list.header().setSectionResizeMode(
            2, QHeaderView.ResizeToContents)
        self.imports_list.setVisible(False)
        self.exports_list = DwarfListView()
        self.exports_list.setContextMenuPolicy(Qt.CustomContextMenu)
        self.exports_list.customContextMenuRequested.connect(
            self._on_exports_contextmenu)
        self.exports_list.setEditTriggers(self.modules_list.NoEditTriggers)
        self.exports_list.doubleClicked.connect(self._export_dblclicked)
        self.exports_list.setModel(self.exports_model)
        self.exports_list.header().setSectionResizeMode(
            0, QHeaderView.ResizeToContents)
        self.exports_list.header().setSectionResizeMode(
            1, QHeaderView.ResizeToContents)
        self.exports_list.header().setSectionResizeMode(
            2, QHeaderView.ResizeToContents)
        self.exports_list.setVisible(False)
        self.symbols_list = DwarfListView()
        self.symbols_list.setContextMenuPolicy(Qt.CustomContextMenu)
        self.symbols_list.doubleClicked.connect(self._symbol_dblclicked)
        self.symbols_list.setModel(self.symbols_model)
        self.symbols_list.header().setSectionResizeMode(
            0, QHeaderView.ResizeToContents)
        self.symbols_list.header().setSectionResizeMode(
            1, QHeaderView.ResizeToContents)
        self.symbols_list.header().setSectionResizeMode(
            2, QHeaderView.ResizeToContents)
        self.symbols_list.setVisible(False)
        hv_box.addWidget(self.imports_list)
        hv_box.addWidget(self.exports_list)
        hv_box.addWidget(self.symbols_list)
        h_box.addLayout(hv_box)
        main_wrapper.addLayout(h_box)
        self.setLayout(main_wrapper)
Exemplo n.º 15
0
 def createLabelModel(self):
     # LABEL, REQUIRED, NODEKEY
     model = QStandardItemModel(0, 1)
     model.setHeaderData(LABEL, Qt.Horizontal, "Label")
     return model
Exemplo n.º 16
0
# -*- coding: utf-8 -*-

# Ref: http://doc.qt.io/qt-5/modelview.html#2-1-a-read-only-table

import sys
from PyQt5.QtGui import QStandardItemModel, QStandardItem
from PyQt5.QtWidgets import QApplication, QTreeView

if __name__ == '__main__':
    app = QApplication(sys.argv)

    tree_view = QTreeView()

    ###

    model = QStandardItemModel(None)

    rootItem = model.invisibleRootItem()

    # Defining a couple of items
    americaItem = QStandardItem("America")
    canadaItem = QStandardItem("Canada")
    europeItem = QStandardItem("Europe")
    franceItem = QStandardItem("France")
    brittanyItem = QStandardItem("Brittany")

    # Building up the hierarchy
    rootItem.appendRow(americaItem)
    rootItem.appendRow(europeItem)
    americaItem.appendRow(canadaItem)
    europeItem.appendRow(franceItem)
Exemplo n.º 17
0
 def createMailModel(self,parent):
     model = QStandardItemModel(0, 3, parent)
     model.setHeaderData(self.FROM, Qt.Horizontal, "From")
     model.setHeaderData(self.SUBJECT, Qt.Horizontal, "Subject")
     model.setHeaderData(self.DATE, Qt.Horizontal, "Date")
     return model
Exemplo n.º 18
0
 def __init__(self, parent=None):
     super().__init__(parent)
     self.setupUi(self)
     self.setWindowTitle("{} - {}".format(__title__, __version__))
     # Private members
     self._applicationDir = ROOT
     self._currentDir = self._applicationDir
     self._settingsFile = os.path.join(ROOT, "data", "settings.ini")
     self._recentFiles = []
     self._recentFilesActions = []
     self._proxiesModel = OrderedDict([
         # (name, ColumnData(label, width))
         ("ip", ColumnData("IP", 200)),
         ("port", ColumnData("Port", 100)),
         # ("user", ColumnData("Username", None)),
         # ("pass", ColumnData("Password", None)),
         ("country", ColumnData("Country", 150)),
         ("type", ColumnData("Type", 150)),
         ("anon", ColumnData("Level", 50)),
         ("ssl", ColumnData("SSL", 50)),
         ("speed", ColumnData("Speed", 100)),
         ("status", ColumnData("Status", None)),
     ])
     self._proxiesModelColumns = list(self._proxiesModel.keys())
     self._proxies = set()
     self._checkedProxiesCount = 0
     self._liveProxiesCount = 0
     self._transparentProxiesCount = 0
     self._anonymousProxiesCount = 0
     self._eliteProxiesCount = 0
     self._progressTotal = 0
     self._progressDone = 0
     self._threadsCount = THREADS
     self._threads = []
     self._workers = []
     self._realIP = None
     self._requestTimeout = TIMEOUT
     self._requestsDelay = DELAY
     # UI
     self.quitAction.setShortcut(QKeySequence(Qt.CTRL + Qt.Key_Q))
     # TODO: custom model for proxies
     self.proxiesModel = QStandardItemModel()
     self.proxiesModel.setHorizontalHeaderLabels(
         [col.label for _, col in self._proxiesModel.items()])
     self.proxiesTable.setModel(self.proxiesModel)
     self.proxiesTable.setColumnWidth(0, 200)
     self.proxySourcesModel = QStandardItemModel(self)
     self.proxySourcesModel.setHorizontalHeaderLabels(["URL", "Status"])
     for i, url in enumerate(PROXY_SOURCES):
         self.proxySourcesModel.appendRow([
             QStandardItem(url),
             QStandardItem(""),
         ])
     self.testButton.setVisible(False)
     self.realIPLabel = QtWidgets.QLabel(
         REAL_IP_LABEL.format("___.___.___.___"))
     self.proxiesCountLabel = QtWidgets.QLabel(
         PROXIES_COUNT_LABEL.format(len(self._proxies),
                                    self._checkedProxiesCount,
                                    self._liveProxiesCount))
     self.transparentProxiesCountLabel = QtWidgets.QLabel(
         TRANSPARENT_PROXIES_COUNT_LABEL.format(
             self._transparentProxiesCount))
     self.anonymousProxiesCountLabel = QtWidgets.QLabel(
         ANONYMOUS_PROXIES_COUNT_LABEL.format(self._anonymousProxiesCount))
     self.eliteProxiesCountLabel = QtWidgets.QLabel(
         ELITE_PROXIES_COUNT_LABEL.format(self._eliteProxiesCount))
     self.activeThreadsLabel = QtWidgets.QLabel(
         ACTIVE_THREADS_LABEL.format(MyThread.activeCount))
     self.statusbar.addPermanentWidget(self.realIPLabel)
     self.statusbar.addPermanentWidget(self.proxiesCountLabel)
     self.statusbar.addPermanentWidget(self.transparentProxiesCountLabel)
     self.statusbar.addPermanentWidget(self.anonymousProxiesCountLabel)
     self.statusbar.addPermanentWidget(self.eliteProxiesCountLabel)
     self.statusbar.addPermanentWidget(self.activeThreadsLabel)
     # Connections
     ## File Menu
     self.importProxiesAction.triggered.connect(self.importProxies)
     # self.exportProxiesAction.triggered.connect(self.exportProxies)
     self.clearRecentFilesAction.triggered.connect(self.clearRecentFiles)
     self.quitAction.triggered.connect(
         lambda: QtWidgets.QApplication.quit())
     ## Edit menu
     self.removeSelectedAction.triggered.connect(self.removeSelected)
     self.clearTableAction.triggered.connect(self.clearTable)
     self.optionsAction.triggered.connect(self.options)
     ## Help Menu
     self.aboutAction.triggered.connect(self.about)
     ##
     self.scrapeProxiesButton.clicked.connect(self.scrapeProxies)
     self.checkProxiesButton.clicked.connect(self.checkProxies)
     self.stopButton.clicked.connect(self.stop)
     self.testButton.clicked.connect(self.test)
     self.pulseTimer = QTimer(self)
     self.pulseTimer.timeout.connect(self.pulse)
     self.pulseTimer.start(1000)
     # Events
     self.proxiesTable.contextMenuEvent = self.onProxiesTableMenu
     self.showEvent = self.onShow
     self.resizeEvent = self.onResize
     self.closeEvent = self.onClose
     # Init
     self.centerWindow()
     self.loadSettings()
     self.initRecentFiles()
     self.statusbar.showMessage("Ready.")
     # Test
     if os.path.isfile("data/proxies.txt"):
         self.testButton.setVisible(True)
         proxies = self.loadProxiesFromFile("data/proxies.txt")
         if proxies:
             for proxy in proxies:
                 self.appendModelRow(self.proxiesModel, ("ip", "port"),
                                     (proxy.ip, proxy.port))
Exemplo n.º 19
0
nitems = 0
indexes = []
labels = []
positions = []
t0 = time.time()
for i in range(-110, 110, 110):
    for j in range(-70, 70, 70):
        indexes.append(nitems)
        labels.append(str(nitems))
        positions.append(QPointF(i, j))

        nitems += 1

scene.addNodes(indexes, labels, positions)

model = QStandardItemModel(4, 1)
for row in range(4):
    item = QStandardItem("")
    item.setData(float(row), Qt.UserRole + 1)
    model.setItem(row, 0, item)


def easing_function(value: float) -> int:
    return int(value * 10)


scene.setNodesRadiiFromModel(model, 0, Qt.UserRole + 1)

print(f"{time.time()-t0}s")
print(f"{nitems} items")
Exemplo n.º 20
0
    def __init__(self, parent=None):
        super(WelcomeDialog, self).__init__(parent=parent)

        self._prefs = parent.prefs

        self._sub_titles = [
            ['duck', 'dumb', 'doctor', 'dutch', 'dark', 'dirty'],
            ['warriors', 'wardrobes', 'waffles', 'wishes'],
            ['are', 'aren\'t', 'ain\'t', 'appears to be'],
            ['rich', 'real', 'riffle', 'retarded', 'rock'],
            [
                'as f**k', 'fancy', 'f****d', 'front-ended', 'falafel',
                'french fries'
            ],
        ]

        self._recent_list_model = QStandardItemModel(0, 6)
        self._recent_list_model.setHeaderData(0, Qt.Horizontal, 'Path')
        self._recent_list_model.setHeaderData(1, Qt.Horizontal, 'Session')
        self._recent_list_model.setHeaderData(1, Qt.Horizontal, Qt.AlignCenter,
                                              Qt.TextAlignmentRole)
        self._recent_list_model.setHeaderData(2, Qt.Horizontal, 'Hooks')
        self._recent_list_model.setHeaderData(2, Qt.Horizontal, Qt.AlignCenter,
                                              Qt.TextAlignmentRole)
        self._recent_list_model.setHeaderData(3, Qt.Horizontal, 'Watchers')
        self._recent_list_model.setHeaderData(3, Qt.Horizontal, Qt.AlignCenter,
                                              Qt.TextAlignmentRole)
        self._recent_list_model.setHeaderData(4, Qt.Horizontal, 'OnLoads')
        self._recent_list_model.setHeaderData(4, Qt.Horizontal, Qt.AlignCenter,
                                              Qt.TextAlignmentRole)
        self._recent_list_model.setHeaderData(5, Qt.Horizontal, 'Bookmarks')
        self._recent_list_model.setHeaderData(5, Qt.Horizontal, Qt.AlignCenter,
                                              Qt.TextAlignmentRole)
        #self._recent_list_model.setHeaderData(6, Qt.Horizontal, 'Custom script')
        #self._recent_list_model.setHeaderData(6, Qt.Horizontal, Qt.AlignCenter, Qt.TextAlignmentRole)

        self._recent_list = DwarfListView(self)
        self._recent_list.setModel(self._recent_list_model)

        self._recent_list.header().setSectionResizeMode(
            0, QHeaderView.ResizeToContents | QHeaderView.Interactive)
        self._recent_list.header().setSectionResizeMode(1, QHeaderView.Stretch)
        self._recent_list.header().setSectionResizeMode(2, QHeaderView.Stretch)
        self._recent_list.header().setSectionResizeMode(3, QHeaderView.Stretch)
        self._recent_list.header().setSectionResizeMode(4, QHeaderView.Stretch)
        self._recent_list.header().setSectionResizeMode(5, QHeaderView.Stretch)
        #self._recent_list.header().setSectionResizeMode(6, QHeaderView.Stretch)

        self._recent_list.setContextMenuPolicy(Qt.CustomContextMenu)
        self._recent_list.customContextMenuRequested.connect(
            self._on_recent_sessions_context_menu)
        self._recent_list.doubleClicked.connect(
            self._on_recent_session_double_click)

        # setup size and remove/disable titlebuttons
        self.setFixedSize(860, 420)
        self.setSizeGripEnabled(False)
        self.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
        self.setWindowFlag(Qt.WindowContextHelpButtonHint, False)
        self.setWindowFlag(Qt.WindowCloseButtonHint, True)
        self.setModal(True)

        # setup ui elements
        self.setup_ui()

        self.update_commits_thread = DwarfCommitsThread(parent)
        self.update_commits_thread.on_update_available.connect(
            self._on_dwarf_isupdate)
        self.update_commits_thread.start()
        # center
        self.setGeometry(
            QStyle.alignedRect(Qt.LeftToRight, Qt.AlignCenter, self.size(),
                               qApp.desktop().availableGeometry()))
Exemplo n.º 21
0
    def __init__(self, parent=None):
        super(QWidget, self).__init__(parent)

        self.headers = "id,motor_tag,potencia,fator_potencia,rotação,rendimento,n_ensaios,data,apagar".split(',')
        self.model = QStandardItemModel(100,8)
        self.model.setHorizontalHeaderLabels(self.headers)
        self.table = QTableView(self)
        self.table.setEditTriggers(QAbstractItemView.NoEditTriggers)
        self.label = ["motor_"+str(x) for x in range(10)]
        self.addTab = QIcon("C:/Users/ZZZZZZ/Desktop/projeto_dashboardApp/src/icons/tab_icon.png")
        self.clear = QPushButton('limpar')
        self.hbox = QHBoxLayout()
        

        for row, item in enumerate(self.label):
                tabletItem = QStandardItem(item)
                tabletItem.setTextAlignment(Qt.AlignHCenter)
                self.model.setItem(row,1,tabletItem)


        for row, item in enumerate(self.label):
                delete_row = QPushButton()
                delete_row.setStyleSheet("""background-color:qlineargradient(x1:0 y1:0, x2:1 y2:1, stop:0 #e4ede4, stop:1 #d1e3d1);
                                            border-radius:0px;
                                            border:0px;
                                          """)
                                          
                delete_row.setIcon(QIcon("C:/Users/ZZZZZZ/Desktop/projeto_dashboardApp/src/icons/delete_icon.png"))
                delete_row.setIconSize(QSize(20,20))
                delete_row.clicked.connect(self.deleteRow)
                self.table.setIndexWidget(self.model.index(row,8), delete_row)


        show_tab = QPushButton(str(row))
        show_tab.setIcon(self.addTab)
        show_tab.setStyleSheet("""background-color:qlineargradient(x1:0 y1:0, x2:1 y2:1, stop:0 #e4ede4, stop:1 #d1e3d1);
                                    border-radius:0px;
                                    border:0px;
                                    color:black;
                                    """)
        show_tab.setIconSize(QSize(20,20))
        show_tab.clicked.connect(self.handleButtonClicked)
        self.table.setItemDelegateForColumn(0, ShowButton(self))

        self.proxy = QSortFilterProxyModel()
        self.proxy.setSourceModel(self.model)
        self.table.setModel(self.proxy)
        
        self.search = QLineEdit()
        self.search.textChanged.connect(self.find_tag)
        
        
        self.table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) 
        

        self.vbox = QVBoxLayout(self)
        self.hbox.addWidget(self.search)
        self.hbox.addWidget(self.clear)
        self.vbox.addLayout(self.hbox)
        self.vbox.addWidget(self.table)
        self.setLayout(self.vbox)
Exemplo n.º 22
0
    def createOutboundSocksSettingPanel(self):
        labelAddress = QLabel(
            self.translate("OutboundSocksPanel", "Server Address: "), self)
        self.lineEditOutboundSocksAddress = QLineEdit()
        labelPort = QLabel(self.translate("OutboundSocksPanel", "Port: "),
                           self)
        self.spinBoxOutboundSocksPort = QSpinBox()

        labelUserName = QLabel(self.translate("OutboundSocksPanel", "User: "******"OutboundSocksPanel", "Password: "******"OutboundSocksPanel", "User Level: "))
        self.spinBoxOutboundSocksuerLevel = QSpinBox()
        self.spinBoxOutboundSocksuerLevel.setRange(0, 65535)
        self.spinBoxOutboundSocksuerLevel.setValue(0)
        self.spinBoxOutboundSocksuerLevel.setDisabled(True)

        hboxuserLevel = QHBoxLayout()
        hboxuserLevel.addWidget(labelLevel)
        hboxuserLevel.addWidget(self.spinBoxOutboundSocksuerLevel)
        hboxuserLevel.addStretch()

        self.btnOutboundSocksClear = QPushButton(
            self.translate("OutboundSocksPanel", "Clear"))
        self.btnOutboundSocksChange = QPushButton(
            self.translate("OutboundSocksPanel", "Modify"))
        self.btnOutboundSocksAdd = QPushButton(
            self.translate("OutboundSocksPanel", "Add"))
        self.btnOutboundSocksDelete = QPushButton(
            self.translate("OutboundSocksPanel", "Delete"))

        self.spinBoxOutboundSocksPort.setRange(0, 65535)
        self.spinBoxOutboundSocksPort.setValue(1080)

        hboxAdress = QHBoxLayout()
        hboxAdress.addWidget(labelAddress)
        hboxAdress.addWidget(self.lineEditOutboundSocksAddress)
        hboxAdress.addWidget(labelPort)
        hboxAdress.addWidget(self.spinBoxOutboundSocksPort)
        hboxAdress.addStretch()

        hboxUser = QHBoxLayout()
        hboxUser.addWidget(labelUserName)
        hboxUser.addWidget(self.lineEditOutboundSocksUserName)
        hboxUser.addWidget(labelPassowrd)
        hboxUser.addWidget(self.lineEditOutboundSocksPassword)
        hboxUser.addStretch()

        vboxBtnUser = QVBoxLayout()
        vboxBtnUser.addStretch()
        vboxBtnUser.addWidget(self.btnOutboundSocksAdd)
        vboxBtnUser.addWidget(self.btnOutboundSocksClear)
        vboxBtnUser.addWidget(self.btnOutboundSocksChange)
        vboxBtnUser.addWidget(self.btnOutboundSocksDelete)

        self.treeViewoutSocksAddress = treeViewoutSocksAddress = QTreeView()
        treeViewoutSocksAddress.setSelectionMode(
            QAbstractItemView.SingleSelection)
        treeViewoutSocksAddress.setSelectionBehavior(
            QAbstractItemView.SelectRows)
        treeViewoutSocksAddress.setUniformRowHeights(True)
        treeViewoutSocksAddress.setEditTriggers(
            QAbstractItemView.NoEditTriggers)

        self.treeViewoutSocksAddressMode = QStandardItemModel()
        self.treeViewoutSocksAddressMode.setHorizontalHeaderLabels(
            self.labeloutSocks)
        self.treeViewoutSocksAddress.setModel(self.treeViewoutSocksAddressMode)

        hboxtreeView = QHBoxLayout()
        hboxtreeView.addWidget(self.treeViewoutSocksAddress)
        hboxtreeView.addLayout(vboxBtnUser)

        vboxOutboundSocks = QVBoxLayout()
        vboxOutboundSocks.addLayout(hboxAdress)
        vboxOutboundSocks.addLayout(hboxUser)
        vboxOutboundSocks.addLayout(hboxuserLevel)
        vboxOutboundSocks.addLayout(hboxtreeView)

        groupBoxOutboundSocksPanel = QGroupBox(
            self.translate("OutboundSocksPanel", "Socks"), self)
        groupBoxOutboundSocksPanel.setLayout(vboxOutboundSocks)

        if (v2rayshellDebug):
            self.__btnDebug = QPushButton("__DebugTest", self)
            vboxOutboundSocks.addWidget(self.__btnDebug)
            self.__btnDebug.clicked.connect(self.__DebugTest)
            self.settingOutboundSocksPanelFromJSONFile(
                self.outboundSocksJSONFile, True)

        self.createOutboundSocksPanelSignals()

        return groupBoxOutboundSocksPanel
Exemplo n.º 23
0
    def initWidgets(self):
        # layout
        layout = QVBoxLayout()
        layout.setSpacing(5)
        layout.setContentsMargins(10, 10, 10, 10)
        # layout.setSizeConstraint(QLayout.SetFixedSize)

        # file
        lblFile = QLabel("Export Samples To:")
        self.txtFile = QLineEdit()
        self.txtFile.setMinimumWidth(400)
        self.txtFile.setText(self.exportOptions["Filename"])
        btnFile = QPushButton("...")
        btnFile.setMaximumWidth(
            btnFile.fontMetrics().boundingRect("   ...   ").width())
        btnFile.clicked.connect(self.browseForFile)
        boxFile = QGridLayout()
        boxFile.setContentsMargins(0, 0, 0, 0)
        boxFile.addWidget(lblFile, 0, 0, 1, 2)
        boxFile.addWidget(self.txtFile, 1, 0, 1, 1)
        boxFile.addWidget(btnFile, 1, 1, 1, 1)
        pnlFile = QWidget()
        pnlFile.setLayout(boxFile)
        layout.addWidget(pnlFile, 0, Qt.AlignTop)

        # sample features
        self.lstSampleFeatures = QListView()
        model = QStandardItemModel()
        # optional attributes
        for i in range(0, len(common.SampleFeatures)):
            item = QStandardItem(common.SampleFeatures[i][1])
            item.setEditable(False)
            item.setCheckable(True)
            # date, time, space - are required
            if i < 3:
                item.setCheckState(Qt.Checked)
                item.setEnabled(False)
            # everything else is optional
            elif i in self.exportOptions["Features"]:
                item.setCheckState(Qt.Checked)
            model.appendRow(item)
        self.lstSampleFeatures.setModel(model)
        boxFeatures = QVBoxLayout()
        boxFeatures.addWidget(self.lstSampleFeatures)
        grpAttr = QGroupBox("Sample Features:", self)
        grpAttr.setLayout(boxFeatures)
        layout.addWidget(grpAttr, 1)

        # HDR
        self.chxHDR = QCheckBox()
        boxHDR = QHBoxLayout()
        boxHDR.addWidget(self.chxHDR)
        grpHDR = QGroupBox("HDR", self)
        grpHDR.setLayout(boxHDR)

        # source extension
        self.cbxSourceExt = QComboBox()
        self.cbxSourceExt.setSizeAdjustPolicy(QComboBox.AdjustToContents)
        self.cbxSourceExt.addItems([str(cm.name) for cm in common.SourceExt])
        boxSource = QHBoxLayout()
        boxSource.addWidget(self.cbxSourceExt)
        grpSource = QGroupBox("Source:", self)
        grpSource.setLayout(boxSource)

        # color model
        self.cbxColorModel = QComboBox()
        self.cbxColorModel.setSizeAdjustPolicy(QComboBox.AdjustToContents)
        self.cbxColorModel.addItems([str(cm.name) for cm in common.ColorModel])
        boxColor = QHBoxLayout()
        boxColor.addWidget(self.cbxColorModel)
        grpColor = QGroupBox("Color:", self)
        grpColor.setLayout(boxColor)

        # pixel region
        self.chxPixRegCalc = QCheckBox()
        self.chxPixRegCalc.stateChanged.connect(self.pixRegCalcChanged)
        lblPixRegCalc = QLabel("compute")
        self.cbxPixRegFixed = QComboBox()
        self.cbxPixRegFixed.setSizeAdjustPolicy(QComboBox.AdjustToContents)
        # self.cbxPixelRegion.currentIndexChanged.connect(self.pixelRegionEntered)
        self.cbxPixRegFixed.addItems([
            str(x)
            for x in range(common.PixelRegionMin, common.PixelRegionMax + 1, 2)
        ])
        lblPixRegFixed = QLabel("fixed")
        boxPixelRegion = QHBoxLayout()
        boxPixelRegion.addWidget(self.chxPixRegCalc)
        boxPixelRegion.addWidget(lblPixRegCalc)
        boxPixelRegion.addWidget(self.cbxPixRegFixed)
        boxPixelRegion.addWidget(lblPixRegFixed)
        grpPixelRegion = QGroupBox("Pixel Region:", self)
        grpPixelRegion.setLayout(boxPixelRegion)

        # pixel weighting
        self.cbxPixelWeighting = QComboBox()
        self.cbxPixelWeighting.setSizeAdjustPolicy(QComboBox.AdjustToContents)
        self.cbxPixelWeighting.addItems(
            [str(pw.name) for pw in common.PixelWeighting])
        boxPixelWeighting = QHBoxLayout()
        boxPixelWeighting.addWidget(self.cbxPixelWeighting)
        grpPixelWeighting = QGroupBox("Pixel Weighting:", self)
        grpPixelWeighting.setLayout(boxPixelWeighting)

        # add all pixel options to window
        boxPixelOptions = QHBoxLayout()
        boxPixelOptions.addWidget(grpHDR, 0, Qt.AlignLeft)
        boxPixelOptions.addWidget(grpSource, 0, Qt.AlignLeft)
        boxPixelOptions.addWidget(grpColor, 0, Qt.AlignLeft)
        boxPixelOptions.addWidget(grpPixelRegion, 0, Qt.AlignLeft)
        boxPixelOptions.addWidget(grpPixelWeighting, 1)
        boxPixelOptions.setContentsMargins(0, 0, 0, 0)
        pnlPixelOptions = QWidget()
        pnlPixelOptions.setLayout(boxPixelOptions)
        layout.addWidget(pnlPixelOptions, 0, Qt.AlignTop)

        # coordinate system
        self.cbxCoords = QComboBox()
        self.cbxCoords.setSizeAdjustPolicy(QComboBox.AdjustToContents)
        self.cbxCoords.addItems([str(c.name) for c in common.CoordSystem])
        boxCoords = QHBoxLayout()
        boxCoords.addWidget(self.cbxCoords)
        grpCoords = QGroupBox("Coordinates:", self)
        grpCoords.setLayout(boxCoords)

        # spectrum range
        self.txtRangeStart = QLineEdit()
        self.txtRangeStart.setFixedWidth(
            self.txtRangeStart.fontMetrics().width('0') * 8)
        self.txtRangeStart.setValidator(
            QIntValidator(common.SpectrumRange[0], common.SpectrumRange[1]))
        self.txtRangeStart.setEnabled(False)
        self.txtRangeEnd = QLineEdit()
        self.txtRangeEnd.setFixedWidth(
            self.txtRangeEnd.fontMetrics().width('0') * 8)
        self.txtRangeEnd.setValidator(
            QIntValidator(common.SpectrumRange[0], common.SpectrumRange[1]))
        boxRange = QHBoxLayout()
        boxRange.addWidget(self.txtRangeStart)
        boxRange.addWidget(QLabel("to"))
        boxRange.addWidget(self.txtRangeEnd)
        boxRange.addWidget(QLabel("(nm)"))
        grpRange = QGroupBox("Spectral Range:", self)
        grpRange.setLayout(boxRange)

        # spectrum resolution
        self.txtResolution = QLineEdit()
        self.txtResolution.setValidator(QIntValidator(1, 100))
        boxResolution = QHBoxLayout()
        boxResolution.addWidget(self.txtResolution)
        boxResolution.addWidget(QLabel("(nm)"), 0, Qt.AlignRight)
        grpResolution = QGroupBox("Spectral Resolution:", self)
        grpResolution.setLayout(boxResolution)

        # add final row of options
        boxStuffOptions = QHBoxLayout()
        boxStuffOptions.addWidget(grpCoords, 0, Qt.AlignLeft)
        boxStuffOptions.addWidget(grpRange, 0, Qt.AlignLeft)
        boxStuffOptions.addWidget(grpResolution, 1)
        boxStuffOptions.setContentsMargins(0, 0, 0, 0)
        pnlStuffOptions = QWidget()
        pnlStuffOptions.setLayout(boxStuffOptions)
        layout.addWidget(pnlStuffOptions, 0, Qt.AlignTop)

        # accept/decline buttons
        boxButtons = QDialogButtonBox()
        btn = boxButtons.addButton("Cancel", QDialogButtonBox.RejectRole)
        btn.clicked.connect(self.reject)
        btn = boxButtons.addButton("Save", QDialogButtonBox.AcceptRole)
        btn.clicked.connect(self.savePressed)
        layout.addWidget(boxButtons, 0, Qt.AlignBottom | Qt.AlignRight)

        self.setLayout(layout)
Exemplo n.º 24
0
def createMailModel(parent):
    model = QStandardItemModel(0, 3, parent)

    model.setHeaderData(0, Qt.Horizontal, "Subject")
    model.setHeaderData(1, Qt.Horizontal, "Sender")
    model.setHeaderData(2, Qt.Horizontal, "Date")

    addMail(
        model,
        "Happy New Year!",
        "Grace K. <*****@*****.**>",
        QDateTime(QDate(2006, 12, 31), QTime(17, 3)),
    )
    addMail(
        model,
        "Radically new concept",
        "Grace K. <*****@*****.**>",
        QDateTime(QDate(2006, 12, 22), QTime(9, 44)),
    )
    addMail(
        model,
        "Accounts",
        "*****@*****.**",
        QDateTime(QDate(2006, 12, 31), QTime(12, 50)),
    )
    addMail(
        model,
        "Expenses",
        "Joe Bloggs <*****@*****.**>",
        QDateTime(QDate(2006, 12, 25), QTime(11, 39)),
    )
    addMail(
        model,
        "Re: Expenses",
        "Andy <*****@*****.**>",
        QDateTime(QDate(2007, 1, 2), QTime(16, 5)),
    )
    addMail(
        model,
        "Re: Accounts",
        "Joe Bloggs <*****@*****.**>",
        QDateTime(QDate(2007, 1, 3), QTime(14, 18)),
    )
    addMail(
        model,
        "Re: Accounts",
        "Andy <*****@*****.**>",
        QDateTime(QDate(2007, 1, 3), QTime(14, 26)),
    )
    addMail(
        model,
        "Sports",
        "Linda Smith <*****@*****.**>",
        QDateTime(QDate(2007, 1, 5), QTime(11, 33)),
    )
    addMail(
        model,
        "AW: Sports",
        "Rolf Newschweinstein <*****@*****.**>",
        QDateTime(QDate(2007, 1, 5), QTime(12, 0)),
    )
    addMail(
        model,
        "RE: Sports",
        "Petra Schmidt <*****@*****.**>",
        QDateTime(QDate(2007, 1, 5), QTime(12, 1)),
    )

    return model
Exemplo n.º 25
0
    def __init__(self, parent=None):
        super().__init__(parent)

        # Window creation
        bg = self.palette()
        bg.setColor(QPalette.Window, Qt.white)
        self.setPalette(bg)
        self.setFixedSize(340, 450)
        self.setWindowTitle("HPLC a Excel")
        self.setAcceptDrops(True)

        # Button creation
        self.btn_load_files = QPushButton("Cargar archivos", self)
        self.btn_export = QPushButton("Exportar todos a Excel", self)
        self.btn_remove_checked = QPushButton("Descartar seleccionados", self)
        self.btn_config = QPushButton("", self)
        self.btn_config.setIcon(QIcon("ui/gear.png"))
        self.btn_config.setMaximumWidth(30)
        self.btn_config.setToolTip("Configuración (Ctrl + K)")
        self.btn_config.setShortcut(Qt.CTRL + Qt.Key_K)

        # Label creation
        self.copyright = QLabel("DIQB UC - Víctor Tirreau - 2018", self)
        self.copyright.setStyleSheet("color: #444444;")
        self.copyright.setAlignment(Qt.AlignCenter)

        # Button connection
        self.btn_load_files.clicked.connect(self.get_files)
        self.btn_remove_checked.clicked.connect(self.remove_checked)
        self.btn_export.clicked.connect(self.open_export_dialog)
        self.btn_config.clicked.connect(self.open_config_dialog)

        # Signal connection
        self.back = backend.PDFToExcel(self)
        self.add_path_signal.connect(self.back.add_paths)
        self.remove_path_signal.connect(self.back.remove_paths)
        self.add_drag_n_drop_path_signal.connect(
            self.back.add_paths_drag_n_drop)
        self.export_all_signal.connect(self.back.export_pdf_to_excel)

        # List
        self.list = QListView(self)
        self.model = QStandardItemModel(self.list)
        self.list.setModel(self.model)

        # Layout
        top_h_box = QHBoxLayout()
        top_h_box.addWidget(self.btn_load_files)
        top_h_box.addWidget(self.btn_config)
        lower_h_box = QHBoxLayout()
        lower_h_box.addWidget(self.btn_remove_checked)
        lower_h_box.addStretch(10)
        lower_h_box.addWidget(self.btn_export)
        v_box = QVBoxLayout()
        v_box.addLayout(top_h_box)
        v_box.addWidget(self.list)
        v_box.addLayout(lower_h_box)
        v_box.addWidget(self.copyright)
        h_box = QHBoxLayout()
        h_box.addLayout(v_box)
        self.setLayout(h_box)

        # Config
        self.include_od = False
Exemplo n.º 26
0
    def __init__(self, persepolis_setting):
        super().__init__()
# MainWindow
        self.persepolis_setting = persepolis_setting

        icons = ':/' + \
            str(self.persepolis_setting.value('settings/icons')) + '/'

        self.setWindowTitle("Persepolis Download Manager")
        self.setWindowIcon(QIcon.fromTheme('persepolis', QIcon(':/icon.svg')))

        self.centralwidget = QWidget(self)
        self.verticalLayout = QVBoxLayout(self.centralwidget)
# enable drag and drop
        self.setAcceptDrops(True)
# frame
        self.frame = QFrame(self.centralwidget)

# download_table_horizontalLayout
        download_table_horizontalLayout = QHBoxLayout()
        tabels_splitter = QSplitter(Qt.Horizontal)
# category_tree
        self.category_tree_qwidget = QWidget(self)
        category_tree_verticalLayout = QVBoxLayout()
        self.category_tree = CategoryTreeView(self)
        category_tree_verticalLayout.addWidget(self.category_tree)

        self.category_tree_model = QStandardItemModel()
        self.category_tree.setModel(self.category_tree_model)
        category_table_header = ['Category']
        self.category_tree_model.setHorizontalHeaderLabels(
            category_table_header)
        self.category_tree.header().setStretchLastSection(True)

        # inserting items in category_tree
        for item in ['All Downloads', 'Single Downloads']:
            qstandarditem = QStandardItem(item)
            font = QtGui.QFont()
            font.setBold(True)
            qstandarditem.setFont(font)
            qstandarditem.setEditable(False)
            self.category_tree_model.appendRow(qstandarditem)

# queue_panel
        self.queue_panel_widget = QWidget(self)

        queue_panel_verticalLayout_main = QVBoxLayout(self.queue_panel_widget)
# queue_panel_show_button
        self.queue_panel_show_button = QPushButton(self)

        queue_panel_verticalLayout_main.addWidget(self.queue_panel_show_button)
# queue_panel_widget_frame
        self.queue_panel_widget_frame = QFrame(self)
        self.queue_panel_widget_frame.setFrameShape(QFrame.StyledPanel)
        self.queue_panel_widget_frame.setFrameShadow(QFrame.Raised)

        queue_panel_verticalLayout_main.addWidget(
            self.queue_panel_widget_frame)

        queue_panel_verticalLayout = QVBoxLayout(self.queue_panel_widget_frame)
        queue_panel_verticalLayout_main.setContentsMargins(50, -1, 50, -1)

# start_end_frame
        self.start_end_frame = QFrame(self)

# start time
        start_verticalLayout = QVBoxLayout(self.start_end_frame)
        self.start_checkBox = QCheckBox(self)
        start_verticalLayout.addWidget(self.start_checkBox)

        self.start_frame = QFrame(self)
        self.start_frame.setFrameShape(QFrame.StyledPanel)
        self.start_frame.setFrameShadow(QFrame.Raised)

        start_frame_verticalLayout = QVBoxLayout(self.start_frame)
        horizontalLayout_5 = QHBoxLayout()

        self.start_hour_spinBox = QSpinBox(self.start_frame)
        self.start_hour_spinBox.setMaximum(23)
        horizontalLayout_5.addWidget(self.start_hour_spinBox)

        self.start_label = QLabel(self.start_frame)
        horizontalLayout_5.addWidget(self.start_label)

        self.start_minute_spinBox = QSpinBox(self.start_frame)
        self.start_minute_spinBox.setMaximum(59)
        horizontalLayout_5.addWidget(self.start_minute_spinBox)

        start_frame_verticalLayout.addLayout(horizontalLayout_5)

        start_verticalLayout.addWidget(self.start_frame)
# end time

        self.end_checkBox = QCheckBox(self)
        start_verticalLayout.addWidget(self.end_checkBox)

        self.end_frame = QFrame(self)
        self.end_frame.setFrameShape(QFrame.StyledPanel)
        self.end_frame.setFrameShadow(QFrame.Raised)

        end_frame_verticalLayout = QVBoxLayout(self.end_frame)
        horizontalLayout_6 = QHBoxLayout()

        self.end_hour_spinBox = QSpinBox(self.end_frame)
        self.end_hour_spinBox.setMaximum(23)
        horizontalLayout_6.addWidget(self.end_hour_spinBox)

        self.end_label = QLabel(self.end_frame)
        horizontalLayout_6.addWidget(self.end_label)

        self.end_minute_spinBox = QSpinBox(self.end_frame)
        self.end_minute_spinBox.setMaximum(59)
        horizontalLayout_6.addWidget(self.end_minute_spinBox)

        end_frame_verticalLayout.addLayout(horizontalLayout_6)

        start_verticalLayout.addWidget(self.end_frame)

        self.reverse_checkBox = QCheckBox(self)
        start_verticalLayout.addWidget(self.reverse_checkBox)

        queue_panel_verticalLayout.addWidget(self.start_end_frame)

# limit_after_frame
        self.limit_after_frame = QFrame(self)
# limit_checkBox
        limit_verticalLayout = QVBoxLayout(self.limit_after_frame)
        self.limit_checkBox = QCheckBox(self)
        limit_verticalLayout.addWidget(self.limit_checkBox)
# limit_frame
        self.limit_frame = QFrame(self)
        self.limit_frame.setFrameShape(QFrame.StyledPanel)
        self.limit_frame.setFrameShadow(QFrame.Raised)
        limit_verticalLayout.addWidget(self.limit_frame)

        limit_frame_verticalLayout = QVBoxLayout(self.limit_frame)
# limit_spinBox
        limit_frame_horizontalLayout = QHBoxLayout()
        self.limit_spinBox = QSpinBox(self)
        self.limit_spinBox.setMinimum(1)
        self.limit_spinBox.setMaximum(1023)
        limit_frame_horizontalLayout.addWidget(self.limit_spinBox)
# limit_comboBox
        self.limit_comboBox = QComboBox(self)
        self.limit_comboBox.addItem("")
        self.limit_comboBox.addItem("")
        limit_frame_horizontalLayout.addWidget(self.limit_comboBox)
        limit_frame_verticalLayout.addLayout(limit_frame_horizontalLayout)
# limit_pushButton
        self.limit_pushButton = QPushButton(self)
        limit_frame_verticalLayout.addWidget(self.limit_pushButton)

# after_checkBox
        self.after_checkBox = QtWidgets.QCheckBox(self)
        limit_verticalLayout.addWidget(self.after_checkBox)
# after_frame
        self.after_frame = QtWidgets.QFrame(self)
        self.after_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.after_frame.setFrameShadow(QtWidgets.QFrame.Raised)
        limit_verticalLayout.addWidget(self.after_frame)

        after_frame_verticalLayout = QVBoxLayout(self.after_frame)
# after_comboBox
        self.after_comboBox = QComboBox(self)
        self.after_comboBox.addItem("")

        after_frame_verticalLayout.addWidget(self.after_comboBox)
# after_pushButton
        self.after_pushButton = QPushButton(self)
        after_frame_verticalLayout.addWidget(self.after_pushButton)

        queue_panel_verticalLayout.addWidget(self.limit_after_frame)
        category_tree_verticalLayout.addWidget(self.queue_panel_widget)

# keep_awake_checkBox
        self.keep_awake_checkBox = QCheckBox(self)
        queue_panel_verticalLayout.addWidget(self.keep_awake_checkBox)

        self.category_tree_qwidget.setLayout(category_tree_verticalLayout)
        tabels_splitter.addWidget(self.category_tree_qwidget)

# download table widget
        self.download_table_content_widget = QWidget(self)
        download_table_content_widget_verticalLayout = QVBoxLayout(
            self.download_table_content_widget)

        self.download_table = DownloadTableWidget(self)
        download_table_content_widget_verticalLayout.addWidget(
            self.download_table)
        tabels_splitter.addWidget(self.download_table_content_widget)

        self.download_table.setColumnCount(13)
        self.download_table.setSelectionBehavior(QAbstractItemView.SelectRows)
        self.download_table.setEditTriggers(QAbstractItemView.NoEditTriggers)
        self.download_table.verticalHeader().hide()
#         self.download_table.setSortingEnabled(True)

# hide gid and download dictioanry section
        self.download_table.setColumnHidden(8, True)
        self.download_table.setColumnHidden(9, True)

        download_table_header = ['File Name', 'Status', 'Size', 'Downloaded', 'Percentage', 'Connections',
                                 'Transfer rate', 'Estimate time left', 'Gid', 'Info', 'First try date', 'Last try date', 'Category']
        self.download_table.setHorizontalHeaderLabels(download_table_header)

# fixing the size of download_table when window is Maximized!
        self.download_table.horizontalHeader().setSectionResizeMode(0)
        self.download_table.horizontalHeader().setStretchLastSection(True)

        tabels_splitter.setStretchFactor(0, 3) # category_tree width
        tabels_splitter.setStretchFactor(1, 10)  # ratio of tables's width
        download_table_horizontalLayout.addWidget(tabels_splitter)
        self.frame.setLayout(download_table_horizontalLayout)
        self.verticalLayout.addWidget(self.frame)
        self.setCentralWidget(self.centralwidget)

# menubar
        self.menubar = QMenuBar(self)
        self.menubar.setGeometry(QRect(0, 0, 600, 24))
        self.setMenuBar(self.menubar)
        fileMenu = self.menubar.addMenu('&File')
        editMenu = self.menubar.addMenu('&Edit')
        viewMenu = self.menubar.addMenu('&View')
        downloadMenu = self.menubar.addMenu('&Download')
        queueMenu = self.menubar.addMenu('&Queue')
        helpMenu = self.menubar.addMenu('&Help')


# viewMenu submenus
        sortMenu = viewMenu.addMenu('Sort by')
# statusbar
        self.statusbar = QStatusBar(self)
        self.setStatusBar(self.statusbar)
        self.statusbar.showMessage("Persepolis Download Manager")
# toolBar
        self.toolBar2 = QToolBar(self)
        self.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar2)
        self.toolBar2.setWindowTitle('Menu')
        self.toolBar2.setIconSize(QSize(38, 38))
        self.toolBar2.setFloatable(False)
        self.toolBar2.setMovable(False)

        self.toolBar = QToolBar(self)
        self.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar)
        self.toolBar.setWindowTitle('Toolbar')
        self.toolBar.setIconSize(QSize(38, 38))
        self.toolBar.setFloatable(False)
        self.toolBar.setMovable(False)


#toolBar and menubar and actions
        self.stopAllAction = QAction(QIcon(icons + 'stop_all'), 'Stop all active downloads',
                                     self, statusTip='Stop all active downloads', triggered=self.stopAllDownloads)
        downloadMenu.addAction(self.stopAllAction)

        self.sort_file_name_Action = QAction(
            'File name', self, triggered=self.sortByName)
        sortMenu.addAction(self.sort_file_name_Action)

        self.sort_file_size_Action = QAction(
            'File size', self, triggered=self.sortBySize)
        sortMenu.addAction(self.sort_file_size_Action)

        self.sort_first_try_date_Action = QAction(
            'First try date', self, triggered=self.sortByFirstTry)
        sortMenu.addAction(self.sort_first_try_date_Action)

        self.sort_last_try_date_Action = QAction(
            'Last try date', self, triggered=self.sortByLastTry)
        sortMenu.addAction(self.sort_last_try_date_Action)

        self.sort_download_status_Action = QAction(
            'Download status', self, triggered=self.sortByStatus)
        sortMenu.addAction(self.sort_download_status_Action)

        self.trayAction = QAction('Show system tray icon', self,
                                  statusTip="Show/Hide system tray icon", triggered=self.showTray)
        self.trayAction.setCheckable(True)
        viewMenu.addAction(self.trayAction)

        self.showMenuBarAction = QAction(
            'Show menubar', self, statusTip='Show menubar', triggered=self.showMenuBar)
        self.showMenuBarAction.setCheckable(True)
        viewMenu.addAction(self.showMenuBarAction)

        self.showSidePanelAction = QAction(
            'Show side panel', self, statusTip='Show side panel', triggered=self.showSidePanel)
        self.showSidePanelAction.setCheckable(True)
        viewMenu.addAction(self.showSidePanelAction)

        self.minimizeAction = QAction(QIcon(icons + 'minimize'), 'Minimize to system tray', self,
                                      shortcut="Ctrl+W", statusTip="Minimize to system tray", triggered=self.minMaxTray)
        viewMenu.addAction(self.minimizeAction)

        self.addlinkAction = QAction(QIcon(icons + 'add'), 'Add New Download Link', self,
                                     shortcut="Ctrl+N", statusTip="Add New Download Link", triggered=self.addLinkButtonPressed)
        fileMenu.addAction(self.addlinkAction)

        self.addtextfileAction = QAction(QIcon(icons + 'file'), 'Import links from text file', self,
                                         statusTip='Create a Text file and put links in it.line by line!', triggered=self.importText)
        fileMenu.addAction(self.addtextfileAction)

        self.resumeAction = QAction(QIcon(icons + 'play'), 'Resume Download', self,
                                    shortcut="Ctrl+R", statusTip="Resume Download", triggered=self.resumeButtonPressed)
        downloadMenu.addAction(self.resumeAction)

        self.pauseAction = QAction(QIcon(icons + 'pause'), 'Pause Download', self,
                                   shortcut="Ctrl+C", statusTip="Pause Download", triggered=self.pauseButtonPressed)
        downloadMenu.addAction(self.pauseAction)

        self.stopAction = QAction(QIcon(icons + 'stop'), 'Stop Download', self, shortcut="Ctrl+S",
                                  statusTip="Stop/Cancel Download", triggered=self.stopButtonPressed)
        downloadMenu.addAction(self.stopAction)

        self.removeAction = QAction(QIcon(icons + 'remove'), 'Remove Download', self,
                                    shortcut="Ctrl+D", statusTip="Remove Download", triggered=self.removeButtonPressed)
        downloadMenu.addAction(self.removeAction)

        self.propertiesAction = QAction(QIcon(icons + 'setting'), 'Properties', self,
                                        shortcut="Ctrl+P", statusTip="Properties", triggered=self.propertiesButtonPressed)
        downloadMenu.addAction(self.propertiesAction)

        self.progressAction = QAction(QIcon(icons + 'window'), 'Progress', self,
                                      shortcut="Ctrl+Z", statusTip="Progress", triggered=self.progressButtonPressed)
        downloadMenu.addAction(self.progressAction)

        self.openFileAction = QAction(QIcon(
            icons + 'file'), 'Open file', self, statusTip='Open file', triggered=self.openFile)
        fileMenu.addAction(self.openFileAction)

        self.openDownloadFolderAction = QAction(QIcon(
            icons + 'folder'), 'Open download folder', self, statusTip='Open download folder', triggered=self.openDownloadFolder)
        fileMenu.addAction(self.openDownloadFolderAction)

        self.deleteFileAction = QAction(QIcon(
            icons + 'trash'), 'Delete file', self, statusTip='Delete file', triggered=self.deleteFile)
        fileMenu.addAction(self.deleteFileAction)

        self.openDefaultDownloadFolderAction = QAction(QIcon(
            icons + 'folder'), 'Open default download folder', self, statusTip='Open default download folder', triggered=self.openDefaultDownloadFolder)
        fileMenu.addAction(self.openDefaultDownloadFolderAction)

        self.exitAction = QAction(QIcon(icons + 'exit'), 'Exit', self,
                                  shortcut="Ctrl+Q", statusTip="Exit", triggered=self.closeEvent)
        fileMenu.addAction(self.exitAction)

        self.selectAction = QAction('Select multiple items ', self,
                                    statusTip='Select multiple items', triggered=self.selectDownloads)
        self.selectAction.setCheckable(True)
        editMenu.addAction(self.selectAction)

        self.selectAllAction = QAction(QIcon(
            icons + 'select_all'), 'Select All', self, statusTip='Select All', triggered=self.selectAll)
        editMenu.addAction(self.selectAllAction)
        self.selectAllAction.setEnabled(False)

        self.removeSelectedAction = QAction(QIcon(icons + 'multi_remove'), 'Remove selected downloads form list',
                                            self, statusTip='Remove selected downloads form list', triggered=self.removeSelected)
        editMenu.addAction(self.removeSelectedAction)
        self.removeSelectedAction.setEnabled(False)

        self.deleteSelectedAction = QAction(QIcon(icons + 'multi_trash'), 'Delete selected download files',
                                            self, statusTip='Delete selected download files', triggered=self.deleteSelected)
        editMenu.addAction(self.deleteSelectedAction)
        self.deleteSelectedAction.setEnabled(False)

        self.createQueueAction = QAction(QIcon(icons + 'add_queue'), 'Create new queue',
                                         self, statusTip='Create new download queue', triggered=self.createQueue)
        queueMenu.addAction(self.createQueueAction)

        self.removeQueueAction = QAction(QIcon(icons + 'remove_queue'), 'Remove this queue',
                                         self, statusTip='Remove this queue', triggered=self.removeQueue)
        queueMenu.addAction(self.removeQueueAction)

        self.startQueueAction = QAction(QIcon(
            icons + 'start_queue'), 'Start this queue', self, statusTip='Start this queue', triggered=self.startQueue)
        queueMenu.addAction(self.startQueueAction)

        self.stopQueueAction = QAction(QIcon(
            icons + 'stop_queue'), 'Stop this queue', self, statusTip='Stop this queue', triggered=self.stopQueue)
        queueMenu.addAction(self.stopQueueAction)

        self.moveUpAction = QAction(QIcon(icons + 'up'), 'Move up this item', self,
                                    statusTip='Move currently selected item up by one row', triggered=self.moveUp)
        queueMenu.addAction(self.moveUpAction)

        self.moveDownAction = QAction(QIcon(icons + 'down'), 'Move down this item', self,
                                      statusTip='Move currently selected item down by one row', triggered=self.moveDown)
        queueMenu.addAction(self.moveDownAction)

        self.moveUpSelectedAction = QAction(QIcon(icons + 'multi_up'), 'Move up selected items', self,
                                            statusTip='Move currently selected items up by one row', triggered=self.moveUpSelected)
        queueMenu.addAction(self.moveUpSelectedAction)

        self.moveDownSelectedAction = QAction(QIcon(icons + 'multi_down'), 'Move down selected items',
                                              self, statusTip='Move currently selected items down by one row', triggered=self.moveDownSelected)
        queueMenu.addAction(self.moveDownSelectedAction)

        self.preferencesAction = QAction(QIcon(icons + 'preferences'), 'Preferences',
                                         self, statusTip='Preferences', triggered=self.openPreferences, menuRole=5)
        editMenu.addAction(self.preferencesAction)

        self.aboutAction = QAction(QIcon(
            icons + 'about'), 'About', self, statusTip='About', triggered=self.openAbout, menuRole=4)
        helpMenu.addAction(self.aboutAction)

        self.issueAction = QAction(QIcon(icons + 'about'), 'Report an issue',
                                   self, statusTip='Report an issue', triggered=self.reportIssue)
        helpMenu.addAction(self.issueAction)

        self.updateAction = QAction(QIcon(icons + 'about'), 'Check for newer version',
                                    self, statusTip='Check for newer release', triggered=self.newUpdate)
        helpMenu.addAction(self.updateAction)

        self.browserAction = QAction(QIcon(icons + 'browser'), 'Browser integration',
                                     self, statusTip='Browser inegration', triggered=self.browserIntegration)
        helpMenu.addAction(self.browserAction)

        self.helpAction = QAction(QIcon(icons + 'about'), 'Help',
                                   self, statusTip='Help', triggered=self.persepolisHelp)
        helpMenu.addAction(self.helpAction)


        self.qmenu = MenuWidget(self)

        self.toolBar2.addWidget(self.qmenu)

# labels
        self.queue_panel_show_button.setText("Hide options")
        self.start_checkBox.setText("Start Time")
        self.start_label.setText(":")

        self.end_checkBox.setText("End Time")
        self.end_label.setText(":")

        self.reverse_checkBox.setText("Download bottom of\n the list first")

        self.limit_checkBox.setText("Limit Speed")
        self.limit_comboBox.setItemText(0,  "KB/S")
        self.limit_comboBox.setItemText(1,  "MB/S")
        self.limit_pushButton.setText("Apply")

        self.after_checkBox.setText("After download")
        self.after_comboBox.setItemText(0,  "Shut Down")

        self.keep_awake_checkBox.setText("Keep system awake!")
        self.keep_awake_checkBox.setToolTip(
            "<html><head/><body><p>This option is preventing system from going to sleep.\
            This is necessary if your power manager is suspending system automatically. </p></body></html>")
 
        self.after_pushButton.setText("Apply")
Exemplo n.º 27
0
 def findEnrolleeClick(self):
     model = QStandardItemModel(self.findEnrolleeList)
     for i in Enrollee.findBySurname(self.findEnrolleeInput.text()):
         item = QStandardItem(i.to_string())
         model.appendRow(item)
     self.findEnrolleeList.setModel(model)
    def analyze(self):
        ui_Runner.parse = LR_Parser(ui_Runner.c)
        ui_Runner.parse.parse3(ui_Runner.r)
        SELECT = ui_Runner.parse.CFG.SELECT
        SELECT_model = QStandardItemModel(len(SELECT), 50)
        SELECT_model.setHorizontalHeaderLabels(
            list(map(lambda x: str(x), list(range(1, 51)))))
        count = -1
        for (key, value) in SELECT.items():
            count += 1
            c = 0
            SELECT_model.setItem(count, c, QStandardItem(str(key)))
            for t in value:
                c += 1
                item = QStandardItem(t.s)
                SELECT_model.setItem(count, c, item)
        ui.tableView_SELECT.setModel(SELECT_model)

        FOLLOW = ui_Runner.parse.CFG.FOLLOW
        FOLLOW_model = QStandardItemModel(len(FOLLOW), 50)
        FOLLOW_model.setHorizontalHeaderLabels(
            list(map(lambda x: str(x), list(range(1, 51)))))
        count = -1
        for (key, value) in FOLLOW.items():
            count += 1
            c = 0
            FOLLOW_model.setItem(count, c, QStandardItem(str(key)))
            for t in value:
                c += 1
                item = QStandardItem(t.s)
                FOLLOW_model.setItem(count, c, item)
        ui.tableView_FOLLOW.setModel(FOLLOW_model)

        FIRST = ui_Runner.parse.CFG.FIRST
        FIRST_model = QStandardItemModel(len(FIRST), 50)
        FIRST_model.setHorizontalHeaderLabels(
            list(map(lambda x: str(x), list(range(1, 51)))))
        count = -1
        for (key, value) in FIRST.items():
            count += 1
            c = 0
            FIRST_model.setItem(count, c, QStandardItem(str(key)))
            for t in value:
                c += 1
                item = QStandardItem(t.s)
                FIRST_model.setItem(count, c, item)
        ui.tableView_FIRST.setModel(FIRST_model)

        table = ui_Runner.parse.PDA.table_LR1
        nt_idx, t_idx = {}, {}
        for (key, value) in table.nt.items():
            nt_idx[value] = key
        for (key, value) in table.t.items():
            t_idx[value] = key
        ntlist, tlist = [], []
        for idx in range(len(nt_idx)):
            ntlist.append(nt_idx[idx])
        for idx in range(len(t_idx)):
            tlist.append(t_idx[idx])
        ACTION = table.ACTION
        GOTO = table.GOTO
        ACTION_model = QStandardItemModel(len(ACTION), len(ACTION[0]))
        ACTION_model.setHorizontalHeaderLabels(
            list(map(lambda x: str(x), tlist)))
        GOTO_model = QStandardItemModel(len(GOTO), len(GOTO[0]))
        GOTO_model.setHorizontalHeaderLabels(
            list(map(lambda x: str(x), ntlist)))
        for i in range(len(ACTION)):
            for j in range(len(ACTION[0])):
                if len(ACTION[i][j]) == 0:
                    continue
                ACTION_model.setItem(i, j, QStandardItem(str(ACTION[i][j])))
        for i in range(len(GOTO)):
            for j in range(len(GOTO[0])):
                if len(GOTO[i][j]) == 0:
                    continue
                GOTO_model.setItem(i, j, QStandardItem(str(GOTO[i][j][0][1])))
        ui.tableView_GOTO.setModel(GOTO_model)
        ui.tableView_Action.setModel(ACTION_model)
        ui.plainTextEdit_SysOutput.setPlainText(str(ui_Runner.parse))
        errors = []
        for es in ui_Runner.parse.error:
            errors.append('Error at Line ' + str(es[-1]) + ' : with token <' +
                          str(es[0]) + '-' + str(es[1]) + '>')
        ui.plainTextEdit_Error.setPlainText('\n'.join(errors))
        print('fin')
Exemplo n.º 29
0
    def __init__(self, parent=None):  # pylint: disable=too-many-statements
        super(HooksPanel, self).__init__(parent=parent)

        self._app_window = parent

        if self._app_window.dwarf is None:
            print('HooksPanel created before Dwarf exists')
            return

        # connect to dwarf
        self._app_window.dwarf.onAddJavaHook.connect(self._on_add_hook)
        self._app_window.dwarf.onAddNativeHook.connect(self._on_add_hook)
        self._app_window.dwarf.onAddNativeOnLoadHook.connect(self._on_add_hook)
        self._app_window.dwarf.onAddJavaOnLoadHook.connect(self._on_add_hook)
        self._app_window.dwarf.onHitNativeOnLoad.connect(self._on_hit_native_on_load)
        self._app_window.dwarf.onHitJavaOnLoad.connect(self._on_hit_java_on_load)
        self._app_window.dwarf.onDeleteHook.connect(self._on_hook_deleted)

        self._hooks_list = DwarfListView()
        self._hooks_list.doubleClicked.connect(self._on_dblclicked)
        self._hooks_list.setContextMenuPolicy(Qt.CustomContextMenu)
        self._hooks_list.customContextMenuRequested.connect(self._on_context_menu)
        self._hooks_model = QStandardItemModel(0, 5)

        self._hooks_model.setHeaderData(0, Qt.Horizontal, 'Address')
        self._hooks_model.setHeaderData(1, Qt.Horizontal, 'T')
        self._hooks_model.setHeaderData(1, Qt.Horizontal, Qt.AlignCenter,
                                        Qt.TextAlignmentRole)
        self._hooks_model.setHeaderData(2, Qt.Horizontal, 'Input')
        self._hooks_model.setHeaderData(3, Qt.Horizontal, '{}')
        self._hooks_model.setHeaderData(3, Qt.Horizontal, Qt.AlignCenter,
                                        Qt.TextAlignmentRole)
        self._hooks_model.setHeaderData(4, Qt.Horizontal, '<>')
        self._hooks_model.setHeaderData(4, Qt.Horizontal, Qt.AlignCenter,
                                        Qt.TextAlignmentRole)

        self._hooks_list.setModel(self._hooks_model)

        self._hooks_list.header().setStretchLastSection(False)
        self._hooks_list.header().setSectionResizeMode(
            0, QHeaderView.ResizeToContents | QHeaderView.Interactive)
        self._hooks_list.header().setSectionResizeMode(
            1, QHeaderView.ResizeToContents)
        self._hooks_list.header().setSectionResizeMode(2, QHeaderView.Stretch)
        self._hooks_list.header().setSectionResizeMode(
            3, QHeaderView.ResizeToContents)
        self._hooks_list.header().setSectionResizeMode(
            4, QHeaderView.ResizeToContents)

        v_box = QVBoxLayout(self)
        v_box.setContentsMargins(0, 0, 0, 0)
        v_box.addWidget(self._hooks_list)
        #header = QHeaderView(Qt.Horizontal, self)

        h_box = QHBoxLayout()
        h_box.setContentsMargins(5, 2, 5, 5)
        self.btn1 = QPushButton(QIcon(utils.resource_path('assets/icons/plus.svg')), '')
        self.btn1.setFixedSize(20, 20)
        self.btn1.clicked.connect(self._on_additem_clicked)
        btn2 = QPushButton(QIcon(utils.resource_path('assets/icons/dash.svg')), '')
        btn2.setFixedSize(20, 20)
        btn2.clicked.connect(self.delete_items)
        btn3 = QPushButton(QIcon(utils.resource_path('assets/icons/trashcan.svg')), '')
        btn3.setFixedSize(20, 20)
        btn3.clicked.connect(self.clear_list)
        h_box.addWidget(self.btn1)
        h_box.addWidget(btn2)
        h_box.addSpacerItem(
            QSpacerItem(0, 0, QSizePolicy.Expanding, QSizePolicy.Preferred))
        h_box.addWidget(btn3)
        # header.setLayout(h_box)
        # header.setFixedHeight(25)
        # v_box.addWidget(header)
        v_box.addLayout(h_box)
        self.setLayout(v_box)

        self._bold_font = QFont(self._hooks_list.font())
        self._bold_font.setBold(True)

        shortcut_addnative = QShortcut(
            QKeySequence(Qt.CTRL + Qt.Key_N), self._app_window,
            self._on_addnative)
        shortcut_addnative.setAutoRepeat(False)

        shortcut_addjava = QShortcut(
            QKeySequence(Qt.CTRL + Qt.Key_J), self._app_window,
            self._on_addjava)
        shortcut_addjava.setAutoRepeat(False)

        shortcut_add_native_on_load = QShortcut(
            QKeySequence(Qt.CTRL + Qt.Key_O), self._app_window,
            self._on_add_native_on_load)
        shortcut_add_native_on_load.setAutoRepeat(False)

        # new menu
        self.new_menu = QMenu('New')
        self.new_menu.addAction('Native', self._on_addnative)
        self.new_menu.addAction('Java', self._on_addjava)
        self.new_menu.addAction('Module loading', self._on_add_native_on_load)
Exemplo n.º 30
0
 def refresh_list_view(self):
     task_name_list = self.task_manager.get_task_name_list()
     model = QStandardItemModel()
     for task_name in task_name_list:
         model.appendRow(QStandardItem(task_name))
     self.ui.task_list_view.setModel(model)