Class: GemListTable

Inherits:
Qt::TableWidget
  • Object
show all
Defined in:
lib/installedwin.rb

Overview


Defined Under Namespace

Classes: Item

Constant Summary collapse

PACKAGE_NAME =

column no

0
PACKAGE_VERSION =
1
PACKAGE_SUMMARY =
2
PACKAGE_ATIME =
3

Instance Method Summary collapse

Constructor Details

#initialize(title) ⇒ GemListTable

Returns a new instance of GemListTable.



39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/installedwin.rb', line 39

def initialize(title)
    super(0,4)

    self.windowTitle = title
    setHorizontalHeaderLabels(['package', 'version', 'summary', 'last access'])
    self.horizontalHeader.stretchLastSection = true
    self.selectionBehavior = Qt::AbstractItemView::SelectRows
    self.selectionMode = Qt::AbstractItemView::SingleSelection
    self.alternatingRowColors = true
    self.sortingEnabled = true
    sortByColumn(PACKAGE_NAME, Qt::AscendingOrder )
    @gems = {}
end

Instance Method Details

#addPackage(row, gem) ⇒ Object

caution ! : befor call, sortingEnabled must be set false.

if sortingEnabled is on while updating table, it is very sluggish.


55
56
57
58
59
60
61
62
63
# File 'lib/installedwin.rb', line 55

def addPackage(row, gem)
#         self.sortingEnabled = false
    nameItem = Item.new(gem.package)
    @gems[nameItem] = gem           # 0 column item is hash key.
    setItem( row, PACKAGE_NAME, nameItem  )
    setItem( row, PACKAGE_VERSION, Item.new(gem.version) )
    setItem( row, PACKAGE_SUMMARY, Item.new(gem.summary) )
    setItem( row, PACKAGE_ATIME, Item.new('') )
end

#currentGemObject



88
89
90
# File 'lib/installedwin.rb', line 88

def currentGem
    gemAtRow(currentRow)
end

#filterChanged(text) ⇒ Object



100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# File 'lib/installedwin.rb', line 100

def filterChanged(text)
    unless text && !text.empty?
        showall
        return
    end

    regxs = /#{Regexp.escape(text.strip)}/i
    rowCount.times do |r|
        gem = gemAtRow(r)
        txt = [ gem.package, gem.summary, gem.author, gem.platform ].inject("") do |s, t|
                    t.nil? ? s : s + t.to_s
        end
        if regxs =~ txt then
            showRow(r)
        else
            hideRow(r)
        end
    end
end

#findObject

Returns : number : row of found item.

Returns:

  • : number : row of found item.



121
122
123
124
125
126
127
# File 'lib/installedwin.rb', line 121

def find
    rowCount.times do |r|
        i = gemAtRow(r)
        return r if yield i
    end
    false
end

#gem(item) ⇒ Object



80
81
82
# File 'lib/installedwin.rb', line 80

def gem(item)
    gemAtRow(item.row)
end

#gemAtRow(row) ⇒ Object



84
85
86
# File 'lib/installedwin.rb', line 84

def gemAtRow(row)
    @gems[item(row,0)]       # use 0 column item as hash key.
end

#showallObject



92
93
94
95
96
# File 'lib/installedwin.rb', line 92

def showall
    rowCount.times do |r|
        showRow(r)
    end
end

#updateGemList(gemList) ⇒ Object



66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/installedwin.rb', line 66

def updateGemList(gemList)
    sortFlag = self.sortingEnabled
    self.sortingEnabled = false

    clearContents
    self.rowCount = gemList.length
    gemList.each_with_index do |g, r|
        addPackage(r, g)
    end

    self.sortingEnabled = sortFlag
end