--- data/gtk_frontend.py.orig +++ data/gtk_frontend.py @@ -23,6 +23,8 @@ import time import locale import gettext +import tempfile +import gzip import pygtk pygtk.require('2.0') @@ -31,7 +33,7 @@ import gnome.ui import gobject -from bootconfig import StartupThread, ShutdownThread, FloppyThread +from bootconfig import StartupThread, ShutdownThread, FloppyThread, utils APP_NAME = 'startupmanager' APP_VERSION = '1.9.12' @@ -161,6 +163,7 @@ self.main_window.realize() self.splashy_set = False self.usplash_set = False + self.resolution = utils.get_resolution() #Display a Progress dialog during config initialization dialog = gtk.Dialog(title=_('StartUp-Manager'), parent=self.main_window) progress = gtk.ProgressBar() @@ -534,6 +537,47 @@ self.grub.remove_image(name) self.refresh_legacy_grub_themes() + def on_preview_window_keypress(self, widget, event): + keyname = gtk.gdk.keyval_name(event.keyval) + if keyname == 'Escape': + utils.set_resolution(self.resolution) + widget.hide() + + def on_preview_grub_button_clicked(self, widget): + selected = self.grub_treeview.get_selection().get_selected() + model = selected[0] + iter = selected[1] + if iter: + name = model.get_value(iter, 0) + else: + name = self.grub_splash_combo.get_active_text() + + filename = os.path.join(self.grub.splashdir, '%s.xpm.gz' % name) + handle = gzip.open(filename, 'rb') + xpm_data = handle.read() + handle.close() + tmpfile = tempfile.NamedTemporaryFile() + tmpfile.write(xpm_data) + screen = gtk.gdk.screen_get_default() + pixmap, mask = gtk.gdk.pixmap_create_from_xpm(screen.get_root_window(), + None, tmpfile.name) + tmpfile.close() + + dialog = gtk.MessageDialog(parent=self.main_window, + flags=gtk.DIALOG_MODAL, + type=gtk.MESSAGE_INFO, + buttons=gtk.BUTTONS_OK, + message_format=_('When you wish to leave ' + 'the preview, press Esc.')) + dialog.run() + dialog.destroy() + + x, y = self.resolution_combo.get_active_text().split('x') + utils.set_resolution(x + 'x' + y) + self.preview_window.resize(int(x), int(y)) + self.preview_window.child.set_from_pixmap(pixmap, mask) + self.preview_window.show_all() + def on_grub_file_chooser_update_preview(self, widget): filename = self.grub_file_chooser.get_filename() self.grub.add_image(filename) @@ -996,4 +1040,5 @@ self.splashy_treeview = get_widget('splashy_treeview') self.usplash_dialog = get_widget('usplash_dialog') self.usplash_treeview = get_widget('usplash_treeview') + self.preview_window = get_widget('preview_window') --- data/startupmanager.glade.orig +++ data/startupmanager.glade @@ -653,8 +653,9 @@ - + True + 6 True @@ -664,6 +665,16 @@ + + + True + True + Preview theme + True + 0 + + + 2 @@ -1658,4 +1669,18 @@ + + 0 + StartUp-Manager + True + False + True + main_window + + + + True + + + --- bootconfig/utils.py.orig +++ bootconfig/utils.py @@ -151,3 +151,13 @@ os.rmdir('/mnt/floppysum') return 0 +def get_resolution(): + pipe = os.popen('xrandr') + data = pipe.read() + pipe.close() + matches = re.search('current (\d+) x (\d+)', data) + return matches.group(1) + 'x' + matches.group(2) + +def set_resolution(resolution): + os.system('xrandr --size ' + resolution) +