summaryrefslogtreecommitdiffstats
path: root/app_templates/kdeapp/src
diff options
context:
space:
mode:
Diffstat (limited to 'app_templates/kdeapp/src')
-rw-r--r--app_templates/kdeapp/src/hi16-app-kdeapp.png8
-rw-r--r--app_templates/kdeapp/src/hi32-app-kdeapp.png26
-rw-r--r--app_templates/kdeapp/src/kdeapp.desktop35
-rw-r--r--app_templates/kdeapp/src/kdeapp.lsm16
-rwxr-xr-xapp_templates/kdeapp/src/kdeapp.py280
-rw-r--r--app_templates/kdeapp/src/kdeappiface.py26
-rw-r--r--app_templates/kdeapp/src/kdeappui.rc8
-rw-r--r--app_templates/kdeapp/src/kdeappview.py91
-rw-r--r--app_templates/kdeapp/src/prefdialog.py53
9 files changed, 543 insertions, 0 deletions
diff --git a/app_templates/kdeapp/src/hi16-app-kdeapp.png b/app_templates/kdeapp/src/hi16-app-kdeapp.png
new file mode 100644
index 0000000..40fe05e
--- /dev/null
+++ b/app_templates/kdeapp/src/hi16-app-kdeapp.png
@@ -0,0 +1,8 @@
+�PNG
+
+
+IHDR
+���5� M�Z��fθ92@�
+��2w�l�A;�v�c)�\)��/l F�\��ϓ���~��S���X�Ŧ�=t�j�76��{rumu��_��% ��}�f�b{�Z��RdY�7�C2�TWՓ�Ӳ��O>�f�X�G�ȵ��,F�&/#�x<��&P��%]E��ܖC�f U��S����
+"�l+�*���J�ǰ�M��Jde���9Hz�]�qT�P�B�I��
+��}���Q����� �bR��������� �]�nv��bf,�û����:�L�d�4��PuC����7��AK �\��^�ϟ=.~�����|َ2�w��|x��w��N�Vd/RK��6���+����ɤ�����Ħ�7fmc�5� hr�96�M�D#x�=Ia�ނOHxc�7=# �U�D��oV�i
diff --git a/app_templates/kdeapp/src/hi32-app-kdeapp.png b/app_templates/kdeapp/src/hi32-app-kdeapp.png
new file mode 100644
index 0000000..8a6093e
--- /dev/null
+++ b/app_templates/kdeapp/src/hi32-app-kdeapp.png
@@ -0,0 +1,26 @@
+�PNG
+
+
+IHDR
+:IDATx���{�\�}�?w�y�;;���}`�����k̲~&�q�R�- H��Gpk
+PPJ�&(
+�J��EQ���4Iq QDHC~D6��Bص�׮ٵٝ��̝�;�;��?f�1� i{���+]������}��k��_åòB��e,ˢ3��֖6�Tض�3'�``��Ie�m=����������}�j���^�w��O<w�Y��kV_�˺�x�,��M��?�.���x!��c�Č�l�8����v��oZ�������;ퟙ<��r�V���͌O���>���\O����z��U#fh�a7��Y��I5�r엇�������@�[
+>�u;�j����o���Qk╳�?���ڕkq�
+��-��t/�E(�tB ��06 �se_���������?���u����7���сQ3�r)%�H+B
+��֎6���CHW��RШ7ؾk33��M���_<dzGf�X�bq���@�YӷƬ\o֭Z��8�B!</MP X�i-�z�J�����A(AH�HG�D\�fcTJe��kV �a� l��Yk�/�r� �
+�:.��b��X,�[w�s� � �yh�)
+�t�������a#� �H㶸��>g�~�So
+�/�Y58ȗ���$�i������TJjA
+�5���0�>
+n���t�Mt?���gj|�#O=�]���d۶ȕr(���߱��z'N���̐��)�E
+�<A�BP�0��[,��f���T�R �Va#� �����_y����3z�&˛K��gAP�T�Bcp��n�o�&��+���N�If�S9�~*K�˒�ҌM�Q(�MͲ�����S�FHA(d��Dj�m�B`�aﭷ������fh��z���
+c ӳ
+PJ��8^*K.�����
+�OP �>���(�--H��, �$�R�j9 ���'�$�����z��1�C/���;8�� >�|p�-�����Z��f�RY�x?�%7�!���%���c+EĪѡ�m�mb��#I��3x� A�B��3vn�F��4����qv���S�����u�B��BI�T
+G)�^s�~*G&�b~.N46ǩ3�H����H���_lϻ%�:ґ�m-dbi\��
+YT�R~
+�3�`��ʮ
+��x�S�(W˖eY��,8��a{�Qn���f�*�0%�����I��]
+�U�ܲ!�Eg�(6-���:.JJ�T�EZ ��^:E$�r��b�j�q�K*�"��͖L\
+i#�h��h-�ƖM[���rή�Gk� e���TN�r�b�H6�ʼn��/���? h�e3�����Z���B��T�l��*J6�])���X ?��C{G�ZG�Q���L�T!�ʒMd�DS�/Y��C�^�]M[?~�������/�E,��T(�B�\�o���ղ,����g}�<�| �h0��[,_�� H'<�ٸG*��5W�fI������ZX�y������m��/��%�u�MTk5�X�a�Ek��� �d��p���O������e�+(�$gb���\8���/�
+���l!0��Z�W'^]�,���B�wؼz�F��%����9-��+ڮ��h�Χ�,�����b�����l�\l4f7
diff --git a/app_templates/kdeapp/src/kdeapp.desktop b/app_templates/kdeapp/src/kdeapp.desktop
new file mode 100644
index 0000000..2787759
--- /dev/null
+++ b/app_templates/kdeapp/src/kdeapp.desktop
@@ -0,0 +1,35 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=$APPNAME$
+Exec=$APPNAMELC$ %i %m -caption "%c"
+Icon=$APPNAMELC$
+Type=Application
+DocPath=$APPNAMELC$/$APPNAMELC$.html
+Comment=A KDE KPart Application
+Comment[ca]=Una aplicació KPart per a KDE
+Comment[cy]=Cymhwysiad KPart KDE
+Comment[da]=Et KDE KPart program
+Comment[de]=Eine KDE-Komponenten-Anwendung
+Comment[el]=Μια εφαρμογή KPart του KDE
+Comment[es]=Una aplicación KPart de KDE
+Comment[et]=KDE KPart rakendus
+Comment[fr]=Une application KPart pour KDE.
+Comment[hi]=एक केडीई के-पार्ट अनुप्रयोग
+Comment[hu]=KPart-alapú KDE-alkalmazás
+Comment[is]=KDE KPart forrit
+Comment[it]=Applicazione KPart di KDE
+Comment[ja]=KDE KPart アプリケーション
+Comment[nb]=Et KDE KPart-program
+Comment[nl]=Een KDE KPart-toepassing
+Comment[pl]=Aplikacja KDE
+Comment[pt]=Uma aplicação KPart do KDE
+Comment[pt_BR]=Um Aplicativo KPart do KDE
+Comment[ru]=Приложение KPart для KDE
+Comment[sl]=Program KPart za KDE
+Comment[sr]=KDE KPart програм
+Comment[sr@Latn]=KDE KPart program
+Comment[sv]=Ett KDE Kpart-program
+Comment[ta]=கெடி கெபார்ட் பயன்பாடு
+Comment[tg]=Ба кор андохтани KPart барои KDE
+Comment[zh_CN]=一个 KDE KPart 应用程序
+Terminal=0
diff --git a/app_templates/kdeapp/src/kdeapp.lsm b/app_templates/kdeapp/src/kdeapp.lsm
new file mode 100644
index 0000000..43d0d5f
--- /dev/null
+++ b/app_templates/kdeapp/src/kdeapp.lsm
@@ -0,0 +1,16 @@
+Begin3
+Title: $APPNAME$ -- Some description
+Version: $VERSION$
+Entered-date:
+Description:
+Keywords: KDE Qt
+Author: $AUTHOR$ <$EMAIL$>
+Maintained-by: $AUTHOR$ <$EMAIL$>
+Home-page:
+Alternate-site:
+Primary-site: ftp://ftp.kde.org/pub/kde/unstable/apps/utils
+ xxxxxx $APPNAMELC$-$VERSION$.tar.gz
+ xxx $APPNAMELC$-$VERSION$.lsm
+Platform: Linux. Needs KDE
+Copying-policy: $LICENSE$
+End
diff --git a/app_templates/kdeapp/src/kdeapp.py b/app_templates/kdeapp/src/kdeapp.py
new file mode 100755
index 0000000..6c9b921
--- /dev/null
+++ b/app_templates/kdeapp/src/kdeapp.py
@@ -0,0 +1,280 @@
+#!/usr/bin/python
+###########################################################################
+# kdeapp - description #
+# ------------------------------ #
+# begin : Fri Jun 27 2005 #
+# copyright : (C) 2005 by AUTHOR #
+# email : [email protected] #
+# #
+###########################################################################
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either version 2 of the License, or #
+# (at your option) any later version. #
+# #
+###########################################################################
+
+from qt import *
+from kdecore import *
+from kdeui import *
+import sys
+from prefdialog import *
+from kdeappview import *
+
+description = "A KDE Application"
+version = "0.1";
+
+class KdeApp(KMainWindow):
+ def __init__(self):
+ KMainWindow.__init__(self,None,"KdeApp")
+
+ self._view = KdeAppView(self)
+ self._printer = None
+
+ # accept dnd
+ self.setAcceptDrops(True)
+
+ # tell the KMainWindow that this is indeed the main widget
+ self.setCentralWidget(self._view)
+
+ # then, setup our actions
+ self._setupActions()
+
+ # and a status bar
+ self.statusBar().show()
+
+ # Apply the create the main window and ask the mainwindow to
+ # automatically save settings if changed: window size, toolbar
+ # position, icon size, etc. Also to add actions for the statusbar
+ # toolbar, and keybindings if necessary.
+ self.setAutoSaveSettings()
+
+ # allow the view to change the statusbar and caption
+ self.connect(self._view, PYSIGNAL("signalChangeStatusbar"), self.changeStatusbar)
+ self.connect(self._view, PYSIGNAL("signalChangeCaption"), self.changeCaption)
+
+ def load(self,url):
+ target = QString()
+ # the below code is what you should normally do. in this
+ # example case, we want the url to our own. you probably
+ # want to use this code instead for your app
+
+ if False:
+ # download the contents
+ if KIO.NetAccess.download(url, target):
+ # set our caption
+ self.setCaption(url)
+
+ # load in the file (target is always local)
+ self.loadFile(target)
+
+ # and remove the temp file
+ KIO.NetAccess.removeTempFile(target)
+
+ self.setCaption(url.prettyURL())
+ self._view.openURL(url)
+
+
+ def _setupActions(self):
+ global kapp
+ KStdAction.openNew(self.fileNew, self.actionCollection())
+ KStdAction.open(self.fileOpen, self.actionCollection())
+ KStdAction.save(self.fileSave, self.actionCollection())
+ KStdAction.saveAs(self.fileSaveAs, self.actionCollection())
+ KStdAction.print_(self.filePrint, self.actionCollection())
+ KStdAction.quit(kapp.quit, self.actionCollection())
+
+ self._toolbarAction = KStdAction.showToolbar(self.optionsShowToolbar, self.actionCollection())
+ self._statusbarAction = KStdAction.showStatusbar(self.optionsShowStatusbar, self.actionCollection())
+ KStdAction.keyBindings(self.optionsConfigureKeys, self.actionCollection())
+
+ KStdAction.configureToolbars(self.optionsConfigureToolbars, self.actionCollection())
+ KStdAction.preferences(self.optionsPreferences, self.actionCollection())
+
+ # this doesn't do anything useful. it's just here to illustrate
+ # how to insert a custom menu and menu item
+ custom = KAction(i18n("Cus&tom Menuitem"), KShortcut(),
+ self.optionsPreferences,
+ self.actionCollection(), "custom_action")
+ self.createGUI()
+
+ def _saveProperties(self,config):
+ # the 'config' object points to the session managed
+ # config file. anything you write here will be available
+ # later when this app is restored
+
+ if not self._view.currentURL().isEmpty():
+ config.writeEntry("lastURL", self._view.currentURL())
+
+ def _readProperties(self,config):
+ # the 'config' object points to the session managed
+ # config file. this function is automatically called whenever
+ # the app is being restored. read in here whatever you wrote
+ # in 'saveProperties'
+
+ url = config.readPathEntry("lastURL")
+
+ if not url.isEmpty():
+ self._view.openURL(KURL(url))
+
+ def dragEnterEvent(self,event):
+ # accept uri drops only
+ event.accept(KURLDrag.canDecode(event))
+
+ def dropEvent(self,event):
+ # this is a very simplistic implementation of a drop event. we
+ # will only accept a dropped URL. the Qt dnd code can do *much*
+ # much more, so please read the docs there
+ urls = KURL.List()
+
+ # see if we can decode a URI.. if not, just ignore it
+ if KURLDrag.decode(event, urls) and not urls.isEmpty():
+ # okay, we have a URI.. process it
+ url = urls.first()
+
+ # load in the file
+ self.load(url)
+
+ def fileNew(self):
+ # this slot is called whenever the File->New menu is selected,
+ # the New shortcut is pressed (usually CTRL+N) or the New toolbar
+ # button is clicked
+
+ # create a new window
+ KdeApp().show()
+
+ def fileOpen(self):
+ # this slot is called whenever the File->Open menu is selected,
+ # the Open shortcut is pressed (usually CTRL+O) or the Open toolbar
+ # button is clicked
+
+ ## this brings up the generic open dialog
+ #KURL url = KURLRequesterDlg::getURL(QString::null, this, i18n("Open Location") );
+
+ # standard filedialog
+ url = KFileDialog.getOpenURL(None, One, self, i18n("Open Location"))
+ if not url.isEmpty():
+ self._view.openURL(url)
+
+ def fileSave(self):
+ # this slot is called whenever the File->Save menu is selected,
+ # the Save shortcut is pressed (usually CTRL+S) or the Save toolbar
+ # button is clicked
+
+ # save the current file
+ pass
+
+ def fileSaveAs(self):
+ # this slot is called whenever the File->Save As menu is selected,
+ file_url = KFileDialog.getSaveURL()
+ if not file_url.isEmpty() and file_url.isValid():
+ # save your info, here
+ pass
+
+
+ def filePrint(self):
+ # this slot is called whenever the File->Print menu is selected,
+ # the Print shortcut is pressed (usually CTRL+P) or the Print toolbar
+ # button is clicked
+ if self._printer is None:
+ self._printer = KPrinter()
+
+ if self._printer.setup(self):
+ # setup the printer. with Qt, you always "print" to a
+ # QPainter.. whether the output medium is a pixmap, a screen,
+ # or paper
+ p = QPainter()
+ p.begin(self._printer)
+
+ # we let our view do the actual printing
+ metrics = QPaintDeviceMetrics(m_printer)
+ self._view.print_(p, metrics.height(), metrics.width())
+
+ # and send the result to the printer
+ p.end();
+
+ def optionsPreferences(self):
+ # popup some sort of preference dialog, here
+ dlg = PreferencesDialog()
+ if dlg.exec_loop():
+ # redo your settings
+ pass
+
+ def optionsShowToolbar(self):
+ # this is all very cut and paste code for showing/hiding the
+ # toolbar
+ if self._toolbarAction.isChecked():
+ self.toolBar().show()
+ else:
+ self.toolBar().hide()
+
+ def optionsShowStatusbar(self):
+ # this is all very cut and paste code for showing/hiding the
+ # statusbar
+
+ if self._statusbarAction.isChecked():
+ self.statusBar().show()
+ else:
+ self.statusBar().hide()
+
+ def optionsConfigureKeys(self):
+ KKeyDialog.configure(self.actionCollection())
+
+ def optionsConfigureToolbars(self):
+ # use the standard toolbar editor
+ self.saveMainWindowSettings(KGlobal.config())
+
+ def newToolbarConfig(self):
+ # this slot is called when user clicks "Ok" or "Apply" in the toolbar editor.
+ # recreate our GUI, and re-apply the settings (e.g. "text under icons", etc.)
+ self.createGUI()
+ self.applyMainWindowSettings(KGlobal.config())
+
+ def changeStatusbar(self,text):
+ # display the text on the statusbar
+ self.statusBar().message(text)
+
+ def changeCaption(self,text):
+ # display the text on the caption
+ self.setCaption(text)
+
+
+options = [ ("+[URL]", "Document to open", "") ]
+
+def main():
+ global kapp,version,description,options
+
+ aboutdata = KAboutData("kdeapp", "KdeApp", version, description, \
+ KAboutData.License_GPL, "(C) 2005 AUTHOR", None, None, "[email protected]")
+ aboutdata.addAuthor("AUTHOR", None, "[email protected]")
+ KCmdLineArgs.init(sys.argv,aboutdata)
+ KCmdLineArgs.addCmdLineOptions(options)
+ kapp = KApplication()
+
+ # register ourselves as a dcop client
+ kapp.dcopClient().registerAs(kapp.name(), False)
+
+ # see if we are starting with session management
+ if kapp.isRestored():
+ n = 1
+ while KMainWindow.canBeRestored(n):
+ KdeApp().restore(n)
+ n += 1
+ else:
+ # no session.. just start up normally
+ args = KCmdLineArgs.parsedArgs()
+ if args.count() == 0:
+ widget = KdeApp()
+ widget.show()
+ else:
+ i = 0
+ for i in range(args.count()):
+ widget = KdeApp()
+ widget.show()
+ widget.load(args.url(i))
+
+ args.clear()
+
+ return kapp.exec_loop()
+main()
diff --git a/app_templates/kdeapp/src/kdeappiface.py b/app_templates/kdeapp/src/kdeappiface.py
new file mode 100644
index 0000000..1ff3b0f
--- /dev/null
+++ b/app_templates/kdeapp/src/kdeappiface.py
@@ -0,0 +1,26 @@
+#!/usr/bin/python
+###########################################################################
+# testappiface - description #
+# ------------------------------ #
+# begin : Fri Jun 27 2003 #
+# copyright : (C) 2005 by AUTHOR #
+# email : [email protected] #
+# #
+###########################################################################
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either version 2 of the License, or #
+# (at your option) any later version. #
+# #
+###########################################################################
+
+from dcopexport import DCOPExObj
+
+class TestAppIface(DCOPExObj):
+ def __init__(self, parent, id="Value"):
+ DCOPExObj.__init__(self, id)
+ self.addMethod("void openURL(QString url)", self.openURL)
+
+ def openURL(self,url):
+ pass
diff --git a/app_templates/kdeapp/src/kdeappui.rc b/app_templates/kdeapp/src/kdeappui.rc
new file mode 100644
index 0000000..6c3f6a9
--- /dev/null
+++ b/app_templates/kdeapp/src/kdeappui.rc
@@ -0,0 +1,8 @@
+<!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
+<kpartgui name="testapp" version="1">
+<MenuBar>
+ <Menu name="custom"><text>C&amp;ustom</text>
+ <Action name="custom_action" />
+ </Menu>
+</MenuBar>
+</kpartgui>
diff --git a/app_templates/kdeapp/src/kdeappview.py b/app_templates/kdeapp/src/kdeappview.py
new file mode 100644
index 0000000..af28a44
--- /dev/null
+++ b/app_templates/kdeapp/src/kdeappview.py
@@ -0,0 +1,91 @@
+#!/usr/bin/python
+###########################################################################
+# kdeappview - description #
+# ------------------------------ #
+# begin : Fri Jun 27 2005 #
+# copyright : (C) 2005 by AUTHOR #
+# email : [email protected] #
+# #
+###########################################################################
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either version 2 of the License, or #
+# (at your option) any later version. #
+# #
+###########################################################################
+
+from qt import *
+from kdecore import *
+from kdeui import *
+from kio import *
+from khtml import *
+from kparts import *
+#from kdeappiface import *
+
+class KdeAppView(QWidget):
+ def __init__(self,parent):
+ QWidget.__init__(self,parent)
+ #self._dcopclient= KdeAppIface(self,"KdeAppIface")
+
+ # setup our layout manager to automatically add our widgets
+ top_layout = QHBoxLayout(self)
+ top_layout.setAutoAdd(True)
+
+ if True:
+ self._html = KHTMLPart(self)
+ else:
+
+ # we want to look for all components that satisfy our needs. the
+ # trader will actually search through *all* registered KDE
+ # applications and components -- not just KParts. So we have to
+ # specify two things: a service type and a constraint
+ #
+ # the service type is like a mime type. we say that we want all
+ # applications and components that can handle HTML -- 'text/html'
+ #
+ # however, by itself, this will return such things as Netscape..
+ # not what we wanted. so we constrain it by saying that the
+ # string 'KParts/ReadOnlyPart' must be found in the ServiceTypes
+ # field. with this, only components of the type we want will be
+ # returned.
+ offers = KTrader.self().query("text/html", "'KParts/ReadOnlyPart' in ServiceTypes")
+
+ self._html = None
+ # in theory, we only care about the first one.. but let's try all
+ # offers just in case the first can't be loaded for some reason
+ for ptr in offers:
+ # we now know that our offer can handle HTML and is a part.
+ # since it is a part, it must also have a library... let's try to
+ # load that now
+ self._html = createReadOnlyPart(ptr.library(),self,ptr.name(),"KParts::ReadOnlyPart",QStringList())
+ if self._html is not None:
+ break
+
+ # if our factory is invalid, then we never found our component
+ # and we might as well just exit now
+ if self._html is None:
+ KMessageBox.error(self, i18n("Could not find a suitable HTML component"))
+ return
+
+ QObject.connect(self._html, SIGNAL("setWindowCaption(const QString&)"), self.slotSetTitle)
+ QObject.connect(self._html, SIGNAL("setStatusBarText(const QString&)"), self.slotOnURL)
+
+ def print_(self,p,height,width):
+ pass
+ # do the actual printing, here
+ # p.drawText(etc..)
+
+ def currentURL(self):
+ return self._html.url().url()
+
+ def openURL(self,url):
+ if isinstance(url,QString):
+ url = KURL(url)
+ self._html.openURL(url)
+
+ def slotOnURL(self,url):
+ self.emit(PYSIGNAL("signalChangeStatusbar"),(url,) )
+
+ def slotSetTitle(self,title):
+ self.emit(PYSIGNAL("signalChangeCaption"),(title,) )
diff --git a/app_templates/kdeapp/src/prefdialog.py b/app_templates/kdeapp/src/prefdialog.py
new file mode 100644
index 0000000..7932f84
--- /dev/null
+++ b/app_templates/kdeapp/src/prefdialog.py
@@ -0,0 +1,53 @@
+#!/usr/bin/python
+###########################################################################
+# testapp - description #
+# ------------------------------ #
+# begin : Fri Jun 27 2005 #
+# copyright : (C) 2005 by AUTHOR #
+# email : [email protected] #
+# #
+###########################################################################
+# #
+# This program is free software; you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation; either version 2 of the License, or #
+# (at your option) any later version. #
+# #
+###########################################################################
+
+from qt import *
+from kdecore import *
+from kdeui import *
+
+class TestAppPrefDialog(KDialogBase):
+ def __init__(self):
+ KDialogBase.__init__(TreeList, i18n("TestApp Preferences"),
+ KDialogBase.Help|KDialogBase.Default|KDialogBase.Ok|KDialogBase.Apply|KDialogBase.Cancel, Ok)
+
+ # this is the base class for your preferences dialog. it is now
+ # a Treelist dialog.. but there are a number of other
+ # possibilities (including Tab, Swallow, and just Plain)
+ frame = self.addPage(i18n("First Page"), i18n("Page One Options"))
+ self._pageOne = TestAppPrefPageOne(frame)
+
+ frame = self.addPage(i18n("Second Page"), i18n("Page Two Options"))
+ self._pageTwo = TestAppPrefPageTwo(frame)
+
+class TestAppPrefPageOne(QFrame):
+ def __init__(self,parent):
+ QFrame.__init__(self,parent)
+
+ layout = QHBoxLayout(self)
+ layout.setAutoAdd(True)
+
+ QLabel(i18n("Add something here"), self)
+
+class TestAppPrefPageTwo(QFrame):
+ def __init__(self,parent):
+ QFrame.__init__(self,parent)
+
+ layout = QHBoxLayout(self)
+ layout.setAutoAdd(True)
+
+ QLabel(i18n("Add something here"), self)
+