class PlatChooser(QDialog):
    def __init__(self, parent=None):
        super(PlatChooser, self).__init__(parent)
        self.resize(1024, 700)

        self.nm = QNetworkAccessManager()

        self.scriptdir = os.path.dirname(os.path.realpath(__file__))
        self.conn = sqlite3.connect(self.scriptdir + '/../blm.sqlite')
        self.codetable = load_codes(self.conn)
        self.actiontable = load_doc_actions(self.conn)

        top_layout = QHBoxLayout()
        top_layout.setMargin(0)
        self.setLayout(top_layout)

        self.scroller = QScrollArea()
        self.scroller.setFrameStyle(QFrame.NoFrame);
        top_layout.addWidget(self.scroller)
        self.scroller.setWidgetResizable(True)

        scroll_widget = QWidget()
        self.layout = QVBoxLayout()
        scroll_widget.setLayout(self.layout)
        self.scroller.setWidget(scroll_widget)

        self.ignored = set()
        for i in open(self.scriptdir + '/ignored.txt').readlines():
            self.ignored.add(i.strip())

        self.toreview = set()
        for i in open(self.scriptdir + '/to-review.txt').readlines():
            self.toreview.add(i.strip())

    def load(self, plssids):
        for platid, imageid, imagefn in convert_items(self.conn, plssids):
            surveys = get_surveys(self.conn, platid)
            dates = get_dates(self.conn, platid)
            platinfo = get_plat_info(self.conn, platid)

            widget = QWidget()
            layout = QHBoxLayout()
            layout.setMargin(0)
            action_layout = QVBoxLayout()
            action_layout.setMargin(0)
            widget.setLayout(layout)

            image = QLabel()
            image.setMinimumWidth(700)
            image.setPixmap(self.style().standardIcon(QStyle.SP_FileIcon).pixmap(48))
            layout.addWidget(image)

            reply = self.nm.get(QNetworkRequest(QUrl(get_url(imagefn))))
            reply.finished.connect(partial(self.update_image, reply, image))

            btn = QPushButton()
            btn.setText("Choose")
            btn.clicked.connect(partial(self.choose, platid, imageid))
            action_layout.addWidget(btn)

            ignore_check = QCheckBox()
            ignore_check.setText("Ignore")
            ignore_check.setChecked(imageid in self.ignored)
            ignore_check.toggled.connect(partial(self.ignore, imageid))
            action_layout.addWidget(ignore_check)

            review_check = QCheckBox()
            review_check.setText("Review")
            review_check.setChecked(imageid in self.toreview)
            review_check.toggled.connect(partial(self.review, imageid))
            action_layout.addWidget(review_check)

            platid_label = QLabel()
            platid_label.setTextInteractionFlags(Qt.TextSelectableByKeyboard | Qt.TextSelectableByMouse)
            platid_label.setText(str(platid))
            action_layout.addWidget(platid_label)

            imageid_label = QLabel()
            imageid_label.setText(str(imageid))
            imageid_label.setTextInteractionFlags(Qt.TextSelectableByKeyboard | Qt.TextSelectableByMouse)
            action_layout.addWidget(imageid_label)

            dupstatus_label = QLabel()
            dupstatus_label.setText("Duplicate status: " + platinfo['dupstatus'])
            action_layout.addWidget(dupstatus_label)

            for d in dates:
                date_label = QLabel()
                date_label.setText("%s: %s" % (self.actiontable[d[0]], d[1]))
                action_layout.addWidget(date_label)

            for survey in surveys:
                survey_widget = QWidget()
                survey_layout = QHBoxLayout()
                survey_layout.setMargin(0)
                survey_widget.setLayout(survey_layout)

                code_label = QLabel()
                code_label.setText(self.codetable[survey['code']])
                survey_layout.addWidget(code_label)

                browserbtn = QPushButton()
                browserbtn.setText("Show in browser")
                openurl = QUrl("http://www.glorecords.blm.gov/details/survey/default.aspx?dm_id=%d" % (survey['dmid'],))
                browserbtn.clicked.connect(partial(QDesktopServices.openUrl, openurl))
                survey_layout.addWidget(browserbtn)

                action_layout.addWidget(survey_widget)

            action_layout.addStretch()

            action_widget = QWidget()
            action_widget.setLayout(action_layout)
            layout.addWidget(action_widget)

            self.layout.addWidget(widget)

    def choose(self, platid, imageid):
        self.platid = platid
        self.imagefn = imageid
        print("%s %s" % (platid, imageid))
        self.accept()

    def save_sets(self):
        ignored_fd = open(self.scriptdir + '/ignored.txt', 'wt')
        for i in sorted(self.ignored):
            ignored_fd.write(i + '\n')

        review_fd = open(self.scriptdir + '/to-review.txt', 'wt')
        for i in sorted(self.toreview):
            review_fd.write(i + '\n')

    def ignore(self, imageid, checked):
        if checked:
            self.ignored.add(imageid)
        else:
            self.ignored.remove(imageid)
        self.save_sets()

    def review(self, imageid, checked):
        if checked:
            self.toreview.add(imageid)
        else:
            self.toreview.remove(imageid)
        self.save_sets()

    def update_image(self, reply, label):
        img = QPixmap()
        img.loadFromData(reply.readAll())
        label.setPixmap(img)
        reply.deleteLater()
Beispiel #2
0
 def initUI(self):
     u"""Build the dialog box."""
     self.setWindowTitle(_(u'Anki – Download audio'))
     self.setWindowIcon(QIcon(":/icons/anki.png"))
     outer_layout = QVBoxLayout()
     self.setLayout(outer_layout)
     explanation = QLabel(self)
     if len(self.entries_list) > 1:
         explanation.setText(
             _(u'Please select an action for each downloaded file:'))
     else:
         explanation.setText(_(u'Please select what to do with the file:'))
     outer_layout.addWidget(explanation)
     scroll_area = QScrollArea()
     scroll_area.setFrameStyle(QFrame.Plain)
     inner_widget = QFrame(self)
     inner_widget.setSizePolicy(
         QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed))
     layout = QGridLayout()
     inner_widget.setLayout(layout)
     scroll_area.setWidget(inner_widget)
     scroll_area.setWidgetResizable(True)
     outer_layout.addWidget(scroll_area)
     if not self.hide_text:
         text_head_label = QLabel(_(u'<b>Source text</b>'), inner_widget)
         layout.addWidget(text_head_label, 0, 0, 1, 2)
         text_head_label.setToolTip(self.text_help)
     else:
         text_head_label = QLabel(_(u'<b>Source</b>'), inner_widget)
         layout.addWidget(text_head_label, 0, 0)
         text_head_label.setToolTip(self.text_hide_help)
     play_head_label = QLabel(_(u'play'), inner_widget)
     play_head_label.setToolTip(self.play_help)
     layout.addWidget(play_head_label, 0, self.play_column)
     play_old_head_label = QLabel(_(u'play old'), self)
     if not self.hide_text:
         play_old_head_label.setToolTip(self.play_old_help)
     else:
         play_old_head_label.setToolTip(self.play_old_hide_help)
     layout.addWidget(play_old_head_label, 0, self.play_old_column)
     add_head_label = QLabel(_(u'add'), self)
     add_head_label.setToolTip(self.add_help_text_long)
     layout.addWidget(add_head_label, 0, self.add_column)
     keep_head_label = QLabel(_(u'keep'), self)
     keep_head_label.setToolTip(self.keep_help_text_long)
     layout.addWidget(keep_head_label, 0, self.keep_column)
     delete_head_label = QLabel(_(u'delete'), self)
     delete_head_label.setToolTip(self.delete_help_text_long)
     layout.addWidget(delete_head_label, 0, self.delete_column)
     if self.show_skull_and_bones:
         blacklist_head_label = QLabel(_(u'blacklist'), self)
         blacklist_head_label.setToolTip(self.blacklist_help_text_long)
         layout.addWidget(blacklist_head_label, 0, self.blacklist_column)
     rule_label = QLabel('<hr>')
     layout.addWidget(rule_label, 1, 0, 1, self.num_columns)
     self.create_rows(layout, inner_widget)
     dialog_buttons = QDialogButtonBox(self)
     dialog_buttons.addButton(QDialogButtonBox.Cancel)
     dialog_buttons.addButton(QDialogButtonBox.Ok)
     self.connect(
         dialog_buttons, SIGNAL("accepted()"), self, SLOT("accept()"))
     self.connect(
         dialog_buttons, SIGNAL("rejected()"), self, SLOT("reject()"))
     outer_layout.addWidget(dialog_buttons)
Beispiel #3
0
class infoWidget(QWidget):

	__mainLayout = None
	__connLayout = None
	__title  = None
	__layout = None

	__scrollArea   = None
	__scrollWidget = None

	__connGroupBox = None

	__advClientInfoLayout   = None
	__advClientInfoGroupBox = None

	__client = None

	def __init__(self, client, parent = None):
		QWidget.__init__(self, parent)
		self.__client = client
		self.__mainLayout = QVBoxLayout(self)

	def setMainLayout(self, layout, scroll = True):
		if not self.__layout is None:
			self.__mainLayout.removeItem(self.__layout)
		if not self.__scrollArea is None:
			self.__mainLayout.removeWidget(self.__scrollArea)

		self.__layout = None
		self.__scrollArea   = None
		self.__scrollWidget = None

		if not layout is None:
			if scroll:
				self.__scrollWidget = QWidget()
				self.__scrollWidget.setLayout(layout)

				self.__scrollArea = QScrollArea()
				self.__scrollArea.setWidgetResizable(True)
				self.__scrollArea.setWidget(self.__scrollWidget)
				self.__scrollArea.setFrameStyle(QFrame.NoFrame)
				self.__scrollArea.setFrameShadow(QFrame.Plain)

				self.__mainLayout.addWidget(self.__scrollArea)

			else:
				self.__mainLayout.addLayout(layout)
			self.__layout = layout
		else:
			self.__layout = layout

	def setTitle(self, title):
		if not self.__title is None:
			self.__mainLayout.removeWidget(self.__title)
			self.__title.deleteLater()

		if not title is None:
			self.__mainLayout.insertWidget(0, title)
		self.__title = title;

	def __del__(self):
		self.__client = None

	def client(self):
		return self.__client