def __init__(self, parent): super(FindWordsDialog, self).__init__(parent, u"Find words") self.wordlists = parent.wordlists self.sort_option = 0 self.pattern = None self.pack(create_label(u"Use ? for an unknown letter and * for zero or more unknown letters.")) def on_entry_changed(widget): glib.source_remove(self.timer) self.launch_pattern(widget.get_text().strip()) self.pack(create_entry(f_change=on_entry_changed), False) # word path score self.store, self.tree, s_window = create_tree((str, str, int) , [(u"Word", 0), (u"Word list", 1), (u"Score", 2)] , window_size=(-1, 300) ) self.tree.get_column(0).set_sizing(gtk.TREE_VIEW_COLUMN_FIXED) self.tree.get_column(0).set_fixed_width(250) self.pack(s_window) self.n_label = create_label("") self.set_n_label(0) self.pack(self.n_label, False) sort_hbox = gtk.HBox(False, 6) sort_hbox.pack_start(create_label(u"Sort by:"), False, False, 0) def on_sort_changed(combo): self.sort_option = combo.get_active() self.launch_pattern(self.pattern) sort_hbox.pack_start(create_combo(["Alphabet", "Length", "Score"] , active=self.sort_option, f_change=on_sort_changed)) self.pack(sort_hbox, False) self.add_button(gtk.STOCK_OK, gtk.RESPONSE_OK) self.launch_pattern(None)
def __init__(self, parent, puzzle): super(AccidentalWordsDialog, self).__init__(parent, u"View accidental words") self.puzzle = puzzle self.wordlists = parent.wordlists self.index = 0 self.collapse = True self.timer = None wlist_hbox = gtk.HBox(False, 0) wlist_hbox.pack_start(create_label(u"Check for words in list:"), True, True, 0) def on_wordlist_changed(widget): self.index = widget.get_active() self.launch_accidental(self.puzzle.grid) combo = create_combo([w.name for w in self.wordlists] , active=self.index, f_change=on_wordlist_changed) wlist_hbox.pack_start(combo, False, False, 0) self.main.pack_start(wlist_hbox, False, False, 0) self.store, self.tree, s_window = create_tree((str, str) , [(u"Word", 0)], window_size=(300, 300)) self.tree.get_selection().connect("changed", self.on_selection_changed) self.main.pack_start(s_window, True, True, 0) self.main.pack_start(create_label(u"Click to highlight the word(s) in the grid."), False, False, 0) def collapse_callback(button): self.collapse = button.get_active() self.launch_accidental(self.puzzle.grid) button = gtk.CheckButton("Collapse multiple occurrences into one item.") button.connect("toggled", collapse_callback) button.set_active(self.collapse) self.main.pack_start(button, False, False, 0) self.add_button(gtk.STOCK_OK, gtk.RESPONSE_OK) destroy = lambda w: highlight_cells(self.pwindow, self.puzzle, clear=True) self.connect("destroy", destroy) self.launch_accidental(puzzle.grid)
def create(self): img = gtk.Image() img.set_from_file(get_real_filename("resources/icon1.png")) def on_button_toggled(self, button): self.show_intersect = button.get_active() self.display_words() toggle_button = gtk.ToggleButton() toggle_button.set_property("image", img) toggle_button.set_tooltip_text(u"Show only words with intersecting words") toggle_button.connect("toggled", lambda b: on_button_toggled(self, b)) img = gtk.Image() img.set_from_file(get_real_filename("resources/icon2.png")) def on_button2_toggled(self, button): self.show_used = not button.get_active() self.display_words() toggle_button2 = gtk.ToggleButton() toggle_button2.set_property("image", img) toggle_button2.set_tooltip_text(u"Show only unused words") toggle_button2.connect("toggled", lambda b: on_button2_toggled(self, b)) buttons = gtk.HButtonBox() buttons.set_layout(gtk.BUTTONBOX_START) buttons.add(toggle_button) buttons.add(toggle_button2) self.main = gtk.VBox(False, 0) self.main.set_spacing(9) self.main.pack_start(buttons, False, False, 0) self.view = EditorWordWidget(self.parent) sw = gtk.ScrolledWindow(None, None) sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) sw.add_with_viewport(self.view) self.main.pack_start(sw, True, True, 0) show_hbox = gtk.HBox() show_hbox.pack_start(create_label(u"Sort words by:")) def on_show_changed(widget): self.show_order = widget.get_active() self.display_words() show_combo = create_combo(WORD_DISPLAY_OPTIONS, active=self.show_order, f_change=on_show_changed) show_hbox.pack_start(show_combo) self.main.pack_start(show_hbox, False, False, 0) hbox = gtk.HBox(False, 0) hbox.set_border_width(6) hbox.set_spacing(6) hbox.pack_start(self.main, True, True, 0) return hbox
def create_blacklist(self, parent): vbox = gtk.VBox() vbox.set_border_width(9) vbox.set_spacing(9) self.blacklist_combo = create_combo([''] + [w.name for w in self.wordlists]) for i, wlist in enumerate(self.wordlists): if preferences.prefs[constants.PREF_BLACKLIST] == wlist.path: self.blacklist_combo.set_active(i + 1) break vbox.pack_start(create_label(u"Word list to be used as blacklist:"), False, False, 0) vbox.pack_start(self.blacklist_combo, False, False, 0) return vbox
def __init__(self, parent, size=None): super(GridEditor, self).__init__(parent, u"Grid editor", horizontal=True) self.size = size if size else (15, 15) table = gtk.Table(2, 2, False) radio = gtk.RadioButton(None, u"Tile from: ") radio.connect("toggled", self.on_option_toggle, "tile") self.tile_starts = [(p, q) for q in xrange(2) for p in xrange(2)] self.tile_combo = gtk.combo_box_new_text() self.tile_combo.append_text(u"") for x, y in self.tile_starts: content = str(''.join(["(", str(x + 1), ",", str(y + 1), ")" ])) self.tile_combo.append_text(content) self.tile_combo.connect("changed", self.on_tile_changed) table.attach(radio, 0, 1, 0, 1) table.attach(self.tile_combo, 1, 2, 0, 1) radio = gtk.RadioButton(radio, u"Fill with: ") radio.connect("toggled", self.on_option_toggle, "fill") self.fill_combo = create_combo([u"", u"Block"], f_change=self.on_fill_changed) table.attach(radio, 0, 1, 1, 2) table.attach(self.fill_combo, 1, 2, 1, 2) self.preview = GridPreview() self.preview.set_size_request(384, 384) alignment = gtk.Alignment() alignment.add(table) vbox2 = gtk.VBox(False, 6) vbox2.pack_start(create_label(u"<b>Options</b>"), False, False, 0) vbox2.pack_start(alignment, False, False, 0) self.pack(vbox2, False) self.pack(self.preview, False) self.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL) self.ok_button = self.add_button(gtk.STOCK_OK, gtk.RESPONSE_OK) self.ok_button.set_sensitive(False) self._select_option("tile") self.display_pattern(None)