Пример #1
0
    def __init__(self, parent):
        gtk.Dialog.__init__(self, u"Find anagrams", parent, gtk.DIALOG_MODAL)
        self.wordlists = parent.wordlists

        hbox = gtk.HBox(False, 0)
        hbox.set_border_width(12)
        hbox.set_spacing(18)
        main = gtk.VBox(False, 0)
        main.set_spacing(18)

        main.pack_start(create_entry(f_change=self.on_buffer_changed), False, False, 0)

        self.store = gtk.ListStore(str)
        self.tree = gtk.TreeView(self.store)
        cell = gtk.CellRendererText()
        column = gtk.TreeViewColumn(u"Contained words", cell, text=0)
        self.tree.append_column(column)
        scrolled_window = gtk.ScrolledWindow()
        scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        scrolled_window.add(self.tree)
        scrolled_window.set_size_request(300, 300)
        main.pack_start(scrolled_window, True, True, 0)
        hbox.pack_start(main, True, True, 0)

        self.vbox.pack_start(hbox, True, True, 0)

        self.add_button(gtk.STOCK_OK, gtk.RESPONSE_OK)

        self.timer = glib.timeout_add(INPUT_DELAY, self.find_words)
Пример #2
0
 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)
Пример #3
0
    def create_contents_tab(self):
        self.selected_word = None
        self.selected_offset = None
        def on_select_word(item, offset=None):
            self.selected_word = None if item is None else item[0]
            self.selected_offset = offset
            self.word_entry.set_sensitive(item is not None)
            self.word_spinner.set_sensitive(item is not None)
            if item is not None:
                word, score, h = item
                self.word_entry.set_text(word)
                self.word_spinner.set_value(score)
        self.word_widget = EditWordWidget(on_select_word)
        vbox = gtk.VBox()
        vbox.set_border_width(6)
        vbox.set_spacing(6)
        vbox.pack_start(create_scroll(self.word_widget, True, size=(300, -1)))

        edit_hbox = gtk.HBox()

        def on_word_changed(widget):
            word = widget.get_text().strip()
            self.word_widget.update(word, self.selected_offset)
        self.word_entry = create_entry(on_word_changed)
        self.word_entry.modify_font(pango.FontDescription('monospace'))

        def on_update(widget):
            score = widget.get_value_as_int()
            self.word_widget.update_score(score, self.selected_offset)
            word = self.word_widget.get_selected_word()
            self.current_wlist.update_score(word, score)
        self.word_spinner = create_spinner(0, 0, 100, f_change=on_update)

        self.clear_word_edit_controls()

        edit_hbox.pack_start(self.word_entry)
        edit_hbox.pack_start(self.word_spinner, False, False)
        vbox.pack_start(edit_hbox, False, False)

        def on_edit_scores(button):
            on_done = lambda window: window.get_settings()
            response, settings = launch_dialog(WordListScoreDialog, self
                , self.current_wlist, f_done=on_done)
            if response == gtk.RESPONSE_APPLY:
                self.clear_word_edit_controls()
                self.current_wlist.change_scores(*settings)
                self.word_widget.set_words(get_words_by_length(self.current_wlist))
        self.scores_button = create_button(u"Edit scores", f_click=on_edit_scores, align=(0, 0))
        self.wlist_sensitives.append(self.scores_button)
        self.scores_button.set_sensitive(False)
        vbox.pack_start(self.scores_button, False, False)

        hbox = gtk.HBox()
        hbox.set_spacing(6)
        vbox.pack_start(hbox, False, False)
        return vbox