KDE 4.5 PyKDE API Reference
  • KDE's Python API
  • Overview
  • PyKDE Home
  • Sitemap
  • Contact Us
 

KDialog Class Reference

from PyKDE4.kdeui import *

Inherits: QDialog → QWidget → QObject
Subclasses: KAboutApplicationDialog, KBugReport, KColorDialog, KEditToolBar, KFindDialog, KFontDialog, KNewPasswordDialog, KPageDialog, KPasswordDialog, KPixmapRegionSelectorDialog, KProgressDialog, KShortcutsDialog, KTipDialog, Sonnet.ConfigDialog, Sonnet.Dialog

Detailed Description

A dialog base class with standard buttons and predefined layouts.

Provides basic functionality needed by nearly all dialogs.

It offers the standard action buttons you'd expect to find in a dialog as well as the capability to define at most three configurable buttons. You can define a main widget that contains your specific dialog layout

The class takes care of the geometry management. You only need to define a minimum size for the widget you want to use as the main widget.

By default, the dialog is non-modal.

Standard buttons (action buttons):\n

You select which buttons should be displayed, but you do not choose the order in which they are displayed. This ensures a standard interface in KDE. The button order can be changed, but this ability is only available for a central KDE control tool. The following buttons are available: OK, Cancel/Close, Apply/Try, Default, Help and three user definable buttons: User1, User2 and User3. You must specify the text of the UserN buttons. Each button emit a signal, so you can choose to connect that signal.

The default action of the Help button will open the help system if you have provided a path to the help text. The default action of Ok and Cancel will run QDialog.accept() and QDialog.reject(), which you can override by reimplementing slotButtonClicked(). The default action of the Close button will close the dialog.

Note that the KDialog will animate a button press when the user presses Escape. The button that is enabled is either Cancel, Close or the button that is defined by setEscapeButton(). Your custom dialog code should reimplement the keyPressEvent and animate the cancel button so that the dialog behaves like regular dialogs.

Layout:\n

The dialog consists of a help area on top (becomes visible if you define a help path and use enableLinkedHelp()), the main area which is the built-in dialog face or your own widget in the middle and by default a button box at the bottom. The button box can also be placed at the right edge (to the right of the main widget). Use setButtonsOrientation() to control this behavior. A separator can be placed above the button box (or to the left when the button box is at the right edge).

Standard compliance:\n

The marginHint() and spacingHint() sizes shall be used whenever you lay out the interior of a dialog. One special note. If you make your own action buttons (OK, Cancel etc), the space between the buttons shall be spacingHint(), whereas the space above, below, to the right and to the left shall be marginHint(). If you add a separator line above the buttons, there shall be a marginHint() between the buttons and the separator and a marginHint() above the separator as well.

Example:\n

   KDialog *dialog = new KDialog( this );
   dialog->setCaption( "My title" );
   dialog->setButtons( KDialog.Ok | KDialog.Cancel | KDialog.Apply );

   FooWidget *widget = new FooWidget( dialog );
   dialog->setMainWidget( widget );
   connect( dialog, SIGNAL( applyClicked() ), widget, SLOT( save() ) );
   connect( dialog, SIGNAL( okClicked() ), widget, SLOT( save() ) );
   connect( widget, SIGNAL( changed( bool ) ), dialog, SLOT( enableButtonApply( bool ) ) );

   dialog->enableButtonApply( false );
   dialog->show();

"KDE Dialog example"

This class can be used in many ways. Note that most KDE ui widgets and many of KDE core applications use the KDialog so for more inspiration you should study the code for these.

See also:
KPageDialog
Author:
Thomas Tanghus <tanghus@earthling.net>
Author:
Espen Sand <espensa@online.no>
Author:
Mirko Boehm <mirko@kde.org>
Author:
Olivier Goffart <ogoffart at kde.org>
Author:
Tobias Koenig <tokoe@kde.org>


Enumerations

ButtonCode { None, Help, Default, Ok, Apply, Try, Cancel, Close, No, Yes, Reset, Details, User1, User2, User3, NoDefault }
ButtonPopupMode { InstantPopup, DelayedPopup }
CaptionFlag { NoCaptionFlags, AppNameCaption, ModifiedCaption, HIGCompliantCaption }

Signals

 aboutToShowDetails ()
 applyClicked ()
 buttonClicked (KDialog.ButtonCode button)
 cancelClicked ()
 closeClicked ()
 defaultClicked ()
 finished ()
 helpClicked ()
 hidden ()
 layoutHintChanged ()
 noClicked ()
 okClicked ()
 resetClicked ()
 tryClicked ()
 user1Clicked ()
 user2Clicked ()
 user3Clicked ()
 yesClicked ()

Methods

 __init__ (self, QWidget parent=0, Qt::WFlags flags=0)
 __init__ (self, KDialog a0)
KPushButton button (self, KDialog.ButtonCode id)
KIcon buttonIcon (self, KDialog.ButtonCode id)
QString buttonText (self, KDialog.ButtonCode id)
QString buttonToolTip (self, KDialog.ButtonCode id)
QString buttonWhatsThis (self, KDialog.ButtonCode id)
 closeEvent (self, QCloseEvent e)
KDialog.ButtonCode defaultButton (self)
 delayedDestruct (self)
 enableButton (self, KDialog.ButtonCode id, bool state)
 enableButtonApply (self, bool state)
 enableButtonCancel (self, bool state)
 enableButtonOk (self, bool state)
 enableLinkedHelp (self, bool state)
QString helpLinkText (self)
 hideEvent (self, QHideEvent a0)
 incrementInitialSize (self, QSize size)
bool isButtonEnabled (self, KDialog.ButtonCode id)
bool isDetailsWidgetVisible (self)
 keyPressEvent (self, QKeyEvent a0)
QWidget mainWidget (self)
QSize minimumSizeHint (self)
 restoreDialogSize (self, KConfigGroup config)
 saveDialogSize (self, KConfigGroup config, KConfigBase.WriteConfigFlags options=KConfigGroup.Normal)
 setButtonFocus (self, KDialog.ButtonCode id)
 setButtonGuiItem (self, KDialog.ButtonCode id, KGuiItem item)
 setButtonIcon (self, KDialog.ButtonCode id, KIcon icon)
 setButtonMenu (self, KDialog.ButtonCode id, QMenu menu, KDialog.ButtonPopupMode popupmode=KDialog.InstantPopup)
 setButtonText (self, KDialog.ButtonCode id, QString text)
 setButtonToolTip (self, KDialog.ButtonCode id, QString text)
 setButtonWhatsThis (self, KDialog.ButtonCode id, QString text)
 setButtons (self, KDialog.ButtonCodes buttonMask)
 setButtonsOrientation (self, Qt::Orientation orientation)
 setCaption (self, QString caption)
 setCaption (self, QString caption, bool modified)
 setDefaultButton (self, KDialog.ButtonCode id)
 setDetailsWidget (self, QWidget detailsWidget)
 setDetailsWidgetVisible (self, bool visible)
 setEscapeButton (self, KDialog.ButtonCode id)
 setHelp (self, QString anchor, QString appname=QString())
 setHelpLinkText (self, QString text)
 setInitialSize (self, QSize size)
 setMainWidget (self, QWidget widget)
 setPlainCaption (self, QString caption)
 showButton (self, KDialog.ButtonCode id, bool state)
 showButtonSeparator (self, bool state)
QSize sizeHint (self)
 slotButtonClicked (self, int button)
 updateGeometry (self)

Static Methods

bool avoidArea (QWidget widget, QRect area, int screen=-1)
 centerOnScreen (QWidget widget, int screen=-1)
int groupSpacingHint ()
QString makeStandardCaption (QString userCaption, QWidget window=0, KDialog.CaptionFlags flags=KDialog.HIGCompliantCaption)
int marginHint ()
 resizeLayout (QWidget widget, int margin, int spacing)
 resizeLayout (QLayout lay, int margin, int spacing)
int spacingHint ()

Signal Documentation

aboutToShowDetails (   )

The detailsWidget is about to get shown. This is your last chance to call setDetailsWidget if you haven't done so yet.

Signal syntax:
QObject.connect(source, SIGNAL("aboutToShowDetails()"), target_slot)
applyClicked (   )

The Apply button was pressed. This signal is only emitted if slotButtonClicked() is not replaced

Signal syntax:
QObject.connect(source, SIGNAL("applyClicked()"), target_slot)
buttonClicked ( KDialog.ButtonCode  button
)

A button has been pressed. This signal is only emitted if slotButtonClicked() is not replaced

Parameters:
button  is the code of the pressed button.

Signal syntax:
QObject.connect(source, SIGNAL("buttonClicked(KDialog::ButtonCode)"), target_slot)
cancelClicked (   )

The Cancel button was pressed. This signal is only emitted if slotButtonClicked() is not replaced

Signal syntax:
QObject.connect(source, SIGNAL("cancelClicked()"), target_slot)
closeClicked (   )

The Close button was pressed. This signal is only emitted if slotButtonClicked() is not replaced

Signal syntax:
QObject.connect(source, SIGNAL("closeClicked()"), target_slot)
defaultClicked (   )

The Default button was pressed. This signal is only emitted if slotButtonClicked() is not replaced

Signal syntax:
QObject.connect(source, SIGNAL("defaultClicked()"), target_slot)
finished (   )

The dialog has finished.

A dialog emits finished after a user clicks a button that ends the dialog.

This signal is also emitted when you call hide()

If you have stored a pointer to the dialog do not try to delete the pointer in the slot that is connected to this signal.

You should use deleteLater() instead.

Signal syntax:
QObject.connect(source, SIGNAL("finished()"), target_slot)
helpClicked (   )

The Help button was pressed. This signal is only emitted if slotButtonClicked() is not replaced

Signal syntax:
QObject.connect(source, SIGNAL("helpClicked()"), target_slot)
hidden (   )

The dialog is about to be hidden.

A dialog is hidden after a user clicks a button that ends the dialog or when the user switches to another desktop or minimizes the dialog.

Signal syntax:
QObject.connect(source, SIGNAL("hidden()"), target_slot)
layoutHintChanged (   )

Emitted when the margin size and/or spacing size have changed.

Use marginHint() and spacingHint() in your slot to get the new values.

Deprecated:
This signal is not emitted. Listen to QEvent.StyleChange events instead.

Signal syntax:
QObject.connect(source, SIGNAL("layoutHintChanged()"), target_slot)
noClicked (   )

The No button was pressed. This signal is only emitted if slotButtonClicked() is not replaced

Signal syntax:
QObject.connect(source, SIGNAL("noClicked()"), target_slot)
okClicked (   )

The OK button was pressed. This signal is only emitted if slotButtonClicked() is not replaced

Signal syntax:
QObject.connect(source, SIGNAL("okClicked()"), target_slot)
resetClicked (   )

The Reset button was pressed. This signal is only emitted if slotButtonClicked() is not replaced

Signal syntax:
QObject.connect(source, SIGNAL("resetClicked()"), target_slot)
tryClicked (   )

The Try button was pressed. This signal is only emitted if slotButtonClicked() is not replaced

Signal syntax:
QObject.connect(source, SIGNAL("tryClicked()"), target_slot)
user1Clicked (   )

The User1 button was pressed. This signal is only emitted if slotButtonClicked() is not replaced

Signal syntax:
QObject.connect(source, SIGNAL("user1Clicked()"), target_slot)
user2Clicked (   )

The User2 button was pressed. This signal is only emitted if slotButtonClicked() is not replaced

Signal syntax:
QObject.connect(source, SIGNAL("user2Clicked()"), target_slot)
user3Clicked (   )

The User3 button was pressed. This signal is only emitted if slotButtonClicked() is not replaced

Signal syntax:
QObject.connect(source, SIGNAL("user3Clicked()"), target_slot)
yesClicked (   )

The Yes button was pressed. This signal is only emitted if slotButtonClicked() is not replaced

Signal syntax:
QObject.connect(source, SIGNAL("yesClicked()"), target_slot)

Method Documentation

__init__ (  self,
QWidget  parent=0,
Qt::WFlags  flags=0
)

Creates a dialog.

Parameters:
parent  The parent of the dialog.
flags  The widget flags passed to the QDialog constructor

__init__ (  self,
KDialog  a0
)
KPushButton button (  self,
KDialog.ButtonCode  id
)

Returns the button that corresponds to the id.

Normally you should not use this function. Never delete the object returned by this function. See also enableButton(), showButton(), setButtonGuiItem().

Parameters:
id  Identifier of the button.

Returns:
The button or 0 if the button does not exist.

KIcon buttonIcon (  self,
KDialog.ButtonCode  id
)

Returns the icon of any button.

QString buttonText (  self,
KDialog.ButtonCode  id
)

Returns the text of any button.

QString buttonToolTip (  self,
KDialog.ButtonCode  id
)

Returns the tooltip of any button.

QString buttonWhatsThis (  self,
KDialog.ButtonCode  id
)

Returns the "What's this?" text of any button.

closeEvent (  self,
QCloseEvent  e
)

Detects when a dialog is being closed from the window manager controls. If the Cancel or Close button is present then the button is activated. Otherwise standard QDialog behavior will take place.

KDialog.ButtonCode defaultButton (   self )

Returns the button code of the default button, or NoDefault if there is no default button.

delayedDestruct (   self )

Destruct the dialog delayed.

You can call this function from slots like closeClicked() and hidden(). You should not use the dialog any more after calling this function.

enableButton (  self,
KDialog.ButtonCode  id,
bool  state
)

Enable or disable (gray out) a general action button.

Parameters:
id  Button identifier.
state  true enables the button(s).

enableButtonApply (  self,
bool  state
)

Enable or disable (gray out) the Apply button.

Parameters:
state  true enables the button.

enableButtonCancel (  self,
bool  state
)

Enable or disable (gray out) the Cancel button.

Parameters:
state  true enables the button.

enableButtonOk (  self,
bool  state
)

Enable or disable (gray out) the OK button.

Parameters:
state  true enables the button.

enableLinkedHelp (  self,
bool  state
)

Display or hide the help link area on the top of the dialog.

Parameters:
state  true will display the area.

See also:
helpLinkText()
See also:
setHelpLinkText()
See also:
setHelp()

QString helpLinkText (   self )

Returns the help link text.

If no text has been defined, "Get help..." (internationalized) is returned.

Returns:
The help link text.

See also:
enableLinkedHelp()
See also:
setHelpLinkText()
See also:
setHelp()

hideEvent (  self,
QHideEvent  a0
)

Emits the #hidden signal. You can connect to that signal to detect when a dialog has been closed.

incrementInitialSize (  self,
QSize  size
)

Convenience method. Add a size to the default minimum size of a dialog.

This method should only be called right before show() or exec().

Parameters:
size  Size added to minimum size.

bool isButtonEnabled (  self,
KDialog.ButtonCode  id
)

Returns whether any button is enabled.

bool isDetailsWidgetVisible (   self )

Returns the status of the Details button.

keyPressEvent (  self,
QKeyEvent  a0
)

Internal:

QWidget mainWidget (   self )

Returns:
The current main widget. Will create a QWidget as the mainWidget if none was set before. This way you can write
   ui.setupUi(mainWidget());
when using designer.

QSize minimumSizeHint (   self )

Reimplemented from QDialog.

restoreDialogSize (  self,
KConfigGroup  config
)

Restores the dialog's size from the configuration according to the screen size.

Note:
the group must be set before calling

Parameters:
config  The config group to read from.

saveDialogSize (  self,
KConfigGroup  config,
KConfigBase.WriteConfigFlags  options=KConfigGroup.Normal
)

Saves the dialog's size dependent on the screen dimension either to the global or application config file.

Note:
the group must be set before calling

Parameters:
config  The config group to read from.
options  passed to KConfigGroup.writeEntry()

setButtonFocus (  self,
KDialog.ButtonCode  id
)

Sets the focus to the button of the passed id.

setButtonGuiItem (  self,
KDialog.ButtonCode  id,
KGuiItem  item
)

Sets the KGuiItem directly for the button instead of using 3 methods to set the text, tooltip and whatsthis strings. This also allows to set an icon for the button which is otherwise not possible for the extra buttons beside Ok, Cancel and Apply.

Parameters:
id  The button identifier.
item  The KGuiItem for the button.

setButtonIcon (  self,
KDialog.ButtonCode  id,
KIcon  icon
)

Sets the icon of any button.

Parameters:
id  The button identifier.
icon  Button icon.

setButtonMenu (  self,
KDialog.ButtonCode  id,
QMenu  menu,
KDialog.ButtonPopupMode  popupmode=KDialog.InstantPopup
)

Sets the menu of any button.

Parameters:
id  The button identifier.
menu  The menu.
popupmode  Choose if KPushButton setMenu or setDelayedMenu is used

setButtonText (  self,
KDialog.ButtonCode  id,
QString  text
)

Sets the text of any button.

Parameters:
id  The button identifier.
text  Button text.

setButtonToolTip (  self,
KDialog.ButtonCode  id,
QString  text
)

Sets the tooltip text of any button.

Parameters:
id  The button identifier.
text  Button text.

setButtonWhatsThis (  self,
KDialog.ButtonCode  id,
QString  text
)

Sets the "What's this?" text of any button.

Parameters:
id  The button identifier.
text  Button text.

setButtons (  self,
KDialog.ButtonCodes  buttonMask
)

Creates (or recreates) the button box and all the buttons in it.

Note that some combinations are not possible. That means, you can't have the following pairs of buttons in a dialog: - Default and Details - Cancel and Close - Ok and Try

This will reset all default KGuiItem of all button.

Parameters:
buttonMask  Specifies what buttons will be made.

setButtonsOrientation (  self,
Qt::Orientation  orientation
)

Sets the orientation of the button box.

It can be Vertical or Horizontal. If Horizontal (default), the button box is positioned at the bottom of the dialog. If Vertical it will be placed at the right edge of the dialog.

Parameters:
orientation  The button box orientation.

setCaption (  self,
QString  caption
)

Makes a KDE compliant caption.

Parameters:
caption  Your caption. Do not include the application name in this string. It will be added automatically according to the KDE standard.
modified  Specify whether the document is modified. This displays an additional sign in the title bar, usually "**".

setCaption (  self,
QString  caption,
bool  modified
)

Makes a KDE compliant caption.

Parameters:
caption  Your caption. Do not include the application name in this string. It will be added automatically according to the KDE standard.
modified  Specify whether the document is modified. This displays an additional sign in the title bar, usually "**".

setDefaultButton (  self,
KDialog.ButtonCode  id
)

Sets the button that will be activated when the Enter key is pressed.

By default, this is the Ok button if it is present

Parameters:
id  The button code.

setDetailsWidget (  self,
QWidget  detailsWidget
)

Sets the widget that gets shown when "Details" is enabled.

The dialog takes over ownership of the widget. Any previously set widget gets deleted.

setDetailsWidgetVisible (  self,
bool  visible
)

Sets the status of the Details button.

setEscapeButton (  self,
KDialog.ButtonCode  id
)

Sets the button that will be activated when the Escape key is pressed.

By default, the Escape key is mapped to either the Cancel or the Close button if one of these buttons are defined. The user expects that Escape will cancel an operation so use this function with caution.

Parameters:
id  The button code.

setHelp (  self,
QString  anchor,
QString  appname=QString()
)

Sets the help path and topic.

Parameters:
anchor  Defined anchor in your docbook sources
appname  Defines the appname the help belongs to If empty it's the current one

Note:
The help button works differently for the class KCMultiDialog, so it does not make sense to call this function for Dialogs of that type. See KCMultiDialog.slotHelp() for more information.

setHelpLinkText (  self,
QString  text
)

Sets the text that is shown as the linked text.

If text is empty, the text "Get help..." (internationalized) is used instead.

Parameters:
text  The link text.

See also:
helpLinkText()
See also:
enableLinkedHelp()
See also:
setHelp()

setInitialSize (  self,
QSize  size
)

Convenience method. Sets the initial dialog size.

This method should only be called right before show() or exec(). The initial size will be ignored if smaller than the dialog's minimum size.

Parameters:
size  Startup size.

setMainWidget (  self,
QWidget  widget
)

Sets the main widget of the dialog.

setPlainCaption (  self,
QString  caption
)

Make a plain caption without any modifications.

Parameters:
caption  Your caption. This is the string that will be displayed in the window title.

showButton (  self,
KDialog.ButtonCode  id,
bool  state
)

Hide or display a general action button.

Only buttons that have been created in the constructor can be displayed. This method will not create a new button.

Parameters:
id  Button identifier.
state  true display the button(s).

showButtonSeparator (  self,
bool  state
)

Hide or display the a separator line drawn between the action buttons an the main widget.

QSize sizeHint (   self )

Reimplemented from QDialog.

slotButtonClicked (  self,
int  button
)

Activated when the button button is clicked

Sample that shows how to catch and handle button clicks within an own dialog;

 class MyDialog : public KDialog {
     protected slots:
         virtual void slotButtonClicked(int button) {
             if (button == KDialog.Ok)
                 accept();
             else
                 KDialog.slotButtonClicked(button);
         }
 }

Parameters:
button  is the type KDialog.ButtonCode

updateGeometry (   self )

Updates the margins and spacings.

Deprecated:
KDialog respects the style's margins and spacings automatically. Calling this function has no effect.


Static Method Documentation

bool avoidArea ( QWidget  widget,
QRect  area,
int  screen=-1
)

Places widget so that it doesn't cover a certain area of the screen. This is typically used by the "find dialog" so that the match it finds can be read. For screen, see centerOnScreen

Returns:
true on success (widget doesn't cover area anymore, or never did), false on failure (not enough space found)

centerOnScreen ( QWidget  widget,
int  screen=-1
)

Centers widget on the desktop, taking multi-head setups into account. If screen is -1, widget will be centered on its current screen (if it was shown already) or on the primary screen. If screen is -3, widget will be centered on the screen that currently contains the mouse pointer. screen will be ignored if a merged display (like Xinerama) is not in use, or merged display placement is not enabled in kdeglobals.

int groupSpacingHint (   )

Returns the number of pixels that should be used to visually separate groups of related options in a dialog according to the KDE standard.

Since:
4.2

QString makeStandardCaption ( QString  userCaption,
QWidget  window=0,
KDialog.CaptionFlags  flags=KDialog.HIGCompliantCaption
)

Builds a caption that contains the application name along with the userCaption using a standard layout.

To make a compliant caption for your window, simply do: setWindowTitle(KDialog.makeStandardCaption(yourCaption));

To ensure that the caption is appropriate to the desktop in which the application is running, pass in a pointer to the window the caption will be applied to.

If using a KDialog or KMainWindow subclass, call setCaption instead and an appropraite standard caption will be created for you

Parameters:
userCaption  The caption string you want to display in the window caption area. Do not include the application name!
window  a pointer to the window this application will apply to
flags 

Returns:
the created caption

int marginHint (   )

Returns the number of pixels that should be used between a dialog edge and the outermost widget(s) according to the KDE standard.

Deprecated:
Use the style's pixelMetric() function to query individual margins. Different platforms may use different values for the four margins.

resizeLayout ( QWidget  widget,
int  margin,
int  spacing
)

Resize every layout associated with lay and its children.

Parameters:
lay  layout to be resized
margin  The new layout margin
spacing  The new layout spacing

Deprecated:
Use QLayout functions where necessary. Setting margin and spacing values recursively for all children prevents QLayout from creating platform native layouts.

resizeLayout ( QLayout  lay,
int  margin,
int  spacing
)

Resize every layout associated with lay and its children.

Parameters:
lay  layout to be resized
margin  The new layout margin
spacing  The new layout spacing

Deprecated:
Use QLayout functions where necessary. Setting margin and spacing values recursively for all children prevents QLayout from creating platform native layouts.

int spacingHint (   )

Returns the number of pixels that should be used between widgets inside a dialog according to the KDE standard.

Deprecated:
Use the style's layoutSpacing() function to query individual spacings. Different platforms may use different values depending on widget types and pairs.


Enumeration Documentation

ButtonCode
Enumerator:
Ok = 1
Cancel = 2
Yes = 3
No = 4
Continue = 5

ButtonPopupMode
Enumerator:
InstantPopup = 0
DelayedPopup = 1

CaptionFlag

StandardCaptionFlag Used to specify how to construct a window caption

AppName - Indicates that the method shall include the application name when making the caption string. Modified - Causes a 'modified' sign will be included in the returned string. This is useful when indicating that a file is modified, i.e., it contains data that has not been saved. HIGCompliant - The base minimum flags required to align a caption with the KDE Human Interface Guidelines

Enumerator:
NoCaptionFlags = 0
AppNameCaption = 1
ModifiedCaption = 2
HIGCompliantCaption = AppNameCaption

  • Full Index

Modules

  • akonadi
  • dnssd
  • kdecore
  • kdeui
  • khtml
  • kio
  • knewstuff
  • kparts
  • kutils
  • nepomuk
  • phonon
  • plasma
  • polkitqt
  • solid
  • soprano
This documentation is maintained by Simon Edwards.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal