lib/jldrill/views/gtk/widgets/ExampleWindow.rb in jldrill-0.5.1.7 vs lib/jldrill/views/gtk/widgets/ExampleWindow.rb in jldrill-0.6.0.1

- old
+ new

@@ -1,5 +1,6 @@ +# encoding: utf-8 require 'Context/Gtk/Widget' require 'jldrill/views/gtk/widgets/KanjiPopupFactory' require 'jldrill/views/gtk/widgets/VocabPopupFactory' require 'gtk2' @@ -33,12 +34,14 @@ createTags end def createTags @contents.buffer.create_tag("normal", + "size" => 12 * Pango::SCALE, "background" => "#ffffff") @contents.buffer.create_tag("checked", + "size" => 12 * Pango::SCALE, "background" => "#e0f0ff") @contents.buffer.create_tag("h1", "size" => 20 * Pango::SCALE, "justification" => Gtk::JUSTIFY_CENTER) @contents.buffer.create_tag("h2", @@ -104,46 +107,83 @@ self.destroy end def sortExamples(examples) return examples.sort do |x, y| - retVal = x.sense <=> y.sense - if y.checked && !x.checked + retVal = x.key.sense <=> y.key.sense + if y.key.checked && !x.key.checked retVal = 1 end - if x.checked && !y.checked + if x.key.checked && !y.key.checked retVal = -1 end retVal end end - + + def insertHeader(section, example) + if example.key.checked + if section == -2 + section = -1 + insert("Checked Examples\n", "h1") + insertVSpace + end + else + if section < 0 + insert("Unchecked Examples\n", "h1") + insertVSpace + end + if section != example.key.sense + section = example.key.sense + if section != 0 + insertVSpace + insert("Examples for sense ##{section}\n", "h2") + end + end + end + return section + end + + def getTag(example) + if (example.key.checked) + tag = "checked" + else + tag = "normal" + end + end + + def updateNativeOnly(examples) + @contents.buffer.text = "" + if !examples.nil? + section = -2 + sortExamples(examples).each do |example| + section = insertHeader(section, example) + insert(example.nativeOnly_to_s + "\n", getTag(example)) + insertVSpace + end + end + end + + def updateTargetOnly(examples) + @contents.buffer.text = "" + if !examples.nil? + section = -2 + sortExamples(examples).each do |example| + section = insertHeader(section, example) + insert(example.targetOnly_to_s + "\n", getTag(example)) + insertVSpace + end + end + end + def updateContents(examples) @contents.buffer.text = "" if !examples.nil? section = -2 sortExamples(examples).each do |example| - if example.checked - if section == -2 - section = -1 - insert("Checked Examples\n", "h1") - insertVSpace - end - else - if section < 0 - insert("Unchecked Examples\n", "h1") - insertVSpace - end - if section != example.sense - section = example.sense - if section != 0 - insertVSpace - insert("Examples for sense ##{section}\n", "h2") - end - end - end - insert(example.to_s + "\n", "normal") + section = insertHeader(section, example) + insert(example.to_s + "\n", getTag(example)) insertVSpace end end end @@ -151,8 +191,19 @@ @contents.buffer.insert(@contents.buffer.end_iter, text, tag) end def insertVSpace insert("\n", "normal") + end + + def showBusy(bool) + # TextViews have a hidden subwindow that houses the cursor + subwindow = @contents.get_window(Gtk::TextView::WINDOW_TEXT) + if bool + subwindow.set_cursor(Gdk::Cursor.new(Gdk::Cursor::WATCH)) + else + subwindow.set_cursor(nil) + end + Gdk::flush() end end end