From 801cd26e46075fa822b789ff79e775bc9079ea53 Mon Sep 17 00:00:00 2001 From: Alexander Kurtakov Date: Mar 01 2019 08:08:51 +0000 Subject: Port to Gtk3. * Update glade file to be gtk3 compatible. * Switch to use python-gobject. --- diff --git a/switch_java_gui.py b/switch_java_gui.py index 2081c6d..f3d3132 100644 --- a/switch_java_gui.py +++ b/switch_java_gui.py @@ -16,8 +16,9 @@ # Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301 USA. -import gtk -import gtk.glade +import gi +gi.require_version("Gtk", "3.0") +from gi.repository import Gtk from switch_java_functions import * from switch_java_globals import DATA_ROOT_DIR, PACKAGE_NAME @@ -27,27 +28,27 @@ class mainDialog: def main(self, java_identifiers, default_java, pretty_names): # Initialize UI. - xml = gtk.glade.XML(DATA_ROOT_DIR + '/' + PACKAGE_NAME + '/' + - PACKAGE_NAME + '.glade', - None, domain=PACKAGE_NAME) - self.dialog = xml.get_widget('dialog') + builder = Gtk.Builder() + builder.add_from_file(DATA_ROOT_DIR + '/' + PACKAGE_NAME + '/' + + PACKAGE_NAME + '.glade') + self.dialog = builder.get_object('dialog') self.dialog.set_title(TITLE_MESSAGE) - radio_vbox = xml.get_widget('radio-vbox') - xml.get_widget('instruction-label').set_text(INSTRUCTION_MESSAGE) - xml.get_widget('selection-label').set_markup('' + radio_vbox = builder.get_object('radio-vbox') + builder.get_object('instruction-label').set_text(INSTRUCTION_MESSAGE) + builder.get_object('selection-label').set_markup('' + SELECTION_MESSAGE + '') - ok_button = xml.get_widget('ok-button') + ok_button = builder.get_object('ok-button') # Initialize alternatives list. self.radio_buttons = {} self.alternatives = {} for java in java_identifiers: if len(self.radio_buttons) == 0: - self.radio_buttons[java] = gtk.RadioButton(None, + self.radio_buttons[java] = Gtk.RadioButton.new_with_label_from_widget(None, pretty_names[java]) group_button = self.radio_buttons[java] else: - self.radio_buttons[java] = gtk.RadioButton(group_button, + self.radio_buttons[java] = Gtk.RadioButton.new_with_label_from_widget(group_button, pretty_names[java]) radio_vbox.pack_start(self.radio_buttons[java], False, False, 0) self.radio_buttons[java].set_use_underline(False); @@ -61,17 +62,17 @@ class mainDialog: self.radio_buttons[default_java].grab_focus() ok_button.connect('clicked', self.ok_button_clicked) ok_button.set_sensitive(False) - xml.get_widget('cancel-button').connect('clicked', + builder.get_object('cancel-button').connect('clicked', self.cancel_button_clicked) self.dialog.connect('delete-event', self.dialog_delete_event) - self.dialog.connect('hide', gtk.main_quit) + self.dialog.connect('hide', Gtk.main_quit) self.dialog.set_icon_from_file(DATA_ROOT_DIR + '/pixmaps/' + PACKAGE_NAME + '.png') self.dialog.show() - gtk.main() + Gtk.main() def dialog_delete_event(self, *args): - gtk.main_quit() + Gtk.main_quit() def ok_button_clicked(self, button): for radio_button in self.radio_buttons.values(): @@ -79,20 +80,25 @@ class mainDialog: switch_java(self.alternatives[radio_button]) break self.dialog.hide() - gtk.main_quit() + Gtk.main_quit() def cancel_button_clicked(self, button): self.dialog.hide() - gtk.main_quit() + Gtk.main_quit() def show_dialog(self, message): - dialog = gtk.MessageDialog(None, - gtk.DIALOG_MODAL - | gtk.DIALOG_DESTROY_WITH_PARENT, - gtk.MESSAGE_INFO, - gtk.BUTTONS_OK, + dialog = Gtk.MessageDialog(None, + Gtk.DialogFlags.MODAL + | Gtk.DialogFlags.DESTROY_WITH_PARENT, + Gtk.MessageType.INFO, + Gtk.ButtonsType.OK, message) dialog.set_title(TITLE_MESSAGE) dialog.set_icon_from_file(DATA_ROOT_DIR + '/pixmaps/' + PACKAGE_NAME + '.png') dialog.run() dialog.destroy() + + +if __name__ == '__main__': + mainDialog.show_dialog("test") + \ No newline at end of file diff --git a/system-switch-java.glade b/system-switch-java.glade index 0c34938..bfe7867 100644 --- a/system-switch-java.glade +++ b/system-switch-java.glade @@ -1,184 +1,155 @@ - - - - - + + + + + + + False 5 - GTK_WINDOW_TOPLEVEL - GTK_WIN_POS_NONE - False False - False - True - False - False - GDK_WINDOW_TYPE_HINT_DIALOG - GDK_GRAVITY_NORTH_WEST - True - False - False - + dialog + + + - - True - False - 2 - - - - True - GTK_BUTTONBOX_END - - - - True - True - True - True - gtk-ok - True - GTK_RELIEF_NORMAL - True - + + True + False + 2 + + + True + False + end + + + gtk-ok + True + True + True + True + False + True + + + True + True + 0 + + + + + gtk-cancel + True + True + True + True + False + True + + + True + True + 1 + + + + + False + True + end + 0 + - - - True - True - True - True - gtk-cancel - True - GTK_RELIEF_NORMAL - True - - - - - - 0 - False - True - GTK_PACK_END - - - - - - 5 - True - False - 6 - - - - True - - - - True - False - False - GTK_JUSTIFY_LEFT - True - False - 0 - 0.5 - 0 - 6 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - 0 - False - True - - - - - - True - False - 6 - - - - True - False - True - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - False - 6 - - - - - - - 0 - True - True - - - - - - 0 - True - True - - - - - - - + + True + False + 5 + vertical + 6 + + + True + False + + + True + False + 6 + 6 + True + 0 + 0.5 + + + False + False + 0 + + + + + False + True + 0 + + + + + True + False + vertical + 6 + + + True + False + True + 0 + 0.5 + + + False + False + 0 + + + + + True + False + 12 + + + True + False + vertical + 6 + + + + + True + True + 1 + + + + + True + True + 1 + + + + + False + True + 1 + + + - - - + +