Krita Source Code Documentation
Loading...
Searching...
No Matches
comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker Class Reference
+ Inheritance diagram for comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker:

Public Member Functions

 __init__ (self)
 
 add_new_page (self, templateUrl)
 
 canvasChanged (self, canvas)
 
 fill_pages (self)
 
 get_description_and_title (self, string)
 
 load_config (self)
 
 slot_add_new_page_from_template (self)
 
 slot_add_new_page_single (self)
 
 slot_add_page_from_url (self)
 
 slot_batch_resize (self)
 
 slot_check_for_page_update (self)
 
 slot_copy_project_url (self)
 
 slot_edit_export_settings (self)
 
 slot_edit_meta_data (self)
 
 slot_edit_project_settings (self)
 
 slot_export (self)
 
 slot_new_project (self)
 
 slot_open_config (self)
 
 slot_open_page (self, index)
 
 slot_remove_selected_page (self)
 
 slot_scale_thumbnails (self, multiplier=4)
 
 slot_scrape_author_list (self)
 
 slot_scrape_translations (self)
 
 slot_show_page_viewer (self)
 
 slot_start_delayed_check_page_update (self, url)
 
 slot_write_config (self)
 
 slot_write_description (self, index)
 

Public Attributes

 action_add_existing
 
 action_add_page
 
 action_add_template
 
 action_edit_export_settings
 
 action_edit_meta_data
 
 action_edit_project_settings
 
 action_load_project
 
 action_new_project
 
 action_remove_selected_page
 
 action_resize_all_pages
 
 action_scrape_authors
 
 action_scrape_translations
 
 action_show_page_viewer
 
 btn_add_page
 
 btn_export
 
 btn_project
 
 btn_project_url
 
 btn_settings
 
 comicPageList
 
 loadingPages
 
 page_viewer_dialog
 
 pagesModel
 
 path_to_config
 
 projectName
 
 setupDictionary
 
 slot_add_new_page_from_template
 
 slot_add_new_page_single
 
 slot_add_page_from_url
 
 slot_batch_resize
 
 slot_check_for_page_update
 
 slot_copy_project_url
 
 slot_edit_export_settings
 
 slot_edit_meta_data
 
 slot_edit_project_settings
 
 slot_export
 
 slot_new_project
 
 slot_open_config
 
 slot_open_page
 
 slot_remove_selected_page
 
 slot_scale_thumbnails
 
 slot_scrape_author_list
 
 slot_scrape_translations
 
 slot_show_page_viewer
 
 slot_start_delayed_check_page_update
 
 slot_write_config
 

Static Public Attributes

 pagesWatcher = None
 
 projecturl = None
 
dict setupDictionary = {}
 
 stringName = i18n("Comics Manager")
 
list updateurls = []
 

Detailed Description

Definition at line 194 of file comics_project_manager_docker.py.

Constructor & Destructor Documentation

◆ __init__()

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.__init__ ( self)

Definition at line 201 of file comics_project_manager_docker.py.

201 def __init__(self):
202 super().__init__()
203 self.setWindowTitle(self.stringName)
204 self.setProperty("ShowOnWelcomePage", True);
205
206 # Setup layout:
207 base = QHBoxLayout()
208 widget = QWidget()
209 widget.setLayout(base)
210 baseLayout = QSplitter()
211 base.addWidget(baseLayout)
212 self.setWidget(widget)
213 buttonLayout = QVBoxLayout()
214 buttonBox = QWidget()
215 buttonBox.setLayout(buttonLayout)
216 baseLayout.addWidget(buttonBox)
217
218 # Comic page list and pages model
219 self.comicPageList = QListView()
220 self.comicPageList.setHorizontalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOff)
221 self.comicPageList.setDragEnabled(True)
222 self.comicPageList.setDragDropMode(QAbstractItemView.DragDropMode.InternalMove)
223 self.comicPageList.setDefaultDropAction(Qt.DropAction.MoveAction)
224 self.comicPageList.setAcceptDrops(True)
225 self.comicPageList.setItemDelegate(comic_page_delegate(self.devicePixelRatioF()))
226 self.pagesModel = QStandardItemModel()
227 self.comicPageList.doubleClicked.connect(self.slot_open_page)
228 self.comicPageList.setIconSize(QSize(128, 128))
229 # self.comicPageList.itemDelegate().closeEditor.connect(self.slot_write_description)
230 self.pagesModel.layoutChanged.connect(self.slot_write_config)
231 self.pagesModel.rowsInserted.connect(self.slot_write_config)
232 self.pagesModel.rowsRemoved.connect(self.slot_write_config)
233 self.pagesModel.rowsMoved.connect(self.slot_write_config)
234 self.comicPageList.setModel(self.pagesModel)
235 pageBox = QWidget()
236 pageBox.setLayout(QVBoxLayout())
237 zoomSlider = QSlider(Qt.Orientation.Horizontal, None)
238 zoomSlider.setRange(1, 8)
239 zoomSlider.setValue(4)
240 zoomSlider.setTickInterval(1)
241 zoomSlider.setMinimumWidth(10)
242 zoomSlider.valueChanged.connect(self.slot_scale_thumbnails)
243 self.projectName = Elided_Text_Label()
244 pageBox.layout().addWidget(self.projectName)
245 pageBox.layout().addWidget(zoomSlider)
246 pageBox.layout().addWidget(self.comicPageList)
247 baseLayout.addWidget(pageBox)
248
249 self.btn_project = QToolButton()
250 self.btn_project.setPopupMode(QToolButton.ToolButtonPopupMode.MenuButtonPopup)
251 self.btn_project.setSizePolicy(QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Minimum)
252 menu_project = QMenu()
253 self.action_new_project = QAction(i18n("New Project"), self)
254 self.action_new_project.triggered.connect(self.slot_new_project)
255 self.action_load_project = QAction(i18n("Open Project"), self)
256 self.action_load_project.triggered.connect(self.slot_open_config)
257 menu_project.addAction(self.action_new_project)
258 menu_project.addAction(self.action_load_project)
259 self.btn_project.setMenu(menu_project)
260 self.btn_project.setDefaultAction(self.action_load_project)
261 buttonLayout.addWidget(self.btn_project)
262
263 # Settings dropdown with actions for the different settings menus.
264 self.btn_settings = QToolButton()
265 self.btn_settings.setPopupMode(QToolButton.ToolButtonPopupMode.MenuButtonPopup)
266 self.btn_settings.setSizePolicy(QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Minimum)
267 self.action_edit_project_settings = QAction(i18n("Project Settings"), self)
268 self.action_edit_project_settings.triggered.connect(self.slot_edit_project_settings)
269 self.action_edit_meta_data = QAction(i18n("Meta Data"), self)
270 self.action_edit_meta_data.triggered.connect(self.slot_edit_meta_data)
271 self.action_edit_export_settings = QAction(i18n("Export Settings"), self)
272 self.action_edit_export_settings.triggered.connect(self.slot_edit_export_settings)
273 menu_settings = QMenu()
274 menu_settings.addAction(self.action_edit_project_settings)
275 menu_settings.addAction(self.action_edit_meta_data)
276 menu_settings.addAction(self.action_edit_export_settings)
277 self.btn_settings.setDefaultAction(self.action_edit_project_settings)
278 self.btn_settings.setMenu(menu_settings)
279 buttonLayout.addWidget(self.btn_settings)
280 self.btn_settings.setDisabled(True)
281
282 # Add page drop down with different page actions.
283 self.btn_add_page = QToolButton()
284 self.btn_add_page.setPopupMode(QToolButton.ToolButtonPopupMode.MenuButtonPopup)
285 self.btn_add_page.setSizePolicy(QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Minimum)
286
287 self.action_add_page = QAction(i18n("Add Page"), self)
288 self.action_add_page.triggered.connect(self.slot_add_new_page_single)
289 self.action_add_template = QAction(i18n("Add Page from Template"), self)
290 self.action_add_template.triggered.connect(self.slot_add_new_page_from_template)
291 self.action_add_existing = QAction(i18n("Add Existing Pages"), self)
292 self.action_add_existing.triggered.connect(self.slot_add_page_from_url)
293 self.action_remove_selected_page = QAction(i18n("Remove Page"), self)
294 self.action_remove_selected_page.triggered.connect(self.slot_remove_selected_page)
295 self.action_resize_all_pages = QAction(i18n("Batch Resize"), self)
296 self.action_resize_all_pages.triggered.connect(self.slot_batch_resize)
297 self.btn_add_page.setDefaultAction(self.action_add_page)
298 self.action_show_page_viewer = QAction(i18n("View Page In Window"), self)
299 self.action_show_page_viewer.triggered.connect(self.slot_show_page_viewer)
300 self.action_scrape_authors = QAction(i18n("Scrape Author Info"), self)
301 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."))
302 self.action_scrape_authors.triggered.connect(self.slot_scrape_author_list)
303 self.action_scrape_translations = QAction(i18n("Scrape Text for Translation"), self)
304 self.action_scrape_translations.triggered.connect(self.slot_scrape_translations)
305 actionList = []
306 menu_page = QMenu()
307 actionList.append(self.action_add_page)
308 actionList.append(self.action_add_template)
309 actionList.append(self.action_add_existing)
310 actionList.append(self.action_remove_selected_page)
311 actionList.append(self.action_resize_all_pages)
312 actionList.append(self.action_show_page_viewer)
313 actionList.append(self.action_scrape_authors)
314 actionList.append(self.action_scrape_translations)
315 menu_page.addActions(actionList)
316 self.btn_add_page.setMenu(menu_page)
317 buttonLayout.addWidget(self.btn_add_page)
318 self.btn_add_page.setDisabled(True)
319
320 self.comicPageList.setContextMenuPolicy(Qt.ContextMenuPolicy.ActionsContextMenu)
321 self.comicPageList.addActions(actionList)
322
323 # Export button that... exports.
324 self.btn_export = QPushButton(i18n("Export Comic"))
325 self.btn_export.clicked.connect(self.slot_export)
326 buttonLayout.addWidget(self.btn_export)
327 self.btn_export.setDisabled(True)
328
329 self.btn_project_url = QPushButton(i18n("Copy Location"))
330 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."))
331 self.btn_project_url.clicked.connect(self.slot_copy_project_url)
332 self.btn_project_url.setDisabled(True)
333 buttonLayout.addWidget(self.btn_project_url)
334
335 self.page_viewer_dialog = comics_project_page_viewer.comics_project_page_viewer()
336
337 self.pagesWatcher = QFileSystemWatcher()
338 self.pagesWatcher.fileChanged.connect(self.slot_start_delayed_check_page_update)
339
340 buttonLayout.addItem(QSpacerItem(0, 0, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.MinimumExpanding))
341

References comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.__init__(), KisPipeBrushParasite.dim, KisSpinBoxUnitManager.dim, FlattenSpec.dim, xcfLayer.dim, InfoObject.setProperty(), KisLockedPropertiesProxy.setProperty(), KisPropertiesConfiguration.setProperty(), KisLockedPropertiesProxy.setProperty(), KisPropertiesConfiguration.setProperty(), KoProperties.setProperty(), KisLockedPropertiesProxy.setProperty(), KisPaintOpSettings.setProperty(), KisColorTransformationConfiguration.setProperty(), KisCrossChannelFilterConfiguration.setProperty(), KisMultiChannelFilterConfiguration.setProperty(), KisHalftoneFilterConfiguration.setProperty(), KisLevelsFilterConfiguration.setProperty(), KoPathPoint.setProperty(), KoSvgTextProperties.setProperty(), mikro.PyQtClass.setProperty(), KDcrawIface::RLabelExpander.setWidget(), krita.sceditor.dockwidget.DockMainWidgetWrapper.setWidget(), krita.sceditor.dockwidget.DockWidget.setWidget(), and comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.stringName.

Member Function Documentation

◆ add_new_page()

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.add_new_page ( self,
templateUrl )

Definition at line 637 of file comics_project_manager_docker.py.

637 def add_new_page(self, templateUrl):
638
639 # check for page list and or location.
640 pagesList = []
641 if "pages" in self.setupDictionary.keys():
642 pagesList = self.setupDictionary["pages"]
643 if not "pageNumber" in self.setupDictionary.keys():
644 self.setupDictionary['pageNumber'] = 0
645
646 if (str(self.setupDictionary["pagesLocation"]).isspace()):
647 path = FileDialog.getExistingDirectory(caption=i18n("Where should the pages go?"))
648 if not path: return
649 self.setupDictionary["pagesLocation"] = os.path.relpath(path, self.projecturl)
650
651 # Search for the possible name.
652 extraUnderscore = str()
653 if str(self.setupDictionary["projectName"])[-1].isdigit():
654 extraUnderscore = "_"
655 self.setupDictionary['pageNumber'] += 1
656 pageName = str(self.setupDictionary["projectName"]).replace(" ", "_") + extraUnderscore + str(format(self.setupDictionary['pageNumber'], "03d"))
657 url = os.path.join(str(self.setupDictionary["pagesLocation"]), pageName + ".kra")
658
659 # open the page by opening the template and resaving it, or just opening it.
660 absoluteUrl = os.path.join(self.projecturl, url)
661 if (os.path.exists(absoluteUrl)):
662 newPage = Application.openDocument(absoluteUrl)
663 else:
664 booltemplateExists = os.path.isfile(os.path.join(self.projecturl, templateUrl))
665 if booltemplateExists is False:
666 path = FileDialog.getOpenFileName(caption=i18n("Which image should be the basis for the new page?"), directory=self.projecturl, filter=str(i18n("Krita files") + "(*.kra)"))
667 if not path: return
668 templateUrl = os.path.relpath(path, self.projecturl)
669 newPage = Application.openDocument(os.path.join(self.projecturl, templateUrl))
670 newPage.waitForDone()
671 newPage.setFileName(absoluteUrl)
672 newPage.setName(pageName.replace("_", " "))
673 newPage.save()
674 newPage.waitForDone()
675
676 # Get out the extra data for the standard item.
677 newPageItem = QStandardItem()
678 newPageItem.setIcon(QIcon(QPixmap.fromImage(newPage.thumbnail(256, 256))))
679 newPageItem.setDragEnabled(True)
680 newPageItem.setDropEnabled(False)
681 newPageItem.setEditable(False)
682 newPageItem.setText(pageName.replace("_", " "))
683 newPageItem.setData("", role = CPE.DESCRIPTION)
684 newPageItem.setData(url, role = CPE.URL)
685 newPageItem.setData("", role = CPE.KEYWORDS)
686 newPageItem.setData("", role = CPE.LASTEDIT)
687 newPageItem.setData("", role = CPE.EDITOR)
688 newPageItem.setToolTip(url)
689
690 # close page document.
691 while os.path.exists(absoluteUrl) is False:
692 QApplication.instance().processEvents()
693
694 self.pagesWatcher.addPath(absoluteUrl)
695 newPage.close()
696
697 # add item to page.
698 self.pagesModel.appendRow(newPageItem)
699
static QString getExistingDirectory(QWidget *parent=nullptr, const QString &caption=QString(), const QString &directory=QString(), const QString &dialogName=QString())
Create and show a file dialog and return the name of an existing directory selected by the user.
static QString getOpenFileName(QWidget *parent=nullptr, const QString &caption=QString(), const QString &directory=QString(), const QString &filter=QString(), const QString &selectedFilter=QString(), const QString &dialogName=QString())
Create and show a file dialog and return the name of an existing file selected by the user.

References FileDialog.getExistingDirectory(), FileDialog.getOpenFileName(), comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.pagesModel, comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.pagesWatcher, comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.projecturl, comics_project_management_tools.comics_project_page_viewer.comics_project_page_viewer.projecturl, comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.setupDictionary, comics_project_management_tools.comics_project_page_viewer.comics_project_page_viewer.setupDictionary, and comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.setupDictionary.

◆ canvasChanged()

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.canvasChanged ( self,
canvas )

Definition at line 978 of file comics_project_manager_docker.py.

978 def canvasChanged(self, canvas):
979 pass
980
981
982"""
983Add docker to program
984"""

◆ fill_pages()

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.fill_pages ( self)

Definition at line 375 of file comics_project_manager_docker.py.

375 def fill_pages(self):
376 self.loadingPages = True
377 self.pagesModel.clear()
378 if len(self.pagesWatcher.files())>0:
379 self.pagesWatcher.removePaths(self.pagesWatcher.files())
380 pagesList = []
381 if "pages" in self.setupDictionary.keys():
382 pagesList = self.setupDictionary["pages"]
383 progress = QProgressDialog()
384 progress.setMinimum(0)
385 progress.setMaximum(len(pagesList))
386 progress.setWindowTitle(i18n("Loading Pages..."))
387 for url in pagesList:
388 absurl = os.path.join(self.projecturl, url)
389 relative = os.path.relpath(absurl, self.projecturl)
390 if (os.path.exists(absurl)):
391 #page = Application.openDocument(absurl)
392 page = zipfile.ZipFile(absurl, "r")
393 # Note: We load preview.png instead of mergedimage.png as each mergedimage.png can take hundreds of MiB
394 # when loaded in memory.
395 thumbnail = QImage.fromData(page.read("preview.png"))
396 thumbnail.setDevicePixelRatio(self.devicePixelRatioF())
397 pageItem = QStandardItem()
398 dataList = self.get_description_and_title(page.read("documentinfo.xml"))
399 if (dataList[0].isspace() or len(dataList[0]) < 1):
400 dataList[0] = os.path.basename(url)
401 pageItem.setText(dataList[0].replace("_", " "))
402 pageItem.setDragEnabled(True)
403 pageItem.setDropEnabled(False)
404 pageItem.setEditable(False)
405 pageItem.setIcon(QIcon(QPixmap.fromImage(thumbnail)))
406 pageItem.setData(dataList[1], role = CPE.DESCRIPTION)
407 pageItem.setData(relative, role = CPE.URL)
408 self.pagesWatcher.addPath(absurl)
409 pageItem.setData(dataList[2], role = CPE.KEYWORDS)
410 pageItem.setData(dataList[3], role = CPE.LASTEDIT)
411 pageItem.setData(dataList[4], role = CPE.EDITOR)
412 pageItem.setToolTip(relative)
413 page.close()
414 self.pagesModel.appendRow(pageItem)
415 progress.setValue(progress.value() + 1)
416 progress.setValue(len(pagesList))
417 self.loadingPages = False

◆ get_description_and_title()

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.get_description_and_title ( self,
string )

Definition at line 433 of file comics_project_manager_docker.py.

433 def get_description_and_title(self, string):
434 xmlDoc = ET.fromstring(string)
435 calligra = str("{http://www.calligra.org/DTD/document-info}")
436 name = ""
437 if ET.iselement(xmlDoc[0].find(calligra + 'title')):
438 name = xmlDoc[0].find(calligra + 'title').text
439 if name is None:
440 name = " "
441 desc = ""
442 if ET.iselement(xmlDoc[0].find(calligra + 'subject')):
443 desc = xmlDoc[0].find(calligra + 'subject').text
444 if desc is None or desc.isspace() or len(desc) < 1:
445 if ET.iselement(xmlDoc[0].find(calligra + 'abstract')):
446 desc = xmlDoc[0].find(calligra + 'abstract').text
447 if desc is not None:
448 if desc.startswith("<![CDATA["):
449 desc = desc[len("<![CDATA["):]
450 if desc.startswith("]]>"):
451 desc = desc[:-len("]]>")]
452 keywords = ""
453 if ET.iselement(xmlDoc[0].find(calligra + 'keyword')):
454 keywords = xmlDoc[0].find(calligra + 'keyword').text
455 date = ""
456 if ET.iselement(xmlDoc[0].find(calligra + 'date')):
457 date = xmlDoc[0].find(calligra + 'date').text
458 author = []
459 if ET.iselement(xmlDoc[1].find(calligra + 'creator-first-name')):
460 string = xmlDoc[1].find(calligra + 'creator-first-name').text
461 if string is not None:
462 author.append(string)
463 if ET.iselement(xmlDoc[1].find(calligra + 'creator-last-name')):
464 string = xmlDoc[1].find(calligra + 'creator-last-name').text
465 if string is not None:
466 author.append(string)
467 if ET.iselement(xmlDoc[1].find(calligra + 'full-name')):
468 string = xmlDoc[1].find(calligra + 'full-name').text
469 if string is not None:
470 author.append(string)
471
472 return [name, desc, keywords, date, " ".join(author)]
473

◆ load_config()

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.load_config ( self)

◆ slot_add_new_page_from_template()

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.slot_add_new_page_from_template ( self)

Definition at line 619 of file comics_project_manager_docker.py.

619 def slot_add_new_page_from_template(self):
620 if "templateLocation" not in self.setupDictionary.keys():
621 path = FileDialog.getExistingDirectory(caption=i18n("Where are the templates located?"))
622 if not path: return
623 self.setupDictionary["templateLocation"] = os.path.relpath(path, self.projecturl)
624
625 templateDir = os.path.join(self.projecturl, self.setupDictionary["templateLocation"])
626 template = comics_template_dialog.comics_template_dialog(templateDir)
627
628 if template.exec() == QDialog.DialogCode.Accepted:
629 templateUrl = os.path.relpath(template.url(), self.projecturl)
630 self.add_new_page(templateUrl)
631

References comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.add_new_page(), FileDialog.getExistingDirectory(), comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.projecturl, comics_project_management_tools.comics_project_page_viewer.comics_project_page_viewer.projecturl, comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.setupDictionary, comics_project_management_tools.comics_project_page_viewer.comics_project_page_viewer.setupDictionary, and comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.setupDictionary.

◆ slot_add_new_page_single()

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.slot_add_new_page_single ( self)

Definition at line 589 of file comics_project_manager_docker.py.

589 def slot_add_new_page_single(self):
590 templateUrl = "templatepage"
591 templateExists = False
592
593 if "singlePageTemplate" in self.setupDictionary.keys():
594 templateUrl = self.setupDictionary["singlePageTemplate"]
595 if os.path.exists(os.path.join(self.projecturl, templateUrl)):
596 templateExists = True
597
598 if templateExists is False:
599 if "templateLocation" not in self.setupDictionary.keys():
600 path = FileDialog.getExistingDirectory(caption=i18n("Where are the templates located?"))
601 if not path: return
602 self.setupDictionary["templateLocation"] = os.path.relpath(path, self.projecturl)
603
604 templateDir = os.path.join(self.projecturl, self.setupDictionary["templateLocation"])
605 template = comics_template_dialog.comics_template_dialog(templateDir)
606
607 if template.exec() == QDialog.DialogCode.Accepted:
608 templateUrl = os.path.relpath(template.url(), self.projecturl)
609 self.setupDictionary["singlePageTemplate"] = templateUrl
610 if os.path.exists(os.path.join(self.projecturl, templateUrl)):
611 self.add_new_page(templateUrl)
612

References comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.add_new_page(), FileDialog.getExistingDirectory(), comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.projecturl, comics_project_management_tools.comics_project_page_viewer.comics_project_page_viewer.projecturl, comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.setupDictionary, comics_project_management_tools.comics_project_page_viewer.comics_project_page_viewer.setupDictionary, and comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.setupDictionary.

◆ slot_add_page_from_url()

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.slot_add_page_from_url ( self)

Definition at line 537 of file comics_project_manager_docker.py.

537 def slot_add_page_from_url(self):
538 # get the pages.
539 urlList = FileDialog.getOpenFileNames(caption=i18n("Which existing pages to add?"), directory=self.projecturl, filter=str(i18n("Krita files") + "(*.kra)"))
540 if not urlList: return
541
542 # get the existing pages list.
543 pagesList = []
544 if "pages" in self.setupDictionary.keys():
545 pagesList = self.setupDictionary["pages"]
546
547 # And add each url in the url list to the pages list and the model.
548 for url in urlList:
549 if self.projecturl not in urlList:
550 newUrl = os.path.join(self.projecturl, self.setupDictionary["pagesLocation"], os.path.basename(url))
551 shutil.move(url, newUrl)
552 url = newUrl
553 relative = os.path.relpath(url, self.projecturl)
554 if url not in pagesList:
555 page = zipfile.ZipFile(url, "r")
556 thumbnail = QImage.fromData(page.read("preview.png"))
557 dataList = self.get_description_and_title(page.read("documentinfo.xml"))
558 if (dataList[0].isspace() or len(dataList[0]) < 1):
559 dataList[0] = os.path.basename(url)
560 newPageItem = QStandardItem()
561 newPageItem.setIcon(QIcon(QPixmap.fromImage(thumbnail)))
562 newPageItem.setDragEnabled(True)
563 newPageItem.setDropEnabled(False)
564 newPageItem.setEditable(False)
565 newPageItem.setText(dataList[0].replace("_", " "))
566 newPageItem.setData(dataList[1], role = CPE.DESCRIPTION)
567 newPageItem.setData(relative, role = CPE.URL)
568 self.pagesWatcher.addPath(url)
569 newPageItem.setData(dataList[2], role = CPE.KEYWORDS)
570 newPageItem.setData(dataList[3], role = CPE.LASTEDIT)
571 newPageItem.setData(dataList[4], role = CPE.EDITOR)
572 newPageItem.setToolTip(relative)
573 page.close()
574 self.pagesModel.appendRow(newPageItem)
575
static QStringList getOpenFileNames(QWidget *parent=nullptr, const QString &caption=QString(), const QString &directory=QString(), const QString &filter=QString(), const QString &selectedFilter=QString(), const QString &dialogName=QString())
Create and show a file dialog and return the name of multiple existing files selected by the user.

References comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.get_description_and_title(), FileDialog.getOpenFileNames(), comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.pagesModel, comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.pagesWatcher, comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.projecturl, comics_project_management_tools.comics_project_page_viewer.comics_project_page_viewer.projecturl, comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.setupDictionary, comics_project_management_tools.comics_project_page_viewer.comics_project_page_viewer.setupDictionary, and comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.setupDictionary.

◆ slot_batch_resize()

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.slot_batch_resize ( self)

Definition at line 897 of file comics_project_manager_docker.py.

897 def slot_batch_resize(self):
898 dialog = QDialog()
899 dialog.setWindowTitle(i18n("Resize all Pages"))
900 buttons = QDialogButtonBox(QDialogButtonBox.StandardButton.Ok | QDialogButtonBox.StandardButton.Cancel)
901 buttons.accepted.connect(dialog.accept)
902 buttons.rejected.connect(dialog.reject)
903 sizesBox = comics_export_dialog.comic_export_resize_widget("Scale", batch=True, fileType=False)
904 exporterSizes = comics_exporter.sizesCalculator()
905 dialog.setLayout(QVBoxLayout())
906 dialog.layout().addWidget(sizesBox)
907 dialog.layout().addWidget(buttons)
908
909 if dialog.exec() == QDialog.DialogCode.Accepted:
910 progress = QProgressDialog(i18n("Resizing pages..."), str(), 0, len(self.setupDictionary["pages"]))
911 progress.setWindowTitle(i18n("Resizing Pages"))
912 progress.setCancelButton(None)
913 timer = QElapsedTimer()
914 timer.start()
915 config = {}
916 config = sizesBox.get_config(config)
917 for p in range(len(self.setupDictionary["pages"])):
918 absoluteUrl = os.path.join(self.projecturl, self.setupDictionary["pages"][p])
919 progress.setValue(p)
920 timePassed = timer.elapsed()
921 if (p > 0):
922 timeEstimated = (len(self.setupDictionary["pages"]) - p) * (timePassed / p)
923 passedString = str(int(timePassed / 60000)) + ":" + format(int(timePassed / 1000), "02d") + ":" + format(timePassed % 1000, "03d")
924 estimatedString = str(int(timeEstimated / 60000)) + ":" + format(int(timeEstimated / 1000), "02d") + ":" + format(int(timeEstimated % 1000), "03d")
925 progress.setLabelText(str(i18n("{pages} of {pagesTotal} done. \nTime passed: {passedString}:\n Estimated:{estimated}")).format(pages=p, pagesTotal=len(self.setupDictionary["pages"]), passedString=passedString, estimated=estimatedString))
926 QApplication.instance().processEvents()
927 if os.path.exists(absoluteUrl):
928 doc = Application.openDocument(absoluteUrl)
929 listScales = exporterSizes.get_scale_from_resize_config(config["Scale"], [doc.width(), doc.height(), doc.resolution(), doc.resolution()])
930 doc.scaleImage(listScales[0], listScales[1], listScales[2], listScales[3], "bicubic")
931 doc.waitForDone()
932 doc.save()
933 doc.waitForDone()
934 doc.close()
935

References comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.projecturl, comics_project_management_tools.comics_project_page_viewer.comics_project_page_viewer.projecturl, comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.setupDictionary, comics_project_management_tools.comics_project_page_viewer.comics_project_page_viewer.setupDictionary, and comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.setupDictionary.

◆ slot_check_for_page_update()

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.slot_check_for_page_update ( self)

Definition at line 859 of file comics_project_manager_docker.py.

859 def slot_check_for_page_update(self):
860 url = self.updateurls.pop(0)
861 if url:
862 if "pages" in self.setupDictionary.keys():
863 relUrl = os.path.relpath(url, self.projecturl)
864 if relUrl in self.setupDictionary["pages"]:
865 index = self.pagesModel.index(self.setupDictionary["pages"].index(relUrl), 0)
866 if index.isValid():
867 if os.path.exists(url) is False:
868 # we cannot check from here whether the file in question has been renamed or deleted.
869 self.pagesModel.removeRow(index.row())
870 return
871 else:
872 # Krita will trigger the filesystemwatcher when doing backupfiles,
873 # so ensure the file is still watched if it exists.
874 self.pagesWatcher.addPath(url)
875 pageItem = self.pagesModel.itemFromIndex(index)
876 page = zipfile.ZipFile(url, "r")
877 dataList = self.get_description_and_title(page.read("documentinfo.xml"))
878 if (dataList[0].isspace() or len(dataList[0]) < 1):
879 dataList[0] = os.path.basename(url)
880 thumbnail = QImage.fromData(page.read("preview.png"))
881 pageItem.setIcon(QIcon(QPixmap.fromImage(thumbnail)))
882 pageItem.setText(dataList[0])
883 pageItem.setData(dataList[1], role = CPE.DESCRIPTION)
884 pageItem.setData(relUrl, role = CPE.URL)
885 pageItem.setData(dataList[2], role = CPE.KEYWORDS)
886 pageItem.setData(dataList[3], role = CPE.LASTEDIT)
887 pageItem.setData(dataList[4], role = CPE.EDITOR)
888 self.pagesModel.setItem(index.row(), index.column(), pageItem)
889

References comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.get_description_and_title(), comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.pagesModel, comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.pagesWatcher, comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.projecturl, comics_project_management_tools.comics_project_page_viewer.comics_project_page_viewer.projecturl, comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.setupDictionary, comics_project_management_tools.comics_project_page_viewer.comics_project_page_viewer.setupDictionary, comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.setupDictionary, and comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.updateurls.

◆ slot_copy_project_url()

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.slot_copy_project_url ( self)

Definition at line 948 of file comics_project_manager_docker.py.

948 def slot_copy_project_url(self):
949 if self.projecturl is not None:
950 clipboard = QApplication.instance().clipboard()
951 clipboard.setText(str(self.projecturl))
952

References comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.projecturl, and comics_project_management_tools.comics_project_page_viewer.comics_project_page_viewer.projecturl.

◆ slot_edit_export_settings()

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.slot_edit_export_settings ( self)

◆ slot_edit_meta_data()

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.slot_edit_meta_data ( self)

◆ slot_edit_project_settings()

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.slot_edit_project_settings ( self)

◆ slot_export()

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.slot_export ( self)

Definition at line 807 of file comics_project_manager_docker.py.

807 def slot_export(self):
808
809 #ensure there is a unique identifier
810 if "uuid" not in self.setupDictionary.keys():
811 uuid = str()
812 if "acbfID" in self.setupDictionary.keys():
813 uuid = str(self.setupDictionary["acbfID"])
814 else:
815 uuid = QUuid.createUuid().toString()
816 self.setupDictionary["uuid"] = uuid
817
818 exporter = comics_exporter.comicsExporter()
819 exporter.set_config(self.setupDictionary, self.projecturl)
820 exportSuccess = exporter.export()
821 if exportSuccess:
822 print("CPMT: Export success! The files have been written to the export folder!")
823 QMessageBox.information(self, i18n("Export success"), i18n("The files have been written to the export folder."), QMessageBox.StandardButton.Ok)
824

References comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.projecturl, comics_project_management_tools.comics_project_page_viewer.comics_project_page_viewer.projecturl, comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.setupDictionary, comics_project_management_tools.comics_project_page_viewer.comics_project_page_viewer.setupDictionary, and comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.setupDictionary.

◆ slot_new_project()

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.slot_new_project ( self)

◆ slot_open_config()

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.slot_open_config ( self)

Definition at line 346 of file comics_project_manager_docker.py.

346 def slot_open_config(self):
347 selectedFile = FileDialog.getOpenFileName(caption=i18n("Please select the JSON comic config file."), filter=str(i18n("JSON files") + "(*.json)"))
348 if not selectedFile: return
349 self.path_to_config = selectedFile
350 if os.path.exists(self.path_to_config) is True:
351 if os.access(self.path_to_config, os.W_OK) is False:
352 QMessageBox.warning(None, i18n("Config cannot be used"), i18n("Krita doesn't have write access to this folder, so new files cannot be made. Please configure the folder access or move the project to a folder that can be written to."), QMessageBox.StandardButton.Ok)
353 return
354 configFile = open(self.path_to_config, "r", newline="", encoding="utf-16")
355 self.setupDictionary = json.load(configFile)
356 self.projecturl = os.path.dirname(str(self.path_to_config))
357 configFile.close()
358 self.load_config()

References FileDialog.getOpenFileName().

◆ slot_open_page()

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.slot_open_page ( self,
index )

Definition at line 730 of file comics_project_manager_docker.py.

730 def slot_open_page(self, index):
731 if index.column() == 0:
732 # Get the absolute url from the relative one in the pages model.
733 absoluteUrl = os.path.join(self.projecturl, str(self.pagesModel.data(index, role=CPE.URL)))
734
735 # Make sure the page exists.
736 if os.path.exists(absoluteUrl):
737 page = Application.openDocument(absoluteUrl)
738
739 # Set the title to the filename if it was empty. It looks a bit neater.
740 if page.name().isspace or len(page.name()) < 1:
741 page.setName(str(self.pagesModel.data(index, role=Qt.ItemDataRole.DisplayRole)).replace("_", " "))
742
743 # Add views for the document so the user can use it.
744 Application.activeWindow().addView(page)
745 Application.setActiveDocument(page)
746 else:
747 print("CPMT: The page cannot be opened because the file doesn't exist:", absoluteUrl)
748

References comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.pagesModel, comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.projecturl, and comics_project_management_tools.comics_project_page_viewer.comics_project_page_viewer.projecturl.

◆ slot_remove_selected_page()

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.slot_remove_selected_page ( self)

Definition at line 580 of file comics_project_manager_docker.py.

580 def slot_remove_selected_page(self):
581 index = self.comicPageList.currentIndex()
582 self.pagesModel.removeRow(index.row())
583

References comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.comicPageList, and comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.pagesModel.

◆ slot_scale_thumbnails()

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.slot_scale_thumbnails ( self,
multiplier = 4 )

Definition at line 423 of file comics_project_manager_docker.py.

423 def slot_scale_thumbnails(self, multiplier=4):
424 self.comicPageList.setIconSize(QSize(multiplier * 32, multiplier * 32))
425

References comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.comicPageList.

◆ slot_scrape_author_list()

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.slot_scrape_author_list ( self)

Definition at line 479 of file comics_project_manager_docker.py.

479 def slot_scrape_author_list(self):
480 listOfAuthors = []
481 if "authorList" in self.setupDictionary.keys():
482 listOfAuthors = self.setupDictionary["authorList"]
483 if "pages" in self.setupDictionary.keys():
484 for relurl in self.setupDictionary["pages"]:
485 absurl = os.path.join(self.projecturl, relurl)
486 page = zipfile.ZipFile(absurl, "r")
487 xmlDoc = ET.fromstring(page.read("documentinfo.xml"))
488 calligra = str("{http://www.calligra.org/DTD/document-info}")
489 authorelem = xmlDoc.find(calligra + 'author')
490 author = {}
491 if ET.iselement(authorelem.find(calligra + 'full-name')):
492 author["nickname"] = str(authorelem.find(calligra + 'full-name').text)
493
494 if ET.iselement(authorelem.find(calligra + 'creator-first-name')):
495 author["first-name"] = str(authorelem.find(calligra + 'creator-first-name').text)
496
497 if ET.iselement(authorelem.find(calligra + 'initial')):
498 author["initials"] = str(authorelem.find(calligra + 'initial').text)
499
500 if ET.iselement(authorelem.find(calligra + 'creator-last-name')):
501 author["last-name"] = str(authorelem.find(calligra + 'creator-last-name').text)
502
503 if ET.iselement(authorelem.find(calligra + 'email')):
504 author["email"] = str(authorelem.find(calligra + 'email').text)
505
506 if ET.iselement(authorelem.find(calligra + 'contact')):
507 contact = authorelem.find(calligra + 'contact')
508 contactMode = contact.get("type")
509 if contactMode == "email":
510 author["email"] = str(contact.text)
511 if contactMode == "homepage":
512 author["homepage"] = str(contact.text)
513
514 if ET.iselement(authorelem.find(calligra + 'position')):
515 author["role"] = str(authorelem.find(calligra + 'position').text)
516 listOfAuthors.append(author)
517 page.close()
518 self.setupDictionary["authorList"] = listOfAuthors
519

References comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.projecturl, comics_project_management_tools.comics_project_page_viewer.comics_project_page_viewer.projecturl, comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.setupDictionary, comics_project_management_tools.comics_project_page_viewer.comics_project_page_viewer.setupDictionary, and comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.setupDictionary.

◆ slot_scrape_translations()

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.slot_scrape_translations ( self)

Definition at line 958 of file comics_project_manager_docker.py.

958 def slot_scrape_translations(self):
959 translationFolder = self.setupDictionary.get("translationLocation", "translations")
960 fullTranslationPath = os.path.join(self.projecturl, translationFolder)
961 os.makedirs(fullTranslationPath, exist_ok=True)
962 textLayersToSearch = self.setupDictionary.get("textLayerNames", ["text"])
963
964 scraper = comics_project_translation_scraper.translation_scraper(self.projecturl, translationFolder, textLayersToSearch, self.setupDictionary["projectName"])
965 # Run text scraper.
966 language = self.setupDictionary.get("language", "en")
967 metadata = {}
968 metadata["title"] = self.setupDictionary.get("title", "")
969 metadata["summary"] = self.setupDictionary.get("summary", "")
970 metadata["keywords"] = ", ".join(self.setupDictionary.get("otherKeywords", [""]))
971 metadata["transnotes"] = self.setupDictionary.get("translatorHeader", "Translator's Notes")
972 scraper.start(self.setupDictionary["pages"], language, metadata)
973 QMessageBox.information(self, i18n("Scraping success"), str(i18n("POT file has been written to: {file}")).format(file=fullTranslationPath), QMessageBox.StandardButton.Ok)
VertexDescriptor get(PredecessorMap const &m, VertexDescriptor v)

References get(), comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.projecturl, comics_project_management_tools.comics_project_page_viewer.comics_project_page_viewer.projecturl, comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.setupDictionary, comics_project_management_tools.comics_project_page_viewer.comics_project_page_viewer.setupDictionary, and comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.setupDictionary.

◆ slot_show_page_viewer()

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.slot_show_page_viewer ( self)

◆ slot_start_delayed_check_page_update()

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.slot_start_delayed_check_page_update ( self,
url )

Definition at line 850 of file comics_project_manager_docker.py.

850 def slot_start_delayed_check_page_update(self, url):
851 # It can happen that there are multiple signals from QFileSystemWatcher at once.
852 # Since QTimer cannot take any arguments, we need to keep a list of files to update.
853 # Otherwise only the last file would be updated and all subsequent calls
854 # of `slot_check_for_page_update` would not know which files to update now.
855 # https://bugs.kde.org/show_bug.cgi?id=426701
856 self.updateurls.append(url)
857 QTimer.singleShot(200, Qt.TimerType.CoarseTimer, self.slot_check_for_page_update)
858

References comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.updateurls.

◆ slot_write_config()

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.slot_write_config ( self)

Definition at line 705 of file comics_project_manager_docker.py.

705 def slot_write_config(self):
706
707 # Don't load when the pages are still being loaded, otherwise we'll be overwriting our own pages list.
708 if (self.loadingPages is False):
709 print("CPMT: writing comic configuration...")
710
711 # Generate a pages list from the pagesmodel.
712 pagesList = []
713 for i in range(self.pagesModel.rowCount()):
714 index = self.pagesModel.index(i, 0)
715 url = str(self.pagesModel.data(index, role=CPE.URL))
716 if url not in pagesList:
717 pagesList.append(url)
718 self.setupDictionary["pages"] = pagesList
719
720 # Save to our json file.
721 configFile = open(self.path_to_config, "w", newline="", encoding="utf-16")
722 json.dump(self.setupDictionary, configFile, indent=4, sort_keys=True, ensure_ascii=False)
723 configFile.close()
724 print("CPMT: done")
725

References comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.loadingPages, comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.pagesModel, comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.path_to_config, comics_project_management_tools.comics_project_page_viewer.comics_project_page_viewer.path_to_config, comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.setupDictionary, comics_project_management_tools.comics_project_page_viewer.comics_project_page_viewer.setupDictionary, and comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.setupDictionary.

◆ slot_write_description()

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.slot_write_description ( self,
index )

Definition at line 767 of file comics_project_manager_docker.py.

767 def slot_write_description(self, index):
768
769 for row in range(self.pagesModel.rowCount()):
770 index = self.pagesModel.index(row, 1)
771 indexUrl = self.pagesModel.index(row, 0)
772 absoluteUrl = os.path.join(self.projecturl, str(self.pagesModel.data(indexUrl, role=CPE.URL)))
773 page = zipfile.ZipFile(absoluteUrl, "a")
774 xmlDoc = ET.ElementTree()
775 ET.register_namespace("", "http://www.calligra.org/DTD/document-info")
776 location = os.path.join(self.projecturl, "documentinfo.xml")
777 xmlDoc.parse(location)
778 xmlroot = ET.fromstring(page.read("documentinfo.xml"))
779 calligra = "{http://www.calligra.org/DTD/document-info}"
780 aboutelem = xmlroot.find(calligra + 'about')
781 if ET.iselement(aboutelem.find(calligra + 'subject')):
782 desc = aboutelem.find(calligra + 'subject')
783 desc.text = self.pagesModel.data(index, role=Qt.ItemDataRole.EditRole)
784 xmlstring = ET.tostring(xmlroot, encoding='unicode', method='xml', short_empty_elements=False)
785 page.writestr(zinfo_or_arcname="documentinfo.xml", data=xmlstring)
786 for document in Application.documents():
787 if str(document.fileName()) == str(absoluteUrl):
788 document.setDocumentInfo(xmlstring)
789 page.close()
790

References comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.pagesModel, comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.projecturl, and comics_project_management_tools.comics_project_page_viewer.comics_project_page_viewer.projecturl.

Member Data Documentation

◆ action_add_existing

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.action_add_existing

Definition at line 291 of file comics_project_manager_docker.py.

◆ action_add_page

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.action_add_page

Definition at line 287 of file comics_project_manager_docker.py.

◆ action_add_template

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.action_add_template

Definition at line 289 of file comics_project_manager_docker.py.

◆ action_edit_export_settings

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.action_edit_export_settings

Definition at line 271 of file comics_project_manager_docker.py.

◆ action_edit_meta_data

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.action_edit_meta_data

Definition at line 269 of file comics_project_manager_docker.py.

◆ action_edit_project_settings

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.action_edit_project_settings

Definition at line 267 of file comics_project_manager_docker.py.

◆ action_load_project

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.action_load_project

Definition at line 255 of file comics_project_manager_docker.py.

◆ action_new_project

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.action_new_project

Definition at line 253 of file comics_project_manager_docker.py.

◆ action_remove_selected_page

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.action_remove_selected_page

Definition at line 293 of file comics_project_manager_docker.py.

◆ action_resize_all_pages

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.action_resize_all_pages

Definition at line 295 of file comics_project_manager_docker.py.

◆ action_scrape_authors

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.action_scrape_authors

Definition at line 300 of file comics_project_manager_docker.py.

◆ action_scrape_translations

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.action_scrape_translations

Definition at line 303 of file comics_project_manager_docker.py.

◆ action_show_page_viewer

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.action_show_page_viewer

Definition at line 298 of file comics_project_manager_docker.py.

◆ btn_add_page

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.btn_add_page

Definition at line 283 of file comics_project_manager_docker.py.

◆ btn_export

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.btn_export

Definition at line 324 of file comics_project_manager_docker.py.

◆ btn_project

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.btn_project

Definition at line 249 of file comics_project_manager_docker.py.

◆ btn_project_url

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.btn_project_url

Definition at line 329 of file comics_project_manager_docker.py.

◆ btn_settings

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.btn_settings

Definition at line 264 of file comics_project_manager_docker.py.

◆ comicPageList

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.comicPageList

Definition at line 219 of file comics_project_manager_docker.py.

◆ loadingPages

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.loadingPages

Definition at line 376 of file comics_project_manager_docker.py.

◆ page_viewer_dialog

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.page_viewer_dialog

Definition at line 335 of file comics_project_manager_docker.py.

◆ pagesModel

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.pagesModel

Definition at line 226 of file comics_project_manager_docker.py.

◆ pagesWatcher

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.pagesWatcher = None
static

Definition at line 198 of file comics_project_manager_docker.py.

◆ path_to_config

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.path_to_config

Definition at line 349 of file comics_project_manager_docker.py.

◆ projectName

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.projectName

Definition at line 243 of file comics_project_manager_docker.py.

◆ projecturl

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.projecturl = None
static

Definition at line 197 of file comics_project_manager_docker.py.

◆ setupDictionary [1/2]

dict comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.setupDictionary = {}
static

Definition at line 195 of file comics_project_manager_docker.py.

◆ setupDictionary [2/2]

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.setupDictionary

Definition at line 355 of file comics_project_manager_docker.py.

◆ slot_add_new_page_from_template

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.slot_add_new_page_from_template

Definition at line 290 of file comics_project_manager_docker.py.

◆ slot_add_new_page_single

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.slot_add_new_page_single

Definition at line 288 of file comics_project_manager_docker.py.

◆ slot_add_page_from_url

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.slot_add_page_from_url

Definition at line 292 of file comics_project_manager_docker.py.

◆ slot_batch_resize

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.slot_batch_resize

Definition at line 296 of file comics_project_manager_docker.py.

◆ slot_check_for_page_update

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.slot_check_for_page_update

Definition at line 857 of file comics_project_manager_docker.py.

◆ slot_copy_project_url

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.slot_copy_project_url

Definition at line 331 of file comics_project_manager_docker.py.

◆ slot_edit_export_settings

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.slot_edit_export_settings

Definition at line 272 of file comics_project_manager_docker.py.

◆ slot_edit_meta_data

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.slot_edit_meta_data

Definition at line 270 of file comics_project_manager_docker.py.

◆ slot_edit_project_settings

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.slot_edit_project_settings

Definition at line 268 of file comics_project_manager_docker.py.

◆ slot_export

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.slot_export

Definition at line 325 of file comics_project_manager_docker.py.

◆ slot_new_project

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.slot_new_project

Definition at line 254 of file comics_project_manager_docker.py.

◆ slot_open_config

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.slot_open_config

Definition at line 256 of file comics_project_manager_docker.py.

◆ slot_open_page

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.slot_open_page

Definition at line 227 of file comics_project_manager_docker.py.

◆ slot_remove_selected_page

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.slot_remove_selected_page

Definition at line 294 of file comics_project_manager_docker.py.

◆ slot_scale_thumbnails

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.slot_scale_thumbnails

Definition at line 242 of file comics_project_manager_docker.py.

◆ slot_scrape_author_list

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.slot_scrape_author_list

Definition at line 302 of file comics_project_manager_docker.py.

◆ slot_scrape_translations

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.slot_scrape_translations

Definition at line 304 of file comics_project_manager_docker.py.

◆ slot_show_page_viewer

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.slot_show_page_viewer

Definition at line 299 of file comics_project_manager_docker.py.

◆ slot_start_delayed_check_page_update

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.slot_start_delayed_check_page_update

Definition at line 338 of file comics_project_manager_docker.py.

◆ slot_write_config

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.slot_write_config

Definition at line 230 of file comics_project_manager_docker.py.

◆ stringName

comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.stringName = i18n("Comics Manager")
static

Definition at line 196 of file comics_project_manager_docker.py.

◆ updateurls

list comics_project_management_tools.comics_project_manager_docker.comics_project_manager_docker.updateurls = []
static

Definition at line 199 of file comics_project_manager_docker.py.


The documentation for this class was generated from the following file: