Class: Alexandria::UI::IconViewManager

Inherits:
Object
  • Object
show all
Includes:
Logging, DragAndDropable, GetText
Defined in:
lib/alexandria/ui/icon_view_manager.rb

Constant Summary collapse

ICON_WIDTH =
60
ICONS_SORTS =
[
  Columns::TITLE, Columns::AUTHORS, Columns::ISBN,
  Columns::PUBLISHER, Columns::EDITION, Columns::RATING,
  Columns::REDD, Columns::OWN, Columns::WANT
].freeze

Constants included from DragAndDropable

DragAndDropable::BADGE_MARKUP

Instance Method Summary collapse

Methods included from DragAndDropable

#setup_view_source_dnd

Methods included from Logging

included, #log

Constructor Details

#initialize(_iconview, parent) ⇒ IconViewManager

Returns a new instance of IconViewManager.



33
34
35
36
37
38
39
40
41
# File 'lib/alexandria/ui/icon_view_manager.rb', line 33

def initialize(_iconview, parent)
  @parent = parent
  @iconview = @parent.iconview
  @tooltips = IconViewTooltips.new(@iconview)
  @iconview_model = @parent.iconview_model
  @filtered_model = @parent.filtered_model
  @actiongroup = @parent.actiongroup
  setup_books_iconview
end

Instance Method Details

#setup_books_iconviewObject



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
# File 'lib/alexandria/ui/icon_view_manager.rb', line 43

def setup_books_iconview
  log.info { "setup_books_iconview #{@iconview_model.inspect}" }
  @iconview.model = @iconview_model
  log.info { "now @iconview.model = #{@iconview.model.inspect}" }
  @iconview.selection_mode = :multiple
  @iconview.text_column = Columns::TITLE_REDUCED
  @iconview.pixbuf_column = Columns::COVER_ICON
  @iconview.item_orientation = :vertical
  @iconview.row_spacing = 4
  @iconview.column_spacing = 16
  @iconview.item_width = ICON_WIDTH + 16

  @iconview.signal_connect("selection-changed") do
    log.debug { "selection-changed" }
    @parent.on_books_selection_changed
  end

  @iconview.signal_connect("item-activated") do
    log.debug { "item-activated" }
    @actiongroup["Properties"].activate
    false
  end

  # DND support for Gtk::IconView is shipped since GTK+ 2.8.0.
  setup_view_source_dnd(@iconview) if @iconview.respond_to?(:enable_model_drag_source)
end

#setup_books_iconview_sortingObject



76
77
78
79
80
81
# File 'lib/alexandria/ui/icon_view_manager.rb', line 76

def setup_books_iconview_sorting
  mode = ICONS_SORTS[@prefs.arrange_icons_mode]
  sort = @prefs.reverse_icons ? Gtk::SORT_DESCENDING : Gtk::SORT_ASCENDING
  @iconview_model.set_sort_column_id(mode, sort)
  @filtered_model.refilter # force redraw
end