Krita Source Code Documentation
Loading...
Searching...
No Matches
comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard Class Reference

Public Member Functions

 __init__ (self)
 
 showDialog (self)
 
 slot_edit_meta_data (self)
 
 slot_generate (self)
 
 slot_update_countries (self)
 
 writeConfig (self)
 

Public Attributes

 chkMakeProjectDirectory
 
 cmbCountry
 
 cmbLanguage
 
 exportDirectory
 
 generateListA
 
 generateListB
 
 lnExportDirectory
 
 lnPagesDirectory
 
 lnProjectDirectory
 
 lnProjectName
 
 lnTemplateLocation
 
 lnTranslationLocation
 
 pagesDirectory
 
 projectDirectory
 
 setupDictionary
 
 slot_edit_meta_data
 
 slot_generate
 
 slot_update_countries
 
 templateLocation
 
 translationLocation
 

Static Public Attributes

str projectDirectory = ""
 
dict setupDictionary = {}
 

Detailed Description

Definition at line 32 of file comics_project_setup_wizard.py.

Constructor & Destructor Documentation

◆ __init__()

comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.__init__ ( self)

Definition at line 36 of file comics_project_setup_wizard.py.

36 def __init__(self):
37 # super().__init__(parent)
38 # Search the location of the script for the two lists that are used with the projectname generator.
39 mainP = Path(__file__).parent
40 self.generateListA = []
41 self.generateListB = []
42 if Path(mainP / "projectGenLists" / "listA.txt").exists():
43 for l in open(str(mainP / "projectGenLists" / "listA.txt"), "r"):
44 if l.isspace() == False:
45 self.generateListA.append(l.strip("\n"))
46 if Path(mainP / "projectGenLists" / "listB.txt").exists():
47 for l in open(str(mainP / "projectGenLists" / "listB.txt"), "r"):
48 if l.isspace() == False:
49 self.generateListB.append(l.strip("\n"))
50

Member Function Documentation

◆ showDialog()

comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.showDialog ( self)

Definition at line 51 of file comics_project_setup_wizard.py.

51 def showDialog(self):
52 # Initialise the setup directory empty toavoid exceptions.
53 self.setupDictionary = {}
54
55 # ask for a project directory.
56 self.projectDirectory = None
57
58 while self.projectDirectory == None:
59 self.projectDirectory = FileDialog.getExistingDirectory(caption=i18n("Where should the comic project go?"))
60 if os.path.exists(self.projectDirectory) is False:
61 return
62 if os.access(self.projectDirectory, os.W_OK) is False:
63 QMessageBox.warning(None, i18n("Folder cannot be used"), i18n("Krita doesn't have write access to this folder, so files cannot be made. Please choose a different folder."), QMessageBox.StandardButton.Ok)
64 self.projectDirectory = None
65 self.pagesDirectory = os.path.relpath(self.projectDirectory, self.projectDirectory)
66 self.exportDirectory = os.path.relpath(self.projectDirectory, self.projectDirectory)
67
68 wizard = QWizard()
69 wizard.setWindowTitle(i18n("Comic Project Setup"))
70 wizard.setOption(QWizard.WizardOption.IndependentPages, True)
71 wizard.setWizardStyle(QWizard.WizardStyle.ClassicStyle)
72
73 # Set up the UI for the wizard
74 basicsPage = QWizardPage()
75 basicsPage.setTitle(i18n("Basic Comic Project Settings"))
76 formLayout = QFormLayout()
77 basicsPage.setLayout(formLayout)
78 projectLayout = QHBoxLayout()
79 self.lnProjectName = QLineEdit()
80 basicsPage.registerField("Project Name*", self.lnProjectName)
81 self.lnProjectName.setToolTip(i18n("A Project name. This can be different from the eventual title"))
82 btnRandom = QPushButton()
83 btnRandom.setText(i18n("Generate"))
84 btnRandom.setToolTip(i18n("If you cannot come up with a project name, our highly sophisticated project name generator will serve to give a classy yet down to earth name."))
85 btnRandom.clicked.connect(self.slot_generate)
86 projectLayout.addWidget(self.lnProjectName)
87 projectLayout.addWidget(btnRandom)
88 lnConcept = QLineEdit()
89 lnConcept.setToolTip(i18n("What is your comic about? This is mostly for your own convenience so do not worry about what it says too much."))
90 self.cmbLanguage = comics_metadata_dialog.language_combo_box()
91 self.cmbLanguage.setToolTip(i18n("The main language the comic is in"))
92 self.cmbLanguage.setEntryToCode(str(QLocale.system().name()).split("_")[0])
93 self.cmbCountry = comics_metadata_dialog.country_combo_box()
94 if QLocale.system() != QLocale.c():
95 self.slot_update_countries()
96 self.cmbCountry.setEntryToCode(str(QLocale.system().name()).split("_")[-1])
97 else:
98 self.cmbLanguage.setEntryToCode("en")
99 self.slot_update_countries()
100 self.cmbCountry.setEntryToCode("US")
101 self.cmbLanguage.currentIndexChanged.connect(self.slot_update_countries)
102 self.lnProjectDirectory = QLabel(self.projectDirectory)
103 self.chkMakeProjectDirectory = QCheckBox()
104 labelDirectory = QLabel(i18n("Make a new directory with the project name."))
105 labelDirectory.setWordWrap(True)
106 stringDirectoryTooltip = i18n("This allows you to select a generic comics project directory, in which a new folder will be made for the project using the given project name.")
107 self.chkMakeProjectDirectory.setToolTip(stringDirectoryTooltip)
108 labelDirectory.setToolTip(stringDirectoryTooltip)
109 self.chkMakeProjectDirectory.setChecked(True)
110 self.lnPagesDirectory = QLineEdit()
111 self.lnPagesDirectory.setText(i18n("pages"))
112 self.lnPagesDirectory.setToolTip(i18n("The name for the folder where the pages are contained. If it does not exist, it will be created."))
113 self.lnExportDirectory = QLineEdit()
114 self.lnExportDirectory.setText(i18n("export"))
115 self.lnExportDirectory.setToolTip(i18n("The name for the folder where the export is put. If it does not exist, it will be created."))
116 self.lnTemplateLocation = QLineEdit()
117 self.lnTemplateLocation.setText(i18n("templates"))
118 self.lnTemplateLocation.setToolTip(i18n("The name for the folder where the page templates are sought in."))
119
120 self.lnTranslationLocation = QLineEdit()
121 self.lnTranslationLocation.setText(i18n("translations"))
122 self.lnTranslationLocation.setToolTip("This is the location that POT files will be stored to and PO files will be read from.")
123 formLayout.addRow(i18n("Comic concept:"), lnConcept)
124 formLayout.addRow(i18n("Project name:"), projectLayout)
125 formLayout.addRow(i18n("Main language:"), self.cmbLanguage)
126 formLayout.addRow("", self.cmbCountry)
127
128 buttonMetaData = QPushButton(i18n("Meta Data"))
129 buttonMetaData.clicked.connect(self.slot_edit_meta_data)
130
131 wizard.addPage(basicsPage)
132
133 foldersPage = QWizardPage()
134 foldersPage.setTitle(i18n("Folder names and other."))
135 folderFormLayout = QFormLayout()
136 foldersPage.setLayout(folderFormLayout)
137 folderFormLayout.addRow(i18n("Project directory:"), self.lnProjectDirectory)
138 folderFormLayout.addRow(self.chkMakeProjectDirectory, labelDirectory)
139 folderFormLayout.addRow(i18n("Pages directory"), self.lnPagesDirectory)
140 folderFormLayout.addRow(i18n("Export directory"), self.lnExportDirectory)
141 folderFormLayout.addRow(i18n("Template directory"), self.lnTemplateLocation)
142 folderFormLayout.addRow(i18n("Translation directory"), self.lnTranslationLocation)
143 folderFormLayout.addRow("", buttonMetaData)
144 wizard.addPage(foldersPage)
145
146 # Execute the wizard, and after wards...
147 if (wizard.exec()):
148
149 # First get the directories, check if the directories exist, and otherwise make them.
150 self.pagesDirectory = self.lnPagesDirectory.text()
151 self.exportDirectory = self.lnExportDirectory.text()
152 self.templateLocation = self.lnTemplateLocation.text()
153 self.translationLocation = self.lnTranslationLocation.text()
154 projectPath = Path(self.projectDirectory)
155
156 # Only make a project directory if the checkbox for that has been checked.
157 if self.chkMakeProjectDirectory.isChecked():
158 projectPath = projectPath / self.lnProjectName.text()
159 if projectPath.exists() is False:
160 projectPath.mkdir()
161 self.projectDirectory = str(projectPath)
162 if Path(projectPath / self.pagesDirectory).exists() is False:
163 Path(projectPath / self.pagesDirectory).mkdir()
164 if Path(projectPath / self.exportDirectory).exists() is False:
165 Path(projectPath / self.exportDirectory).mkdir()
166 if Path(projectPath / self.templateLocation).exists() is False:
167 Path(projectPath / self.templateLocation).mkdir()
168 if Path(projectPath / self.translationLocation).exists() is False:
169 Path(projectPath / self.translationLocation).mkdir()
170
171 # Then store the information into the setup diactionary.
172 self.setupDictionary["projectName"] = self.lnProjectName.text()
173 self.setupDictionary["concept"] = lnConcept.text()
174 self.setupDictionary["language"] = str(self.cmbLanguage.codeForCurrentEntry())
175 self.setupDictionary["pagesLocation"] = self.pagesDirectory
176 self.setupDictionary["exportLocation"] = self.exportDirectory
177 self.setupDictionary["templateLocation"] = self.templateLocation
178 self.setupDictionary["translationLocation"] = self.translationLocation
179 self.setupDictionary["uuid"] = QUuid.createUuid().toString()
180
181 # Finally, write the dictionary into the json file.
182 self.writeConfig()
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.

◆ slot_edit_meta_data()

comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.slot_edit_meta_data ( self)

Definition at line 189 of file comics_project_setup_wizard.py.

189 def slot_edit_meta_data(self):
190 dialog = comics_metadata_dialog.comic_meta_data_editor()
191 self.setupDictionary["language"] = str(self.cmbLanguage.codeForCurrentEntry())
192 dialog.setConfig(self.setupDictionary)
193 dialog.setConfig(self.setupDictionary)
194 if (dialog.exec() == QDialog.DialogCode.Accepted):
195 self.setupDictionary = dialog.getConfig(self.setupDictionary)
196 self.cmbLanguage.setEntryToCode(self.setupDictionary["language"])
197

References comics_project_management_tools.comics_metadata_dialog.comic_meta_data_editor.cmbLanguage, comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.cmbLanguage, 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_generate()

comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.slot_generate ( self)

Definition at line 224 of file comics_project_setup_wizard.py.

224 def slot_generate(self):
225 if len(self.generateListA) > 0 and len(self.generateListB) > 0:
226 nameA = self.generateListA[random.randint(0, len(self.generateListA) - 1)]
227 nameB = self.generateListB[random.randint(0, len(self.generateListB) - 1)]
228 self.lnProjectName.setText(str(nameA.title() + nameB.title()))

References comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.generateListA, comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.generateListB, comics_project_management_tools.comics_project_settings_dialog.comics_project_details_editor.lnProjectName, and comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.lnProjectName.

◆ slot_update_countries()

comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.slot_update_countries ( self)

◆ writeConfig()

comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.writeConfig ( self)

Definition at line 210 of file comics_project_setup_wizard.py.

210 def writeConfig(self):
211 print("CPMT: writing comic configuration...")
212 print(self.projectDirectory)
213 configFile = open(os.path.join(self.projectDirectory, "comicConfig.json"), "w", newline="", encoding="utf-16")
214 json.dump(self.setupDictionary, configFile, indent=4, sort_keys=True, ensure_ascii=False)
215 configFile.close()
216 print("CPMT: done")

References comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.projectDirectory, 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.

Member Data Documentation

◆ chkMakeProjectDirectory

comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.chkMakeProjectDirectory

Definition at line 103 of file comics_project_setup_wizard.py.

◆ cmbCountry

comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.cmbCountry

Definition at line 93 of file comics_project_setup_wizard.py.

◆ cmbLanguage

comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.cmbLanguage

Definition at line 90 of file comics_project_setup_wizard.py.

◆ exportDirectory

comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.exportDirectory

Definition at line 66 of file comics_project_setup_wizard.py.

◆ generateListA

comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.generateListA

Definition at line 40 of file comics_project_setup_wizard.py.

◆ generateListB

comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.generateListB

Definition at line 41 of file comics_project_setup_wizard.py.

◆ lnExportDirectory

comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.lnExportDirectory

Definition at line 113 of file comics_project_setup_wizard.py.

◆ lnPagesDirectory

comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.lnPagesDirectory

Definition at line 110 of file comics_project_setup_wizard.py.

◆ lnProjectDirectory

comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.lnProjectDirectory

Definition at line 102 of file comics_project_setup_wizard.py.

◆ lnProjectName

comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.lnProjectName

Definition at line 79 of file comics_project_setup_wizard.py.

◆ lnTemplateLocation

comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.lnTemplateLocation

Definition at line 116 of file comics_project_setup_wizard.py.

◆ lnTranslationLocation

comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.lnTranslationLocation

Definition at line 120 of file comics_project_setup_wizard.py.

◆ pagesDirectory

comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.pagesDirectory

Definition at line 65 of file comics_project_setup_wizard.py.

◆ projectDirectory [1/2]

str comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.projectDirectory = ""
static

Definition at line 34 of file comics_project_setup_wizard.py.

◆ projectDirectory [2/2]

comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.projectDirectory

Definition at line 56 of file comics_project_setup_wizard.py.

◆ setupDictionary [1/2]

dict comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.setupDictionary = {}
static

Definition at line 33 of file comics_project_setup_wizard.py.

◆ setupDictionary [2/2]

comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.setupDictionary

Definition at line 53 of file comics_project_setup_wizard.py.

◆ slot_edit_meta_data

comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.slot_edit_meta_data

Definition at line 129 of file comics_project_setup_wizard.py.

◆ slot_generate

comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.slot_generate

Definition at line 85 of file comics_project_setup_wizard.py.

◆ slot_update_countries

comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.slot_update_countries

Definition at line 101 of file comics_project_setup_wizard.py.

◆ templateLocation

comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.templateLocation

Definition at line 152 of file comics_project_setup_wizard.py.

◆ translationLocation

comics_project_management_tools.comics_project_setup_wizard.ComicsProjectSetupWizard.translationLocation

Definition at line 153 of file comics_project_setup_wizard.py.


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