Class: Alexandria::UI::PreferencesDialog
- Inherits:
-
BuilderBase
- Object
- BuilderBase
- Alexandria::UI::PreferencesDialog
- Includes:
- Logging, GetText
- Defined in:
- lib/alexandria/ui/preferences_dialog.rb
Instance Method Summary collapse
- #event_is_right_click(event) ⇒ Object
-
#initialize(parent, &changed_block) ⇒ PreferencesDialog
constructor
A new instance of PreferencesDialog.
- #on_close ⇒ Object
- #on_column_toggled(checkbutton) ⇒ Object
- #on_help ⇒ Object
- #on_provider_add ⇒ Object
- #on_provider_advanced_toggled(checkbutton) ⇒ Object
- #on_provider_down ⇒ Object
- #on_provider_remove ⇒ Object
- #on_provider_setup ⇒ Object
- #on_provider_up ⇒ Object
- #on_providers_button_press_event(_widget, event) ⇒ Object
- #on_scanner_device_type(_combo) ⇒ Object
- #on_use_scan_sound(checkbox) ⇒ Object
- #on_use_scanning_sound(checkbox) ⇒ Object
- #prefs_empty(prefs) ⇒ Object
- #setup_barcode_scanner_tab ⇒ Object
- #show ⇒ Object
- #widget_names ⇒ Object
Methods included from Logging
Constructor Details
#initialize(parent, &changed_block) ⇒ PreferencesDialog
Returns a new instance of PreferencesDialog.
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/alexandria/ui/preferences_dialog.rb', line 21 def initialize(parent, &changed_block) super("preferences_dialog__builder.glade", ) @preferences_dialog.transient_for = parent @changed_block = changed_block @cols = { @checkbutton_col_authors => "col_authors_visible", @checkbutton_col_isbn => "col_isbn_visible", @checkbutton_col_publisher => "col_publisher_visible", @checkbutton_col_publish_date => "col_publish_date_visible", @checkbutton_col_edition => "col_edition_visible", @checkbutton_col_redd => "col_redd_visible", @checkbutton_col_own => "col_own_visible", @checkbutton_col_want => "col_want_visible", @checkbutton_col_rating => "col_rating_visible", @checkbutton_col_tags => "col_tags_visible", @checkbutton_col_loaned_to => "col_loaned_to_visible" } @cols.each_pair do |, pref_name| if .active = Preferences.instance.get_variable(pref_name) else log.warn do "no CheckButton for property #{pref_name} " \ "(probably conflicting versions of GUI and lib code)" end end end model = Gtk::ListStore.new(String, String, TrueClass, Integer) @treeview_providers.model = model reload_providers model.signal_connect_after("row-changed") { update_priority } renderer = Gtk::CellRendererToggle.new renderer.activatable = true renderer.signal_connect("toggled") do |_rndrr, path| tree_path = Gtk::TreePath.new(path) @treeview_providers.selection.select_path(tree_path) prov = selected_provider if prov prov.toggle_enabled adjust_selected_provider(prov) # reload_providers end end # renderer.active = true column = Gtk::TreeViewColumn.new("Enabled", renderer) column.set_cell_data_func(renderer) do |_col, rndr, _mod, iter| value = iter[2] rndr.active = value end @treeview_providers.append_column(column) renderer = Gtk::CellRendererText.new column = Gtk::TreeViewColumn.new("Providers", renderer) column.set_cell_data_func(renderer) do |_col, rndr, _mod, iter| rndr.markup = iter[0] end @treeview_providers.append_column(column) @treeview_providers.selection .signal_connect("changed") { sensitize_providers } @button_prov_setup.sensitive = false @button_prov_up.sensitive = @button_prov_down.sensitive = BookProviders.list.length > 1 @buttonbox_prov.set_child_secondary(@button_prov_add, true) @buttonbox_prov.set_child_secondary(@button_prov_remove, true) if BookProviders.abstract_classes.empty? @checkbutton_prov_advanced.sensitive = false else view_advanced = Preferences.instance.view_advanced_settings @checkbutton_prov_advanced.active = true if view_advanced end sensitize_providers end |
Instance Method Details
#event_is_right_click(event) ⇒ Object
144 145 146 |
# File 'lib/alexandria/ui/preferences_dialog.rb', line 144 def event_is_right_click(event) (event.event_type == :button_press) && (event. == 3) end |
#on_close ⇒ Object
242 243 244 245 |
# File 'lib/alexandria/ui/preferences_dialog.rb', line 242 def on_close @preferences_dialog.destroy Alexandria::Preferences.instance.save! end |
#on_column_toggled(checkbutton) ⇒ Object
229 230 231 232 233 234 235 |
# File 'lib/alexandria/ui/preferences_dialog.rb', line 229 def on_column_toggled() raise if @cols[].nil? Preferences.instance.set_variable(@cols[], .active?) @changed_block.call end |
#on_help ⇒ Object
247 248 249 250 |
# File 'lib/alexandria/ui/preferences_dialog.rb', line 247 def on_help Alexandria::UI.display_help(@preferences_dialog, "alexandria-preferences") end |
#on_provider_add ⇒ Object
184 185 186 187 188 189 190 |
# File 'lib/alexandria/ui/preferences_dialog.rb', line 184 def on_provider_add provider = NewProviderDialog.new(@preferences_dialog).acquire return unless provider BookProviders.instance.update_priority reload_providers end |
#on_provider_advanced_toggled(checkbutton) ⇒ Object
178 179 180 181 182 |
# File 'lib/alexandria/ui/preferences_dialog.rb', line 178 def on_provider_advanced_toggled() on = .active? Preferences.instance.view_advanced_settings = on @button_prov_add.visible = @button_prov_remove.visible = on end |
#on_provider_down ⇒ Object
169 170 171 172 173 174 175 176 |
# File 'lib/alexandria/ui/preferences_dialog.rb', line 169 def on_provider_down iter = @treeview_providers.selection.selected next_iter = iter.dup next_iter.next! @treeview_providers.model.move_after(iter, next_iter) sensitize_providers update_priority end |
#on_provider_remove ⇒ Object
205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 |
# File 'lib/alexandria/ui/preferences_dialog.rb', line 205 def on_provider_remove provider = selected_provider dialog = AlertDialog.new(@main_app, _("Are you sure you want to " \ "permanently delete the provider " \ "'%s'?") % provider.fullname, Gtk::Stock::DIALOG_QUESTION, [[Gtk::Stock::CANCEL, Gtk::ResponseType::CANCEL], [Gtk::Stock::DELETE, Gtk::ResponseType::OK]], _("If you continue, the provider and " \ "all of its preferences will be " \ "permanently deleted.")) dialog.default_response = Gtk::ResponseType::CANCEL dialog.show_all if dialog.run == Gtk::ResponseType::OK provider.remove BookProviders.instance.update_priority reload_providers end dialog.destroy end |
#on_provider_setup ⇒ Object
152 153 154 155 156 157 |
# File 'lib/alexandria/ui/preferences_dialog.rb', line 152 def on_provider_setup provider = selected_provider unless prefs_empty(provider.prefs) ProviderPreferencesDialog.new(@preferences_dialog, provider).acquire end end |
#on_provider_up ⇒ Object
159 160 161 162 163 164 165 166 167 |
# File 'lib/alexandria/ui/preferences_dialog.rb', line 159 def on_provider_up iter = @treeview_providers.selection.selected previous_path = iter.path previous_path.prev! model = @treeview_providers.model model.move_after(model.get_iter(previous_path), iter) sensitize_providers update_priority end |
#on_providers_button_press_event(_widget, event) ⇒ Object
237 238 239 240 |
# File 'lib/alexandria/ui/preferences_dialog.rb', line 237 def (, event) # double left click on_provider_setup if (event.event_type == :"2button_press") && (event. == 1) end |
#on_scanner_device_type(_combo) ⇒ Object
192 193 194 195 |
# File 'lib/alexandria/ui/preferences_dialog.rb', line 192 def on_scanner_device_type(_combo) iter = @scanner_device_type.active_iter Preferences.instance. = iter[1] if iter && iter[1] end |
#on_use_scan_sound(checkbox) ⇒ Object
201 202 203 |
# File 'lib/alexandria/ui/preferences_dialog.rb', line 201 def on_use_scan_sound(checkbox) Preferences.instance.play_scan_sound = checkbox.active? end |
#on_use_scanning_sound(checkbox) ⇒ Object
197 198 199 |
# File 'lib/alexandria/ui/preferences_dialog.rb', line 197 def on_use_scanning_sound(checkbox) Preferences.instance.play_scanning_sound = checkbox.active? end |
#prefs_empty(prefs) ⇒ Object
148 149 150 |
# File 'lib/alexandria/ui/preferences_dialog.rb', line 148 def prefs_empty(prefs) prefs.empty? || ((prefs.size == 1) && (prefs.first.name == "enabled")) end |
#setup_barcode_scanner_tab ⇒ Object
123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 |
# File 'lib/alexandria/ui/preferences_dialog.rb', line 123 def @scanner_device_model = Gtk::ListStore.new(String, String) chosen_scanner_name = Preferences.instance. index = 0 @scanner_device_type.model = @scanner_device_model renderer = Gtk::CellRendererText.new @scanner_device_type.pack_start(renderer, true) @scanner_device_type.add_attribute(renderer, "text", 0) Alexandria::Scanners.each_scanner do |scanner| iter = @scanner_device_model.append iter[0] = scanner.display_name iter[1] = scanner.name @scanner_device_type.active = index if chosen_scanner_name == scanner.name index += 1 end @use_scanning_sound.active = Preferences.instance.play_scanning_sound @use_scan_sound.active = Preferences.instance.play_scan_sound end |
#show ⇒ Object
106 107 108 |
# File 'lib/alexandria/ui/preferences_dialog.rb', line 106 def show @preferences_dialog.show end |
#widget_names ⇒ Object
110 111 112 113 114 115 116 117 118 119 120 121 |
# File 'lib/alexandria/ui/preferences_dialog.rb', line 110 def [:button_prov_add, :button_prov_down, :button_prov_remove, :button_prov_setup, :button_prov_up, :buttonbox_prov, :checkbutton_col_authors, :checkbutton_col_edition, :checkbutton_col_isbn, :checkbutton_col_loaned_to, :checkbutton_col_own, :checkbutton_col_publish_date, :checkbutton_col_publisher, :checkbutton_col_rating, :checkbutton_col_redd, :checkbutton_col_tags, :checkbutton_col_want, :checkbutton_prov_advanced, :preferences_dialog, :treeview_providers, :scanner_device_type, :use_scanning_sound, :use_scan_sound] end |