Add About/Info dialog (implement #26)

This commit is contained in:
coderkun 2017-04-25 12:52:20 +02:00
commit e555956c95
4 changed files with 93 additions and 1 deletions

View file

@ -32,7 +32,8 @@ class Application(Gtk.Application):
def __init__(self):
Gtk.Application.__init__(self, application_id=Application.ID, flags=Gio.ApplicationFlags.FLAGS_NONE)
self._window = None
self._verbosity = self._verbosity = logging.WARNING
self._info_dialog = None
self._verbosity = logging.WARNING
self.add_main_option_entries([
Application._get_option("v", "verbose", "Be verbose: show info messages"),
Application._get_option("d", "debug", "Enable debugging: show debug messages")
@ -67,6 +68,12 @@ class Application(Gtk.Application):
self._window.present()
def on_menu_info(self, action, value):
if not self._info_dialog:
self._info_dialog = widgets.InfoDialog(self._builder)
self._info_dialog.run()
def on_menu_quit(self, action, value):
self.quit()
@ -112,6 +119,9 @@ class Application(Gtk.Application):
def _setup_actions(self):
action = Gio.SimpleAction.new("info", None)
action.connect('activate', self.on_menu_info)
self.add_action(action)
action = Gio.SimpleAction.new("quit", None)
action.connect('activate', self.on_menu_quit)
self.add_action(action)

View file

@ -24,6 +24,38 @@ from mcg.zeroconf import ZeroconfProvider
class InfoDialog():
def __init__(self, builder):
self._logger = logging.getLogger(__name__)
# Widgets
self._info_dialog = builder.get_object('info-dialog')
self._resize_logo()
def get(self):
return self._info_dialog
def run(self):
self._info_dialog.run()
self._info_dialog.hide()
def _resize_logo(self):
try:
logo_pixbuf = self._info_dialog.get_logo()
self._info_dialog.set_logo(
logo_pixbuf.scale_simple(256, 256, GdkPixbuf.InterpType.HYPER)
)
except:
self._logger.warn("Failed to resize logo")
class Window():
SETTING_HOST = 'host'
SETTING_PORT = 'port'