lib/alexandria/ui/preferences_dialog.rb in alexandria-book-collection-manager-0.7.5 vs lib/alexandria/ui/preferences_dialog.rb in alexandria-book-collection-manager-0.7.6

- old
+ new

@@ -11,11 +11,11 @@ require "alexandria/ui/new_provider_dialog" module Alexandria module UI class PreferencesDialog < BuilderBase - include Alexandria::Logging + include Logging include GetText GetText.bindtextdomain(Alexandria::TEXTDOMAIN, charset: "UTF-8") def initialize(parent, &changed_block) super("preferences_dialog__builder.glade", widget_names) @@ -35,11 +35,11 @@ @checkbutton_col_tags => "col_tags_visible", @checkbutton_col_loaned_to => "col_loaned_to_visible" } @cols.each_pair do |checkbutton, pref_name| if checkbutton - checkbutton.active = Preferences.instance.send(pref_name) + checkbutton.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 @@ -74,41 +74,40 @@ @treeview_providers.append_column(column) renderer = Gtk::CellRendererText.new column = Gtk::TreeViewColumn.new("Providers", renderer) - # :text => 0) column.set_cell_data_func(renderer) do |_col, rndr, _mod, iter| rndr.markup = iter[0] - # enabled = iter[2] - # unless enabled - # rndr.foreground = "gray" - # end - # rndr.active = value end @treeview_providers.append_column(column) - @treeview_providers.selection.signal_connect("changed") \ - { sensitize_providers } + @treeview_providers.selection + .signal_connect("changed") { sensitize_providers } @button_prov_setup.sensitive = false - @button_prov_up.sensitive = @button_prov_down.sensitive = BookProviders.length > 1 + @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 - setup_enable_disable_popup sensitize_providers setup_barcode_scanner_tab end + def show + @preferences_dialog.show + end + def widget_names [: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, @@ -139,67 +138,10 @@ @use_scanning_sound.active = Preferences.instance.play_scanning_sound @use_scan_sound.active = Preferences.instance.play_scan_sound end - def setup_enable_disable_popup - # New Enable/Disable pop-up menu... - @enable_disable_providers_menu = Gtk::Menu.new - @enable_item = Gtk::MenuItem.new(label: _("Disable Provider")) - @enable_item.signal_connect("activate") do - prov = selected_provider - prov.toggle_enabled - adjust_selected_provider(prov) - end - @enable_disable_providers_menu.append(@enable_item) - @enable_disable_providers_menu.show_all - - @treeview_providers.signal_connect("button_press_event") do |widget, event| - if event_is_right_click(event) - if (path = widget.get_path_at_pos(event.x, event.y)) - widget.grab_focus - obj = widget.selection - path = path.first - unless obj.path_is_selected?(path) - widget.unselect_all - obj.select_path(path) - end - sel = widget.selection.selected - if sel - already_enabled = sel[2] - message = already_enabled ? _("Disable Provider") : _("Enable Provider") - @enable_item.label = message - GLib::Idle.add do - @enable_disable_providers_menu.popup(nil, nil, event.button, event.time) - false - end - end - else - puts "not on a path" - end - end - end - - # Popup the menu on Shift-F10 - @treeview_providers.signal_connect("popup_menu") do - selected_prov = @treeview_providers.selection.selected - puts selected_prov.inspect - if selected_prov - GLib::Idle.add do - already_enabled = selected_prov[2] - message = already_enabled ? _("Disable Provider") : _("Enable Provider") - @enable_item.label = message - - @enable_disable_providers_menu.popup(nil, nil, 0, :current_time) - false - end - else - puts "no action" - end - end - end - def event_is_right_click(event) (event.event_type == :button_press) && (event.button == 3) end def prefs_empty(prefs) @@ -237,15 +179,15 @@ Preferences.instance.view_advanced_settings = on @button_prov_add.visible = @button_prov_remove.visible = on end def on_provider_add - dialog = NewProviderDialog.new(@preferences_dialog).acquire - if dialog.instance - BookProviders.update_priority - reload_providers - end + provider = NewProviderDialog.new(@preferences_dialog).acquire + return unless provider + + BookProviders.instance.update_priority + reload_providers end def on_scanner_device_type(_combo) iter = @scanner_device_type.active_iter Preferences.instance.barcode_scanner = iter[1] if iter && iter[1] @@ -275,21 +217,20 @@ "permanently deleted.")) dialog.default_response = Gtk::ResponseType::CANCEL dialog.show_all if dialog.run == Gtk::ResponseType::OK provider.remove - BookProviders.update_priority + BookProviders.instance.update_priority reload_providers end dialog.destroy end def on_column_toggled(checkbutton) raise if @cols[checkbutton].nil? - Preferences.instance.send("#{@cols[checkbutton]}=", - checkbutton.active?) + Preferences.instance.set_variable(@cols[checkbutton], checkbutton.active?) @changed_block.call end def on_providers_button_press_event(_widget, event) @@ -310,11 +251,11 @@ private def reload_providers model = @treeview_providers.model model.clear - BookProviders.each_with_index do |x, index| + BookProviders.list.each_with_index do |x, index| iter = model.append iter[0] = if x.enabled x.fullname else "<i>#{x.fullname}</i>" @@ -325,11 +266,11 @@ end end def selected_provider iter = @treeview_providers.selection.selected - BookProviders.find { |x| x.name == iter[1] } unless iter.nil? + BookProviders.list.find { |x| x.name == iter[1] } unless iter.nil? end def adjust_selected_provider(prov) iter = @treeview_providers.selection.selected iter[0] = if prov.enabled @@ -348,14 +289,14 @@ @button_prov_up.sensitive = false @button_prov_down.sensitive = false @button_prov_setup.sensitive = false @button_prov_remove.sensitive = false else - last_iter = model.get_iter((BookProviders.length - 1).to_s) + last_iter = model.get_iter((BookProviders.list.length - 1).to_s) @button_prov_up.sensitive = sel_iter != model.iter_first @button_prov_down.sensitive = sel_iter != last_iter - provider = BookProviders.find { |x| x.name == sel_iter[1] } + provider = BookProviders.list.find { |x| x.name == sel_iter[1] } @button_prov_setup.sensitive = !prefs_empty(provider.prefs) @button_prov_remove.sensitive = provider.abstract? end end @@ -363,10 +304,10 @@ priority = [] @treeview_providers.model.each do |_model, _path, iter| priority << iter[1] end Preferences.instance.providers_priority = priority - BookProviders.update_priority + BookProviders.instance.update_priority end end end end