qtruby4 1.4.9-mswin32 → 2.1.0.b-mswin32

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.
Files changed (51) hide show
  1. data/Rakefile +5 -0
  2. data/bin/Qt3Support4.dll +0 -0
  3. data/bin/QtAssistantClient4.dll +0 -0
  4. data/bin/QtCLucene4.dll +0 -0
  5. data/bin/QtCore4.dll +0 -0
  6. data/bin/QtDesigner4.dll +0 -0
  7. data/bin/QtDesignerComponents4.dll +0 -0
  8. data/bin/QtGui4.dll +0 -0
  9. data/bin/QtHelp4.dll +0 -0
  10. data/bin/QtNetwork4.dll +0 -0
  11. data/bin/QtOpenGL4.dll +0 -0
  12. data/bin/QtScript4.dll +0 -0
  13. data/bin/QtScriptTools4.dll +0 -0
  14. data/bin/QtSql4.dll +0 -0
  15. data/bin/QtSvg4.dll +0 -0
  16. data/bin/QtTest4.dll +0 -0
  17. data/bin/QtWebKit4.dll +0 -0
  18. data/bin/QtXml4.dll +0 -0
  19. data/bin/QtXmlPatterns4.dll +0 -0
  20. data/bin/assistant.exe +0 -0
  21. data/bin/designer.exe +0 -0
  22. data/bin/linguist.exe +0 -0
  23. data/bin/phonon4.dll +0 -0
  24. data/bin/qtruby4shared.dll +0 -0
  25. data/bin/rbrcc.exe +0 -0
  26. data/bin/rbuic4.exe +0 -0
  27. data/bin/smokeqt.dll +0 -0
  28. data/bin/smokeqtcore.dll +0 -0
  29. data/bin/smokeqtgui.dll +0 -0
  30. data/bin/smokeqtnetwork.dll +0 -0
  31. data/bin/smokeqtopengl.dll +0 -0
  32. data/bin/smokeqtsql.dll +0 -0
  33. data/bin/smokeqtsvg.dll +0 -0
  34. data/bin/smokeqtxml.dll +0 -0
  35. data/bin/smokeqtxmlpatterns.dll +0 -0
  36. data/lib/Qt/active_item_model.rb +234 -0
  37. data/lib/Qt/active_table_model.rb +122 -0
  38. data/lib/{qt → Qt}/qtruby4.rb +736 -318
  39. data/lib/qtruby4.dll +0 -0
  40. metadata +63 -45
  41. data/bin/QtDBus4.dll +0 -0
  42. data/bin/libdbus-1.dll +0 -0
  43. data/bin/qdbus.exe +0 -0
  44. data/bin/qdbuscpp2xml.exe +0 -0
  45. data/bin/qdbusviewer.exe +0 -0
  46. data/bin/qdbusxml2cpp.exe +0 -0
  47. data/bin/rbqtapi +0 -109
  48. data/bin/rbqtsh +0 -627
  49. data/extconf.rb +0 -9
  50. data/lib/Makefile +0 -5
  51. data/lib/qtruby4.so +0 -0
Binary file
metadata CHANGED
@@ -1,79 +1,97 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.0
3
- specification_version: 1
4
2
  name: qtruby4
5
3
  version: !ruby/object:Gem::Version
6
- version: 1.4.9
7
- date: 2007-06-20 00:00:00 +02:00
8
- summary: Provides Qt bindings for Ruby programs.
9
- require_paths:
10
- - lib
11
- email:
12
- homepage: http://rubyforge.org/projects/korundum/
13
- rubyforge_project: qtruby
14
- description:
15
- autorequire: qt/qtruby4
16
- default_executable:
17
- bindir: bin
18
- has_rdoc: false
19
- required_ruby_version: !ruby/object:Gem::Version::Requirement
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: 1.8.1
24
- version:
4
+ version: 2.1.0.b
25
5
  platform: mswin32
26
- signing_key:
27
- cert_chain:
28
- post_install_message:
29
- authors: []
6
+ authors:
7
+ - Richard Dale
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2010-02-10 00:00:00 +01:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: Qt4 Bindings for Ruby.
17
+ email:
18
+ - rdale@foton.es
19
+ - jan.pilz@gmx.de
20
+ executables: []
21
+
22
+ extensions:
23
+ - Rakefile
24
+ extra_rdoc_files: []
30
25
 
31
26
  files:
32
- - lib/Makefile
33
- - lib/qt
27
+ - lib/Qt/active_item_model.rb
28
+ - lib/Qt/active_table_model.rb
29
+ - lib/Qt/qtruby4.rb
34
30
  - lib/Qt.rb
35
31
  - lib/Qt3.rb
36
32
  - lib/Qt4.rb
37
- - lib/qtruby4.so
38
33
  - bin/assistant.exe
39
34
  - bin/designer.exe
40
- - bin/libdbus-1.dll
41
35
  - bin/linguist.exe
42
- - bin/qdbus.exe
43
- - bin/qdbuscpp2xml.exe
44
- - bin/qdbusviewer.exe
45
- - bin/qdbusxml2cpp.exe
36
+ - bin/phonon4.dll
46
37
  - bin/Qt3Support4.dll
47
38
  - bin/QtAssistantClient4.dll
39
+ - bin/QtCLucene4.dll
48
40
  - bin/QtCore4.dll
49
- - bin/QtDBus4.dll
50
41
  - bin/QtDesigner4.dll
51
42
  - bin/QtDesignerComponents4.dll
52
43
  - bin/QtGui4.dll
44
+ - bin/QtHelp4.dll
53
45
  - bin/QtNetwork4.dll
54
46
  - bin/QtOpenGL4.dll
47
+ - bin/qtruby4shared.dll
55
48
  - bin/QtScript4.dll
49
+ - bin/QtScriptTools4.dll
56
50
  - bin/QtSql4.dll
57
51
  - bin/QtSvg4.dll
58
52
  - bin/QtTest4.dll
53
+ - bin/QtWebKit4.dll
59
54
  - bin/QtXml4.dll
60
- - bin/rbqtapi
61
- - bin/rbqtsh
55
+ - bin/QtXmlPatterns4.dll
62
56
  - bin/rbrcc.exe
63
57
  - bin/rbuic4.exe
64
58
  - bin/smokeqt.dll
65
- - lib/qt/qtruby4.rb
66
- test_files: []
59
+ - bin/smokeqtcore.dll
60
+ - bin/smokeqtgui.dll
61
+ - bin/smokeqtnetwork.dll
62
+ - bin/smokeqtopengl.dll
63
+ - bin/smokeqtsql.dll
64
+ - bin/smokeqtsvg.dll
65
+ - bin/smokeqtxml.dll
66
+ - bin/smokeqtxmlpatterns.dll
67
+ - lib/qtruby4.dll
68
+ has_rdoc: true
69
+ homepage: http://rubyforge.org/projects/korundum/
70
+ licenses: []
67
71
 
72
+ post_install_message:
68
73
  rdoc_options: []
69
74
 
70
- extra_rdoc_files: []
71
-
72
- executables: []
73
-
74
- extensions:
75
- - extconf.rb
75
+ require_paths:
76
+ - lib
77
+ required_ruby_version: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: "0"
82
+ version:
83
+ required_rubygems_version: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - ">"
86
+ - !ruby/object:Gem::Version
87
+ version: 1.3.1
88
+ version:
76
89
  requirements: []
77
90
 
78
- dependencies: []
91
+ rubyforge_project: korundum
92
+ rubygems_version: 1.3.5
93
+ signing_key:
94
+ specification_version: 3
95
+ summary: Very complete bindings to both the KDE API and the Qt APIs. The Korundum package includes both a QtRuby Qt-only binding along with the full combined Qt/KDE one. The QtRuby package contains just Qt bindings with no dependencies on KDE.
96
+ test_files: []
79
97
 
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1,109 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- # Note: this program is part of qtruby and makes use of its internal functions.
4
- # You should not rely on those in your own programs.
5
-
6
- require 'getopts'
7
- getopts('r:hvimp')
8
-
9
- case File.basename $0
10
- when "rbqtapi"
11
- require 'Qt'
12
- when "rbqt3api"
13
- require 'Qt3'
14
- when "rbqt4api"
15
- require 'Qt4'
16
- when "rbkdeapi"
17
- require 'Korundum'
18
- when "rbkde4api"
19
- require 'korundum4'
20
- end
21
-
22
- if $OPT_v
23
- # TODO add and use version number #{Qt::VERSION}
24
- print "qtruby using Qt-#{Qt::version}\n"
25
- exit 0
26
- elsif $OPT_h
27
- print $usage
28
- exit 0
29
- end
30
-
31
- if $OPT_m
32
- while 1
33
- line = STDIN.readline.chomp
34
- line.gsub!(/^Q(?=[A-Z])/,'Qt::')
35
- line.gsub!(/^K/,'KDE::') unless line =~ /^(KDE)|(KIO)|(KParts)|(KNS)/
36
- classid = Qt::Internal::find_pclassid($_)
37
- puts "__START__"
38
- if classid
39
- a = Qt::Internal::findAllMethods(classid)
40
- ids = (a.keys.sort.map{|k|a[k]}).flatten
41
- candidates = Qt::dumpCandidates(ids)
42
- sup = []
43
- Qt::Internal::getAllParents(classid, sup)
44
- sup.each {
45
- |sup_item|
46
- a = Qt::Internal::findAllMethods(sup_item)
47
- ids = (a.keys.sort.map{|k|a[k]}).flatten
48
- candidates << Qt::Internal::dumpCandidates(ids)
49
- }
50
- candidates.gsub("\t","") # erm. whats the "s" mean on s/\t//gs ?
51
- print candidates
52
- end
53
- puts "__END__"
54
- end
55
- end
56
-
57
- search_string = ARGV[0] ? ARGV[0].dup : nil
58
- search_string.gsub!(/^Q(?=[A-Z])/,'Qt::') if search_string
59
- # search_string.gsub!(/^K(?=[^D][^E])/,'KDE::') if search_string
60
- search_string.gsub!(/^K/,'KDE::') unless search_string.nil? or search_string =~ /^(KDE)|(KIO)|(KParts)|(KNS)/
61
- classid = search_string ? Qt::Internal::find_pclassid(search_string) : 1
62
- if classid == 0
63
- puts "Class #{search_string} not found"
64
- exit 1
65
- end
66
- regexp = nil
67
- regexp = ( $OPT_i ? Regexp.new($OPT_r, Regexp::IGNORECASE) : Regexp.new($OPT_r) ) if $OPT_r
68
- candidates = ""
69
- while true
70
- a = Qt::Internal::findAllMethods(classid)
71
- break if a.nil?
72
- ids = (a.keys.sort.map{|k|a[k]}).flatten
73
- candidates = Qt::Internal::dumpCandidates(ids)
74
- if $OPT_p and !search_string.empty? and classid
75
- sup = []
76
- Qt::Internal::getAllParents(classid, sup)
77
- sup.each {
78
- |sup_item|
79
- a = Qt::Internal::findAllMethods(sup_item)
80
- ids = (a.keys.sort.map{|k|a[k]}).flatten
81
- candidates << Qt::Internal::dumpCandidates(ids)
82
- }
83
- end
84
- if regexp
85
- candidates.split("\n").each {
86
- |candidate|
87
- puts candidate if candidate =~ regexp
88
- }
89
- else
90
- print candidates
91
- end
92
- break unless search_string.nil?
93
- classid += 1
94
- end
95
-
96
- BEGIN {
97
- $usage = <<USAGE
98
- rbqtapi - a qtruby introspection tool\t(c) Germain Garand 2003 <germain\@ebooksfrance.org>
99
-
100
- usage: rbqtapi [-r <re>] [<class>]
101
-
102
- options:
103
- \t-r <re> : find all functions matching regular expression/keyword <re>
104
- \t-i : together with -r, performs a case insensitive search
105
- \t-p : display also inherited methods for <class>.
106
- \t-v : print qtruby and Qt versions
107
- \t-h : print this help message
108
- USAGE
109
- }
data/bin/rbqtsh DELETED
@@ -1,627 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- # rbqtsh : a graphical shell for qtruby.
4
- #
5
- # author: Germain Garand <germain@ebooksfrance.org>
6
- # ruby port: Alexander Kellett <lypanov@kde.org>
7
- # license: GNU Public License v2
8
- #
9
-
10
- require 'stringio'
11
-
12
- case File.basename $0
13
- when "rbqtsh"
14
- require 'Qt'
15
- when "rbkdesh"
16
- require 'Korundum'
17
- end
18
-
19
- include Qt
20
-
21
- $image0_data =
22
- ["22 22 7 1",
23
- ". c None",
24
- "# c #000000",
25
- "b c #292c29",
26
- "c c #5a5d5a",
27
- "d c #838583",
28
- "e c #c5c2c5",
29
- "a c #ffffff",
30
- "......................",
31
- "....##########........",
32
- "....#aaaaaaa#b#.......",
33
- "....#aaaaaaa#cb#......",
34
- "....#aaaaaaa#dcb#.....",
35
- "....#aaaaaaa#edcb#....",
36
- "....#aaaaaaa#aedcb#...",
37
- "....#aaaaaaa#######...",
38
- "....#aaaaaaaaaaaaa#...",
39
- "....#aaaaaaaaaaaaa#...",
40
- "....#aaaaaaaaaaaaa#...",
41
- "....#aaaaaaaaaaaaa#...",
42
- "....#aaaaaaaaaaaaa#...",
43
- "....#aaaaaaaaaaaaa#...",
44
- "....#aaaaaaaaaaaaa#...",
45
- "....#aaaaaaaaaaaaa#...",
46
- "....#aaaaaaaaaaaaa#...",
47
- "....#aaaaaaaaaaaaa#...",
48
- "....#aaaaaaaaaaaaa#...",
49
- "....###############...",
50
- "......................",
51
- "......................"]
52
-
53
- $image1_data =
54
- ["22 22 5 1",
55
- ". c None",
56
- "# c #000000",
57
- "c c #838100",
58
- "a c #ffff00",
59
- "b c #ffffff",
60
- "......................",
61
- "......................",
62
- "......................",
63
- "............####....#.",
64
- "...........#....##.##.",
65
- "..................###.",
66
- ".................####.",
67
- ".####...........#####.",
68
- "#abab##########.......",
69
- "#babababababab#.......",
70
- "#ababababababa#.......",
71
- "#babababababab#.......",
72
- "#ababab###############",
73
- "#babab##cccccccccccc##",
74
- "#abab##cccccccccccc##.",
75
- "#bab##cccccccccccc##..",
76
- "#ab##cccccccccccc##...",
77
- "#b##cccccccccccc##....",
78
- "###cccccccccccc##.....",
79
- "##cccccccccccc##......",
80
- "###############.......",
81
- "......................"]
82
-
83
- $image2_data =
84
- ["22 22 5 1",
85
- ". c None",
86
- "# c #000000",
87
- "a c #838100",
88
- "b c #c5c2c5",
89
- "c c #cdb6d5",
90
- "......................",
91
- ".####################.",
92
- ".#aa#bbbbbbbbbbbb#bb#.",
93
- ".#aa#bbbbbbbbbbbb#bb#.",
94
- ".#aa#bbbbbbbbbcbb####.",
95
- ".#aa#bbbccbbbbbbb#aa#.",
96
- ".#aa#bbbccbbbbbbb#aa#.",
97
- ".#aa#bbbbbbbbbbbb#aa#.",
98
- ".#aa#bbbbbbbbbbbb#aa#.",
99
- ".#aa#bbbbbbbbbbbb#aa#.",
100
- ".#aa#bbbbbbbbbbbb#aa#.",
101
- ".#aaa############aaa#.",
102
- ".#aaaaaaaaaaaaaaaaaa#.",
103
- ".#aaaaaaaaaaaaaaaaaa#.",
104
- ".#aaa#############aa#.",
105
- ".#aaa#########bbb#aa#.",
106
- ".#aaa#########bbb#aa#.",
107
- ".#aaa#########bbb#aa#.",
108
- ".#aaa#########bbb#aa#.",
109
- ".#aaa#########bbb#aa#.",
110
- "..##################..",
111
- "......................"]
112
-
113
- $image3_data =
114
- ["22 22 88 2",
115
- "Qt c None",
116
- ".2 c #000000",
117
- ".S c #08ff08",
118
- "#v c #100810",
119
- ".U c #101010",
120
- "#c c #101018",
121
- ".M c #181018",
122
- "#e c #181818",
123
- ".A c #181820",
124
- ".L c #201820",
125
- "#l c #202020",
126
- ".z c #202029",
127
- "#m c #292029",
128
- "#u c #292829",
129
- "#n c #292831",
130
- ".R c #29ff29",
131
- "#o c #312831",
132
- ".T c #313031",
133
- "#p c #313039",
134
- ".Z c #31ff31",
135
- "#q c #393039",
136
- "#t c #393839",
137
- ".y c #393841",
138
- "#s c #413841",
139
- ".o c #414041",
140
- "#h c #4a4852",
141
- ".n c #5a505a",
142
- "#r c #5a5962",
143
- ".I c #5ace5a",
144
- "#b c #6a616a",
145
- ".p c #6a696a",
146
- ".x c #6a6973",
147
- ".Y c #6aff62",
148
- ".l c #736973",
149
- ".t c #7b717b",
150
- ".s c #7b7183",
151
- ".0 c #7bff7b",
152
- ".r c #837983",
153
- ".u c #83798b",
154
- "#g c #83858b",
155
- ".v c #8b7994",
156
- "#i c #8b858b",
157
- ".w c #8b8594",
158
- "#j c #8b8d8b",
159
- ".8 c #8b8d94",
160
- ".m c #948d94",
161
- "#k c #948d9c",
162
- "#f c #949594",
163
- ".q c #94959c",
164
- ".J c #94c694",
165
- "#d c #9c959c",
166
- "#a c #9c95a4",
167
- ".k c #9c9d9c",
168
- ".N c #9c9da4",
169
- ".H c #9ccea4",
170
- ".K c #a49da4",
171
- "#. c #a49dac",
172
- ".i c #a4a5a4",
173
- ".3 c #a4a5ac",
174
- "## c #ac9dac",
175
- ".V c #aca5ac",
176
- ".d c #acaeac",
177
- ".j c #acaeb4",
178
- ".9 c #b4aeb4",
179
- ".# c #b4b6b4",
180
- ".a c #bdbebd",
181
- ".7 c #bdd6bd",
182
- ".c c #c5c6c5",
183
- ".5 c #cdc6cd",
184
- ".b c #cdcecd",
185
- ".4 c #cdced5",
186
- ".F c #d5ced5",
187
- ".G c #d5cede",
188
- ".h c #d5d6d5",
189
- ".E c #d5d6de",
190
- ".Q c #d5ffd5",
191
- ".B c #ded6de",
192
- ".1 c #ded6e6",
193
- ".g c #dedede",
194
- ".D c #dedee6",
195
- ".6 c #e6dee6",
196
- ".f c #e6e6e6",
197
- ".C c #e6e6ee",
198
- ".X c #e6ffe6",
199
- ".O c #eee6ee",
200
- ".e c #eeeeee",
201
- ".W c #f6f6f6",
202
- ".P c #ffffff",
203
- "QtQtQtQtQtQt.#.a.b.b.b.b.c.c.a.a.d.aQtQtQtQt",
204
- "QtQtQtQtQtQt.a.e.f.f.f.f.f.e.e.e.g.aQtQtQtQt",
205
- "QtQtQtQtQtQt.a.c.c.c.b.b.c.c.c.c.a.cQtQtQtQt",
206
- "QtQtQtQtQtQt.#.a.a.a.a.#.a.a.#.#.d.aQtQtQtQt",
207
- "QtQtQtQtQt.c.d.c.a.c.c.c.a.a.a.c.#QtQtQtQtQt",
208
- "QtQtQtQtQt.a.a.#.a.a.a.a.a.a.c.c.#QtQtQtQtQt",
209
- "QtQtQtQtQt.a.#.c.a.a.a.a.a.c.a.c.dQtQtQtQtQt",
210
- "QtQtQtQtQt.c.a.a.a.a.a.a.a.a.a.a.#QtQtQtQtQt",
211
- "QtQtQtQtQt.d.b.f.g.g.g.g.g.g.h.g.i.i.jQtQtQt",
212
- "QtQtQt.a.k.l.#.h.b.h.b.h.b.h.g.g.m.n.o.p.#Qt",
213
- "QtQt.a.q.r.s.t.t.t.t.t.t.t.u.v.w.x.y.z.A.o.i",
214
- "Qt.a.k.B.C.D.B.E.E.E.E.F.G.H.I.J.K.o.L.L.M.y",
215
- ".a.N.O.P.P.P.P.P.P.P.P.P.Q.R.S.R.b.v.T.A.U.L",
216
- ".V.W.P.P.P.P.P.P.P.P.P.P.X.Y.Z.0.P.1.t.A.2.L",
217
- ".3.E.4.5.4.h.E.E.g.6.D.B.D.E.7.F.4.5.8.M.2.A",
218
- ".m.9.j.V.3#..3.K#.#..i#..K#.###a.q.8#b#c.2.L",
219
- ".m.j.j#..3.K.K.K.N.K.N.N.N.N#a#d#d.w#b#c.2#e",
220
- "#f#.#..K.N.K.N.N.N#a.k#a#d#d#d#a.m#g#b.M.2#h",
221
- ".m.3.K.K#a.k#a#d#a.k#a#d#a#d.q.m.8#i.x#c#e.d",
222
- "#f#g#i.w#j.w#i.8.w#i.8.8.m.8.m#k.8.w#b#e#fQt",
223
- ".#.l.z.A#l.z#m#m#m#n#o#o#p#p#q#q#p#o#p#fQtQt",
224
- "QtQt.d#r#s#s#t#p.T.T.T#u#u.z#e#e#v.o.kQtQtQt"]
225
-
226
-
227
- class QtShellControl < Qt::MainWindow
228
- attr_accessor :menubar, :fileMenu, :helpMenu, :toolBar, :fileName, :fileOpenAction
229
- attr_accessor :fileSaveAction, :fileSaveAsAction, :filePrintAction, :fileExitAction
230
- attr_accessor :helpExampleAction, :comboBox, :sessionLog, :executedLines, :printer
231
- slots 'fileOpen()', 'fileOpen()', 'fileSave()', 'fileSaveAs()'
232
- slots 'filePrint()', 'fileExit()', 'runSelection()', 'helpExample()'
233
- signals 'fileNeedsEval(QString)', 'selection(QString)'
234
-
235
- def initialize(*k)
236
- super(*k)
237
- image0 = Qt::Pixmap.new($image0_data)
238
- image1 = Qt::Pixmap.new($image1_data)
239
- image2 = Qt::Pixmap.new($image2_data)
240
- image3 = Qt::Pixmap.new($image3_data)
241
- box = VBox.new(self)
242
- @sessionLog = TextEdit.new(box, "sessionLog")
243
- @sessionLog.setTextFormat(Qt::RichText)
244
- @sessionLog.setReadOnly(true)
245
- @comboBox = ComboBox.new(box, "comboBox")
246
- @comboBox.setEditable(true)
247
- @comboBox.setAutoCompletion(true)
248
- self.setCentralWidget(box)
249
- @comboBox.setFocus
250
- self.resize(500,300)
251
- self.setCaption("QtRuby Shell")
252
- def trUtf8(k)
253
- return k
254
- end
255
- @fileOpenAction = Qt::Action.new(self, "fileOpenAction")
256
- @fileOpenAction.setIconSet(Qt::IconSet.new(image1))
257
- @fileOpenAction.setText(trUtf8("Open"))
258
- @fileOpenAction.setMenuText(trUtf8("&Open..."))
259
- @fileOpenAction.setAccel(KeySequence.new(trUtf8("Ctrl+O")))
260
- @fileSaveAction = Qt::Action.new(self, "fileSaveAction")
261
- @fileSaveAction.setIconSet(Qt::IconSet.new(image2))
262
- @fileSaveAction.setText(trUtf8("Save"))
263
- @fileSaveAction.setMenuText(trUtf8("&Save"))
264
- @fileSaveAction.setAccel(KeySequence.new(trUtf8("Ctrl+S")))
265
- @fileSaveAsAction = Qt::Action.new(self, "fileSaveAsAction")
266
- @fileSaveAsAction.setText(trUtf8("Save As"))
267
- @fileSaveAsAction.setMenuText(trUtf8("Save &As..."))
268
- @fileSaveAsAction.setAccel(KeySequence.new(trUtf8("Ctrl+A")))
269
- @filePrintAction = Qt::Action.new(self, "filePrintAction")
270
- @filePrintAction.setIconSet(Qt::IconSet.new(image3))
271
- @filePrintAction.setText(trUtf8("Print"))
272
- @filePrintAction.setMenuText(trUtf8("&Print..."))
273
- @filePrintAction.setAccel(KeySequence.new(trUtf8("Ctrl+P")))
274
- @fileExitAction = Qt::Action.new(self, "fileExitAction")
275
- @fileExitAction.setText(trUtf8("Exit"))
276
- @fileExitAction.setMenuText(trUtf8("E&xit"))
277
- @fileExitAction.setAccel(KeySequence.new(trUtf8("Ctrl+E")))
278
-
279
- @runAction = Qt::Action.new(self, "runAction");
280
- @runAction.setText(trUtf8("Run Selection"));
281
- @runAction.setMenuText(trUtf8("&Run Selection"));
282
- @runAction.setAccel(KeySequence.new(trUtf8("Ctrl+R")));
283
-
284
- @helpExampleAction = Qt::Action.new(self, "helpExampleAction");
285
- @helpExampleAction.setText(trUtf8("Example"));
286
- @helpExampleAction.setMenuText(trUtf8("Examp&le"));
287
- @helpExampleAction.setAccel(KeySequence.new(trUtf8("Ctrl+L")));
288
-
289
- @toolBar = Qt::ToolBar.new("", self, DockTop)
290
- @toolBar.setLabel(trUtf8("Tools"))
291
-
292
- @fileOpenAction.addTo(toolBar)
293
- @fileSaveAction.addTo(toolBar)
294
- @filePrintAction.addTo(toolBar)
295
-
296
- @menubar= Qt::MenuBar.new(self, "menubar")
297
-
298
- @fileMenu= Qt::PopupMenu.new(self)
299
- @fileOpenAction.addTo(fileMenu)
300
- @fileSaveAction.addTo(fileMenu)
301
- @fileSaveAsAction.addTo(fileMenu)
302
- @fileMenu.insertSeparator
303
- @filePrintAction.addTo(fileMenu)
304
- @fileMenu.insertSeparator
305
- @fileExitAction.addTo(fileMenu)
306
- @menubar.insertItem(trUtf8("&File"), fileMenu)
307
-
308
- @menubar.insertSeparator
309
-
310
- @runMenu= Qt::PopupMenu.new(self)
311
- @runAction.addTo(@runMenu)
312
- @menubar.insertItem(trUtf8("Run"), @runMenu)
313
-
314
- @menubar.insertSeparator
315
-
316
- @helpMenu= Qt::PopupMenu.new(self)
317
- @helpExampleAction.addTo(helpMenu)
318
- @menubar.insertItem(trUtf8("&Help"), helpMenu)
319
-
320
- connect(@fileOpenAction, SIGNAL('activated()'), self, SLOT('fileOpen()'))
321
- connect(@fileSaveAction, SIGNAL('activated()'), self, SLOT('fileSave()'))
322
- connect(@fileSaveAsAction, SIGNAL('activated()'), self, SLOT('fileSaveAs()'))
323
- connect(@filePrintAction, SIGNAL('activated()'), self, SLOT('filePrint()'))
324
- connect(@fileExitAction, SIGNAL('activated()'), self, SLOT('fileExit()'))
325
- connect(@runAction, SIGNAL('activated()'), self, SLOT('runSelection()'))
326
- connect(@helpExampleAction, SIGNAL('activated()'), self, SLOT('helpExample()'))
327
-
328
- @executedLines = []
329
- end
330
-
331
- def fileOpen
332
- fname = Qt::FileDialog::getOpenFileName(
333
- ".",
334
- "Rbqtsh Session (*.rbqts)",
335
- self,
336
- "open session",
337
- "Choose a file to open")
338
- return if fname.nil?
339
- emit fileNeedsEval(fname)
340
- end
341
-
342
- def getFileName
343
- @fileName = Qt::FileDialog::getSaveFileName(
344
- ".",
345
- "Rbqtsh Session (*.rbqts)",
346
- self,
347
- "save session",
348
- "Choose a filename" )
349
- unless @fileName =~ /\.rbqts$/
350
- @fileName << ".rbqts"
351
- end
352
- @fileName
353
- end
354
-
355
- def save(fname)
356
- file = File.new(fname, "w")
357
- if file.nil
358
- # TODO fix ": unknown" to give a reason
359
- Qt::MessageBox::critical(
360
- self,
361
- "Error" ,
362
- "Couldn't open #{fname} for writing: unknown",
363
- Qt::MessageBox::Ok,
364
- Qt::MessageBox::NoButton )
365
- return
366
- end
367
- @executedLines.each {
368
- |line|
369
- next if line =~ /^\s*$/
370
- line.chomp!
371
- line << ";" unless line =~ /;\s*$/
372
- file.puts(line)
373
- }
374
- file.close
375
- end
376
-
377
- def fileSave
378
- return if emptySession
379
- fname = @fileName || getFileName
380
- return if fname.nil?
381
- save fname
382
- end
383
-
384
- def fileSaveAs(cond = 0)
385
- return if emptySession
386
- fname = getFileName
387
- return if fname.nil?
388
- ret = nil
389
- if File.exists(fname)
390
- cond += 1
391
- ret = Qt::MessageBox::warning(
392
- self,
393
- "Warning" ,
394
- "File exists, overwrite ?",
395
- Qt::MessageBox::Yes,
396
- Qt::MessageBox::No )
397
- else
398
- cond = 0
399
- end
400
- fileSaveAs(cond) if (cond == 0) and ret == Qt::MessageBox::No
401
- save(fname)
402
- end
403
-
404
- def filePrint()
405
- margin = 10
406
- pageNo = 1
407
- emptySession() and return
408
- printer = Qt::Printer.new()
409
- if printer.setup(self)
410
- statusBar().message( "Printing..." )
411
- p = Qt::Painter.new()
412
- if ! p.begin( printer )
413
- statusBar().message( "An error occured..." )
414
- return
415
- end
416
-
417
- p.setFont( sessionLog.font() )
418
- yPos = 0
419
- fm = p.fontMetrics
420
- metrics = Qt::PaintDeviceMetrics.new( printer )
421
-
422
- for i in 0..@executedLines.length-1
423
- if margin + yPos > metrics.height() - margin
424
- msg ="Printing (page "+ ++pageNo + ")..."
425
- statusBar().message( msg )
426
- printer.newPage()
427
- yPos = 0
428
- end
429
- p.drawText( margin, margin + yPos,
430
- metrics.width(), fm.lineSpacing(),
431
- ExpandTabs | DontClip,
432
- "#{@executedLines[ i ]}" )
433
- yPos = yPos + fm.lineSpacing()
434
- end
435
- p.end()
436
- statusBar().message( "Printing completed", 3000 )
437
- else
438
- statusBar().message( "Printing aborted", 3000 )
439
- end
440
- end
441
-
442
- def fileExit
443
- emit $qApp.quit if confirmExit
444
- end
445
-
446
- def closeEvent(e)
447
- if confirmExit
448
- e.accept
449
- else
450
- e.ignore
451
- end
452
- end
453
-
454
- def confirmExit
455
- ret = 0
456
- return true if @executedLines.empty?
457
- ret = Qt::MessageBox::warning(
458
- self,
459
- "Warning" ,
460
- "A session is opened, quit anyway ?",
461
- Qt::MessageBox::Yes,
462
- Qt::MessageBox::No)
463
- return ret != Qt::MessageBox::No
464
- end
465
-
466
- def emptySession
467
- empty = @executedLines.empty?
468
- statusBar.message("Session is empty...", 3000) if empty
469
- empty
470
- end
471
-
472
- def runSelection
473
- emit selection(@sessionLog.selectedText())
474
- end
475
-
476
- def helpExample
477
- emit fileNeedsEval("__DATA__")
478
- end
479
-
480
- end
481
-
482
- class QtShell < Qt::MainWindow
483
- slots 'evalInput()', 'evalFile(QString)', 'evalSelection(QString)'
484
- attr_accessor :shellWindow
485
- @@binding = binding
486
- def bind
487
- @@binding
488
- end
489
-
490
- def initialize(*k)
491
- super(*k)
492
-
493
- @shellWindow = QtShellControl.new(nil, "shellWindow")
494
- self.resize(350,350)
495
- self.move(Point.new(10,10))
496
- @shellWindow.move(Point.new(300,200))
497
- self.show
498
- @shellWindow.show
499
-
500
- connect(@shellWindow.comboBox.lineEdit, SIGNAL('returnPressed()'), self, SLOT('evalInput()'))
501
-
502
- @prompt = '<b><font color="blue">$&gt;</font></b>'
503
- self.setCaption("MainWindow - this")
504
- @shellWindow.sessionLog.setText("Ready.<br>")
505
- connect(@shellWindow, SIGNAL('fileNeedsEval(QString)'), self, SLOT('evalFile(QString)'))
506
- connect(@shellWindow, SIGNAL('selection(QString)'), self, SLOT('evalSelection(QString)'))
507
- end
508
-
509
- def logAppend(str)
510
- tmp = @shellWindow.sessionLog.text << str
511
- @shellWindow.sessionLog.setText tmp
512
- end
513
-
514
- def evalInput
515
- evalOneLine @shellWindow.comboBox.currentText
516
- end
517
-
518
- =begin
519
-
520
- sub TIEHANDLE { my ( $classnm, $widg, $color) = @_;
521
- my $h = { widg => $widg, color => $color};
522
- bless $h, $classnm;
523
- }
524
-
525
- sub PRINT {
526
- my $me = shift;
527
- my $color = $me->{color};
528
- my $printed = join $/, @_;
529
- $printed =~ s/</&lt;/gs;
530
- $printed =~ s/>/&gt;/gs;
531
- $printed =~ s/\n/<br>/gs;
532
- $me->{widg}->setText( $me->{widg}->text . "<font color=\"$color\">$printed</font>" );
533
- }
534
-
535
- #tie *STDOUT, 'Qt::TextHandle', $shw->sessionLog, 'black';
536
- #tie *STDERR, 'Qt::TextHandle', $shw->sessionLog, 'red';
537
-
538
- =end
539
-
540
- def evalOneLine(line)
541
- prot = ln = line
542
- prot.gsub('<', '&lt;') # /gs ???
543
- prot.gsub('>', '&gt;') # /gs ???
544
-
545
- logAppend( "#{@prompt}#{prot}" )
546
-
547
- ostdout, ostderr = $stdout, $stderr
548
- strio = StringIO.new
549
- $stdout, $stderr = strio, strio
550
- begin
551
- if line =~ /^\$(.*)$/
552
- eval $1, bind
553
- else
554
- eval line
555
- end
556
- rescue StandardError, ScriptError => e
557
- prot = e.to_str
558
- prot.gsub(/</, '&lt;') # /gs ???
559
- prot.gsub(/>/, '&gt;') # /gs ???
560
- c = @shellWindow.sessionLog.color
561
- prot.gsub(/\n/, '<br>') # /gs ???
562
- logAppend '<font color="red">' << prot << '</font><br>'
563
- shellWindow.sessionLog.setColor c
564
- end
565
- logAppend '<font color="blue">' << strio.string << '</font><br>'
566
- @shellWindow.executedLines << line
567
- @shellWindow.comboBox.clearEdit
568
- @shellWindow.comboBox.setFocus
569
- $stdout, $stderr = ostdout, ostderr
570
-
571
- @shellWindow.sessionLog.scrollToBottom
572
- end
573
-
574
- def evalFile(fname)
575
- if fname == "__DATA__"
576
- file = StringIO.new
577
- file.string = $example
578
- else
579
- file = File.open(fname, "r")
580
- if file.nil?
581
- # TODO use $! -> error message!
582
- Qt::MessageBox::warning(
583
- self,
584
- "Error" ,
585
- "Couldn't open @{$fn}: $!",
586
- Qt::MessageBox::Ok,
587
- Qt::MessageBox::NoButton)
588
- return
589
- end
590
- indata = file
591
- end
592
- file.each_line {
593
- |line|
594
- evalOneLine(line)
595
- }
596
- file.close
597
- end
598
-
599
- def evalSelection(selection)
600
- evalOneLine(selection.sub(/.*span>/, "")) unless selection.nil?
601
- end
602
-
603
- end
604
-
605
- app = Qt::Application.new(ARGV)
606
- w = QtShell.new(nil, "mainWindow")
607
- app.setMainWidget(w.shellWindow)
608
- app.exec
609
-
610
- BEGIN {
611
- $example = <<EXAMPLE
612
- $ attr_accessor :datetime, :button, :textedit, :sample, :vbox
613
- statusBar.message("Hello World !")
614
- @vbox = VBox.new(self)
615
- @datetime = DateTimeEdit.new(vbox)
616
- @textedit = TextEdit.new(vbox)
617
- @button = PushButton.new("Hello World!", vbox)
618
- self.setCentralWidget(vbox)
619
- self.resize(220,240)
620
- @vbox.show
621
- @sample = Qt::PopupMenu.new(self)
622
- $ slots 'there()'
623
- @sample.insertItem("&There", self, SLOT('there()'))
624
- self.menuBar.insertItem("&Here", sample)
625
- $ def there; statusBar.message("There...", 2000); end
626
- EXAMPLE
627
- }