Ruby Qt/KDE4 Template KMainWindow

KMainWindow Starting using the Qt-Toolkit (or the extension with KDE classes) is a little difficult. Especially if you never used really the toolkit with C++. So you have to learn translating the C++ API reference into ruby.

Some usefull links:

But when you got it, the usage is pretty cool. In the following code listing you can find the code for a full-featured kmainwindow.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#!/usr/bin/env ruby # file: kmainwindow.rb $KCODE = 'u' require 'korundum4' # kd4 bindings class CustomWidget < KDE::MainWindow def initialize super resize(520, 535) # Prepare the Actions @actionQuit = KDE::Action.new( self ) { setIcon KDE::Icon.new "application-exit" } connect( @actionQuit, SIGNAL( :triggered ), SLOT( :close ) ) # Prepare the Menu @menuBar = menuBar @menuFile = Qt::Menu.new @menuBar @menuFile.addAction @actionQuit @menuBar.addAction @menuFile.menuAction @helpMenu = helpMenu @menuBar.addAction @helpMenu.menuAction setMenuBar(@menuBar) # Prepare Statusbar @statusBar = statusBar setStatusBar @statusBar # Prepare Toolbar @toolBar = toolBar @toolBar.addAction @actionQuit addToolBar(Qt::TopToolBarArea, @toolBar) # Prepare Central Widget @centralwidget = KDE::TextEdit.new self setCentralWidget @centralwidget retranslateUi end def retranslateUi @menuFile.title = i18n "File" setWindowTitle i18n "MainWindow" # @statusBar.showMessage i18n "Loading" @actionQuit.text = i18n "Quit" @actionQuit.shortcut = KDE::Shortcut.new i18nc( "Quit", "Ctrl+Q" ) end end about = KDE::AboutData.new( "app", # internal application name # language catlog name for i10n (konqueror's catalog for the beginning is better than no catalog) "konqueror", KDE.ki18n("KApp"), # application name in the about menu and everywhere else "0.1", # application version KDE::ki18n("A Tool to easily create HTML formatted Code"), # short description KDE::AboutData::License_GPL_V3, # license KDE::ki18n("(c) 1999-2000, Name"), # copyright info # text in the about box - maybe with \n line breaks KDE::ki18n("just some text in the about box"), # project homepage and eMail adress for bug reports - attention: homepage changes standard dbus/dcop name! "http://homepage.de", "bugs@homepage.de" ) about.setProgramIconName "plasma" # use the plasma-icon instead of question mark KDE::CmdLineArgs.init(ARGV, about) a = KDE::Application.new w = CustomWidget.new a.topWidget = w w.show a.exec

kmainwindow.rb