From 5ceda38732c57211d3f38e6cbbd7b8a521a0a9e5 Mon Sep 17 00:00:00 2001 From: Daniel Francis Date: Wed, 03 Oct 2012 00:23:16 +0000 Subject: Start sugarizing; use Gtk3 --- (limited to 'application.py') diff --git a/application.py b/application.py index fe11039..aa4ef72 100755 --- a/application.py +++ b/application.py @@ -21,15 +21,16 @@ import os import logging logging.basicConfig(level=logging.DEBUG) -import glib +from gi.repository import GLib import info logger = logging.getLogger(info.lower_name) appname = info.name # Some desktops like Gnome3-Shell show the Glib Prgname -glib.set_prgname(appname) -glib.set_application_name(appname) +GLib.set_prgname(appname) +GLib.set_application_name(appname) -import gtk +from gi.repository import Gtk +from gi.repository import Gdk from options import Options from canvas import Canvas @@ -42,35 +43,22 @@ os.chdir(this_dir) from gettext import gettext as _ -if 'programabspath' in os.environ['DATADIR']: - datadir = os.environ['DATADIR'].replace('programabspath', - this_dir) -else: - datadir = os.environ['DATADIR'] - -if os.environ['ICONDIR'] != 'SYSTEM': - logger.debug(this_dir) - icondir = os.environ['ICONDIR'].replace('programabspath', - this_dir) - icon_theme = gtk.icon_theme_get_for_screen(gtk.gdk.screen_get_default()) - icon_theme.append_search_path(icondir) - -class UnfullscreenButton(gtk.Window): +class UnfullscreenButton(Gtk.Window): def __init__(self): - gtk.Window.__init__(self) + Gtk.Window.__init__(self) self.set_decorated(False) self.set_resizable(False) - self.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG) + self.set_type_hint(Gdk.WindowTypeHint.DIALOG) self.set_border_width(0) self.props.accept_focus = False #Setup estimate of width, height - w, h = gtk.icon_size_lookup(gtk.ICON_SIZE_LARGE_TOOLBAR) + w, h = Gtk.icon_size_lookup(Gtk.IconSize.LARGE_TOOLBAR) self._width = w self._height = h @@ -79,8 +67,8 @@ class UnfullscreenButton(gtk.Window): screen = self.get_screen() screen.connect('size-changed', self._screen_size_changed_cb) - self._button = gtk.Button(stock=gtk.STOCK_LEAVE_FULLSCREEN) - self._button.set_relief(gtk.RELIEF_NONE) + self._button = Gtk.Button(stock=Gtk.STOCK_LEAVE_FULLSCREEN) + self._button.set_relief(Gtk.ReliefStyle.NONE) self._button.show() self.add(self._button) @@ -100,28 +88,30 @@ class UnfullscreenButton(gtk.Window): self._reposition() -class Application(gtk.Window): +class Application(Gtk.Window): def __init__(self): - gtk.Window.__init__(self) + Gtk.Window.__init__(self) self.save_type = info.io_mode self.started = False self.file_path = None + self.filter = Gtk.FileFilter() if info.file_filter_name: - self.filter = gtk.FileFilter() self.filter.set_name(info.file_filter_name) if info.file_filter_mime: self.filter.add_mime_type(info.file_filter_mime) - for i in info.file_filter_patterns: - self.filter.add_pattern(i) - self.accel_group = gtk.AccelGroup() + if info.file_filter_pattern: + self.filter.add_pattern(info.file_filter_pattern) + else: + self.filter.set_name(_('All')) + self.filter.add_pattern('*') + self.accel_group = Gtk.AccelGroup() self.add_accel_group(self.accel_group) self.set_title(appname) logger.debug(info.lower_name) - self.set_icon(gtk.gdk.pixbuf_new_from_file(os.path.join(datadir, - 'appicon.svg'))) + self.set_icon_name('gtkslidy') self.connect('delete-event', lambda w, e: self.stop()) self.maximize() - self._vbox = gtk.VBox() + self._vbox = Gtk.VBox() self.options = Options(self) self.options.show() self._vbox.pack_start(self.options, False, True, 0) @@ -132,12 +122,12 @@ class Application(gtk.Window): self._vbox.show() self._is_fullscreen = False - self.set_events(gtk.gdk.ALL_EVENTS_MASK) + self.set_events(Gdk.EventMask.ALL_EVENTS_MASK) self.connect('motion-notify-event', self.motion_cb) - self.canvas.connect('expose-event', self.expose_event) + self.canvas.connect('draw', self.expose_event) - def expose_event(self, widget, event): - logger.debug('Exposing') + def expose_event(self, widget, context): + #logger.debug('Exposing') if not self.started: if self.file_path != None: self.canvas.read_file(self.file_path) @@ -171,17 +161,19 @@ class Application(gtk.Window): self.options.show() self._is_fullscreen = False self._unfullscreen_button.destroy() - gtk.Window.unfullscreen(self) + Gtk.Window.unfullscreen(self) def export(self, widget, data): format_name = data[3] filter_mime = data[2] mime_type = data[1] - filechooser = gtk.FileChooserDialog(_("Export..."), self, - gtk.FILE_CHOOSER_ACTION_SAVE, - (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, - gtk.STOCK_OK, gtk.RESPONSE_OK)) - file_filter = gtk.FileFilter() + filechooser = Gtk.FileChooserDialog(_("Export..."), self, + Gtk.FileChooserAction.SAVE, + (Gtk.STOCK_CANCEL, + Gtk.ResponseType.CANCEL, + Gtk.STOCK_OK, + Gtk.ResponseType.OK)) + file_filter = Gtk.FileFilter() file_filter.set_name(format_name) file_filter.add_mime_type(filter_mime) filechooser.add_filter(file_filter) @@ -200,18 +192,19 @@ class Application(gtk.Window): if info.io_mode == info.CONFIG: self.file_path = os.path.join(os.environ['HOME'], '.' + info.lower_name) self.save() - gtk.main_quit() + Gtk.main_quit() def open(self): - filechooser = gtk.FileChooserDialog(_('Open...'), self, - gtk.FILE_CHOOSER_ACTION_OPEN, - (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, - gtk.STOCK_OPEN, gtk.RESPONSE_OK)) + filechooser = Gtk.FileChooserDialog(_('Open...'), self, + Gtk.FileChooserAction.OPEN, + (Gtk.STOCK_CANCEL, + Gtk.ResponseType.CANCEL, + Gtk.STOCK_OPEN, Gtk.ResponseType.OK)) filechooser.add_filter(self.filter) response = filechooser.run() self.file_path = filechooser.get_filename() filechooser.destroy() - if response == gtk.RESPONSE_OK: + if response == Gtk.ResponseType.OK: logger.debug('Read file %s' % self.file_path) self.canvas.read_file(self.file_path) self.set_title('%s - %s' % (self.file_path, appname)) @@ -224,23 +217,25 @@ class Application(gtk.Window): self.canvas.write_file(self.file_path) def save_as(self): - filechooser = gtk.FileChooserDialog(_('Save...'), self, - gtk.FILE_CHOOSER_ACTION_SAVE, - (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, - gtk.STOCK_OK, gtk.RESPONSE_OK)) + filechooser = Gtk.FileChooserDialog(_('Save...'), self, + Gtk.FileChooserAction.SAVE, + (Gtk.STOCK_CANCEL, + Gtk.ResponseType.CANCEL, + Gtk.STOCK_OK, + Gtk.ResponseType.OK)) filechooser.add_filter(self.filter) filechooser.set_do_overwrite_confirmation(True) response = filechooser.run() self.file_path = filechooser.get_filename() filechooser.destroy() - if response == gtk.RESPONSE_OK: + if response == Gtk.ResponseType.OK: logger.debug('Save file as %s' % self.file_path) self.canvas.write_file(self.file_path) self.set_title('%s - %s' % (self.file_path, appname)) -if __name__ == '__main__': - logger.debug('Initializing Graph Plotter') +def start(): + logger.debug('Initializing %s' % info.name) import sys if info.io_mode == info.DOCUMENT: if len(sys.argv) > 1: @@ -262,6 +257,8 @@ if __name__ == '__main__': window = Application() window.file_path = file_path window.show() - gtk.main() - logger.debug('Closing Graph Plotter') + Gtk.main() + logger.debug('Closing') exit() + +start() -- cgit v0.9.1