def __init__(self, persp): GObject.GObject.__init__(self) self.persp = persp self.filtered = False self.widgets = uistuff.GladeWidgets("PyChess.glade") # Build variant combo model variant_store = Gtk.ListStore(str, int) for name, variant in sorted(name2variant.items()): variant_store.append((name, variant.variant)) self.widgets["variant"].set_model(variant_store) renderer_text = Gtk.CellRendererText() self.widgets["variant"].pack_start(renderer_text, True) self.widgets["variant"].add_attribute(renderer_text, "text", 0) # Connect date_from and date_to to corresponding calendars self.widgets["date_from_button"].connect("clicked", on_pick_date, self.widgets["date_from"]) self.widgets["date_to_button"].connect("clicked", on_pick_date, self.widgets["date_to"]) # Add piece widgets to dialog *_dock containers on material tab self.dialog = self.widgets["filter_dialog"] self.dialog.set_transient_for(mainwindow()) def hide(widget, event): widget.hide() return True self.dialog.connect("delete-event", hide) for piece in "qrbnp": dock = "w%s_dock" % piece self.widgets[dock].add(PieceWidget(Piece(WHITE, chr2Sign[piece]))) self.widgets[dock].get_child().show() dock = "b%s_dock" % piece self.widgets[dock].add(PieceWidget(Piece(BLACK, chr2Sign[piece]))) self.widgets[dock].get_child().show() dock = "moved_%s_dock" % piece self.widgets[dock].add(PieceWidget(Piece(BLACK, chr2Sign[piece]))) self.widgets[dock].get_child().show() dock = "captured_%s_dock" % piece self.widgets[dock].add(PieceWidget(Piece(BLACK, chr2Sign[piece]))) self.widgets[dock].get_child().show() piece = "k" dock = "moved_%s_dock" % piece self.widgets[dock].add(PieceWidget(Piece(BLACK, chr2Sign[piece]))) self.widgets[dock].get_child().show() self.widgets["copy_sub_fen"].connect("clicked", self.on_copy_sub_fen) self.widgets["paste_sub_fen"].connect("clicked", self.on_paste_sub_fen) # We will store our filtering queries in a ListStore # column 0: query as text # column 1: query dict # column 2: filter type (NONE, TAG_FILTER or MATERIAL_FILTER or PATTERN_FILTER) # column 3: row type (RULE, SEQUENCE, STREAK) self.treestore = Gtk.TreeStore(str, object, int, int) self.set_model(self.treestore) self.set_headers_visible(True) self.set_grid_lines(Gtk.TreeViewGridLines.HORIZONTAL) column = Gtk.TreeViewColumn("filter", Gtk.CellRendererText(), text=0) column.set_min_width(80) self.append_column(column) self.columns_autosize() sw = Gtk.ScrolledWindow() sw.set_shadow_type(Gtk.ShadowType.ETCHED_IN) sw.add(self) self.box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) self.box.pack_start(sw, True, True, 0) # Add buttons toolbar = Gtk.Toolbar() editButton = Gtk.ToolButton(Gtk.STOCK_EDIT) editButton.set_tooltip_text(_("Edit selected filter")) editButton.connect("clicked", self.on_edit_clicked) toolbar.insert(editButton, -1) delButton = Gtk.ToolButton(Gtk.STOCK_REMOVE) delButton.set_tooltip_text(_("Remove selected filter")) delButton.connect("clicked", self.on_del_clicked) toolbar.insert(delButton, -1) addButton = Gtk.ToolButton(Gtk.STOCK_ADD) addButton.set_tooltip_text(_("Add new filter")) addButton.connect("clicked", self.on_add_clicked) toolbar.insert(addButton, -1) addSeqButton = Gtk.ToolButton() addSeqButton.set_label(_("Seq")) addSeqButton.set_is_important(True) addSeqButton.set_tooltip_text(_("Create new squence where listed conditions may be satisfied at different times in a game")) addSeqButton.connect("clicked", self.on_add_sequence_clicked) toolbar.insert(addSeqButton, -1) addStreakButton = Gtk.ToolButton() addStreakButton.set_label(_("Str")) addStreakButton.set_is_important(True) addStreakButton.set_tooltip_text(_("Create new streak sequence where listed conditions have to be satisfied in consecutive (half)moves")) addStreakButton.connect("clicked", self.on_add_streak_clicked) toolbar.insert(addStreakButton, -1) self.filterButton = Gtk.ToggleToolButton(Gtk.STOCK_FIND) self.filterButton.set_tooltip_text(_("Filter game list by various conditions")) self.filterButton.connect("clicked", self.on_filter_clicked) toolbar.insert(self.filterButton, -1) tool_box = Gtk.Box() tool_box.pack_start(toolbar, False, False, 0) self.box.pack_start(tool_box, False, False, 0) self.box.show_all()
def __init__(self, persp): GObject.GObject.__init__(self) self.persp = persp self.filtered = False self.widgets = uistuff.GladeWidgets("PyChess.glade") # Build variant combo model variant_store = Gtk.ListStore(str, int) for name, variant in sorted(name2variant.items()): variant_store.append((name, variant.variant)) self.widgets["variant"].set_model(variant_store) renderer_text = Gtk.CellRendererText() self.widgets["variant"].pack_start(renderer_text, True) self.widgets["variant"].add_attribute(renderer_text, "text", 0) # Add piece widgets to dialog *_dock containers on material tab self.dialog = self.widgets["filter_dialog"] self.dialog.set_transient_for(mainwindow()) for piece in "qrbnp": dock = "w%s_dock" % piece self.widgets[dock].add(PieceWidget(Piece(WHITE, chr2Sign[piece]))) self.widgets[dock].get_child().show() dock = "b%s_dock" % piece self.widgets[dock].add(PieceWidget(Piece(BLACK, chr2Sign[piece]))) self.widgets[dock].get_child().show() dock = "moved_%s_dock" % piece self.widgets[dock].add(PieceWidget(Piece(BLACK, chr2Sign[piece]))) self.widgets[dock].get_child().show() dock = "captured_%s_dock" % piece self.widgets[dock].add(PieceWidget(Piece(BLACK, chr2Sign[piece]))) self.widgets[dock].get_child().show() piece = "k" dock = "moved_%s_dock" % piece self.widgets[dock].add(PieceWidget(Piece(BLACK, chr2Sign[piece]))) self.widgets[dock].get_child().show() # We will store our filtering queries in a ListStore # column 0: query as text # column 1: query dict # column 2: filter type (NONE, TAG_FILTER or MATERIAL_FILTER or PATTERN_FILTER) # column 3: row type (RULE, SEQUENCE, STREAK) self.treestore = Gtk.TreeStore(str, object, int, int) self.set_model(self.treestore) self.set_headers_visible(True) self.set_grid_lines(Gtk.TreeViewGridLines.HORIZONTAL) column = Gtk.TreeViewColumn("filter", Gtk.CellRendererText(), text=0) column.set_min_width(80) self.append_column(column) self.columns_autosize() sw = Gtk.ScrolledWindow() sw.set_shadow_type(Gtk.ShadowType.ETCHED_IN) sw.add(self) self.box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) self.box.pack_start(sw, True, True, 0) # Add buttons toolbar = Gtk.Toolbar() editButton = Gtk.ToolButton(Gtk.STOCK_EDIT) editButton.set_tooltip_text(_("Edit selected filter")) editButton.connect("clicked", self.on_edit_clicked) toolbar.insert(editButton, -1) delButton = Gtk.ToolButton(Gtk.STOCK_REMOVE) delButton.set_tooltip_text(_("Remove selected filter")) delButton.connect("clicked", self.on_del_clicked) toolbar.insert(delButton, -1) addButton = Gtk.ToolButton(Gtk.STOCK_ADD) addButton.set_tooltip_text(_("Add new filter")) addButton.connect("clicked", self.on_add_clicked) toolbar.insert(addButton, -1) addSeqButton = Gtk.ToolButton() addSeqButton.set_label(_("Seq")) addSeqButton.set_is_important(True) addSeqButton.set_tooltip_text( _("Create new squence where listed conditions may be satisfied at different times in a game" )) addSeqButton.connect("clicked", self.on_add_sequence_clicked) toolbar.insert(addSeqButton, -1) addStreakButton = Gtk.ToolButton() addStreakButton.set_label(_("Str")) addStreakButton.set_is_important(True) addStreakButton.set_tooltip_text( _("Create new streak sequence where listed conditions have to be satisfied in consecutive (half)moves" )) addStreakButton.connect("clicked", self.on_add_streak_clicked) toolbar.insert(addStreakButton, -1) self.filterButton = Gtk.ToggleToolButton(Gtk.STOCK_FIND) self.filterButton.set_tooltip_text( _("Filter game list by various conditions")) self.filterButton.connect("clicked", self.on_filter_clicked) toolbar.insert(self.filterButton, -1) tool_box = Gtk.Box() tool_box.pack_start(toolbar, False, False, 0) self.box.pack_start(tool_box, False, False, 0) self.box.show_all()