More cleanups in the kanji list editor dialog. Also removed some debug prints.
[jben2_gui.git] / python / jben / interface / gtk / dialog / kanjilisteditor.py
blobd314f5d185404bc0829407d85cde33d64e86e658
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
4 # Project: J-Ben, Python front-end
5 # File: jben/gui/dialog/kanjilisteditor.py
6 # Author: Paul Goins
7 # Created on: 26 Nov 2008
9 from __future__ import absolute_import
11 import gtk
12 from ..widget.storedsize import StoredSizeDialog
16 class EditBox(gtk.TextView):
18 def __init__(self):
19 gtk.TextView.__init__(self)
20 self.set_accepts_tab(False)
21 self.set_wrap_mode(gtk.WRAP_WORD_CHAR)
23 self.modified = False
25 self.get_buffer().connect("changed", self.on_text_changed)
27 def on_text_changed(self, widget):
28 print "EditBox.on_text_changed"
29 self.modified = True
32 class EditWindow(gtk.ScrolledWindow):
34 def __init__(self, edit_box):
35 gtk.ScrolledWindow.__init__(self)
36 self.set_shadow_type(gtk.SHADOW_IN)
37 self.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
38 self.add(edit_box)
41 class ShadowedFrame(gtk.Frame):
43 def __init__(self, *args, **kwargs):
44 gtk.Frame.__init__(self, *args, **kwargs)
45 self.set_shadow_type(gtk.SHADOW_IN)
48 class AddFrame(ShadowedFrame):
50 def __init__(self, edit_box):
51 ShadowedFrame.__init__(self, _("Add Kanji"))
53 add_from_file = gtk.Button(_("From File"))
54 add_by_jouyou = gtk.Button(_("By Jouyou Grade"))
55 add_by_jlpt = gtk.Button(_("By JLPT Level"))
56 add_by_freq = gtk.Button(_("By Frequency"))
58 add_box = gtk.VBox()
59 for button in (add_from_file, add_by_jouyou, add_by_jlpt, add_by_freq):
60 add_box.pack_start(button, expand=False)
62 self.add(add_box)
65 class SortFrame(ShadowedFrame):
67 def __init__(self, edit_box):
68 ShadowedFrame.__init__(self, _("Sort Kanji"))
70 sort_by_jouyou = gtk.Button(_("By Jouyou Grade"))
71 sort_by_jlpt = gtk.Button(_("By JLPT Level"))
72 sort_by_freq = gtk.Button(_("By Frequency"))
74 sort_box = gtk.VBox()
75 for button in (sort_by_jouyou, sort_by_jlpt, sort_by_freq):
76 sort_box.pack_start(button, expand=False)
78 self.add(sort_box)
81 class SideButtons(gtk.VBox):
83 def __init__(self, edit_box):
84 gtk.VBox.__init__(self, spacing=5)
86 add_frame = AddFrame(edit_box)
87 sort_frame = SortFrame(edit_box)
89 for frame in (add_frame, sort_frame):
90 self.pack_start(frame, expand=False)
92 direct_edit = gtk.CheckButton(_("Edit directly"))
93 align = gtk.Alignment(xalign=1.0)
94 align.add(direct_edit)
95 self.pack_start(align)
98 class DialogKanjiListEditor(StoredSizeDialog):
99 def __init__(self, parent):
100 StoredSizeDialog.__init__(self, "gui.kanjilisteditor.size", -1, -1,
101 _("Kanji List Editor"), parent)
103 self.edit_box = EditBox()
105 edit_window = EditWindow(self.edit_box)
106 side_buttons = SideButtons(self.edit_box)
108 main_box = gtk.HBox(spacing=5)
109 main_box.pack_start(side_buttons, expand=False)
110 main_box.pack_start(edit_window)
112 self.vbox.set_spacing(5)
113 self.vbox.pack_start(main_box)
114 self.vbox.show_all()
116 ok_button = gtk.Button(stock=gtk.STOCK_OK)
117 cancel_button = gtk.Button(stock=gtk.STOCK_CANCEL)
118 apply_button = gtk.Button(stock=gtk.STOCK_APPLY)
120 ok_button.connect("clicked", self.on_ok_clicked)
121 cancel_button.connect("clicked", self.on_cancel_clicked)
122 apply_button.connect("clicked", self.on_apply_clicked)
124 for button in cancel_button, apply_button, ok_button:
125 self.action_area.pack_start(button)
126 self.action_area.show_all()
128 self.set_has_separator(False)
130 def apply(self):
131 print "apply()ing changes"
133 def on_cancel_clicked(self, widget):
134 self.response(gtk.RESPONSE_CANCEL)
136 def on_apply_clicked(self, widget):
137 self.apply()
139 def on_ok_clicked(self, widget):
140 self.apply()
141 self.response(gtk.RESPONSE_OK)