2 # -*- coding: utf-8 -*-
4 # Project: J-Ben, Python front-end
5 # File: jben/gui/dialog/kanjilisteditor.py
7 # Created on: 26 Nov 2008
9 from __future__
import absolute_import
12 from ..widget
.storedsize
import StoredSizeDialog
16 class EditBox(gtk
.TextView
):
19 gtk
.TextView
.__init
__(self
)
20 self
.set_accepts_tab(False)
21 self
.set_wrap_mode(gtk
.WRAP_WORD_CHAR
)
25 self
.get_buffer().connect("changed", self
.on_text_changed
)
27 def on_text_changed(self
, widget
):
28 print "EditBox.on_text_changed"
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
)
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"))
59 for button
in (add_from_file
, add_by_jouyou
, add_by_jlpt
, add_by_freq
):
60 add_box
.pack_start(button
, expand
=False)
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"))
75 for button
in (sort_by_jouyou
, sort_by_jlpt
, sort_by_freq
):
76 sort_box
.pack_start(button
, expand
=False)
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
)
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)
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
):
139 def on_ok_clicked(self
, widget
):
141 self
.response(gtk
.RESPONSE_OK
)