Class: Alexandria::UI::IconViewManager

Inherits:
Object
  • Object
show all
Includes:
Logging, DragAndDropable, GetText
Defined in:
lib/alexandria/ui/iconview.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.



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

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



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

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



73
74
75
76
77
78
# File 'lib/alexandria/ui/iconview.rb', line 73

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