Class: InstalledGemWin

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

Overview


Constant Summary collapse

GroupName =
"InstalledGemWindow"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(parent = nil) ⇒ InstalledGemWin

Returns a new instance of InstalledGemWin.



136
137
138
139
140
141
142
143
# File 'lib/installedwin.rb', line 136

def initialize(parent=nil)
    super(parent)

    createWidget
    readSettings

    Qt::Timer.singleShot(0, self, SLOT(:updateInstalledGemList))
end

Instance Attribute Details

#gemViewerObject

Returns the value of attribute gemViewer.



246
247
248
# File 'lib/installedwin.rb', line 246

def gemViewer
  @gemViewer
end

Instance Method Details

#createWidgetObject



145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
# File 'lib/installedwin.rb', line 145

def createWidget
    @installedGemsTable = GemListTable.new('installed')

    @viewDirBtn = KDE::PushButton.new(KDE::Icon.new('folder'), 'View Directory')
    @viewRdocBtn = KDE::PushButton.new(KDE::Icon.new('help-contents'), 'View RDoc')
    @generateRdocBtn = KDE::PushButton.new(KDE::Icon.new('document-new'), 'Generate RDoc/ri')
    @updateGemBtn = KDE::PushButton.new(KDE::Icon.new('view-refresh'), 'Update')

    @uninstallBtn = KDE::PushButton.new(KDE::Icon.new('list-remove'), 'Uninstall')

    @filterInstalledLineEdit = KDE::LineEdit.new do |w|
        connect(w,SIGNAL('textChanged(const QString &)'),
                @installedGemsTable, SLOT('filterChanged(const QString &)'))
        w.setClearButtonShown(true)
    end
    @checkTestBtn = KDE::PushButton.new(KDE::Icon.new('checkbox'), 'Test')


    # connect
    connect(@viewDirBtn, SIGNAL(:clicked), self, SLOT(:viewDir))
    connect(@viewRdocBtn, SIGNAL(:clicked), self, SLOT(:viewRdoc))
    connect(@uninstallBtn, SIGNAL(:clicked), self, SLOT(:uninstallGem))
    connect(@installedGemsTable, SIGNAL('itemClicked(QTableWidgetItem *)'),
                self, SLOT('itemClicked(QTableWidgetItem *)'))
    connect(@generateRdocBtn, SIGNAL(:clicked), self, SLOT(:generateRdoc))
    connect(@updateGemBtn, SIGNAL(:clicked), self, SLOT(:updateGem))
    connect(@checkTestBtn, SIGNAL(:clicked), self, SLOT(:testGem))

    # layout
    lo = Qt::VBoxLayout.new do |w|
            w.addWidgets('Filter:', @filterInstalledLineEdit)
            w.addWidget(@installedGemsTable)
            w.addWidgets(nil, @viewDirBtn, @viewRdocBtn, @generateRdocBtn, @checkTestBtn, @updateGemBtn, @uninstallBtn)
        end
    setLayout(lo)
end

#generateRdocObject



219
220
221
222
223
224
# File 'lib/installedwin.rb', line 219

def generateRdoc
    gem = @installedGemsTable.currentGem
    return unless gem

    @gemViewer.generateRdoc(gem)
end

#itemClicked(item) ⇒ Object



248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
# File 'lib/installedwin.rb', line 248

def itemClicked(item)
    unless item.gem.spec then
        specStr = %x{gem specification #{item.gem.package} -l --marshal}
        begin
            spec = Marshal.load(specStr)
        rescue NoMethodError, ArgumentError => e
            # rescue from some error gems.
            @gemViewer.setError(item.gem, e)
            return
        end
        item.gem.spec = spec
    end
    @gemViewer.setDetail( item.gem )
    files = %x{gem contents --prefix #{item.gem.package} -v #{item.gem.version}}.split(/[\r\n]+/)
    @gemViewer.setFiles( files )

    proc = lambda do |item|
        file = item.text
        @gemViewer.previewWin.setFile( file )
    end
    @gemViewer.setPreviewProc(proc)
end

#notifyInstallObject




198
199
200
# File 'lib/installedwin.rb', line 198

def notifyInstall
    updateInstalledGemList
end

#readSettingsObject



189
190
191
192
# File 'lib/installedwin.rb', line 189

def readSettings
    config = $config.group(GroupName)
    @installedGemsTable.horizontalHeader.restoreState(config.readEntry('Header', @installedGemsTable.horizontalHeader.saveState))
end

#setStaleTime(stales) ⇒ Object



232
233
234
235
236
237
238
239
240
241
242
243
244
# File 'lib/installedwin.rb', line 232

def setStaleTime(stales)
    stales.each do |i|
        r = @installedGemsTable.find do |g|
                g.name == i.name && g.version == i.version
        end
        if r then
            @installedGemsTable.item(r, GemListTable::PACKAGE_ATIME).text = i.atime.to_s
        end
    end
    @installedGemsTable.sortItems(GemListTable::PACKAGE_ATIME)
    @installedGemsTable.clearSelection
    parent.parent.currentIndex = parent.indexOf(self)
end

#testGemObject



203
204
205
206
207
208
# File 'lib/installedwin.rb', line 203

def testGem
    gem = @installedGemsTable.currentGem
    return unless gem

    @gemViewer.testGem(gem)
end

#uninstallGemObject



283
284
285
# File 'lib/installedwin.rb', line 283

def uninstallGem
    @gemViewer.uninstall(@installedGemsTable.currentGem)
end

#updateGemObject



211
212
213
214
215
216
# File 'lib/installedwin.rb', line 211

def updateGem
    gem = @installedGemsTable.currentGem
    return unless gem

    @gemViewer.updateGem(gem)
end

#updateInstalledGemListObject



227
228
229
230
# File 'lib/installedwin.rb', line 227

def updateInstalledGemList
    gemList = InstalledGemList.get
    @installedGemsTable.updateGemList(gemList)
end

#viewDirObject



278
279
280
# File 'lib/installedwin.rb', line 278

def viewDir
    @gemViewer.viewGemDir(@installedGemsTable.currentGem)
end

#viewRdocObject



272
273
274
# File 'lib/installedwin.rb', line 272

def viewRdoc
    @gemViewer.viewGemRdoc(@installedGemsTable.currentGem)
end

#writeSettingsObject



184
185
186
187
# File 'lib/installedwin.rb', line 184

def writeSettings
    config = $config.group(GroupName)
    config.writeEntry('Header', @installedGemsTable.horizontalHeader.saveState)
end