@@ -52,11 +52,13 @@ def __init__(self, modules_config_path, parent=None):
5252 self .module_seeChangeLog_pushButton .setEnabled (False )
5353
5454 self .module_zipPackage_groupBox .setVisible (False )
55+ self .module_directoryPackage_groupBox .setVisible (False )
5556
5657 self .module_module_comboBox .currentIndexChanged .connect (self .__moduleChanged )
5758 self .module_package_comboBox .currentIndexChanged .connect (self .__moduleVersionChanged )
5859 self .module_seeChangeLog_pushButton .clicked .connect (self .__seeChangeLogClicked )
5960 self .module_browseZip_toolButton .clicked .connect (self .__moduleBrowseZipClicked )
61+ self .module_browseDirectory_toolButton .clicked .connect (self .__moduleBrowseDirectoryClicked )
6062
6163 self .__packagePrepareTask = PackagePrepareTask (self )
6264 self .__packagePrepareTask .finished .connect (self .__packagePrepareTaskFinished )
@@ -213,9 +215,17 @@ def __moduleVersionChanged(self, index):
213215
214216 if self .__current_module_package .type == self .__current_module_package .Type .FROM_ZIP :
215217 self .module_zipPackage_groupBox .setVisible (True )
218+ self .module_directoryPackage_groupBox .setVisible (False )
219+ return
220+ elif (
221+ self .__current_module_package .type == self .__current_module_package .Type .FROM_DIRECTORY
222+ ):
223+ self .module_zipPackage_groupBox .setVisible (False )
224+ self .module_directoryPackage_groupBox .setVisible (True )
216225 return
217226 else :
218227 self .module_zipPackage_groupBox .setVisible (False )
228+ self .module_directoryPackage_groupBox .setVisible (False )
219229
220230 loading_text = self .tr ("Loading package..." )
221231 self .module_information_label .setText (loading_text )
@@ -278,6 +288,35 @@ def __loadModuleFromZip(self, filename):
278288 self .signal_loadingStarted .emit ()
279289 self .module_progressBar .setMaximum (100 )
280290 self .module_progressBar .setValue (0 )
291+
292+ def __moduleBrowseDirectoryClicked (self ):
293+ directory = QFileDialog .getExistingDirectory (self , self .tr ("Open from directory" ), None )
294+
295+ if directory == "" :
296+ return
297+
298+ self .module_fromDirectory_lineEdit .setText (directory )
299+
300+ try :
301+ with OverrideCursor (Qt .CursorShape .WaitCursor ):
302+ self .__loadModuleFromDirectory (directory )
303+ except Exception as exception :
304+ CriticalMessageBox (
305+ self .tr ("Error" ), self .tr ("Can't load module from directory:" ), exception , self
306+ ).exec ()
307+ return
308+
309+ def __loadModuleFromDirectory (self , directory ):
310+
311+ if self .__packagePrepareTask .isRunning ():
312+ self .__packagePrepareTask .cancel ()
313+ self .__packagePrepareTask .wait ()
314+
315+ self .__packagePrepareTask .startFromDirectory (self .__current_module_package , directory )
316+
317+ self .signal_loadingStarted .emit ()
318+ self .module_progressBar .setMaximum (0 )
319+ self .module_progressBar .setValue (0 )
281320 self .module_progressBar .setVisible (True )
282321
283322 def __packagePrepareTaskFinished (self ):
@@ -361,11 +400,14 @@ def __seeChangeLogClicked(self):
361400 )
362401 return
363402
364- if self .__current_module_package .type == ModulePackage .Type .FROM_ZIP :
403+ if self .__current_module_package .type in (
404+ ModulePackage .Type .FROM_ZIP ,
405+ ModulePackage .Type .FROM_DIRECTORY ,
406+ ):
365407 QMessageBox .warning (
366408 self ,
367409 self .tr ("Can't open changelog" ),
368- self .tr ("Changelog is not available for Zip packages." ),
410+ self .tr ("Changelog is not available for local packages." ),
369411 )
370412 return
371413
@@ -438,6 +480,17 @@ def __loadVersionsFinished(self, error):
438480 name = "from_zip" ,
439481 ),
440482 )
483+ self .module_package_comboBox .addItem (
484+ self .tr ("Load from directory" ),
485+ ModulePackage (
486+ module = self .__current_module ,
487+ organisation = self .__current_module .organisation ,
488+ repository = self .__current_module .repository ,
489+ json_payload = None ,
490+ type = ModulePackage .Type .FROM_DIRECTORY ,
491+ name = "from_directory" ,
492+ ),
493+ )
441494
442495 self .module_package_comboBox .insertSeparator (self .module_package_comboBox .count ())
443496
@@ -462,8 +515,9 @@ def __loadDevelopmentVersionsFinished(self, error):
462515 QApplication .restoreOverrideCursor ()
463516 self .module_progressBar .setVisible (False )
464517
465- # Hide zip widget when loading development versions
518+ # Hide zip/directory widgets when loading development versions
466519 self .module_zipPackage_groupBox .setVisible (False )
520+ self .module_directoryPackage_groupBox .setVisible (False )
467521
468522 # Clear current module package - user needs to select a specific version
469523 self .__current_module_package = None
0 commit comments