kgem 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/previewwin.rb ADDED
@@ -0,0 +1,80 @@
1
+ #
2
+ #
3
+ #
4
+ class PreviewWin < Qt::Widget
5
+ def initialize(parent=nil)
6
+ super(parent)
7
+
8
+ createWidget
9
+ readSettings
10
+ end
11
+
12
+ def createWidget
13
+ @titleLabel = Qt::Label.new('')
14
+ @textEditor = KTextEditor::EditorChooser::editor
15
+ @closeBtn = KDE::PushButton.new(KDE::Icon.new('dialog-close'), \
16
+ i18n('Close')) do |w|
17
+ connect(w, SIGNAL(:clicked), self, SLOT(:hide))
18
+ end
19
+
20
+ @document = @textEditor.createDocument(nil)
21
+ @textView = @document.createView(self)
22
+
23
+ # layout
24
+ lo = Qt::VBoxLayout.new
25
+ lo.addWidgets('File Name:', @titleLabel, nil)
26
+ lo.addWidget(@textView)
27
+ lo.addWidgets(nil, @closeBtn)
28
+ setLayout(lo)
29
+ end
30
+
31
+ ModeTbl = { /\.rb$/ => 'Ruby',
32
+ /Rakefile$/ => 'Ruby',
33
+ /\.(h|c|cpp)$/ => 'C++',
34
+ /\.json$/ => 'JSON',
35
+ /\.html?$/ => 'HTML',
36
+ /\.xml$/ => 'XML',
37
+ /\.(yml|yaml)$/ => 'YAML',
38
+ /\.java$/ => 'Java',
39
+ /\.js$/ => 'JavaScript',
40
+ /\.css$/ => 'CSS',
41
+ /\.py$/ => 'Python',
42
+ /\.txt$/ => 'Normal',
43
+ /^(\w+)$/i => 'Normal',
44
+ }
45
+ def findMode(text)
46
+ file = File.basename(text)
47
+ m = ModeTbl.find do |k,v|
48
+ k =~ file
49
+ end
50
+ m ? m[1] : 'Ruby'
51
+ end
52
+
53
+ def setText(title, text)
54
+ @titleLabel.text = title
55
+ @document.setReadWrite(true)
56
+ @document.setText(text.gsub(/\r\n/, "\n"))
57
+ puts " Text mode = " + findMode(title)
58
+ @document.setMode(findMode(title))
59
+ @document.setReadWrite(false)
60
+ show
61
+ end
62
+
63
+ def setFile(file)
64
+ @titleLabel.text = file
65
+ @document.openUrl(KDE::Url.new(file))
66
+ @document.setReadWrite(false)
67
+ show
68
+ end
69
+
70
+ GroupName = 'PreviewWindow'
71
+ def readSettings
72
+ config = $config.group(GroupName)
73
+ restoreGeometry(config.readEntry('windowState', saveGeometry))
74
+ end
75
+
76
+ def writeSettings
77
+ config = $config.group(GroupName)
78
+ config.writeEntry('windowState', saveGeometry)
79
+ end
80
+ end
data/lib/searchwin.rb ADDED
@@ -0,0 +1,151 @@
1
+ #
2
+ #
3
+ #
4
+ class SearchTable < Qt::TableWidget
5
+ #
6
+ class Item < Qt::TableWidgetItem
7
+ def initialize(text)
8
+ super(text)
9
+ self.flags = Qt::ItemIsSelectable | Qt::ItemIsEnabled
10
+ end
11
+ end
12
+
13
+ class NumItem < Item
14
+ def lessThan(i)
15
+ self.text.to_i < i.text.to_i
16
+ end
17
+ alias :'operator<' :lessThan
18
+ end
19
+
20
+ def initialize
21
+ super(0,3)
22
+
23
+ self.windowTitle = i18n('Search Result')
24
+ setHorizontalHeaderLabels(['name', 'version', 'downloads'])
25
+ self.horizontalHeader.stretchLastSection = true
26
+ self.selectionBehavior = Qt::AbstractItemView::SelectRows
27
+ self.selectionMode = Qt::AbstractItemView::SingleSelection
28
+ self.alternatingRowColors = true
29
+ self.sortingEnabled = true
30
+ sortByColumn(0, Qt::AscendingOrder)
31
+ @gems = {}
32
+ end
33
+
34
+ def addPackage(row, gem)
35
+ nameItem = Item.new(gem.package)
36
+ @gems[nameItem] = gem # 0 column item is hash key.
37
+ setItem( row, 0, nameItem )
38
+ setItem( row, 1, Item.new(gem.version) )
39
+ setItem( row, 2, NumItem.new(gem.downloads.to_s) )
40
+ end
41
+
42
+ def updateGemList(gemList)
43
+ sortFlag = self.sortingEnabled
44
+ self.sortingEnabled = false
45
+
46
+ clearContents
47
+ self.rowCount = gemList.length
48
+ gemList.each_with_index do |g,r|
49
+ addPackage(r, g)
50
+ end
51
+
52
+ self.sortingEnabled = sortFlag
53
+ end
54
+
55
+ def gem(item)
56
+ gemAtRow(item.row)
57
+ end
58
+
59
+ def gemAtRow(row)
60
+ @gems[item(row,0)] # use 0 column item as hash key.
61
+ end
62
+
63
+ def currentGem
64
+ gemAtRow(currentRow)
65
+ end
66
+ end
67
+
68
+
69
+ #----------------------------------------------------------------------------
70
+ #
71
+ #
72
+ #
73
+ class SearchWin < Qt::Widget
74
+ def initialize(parent=nil)
75
+ super(parent)
76
+
77
+ createWidget
78
+ readSettings
79
+ end
80
+
81
+ def createWidget
82
+ @gemList = SearchTable.new
83
+ @searchLine = KDE::HistoryComboBox.new do |w|
84
+ w.sizePolicy = Qt::SizePolicy.new(Qt::SizePolicy::Expanding, Qt::SizePolicy::Fixed, Qt::SizePolicy::LineEdit)
85
+ end
86
+
87
+ @searchBtn = KDE::PushButton.new(KDE::Icon.new('search'), i18n('Search'))
88
+ @downloadBtn = KDE::PushButton.new(KDE::Icon.new('download'), i18n('Download'))
89
+ @installBtn = KDE::PushButton.new(KDE::Icon.new('run-build-install'), i18n('Install'))
90
+
91
+ # connect
92
+ connect(@searchBtn, SIGNAL(:clicked), self, SLOT(:search))
93
+ connect(@searchLine, SIGNAL(:returnPressed), self, SLOT(:search))
94
+ connect(@gemList, SIGNAL('itemClicked(QTableWidgetItem *)'), self, SLOT('itemClicked(QTableWidgetItem *)'))
95
+ connect(@downloadBtn, SIGNAL(:clicked), self, SLOT(:fetch))
96
+ connect(@installBtn, SIGNAL(:clicked), self, SLOT(:install))
97
+
98
+ # layout
99
+ lo = Qt::VBoxLayout.new
100
+ lo.addWidgets('Search Gems:', @searchLine, @searchBtn)
101
+ lo.addWidget(@gemList)
102
+ lo.addWidgets(nil, @downloadBtn, @installBtn)
103
+ setLayout(lo)
104
+ end
105
+
106
+ GroupName = "SearchWindow"
107
+ def writeSettings
108
+ config = $config.group(GroupName)
109
+ config.writeEntry('Header', @gemList.horizontalHeader.saveState)
110
+ end
111
+
112
+ def readSettings
113
+ config = $config.group(GroupName)
114
+ @gemList.horizontalHeader.restoreState(config.readEntry('Header', @gemList.horizontalHeader.saveState))
115
+ end
116
+
117
+
118
+ attr_accessor :gemViewer
119
+ slots 'itemClicked(QTableWidgetItem *)'
120
+ def itemClicked(item)
121
+ gem = @gemList.gem(item)
122
+ @gemViewer.setDetail(gem) if @gemViewer and gem
123
+ @gemViewer.setFiles(nil)
124
+ end
125
+
126
+ slots :search
127
+ def search
128
+ res = Net::HTTP.get(URI.parse( 'http://rubygems.org/api/v1/search.json?query=' + URI.escape(@searchLine.currentText)))
129
+ gems = JSON.parse(res)
130
+ gems.map! do |g| GemItem.parseHashGem(g) end
131
+ @gemList.updateGemList(gems)
132
+ @searchLine.insertItems([@searchLine.currentText])
133
+ end
134
+
135
+
136
+ slots :fetch
137
+ def fetch
138
+ gem = @gemList.currentGem
139
+ return unless gem
140
+
141
+ @gemViewer.download(gem)
142
+ end
143
+
144
+ slots :install
145
+ def install
146
+ gem = @gemList.currentGem
147
+ return gem unless gem
148
+
149
+ @gemViewer.install(gem, false) # localFlag = false
150
+ end
151
+ end
data/lib/settings.rb ADDED
@@ -0,0 +1,205 @@
1
+ #
2
+ # settings.
3
+ #
4
+ require 'kio'
5
+ #
6
+ require "mylibs"
7
+
8
+
9
+ TrustPolicies = %w{ NoSecurity LowSecurity MediumSecurity HighSecurity }
10
+
11
+ class Settings < SettingsBase
12
+ def initialize
13
+ super()
14
+
15
+ setCurrentGroup("Preferences")
16
+
17
+ # folder settings.
18
+ addBoolItem(:autoFetchFlag, false)
19
+ addUrlItem(:autoFetchDir,
20
+ File.join(KDE::GlobalSettings.downloadPath, 'gem_cache'))
21
+ addBoolItem(:autoUnpackFlag, false)
22
+ addUrlItem(:autoUnpackDir, File.join(KDE::GlobalSettings.downloadPath, 'gem_src'))
23
+ addBoolItem(:installLatestFlag, false)
24
+ addBoolItem(:downloadLatestFlag, false)
25
+
26
+ # install option settings.
27
+ addBoolItem(:installInSystemDirFlag, true)
28
+ addBoolItem(:installRdocFlag, true)
29
+ addBoolItem(:installRiFlag, true)
30
+ addBoolItem(:installSheBangFlag, false)
31
+ addBoolItem(:installUnitTestFlag, false)
32
+ addBoolItem(:installBinWrapFlag, false)
33
+ addBoolItem(:installIgnoreDepsFlag, false)
34
+ addBoolItem(:installIncludeDepsFlag, false)
35
+ addBoolItem(:installDevelopmentDepsFlag, false)
36
+ addBoolItem(:installformatExecutableFlag, false)
37
+ addIntItem(:installTrustPolicy, 0)
38
+ end
39
+
40
+ def installTrustPolicyStr
41
+ TrustPolicies[installTrustPolicy]
42
+ end
43
+ end
44
+
45
+
46
+ class GeneralSettingsPage < Qt::Widget
47
+ def initialize(parent=nil)
48
+ super(parent)
49
+ createWidget
50
+ end
51
+
52
+ def createWidget
53
+ @autoFetchCheckBox = Qt::CheckBox.new(i18n("Always Download gem in same directory."))
54
+ @downloadUrl = KDE::UrlRequester.new(KDE::Url.new())
55
+ @downloadUrl.enabled = false
56
+ @downloadUrl.mode = KDE::File::Directory | KDE::File::LocalOnly
57
+ connect(@autoFetchCheckBox, SIGNAL('stateChanged(int)'),
58
+ self, SLOT('autoFetchChanged(int)'))
59
+
60
+ @autoUnpackCheckBox = Qt::CheckBox.new(i18n("Always Unpack gem in same directory."))
61
+ @unpackUrl = KDE::UrlRequester.new(KDE::Url.new())
62
+ @unpackUrl.enabled = false
63
+ @unpackUrl.mode = KDE::File::Directory | KDE::File::LocalOnly
64
+ connect(@autoUnpackCheckBox, SIGNAL('stateChanged(int)'),
65
+ self, SLOT('autoUnpackChanged(int)'))
66
+ @installLatestCheckBox = Qt::CheckBox.new(i18n("Always Install latest version to skip version selection."))
67
+ @downloadLatestCheckBox = Qt::CheckBox.new(i18n("Always Download latest version to skip version selection."))
68
+
69
+ @openDownloadDir = KDE::PushButton.new(KDE::Icon.new('folder'), 'Open')
70
+ @openUnpackDir = KDE::PushButton.new(KDE::Icon.new('folder'), 'Open')
71
+ connect(@openDownloadDir, SIGNAL(:clicked), self, SLOT(:openDownloadDir))
72
+ connect(@openUnpackDir, SIGNAL(:clicked), self, SLOT(:openUnpackDir))
73
+
74
+ # objectNames
75
+ # 'kcfg_' + class Settings's instance name.
76
+ @autoFetchCheckBox.objectName = 'kcfg_autoFetchFlag'
77
+ @downloadUrl.objectName = 'kcfg_autoFetchDir'
78
+ @autoUnpackCheckBox.objectName = 'kcfg_autoUnpackFlag'
79
+ @unpackUrl.objectName = 'kcfg_autoUnpackDir'
80
+ @installLatestCheckBox.objectName = 'kcfg_installLatestFlag'
81
+ @downloadLatestCheckBox.objectName = 'kcfg_downloadLatestFlag'
82
+
83
+ # layout
84
+ lo = Qt::VBoxLayout.new do |l|
85
+ l.addWidget(@installLatestCheckBox)
86
+ l.addWidget(@downloadLatestCheckBox)
87
+ l.addWidget(@autoFetchCheckBox)
88
+ l.addWidgets(' ', @downloadUrl, @openDownloadDir)
89
+ l.addWidget(@autoUnpackCheckBox)
90
+ l.addWidgets(' ', @unpackUrl, @openUnpackDir)
91
+ l.addStretch
92
+ end
93
+ setLayout(lo)
94
+ end
95
+
96
+ slots 'autoFetchChanged(int)'
97
+ def autoFetchChanged(state)
98
+ @downloadUrl.enabled = state == Qt::Checked
99
+ @openDownloadDir.enabled = state == Qt::Checked
100
+ end
101
+
102
+ slots 'autoUnpackChanged(int)'
103
+ def autoUnpackChanged(state)
104
+ @unpackUrl.enabled = state == Qt::Checked
105
+ @openUnpackDir.enabled = state == Qt::Checked
106
+ end
107
+
108
+ slots :openDownloadDir
109
+ def openDownloadDir
110
+ openDirectory(@downloadUrl.text)
111
+ end
112
+
113
+ slots :openUnpackDir
114
+ def openUnpackDir
115
+ openDirectory(@unpackUrl.text)
116
+ end
117
+ end
118
+
119
+
120
+ class InstallOptionsPage < Qt::Widget
121
+ def initialize(parent=nil)
122
+ super(parent)
123
+ createWidget
124
+ end
125
+
126
+ def createWidget
127
+ @installInSystemCheckBox = Qt::CheckBox.new(i18n("Install in System Directory. (Root access Required)"))
128
+ @rdocCheckBox = Qt::CheckBox.new(i18n('Generate RDoc Documentation'))
129
+ @riCheckBox = Qt::CheckBox.new(i18n('Generate RI Documentation'))
130
+ @sheBangCheckBox = Qt::CheckBox.new(i18n('Rewrite the shebang line on installed scripts to use /usr/bin/env'))
131
+ @utestCheckBox = Qt::CheckBox.new(i18n('Run unit tests prior to installation'))
132
+ @binWrapCheckBox = Qt::CheckBox.new(i18n('Use bin wrappers for executables'))
133
+ # @policyCheckBox = Qt::ComboBox.new
134
+ # Qt::Label.new(i18n('Specify gem trust policy'))
135
+ @ignoreDepsCheckBox = Qt::CheckBox.new(i18n('Do not install any required dependent gems'))
136
+ @includeDepsCheckBox = Qt::CheckBox.new(i18n('Unconditionally install the required dependent gems'))
137
+ @developmentDepsCheckBox = Qt::CheckBox.new(i18n('Install any additional development dependencies'))
138
+ @formatExecutableCheckBox = Qt::CheckBox.new(i18n('Make installed executable names match ruby.'))
139
+ formatExeLabel = Qt::Label.new(i18n(' If ruby is ruby18, foo_exec will be foo_exec18'))
140
+ # formatExeLabel.wordWrap = true
141
+ @trustPolicyComboBox = Qt::ComboBox.new
142
+ @trustPolicyComboBox.addItems(TrustPolicies)
143
+
144
+ # connect signals,slots
145
+ connect(@utestCheckBox, SIGNAL('stateChanged(int)'), self, \
146
+ SLOT('utestChanged(int)'))
147
+ connect(@developmentDepsCheckBox, SIGNAL('stateChanged(int)'), self, \
148
+ SLOT('devDepsChanged(int)'))
149
+
150
+ # objectNames
151
+ # 'kcfg_' + class Settings's instance name.
152
+ @installInSystemCheckBox.objectName = 'kcfg_installInSystemDirFlag'
153
+ @rdocCheckBox.objectName = 'kcfg_installRdocFlag'
154
+ @riCheckBox.objectName = 'kcfg_installRiFlag'
155
+ @sheBangCheckBox.objectName = 'kcfg_installSheBangFlag'
156
+ @utestCheckBox.objectName = 'kcfg_installUnitTestFlag'
157
+ @binWrapCheckBox.objectName = 'kcfg_installBinWrapFlag'
158
+ @ignoreDepsCheckBox.objectName = 'kcfg_installIgnoreDepsFlag'
159
+ @includeDepsCheckBox.objectName = 'kcfg_installIncludeDepsFlag'
160
+ @developmentDepsCheckBox.objectName = 'kcfg_installDevelopmentDepsFlag'
161
+ @formatExecutableCheckBox.objectName = 'kcfg_installformatExecutableFlag'
162
+ @trustPolicyComboBox.objectName = 'kcfg_installTrustPolicy'
163
+
164
+ # layout
165
+ lo = Qt::VBoxLayout.new do |l|
166
+ l.addWidget(@installInSystemCheckBox)
167
+ l.addWidget(@rdocCheckBox)
168
+ l.addWidget(@riCheckBox)
169
+ l.addWidget(@sheBangCheckBox)
170
+ l.addWidget(@utestCheckBox)
171
+ l.addWidget(@binWrapCheckBox)
172
+ l.addWidget(@ignoreDepsCheckBox)
173
+ l.addWidget(@includeDepsCheckBox)
174
+ l.addWidget(@developmentDepsCheckBox)
175
+ l.addWidget(@formatExecutableCheckBox)
176
+ l.addWidget(formatExeLabel)
177
+ l.addWidgets(i18n('Trust Policy :'), @trustPolicyComboBox, nil)
178
+ l.addStretch
179
+ end
180
+ setLayout(lo)
181
+ end
182
+
183
+ slots 'utestChanged(int)'
184
+ def utestChanged(state)
185
+ @developmentDepsCheckBox.setCheckState(state)
186
+ end
187
+
188
+ slots 'devDepsChanged(int)'
189
+ def devDepsChanged(state)
190
+ @utestCheckBox.setCheckState(state) if state == Qt::Unchecked
191
+ end
192
+
193
+ def installInSystemVisible=(flag)
194
+ @installInSystemCheckBox.visible = flag
195
+ end
196
+ end
197
+
198
+ class SettingsDlg < KDE::ConfigDialog
199
+ def initialize(parent)
200
+ super(parent, "Settings", Settings.instance)
201
+
202
+ addPage(GeneralSettingsPage.new, i18n("General"), 'preferences-system')
203
+ addPage(InstallOptionsPage.new, i18n("Install Options"), 'applications-other')
204
+ end
205
+ end
@@ -0,0 +1,8 @@
1
+ #%PAM-1.0
2
+ auth sufficient pam_rootok.so
3
+ auth required pam_console.so
4
+ auth sufficient pam_timestamp.so
5
+ auth include system-auth
6
+ account required pam_permit.so
7
+ session optional pam_timestamp.so
8
+ session optional pam_xauth.so
metadata ADDED
@@ -0,0 +1,89 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: kgem
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 0
10
+ version: 0.1.0
11
+ platform: ruby
12
+ authors:
13
+ - ruby.twiddler
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-09-13 00:00:00 +09:00
19
+ default_executable:
20
+ dependencies: []
21
+
22
+ description: |
23
+ Kgem is KDE GUI for ruby gem tool.
24
+ You can install/uninstall/update/download gems just clicking around,
25
+ search to find gem, browsing source files in gems without installing these gems.
26
+ You don't need to remember gem's command and options any more.
27
+
28
+ email: ruby.twiddler at gmail.com
29
+ executables:
30
+ - kgem.rb
31
+ extensions:
32
+ - ext/Rakefile
33
+ extra_rdoc_files:
34
+ - README
35
+ files:
36
+ - bin/kgem.rb
37
+ - bin/gemcmdwin.rb
38
+ - bin/gemcmdwin-super.rb
39
+ - lib/downloadedwin.rb
40
+ - lib/gemhelpdlg.rb
41
+ - lib/gemviews.rb
42
+ - lib/installedwin.rb
43
+ - lib/mylibs.rb
44
+ - lib/previewwin.rb
45
+ - lib/searchwin.rb
46
+ - lib/settings.rb
47
+ - lib/gemitem.rb
48
+ - lib/gemcmddlgs.rb
49
+ - README
50
+ - MIT-LICENSE
51
+ - Rakefile
52
+ - pkg_resources/gemcmdwin-super.rb.pam
53
+ - ext/Rakefile
54
+ has_rdoc: true
55
+ homepage: http://github.com/rubytwiddler/kgem/wiki
56
+ licenses: []
57
+
58
+ post_install_message:
59
+ rdoc_options: []
60
+
61
+ require_paths:
62
+ - lib
63
+ required_ruby_version: !ruby/object:Gem::Requirement
64
+ none: false
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ hash: 3
69
+ segments:
70
+ - 0
71
+ version: "0"
72
+ required_rubygems_version: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ hash: 3
78
+ segments:
79
+ - 0
80
+ version: "0"
81
+ requirements:
82
+ - korundum4
83
+ rubyforge_project:
84
+ rubygems_version: 1.3.7
85
+ signing_key:
86
+ specification_version: 3
87
+ summary: KDE GUI for ruby gem.
88
+ test_files: []
89
+