Skip to content

Commit 642ee96

Browse files
authored
Merge pull request #108 from MightyCreak/add-log-options
Add log options
2 parents c43017d + 701b345 commit 642ee96

File tree

7 files changed

+41
-32
lines changed

7 files changed

+41
-32
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77
## [Unreleased]
88

99
### Added
10+
- New options: log_print_output and log_print_stack, to print the log messages
11+
on the output and code stack
12+
- New log function: utils.logErrorAndDialog, to both log and show a dialog
13+
message
1014

1115
### Changed
1216

io.github.mightycreak.Diffuse.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,18 @@ runtime-version: '3.38'
44
sdk: org.gnome.Sdk
55
command: diffuse
66
finish-args:
7+
- --filesystem=home
8+
- --share=ipc
79
- --socket=wayland
810
- --socket=fallback-x11
9-
- --share=ipc
10-
- --filesystem=home
1111
- --talk-name=org.freedesktop.Flatpak
1212
modules:
1313
- name: diffuse
1414
builddir: true
1515
buildsystem: meson
1616
config-opts:
17+
- -Dlog_print_output=true
18+
- -Dlog_print_stack=true
1719
- -Duse_flatpak=true
1820
sources:
1921
- type: dir

meson_options.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
1+
option('log_print_output', type: 'boolean', value: false)
2+
option('log_print_stack', type: 'boolean', value: false)
13
option('use_flatpak', type: 'boolean', value: false)

src/constants.py.in

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,7 @@ COPYRIGHT = '''{copyright} © 2006-2019 Derrick Moser
2424
WEBSITE = 'https://mightycreak.github.io/diffuse/'
2525

2626
sysconfigdir = '@sysconfigdir@'
27+
2728
use_flatpak = @use_flatpak@
29+
log_print_output = @log_print_output@
30+
log_print_stack = @log_print_stack@

src/main.py

Lines changed: 8 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -905,9 +905,7 @@ def runDialog(self, parent):
905905
f.write(s)
906906
f.close()
907907
except IOError:
908-
m = utils.MessageDialog(parent, Gtk.MessageType.ERROR, _('Error writing %s.') % (self.path, ))
909-
m.run()
910-
m.destroy()
908+
utils.logErrorAndDialog(_('Error writing %s.') % (self.path, ), parent)
911909
dialog.destroy()
912910
return accept
913911

@@ -6950,9 +6948,7 @@ def load(self, f, info):
69506948
msg = _('Error reading revision %(rev)s of %(file)s.') % { 'rev': rev, 'file': name }
69516949
else:
69526950
msg = _('Error reading %s.') % (name, )
6953-
dialog = utils.MessageDialog(self.get_toplevel(), Gtk.MessageType.ERROR, msg)
6954-
dialog.run()
6955-
dialog.destroy()
6951+
utils.logErrorAndDialog(msg, self.get_toplevel())
69566952
return
69576953
# update the panes contents, last modified time, and title
69586954
self.replaceContents(f, ss)
@@ -7114,13 +7110,9 @@ def save_file(self, f, save_as=False):
71147110
self.setSyntax(syntax)
71157111
return True
71167112
except (UnicodeEncodeError, LookupError):
7117-
dialog = utils.MessageDialog(self.get_toplevel(), Gtk.MessageType.ERROR, _('Error encoding to %s.') % (encoding, ))
7118-
dialog.run()
7119-
dialog.destroy()
7113+
utils.logErrorAndDialog(_('Error encoding to %s.') % (encoding, ), self.get_toplevel())
71207114
except IOError:
7121-
dialog = utils.MessageDialog(self.get_toplevel(), Gtk.MessageType.ERROR, _('Error writing %s.') % (name, ))
7122-
dialog.run()
7123-
dialog.destroy()
7115+
utils.logErrorAndDialog(_('Error writing %s.') % (name, ), self.get_toplevel())
71247116
return False
71257117

71267118
# callback for save file menu item
@@ -7782,9 +7774,7 @@ def createCommitFileTabs(self, items, labels, options):
77827774
viewer.load(i, FileInfo(name, encoding, vcs, rev))
77837775
viewer.setOptions(options)
77847776
except (IOError, OSError, WindowsError):
7785-
dialog = utils.MessageDialog(self.get_toplevel(), Gtk.MessageType.ERROR, _('Error retrieving commits for %s.') % (dn, ))
7786-
dialog.run()
7787-
dialog.destroy()
7777+
utils.logErrorAndDialog(_('Error retrieving commits for %s.') % (dn, ), self.get_toplevel())
77887778

77897779
# create a new viewer for each modified file found in 'items'
77907780
def createModifiedFileTabs(self, items, labels, options):
@@ -7813,9 +7803,7 @@ def createModifiedFileTabs(self, items, labels, options):
78137803
viewer.load(i, FileInfo(name, encoding, vcs, rev))
78147804
viewer.setOptions(options)
78157805
except (IOError, OSError, WindowsError):
7816-
dialog = utils.MessageDialog(self.get_toplevel(), Gtk.MessageType.ERROR, _('Error retrieving modifications for %s.') % (dn, ))
7817-
dialog.run()
7818-
dialog.destroy()
7806+
utils.logErrorAndDialog(_('Error retrieving modifications for %s.') % (dn, ), self.get_toplevel())
78197807

78207808
# close all tabs without differences
78217809
def closeOnSame(self):
@@ -7874,9 +7862,7 @@ def open_modified_files_cb(self, widget, data):
78747862
self.notebook.set_current_page(n)
78757863
self.getCurrentViewer().grab_focus()
78767864
else:
7877-
m = utils.MessageDialog(parent, Gtk.MessageType.ERROR, _('No modified files found.'))
7878-
m.run()
7879-
m.destroy()
7865+
utils.logErrorAndDialog(_('No modified files found.'), parent)
78807866

78817867
# callback for the open commit menu item
78827868
def open_commit_cb(self, widget, data):
@@ -7894,9 +7880,7 @@ def open_commit_cb(self, widget, data):
78947880
self.notebook.set_current_page(n)
78957881
self.getCurrentViewer().grab_focus()
78967882
else:
7897-
m = utils.MessageDialog(parent, Gtk.MessageType.ERROR, _('No committed files found.'))
7898-
m.run()
7899-
m.destroy()
7883+
utils.logErrorAndDialog(_('No committed files found.'), parent)
79007884

79017885
# callback for the reload file menu item
79027886
def reload_file_cb(self, widget, data):

src/meson.build

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ conf.set('VERSION', meson.project_version())
1010
conf.set('localedir', join_paths(get_option('prefix'), get_option('localedir')))
1111
conf.set('pkgdatadir', pkgdatadir)
1212
conf.set('sysconfigdir', sysconfdir)
13+
conf.set('log_print_output', get_option('log_print_output'))
14+
conf.set('log_print_stack', get_option('log_print_stack'))
1315
conf.set('use_flatpak', get_option('use_flatpak'))
1416

1517
configure_file(

src/utils.py

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import sys
2222
import locale
2323
import subprocess
24+
import traceback
2425

2526
import gi
2627

@@ -43,15 +44,26 @@ def __init__(self, parent, type, s):
4344
def isWindows():
4445
return os.name == 'nt'
4546

47+
def _logPrintOutput(msg):
48+
if constants.log_print_output:
49+
print(msg, file=sys.stderr)
50+
if constants.log_print_stack:
51+
traceback.print_stack()
52+
4653
# convenience function to display debug messages
47-
def logDebug(s):
48-
pass #sys.stderr.write(f'{constants.APP_NAME}: {s}\n')
54+
def logDebug(msg):
55+
_logPrintOutput(f'DEBUG: {msg}')
4956

5057
# report error messages
51-
def logError(s):
52-
m = MessageDialog(None, Gtk.MessageType.ERROR, s)
53-
m.run()
54-
m.destroy()
58+
def logError(msg):
59+
_logPrintOutput(f'ERROR: {msg}')
60+
61+
# report error messages and show dialog
62+
def logErrorAndDialog(msg,parent=None):
63+
logError(msg)
64+
dialog = MessageDialog(parent, Gtk.MessageType.ERROR, msg)
65+
dialog.run()
66+
dialog.destroy()
5567

5668
# create nested subdirectories and return the complete path
5769
def make_subdirs(p, ss):

0 commit comments

Comments
 (0)