def setGallery(self, gallery): "To be used for when editing a gallery" self.gallery = gallery self.url_edit.setText(gallery.link) self.title_edit.setText(gallery.title) self.author_edit.setText(gallery.artist) self.descr_edit.setText(gallery.info) self.tags_edit.setText(utils.tag_to_string(gallery.tags)) self._find_combobox_match(self.lang_box, gallery.language, 2) self._find_combobox_match(self.type_box, gallery.type, 0) self._find_combobox_match(self.status_box, gallery.status, 0) gallery_pub_date = "{}".format(gallery.pub_date).split(' ') try: self.gallery_time = datetime.strptime(gallery_pub_date[1], '%H:%M:%S').time() except IndexError: pass qdate_pub_date = QDate.fromString(gallery_pub_date[0], "yyyy-MM-dd") self.pub_edit.setDate(qdate_pub_date) self.link_lbl.setText(gallery.link) self.path_lbl.setText(gallery.path)
def set_web_metadata(self, metadata): assert isinstance(metadata, gallerydb.Gallery) self.link_lbl.setText(metadata.link) self.title_edit.setText(metadata.title) self.author_edit.setText(metadata.artist) tags = "" lang = ['English', 'Japanese'] self._find_combobox_match(self.lang_box, metadata.language, 2) self.tags_edit.setText(utils.tag_to_string(metadata.tags)) pub_string = "{}".format(metadata.pub_date) pub_date = QDate.fromString(pub_string.split()[0], "yyyy-MM-dd") self.pub_edit.setDate(pub_date) self._find_combobox_match(self.type_box, metadata.type, 0)
def _convert_to_str(self, items): tags = {} d_tags = [] for item in items: ns_item = item.parent() if ns_item.text(0) == 'No namespace': d_tags.append(item.text(0)) continue if ns_item.text(0) in tags: tags[ns_item.text(0)].append(item.text(0)) else: tags[ns_item.text(0)] = [item.text(0)] search_txt = utils.tag_to_string(tags) d_search_txt = '' for x, d_t in enumerate(d_tags, 1): if x == len(d_tags): d_search_txt += '{}'.format(d_t) else: d_search_txt += '{}, '.format(d_t) final_txt = search_txt + ', ' + d_search_txt if search_txt else d_search_txt return final_txt
def search_tags(self, items): if self.parent_widget: tags = {} d_tags = [] for item in items: ns_item = item.parent() if ns_item.text(0) == "No namespace": d_tags.append(item.text(0)) continue if ns_item.text(0) in tags: tags[ns_item.text(0)].append(item.text(0)) else: tags[ns_item.text(0)] = [item.text(0)] search_txt = utils.tag_to_string(tags) d_search_txt = "" for x, d_t in enumerate(d_tags, 1): if x == len(d_tags): d_search_txt += "{}".format(d_t) else: d_search_txt += "{}, ".format(d_t) final_txt = search_txt + ", " + d_search_txt if search_txt else d_search_txt self.parent_widget.search(final_txt)
def column_checker(): if current_column == self._TITLE: title = current_gallery.title return title elif current_column == self._ARTIST: artist = current_gallery.artist return artist elif current_column == self._TAGS: tags = utils.tag_to_string(current_gallery.tags) return tags elif current_column == self._TYPE: type = current_gallery.type return type elif current_column == self._FAV: if current_gallery.fav == 1: return u'\u2605' else: return '' elif current_column == self._CHAPTERS: return len(current_gallery.chapters) elif current_column == self._LANGUAGE: return current_gallery.language elif current_column == self._LINK: return current_gallery.link elif current_column == self._DESCR: return current_gallery.info elif current_column == self._DATE_ADDED: g_dt = "{}".format(current_gallery.date_added) qdate_g_dt = QDateTime.fromString(g_dt, "yyyy-MM-dd HH:mm:ss") return qdate_g_dt elif current_column == self._PUB_DATE: g_pdt = "{}".format(current_gallery.pub_date) qdate_g_pdt = QDateTime.fromString(g_pdt, "yyyy-MM-dd HH:mm:ss") if qdate_g_pdt.isValid(): return qdate_g_pdt else: return 'No date set'
def make_gallery(self, new_gallery, add_to_model=True, new=False): def is_checked(widget): return widget.g_check.isChecked() if self.check(): if is_checked(self.title_edit): new_gallery.title = self.title_edit.text() log_d('Adding gallery title') if is_checked(self.author_edit): new_gallery.artist = self.author_edit.text() log_d('Adding gallery artist') if not self._multiple_galleries: new_gallery.path = self.path_lbl.text() log_d('Adding gallery path') if is_checked(self.descr_edit): new_gallery.info = self.descr_edit.toPlainText() log_d('Adding gallery descr') if is_checked(self.type_box): new_gallery.type = self.type_box.currentText() log_d('Adding gallery type') if is_checked(self.lang_box): new_gallery.language = self.lang_box.currentText() log_d('Adding gallery lang') if is_checked(self.rating_box): new_gallery.rating = self.rating_box.value() log_d('Adding gallery rating') if is_checked(self.status_box): new_gallery.status = self.status_box.currentText() log_d('Adding gallery status') if is_checked(self.tags_edit): if self.tags_append.isChecked(): new_gallery.tags = utils.tag_to_dict( utils.tag_to_string(new_gallery.tags) + "," + self.tags_edit.toPlainText()) else: new_gallery.tags = utils.tag_to_dict( self.tags_edit.toPlainText()) log_d('Adding gallery: tagging to dict') if is_checked(self.pub_edit): qpub_d = self.pub_edit.date().toString("ddMMyyyy") dpub_d = datetime.strptime(qpub_d, "%d%m%Y").date() try: d_t = self.gallery_time except AttributeError: d_t = datetime.now().time().replace(microsecond=0) dpub_d = datetime.combine(dpub_d, d_t) new_gallery.pub_date = dpub_d log_d('Adding gallery pub date') if is_checked(self.link_lbl): new_gallery.link = self.link_lbl.text() log_d('Adding gallery link') if new: if not new_gallery.chapters: log_d('Starting chapters') thread = threading.Thread(target=utils.make_chapters, args=(new_gallery, )) thread.start() thread.join() log_d('Finished chapters') if new and app_constants.MOVE_IMPORTED_GALLERIES: app_constants.OVERRIDE_MONITOR = True new_gallery.move_gallery() if add_to_model: self.parent_widget.default_manga_view.add_gallery( new_gallery, True) log_i('Sent gallery to model') else: if add_to_model: self.parent_widget.default_manga_view.replace_gallery( [new_gallery], False) return new_gallery
def setGallery(self, gallery): "To be used for when editing a gallery" if isinstance(gallery, gallerydb.Gallery): self.gallery = gallery if not self._multiple_galleries: self.url_edit.setText(gallery.link) self.title_edit.setText(gallery.title) self.author_edit.setText(gallery.artist) self.descr_edit.setText(gallery.info) self.rating_box.setValue(gallery.rating) self.tags_edit.setText(utils.tag_to_string(gallery.tags)) if not self._find_combobox_match(self.lang_box, gallery.language, 1): self._find_combobox_match(self.lang_box, app_constants.G_DEF_LANGUAGE, 1) if not self._find_combobox_match(self.type_box, gallery.type, 0): self._find_combobox_match(self.type_box, app_constants.G_DEF_TYPE, 0) if not self._find_combobox_match(self.status_box, gallery.status, 0): self._find_combobox_match(self.status_box, app_constants.G_DEF_STATUS, 0) gallery_pub_date = "{}".format(gallery.pub_date).split(' ') try: self.gallery_time = datetime.strptime(gallery_pub_date[1], '%H:%M:%S').time() except IndexError: pass qdate_pub_date = QDate.fromString(gallery_pub_date[0], "yyyy-MM-dd") self.pub_edit.setDate(qdate_pub_date) self.link_lbl.setText(gallery.link) self.path_lbl.setText(gallery.path) elif isinstance(gallery, list): g = gallery[0] if all(map(lambda x: x.title == g.title, gallery)): self.title_edit.setText(g.title) self.title_edit.g_check.setChecked(True) if all(map(lambda x: x.artist == g.artist, gallery)): self.author_edit.setText(g.artist) self.author_edit.g_check.setChecked(True) if all(map(lambda x: x.info == g.info, gallery)): self.descr_edit.setText(g.info) self.descr_edit.g_check.setChecked(True) if all(map(lambda x: x.tags == g.tags, gallery)): self.tags_edit.setText(utils.tag_to_string(g.tags)) self.tags_edit.g_check.setChecked(True) if all(map(lambda x: x.language == g.language, gallery)): if not self._find_combobox_match(self.lang_box, g.language, 1): self._find_combobox_match(self.lang_box, app_constants.G_DEF_LANGUAGE, 1) self.lang_box.g_check.setChecked(True) if all(map(lambda x: x.rating == g.rating, gallery)): self.rating_box.setValue(g.rating) self.rating_box.g_check.setChecked(True) if all(map(lambda x: x.type == g.type, gallery)): if not self._find_combobox_match(self.type_box, g.type, 0): self._find_combobox_match(self.type_box, app_constants.G_DEF_TYPE, 0) self.type_box.g_check.setChecked(True) if all(map(lambda x: x.status == g.status, gallery)): if not self._find_combobox_match(self.status_box, g.status, 0): self._find_combobox_match(self.status_box, app_constants.G_DEF_STATUS, 0) self.status_box.g_check.setChecked(True) if all(map(lambda x: x.pub_date == g.pub_date, gallery)): gallery_pub_date = "{}".format(g.pub_date).split(' ') try: self.gallery_time = datetime.strptime( gallery_pub_date[1], '%H:%M:%S').time() except IndexError: pass qdate_pub_date = QDate.fromString(gallery_pub_date[0], "yyyy-MM-dd") self.pub_edit.setDate(qdate_pub_date) self.pub_edit.g_check.setChecked(True) if all(map(lambda x: x.link == g.link, gallery)): self.link_lbl.setText(g.link) self.link_lbl.g_check.setChecked(True)
def data(self, index, role=Qt.DisplayRole): if not index.isValid(): return QVariant() if index.row() >= len(self._data) or \ index.row() < 0: return QVariant() current_row = index.row() current_gallery = self._data[current_row] current_column = index.column() def column_checker(): if current_column == self._TITLE: title = current_gallery.title return title elif current_column == self._ARTIST: artist = current_gallery.artist return artist elif current_column == self._TAGS: tags = utils.tag_to_string(current_gallery.tags) return tags elif current_column == self._TYPE: type = current_gallery.type return type elif current_column == self._FAV: if current_gallery.fav == 1: return u'\u2605' else: return '' elif current_column == self._CHAPTERS: return len(current_gallery.chapters) elif current_column == self._LANGUAGE: return current_gallery.language elif current_column == self._LINK: return current_gallery.link elif current_column == self._DESCR: return current_gallery.info elif current_column == self._DATE_ADDED: g_dt = "{}".format(current_gallery.date_added) qdate_g_dt = QDateTime.fromString(g_dt, "yyyy-MM-dd HH:mm:ss") return qdate_g_dt elif current_column == self._PUB_DATE: g_pdt = "{}".format(current_gallery.pub_date) qdate_g_pdt = QDateTime.fromString(g_pdt, "yyyy-MM-dd HH:mm:ss") if qdate_g_pdt.isValid(): return qdate_g_pdt else: return 'No date set' # TODO: name all these roles and put them in app_constants... if role == Qt.DisplayRole: return column_checker() # for artist searching if role == self.ARTIST_ROLE: artist = current_gallery.artist return artist if role == Qt.DecorationRole: pixmap = current_gallery.profile return pixmap if role == Qt.BackgroundRole: bg_color = QColor(242, 242, 242) bg_brush = QBrush(bg_color) return bg_color if app_constants.GRID_TOOLTIP and role == Qt.ToolTipRole: add_bold = [] add_tips = [] if app_constants.TOOLTIP_TITLE: add_bold.append('<b>Title:</b>') add_tips.append(current_gallery.title) if app_constants.TOOLTIP_AUTHOR: add_bold.append('<b>Author:</b>') add_tips.append(current_gallery.artist) if app_constants.TOOLTIP_CHAPTERS: add_bold.append('<b>Chapters:</b>') add_tips.append(len(current_gallery.chapters)) if app_constants.TOOLTIP_STATUS: add_bold.append('<b>Status:</b>') add_tips.append(current_gallery.status) if app_constants.TOOLTIP_TYPE: add_bold.append('<b>Type:</b>') add_tips.append(current_gallery.type) if app_constants.TOOLTIP_LANG: add_bold.append('<b>Language:</b>') add_tips.append(current_gallery.language) if app_constants.TOOLTIP_DESCR: add_bold.append('<b>Description:</b><br />') add_tips.append(current_gallery.info) if app_constants.TOOLTIP_TAGS: add_bold.append('<b>Tags:</b>') add_tips.append(utils.tag_to_string( current_gallery.tags)) if app_constants.TOOLTIP_LAST_READ: add_bold.append('<b>Last read:</b>') add_tips.append( '{} ago'.format(utils.get_date_age(current_gallery.last_read)) if current_gallery.last_read else "Never!") if app_constants.TOOLTIP_TIMES_READ: add_bold.append('<b>Times read:</b>') add_tips.append(current_gallery.times_read) if app_constants.TOOLTIP_PUB_DATE: add_bold.append('<b>Publication Date:</b>') add_tips.append('{}'.format(current_gallery.pub_date).split(' ')[0]) if app_constants.TOOLTIP_DATE_ADDED: add_bold.append('<b>Date added:</b>') add_tips.append('{}'.format(current_gallery.date_added).split(' ')[0]) tooltip = "" tips = list(zip(add_bold, add_tips)) for tip in tips: tooltip += "{} {}<br />".format(tip[0], tip[1]) return tooltip if role == self.GALLERY_ROLE: return current_gallery # favorite satus if role == self.FAV_ROLE: return current_gallery.fav if role == self.DATE_ADDED_ROLE: date_added = "{}".format(current_gallery.date_added) qdate_added = QDateTime.fromString(date_added, "yyyy-MM-dd HH:mm:ss") return qdate_added if role == self.PUB_DATE_ROLE: if current_gallery.pub_date: pub_date = "{}".format(current_gallery.pub_date) qpub_date = QDateTime.fromString(pub_date, "yyyy-MM-dd HH:mm:ss") return qpub_date if role == self.TIMES_READ_ROLE: return current_gallery.times_read if role == self.LAST_READ_ROLE: if current_gallery.last_read: last_read = "{}".format(current_gallery.last_read) qlast_read = QDateTime.fromString(last_read, "yyyy-MM-dd HH:mm:ss") return qlast_read return None
def data(self, index, role=Qt.DisplayRole): if not index.isValid(): return QVariant() if index.row() >= len(self._data) or \ index.row() < 0: return QVariant() current_row = index.row() current_gallery = self._data[current_row] current_column = index.column() def column_checker(): if current_column == self._TITLE: title = current_gallery.title return title elif current_column == self._ARTIST: artist = current_gallery.artist return artist elif current_column == self._TAGS: tags = utils.tag_to_string(current_gallery.tags) return tags elif current_column == self._TYPE: type = current_gallery.type return type elif current_column == self._FAV: if current_gallery.fav == 1: return u'\u2605' else: return '' elif current_column == self._CHAPTERS: return len(current_gallery.chapters) elif current_column == self._LANGUAGE: return current_gallery.language elif current_column == self._LINK: return current_gallery.link elif current_column == self._DESCR: return current_gallery.info elif current_column == self._DATE_ADDED: g_dt = "{}".format(current_gallery.date_added) qdate_g_dt = QDateTime.fromString(g_dt, "yyyy-MM-dd HH:mm:ss") return qdate_g_dt elif current_column == self._PUB_DATE: g_pdt = "{}".format(current_gallery.pub_date) qdate_g_pdt = QDateTime.fromString(g_pdt, "yyyy-MM-dd HH:mm:ss") if qdate_g_pdt.isValid(): return qdate_g_pdt else: return 'No date set' # TODO: name all these roles and put them in app_constants... if role == Qt.DisplayRole: return column_checker() # for artist searching if role == Qt.UserRole+2: artist = current_gallery.artist return artist if role == Qt.DecorationRole: pixmap = current_gallery.profile return pixmap if role == Qt.BackgroundRole: bg_color = QColor(242, 242, 242) bg_brush = QBrush(bg_color) return bg_color if app_constants.GRID_TOOLTIP and role == Qt.ToolTipRole: add_bold = [] add_tips = [] if app_constants.TOOLTIP_TITLE: add_bold.append('<b>Title:</b>') add_tips.append(current_gallery.title) if app_constants.TOOLTIP_AUTHOR: add_bold.append('<b>Author:</b>') add_tips.append(current_gallery.artist) if app_constants.TOOLTIP_CHAPTERS: add_bold.append('<b>Chapters:</b>') add_tips.append(len(current_gallery.chapters)) if app_constants.TOOLTIP_STATUS: add_bold.append('<b>Status:</b>') add_tips.append(current_gallery.status) if app_constants.TOOLTIP_TYPE: add_bold.append('<b>Type:</b>') add_tips.append(current_gallery.type) if app_constants.TOOLTIP_LANG: add_bold.append('<b>Language:</b>') add_tips.append(current_gallery.language) if app_constants.TOOLTIP_DESCR: add_bold.append('<b>Description:</b><br />') add_tips.append(current_gallery.info) if app_constants.TOOLTIP_TAGS: add_bold.append('<b>Tags:</b>') add_tips.append(utils.tag_to_string( current_gallery.tags)) if app_constants.TOOLTIP_LAST_READ: add_bold.append('<b>Last read:</b>') add_tips.append( '{} ago'.format(utils.get_date_age(current_gallery.last_read)) if current_gallery.last_read else "Never!") if app_constants.TOOLTIP_TIMES_READ: add_bold.append('<b>Times read:</b>') add_tips.append(current_gallery.times_read) if app_constants.TOOLTIP_PUB_DATE: add_bold.append('<b>Publication Date:</b>') add_tips.append('{}'.format(current_gallery.pub_date).split(' ')[0]) if app_constants.TOOLTIP_DATE_ADDED: add_bold.append('<b>Date added:</b>') add_tips.append('{}'.format(current_gallery.date_added).split(' ')[0]) tooltip = "" tips = list(zip(add_bold, add_tips)) for tip in tips: tooltip += "{} {}<br />".format(tip[0], tip[1]) return tooltip if role == Qt.UserRole+1: return current_gallery # favorite satus if role == Qt.UserRole+3: return current_gallery.fav if role == Qt.UserRole+4: date_added = "{}".format(current_gallery.date_added) qdate_added = QDateTime.fromString(date_added, "yyyy-MM-dd HH:mm:ss") return qdate_added if role == Qt.UserRole+5: if current_gallery.pub_date: pub_date = "{}".format(current_gallery.pub_date) qpub_date = QDateTime.fromString(pub_date, "yyyy-MM-dd HH:mm:ss") return qpub_date if role == Qt.UserRole+6: return current_gallery.times_read return None
def make_gallery(self, new_gallery, add_to_model=True, new=False): def is_checked(widget): return widget.g_check.isChecked() if self.check(): if is_checked(self.title_edit): new_gallery.title = self.title_edit.text() log_d('Adding gallery title') if is_checked(self.author_edit): new_gallery.artist = self.author_edit.text() log_d('Adding gallery artist') if not self._multiple_galleries: new_gallery.path = self.path_lbl.text() log_d('Adding gallery path') if is_checked(self.descr_edit): new_gallery.info = self.descr_edit.toPlainText() log_d('Adding gallery descr') if is_checked(self.type_box): new_gallery.type = self.type_box.currentText() log_d('Adding gallery type') if is_checked(self.lang_box): new_gallery.language = self.lang_box.currentText() log_d('Adding gallery lang') if is_checked(self.rating_box): new_gallery.rating = self.rating_box.value() log_d('Adding gallery rating') if is_checked(self.status_box): new_gallery.status = self.status_box.currentText() log_d('Adding gallery status') if is_checked(self.tags_edit): if self.tags_append.isChecked(): new_gallery.tags = utils.tag_to_dict(utils.tag_to_string(new_gallery.tags)+","+ self.tags_edit.toPlainText()) else: new_gallery.tags = utils.tag_to_dict(self.tags_edit.toPlainText()) log_d('Adding gallery: tagging to dict') if is_checked(self.pub_edit): qpub_d = self.pub_edit.date().toString("ddMMyyyy") dpub_d = datetime.strptime(qpub_d, "%d%m%Y").date() try: d_t = self.gallery_time except AttributeError: d_t = datetime.now().time().replace(microsecond=0) dpub_d = datetime.combine(dpub_d, d_t) new_gallery.pub_date = dpub_d log_d('Adding gallery pub date') if is_checked(self.link_lbl): new_gallery.link = self.link_lbl.text() log_d('Adding gallery link') if new: if not new_gallery.chapters: log_d('Starting chapters') thread = threading.Thread(target=utils.make_chapters, args=(new_gallery,)) thread.start() thread.join() log_d('Finished chapters') if new and app_constants.MOVE_IMPORTED_GALLERIES: app_constants.OVERRIDE_MONITOR = True new_gallery.move_gallery() if add_to_model: self.parent_widget.default_manga_view.add_gallery(new_gallery, True) log_i('Sent gallery to model') else: if add_to_model: self.parent_widget.default_manga_view.replace_gallery([new_gallery], False) return new_gallery
def setGallery(self, gallery): "To be used for when editing a gallery" if isinstance(gallery, gallerydb.Gallery): self.gallery = gallery if not self._multiple_galleries: self.url_edit.setText(gallery.link) self.title_edit.setText(gallery.title) self.author_edit.setText(gallery.artist) self.descr_edit.setText(gallery.info) self.rating_box.setValue(gallery.rating) self.tags_edit.setText(utils.tag_to_string(gallery.tags)) if not self._find_combobox_match(self.lang_box, gallery.language, 1): self._find_combobox_match(self.lang_box, app_constants.G_DEF_LANGUAGE, 1) if not self._find_combobox_match(self.type_box, gallery.type, 0): self._find_combobox_match(self.type_box, app_constants.G_DEF_TYPE, 0) if not self._find_combobox_match(self.status_box, gallery.status, 0): self._find_combobox_match(self.status_box, app_constants.G_DEF_STATUS, 0) gallery_pub_date = "{}".format(gallery.pub_date).split(' ') try: self.gallery_time = datetime.strptime(gallery_pub_date[1], '%H:%M:%S').time() except IndexError: pass qdate_pub_date = QDate.fromString(gallery_pub_date[0], "yyyy-MM-dd") self.pub_edit.setDate(qdate_pub_date) self.link_lbl.setText(gallery.link) self.path_lbl.setText(gallery.path) elif isinstance(gallery, list): g = gallery[0] if all(map(lambda x: x.title == g.title, gallery)): self.title_edit.setText(g.title) self.title_edit.g_check.setChecked(True) if all(map(lambda x: x.artist == g.artist, gallery)): self.author_edit.setText(g.artist) self.author_edit.g_check.setChecked(True) if all(map(lambda x: x.info == g.info, gallery)): self.descr_edit.setText(g.info) self.descr_edit.g_check.setChecked(True) if all(map(lambda x: x.tags == g.tags, gallery)): self.tags_edit.setText(utils.tag_to_string(g.tags)) self.tags_edit.g_check.setChecked(True) if all(map(lambda x: x.language == g.language, gallery)): if not self._find_combobox_match(self.lang_box, g.language, 1): self._find_combobox_match(self.lang_box, app_constants.G_DEF_LANGUAGE, 1) self.lang_box.g_check.setChecked(True) if all(map(lambda x: x.rating == g.rating, gallery)): self.rating_box.setValue(g.rating) self.rating_box.g_check.setChecked(True) if all(map(lambda x: x.type == g.type, gallery)): if not self._find_combobox_match(self.type_box, g.type, 0): self._find_combobox_match(self.type_box, app_constants.G_DEF_TYPE, 0) self.type_box.g_check.setChecked(True) if all(map(lambda x: x.status == g.status, gallery)): if not self._find_combobox_match(self.status_box, g.status, 0): self._find_combobox_match(self.status_box, app_constants.G_DEF_STATUS, 0) self.status_box.g_check.setChecked(True) if all(map(lambda x: x.pub_date == g.pub_date, gallery)): gallery_pub_date = "{}".format(g.pub_date).split(' ') try: self.gallery_time = datetime.strptime(gallery_pub_date[1], '%H:%M:%S').time() except IndexError: pass qdate_pub_date = QDate.fromString(gallery_pub_date[0], "yyyy-MM-dd") self.pub_edit.setDate(qdate_pub_date) self.pub_edit.g_check.setChecked(True) if all(map(lambda x: x.link == g.link, gallery)): self.link_lbl.setText(g.link) self.link_lbl.g_check.setChecked(True)