2222#
2323# ---------------------------------------------------------------------
2424
25- import logging
2625import os
2726import shutil
2827
2928import psycopg
3029from qgis .PyQt .QtCore import Qt , QUrl
3130from qgis .PyQt .QtGui import QColor , QDesktopServices
32- from qgis .PyQt .QtWidgets import QAction , QDialog , QFileDialog , QMenu , QMessageBox
31+ from qgis .PyQt .QtWidgets import (
32+ QAction ,
33+ QApplication ,
34+ QDialog ,
35+ QFileDialog ,
36+ QMenu ,
37+ QMessageBox ,
38+ QStyle ,
39+ QTreeWidgetItem ,
40+ )
3341
3442from ..core .package_prepare_task import PackagePrepareTask
3543from ..libs import pgserviceparser
3644from ..libs .pum .config import PumConfig
3745from ..libs .pum .schema_migrations import SchemaMigrations
3846from ..libs .pum .upgrader import Upgrader
39- from ..utils .plugin_utils import LoggingBridge , PluginUtils
47+ from ..utils .plugin_utils import LoggingBridge , PluginUtils , logger
4048from ..utils .qt_utils import OverrideCursor , QtUtils
4149from .database_create_dialog import DatabaseCreateDialog
4250from .database_duplicate_dialog import DatabaseDuplicateDialog
@@ -56,10 +64,9 @@ def __init__(self, modules_registry, parent=None):
5664 QDialog .__init__ (self , parent )
5765 self .setupUi (self )
5866
59- self .logger = logging .getLogger ()
6067 self .loggingBridge = LoggingBridge ()
6168 self .loggingBridge .loggedLine .connect (self .__logged_line )
62- self . logger .addHandler (self .loggingBridge )
69+ logger .addHandler (self .loggingBridge )
6370
6471 self .buttonBox .rejected .connect (self .__closeDialog )
6572 self .buttonBox .helpRequested .connect (self .__helpRequested )
@@ -86,13 +93,16 @@ def __init__(self, modules_registry, parent=None):
8693 # Init GUI Project
8794 self .__initGuiProject ()
8895
96+ # Init GUI Logs
97+ self .__initGuiLogs ()
98+
8999 self .__packagePrepareTask = PackagePrepareTask (self )
90100 self .__packagePrepareTask .finished .connect (self .__packagePrepareTaskFinished )
91101 self .__packagePrepareTask .signalPackagingProgress .connect (
92102 self .__packagePrepareTaskProgress
93103 )
94104
95- self . logger .info ("Ready." )
105+ logger .info ("Ready." )
96106
97107 def __initGuiModules (self ):
98108 self .module_module_comboBox .clear ()
@@ -150,11 +160,29 @@ def __initGuiProject(self):
150160 self .project_install_pushButton .clicked .connect (self .__projectInstallClicked )
151161 self .project_seeChangelog_pushButton .clicked .connect (self .__projectSeeChangelogClicked )
152162
163+ def __initGuiLogs (self ):
164+ self .logs_openFile_toolButton .setIcon (
165+ QApplication .style ().standardIcon (QStyle .StandardPixmap .SP_FileIcon )
166+ )
167+ self .logs_openFolder_toolButton .setIcon (
168+ QApplication .style ().standardIcon (QStyle .StandardPixmap .SP_DirOpenIcon )
169+ )
170+ self .logs_clear_toolButton .setIcon (
171+ QApplication .style ().standardIcon (QStyle .StandardPixmap .SP_TitleBarCloseButton )
172+ )
173+
174+ self .logs_openFile_toolButton .clicked .connect (self .__logsOpenFileClicked )
175+ self .logs_openFolder_toolButton .clicked .connect (self .__logsOpenFolderClicked )
176+ self .logs_clear_toolButton .clicked .connect (self .__logsClearClicked )
177+
153178 def __logged_line (self , record , line ):
154- self .logs_plainTextEdit .appendPlainText (line )
179+
180+ treeWidgetItem = QTreeWidgetItem ([record .levelname , record .name , record .msg ])
181+
182+ self .logs_treeWidget .addTopLevelItem (treeWidgetItem )
155183
156184 # Automatically scroll to the bottom of the logs
157- scroll_bar = self .logs_plainTextEdit .verticalScrollBar ()
185+ scroll_bar = self .logs_treeWidget .verticalScrollBar ()
158186 scroll_bar .setValue (scroll_bar .maximum ())
159187
160188 def __closeDialog (self ):
@@ -166,7 +194,7 @@ def __closeDialog(self):
166194
167195 def __helpRequested (self ):
168196 help_page = "https://github.com/oqtopus/Oqtopus"
169- self . logger .info (f"Opening help page { help_page } " )
197+ logger .info (f"Opening help page { help_page } " )
170198 QDesktopServices .openUrl (QUrl (help_page ))
171199
172200 def __loadDatabaseInformations (self ):
@@ -198,6 +226,9 @@ def __moduleChanged(self, index):
198226 if self .__current_module is None :
199227 return
200228
229+ logger .info (f"Loading versions for module '{ self .__current_module .name } '..." )
230+ QApplication .processEvents ()
231+
201232 with OverrideCursor (Qt .WaitCursor ):
202233 if self .__current_module .versions == list ():
203234 self .__current_module .load_versions ()
@@ -249,7 +280,7 @@ def __moduleVersionChanged(self, index):
249280 )
250281 self .module_information_label .setText (loading_text )
251282 QtUtils .resetForegroundColor (self .module_information_label )
252- self . logger .info (loading_text )
283+ logger .info (loading_text )
253284
254285 if self .__packagePrepareTask .isRunning ():
255286 self .__packagePrepareTask .cancel ()
@@ -312,7 +343,7 @@ def __loadModuleFromZip(self, filename):
312343 self .__packagePrepareTask .startFromZip (filename )
313344
314345 def __packagePrepareTaskFinished (self ):
315- self . logger .info ("Load package task finished" )
346+ logger .info ("Load package task finished" )
316347
317348 if self .__packagePrepareTask .lastError is not None :
318349 error_text = f"Can't load module package:\n { self .__packagePrepareTask .lastError } "
@@ -326,7 +357,7 @@ def __packagePrepareTaskFinished(self):
326357 return
327358
328359 self .__package_dir = self .__packagePrepareTask .package_dir
329- self . logger .info (f"Package loaded into '{ self .__package_dir } '" )
360+ logger .info (f"Package loaded into '{ self .__package_dir } '" )
330361 self .module_information_label .setText (self .__package_dir )
331362 QtUtils .resetForegroundColor (self .module_information_label )
332363
@@ -417,7 +448,7 @@ def __packagePrepareGetProjectFilename(self):
417448
418449 def __packagePrepareTaskProgress (self , progress ):
419450 loading_text = self .tr ("Load package task running..." )
420- self . logger .info (loading_text )
451+ logger .info (loading_text )
421452 self .module_information_label .setText (loading_text )
422453
423454 def __seeChangeLogClicked (self ):
@@ -448,7 +479,7 @@ def __seeChangeLogClicked(self):
448479 return
449480
450481 changelog_url = current_module_version .html_url
451- self . logger .info (f"Opening changelog URL: { changelog_url } " )
482+ logger .info (f"Opening changelog URL: { changelog_url } " )
452483 QDesktopServices .openUrl (QUrl (changelog_url ))
453484
454485 def __serviceChanged (self , index = None ):
@@ -720,3 +751,12 @@ def __projectInstallClicked(self):
720751
721752 def __projectSeeChangelogClicked (self ):
722753 self .__seeChangeLogClicked ()
754+
755+ def __logsOpenFileClicked (self ):
756+ QDesktopServices .openUrl (QUrl .fromLocalFile (PluginUtils .plugin_temp_path ()))
757+
758+ def __logsOpenFolderClicked (self ):
759+ PluginUtils .open_logs_folder ()
760+
761+ def __logsClearClicked (self ):
762+ self .logs_treeWidget .clear ()
0 commit comments