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.
20 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 |
# File 'lib/alexandria/ui/preferences_dialog.rb', line 20 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
143 144 145 |
# File 'lib/alexandria/ui/preferences_dialog.rb', line 143 def event_is_right_click(event) (event.event_type == :button_press) && (event. == 3) end |
#on_close ⇒ Object
241 242 243 244 |
# File 'lib/alexandria/ui/preferences_dialog.rb', line 241 def on_close @preferences_dialog.destroy Alexandria::Preferences.instance.save! end |
#on_column_toggled(checkbutton) ⇒ Object
228 229 230 231 232 233 234 |
# File 'lib/alexandria/ui/preferences_dialog.rb', line 228 def on_column_toggled() raise if @cols[].nil? Preferences.instance.set_variable(@cols[], .active?) @changed_block.call end |
#on_help ⇒ Object
246 247 248 249 |
# File 'lib/alexandria/ui/preferences_dialog.rb', line 246 def on_help Alexandria::UI.display_help(@preferences_dialog, "alexandria-preferences") end |
#on_provider_add ⇒ Object
183 184 185 186 187 188 189 |
# File 'lib/alexandria/ui/preferences_dialog.rb', line 183 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
177 178 179 180 181 |
# File 'lib/alexandria/ui/preferences_dialog.rb', line 177 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
168 169 170 171 172 173 174 175 |
# File 'lib/alexandria/ui/preferences_dialog.rb', line 168 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
204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 |
# File 'lib/alexandria/ui/preferences_dialog.rb', line 204 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
151 152 153 154 155 156 |
# File 'lib/alexandria/ui/preferences_dialog.rb', line 151 def on_provider_setup provider = selected_provider unless prefs_empty(provider.prefs) ProviderPreferencesDialog.new(@preferences_dialog, provider).acquire end end |
#on_provider_up ⇒ Object
158 159 160 161 162 163 164 165 166 |
# File 'lib/alexandria/ui/preferences_dialog.rb', line 158 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
236 237 238 239 |
# File 'lib/alexandria/ui/preferences_dialog.rb', line 236 def (, event) # double left click on_provider_setup if (event.event_type == :'2button_press') && (event. == 1) end |
#on_scanner_device_type(_combo) ⇒ Object
191 192 193 194 |
# File 'lib/alexandria/ui/preferences_dialog.rb', line 191 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
200 201 202 |
# File 'lib/alexandria/ui/preferences_dialog.rb', line 200 def on_use_scan_sound(checkbox) Preferences.instance.play_scan_sound = checkbox.active? end |
#on_use_scanning_sound(checkbox) ⇒ Object
196 197 198 |
# File 'lib/alexandria/ui/preferences_dialog.rb', line 196 def on_use_scanning_sound(checkbox) Preferences.instance.play_scanning_sound = checkbox.active? end |
#prefs_empty(prefs) ⇒ Object
147 148 149 |
# File 'lib/alexandria/ui/preferences_dialog.rb', line 147 def prefs_empty(prefs) prefs.empty? || ((prefs.size == 1) && (prefs.first.name == "enabled")) end |
#setup_barcode_scanner_tab ⇒ Object
122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 |
# File 'lib/alexandria/ui/preferences_dialog.rb', line 122 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
105 106 107 |
# File 'lib/alexandria/ui/preferences_dialog.rb', line 105 def show @preferences_dialog.show end |
#widget_names ⇒ Object
109 110 111 112 113 114 115 116 117 118 119 120 |
# File 'lib/alexandria/ui/preferences_dialog.rb', line 109 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 |