2
* Copyright 2008-2010 by Richard Dale <richard.j.dale@gmail.com>
4
* This program is free software; you can redistribute it and/or modify
5
* it under the terms of the GNU Library General Public License as
6
* published by the Free Software Foundation; either version 2, or
7
* (at your option) any later version.
9
* This program is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
* GNU General Public License for more details
14
* You should have received a copy of the GNU Library General Public
15
* License along with this program; if not, write to the
16
* Free Software Foundation, Inc.,
17
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20
require 'plasma_applet'
22
module PlasmaScripting
23
class Applet < Qt::Object
24
slots "setImmutability(Plasma::ImmutabilityType)",
26
:showConfigurationInterface,
29
:flushPendingConstraintsEvents,
31
'initExtenderItem(Plasma::ExtenderItem*)'
33
signals :releaseVisualFocus,
38
attr_accessor :applet_script
40
def initialize(parent, args = nil)
42
@applet_script = parent
43
connect(@applet_script.applet, SIGNAL(:releaseVisualFocus), self, SIGNAL(:releaseVisualFocus))
44
connect(@applet_script.applet, SIGNAL(:geometryChanged), self, SIGNAL(:geometryChanged))
45
connect(@applet_script.applet, SIGNAL(:configNeedsSaving), self, SIGNAL(:configNeedsSaving))
46
connect(@applet_script.applet, SIGNAL(:activate), self, SIGNAL(:activate))
47
connect(@applet_script.applet, SIGNAL('extenderItemRestored(Plasma::ExtenderItem*)'), self, SLOT('initExtenderItem(Plasma::ExtenderItem*)'))
50
# If a method is called on a PlasmaScripting::Applet instance is found to be missing
51
# then try calling the method on the underlying Plasma::Applet in the ScriptEngine.
52
def method_missing(method, *args)
56
applet_script.applet.method_missing(method, *args)
60
def self.const_missing(name)
64
Plasma::Applet.const_missing(name)
71
def paintInterface(painter, option, contentsRect)
74
def initExtenderItem(item)
75
puts "Missing implementation of initExtenderItem in the applet " \
76
"#{item.config.readEntry('SourceAppletPluginName', '')}" \
77
"!\n Any applet that uses extenders should implement initExtenderItem to " \
78
"instantiate a widget."
90
if args.length == 1 && args[0].kindof?(Qt::Size)
91
puts "Warning: invalid resize() call. Add this to your metadata.desktop file:"
92
puts "X-Plasma-DefautSize=%d,%d" % [args[0].width, args[0].height]
93
elsif args.length == 2
94
puts "Warning: invalid resize() call. Add this to your metadata.desktop file:"
95
puts "X-Plasma-DefautSize=%d,%d" % [args[0].to_i, args[1].to_i]
101
def constraintsEvent(constraints)
104
def contextualActions
108
def createConfigurationInterface(dialog)
111
def showConfigurationInterface
114
def dataEngine(engine)
115
@applet_script.dataEngine(engine)
119
@applet_script.package
122
def setImmutability(immutabilityType)
123
@applet_script.applet.setImmutability(immutabilityType)
126
def immutability=(immutabilityType)
127
setImmutability(immutabilityType)
131
@applet_script.applet.destroy
135
@applet_script.applet.raise
139
@applet_script.applet.lower
142
def flushPendingConstraintsEvents
143
@applet_script.applet.flushPendingConstraintsEvents
147
class Containment < Applet
148
def initialize(parent, args = nil)
153
class PopupApplet < Applet
154
def initialize(parent, args = nil)
160
module PlasmaScriptengineRuby
161
class Applet < Plasma::AppletScript
162
def initialize(parent, args)
167
str.gsub(/(^|[._-])(.)/) { $2.upcase }
171
oldSize = applet.size
173
puts "RubyAppletScript::Applet#init mainScript: #{mainScript}"
174
program = Qt::FileInfo.new(mainScript)
176
load Qt::File.encodeName(program.filePath).to_s
177
moduleName = camelize(Qt::Dir.new(package.path).dirName)
178
className = camelize(program.baseName)
179
puts "RubyAppletScript::Applet#init instantiating: #{moduleName}::#{className}"
180
klass = Object.const_get(moduleName.to_sym).const_get(className.to_sym)
181
@applet_script = klass.new(self)
183
if oldSize.height > 10 && oldSize.width > 10
184
applet.resize(oldSize)
187
set_up_event_handlers
192
@applet_script.configChanged
195
def paintInterface(painter, option, contentsRect)
196
@applet_script.paintInterface(painter, option, contentsRect)
199
def constraintsEvent(constraints)
200
@applet_script.constraintsEvent(constraints)
203
def contextualActions
204
@applet_script.contextualActions
207
def showConfigurationInterface
208
dialog = standardConfigurationDialog()
209
@applet_script.createConfigurationInterface(dialog)
210
addStandardConfigurationPages(dialog)
216
def eventFilter(obj, event)
217
handler = @event_handlers[event.type.to_i]
219
@applet_script.send(handler, event)
228
def set_up_event_handlers
231
if @applet_script.respond_to?(:mousePressEvent)
232
@event_handlers[Qt::Event::GraphicsSceneMousePress.to_i] = :mousePressEvent
235
if @applet_script.respond_to?(:contextMenuEvent)
236
@event_handlers[Qt::Event::GraphicsSceneContextMenu.to_i] = :contextMenuEvent
239
if @applet_script.respond_to?(:dragEnterEvent)
240
@event_handlers[Qt::Event::GraphicsSceneDragEnter.to_i] = :dragEnterEvent
243
if @applet_script.respond_to?(:dragLeaveEvent)
244
@event_handlers[Qt::Event::GraphicsSceneDragLeave.to_i] = :dragLeaveEvent
247
if @applet_script.respond_to?(:dragMoveEvent)
248
@event_handlers[Qt::Event::GraphicsSceneDragMove.to_i] = :dragMoveEvent
251
if @applet_script.respond_to?(:dropEvent)
252
@event_handlers[Qt::Event::GraphicsSceneDrop.to_i] = :dropEvent
255
if @applet_script.respond_to?(:focusInEvent)
256
@event_handlers[Qt::Event::FocusIn.to_i] = :focusInEvent
259
if @applet_script.respond_to?(:focusOutEvent)
260
@event_handlers[Qt::Event::FocusOut.to_i] = :focusOutEvent
263
if @applet_script.respond_to?(:hoverEnterEvent)
264
@event_handlers[Qt::Event::GraphicsSceneHoverEnter.to_i] = :hoverEnterEvent
267
if @applet_script.respond_to?(:hoverLeaveEvent)
268
@event_handlers[Qt::Event::GraphicsSceneHoverLeave.to_i] = :hoverLeaveEvent
271
if @applet_script.respond_to?(:hoverMoveEvent)
272
@event_handlers[Qt::Event::GraphicsSceneHoverMove.to_i] = :hoverMoveEvent
275
if @applet_script.respond_to?(:inputMethodEvent)
276
@event_handlers[Qt::Event::InputMethod.to_i] = :inputMethodEvent
279
if @applet_script.respond_to?(:keyPressEvent)
280
@event_handlers[Qt::Event::KeyPress.to_i] = :keyPressEvent
283
if @applet_script.respond_to?(:keyReleaseEvent)
284
@event_handlers[Qt::Event::KeyRelease.to_i] = :keyReleaseEvent
287
if @applet_script.respond_to?(:mouseDoubleClickEvent)
288
@event_handlers[Qt::Event::GraphicsSceneMouseDoubleClick.to_i] = :mouseDoubleClickEvent
291
if @applet_script.respond_to?(:mouseMoveEvent)
292
@event_handlers[Qt::Event::GraphicsSceneMouseMove.to_i] = :mouseMoveEvent
295
if @applet_script.respond_to?(:mousePressEvent)
296
@event_handlers[Qt::Event::GraphicsSceneMousePress.to_i] = :mousePressEvent
299
if @applet_script.respond_to?(:mouseReleaseEvent)
300
@event_handlers[Qt::Event::GraphicsSceneMouseRelease.to_i] = :mouseReleaseEvent
303
if @applet_script.respond_to?(:wheelEvent)
304
@event_handlers[Qt::Event::GraphicsSceneWheel.to_i] = :wheelEvent
307
if !@event_handlers.empty?
308
applet.installEventFilter(self)
317
# Because a PlasmaScript::Applet is not actually a Plasma::Applet we
318
# need to 'cheat' in the api, to pretend that it is. So the constructors
319
# in the Plasma widget classes will substitute any PlasmaScript::Applet
320
# argument passed for the real Plasma::Applet in the ScriptEngine
323
class BusyWidget < Qt::Base
324
def initialize(parent = nil)
325
if parent.kind_of?(PlasmaScripting::Applet)
326
super(parent.applet_script.applet)
333
class CheckBox < Qt::Base
334
def initialize(parent = nil)
335
if parent.kind_of?(PlasmaScripting::Applet)
336
super(parent.applet_script.applet)
343
class ComboBox < Qt::Base
344
def initialize(parent = nil)
345
if parent.kind_of?(PlasmaScripting::Applet)
346
super(parent.applet_script.applet)
353
class Extender < Qt::Base
354
def initialize(parent = nil)
355
if parent.kind_of?(PlasmaScripting::Applet)
356
super(parent.applet_script.applet)
363
class FlashingLabel < Qt::Base
364
def initialize(parent = nil)
365
if parent.kind_of?(PlasmaScripting::Applet)
366
super(parent.applet_script.applet)
373
class Frame < Qt::Base
374
def initialize(parent = nil)
375
if parent.kind_of?(PlasmaScripting::Applet)
376
super(parent.applet_script.applet)
383
class GroupBox < Qt::Base
384
def initialize(parent = nil)
385
if parent.kind_of?(PlasmaScripting::Applet)
386
super(parent.applet_script.applet)
393
class IconWidget < Qt::Base
394
def initialize(*args)
396
for i in 0...args.length do
397
if args[i].kind_of?(PlasmaScripting::Applet)
398
sargs << args[i].applet_script.applet
407
class ItemBackground < Qt::Base
408
def initialize(parent = nil)
409
if parent.kind_of?(PlasmaScripting::Applet)
410
super(parent.applet_script.applet)
417
class Label < Qt::Base
418
def initialize(parent = nil)
419
if parent.kind_of?(PlasmaScripting::Applet)
420
super(parent.applet_script.applet)
427
class LineEdit < Qt::Base
428
def initialize(parent = nil)
429
if parent.kind_of?(PlasmaScripting::Applet)
430
super(parent.applet_script.applet)
437
class Meter < Qt::Base
438
def initialize(parent = nil)
439
if parent.kind_of?(PlasmaScripting::Applet)
440
super(parent.applet_script.applet)
447
class PushButton < Qt::Base
448
def initialize(parent = nil)
449
if parent.kind_of?(PlasmaScripting::Applet)
450
super(parent.applet_script.applet)
457
class RadioButton < Qt::Base
458
def initialize(parent = nil)
459
if parent.kind_of?(PlasmaScripting::Applet)
460
super(parent.applet_script.applet)
467
class ScrollBar < Qt::Base
468
def initialize(orientation, parent = nil)
469
if parent.kind_of?(PlasmaScripting::Applet)
470
super(orientation, parent.applet_script.applet)
477
class ScrollWidget < Qt::Base
478
def initialize(parent = nil)
479
if parent.kind_of?(PlasmaScripting::Applet)
480
super(parent.applet_script.applet)
487
class Separator < Qt::Base
488
def initialize(parent = nil, wFlags = 0)
489
if parent.kind_of?(PlasmaScripting::Applet)
490
super(parent.applet_script.applet, wFlags)
497
class SignalPlotter < Qt::Base
498
def initialize(parent = nil)
499
if parent.kind_of?(PlasmaScripting::Applet)
500
super(parent.applet_script.applet)
507
class Slider < Qt::Base
508
def initialize(parent = nil)
509
if parent.kind_of?(PlasmaScripting::Applet)
510
super(parent.applet_script.applet)
517
class SpinBox < Qt::Base
518
def initialize(parent = nil)
519
if parent.kind_of?(PlasmaScripting::Applet)
520
super(parent.applet_script.applet)
527
if arg.kind_of? Range
528
return super(arg.begin, arg.exclude_end? ? arg.end - 1 : arg.end)
535
class SvgWidget < Qt::Base
536
def initialize(*args)
537
if args.length > 0 && args[0].kind_of?(PlasmaScripting::Applet)
538
args[0] = args[0].applet_script.applet
540
elsif args.length > 2 && args[2].kind_of?(PlasmaScripting::Applet)
541
args[2] = args[2].applet_script.applet
549
class TabBar < Qt::Base
550
def initialize(parent = nil)
551
if parent.kind_of?(PlasmaScripting::Applet)
552
super(parent.applet_script.applet)
559
class TextBrowser < Qt::Base
560
def initialize(parent = nil)
561
if parent.kind_of?(PlasmaScripting::Applet)
562
super(parent.applet_script.applet)
569
class TextEdit < Qt::Base
570
def initialize(parent = nil)
571
if parent.kind_of?(PlasmaScripting::Applet)
572
super(parent.applet_script.applet)
579
class ToolButton < Qt::Base
580
def initialize(parent = nil)
581
if parent.kind_of?(PlasmaScripting::Applet)
582
super(parent.applet_script.applet)
589
class ToolTipManager < Qt::Base
590
def setContent(widget, data)
591
if widget.kind_of?(PlasmaScripting::Applet)
592
super(widget.applet_script.applet, data)
598
def set_content(widget, data)
599
setContent(widget, data)
602
def clearContent(widget)
603
if widget.kind_of?(PlasmaScripting::Applet)
604
super(widget.applet_script.applet)
610
def clear_content(widget)
615
if widget.kind_of?(PlasmaScripting::Applet)
616
super(widget.applet_script.applet)
623
return isVisible(widget)
626
def isVisible(widget)
627
if widget.kind_of?(PlasmaScripting::Applet)
628
super(widget.applet_script.applet)
634
def registerWidget(widget)
635
if widget.kind_of?(PlasmaScripting::Applet)
636
super(widget.applet_script.applet)
642
def register_widget(widget)
643
registerWidget(widget)
646
def unregisterWidget(widget)
647
if widget.kind_of?(PlasmaScripting::Applet)
648
super(widget.applet_script.applet)
654
def unregister_widget(widget)
655
unregisterWidget(widget)
659
class TreeView < Qt::Base
660
def initialize(parent = nil)
661
if parent.kind_of?(PlasmaScripting::Applet)
662
super(parent.applet_script.applet)
669
class VideoWidget < Qt::Base
670
def initialize(parent = nil)
671
if parent.kind_of?(PlasmaScripting::Applet)
672
super(parent.applet_script.applet)
679
class WebView < Qt::Base
680
def initialize(parent = nil)
681
if parent.kind_of?(PlasmaScripting::Applet)
682
super(parent.applet_script.applet)
692
class GraphicsProxyWidget < Qt::Base
693
def initialize(parent = nil, wFlags = nil)
694
if parent.kind_of?(PlasmaScripting::Applet)
695
super(parent.applet_script.applet, wFlags)
701
def parent_item=(item)
705
def parentItem=(item)
709
def setParentItem(item)
710
if item.kind_of?(PlasmaScripting::Applet)
711
super(item.applet_script.applet)
718
method_missing(:type, *args)
722
class QAbstractGraphicsShapeItem < Qt::Base
723
def initialize(parent = nil, wFlags = nil)
724
if parent.kind_of?(PlasmaScripting::Applet)
725
super(parent.applet_script.applet, wFlags)
731
def parent_item=(item)
735
def parentItem=(item)
739
def setParentItem(item)
740
if item.kind_of?(PlasmaScripting::Applet)
741
super(item.applet_script.applet)
748
method_missing(:type, *args)
752
class GraphicsEllipseItem < Qt::Base
753
def initialize(parent = nil, wFlags = nil)
754
if parent.kind_of?(PlasmaScripting::Applet)
755
super(parent.applet_script.applet, wFlags)
761
def parent_item=(item)
765
def parentItem=(item)
769
def setParentItem(item)
770
if item.kind_of?(PlasmaScripting::Applet)
771
super(item.applet_script.applet)
778
method_missing(:type, *args)
782
class GraphicsItemGroup < Qt::Base
783
def initialize(parent = nil, wFlags = nil)
784
if parent.kind_of?(PlasmaScripting::Applet)
785
super(parent.applet_script.applet, wFlags)
791
def parent_item=(item)
795
def parentItem=(item)
799
def setParentItem(item)
800
if item.kind_of?(PlasmaScripting::Applet)
801
super(item.applet_script.applet)
808
method_missing(:type, *args)
812
class GraphicsLineItem < Qt::Base
813
def initialize(parent = nil, wFlags = nil)
814
if parent.kind_of?(PlasmaScripting::Applet)
815
super(parent.applet_script.applet, wFlags)
821
def parent_item=(item)
825
def parentItem=(item)
829
def setParentItem(item)
830
if item.kind_of?(PlasmaScripting::Applet)
831
super(item.applet_script.applet)
838
method_missing(:type, *args)
842
class GraphicsPathItem < Qt::Base
843
def initialize(parent = nil, wFlags = nil)
844
if parent.kind_of?(PlasmaScripting::Applet)
845
super(parent.applet_script.applet, wFlags)
851
def parent_item=(item)
855
def parentItem=(item)
859
def setParentItem(item)
860
if item.kind_of?(PlasmaScripting::Applet)
861
super(item.applet_script.applet)
868
method_missing(:type, *args)
872
class GraphicsPixmapItem < Qt::Base
873
def initialize(parent = nil, wFlags = nil)
874
if parent.kind_of?(PlasmaScripting::Applet)
875
super(parent.applet_script.applet, wFlags)
881
def parent_item=(item)
885
def parentItem=(item)
889
def setParentItem(item)
890
if item.kind_of?(PlasmaScripting::Applet)
891
super(item.applet_script.applet)
898
method_missing(:type, *args)
902
class GraphicsPolygonItem < Qt::Base
903
def initialize(parent = nil, wFlags = nil)
904
if parent.kind_of?(PlasmaScripting::Applet)
905
super(parent.applet_script.applet, wFlags)
911
def parent_item=(item)
915
def parentItem=(item)
919
def setParentItem(item)
920
if item.kind_of?(PlasmaScripting::Applet)
921
super(item.applet_script.applet)
928
method_missing(:type, *args)
932
class GraphicsRectItem < Qt::Base
933
def initialize(parent = nil, wFlags = nil)
934
if parent.kind_of?(PlasmaScripting::Applet)
935
super(parent.applet_script.applet, wFlags)
941
def parent_item=(item)
945
def parentItem=(item)
949
def setParentItem(item)
950
if item.kind_of?(PlasmaScripting::Applet)
951
super(item.applet_script.applet)
958
method_missing(:type, *args)
962
class GraphicsSimpleTextItem < Qt::Base
963
def initialize(parent = nil, wFlags = nil)
964
if parent.kind_of?(PlasmaScripting::Applet)
965
super(parent.applet_script.applet, wFlags)
971
def parent_item=(item)
975
def parentItem=(item)
979
def setParentItem(item)
980
if item.kind_of?(PlasmaScripting::Applet)
981
super(item.applet_script.applet)
988
method_missing(:type, *args)
992
class GraphicsSvgItem < Qt::Base
993
def initialize(parent = nil, wFlags = nil)
994
if parent.kind_of?(PlasmaScripting::Applet)
995
super(parent.applet_script.applet, wFlags)
1001
def parent_item=(item)
1005
def parentItem=(item)
1009
def setParentItem(item)
1010
if item.kind_of?(PlasmaScripting::Applet)
1011
super(item.applet_script.applet)
1018
method_missing(:type, *args)
1022
class GraphicsTextItem < Qt::Base
1023
def initialize(parent = nil, wFlags = nil)
1024
if parent.kind_of?(PlasmaScripting::Applet)
1025
super(parent.applet_script.applet, wFlags)
1031
def parent_item=(item)
1035
def parentItem=(item)
1039
def setParentItem(item)
1040
if item.kind_of?(PlasmaScripting::Applet)
1041
super(item.applet_script.applet)
1048
method_missing(:type, *args)
1052
class GraphicsWidget < Qt::Base
1053
def initialize(parent = nil, wFlags = nil)
1054
if parent.kind_of?(PlasmaScripting::Applet)
1055
super(parent.applet_script.applet, wFlags)
1061
def parent_item=(item)
1065
def parentItem=(item)
1069
def setParentItem(item)
1070
if item.kind_of?(PlasmaScripting::Applet)
1071
super(item.applet_script.applet)
1078
method_missing(:type, *args)
1082
class GraphicsGridLayout < Qt::Base
1083
def initialize(parent = nil)
1084
if parent.kind_of?(PlasmaScripting::Applet)
1085
super(parent.applet_script.applet)
1097
for i in 0...args.length do
1098
if args[i].kind_of?(PlasmaScripting::Applet)
1099
sargs << args[i].applet_script.applet
1108
if item.kind_of?(PlasmaScripting::Applet)
1109
super(item.applet_script.applet)
1115
def set_alignment(item, alignment)
1116
setAlignment(item, alignment)
1119
def setAlignment(item, alignment)
1120
if item.kind_of?(PlasmaScripting::Applet)
1121
super(item.applet_script.applet, alignment)
1128
class GraphicsLinearLayout < Qt::Base
1129
def initialize(*args)
1131
for i in 0...args.length do
1132
if args[i].kind_of?(PlasmaScripting::Applet)
1133
sargs << args[i].applet_script.applet
1147
for i in 0...args.length do
1148
if args[i].kind_of?(PlasmaScripting::Applet)
1149
sargs << args[i].applet_script.applet
1158
if item.kind_of?(PlasmaScripting::Applet)
1159
super(item.applet_script.applet)
1165
def insert_item(index, item)
1166
insertItem(index, item)
1169
def insertItem(index, item)
1170
if item.kind_of?(PlasmaScripting::Applet)
1171
super(index, item.applet_script.applet)
1177
def set_alignment(item, alignment)
1178
setAlignment(item, alignment)
1181
def setAlignment(item, alignment)
1182
if item.kind_of?(PlasmaScripting::Applet)
1183
super(item.applet_script.applet, alignment)
1189
def set_stretch_factor(item, stretch)
1190
setStretchFactor(item, stretch)
1193
def setStretchFactor(item, stretch)
1194
if item.kind_of?(PlasmaScripting::Applet)
1195
super(item.applet_script.applet, stretch)
1201
def stretch_factor(item)
1205
def stretchFactor(item)
1206
if item.kind_of?(PlasmaScripting::Applet)
1207
super(item.applet_script.applet)
1215
# kate: space-indent on; indent-width 2; replace-tabs on; mixed-indent off;