Class: SearchWin

Inherits:
Qt::Widget show all
Defined in:
lib/searchwin.rb

Overview


Constant Summary collapse

GroupName =
"SearchWindow"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(parent = nil) ⇒ SearchWin

Returns a new instance of SearchWin.



74
75
76
77
78
79
# File 'lib/searchwin.rb', line 74

def initialize(parent=nil)
    super(parent)

    createWidget
    readSettings
end

Instance Attribute Details

#gemViewerObject

Returns the value of attribute gemViewer.



118
119
120
# File 'lib/searchwin.rb', line 118

def gemViewer
  @gemViewer
end

Instance Method Details

#createWidgetObject



81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/searchwin.rb', line 81

def createWidget
    @gemList = SearchTable.new
    @searchLine = KDE::HistoryComboBox.new do |w|
        w.sizePolicy = Qt::SizePolicy.new(Qt::SizePolicy::Expanding, Qt::SizePolicy::Fixed,  Qt::SizePolicy::LineEdit)
    end

    @searchBtn = KDE::PushButton.new(KDE::Icon.new('system-search'), i18n('Search'))
    @downloadBtn = KDE::PushButton.new(KDE::Icon.new('download'), i18n('Download'))
    @installBtn = KDE::PushButton.new(KDE::Icon.new('run-build-install'), i18n('Install'))

    # connect
    connect(@searchBtn, SIGNAL(:clicked), self, SLOT(:search))
    connect(@searchLine, SIGNAL(:returnPressed), self, SLOT(:search))
    connect(@gemList, SIGNAL('itemClicked(QTableWidgetItem *)'), self, SLOT('itemClicked(QTableWidgetItem *)'))
    connect(@downloadBtn, SIGNAL(:clicked), self, SLOT(:fetch))
    connect(@installBtn, SIGNAL(:clicked), self, SLOT(:install))

    # layout
    lo = Qt::VBoxLayout.new
    lo.addWidgets('Search Gems:', @searchLine, @searchBtn)
    lo.addWidget(@gemList)
    lo.addWidgets(nil, @downloadBtn, @installBtn)
    setLayout(lo)
end

#fetchObject



137
138
139
140
141
142
# File 'lib/searchwin.rb', line 137

def fetch
    gem = @gemList.currentGem
    return unless gem

    @gemViewer.download(gem)
end

#installObject



145
146
147
148
149
150
# File 'lib/searchwin.rb', line 145

def install
    gem = @gemList.currentGem
    return gem unless gem

    @gemViewer.install(gem, false)   # localFlag = false
end

#itemClicked(item) ⇒ Object



120
121
122
123
124
# File 'lib/searchwin.rb', line 120

def itemClicked(item)
    gem = @gemList.gem(item)
    @gemViewer.setDetail(gem) if @gemViewer and gem
    @gemViewer.setFiles(nil)
end

#readSettingsObject



112
113
114
115
# File 'lib/searchwin.rb', line 112

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

#searchObject



127
128
129
130
131
132
133
# File 'lib/searchwin.rb', line 127

def search
    res = Net::HTTP.get(URI.parse( 'http://rubygems.org/api/v1/search.json?query=' + URI.escape(@searchLine.currentText)))
    gems = JSON.parse(res)
    gems.map! do |g| GemItem.parseHashGem(g) end
    @gemList.updateGemList(gems)
    @searchLine.insertItems([@searchLine.currentText])
end

#writeSettingsObject



107
108
109
110
# File 'lib/searchwin.rb', line 107

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