diff options
author | Aneesh Dogra <lionaneesh@gmail.com> | 2012-12-18 16:56:00 (GMT) |
---|---|---|
committer | Aneesh Dogra <lionaneesh@gmail.com> | 2012-12-18 17:01:32 (GMT) |
commit | e613ca2924e44688f1629196773fe9d8753fe33d (patch) | |
tree | d9ea34ef1dcc6afd81b2f25d3e814fbf6c22938e /SliderPuzzleUI.py | |
parent | a829c986c4754902b959e40553b0f365acda4e3f (diff) |
Initial Gtk3 port.
Diffstat (limited to 'SliderPuzzleUI.py')
-rwxr-xr-x | SliderPuzzleUI.py | 163 |
1 files changed, 80 insertions, 83 deletions
diff --git a/SliderPuzzleUI.py b/SliderPuzzleUI.py index 802ea82..506bdc0 100755 --- a/SliderPuzzleUI.py +++ b/SliderPuzzleUI.py @@ -17,10 +17,7 @@ # If you find this activity useful or end up using parts of it in one of your # own creations we would love to hear from you at info@WorldWideWorkshop.org ! # - -import pygtk -pygtk.require('2.0') -import gtk, gobject, pango +from gi.repository import Gtk, GObject, Pango from mamamedia_modules import utils from mamamedia_modules import NotebookReaderWidget @@ -50,8 +47,8 @@ import os import md5 try: - from sugar.activity import activity - from sugar.graphics import units + from sugar3.activity import activity + from sugar3.graphics import units _inside_sugar = True except: _inside_sugar = False @@ -73,36 +70,36 @@ COLOR_FRAME_THUMB = COLOR_FRAME_GAME COLOR_FRAME_CONTROLS = "#FFFF00" COLOR_BG_CONTROLS = "#66CC00" COLOR_FG_BUTTONS = ( - (gtk.STATE_NORMAL,"#CCFF99"), - (gtk.STATE_ACTIVE,"#CCFF99"), - (gtk.STATE_PRELIGHT,"#CCFF99"), - (gtk.STATE_SELECTED,"#CCFF99"), - (gtk.STATE_INSENSITIVE,"#CCFF99"), + (Gtk.StateType.NORMAL,"#CCFF99"), + (Gtk.StateType.ACTIVE,"#CCFF99"), + (Gtk.StateType.PRELIGHT,"#CCFF99"), + (Gtk.StateType.SELECTED,"#CCFF99"), + (Gtk.StateType.INSENSITIVE,"#CCFF99"), ) COLOR_BG_BUTTONS = ( - (gtk.STATE_NORMAL,"#027F01"), - (gtk.STATE_ACTIVE,"#014D01"), - (gtk.STATE_PRELIGHT,"#016D01"), - (gtk.STATE_SELECTED,"#027F01"), - (gtk.STATE_INSENSITIVE,"#CCCCCC"), + (Gtk.StateTypeNORMAL,"#027F01"), + (Gtk.StateTypeACTIVE,"#014D01"), + (Gtk.StateTypePRELIGHT,"#016D01"), + (Gtk.StateTypeSELECTED,"#027F01"), + (Gtk.StateTypeINSENSITIVE,"#CCCCCC"), ) def prepare_btn(btn, w=-1, h=-1): for state, color in COLOR_BG_BUTTONS: - btn.modify_bg(state, gtk.gdk.color_parse(color)) + btn.modify_bg(state, Gdk.color_parse(color)) c = btn.get_child() if c is not None: for state, color in COLOR_FG_BUTTONS: - c.modify_fg(state, gtk.gdk.color_parse(color)) + c.modify_fg(state, Gdk.color_parse(color)) else: for state, color in COLOR_FG_BUTTONS: - btn.modify_fg(state, gtk.gdk.color_parse(color)) + btn.modify_fg(state, Gdk.color_parse(color)) if w>0 or h>0: btn.set_size_request(w, h) return btn -class SliderPuzzleUI (gtk.Table): +class SliderPuzzleUI (Gtk.Table): __gsignals__ = {'game-state-changed' : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (int,))} def __init__(self, parent): @@ -116,7 +113,7 @@ class SliderPuzzleUI (gtk.Table): self._state = GAME_IDLE - inner_table = gtk.Table(2,2,False) + inner_table = Gtk.Table(2,2,False) self.add(inner_table) self.game = SliderPuzzleWidget(9, GAME_SIZE, GAME_SIZE) @@ -128,69 +125,69 @@ class SliderPuzzleUI (gtk.Table): desktop = BorderFrame(border_color=COLOR_FRAME_CONTROLS) desktop.show() desktop.add(self.game) - self.game_wrapper = gtk.VBox() + self.game_wrapper = Gtk.VBox() self.game_wrapper.show() - inner = gtk.HBox() + inner = Gtk.HBox() inner.show() #BorderFrame(border=BORDER_ALL_BUT_BOTTOM, # border_color=COLOR_FRAME_CONTROLS, # bg_color=COLOR_BG_CONTROLS) - inner.pack_start(desktop, expand=True, fill=False) - self.game_wrapper.pack_start(inner, expand=True, fill=False) + inner.pack_start(desktop, True, False, 0) + self.game_wrapper.pack_start(inner, True, False, 0) # panel is a holder for everything on the left side down to (not inclusive) the language dropdown - panel = gtk.VBox() + panel = Gtk.VBox() # Logo image - img_logo = gtk.Image() + img_logo = Gtk.Image() img_logo.set_from_file("icons/logo.png") img_logo.show() - panel.pack_start(img_logo, expand=False, fill=False) + panel.pack_start(img_logo, False, False, 0) # Control panel has the image controls control_panel = BorderFrame(border=BORDER_ALL_BUT_BOTTOM, border_color=COLOR_FRAME_CONTROLS, bg_color=COLOR_BG_CONTROLS) - control_panel_box = gtk.VBox() + control_panel_box = Gtk.VBox() control_panel.add(control_panel_box) - spacer = gtk.Label() + spacer = Gtk.Label() spacer.set_size_request(-1, 5) - control_panel_box.pack_start(spacer, expand=False, fill=False) + control_panel_box.pack_start(spacer, False, False, 0) # ... # Slice buttons - btn_box = gtk.Table(1,5,False) + btn_box = Gtk.Table(1,5,False) btn_box.set_col_spacings(5) btn_box.set_row_spacings(5) - btn_box.attach(gtk.Label(), 0,1,0,2) + btn_box.attach(Gtk.Label(), 0,1,0,2) - #spacer = gtk.Label() + #spacer = Gtk.Label() #spacer.set_size_request(-1, 15) - #control_panel_box.pack_start(spacer, expand=False, fill=False) - #cutter = gtk.HBox(False, 8) - #cutter.pack_start(gtk.Label(), True) - self.btn_9 = prepare_btn(gtk.ToggleButton("9"),SLICE_BTN_WIDTH) + #control_panel_box.pack_start(spacer, False, False, 0) + #cutter = Gtk.HBox(False, 8) + #cutter.pack_start(Gtk.Label(), True) + self.btn_9 = prepare_btn(Gtk.ToggleButton("9"),SLICE_BTN_WIDTH) self.btn_9.set_active(True) self.btn_9.connect("clicked", self.set_nr_pieces, 9) btn_box.attach(self.btn_9, 1,2,0,1,0,0) #cutter.pack_start(self.btn_9, False, False) - self.btn_12 = prepare_btn(gtk.ToggleButton("12"), SLICE_BTN_WIDTH) + self.btn_12 = prepare_btn(Gtk.ToggleButton("12"), SLICE_BTN_WIDTH) self.btn_12.connect("clicked", self.set_nr_pieces, 12) btn_box.attach(self.btn_12, 2,3,0,1,0,0) #cutter.pack_start(self.btn_12, False, False) - self.btn_16 = prepare_btn(gtk.ToggleButton("16"), SLICE_BTN_WIDTH) + self.btn_16 = prepare_btn(Gtk.ToggleButton("16"), SLICE_BTN_WIDTH) self.btn_16.connect("clicked", self.set_nr_pieces, 16) btn_box.attach(self.btn_16, 3,4,0,1,0,0) #cutter.pack_start(self.btn_16, False, False) - #cutter.pack_start(gtk.Label(), True) + #cutter.pack_start(Gtk.Label(), True) #control_panel_box.pack_start(cutter, True) - #spacer = gtk.Label() + #spacer = Gtk.Label() #spacer.set_size_request(-1, 10) #control_panel_box.pack_start(spacer, False) - btn_box.attach(gtk.Label(), 4,5,0,1) - control_panel_box.pack_start(btn_box, expand=False) + btn_box.attach(Gtk.Label(), 4,5,0,1) + control_panel_box.pack_start(btn_box, False, True, 0) @@ -199,33 +196,33 @@ class SliderPuzzleUI (gtk.Table): self.thumb = ImageSelectorWidget(self._parent,frame_color=COLOR_FRAME_THUMB, prepare_btn_cb=prepare_btn, image_dir='images') self.thumb.connect("category_press", self.do_select_category) self.thumb.connect("image_press", self.set_nr_pieces) - control_panel_box.pack_start(self.thumb, False) + control_panel_box.pack_start(self.thumb, False, True, 0) - spacer = gtk.Label() + spacer = Gtk.Label() spacer.set_size_request(-1, 5) - control_panel_box.pack_start(spacer, expand=False, fill=False) + control_panel_box.pack_start(spacer, False, False, 0) # The game control buttons - btn_box = gtk.Table(3,3,False) + btn_box = Gtk.Table(3,3,False) btn_box.set_row_spacings(2) - btn_box.attach(gtk.Label(), 0,1,0,3) - btn_box.attach(gtk.Label(), 2,3,0,3) - self.btn_solve = prepare_btn(gtk.Button(" "), 200) + btn_box.attach(Gtk.Label(), 0,1,0,3) + btn_box.attach(Gtk.Label(), 2,3,0,3) + self.btn_solve = prepare_btn(Gtk.Button(" "), 200) self.labels_to_translate.append([self.btn_solve, _("Solve")]) self.btn_solve.connect("clicked", self.do_solve) btn_box.attach(self.btn_solve, 1,2,0,1,0,0) - self.btn_shuffle = prepare_btn(gtk.Button(" "), 200) + self.btn_shuffle = prepare_btn(Gtk.Button(" "), 200) self.labels_to_translate.append([self.btn_shuffle, _("Shuffle")]) self.btn_shuffle.connect("clicked", self.do_shuffle) btn_box.attach(self.btn_shuffle, 1,2,1,2,0,0) - self.btn_add = prepare_btn(gtk.Button(" "), 200) + self.btn_add = prepare_btn(Gtk.Button(" "), 200) self.labels_to_translate.append([self.btn_add, _("My Picture")]) self.btn_add.connect("clicked", self.do_add_image) btn_box.attach(self.btn_add, 1,2,2,3,0,0) - control_panel_box.pack_start(btn_box, False) + control_panel_box.pack_start(btn_box, False, True, 0) # Control panel end - panel.pack_start(control_panel, expand=True, fill=True) + panel.pack_start(control_panel, True, True, 0) inner_table.attach(panel, 0,1,0,1,0) @@ -239,46 +236,46 @@ class SliderPuzzleUI (gtk.Table): lang_combo.install() lang_box = BorderFrame(bg_color=COLOR_BG_CONTROLS, border_color=COLOR_FRAME_CONTROLS) - hbox = gtk.HBox(False) - vbox = gtk.VBox(False) - vbox.pack_start(lang_combo, padding=8) - hbox.pack_start(vbox, padding=8) + hbox = Gtk.HBox(False) + vbox = Gtk.VBox(False) + vbox.pack_start(lang_combo, True, True, 8) + hbox.pack_start(vbox, True, True, 8) lang_box.add(hbox) - inner_table.attach(lang_box, 0,1,1,2,gtk.FILL, gtk.FILL) + inner_table.attach(lang_box, 0,1,1,2,Gtk.AttachOptions.FILL, Gtk.AttachOptions.FILL) timer_box = BorderFrame(border=BORDER_ALL_BUT_LEFT, bg_color=COLOR_BG_CONTROLS, border_color=COLOR_FRAME_CONTROLS) - timer_hbox = gtk.HBox(False) + timer_hbox = Gtk.HBox(False) self.timer = TimerWidget(bg_color=COLOR_BG_BUTTONS[0][1], fg_color=COLOR_FG_BUTTONS[0][1], lbl_color=COLOR_BG_BUTTONS[1][1]) self.timer.set_sensitive(False) self.timer.set_border_width(3) self.labels_to_translate.append((self.timer, _("Time: "))) - timer_hbox.pack_start(self.timer, False, padding=8) + timer_hbox.pack_start(self.timer, False, True, 8) self.timer.connect('timer_toggle', self.timer_toggle_cb) - self.msg_label = gtk.Label() + self.msg_label = Gtk.Label() self.msg_label.show() - timer_hbox.pack_start(self.msg_label, True) + timer_hbox.pack_start(self.msg_label, True, True, 0) - self.notebook = gtk.Notebook() + self.notebook = Gtk.Notebook() self.notebook.show() self.notebook.props.show_border = False self.notebook.props.show_tabs = False self.notebook.append_page(self.game_box) - inner_table.attach(self.notebook, 1,2,0,1, gtk.FILL, gtk.FILL) + inner_table.attach(self.notebook, 1,2,0,1, Gtk.AttachOptions.FILL, Gtk.AttachOptions.FILL) - self.btn_lesson = prepare_btn(gtk.Button(" ")) + self.btn_lesson = prepare_btn(Gtk.Button(" ")) self.labels_to_translate.append([self.btn_lesson, _("Lesson Plans")]) self.btn_lesson.connect("clicked", self.do_lesson_plan) - timer_hbox.pack_start(self.btn_lesson, False, padding=8) - vbox = gtk.VBox(False) - vbox.pack_start(timer_hbox, padding=8) + timer_hbox.pack_start(self.btn_lesson, False, True, 8) + vbox = Gtk.VBox(False) + vbox.pack_start(timer_hbox, True, True, 8) timer_box.add(vbox) - inner_table.attach(timer_box, 1,2,1,2,gtk.FILL|gtk.EXPAND, gtk.FILL) - #panel.pack_start(lang_box, expand=False, fill=False) + inner_table.attach(timer_box, 1,2,1,2,Gtk.AttachOptions.FILL|Gtk.AttachOptions.EXPAND, Gtk.AttachOptions.FILL) + #panel.pack_start(lang_box, False, False, 0) self.do_select_language(lang_combo) @@ -379,7 +376,7 @@ class SliderPuzzleUI (gtk.Table): def refresh_labels (self, first_time=False): self._parent.set_title(_("Slider Puzzle Activity")) for lbl in self.labels_to_translate: - if isinstance(lbl[0], gtk.Button): + if isinstance(lbl[0], Gtk.Button): lbl[0].get_child().set_label(_(lbl[1])) else: lbl[0].set_label(_(lbl[1])) @@ -393,11 +390,11 @@ class SliderPuzzleUI (gtk.Table): @utils.trace def set_nr_pieces (self, btn, nr_pieces=None): - #if isinstance(btn, gtk.ToggleButton) and not btn.get_active(): + #if isinstance(btn, Gtk.ToggleButton) and not btn.get_active(): # return - if self.is_contest_mode() and isinstance(btn, gtk.ToggleButton) and nr_pieces == self.game.get_nr_pieces(): + if self.is_contest_mode() and isinstance(btn, Gtk.ToggleButton) and nr_pieces == self.game.get_nr_pieces(): return - if isinstance(btn, gtk.ToggleButton): + if isinstance(btn, Gtk.ToggleButton): if not btn.get_active(): if nr_pieces == self.game.get_nr_pieces(): logging.debug("A") @@ -405,7 +402,7 @@ class SliderPuzzleUI (gtk.Table): return if nr_pieces is None: nr_pieces = self.game.get_nr_pieces() - if btn is None: #not isinstance(btn, gtk.ToggleButton): + if btn is None: #not isinstance(btn, Gtk.ToggleButton): if self._contest_mode: self.set_game_state(GAME_STARTED) for n, b in ((9, self.btn_9),(12, self.btn_12),(16, self.btn_16)): @@ -421,7 +418,7 @@ class SliderPuzzleUI (gtk.Table): #self.thumb.set_game_widget(self.game) self.game.set_nr_pieces(nr_pieces) self.timer.reset(False) - if isinstance(btn, gtk.ToggleButton): + if isinstance(btn, Gtk.ToggleButton): for n, b in ((9, self.btn_9),(12, self.btn_12),(16, self.btn_16)): if b is not btn: logging.debug("C") @@ -580,8 +577,8 @@ class SliderPuzzleUI (gtk.Table): def process_key (self, w, e): """ The callback for key processing. The button shortcuts are all defined here. """ - k = gtk.gdk.keyval_name(e.keyval) - if not isinstance(self._parent.get_focus(), gtk.Editable): + k = Gdk.keyval_name(e.keyval) + if not isinstance(self._parent.get_focus(), Gtk.Editable): if k == '1': self.btn_9.clicked() return True @@ -610,7 +607,7 @@ class SliderPuzzleUI (gtk.Table): self.btn_solve.clicked() return True if k in ('Escape', 'q'): - gtk.main_quit() + Gtk.main_quit() return True return False @@ -650,9 +647,9 @@ class SliderPuzzleUI (gtk.Table): self._parent.game_tube.StatusUpdate(self._state[1], self.timer.is_running(), self.timer.ellapsed()) def main(): - win = gtk.Window(gtk.WINDOW_TOPLEVEL) + win = Gtk.Window(Gtk.WindowType.TOPLEVEL) t = SliderPuzzleUI(win) - gtk.main() + Gtk.main() return 0 if __name__ == "__main__": |