diff options
Diffstat (limited to 'src-qt5')
85 files changed, 2590 insertions, 1711 deletions
diff --git a/src-qt5/core-utils/lumina-config/AppDialog.h b/src-qt5/core-utils/lumina-config/AppDialog.h index ea7615e2..2b03fc76 100644 --- a/src-qt5/core-utils/lumina-config/AppDialog.h +++ b/src-qt5/core-utils/lumina-config/AppDialog.h @@ -23,13 +23,22 @@ private: Ui::AppDialog *ui; public: - AppDialog(QWidget *parent = 0) : QDialog(parent), ui(new Ui::AppDialog){ + AppDialog(QWidget *parent = 0, QString defaultPath = "") : QDialog(parent), ui(new Ui::AppDialog){ ui->setupUi(this); //load the designer file appreset = false; - ui->comboBox->clear(); + ui->listApps->clear(); + QListWidgetItem *defaultItem = nullptr; QList<XDGDesktop*> APPS = LXDG::sortDesktopNames(APPSLIST->apps(false,false)); //Don't show all/hidden for(int i=0; i<APPS.length(); i++){ - ui->comboBox->addItem( LXDG::findIcon(APPS[i]->icon,"application-x-executable"), APPS[i]->name, APPS[i]->filePath); + QListWidgetItem *app = new QListWidgetItem(LXDG::findIcon(APPS[i]->icon,"application-x-executable"), APPS[i]->name); + app->setData(Qt::UserRole, APPS[i]->filePath); + ui->listApps->addItem(app); + if(APPS[i]->filePath == defaultPath){ + defaultItem = app; + } + } + if(ui->listApps->count()){ + ui->listApps->setCurrentItem(defaultItem != nullptr ? defaultItem : ui->listApps->item(0)); } this->setWindowIcon( LXDG::findIcon("system-search","") ); if(parent!=0){ @@ -56,7 +65,10 @@ public: private slots: void on_buttonBox_accepted(){ - appselected = ui->comboBox->currentData().toString(); + QListWidgetItem *item = ui->listApps->currentItem(); + if(item != nullptr){ + appselected = item->data(Qt::UserRole).toString(); + } this->close(); } void on_buttonBox_rejected(){ @@ -68,6 +80,26 @@ private slots: this->close(); } } + void on_listApps_itemDoubleClicked(QListWidgetItem *item){ + appselected = item->data(Qt::UserRole).toString(); + this->close(); + } + void on_lineSearch_textChanged(const QString &term){ + QListWidgetItem *first_visible = nullptr; + for(int i = 0; i < ui->listApps->count(); i++){ + QListWidgetItem *item = ui->listApps->item(i); + bool visible = item->text().contains(term, Qt::CaseInsensitive); + item->setHidden(!visible); + if(visible && first_visible == nullptr){ + first_visible = item; + } + } + //Select the first app + ui->listApps->setCurrentItem(first_visible); + if(first_visible != nullptr){ + ui->listApps->scrollToItem(first_visible); + } + } }; #endif diff --git a/src-qt5/core-utils/lumina-config/AppDialog.ui b/src-qt5/core-utils/lumina-config/AppDialog.ui index 63323f7d..ec7de974 100644 --- a/src-qt5/core-utils/lumina-config/AppDialog.ui +++ b/src-qt5/core-utils/lumina-config/AppDialog.ui @@ -7,7 +7,7 @@ <x>0</x> <y>0</y> <width>348</width> - <height>91</height> + <height>300</height> </rect> </property> <property name="windowTitle"> @@ -15,46 +15,14 @@ </property> <layout class="QVBoxLayout" name="verticalLayout"> <item> - <spacer name="verticalSpacer_2"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - <item> - <widget class="QComboBox" name="comboBox"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="iconSize"> - <size> - <width>32</width> - <height>32</height> - </size> + <widget class="QLineEdit" name="lineSearch"> + <property name="placeholderText"> + <string>Search for....</string> </property> </widget> </item> <item> - <spacer name="verticalSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> + <widget class="QListWidget" name="listApps"/> </item> <item> <widget class="QDialogButtonBox" name="buttonBox"> diff --git a/src-qt5/core-utils/lumina-config/i18n/lumina-config_da.ts b/src-qt5/core-utils/lumina-config/i18n/lumina-config_da.ts index a596d071..add87210 100644 --- a/src-qt5/core-utils/lumina-config/i18n/lumina-config_da.ts +++ b/src-qt5/core-utils/lumina-config/i18n/lumina-config_da.ts @@ -14,7 +14,7 @@ <message> <location filename="../ColorDialog.ui" line="14"/> <source>Color Scheme Editor</source> - <translation>Redigér Farveskema</translation> + <translation>Redigér farveskema</translation> </message> <message> <location filename="../ColorDialog.ui" line="28"/> @@ -50,12 +50,12 @@ <message> <location filename="../ColorDialog.ui" line="105"/> <source>Sample</source> - <translation>Eksempel</translation> + <translation>Prøve</translation> </message> <message> <location filename="../ColorDialog.ui" line="115"/> <source>Cancel</source> - <translation>Annullér</translation> + <translation>Annuller</translation> </message> <message> <location filename="../ColorDialog.ui" line="135"/> @@ -71,8 +71,8 @@ <location filename="../ColorDialog.cpp" line="98"/> <source>This color scheme already exists. Overwrite it?</source> - <translation>Denne farve eksisterer allerede. -Skal den overskrives?</translation> + <translation>Denne farve eksisterer allerede. + Skal den overskrives?</translation> </message> <message> <location filename="../ColorDialog.cpp" line="121"/> @@ -96,17 +96,17 @@ Skal den overskrives?</translation> <message> <location filename="../GetPluginDialog.ui" line="14"/> <source>Select Plugin</source> - <translation>Vælg Udvidelsesmodul</translation> + <translation>Vælg plugin</translation> </message> <message> <location filename="../GetPluginDialog.ui" line="26"/> <source>Select a Plugin:</source> - <translation>Vælg et Udvidelsesmodul:</translation> + <translation>Vælg et plugin:</translation> </message> <message> <location filename="../GetPluginDialog.ui" line="57"/> <source>Cancel</source> - <translation>Afbryd</translation> + <translation>Annuller</translation> </message> <message> <location filename="../GetPluginDialog.ui" line="77"/> @@ -119,7 +119,7 @@ Skal den overskrives?</translation> <message> <location filename="../PanelWidget.ui" line="32"/> <source>Form</source> - <translation>Form</translation> + <translation>Formular</translation> </message> <message> <location filename="../PanelWidget.ui" line="93"/> @@ -139,7 +139,7 @@ Skal den overskrives?</translation> <message> <location filename="../PanelWidget.ui" line="138"/> <source> pixel(s) thick</source> - <translation> pixel(s) tyk</translation> + <translation> pixel(s) bred</translation> </message> <message> <location filename="../PanelWidget.ui" line="157"/> @@ -154,7 +154,7 @@ Skal den overskrives?</translation> <message> <location filename="../PanelWidget.ui" line="204"/> <source>Appearance</source> - <translation type="unfinished">Udseende</translation> + <translation>Udseende</translation> </message> <message> <location filename="../PanelWidget.ui" line="222"/> @@ -164,37 +164,37 @@ Skal den overskrives?</translation> <message> <location filename="../PanelWidget.ui" line="229"/> <source>Use Custom Color</source> - <translation>Anvend brugervalgt farve</translation> + <translation>Brug brugerdefineret farve</translation> </message> <message> <location filename="../PanelWidget.ui" line="250"/> <source>...</source> - <translation type="unfinished">...</translation> + <translation>...</translation> </message> <message> <location filename="../PanelWidget.ui" line="257"/> <source>Sample</source> - <translation type="unfinished">Eksempel</translation> + <translation>Prøve</translation> </message> <message> <location filename="../PanelWidget.ui" line="287"/> <source>Plugins</source> - <translation>Udvidelsesmoduler</translation> + <translation>Plugins</translation> </message> <message> <location filename="../PanelWidget.cpp" line="19"/> <source>Top/Left</source> - <translation>Øverst/Venstre</translation> + <translation>Øverst/venstre</translation> </message> <message> <location filename="../PanelWidget.cpp" line="20"/> <source>Center</source> - <translation>Midt</translation> + <translation>I midten</translation> </message> <message> <location filename="../PanelWidget.cpp" line="21"/> <source>Bottom/Right</source> - <translation>Bund/Højre</translation> + <translation>Nederst/højre</translation> </message> <message> <location filename="../PanelWidget.cpp" line="22"/> @@ -204,29 +204,29 @@ Skal den overskrives?</translation> <message> <location filename="../PanelWidget.cpp" line="23"/> <source>Bottom</source> - <translation>Bund</translation> + <translation>Nederst</translation> </message> <message> <location filename="../PanelWidget.cpp" line="24"/> <source>Left</source> - <translation type="unfinished"></translation> + <translation>Venstre</translation> </message> <message> <location filename="../PanelWidget.cpp" line="25"/> <source>Right</source> - <translation type="unfinished"></translation> + <translation>Højre</translation> </message> <message> <location filename="../PanelWidget.cpp" line="44"/> <location filename="../PanelWidget.cpp" line="117"/> <source>Panel %1</source> - <translation type="unfinished"></translation> + <translation>Panel %1</translation> </message> <message> <location filename="../PanelWidget.cpp" line="155"/> <location filename="../PanelWidget.cpp" line="156"/> <source>Select Color</source> - <translation type="unfinished">Vælg farve</translation> + <translation>Vælg farve</translation> </message> </context> <context> @@ -234,27 +234,27 @@ Skal den overskrives?</translation> <message> <location filename="../LPlugins.cpp" line="80"/> <source>Desktop Bar</source> - <translation type="unfinished"></translation> + <translation>Skrivebordsbjælke</translation> </message> <message> <location filename="../LPlugins.cpp" line="81"/> <source>This provides shortcuts to everything in the desktop folder - allowing easy access to all your favorite files/applications.</source> - <translation type="unfinished"></translation> + <translation>Dette giver genveje til alt i skrivebordsmappen - hvilket giver nem adgang til alle dine favoritfiler/-programmer.</translation> </message> <message> <location filename="../LPlugins.cpp" line="87"/> <source>Spacer</source> - <translation type="unfinished"></translation> + <translation>Afstandsstykke</translation> </message> <message> <location filename="../LPlugins.cpp" line="88"/> <source>Invisible spacer to separate plugins.</source> - <translation type="unfinished"></translation> + <translation>Usynlig afstandsstykke til at afskille plugins.</translation> </message> <message> <location filename="../LPlugins.cpp" line="102"/> <source>Controls for switching between the various virtual desktops.</source> - <translation type="unfinished"></translation> + <translation>Kontroller til at skifte mellem de forskellige virtuelle skriveborde.</translation> </message> <message> <location filename="../LPlugins.cpp" line="108"/> @@ -269,579 +269,579 @@ Skal den overskrives?</translation> <message> <location filename="../LPlugins.cpp" line="115"/> <source>Time/Date</source> - <translation>Tid/Dato</translation> + <translation>Klokkeslæt/dato</translation> </message> <message> <location filename="../LPlugins.cpp" line="116"/> <source>View the current time and date.</source> - <translation>Vis det aktuelle tidspunkt og dato.</translation> + <translation>Vis det aktuelle klokkeslæt og dato.</translation> </message> <message> <location filename="../LPlugins.cpp" line="122"/> <source>System Dashboard</source> - <translation type="unfinished">Instrumentbræt til skrivebordet</translation> + <translation>Systemets instrumentbræt</translation> </message> <message> <location filename="../LPlugins.cpp" line="123"/> <source>View or change system settings (audio volume, screen brightness, battery life, virtual desktops).</source> - <translation type="unfinished"></translation> + <translation>Vis eller ændre systemindstillinger (lydstyrke, skærmlysstyrke, batteriliv, virtuelle skriveborde).</translation> </message> <message> <location filename="../LPlugins.cpp" line="129"/> <location filename="../LPlugins.cpp" line="291"/> <source>Task Manager</source> - <translation type="unfinished"></translation> + <translation>Opgavehåndtering</translation> </message> <message> <location filename="../LPlugins.cpp" line="136"/> <source>Task Manager (No Groups)</source> - <translation type="unfinished"></translation> + <translation>Opgavehåndtering (ingen grupper)</translation> </message> <message> <location filename="../LPlugins.cpp" line="143"/> <source>System Tray</source> - <translation type="unfinished"></translation> + <translation>Systembakke</translation> </message> <message> <location filename="../LPlugins.cpp" line="144"/> <source>Display area for dockable system applications</source> - <translation type="unfinished"></translation> + <translation>Vis område til systemprogrammer som kan dokkes</translation> </message> <message> <location filename="../LPlugins.cpp" line="151"/> <source>Hide all open windows and show the desktop</source> - <translation type="unfinished"></translation> + <translation>Skjul alle åbne vinduer og vis skrivebordet</translation> </message> <message> <location filename="../LPlugins.cpp" line="157"/> <source>Start Menu</source> - <translation type="unfinished"></translation> + <translation>Startmenu</translation> </message> <message> <location filename="../LPlugins.cpp" line="190"/> <source>Calendar</source> - <translation type="unfinished"></translation> + <translation>Kalender</translation> </message> <message> <location filename="../LPlugins.cpp" line="191"/> <source>Display a calendar on the desktop</source> - <translation type="unfinished"></translation> + <translation>Vis en kalender på skrivebordet</translation> </message> <message> <location filename="../LPlugins.cpp" line="164"/> <location filename="../LPlugins.cpp" line="197"/> <source>Application Launcher</source> - <translation type="unfinished"></translation> + <translation>Programstarter</translation> </message> <message> <location filename="../LPlugins.cpp" line="66"/> <source>User Menu</source> - <translation type="unfinished"></translation> + <translation>Brugermenu</translation> </message> <message> <location filename="../LPlugins.cpp" line="67"/> - <source>Start menu alternative focusing on the user's files, directories, and favorites.</source> - <translation type="unfinished"></translation> + <source>Start menu alternative focusing on the user's files, directories, and favorites.</source> + <translation>Startmenu alternativ som fokusere på brugerens filer, mapper og favoritter.</translation> </message> <message> <location filename="../LPlugins.cpp" line="73"/> <source>Application Menu</source> - <translation type="unfinished"></translation> + <translation>Programmenu</translation> </message> <message> <location filename="../LPlugins.cpp" line="74"/> <source>Start menu alternative which focuses on launching applications.</source> - <translation type="unfinished"></translation> + <translation>Startmenu alternativ som fokusere på startende programmer.</translation> </message> <message> <location filename="../LPlugins.cpp" line="94"/> <source>Line</source> - <translation type="unfinished"></translation> + <translation>Linje</translation> </message> <message> <location filename="../LPlugins.cpp" line="95"/> <source>Simple line to provide visual separation between items.</source> - <translation type="unfinished"></translation> + <translation>Simpel linje til at give visuel adskillelse mellem poster.</translation> </message> <message> <location filename="../LPlugins.cpp" line="101"/> <source>Workspace Switcher</source> - <translation type="unfinished"></translation> + <translation>Arbejdsområdeskifter</translation> </message> <message> <location filename="../LPlugins.cpp" line="130"/> <source>View and control any running application windows (group similar windows under a single button).</source> - <translation type="unfinished"></translation> + <translation>Vis og kontrollér kørende programvinder (gruppér lignende vinduer under en enkelt knap).</translation> </message> <message> <location filename="../LPlugins.cpp" line="137"/> <source>View and control any running application windows (every individual window has a button)</source> - <translation type="unfinished"></translation> + <translation>Vis og kontrollér kørende programvinder (hvert vindue har en knap)</translation> </message> <message> <location filename="../LPlugins.cpp" line="150"/> <source>Show Desktop</source> - <translation type="unfinished"></translation> + <translation>Vis skrivebord</translation> </message> <message> <location filename="../LPlugins.cpp" line="158"/> <source>Unified system access and application launch menu.</source> - <translation type="unfinished"></translation> + <translation>Ensartet systemadgang og programstart-menu.</translation> </message> <message> <location filename="../LPlugins.cpp" line="165"/> <source>Pin an application shortcut directly to the panel</source> - <translation type="unfinished"></translation> + <translation>Fastgør en programgenvej direkte til panalet</translation> </message> <message> <location filename="../LPlugins.cpp" line="198"/> <source>Desktop button for launching an application</source> - <translation type="unfinished"></translation> + <translation>Skrivebordsknap til at starte et program</translation> </message> <message> <location filename="../LPlugins.cpp" line="204"/> <source>Desktop Icons View</source> - <translation type="unfinished"></translation> + <translation>Skrivebordsikonvisning</translation> </message> <message> <location filename="../LPlugins.cpp" line="211"/> <source>Note Pad</source> - <translation type="unfinished"></translation> + <translation>Notesblok</translation> </message> <message> <location filename="../LPlugins.cpp" line="212"/> <source>Keep simple text notes on your desktop</source> - <translation type="unfinished"></translation> + <translation>Hold simple tekstnoter på dit skrivebord</translation> </message> <message> <location filename="../LPlugins.cpp" line="171"/> <location filename="../LPlugins.cpp" line="218"/> <source>Audio Player</source> - <translation type="unfinished"></translation> + <translation>Lydafspiller</translation> </message> <message> <location filename="../LPlugins.cpp" line="172"/> <location filename="../LPlugins.cpp" line="219"/> <source>Play through lists of audio files</source> - <translation type="unfinished"></translation> + <translation>Afspil gennem listen af lydfiler</translation> </message> <message> <location filename="../LPlugins.cpp" line="225"/> <source>System Monitor</source> - <translation type="unfinished"></translation> + <translation>Systemovervågning</translation> </message> <message> <location filename="../LPlugins.cpp" line="226"/> <source>Keep track of system statistics such as CPU/Memory usage and CPU temperatures.</source> - <translation type="unfinished"></translation> + <translation>Hold styr på systemstatisk såsom CPU/hukommelsesforbrug og CPU-temperaturer.</translation> </message> <message> <location filename="../LPlugins.cpp" line="232"/> <source>RSS Reader</source> - <translation type="unfinished"></translation> + <translation>RSS-læser</translation> </message> <message> <location filename="../LPlugins.cpp" line="233"/> <source>Monitor RSS Feeds (Requires internet connection)</source> - <translation type="unfinished"></translation> + <translation>Overvåg RSS-feeds (kræver internetforbindelse)</translation> </message> <message> <location filename="../LPlugins.cpp" line="256"/> <source>Terminal</source> - <translation type="unfinished"></translation> + <translation>Terminal</translation> </message> <message> <location filename="../LPlugins.cpp" line="257"/> <source>Start the default system terminal.</source> - <translation type="unfinished"></translation> + <translation>Start standardsystemterminalen.</translation> </message> <message> <location filename="../LPlugins.cpp" line="264"/> <source>Browse the system with the default file manager.</source> - <translation type="unfinished"></translation> + <translation>Gennemse systemet med standardfilhåndteringen.</translation> </message> <message> <location filename="../LPlugins.cpp" line="270"/> <location filename="../pages/getPage.h" line="33"/> <source>Applications</source> - <translation type="unfinished"></translation> + <translation>Programmer</translation> </message> <message> <location filename="../LPlugins.cpp" line="271"/> <source>Show the system applications menu.</source> - <translation type="unfinished"></translation> + <translation>Vis systemets programmenu.</translation> </message> <message> <location filename="../LPlugins.cpp" line="277"/> <source>Separator</source> - <translation type="unfinished"></translation> + <translation>Separator</translation> </message> <message> <location filename="../LPlugins.cpp" line="278"/> <source>Static horizontal line.</source> - <translation type="unfinished"></translation> + <translation>Statisk vandret linje.</translation> </message> <message> <location filename="../LPlugins.cpp" line="285"/> <source>Show the desktop settings menu.</source> - <translation type="unfinished"></translation> + <translation>Vis skrivebordsindstillinger-menuen.</translation> </message> <message> <location filename="../LPlugins.cpp" line="298"/> <source>Custom App</source> - <translation type="unfinished"></translation> + <translation>Brugerdefineret program</translation> </message> <message> <location filename="../LPlugins.cpp" line="299"/> <source>Start a custom application</source> - <translation type="unfinished"></translation> + <translation>Start et brugerdefineret program</translation> </message> <message> <location filename="../LPlugins.cpp" line="178"/> <location filename="../LPlugins.cpp" line="305"/> <source>Menu Script</source> - <translation type="unfinished"></translation> + <translation>Menu-script</translation> </message> <message> <location filename="../LPlugins.cpp" line="205"/> <source>Configurable area for automatically showing desktop icons</source> - <translation type="unfinished"></translation> + <translation>Konfigurerbart område til automatisk visning af skrivebordsikoner</translation> </message> <message> <location filename="../LPlugins.cpp" line="263"/> <source>Browse Files</source> - <translation type="unfinished"></translation> + <translation>Gennemse filer</translation> </message> <message> <location filename="../LPlugins.cpp" line="284"/> <source>Preferences</source> - <translation type="unfinished"></translation> + <translation>Præferencer</translation> </message> <message> <location filename="../LPlugins.cpp" line="292"/> <source>List the open, minimized, active, and urgent application windows</source> - <translation type="unfinished"></translation> + <translation>Vis de åbne, minimerede, aktive og vigtige programvinduer</translation> </message> <message> <location filename="../LPlugins.cpp" line="179"/> <location filename="../LPlugins.cpp" line="306"/> <source>Run an external script to generate a user defined menu</source> - <translation type="unfinished"></translation> + <translation>Kør et eksternt script til generering af en brugerdefineret menu</translation> </message> <message> <location filename="../LPlugins.cpp" line="312"/> <source>Lock Session</source> - <translation type="unfinished"></translation> + <translation>Lås session</translation> </message> <message> <location filename="../LPlugins.cpp" line="313"/> <source>Lock the current desktop session</source> - <translation type="unfinished"></translation> + <translation>Lås den aktuelle skrivebordssession</translation> </message> <message> <location filename="../LPlugins.cpp" line="323"/> <source>Text</source> - <translation type="unfinished"></translation> + <translation>Tekst</translation> </message> <message> <location filename="../LPlugins.cpp" line="324"/> <source>Color to use for all visible text.</source> - <translation type="unfinished"></translation> + <translation>Farve som skal bruges til al synlig tekst.</translation> </message> <message> <location filename="../LPlugins.cpp" line="329"/> <source>Text (Disabled)</source> - <translation type="unfinished"></translation> + <translation>Tekst (deaktiveret)</translation> </message> <message> <location filename="../LPlugins.cpp" line="330"/> <source>Text color for disabled or inactive items.</source> - <translation type="unfinished"></translation> + <translation>Tekstfarve til deaktiverede eller inaktive poster.</translation> </message> <message> <location filename="../LPlugins.cpp" line="335"/> <source>Text (Highlighted)</source> - <translation type="unfinished"></translation> + <translation>Tekst (fremhævet)</translation> </message> <message> <location filename="../LPlugins.cpp" line="336"/> <source>Text color when selection is highlighted.</source> - <translation type="unfinished"></translation> + <translation>Tekstfarve til når markering er fremhævet.</translation> </message> <message> <location filename="../LPlugins.cpp" line="341"/> <source>Base Window Color</source> - <translation type="unfinished"></translation> + <translation>Basis vinduesfarve</translation> </message> <message> <location filename="../LPlugins.cpp" line="342"/> <source>Main background color for the window/dialog.</source> - <translation type="unfinished"></translation> + <translation>Hovedbaggrundsfarve til vinduet/dialogen.</translation> </message> <message> <location filename="../LPlugins.cpp" line="347"/> <source>Base Window Color (Alternate)</source> - <translation type="unfinished"></translation> + <translation>Basis vinduesfarve (alternativ)</translation> </message> <message> <location filename="../LPlugins.cpp" line="348"/> <source>Main background color for widgets that list or display collections of items.</source> - <translation type="unfinished"></translation> + <translation>Hovedbaggrundsfarve til widgets som lister eller viser samlinger af poster.</translation> </message> <message> <location filename="../LPlugins.cpp" line="353"/> <source>Primary Color</source> - <translation type="unfinished"></translation> + <translation>Primær farve</translation> </message> <message> <location filename="../LPlugins.cpp" line="354"/> <source>Dominant color for the theme.</source> - <translation type="unfinished"></translation> + <translation>Dominerende farve til temaet.</translation> </message> <message> <location filename="../LPlugins.cpp" line="359"/> <source>Primary Color (Disabled)</source> - <translation type="unfinished"></translation> + <translation>Primær farve (deaktiveret)</translation> </message> <message> <location filename="../LPlugins.cpp" line="360"/> <source>Dominant color for the theme (more subdued).</source> - <translation type="unfinished"></translation> + <translation>Dominerende farve til temaet (mere afdæmpet).</translation> </message> <message> <location filename="../LPlugins.cpp" line="365"/> <source>Secondary Color</source> - <translation type="unfinished"></translation> + <translation>Sekundfær farve</translation> </message> <message> <location filename="../LPlugins.cpp" line="366"/> <source>Alternate color for the theme.</source> - <translation type="unfinished"></translation> + <translation>Alternativ farve til temaet.</translation> </message> <message> <location filename="../LPlugins.cpp" line="371"/> <source>Secondary Color (Disabled)</source> - <translation type="unfinished"></translation> + <translation>Sekundær farve (deaktiveret)</translation> </message> <message> <location filename="../LPlugins.cpp" line="372"/> <source>Alternate color for the theme (more subdued).</source> - <translation type="unfinished"></translation> + <translation>Alternativ farve til temaet (mere afdæmpet).</translation> </message> <message> <location filename="../LPlugins.cpp" line="377"/> <source>Accent Color</source> - <translation type="unfinished"></translation> + <translation>Accentfarve</translation> </message> <message> <location filename="../LPlugins.cpp" line="378"/> <source>Color used for borders or other accents.</source> - <translation type="unfinished"></translation> + <translation>Farve som bruges til kanter og andre accenter.</translation> </message> <message> <location filename="../LPlugins.cpp" line="383"/> <source>Accent Color (Disabled)</source> - <translation type="unfinished"></translation> + <translation>Accentfarve (deaktiveret)</translation> </message> <message> <location filename="../LPlugins.cpp" line="384"/> <source>Color used for borders or other accents (more subdued).</source> - <translation type="unfinished"></translation> + <translation>Farve som bruges til kanter og andre accents (mere afdæmpet).</translation> </message> <message> <location filename="../LPlugins.cpp" line="389"/> <source>Highlight Color</source> - <translation type="unfinished"></translation> + <translation>Fremhævningsfarve</translation> </message> <message> <location filename="../LPlugins.cpp" line="390"/> <source>Color used for highlighting an item.</source> - <translation type="unfinished"></translation> + <translation>Farve som skal bruges til fremhævning af en post.</translation> </message> <message> <location filename="../LPlugins.cpp" line="395"/> <source>Highlight Color (Disabled)</source> - <translation type="unfinished"></translation> + <translation>Fremhævningsfarve (deaktiveret)</translation> </message> <message> <location filename="../LPlugins.cpp" line="396"/> <source>Color used for highlighting an item (more subdued).</source> - <translation type="unfinished"></translation> + <translation>Farve som skal bruges til fremhævning af post (mere afdæmpet).</translation> </message> <message> <location filename="../pages/getPage.h" line="29"/> <source>Wallpaper Settings</source> - <translation type="unfinished"></translation> + <translation>Tapetindstillinger</translation> </message> <message> <location filename="../pages/getPage.h" line="29"/> <source>Change background image(s)</source> - <translation type="unfinished"></translation> + <translation>Skift baggrundsbillede(r)</translation> </message> <message> <location filename="../pages/getPage.h" line="30"/> <source>Theme Settings</source> - <translation type="unfinished"></translation> + <translation>Temaindstillinger</translation> </message> <message> <location filename="../pages/getPage.h" line="30"/> <source>Change interface fonts and colors</source> - <translation type="unfinished"></translation> + <translation>Skift brugerfladens skifttyper og farver</translation> </message> <message> <location filename="../pages/getPage.h" line="31"/> <source>Window Effects</source> - <translation type="unfinished"></translation> + <translation>Vindueseffekter</translation> </message> <message> <location filename="../pages/getPage.h" line="31"/> <source>Adjust transparency levels and window effects</source> - <translation type="unfinished"></translation> + <translation>Juster transparensniveauer og vindueseffekter</translation> </message> <message> <location filename="../pages/getPage.h" line="32"/> <source>Startup Settings</source> - <translation type="unfinished"></translation> + <translation>Opstartsindstillinger</translation> </message> <message> <location filename="../pages/getPage.h" line="32"/> <source>Automatically start applications or services</source> - <translation type="unfinished"></translation> + <translation>Automatisk start af programmer eller tjenester</translation> </message> <message> <location filename="../pages/getPage.h" line="29"/> <source>Wallpaper</source> - <translation type="unfinished"></translation> + <translation>Tapet</translation> </message> <message> <location filename="../pages/getPage.h" line="30"/> <source>Theme</source> - <translation type="unfinished"></translation> + <translation>Tema</translation> </message> <message> <location filename="../pages/getPage.h" line="32"/> <source>Autostart</source> - <translation type="unfinished"></translation> + <translation>Autostart</translation> </message> <message> <location filename="../pages/getPage.h" line="33"/> <source>Mimetype Settings</source> - <translation type="unfinished"></translation> + <translation>MIME-type-indstillinger</translation> </message> <message> <location filename="../pages/getPage.h" line="33"/> <source>Change default applications</source> - <translation type="unfinished"></translation> + <translation>Skift standardprogrammer</translation> </message> <message> <location filename="../pages/getPage.h" line="34"/> <source>Keyboard Shortcuts</source> - <translation type="unfinished">Tastaturgenveje</translation> + <translation>Tastaturgenveje</translation> </message> <message> <location filename="../pages/getPage.h" line="34"/> <source>Change keyboard shortcuts</source> - <translation type="unfinished"></translation> + <translation>Skift tastaturgenveje</translation> </message> <message> <location filename="../pages/getPage.h" line="35"/> <source>Window Manager</source> - <translation type="unfinished"></translation> + <translation>Vindueshåndtering</translation> </message> <message> <location filename="../pages/getPage.h" line="35"/> <source>Window Settings</source> - <translation type="unfinished"></translation> + <translation>Vinduesindstillinger</translation> </message> <message> <location filename="../pages/getPage.h" line="35"/> <source>Change window settings and appearances</source> - <translation type="unfinished"></translation> + <translation>Skift vinduesindstillinger og udseende</translation> </message> <message> <location filename="../pages/getPage.h" line="36"/> <source>Desktop</source> - <translation type="unfinished"></translation> + <translation>Skrivebord</translation> </message> <message> <location filename="../pages/getPage.h" line="37"/> <source>Panels</source> - <translation type="unfinished"></translation> + <translation>Paneler</translation> </message> <message> <location filename="../pages/getPage.h" line="38"/> <source>Menu</source> - <translation type="unfinished"></translation> + <translation>Menu</translation> </message> <message> <location filename="../pages/getPage.h" line="42"/> <source>Input Device Settings</source> - <translation type="unfinished"></translation> + <translation>Inputenhedsindstillinger</translation> </message> <message> <location filename="../pages/getPage.h" line="42"/> <source>Adjust keyboard and mouse devices</source> - <translation type="unfinished"></translation> + <translation>Juster tastatur- og museenheder</translation> </message> <message> <location filename="../pages/getPage.h" line="36"/> <source>Desktop Plugins</source> - <translation type="unfinished"></translation> + <translation>Skrivebord-plugins</translation> </message> <message> <location filename="../pages/getPage.h" line="36"/> <source>Change what icons or tools are embedded on the desktop</source> - <translation type="unfinished"></translation> + <translation>Skift hvilke ikoner og værktøjer som er indlejret på skrivebordet</translation> </message> <message> <location filename="../pages/getPage.h" line="37"/> <source>Panels and Plugins</source> - <translation type="unfinished"></translation> + <translation>Paneler og plugins</translation> </message> <message> <location filename="../pages/getPage.h" line="37"/> <source>Change any floating panels and what they show</source> - <translation type="unfinished"></translation> + <translation>Skift flydende paneler og hvad de viser</translation> </message> <message> <location filename="../pages/getPage.h" line="38"/> <source>Menu Plugins</source> - <translation type="unfinished"></translation> + <translation>Menu-plugins</translation> </message> <message> <location filename="../pages/getPage.h" line="38"/> <source>Change what options are shown on the desktop context menu</source> - <translation type="unfinished"></translation> + <translation>Skift hvilke valgmuligheder som vises i skrivebordets genvejsmenu</translation> </message> <message> <location filename="../pages/getPage.h" line="39"/> <source>Locale Settings</source> - <translation type="unfinished"></translation> + <translation>Lokale indstillinger</translation> </message> <message> <location filename="../pages/getPage.h" line="39"/> <source>Change the default locale settings for this user</source> - <translation type="unfinished"></translation> + <translation>Skift standard lokale indstillinger for denne bruger</translation> </message> <message> <location filename="../pages/getPage.h" line="39"/> <source>Localization</source> - <translation type="unfinished"></translation> + <translation>Lokalisering</translation> </message> <message> <location filename="../pages/getPage.h" line="40"/> <source>General Options</source> - <translation type="unfinished">Generelle Instillinger</translation> + <translation>Generelle instillinger</translation> </message> <message> <location filename="../pages/getPage.h" line="40"/> <source>User Settings</source> - <translation type="unfinished"></translation> + <translation>Brugerindstillinger</translation> </message> <message> <location filename="../pages/getPage.h" line="40"/> <source>Change basic user settings such as time/date formats</source> - <translation type="unfinished"></translation> + <translation>Skift grundlæggende brugerindstillinger såsom klokkeslæt-/datoformater</translation> </message> </context> <context> @@ -849,48 +849,48 @@ Skal den overskrives?</translation> <message> <location filename="../ScriptDialog.ui" line="14"/> <source>Setup a JSON Menu Script</source> - <translation type="unfinished"></translation> + <translation>Opsæt et JSON-menu-script</translation> </message> <message> <location filename="../ScriptDialog.ui" line="25"/> <source>Visible Name:</source> - <translation type="unfinished"></translation> + <translation>Synligt navn:</translation> </message> <message> <location filename="../ScriptDialog.ui" line="32"/> <source>Executable:</source> - <translation type="unfinished"></translation> + <translation>Eksekverbar:</translation> </message> <message> <location filename="../ScriptDialog.ui" line="39"/> <source>Icon:</source> - <translation type="unfinished"></translation> + <translation>Ikon:</translation> </message> <message> <location filename="../ScriptDialog.ui" line="54"/> <location filename="../ScriptDialog.ui" line="87"/> <source>...</source> - <translation type="unfinished">...</translation> + <translation>...</translation> </message> <message> <location filename="../ScriptDialog.ui" line="126"/> <source>Cancel</source> - <translation type="unfinished"></translation> + <translation>Annuller</translation> </message> <message> <location filename="../ScriptDialog.ui" line="133"/> <source>Apply</source> - <translation type="unfinished"></translation> + <translation>Anvend</translation> </message> <message> <location filename="../ScriptDialog.cpp" line="57"/> <source>Select a menu script</source> - <translation type="unfinished"></translation> + <translation>Vælg et menu-script</translation> </message> <message> <location filename="../ScriptDialog.cpp" line="64"/> <source>Select an icon file</source> - <translation type="unfinished"></translation> + <translation>Vælg en ikonfil</translation> </message> </context> <context> @@ -898,45 +898,46 @@ Skal den overskrives?</translation> <message> <location filename="../ThemeDialog.ui" line="14"/> <source>Theme Editor</source> - <translation type="unfinished"></translation> + <translation>Temaredigering</translation> </message> <message> <location filename="../ThemeDialog.ui" line="28"/> <source>Theme Name:</source> - <translation type="unfinished"></translation> + <translation>Temanavn:</translation> </message> <message> <location filename="../ThemeDialog.ui" line="51"/> <source>color</source> - <translation type="unfinished"></translation> + <translation>farve</translation> </message> <message> <location filename="../ThemeDialog.ui" line="74"/> <source>Cancel</source> - <translation type="unfinished">Annullér</translation> + <translation>Annuller</translation> </message> <message> <location filename="../ThemeDialog.ui" line="94"/> <source>Save</source> - <translation type="unfinished">Gem</translation> + <translation>Gem</translation> </message> <message> <location filename="../ThemeDialog.ui" line="101"/> <source>Apply</source> - <translation type="unfinished"></translation> + <translation>Anvend</translation> </message> <message> <location filename="../ThemeDialog.cpp" line="65"/> <location filename="../ThemeDialog.cpp" line="82"/> <source>Theme Exists</source> - <translation type="unfinished"></translation> + <translation>Tema findes</translation> </message> <message> <location filename="../ThemeDialog.cpp" line="65"/> <location filename="../ThemeDialog.cpp" line="82"/> <source>This theme already exists. Overwrite it?</source> - <translation type="unfinished"></translation> + <translation>Dette tema findes allerede. + Overskriv det?</translation> </message> </context> <context> @@ -944,54 +945,54 @@ Skal den overskrives?</translation> <message> <location filename="../mainWindow.ui" line="14"/> <source>MainWindow</source> - <translation type="unfinished"></translation> + <translation>Hovedvindue</translation> </message> <message> <location filename="../mainWindow.ui" line="23"/> <source>toolBar</source> - <translation type="unfinished">Værktøjslinje</translation> + <translation>værktøjsbjælke</translation> </message> <message> <location filename="../mainWindow.ui" line="50"/> <source>Save</source> - <translation type="unfinished">Gem</translation> + <translation>Gem</translation> </message> <message> <location filename="../mainWindow.ui" line="53"/> <source>Save current changes</source> - <translation type="unfinished"></translation> + <translation>Gem aktuelle ændringer</translation> </message> <message> <location filename="../mainWindow.ui" line="56"/> <source>Ctrl+S</source> - <translation type="unfinished">Ctrl+S</translation> + <translation>Ctrl+S</translation> </message> <message> <location filename="../mainWindow.ui" line="61"/> <source>Back to settings</source> - <translation type="unfinished"></translation> + <translation>Tilbage til indstillinger</translation> </message> <message> <location filename="../mainWindow.ui" line="64"/> <location filename="../mainWindow.ui" line="67"/> <source>Back to overall settings</source> - <translation type="unfinished"></translation> + <translation>Tilbage til overordnet indstillinger</translation> </message> <message> <location filename="../mainWindow.ui" line="78"/> <location filename="../mainWindow.ui" line="81"/> <source>Select monitor/desktop to configure</source> - <translation type="unfinished"></translation> + <translation>Vælg skærm/skrivebord som skal konfigureres</translation> </message> <message> <location filename="../mainWindow.cpp" line="129"/> <source>Unsaved Changes</source> - <translation type="unfinished"></translation> + <translation>Ugemte ændringer</translation> </message> <message> <location filename="../mainWindow.cpp" line="129"/> <source>This page currently has unsaved changes, do you wish to save them now?</source> - <translation type="unfinished"></translation> + <translation>Denne side har ugemte ændringer. Vil du gemme dem nu?</translation> </message> </context> <context> @@ -999,62 +1000,62 @@ Skal den overskrives?</translation> <message> <location filename="../pages/page_autostart.ui" line="14"/> <source>Form</source> - <translation type="unfinished">Form</translation> + <translation>Formular</translation> </message> <message> <location filename="../pages/page_autostart.ui" line="39"/> <source>Add New Startup Service</source> - <translation type="unfinished"></translation> + <translation>Tilføj ny opstartstjeneste</translation> </message> <message> <location filename="../pages/page_autostart.ui" line="75"/> <source>Application</source> - <translation type="unfinished">Program</translation> + <translation>Program</translation> </message> <message> <location filename="../pages/page_autostart.ui" line="85"/> <source>Binary</source> - <translation type="unfinished">Binær</translation> + <translation>Binær</translation> </message> <message> <location filename="../pages/page_autostart.ui" line="95"/> <source>File</source> - <translation type="unfinished">Fil</translation> + <translation>Fil</translation> </message> <message> <location filename="../pages/page_autostart.cpp" line="67"/> <source>Startup Services</source> - <translation type="unfinished"></translation> + <translation>Opstartstjenester</translation> </message> <message> <location filename="../pages/page_autostart.cpp" line="134"/> <source>Select Binary</source> - <translation type="unfinished"></translation> + <translation>Vælg binær</translation> </message> <message> <location filename="../pages/page_autostart.cpp" line="134"/> <source>Application Binaries (*)</source> - <translation type="unfinished"></translation> + <translation>Programbinærer (*)</translation> </message> <message> <location filename="../pages/page_autostart.cpp" line="137"/> <source>Invalid Binary</source> - <translation type="unfinished"></translation> + <translation>Ugyldig binær</translation> </message> <message> <location filename="../pages/page_autostart.cpp" line="137"/> <source>The selected file is not executable!</source> - <translation type="unfinished"></translation> + <translation>Den valgte fil er ikke eksekverbar!</translation> </message> <message> <location filename="../pages/page_autostart.cpp" line="151"/> <source>Select File</source> - <translation type="unfinished">Vælg fil</translation> + <translation>Vælg fil</translation> </message> <message> <location filename="../pages/page_autostart.cpp" line="151"/> <source>All Files (*)</source> - <translation type="unfinished">Alle filer (*)</translation> + <translation>Alle filer (*)</translation> </message> </context> <context> @@ -1062,22 +1063,22 @@ Skal den overskrives?</translation> <message> <location filename="../pages/page_compton.ui" line="14"/> <source>Form</source> - <translation type="unfinished">Form</translation> + <translation>Formular</translation> </message> <message> <location filename="../pages/page_compton.ui" line="32"/> <source>Disable Compositing Manager (session restart required)</source> - <translation type="unfinished"></translation> + <translation>Deaktivér kompositingshåndtering (kræver genstart af session)</translation> </message> <message> <location filename="../pages/page_compton.ui" line="39"/> <source>Only use compositing with GPU acceleration </source> - <translation type="unfinished"></translation> + <translation>Brug kun komposition med GPU-acceleration </translation> </message> <message> <location filename="../pages/page_compton.cpp" line="38"/> <source>Compositor Settings</source> - <translation type="unfinished"></translation> + <translation>Kompositorindstillinger</translation> </message> </context> <context> @@ -1085,83 +1086,83 @@ Skal den overskrives?</translation> <message> <location filename="../pages/page_defaultapps.ui" line="14"/> <source>Form</source> - <translation type="unfinished">Form</translation> + <translation>Formular</translation> </message> <message> <location filename="../pages/page_defaultapps.ui" line="166"/> <source>Advanced</source> - <translation type="unfinished"></translation> + <translation>Avanceret</translation> </message> <message> <location filename="../pages/page_defaultapps.ui" line="189"/> <source>Specific File Types</source> - <translation type="unfinished">Specifikke Filtyper</translation> + <translation>Specifikke filtyper</translation> </message> <message> <location filename="../pages/page_defaultapps.ui" line="226"/> <source>Type/Group</source> - <translation type="unfinished">Type/Gruppe</translation> + <translation>Type/gruppe</translation> </message> <message> <location filename="../pages/page_defaultapps.ui" line="231"/> <source>Default Application</source> - <translation type="unfinished">Standardprogram</translation> + <translation>Standardprogram</translation> </message> <message> <location filename="../pages/page_defaultapps.ui" line="236"/> <source>Description</source> - <translation type="unfinished">Beskrivelse</translation> + <translation>Beskrivelse</translation> </message> <message> <location filename="../pages/page_defaultapps.ui" line="246"/> <source>Clear</source> - <translation type="unfinished">Ryd</translation> + <translation>Ryd</translation> </message> <message> <location filename="../pages/page_defaultapps.ui" line="269"/> <source>Set App</source> - <translation type="unfinished">Sæt Prog</translation> + <translation>Sæt program</translation> </message> <message> <location filename="../pages/page_defaultapps.ui" line="279"/> <source>Set Binary</source> - <translation type="unfinished"></translation> + <translation>Sæt binær</translation> </message> <message> <location filename="../pages/page_defaultapps.ui" line="39"/> <source>Basic Settings</source> - <translation type="unfinished"></translation> + <translation>Basisindstillinger</translation> </message> <message> <location filename="../pages/page_defaultapps.ui" line="58"/> <source>Web Browser:</source> - <translation type="unfinished">Webbrowser:</translation> + <translation>Webbrowser:</translation> </message> <message> <location filename="../pages/page_defaultapps.ui" line="81"/> <source>E-Mail Client:</source> - <translation type="unfinished">E-post Klient:</translation> + <translation>E-mailklient:</translation> </message> <message> <location filename="../pages/page_defaultapps.ui" line="108"/> <source>File Manager:</source> - <translation type="unfinished">Filhåndtering:</translation> + <translation>Filhåndtering:</translation> </message> <message> <location filename="../pages/page_defaultapps.ui" line="121"/> <source>Virtual Terminal:</source> - <translation type="unfinished">Virtuel Terminal:</translation> + <translation>Virtuel terminal:</translation> </message> <message> <location filename="../pages/page_defaultapps.ui" line="128"/> <location filename="../pages/page_defaultapps.ui" line="138"/> <source>...</source> - <translation type="unfinished">...</translation> + <translation>...</translation> </message> <message> <location filename="../pages/page_defaultapps.cpp" line="43"/> <source>Default Applications</source> - <translation type="unfinished"></translation> + <translation>Standardprogrammer</translation> </message> <message> <location filename="../pages/page_defaultapps.cpp" line="61"/> @@ -1170,27 +1171,27 @@ Skal den overskrives?</translation> <location filename="../pages/page_defaultapps.cpp" line="124"/> <location filename="../pages/page_defaultapps.cpp" line="220"/> <source>Click to Set</source> - <translation type="unfinished">Klik for at vælge</translation> + <translation>Klik for at sætte</translation> </message> <message> <location filename="../pages/page_defaultapps.cpp" line="158"/> <source>%1 (%2)</source> - <translation type="unfinished">%1 (%2)</translation> + <translation>%1 (%2)</translation> </message> <message> <location filename="../pages/page_defaultapps.cpp" line="330"/> <source>Select Binary</source> - <translation type="unfinished"></translation> + <translation>Vælg binær</translation> </message> <message> <location filename="../pages/page_defaultapps.cpp" line="337"/> <source>Invalid Binary</source> - <translation type="unfinished"></translation> + <translation>Ugyldig binær</translation> </message> <message> <location filename="../pages/page_defaultapps.cpp" line="337"/> <source>The selected binary is not executable!</source> - <translation type="unfinished"></translation> + <translation>Den valgte binær er ikke eksekverbar!</translation> </message> </context> <context> @@ -1198,99 +1199,101 @@ Skal den overskrives?</translation> <message> <location filename="../pages/page_fluxbox_keys.ui" line="14"/> <source>page_fluxbox_keys</source> - <translation type="unfinished"></translation> + <translation>page_fluxbox_keys</translation> </message> <message> <location filename="../pages/page_fluxbox_keys.ui" line="34"/> <source>Basic Editor</source> - <translation type="unfinished"></translation> + <translation>Basisredigering</translation> </message> <message> <location filename="../pages/page_fluxbox_keys.ui" line="44"/> <source>Advanced Editor</source> - <translation type="unfinished"></translation> + <translation>Avanceret redigering</translation> </message> <message> <location filename="../pages/page_fluxbox_keys.ui" line="107"/> <source>Action</source> - <translation type="unfinished">Handling</translation> + <translation>Handling</translation> </message> <message> <location filename="../pages/page_fluxbox_keys.ui" line="112"/> <source>Keyboard Shortcut</source> - <translation type="unfinished">Tastaturgenvej</translation> + <translation>Tastaturgenvej</translation> </message> <message> <location filename="../pages/page_fluxbox_keys.ui" line="120"/> <source>Modify Shortcut</source> - <translation type="unfinished">Redigér genvej</translation> + <translation>Rediger genvej</translation> </message> <message> <location filename="../pages/page_fluxbox_keys.ui" line="141"/> <source>Clear Shortcut</source> - <translation type="unfinished">Fjern genvej</translation> + <translation>Ryd genvej</translation> </message> <message> <location filename="../pages/page_fluxbox_keys.ui" line="151"/> <source>Apply Change</source> - <translation type="unfinished">Udfør ændring</translation> + <translation>Anvend ændring</translation> </message> <message> <location filename="../pages/page_fluxbox_keys.ui" line="161"/> <source>Change Key Binding:</source> - <translation type="unfinished">Skift taste binding:</translation> + <translation>Skift tastebinding:</translation> </message> <message> <location filename="../pages/page_fluxbox_keys.ui" line="184"/> <source>Note: Current key bindings need to be cleared and saved before they can be re-used.</source> - <translation type="unfinished">Besked: Eksisterende taste genvej skal fjernes og gemmes før de kan blive genbrugt.</translation> + <translation>Bemærk: Eksisterende tastegenveje skal ryddes og gemmes inden de kan genbruges.</translation> </message> <message> <location filename="../pages/page_fluxbox_keys.ui" line="220"/> <source>View Syntax Codes</source> - <translation type="unfinished"></translation> + <translation>Vis syntakskoder</translation> </message> <message> <location filename="../pages/page_fluxbox_keys.ui" line="244"/> - <source>"Mod1": Alt key -"Mod4": Windows/Mac key -"Control": Ctrl key</source> - <translation type="unfinished"></translation> + <source>"Mod1": Alt key +"Mod4": Windows/Mac key +"Control": Ctrl key</source> + <translation>"Mod1": Alt-tast +"Mod4": Windows-/Mac-tast +"Control": Ctrl-tast</translation> </message> <message> <location filename="../pages/page_fluxbox_keys.cpp" line="71"/> <source>Keyboard Shortcuts</source> - <translation type="unfinished">Tastaturgenveje</translation> + <translation>Tastaturgenveje</translation> </message> <message> <location filename="../pages/page_fluxbox_keys.cpp" line="79"/> <source>Audio Volume Up</source> - <translation type="unfinished"></translation> + <translation>Lydstyrke op</translation> </message> <message> <location filename="../pages/page_fluxbox_keys.cpp" line="80"/> <source>Audio Volume Down</source> - <translation type="unfinished">Lydstyrke Ned</translation> + <translation>Lydstyrke ned</translation> </message> <message> <location filename="../pages/page_fluxbox_keys.cpp" line="81"/> <source>Screen Brightness Up</source> - <translation type="unfinished">Skærmlysstyrke Op</translation> + <translation>Skærmlysstyrke op</translation> </message> <message> <location filename="../pages/page_fluxbox_keys.cpp" line="82"/> <source>Screen Brightness Down</source> - <translation type="unfinished">Skærmlysstyrke Ned</translation> + <translation>Skærmlysstyrke ned</translation> </message> <message> <location filename="../pages/page_fluxbox_keys.cpp" line="83"/> <source>Take Screenshot</source> - <translation type="unfinished">Tag skærmbillede</translation> + <translation>Tag skærmbillede</translation> </message> <message> <location filename="../pages/page_fluxbox_keys.cpp" line="84"/> <source>Lock Screen</source> - <translation type="unfinished"></translation> + <translation>Lås session</translation> </message> </context> <context> @@ -1298,88 +1301,88 @@ Skal den overskrives?</translation> <message> <location filename="../pages/page_fluxbox_settings.ui" line="14"/> <source>Form</source> - <translation type="unfinished">Form</translation> + <translation>Formular</translation> </message> <message> <location filename="../pages/page_fluxbox_settings.ui" line="34"/> <source>Simple Editor</source> - <translation type="unfinished"></translation> + <translation>Enkel redigering</translation> </message> <message> <location filename="../pages/page_fluxbox_settings.ui" line="44"/> <source>Advanced Editor</source> - <translation type="unfinished"></translation> + <translation>Avanceret redigering</translation> </message> <message> <location filename="../pages/page_fluxbox_settings.ui" line="81"/> <source>Number of Workspaces</source> - <translation type="unfinished">Antal af arbejdsområder</translation> + <translation>Antal arbejdsområder</translation> </message> <message> <location filename="../pages/page_fluxbox_settings.ui" line="98"/> <source>New Window Placement</source> - <translation type="unfinished">Ny vinduesplacering</translation> + <translation>Ny vinduesplacering</translation> </message> <message> <location filename="../pages/page_fluxbox_settings.ui" line="108"/> <source>Focus Policy</source> - <translation type="unfinished">Fokuspolitik</translation> + <translation>Fokuspolitik</translation> </message> <message> <location filename="../pages/page_fluxbox_settings.ui" line="118"/> <source>Window Theme</source> - <translation type="unfinished">Vinduestema</translation> + <translation>Vinduestema</translation> </message> <message> <location filename="../pages/page_fluxbox_settings.ui" line="136"/> <source>Window Theme Preview</source> - <translation type="unfinished">Vinduestema forhåndsvisning</translation> + <translation>Forhåndsvisning af vinduestema</translation> </message> <message> <location filename="../pages/page_fluxbox_settings.ui" line="190"/> <location filename="../pages/page_fluxbox_settings.cpp" line="182"/> <source>No Preview Available</source> - <translation type="unfinished">Ingen forhåndsvisning tilgængelig</translation> + <translation>Ingen forhåndsvisning tilgængelig</translation> </message> <message> <location filename="../pages/page_fluxbox_settings.cpp" line="71"/> <source>Window Manager Settings</source> - <translation type="unfinished"></translation> + <translation>Vindueshåndteringsindstillinger</translation> </message> <message> <location filename="../pages/page_fluxbox_settings.cpp" line="76"/> <source>Click To Focus</source> - <translation type="unfinished">Klik for fokus</translation> + <translation>Klik for at fokusere</translation> </message> <message> <location filename="../pages/page_fluxbox_settings.cpp" line="77"/> <source>Active Mouse Focus</source> - <translation type="unfinished">Aktiv mus fokus</translation> + <translation>Aktiv musefokus</translation> </message> <message> <location filename="../pages/page_fluxbox_settings.cpp" line="78"/> <source>Strict Mouse Focus</source> - <translation type="unfinished">Streng mus fokus</translation> + <translation>Streng musefokus</translation> </message> <message> <location filename="../pages/page_fluxbox_settings.cpp" line="81"/> <source>Align in a Row</source> - <translation type="unfinished">Tilpas i en række</translation> + <translation>Sæt på række</translation> </message> <message> <location filename="../pages/page_fluxbox_settings.cpp" line="82"/> <source>Align in a Column</source> - <translation type="unfinished">Tilpas i en kolonne</translation> + <translation>Sæt på kolonne</translation> </message> <message> <location filename="../pages/page_fluxbox_settings.cpp" line="83"/> <source>Cascade</source> - <translation type="unfinished">Kaskade</translation> + <translation>Kaskade</translation> </message> <message> <location filename="../pages/page_fluxbox_settings.cpp" line="84"/> <source>Underneath Mouse</source> - <translation type="unfinished">Under mus</translation> + <translation>Under mus</translation> </message> </context> <context> @@ -1387,22 +1390,22 @@ Skal den overskrives?</translation> <message> <location filename="../pages/page_interface_desktop.ui" line="14"/> <source>Form</source> - <translation type="unfinished">Form</translation> + <translation>Formular</translation> </message> <message> <location filename="../pages/page_interface_desktop.ui" line="26"/> <source>Embedded Utilities</source> - <translation type="unfinished"></translation> + <translation>Indlejrede redskaber</translation> </message> <message> <location filename="../pages/page_interface_desktop.ui" line="77"/> <source>Display Desktop Folder Contents</source> - <translation type="unfinished"></translation> + <translation>Vis skrivebordsmappens indhold</translation> </message> <message> <location filename="../pages/page_interface_desktop.cpp" line="55"/> <source>Desktop Settings</source> - <translation type="unfinished"></translation> + <translation>Skrivebordsindstillinger</translation> </message> </context> <context> @@ -1410,17 +1413,17 @@ Skal den overskrives?</translation> <message> <location filename="../pages/page_interface_menu.ui" line="14"/> <source>Form</source> - <translation type="unfinished">Form</translation> + <translation>Formular</translation> </message> <message> <location filename="../pages/page_interface_menu.ui" line="38"/> <source>Context Menu Plugins</source> - <translation type="unfinished"></translation> + <translation>Genvejsmenu-plugins</translation> </message> <message> <location filename="../pages/page_interface_menu.cpp" line="47"/> <source>Desktop Settings</source> - <translation type="unfinished"></translation> + <translation>Skrivebordsindstillinger</translation> </message> </context> <context> @@ -1428,22 +1431,22 @@ Skal den overskrives?</translation> <message> <location filename="../pages/page_interface_panels.ui" line="14"/> <source>Form</source> - <translation type="unfinished">Form</translation> + <translation>Formular</translation> </message> <message> <location filename="../pages/page_interface_panels.ui" line="69"/> <source>Profile</source> - <translation type="unfinished"></translation> + <translation>Profil</translation> </message> <message> <location filename="../pages/page_interface_panels.ui" line="82"/> <source>Import</source> - <translation type="unfinished"></translation> + <translation>Importér</translation> </message> <message> <location filename="../pages/page_interface_panels.cpp" line="52"/> <source>Desktop Settings</source> - <translation type="unfinished"></translation> + <translation>Skrivebordsindstillinger</translation> </message> </context> <context> @@ -1451,37 +1454,37 @@ Skal den overskrives?</translation> <message> <location filename="../pages/page_main.ui" line="14"/> <source>Form</source> - <translation type="unfinished">Form</translation> + <translation>Formular</translation> </message> <message> <location filename="../pages/page_main.ui" line="32"/> <source>Search for....</source> - <translation type="unfinished"></translation> + <translation>Søg efter....</translation> </message> <message> <location filename="../pages/page_main.cpp" line="53"/> <source>Interface Configuration</source> - <translation type="unfinished">Indstilling af grænseflade</translation> + <translation>Brugerfladekonfiguration</translation> </message> <message> <location filename="../pages/page_main.cpp" line="57"/> <source>Appearance</source> - <translation type="unfinished">Udseende</translation> + <translation>Udseende</translation> </message> <message> <location filename="../pages/page_main.cpp" line="61"/> <source>Desktop Defaults</source> - <translation type="unfinished"></translation> + <translation>Skrivebordsstandarder</translation> </message> <message> <location filename="../pages/page_main.cpp" line="65"/> <source>User Settings</source> - <translation type="unfinished"></translation> + <translation>Brugerindstillinger</translation> </message> <message> <location filename="../pages/page_main.cpp" line="131"/> <source>Desktop Settings</source> - <translation type="unfinished"></translation> + <translation>Skrivebordsindstillinger</translation> </message> </context> <context> @@ -1489,32 +1492,32 @@ Skal den overskrives?</translation> <message> <location filename="../pages/page_mouse.ui" line="14"/> <source>Form</source> - <translation type="unfinished">Form</translation> + <translation>Formular</translation> </message> <message> <location filename="../pages/page_mouse.cpp" line="53"/> <source>Input Device Settings</source> - <translation type="unfinished"></translation> + <translation>Inputenhedsindstillinger</translation> </message> <message> <location filename="../pages/page_mouse.cpp" line="81"/> <source>Mouse #%1</source> - <translation type="unfinished"></translation> + <translation>Mus nummer %1</translation> </message> <message> <location filename="../pages/page_mouse.cpp" line="85"/> <source>Keyboard #%1</source> - <translation type="unfinished"></translation> + <translation>Tastatur nummer %1</translation> </message> <message> <location filename="../pages/page_mouse.cpp" line="106"/> <source>Extension Device #%1</source> - <translation type="unfinished"></translation> + <translation>Udvidelsesenhed nummer %1</translation> </message> <message> <location filename="../pages/page_mouse.cpp" line="107"/> <source>Master Device</source> - <translation type="unfinished"></translation> + <translation>Master-enhed</translation> </message> </context> <context> @@ -1522,57 +1525,57 @@ Skal den overskrives?</translation> <message> <location filename="../pages/page_session_locale.ui" line="14"/> <source>Form</source> - <translation type="unfinished">Form</translation> + <translation>Formular</translation> </message> <message> <location filename="../pages/page_session_locale.ui" line="32"/> <source>System localization settings (restart required)</source> - <translation type="unfinished"></translation> + <translation>System lokaliseringsindstillinger (kræver genstart)</translation> </message> <message> <location filename="../pages/page_session_locale.ui" line="39"/> <source>Language</source> - <translation type="unfinished">Sprog</translation> + <translation>Sprog</translation> </message> <message> <location filename="../pages/page_session_locale.ui" line="49"/> <source>Messages</source> - <translation type="unfinished">Beskeder</translation> + <translation>Meddelelser</translation> </message> <message> <location filename="../pages/page_session_locale.ui" line="59"/> <source>Time</source> - <translation type="unfinished">Tid</translation> + <translation>Klokkeslæt</translation> </message> <message> <location filename="../pages/page_session_locale.ui" line="69"/> <source>Numeric</source> - <translation type="unfinished">Numerisk</translation> + <translation>Numerisk</translation> </message> <message> <location filename="../pages/page_session_locale.ui" line="79"/> <source>Monetary</source> - <translation type="unfinished">Monetære</translation> + <translation>Monetære</translation> </message> <message> <location filename="../pages/page_session_locale.ui" line="89"/> <source>Collate</source> - <translation type="unfinished">Saml</translation> + <translation>Saml</translation> </message> <message> <location filename="../pages/page_session_locale.ui" line="99"/> <source>CType</source> - <translation type="unfinished"></translation> + <translation>CType</translation> </message> <message> <location filename="../pages/page_session_locale.cpp" line="48"/> <source>Desktop Settings</source> - <translation type="unfinished"></translation> + <translation>Skrivebordsindstillinger</translation> </message> <message> <location filename="../pages/page_session_locale.cpp" line="92"/> <source>System Default</source> - <translation type="unfinished"></translation> + <translation>Systemstandard</translation> </message> </context> <context> @@ -1580,244 +1583,244 @@ Skal den overskrives?</translation> <message> <location filename="../pages/page_session_options.ui" line="14"/> <source>Form</source> - <translation type="unfinished">Form</translation> + <translation>Formular</translation> </message> <message> <location filename="../pages/page_session_options.ui" line="34"/> <source>Enable numlock on startup</source> - <translation type="unfinished">Aktivér numlock under opstart</translation> + <translation>Aktivér numlock under opstart</translation> </message> <message> <location filename="../pages/page_session_options.ui" line="41"/> <source>Play chimes on startup</source> - <translation type="unfinished">Afspil lyde under opstart</translation> + <translation>Afspil lyde under opstart</translation> </message> <message> <location filename="../pages/page_session_options.ui" line="48"/> <source>Play chimes on exit</source> - <translation type="unfinished">Afspil lyde under afslutning</translation> + <translation>Afspil lyde under afslutning</translation> </message> <message> <location filename="../pages/page_session_options.ui" line="55"/> <source>Automatically create/remove desktop symlinks for applications that are installed/removed</source> - <translation type="unfinished"></translation> + <translation>Opret/fjern automatisk skrivebords-symlinks til installerede/fjernede programmer</translation> </message> <message> <location filename="../pages/page_session_options.ui" line="58"/> <source>Manage desktop app links</source> - <translation type="unfinished"></translation> + <translation>Håndtér skrivebordsprogramlinks</translation> </message> <message> <location filename="../pages/page_session_options.ui" line="65"/> <source>Show application crash data</source> - <translation type="unfinished"></translation> + <translation>Vis programnebrudsdata</translation> </message> <message> <location filename="../pages/page_session_options.ui" line="74"/> <source>Change User Icon</source> - <translation type="unfinished">Skift Bruger Ikon</translation> + <translation>Skift brugerikon</translation> </message> <message> <location filename="../pages/page_session_options.ui" line="112"/> <source>Time Format:</source> - <translation type="unfinished">Tidsformat:</translation> + <translation>Klokkeslætformat:</translation> </message> <message> <location filename="../pages/page_session_options.ui" line="124"/> <location filename="../pages/page_session_options.ui" line="168"/> <source>View format codes</source> - <translation type="unfinished">Vis format koder</translation> + <translation>Vis formatkoder</translation> </message> <message> <location filename="../pages/page_session_options.ui" line="139"/> <location filename="../pages/page_session_options.ui" line="183"/> <source>Sample:</source> - <translation type="unfinished">Prøve:</translation> + <translation>Prøve:</translation> </message> <message> <location filename="../pages/page_session_options.ui" line="156"/> <source>Date Format:</source> - <translation type="unfinished">Datoformat:</translation> + <translation>Datoformat:</translation> </message> <message> <location filename="../pages/page_session_options.ui" line="203"/> <source>Display Format</source> - <translation type="unfinished"></translation> + <translation>Vis format</translation> </message> <message> <location filename="../pages/page_session_options.ui" line="234"/> <source>Reset Desktop Settings</source> - <translation type="unfinished"></translation> + <translation>Nulstil skrivebordsindstillinger</translation> </message> <message> <location filename="../pages/page_session_options.ui" line="253"/> <source>Return to system defaults</source> - <translation type="unfinished"></translation> + <translation>Vend tilbage til systemstandarder</translation> </message> <message> <location filename="../pages/page_session_options.ui" line="260"/> <source>Return to Lumina defaults</source> - <translation type="unfinished"></translation> + <translation>Vend tilbage til Luminas standarder</translation> </message> <message> <location filename="../pages/page_session_options.cpp" line="19"/> <source>Time (Date as tooltip)</source> - <translation type="unfinished">Tid (Dato som værktøjstip)</translation> + <translation>Klokkeslæt (dato som værktøjstip)</translation> </message> <message> <location filename="../pages/page_session_options.cpp" line="20"/> <source>Date (Time as tooltip)</source> - <translation type="unfinished"></translation> + <translation>Dato (klokkeslæt som værktøjstip)</translation> </message> <message> <location filename="../pages/page_session_options.cpp" line="21"/> <source>Time first then Date</source> - <translation type="unfinished"></translation> + <translation>Først klokkeslæt, så dato</translation> </message> <message> <location filename="../pages/page_session_options.cpp" line="22"/> <source>Date first then Time</source> - <translation type="unfinished"></translation> + <translation>Først dato, så klokkeslæt</translation> </message> <message> <location filename="../pages/page_session_options.cpp" line="70"/> <source>Desktop Settings</source> - <translation type="unfinished"></translation> + <translation>Skrivebordsindstillinger</translation> </message> <message> <location filename="../pages/page_session_options.cpp" line="113"/> <source>Select an image</source> - <translation type="unfinished">Vælg et billede</translation> + <translation>Vælg et billede</translation> </message> <message> <location filename="../pages/page_session_options.cpp" line="114"/> <source>Images</source> - <translation type="unfinished">Billeder</translation> + <translation>Billeder</translation> </message> <message> <location filename="../pages/page_session_options.cpp" line="118"/> <source>Reset User Image</source> - <translation type="unfinished">Nulstil Bruger billede</translation> + <translation>Nulstil brugerbillede</translation> </message> <message> <location filename="../pages/page_session_options.cpp" line="118"/> <source>Would you like to reset the user image to the system default?</source> - <translation type="unfinished">Vil du gerne nulstille bruger billedet til system standard?</translation> + <translation>Vil du nulstille brugerbilledet til systemstandarden?</translation> </message> <message> <location filename="../pages/page_session_options.cpp" line="157"/> <source>Valid Time Codes:</source> - <translation type="unfinished">Gyldig tids koder:</translation> + <translation>Gyldige klokkeslætkoder:</translation> </message> <message> <location filename="../pages/page_session_options.cpp" line="158"/> <source>%1: Hour without leading zero (1)</source> - <translation type="unfinished"></translation> + <translation>%1: Klokkeslæt uden foranstillet nul (1)</translation> </message> <message> <location filename="../pages/page_session_options.cpp" line="159"/> <source>%1: Hour with leading zero (01)</source> - <translation type="unfinished"></translation> + <translation>%1: Klokkeslæt med foranstillet nul (01)</translation> </message> <message> <location filename="../pages/page_session_options.cpp" line="160"/> <source>%1: Minutes without leading zero (2)</source> - <translation type="unfinished"></translation> + <translation>%1: Minutter uden foranstillet nul (2)</translation> </message> <message> <location filename="../pages/page_session_options.cpp" line="161"/> <source>%1: Minutes with leading zero (02)</source> - <translation type="unfinished"></translation> + <translation>%1: Minutter med foranstillet nul (02)</translation> </message> <message> <location filename="../pages/page_session_options.cpp" line="162"/> <source>%1: Seconds without leading zero (3)</source> - <translation type="unfinished"></translation> + <translation>%1: Sekunder uden foranstillet nul (3)</translation> </message> <message> <location filename="../pages/page_session_options.cpp" line="163"/> <source>%1: Seconds with leading zero (03)</source> - <translation type="unfinished"></translation> + <translation>%1: Sekunder med foranstillet nul (03)</translation> </message> <message> <location filename="../pages/page_session_options.cpp" line="164"/> <source>%1: AM/PM (12-hour) clock (upper or lower case)</source> - <translation type="unfinished"></translation> + <translation>%1: AM/PM (12-timer) ur (store og små bogstaver)</translation> </message> <message> <location filename="../pages/page_session_options.cpp" line="165"/> <source>%1: Timezone</source> - <translation type="unfinished"></translation> + <translation>%1: Tidszone</translation> </message> <message> <location filename="../pages/page_session_options.cpp" line="166"/> <source>Time Codes</source> - <translation type="unfinished"></translation> + <translation>Klokkeslætkoder</translation> </message> <message> <location filename="../pages/page_session_options.cpp" line="180"/> <source>Valid Date Codes:</source> - <translation type="unfinished"></translation> + <translation>Gyldig datokodeks:</translation> </message> <message> <location filename="../pages/page_session_options.cpp" line="181"/> <source>%1: Numeric day without a leading zero (1)</source> - <translation type="unfinished"></translation> + <translation>%1: Numerisk dag uden foranstillede nul (1)</translation> </message> <message> <location filename="../pages/page_session_options.cpp" line="182"/> <source>%1: Numeric day with leading zero (01)</source> - <translation type="unfinished"></translation> + <translation>%1: Numerisk dag med foranstillede nul (01)</translation> </message> <message> <location filename="../pages/page_session_options.cpp" line="183"/> <source>%1: Day as abbreviation (localized)</source> - <translation type="unfinished"></translation> + <translation>%1: Dag som forkortelse (lokaliseret)</translation> </message> <message> <location filename="../pages/page_session_options.cpp" line="184"/> <source>%1: Day as full name (localized)</source> - <translation type="unfinished"></translation> + <translation>%1: Dag som fuldt navn (lokaliseret)</translation> </message> <message> <location filename="../pages/page_session_options.cpp" line="185"/> <source>%1: Numeric month without leading zero (2)</source> - <translation type="unfinished"></translation> + <translation>%1: Numerisk måned uden foranstillet nul (2)</translation> </message> <message> <location filename="../pages/page_session_options.cpp" line="186"/> <source>%1: Numeric month with leading zero (02)</source> - <translation type="unfinished"></translation> + <translation>%1: Numerisk måned med foranstillet nul (02)</translation> </message> <message> <location filename="../pages/page_session_options.cpp" line="187"/> <source>%1: Month as abbreviation (localized)</source> - <translation type="unfinished"></translation> + <translation>%1: Måned som forkortelse (lokaliseret)</translation> </message> <message> <location filename="../pages/page_session_options.cpp" line="188"/> <source>%1: Month as full name (localized)</source> - <translation type="unfinished"></translation> + <translation>%1: Måned som fuldt navn (lokaliseret)</translation> </message> <message> <location filename="../pages/page_session_options.cpp" line="189"/> <source>%1: Year as 2-digit number (15)</source> - <translation type="unfinished"></translation> + <translation>%1: År som 2-tegnstal (17)</translation> </message> <message> <location filename="../pages/page_session_options.cpp" line="190"/> <source>%1: Year as 4-digit number (2015)</source> - <translation type="unfinished"></translation> + <translation>%1: År som 4-tegnstal (2017)</translation> </message> <message> <location filename="../pages/page_session_options.cpp" line="191"/> <source>Text may be contained within single-quotes to ignore replacements</source> - <translation type="unfinished"></translation> + <translation>Tekst må være inden i enkelte anførselstegn for at ignorer erstatninger</translation> </message> <message> <location filename="../pages/page_session_options.cpp" line="192"/> <source>Date Codes</source> - <translation type="unfinished"></translation> + <translation>Datokoder</translation> </message> </context> <context> @@ -1825,78 +1828,78 @@ Skal den overskrives?</translation> <message> <location filename="../pages/page_theme.ui" line="14"/> <source>Form</source> - <translation type="unfinished">Form</translation> + <translation>Formular</translation> </message> <message> <location filename="../pages/page_theme.ui" line="36"/> <source>Desktop Theme</source> - <translation type="unfinished"></translation> + <translation>Skrivebordstema</translation> </message> <message> <location filename="../pages/page_theme.ui" line="42"/> <source>Font:</source> - <translation type="unfinished">Skrifttype:</translation> + <translation>Skrifttype:</translation> </message> <message> <location filename="../pages/page_theme.ui" line="56"/> <source>Font Size:</source> - <translation type="unfinished">Skriftstørrelse:</translation> + <translation>Skriftstørrelse:</translation> </message> <message> <location filename="../pages/page_theme.ui" line="63"/> <source> point</source> - <translation type="unfinished"> point</translation> + <translation> punkt</translation> </message> <message> <location filename="../pages/page_theme.ui" line="70"/> <source>Theme Template:</source> - <translation type="unfinished">Temaskabelon:</translation> + <translation>Temaskabelon:</translation> </message> <message> <location filename="../pages/page_theme.ui" line="86"/> <source>Create/Edit a theme template (Advanced)</source> - <translation type="unfinished">Opret/Rediger en tema skabelon (Avanceret)</translation> + <translation>Opret/rediger en temaskabelon (avanceret)</translation> </message> <message> <location filename="../pages/page_theme.ui" line="92"/> <location filename="../pages/page_theme.ui" line="126"/> <source>Edit</source> - <translation type="unfinished">Redigér</translation> + <translation>Rediger</translation> </message> <message> <location filename="../pages/page_theme.ui" line="104"/> <source>Color Scheme:</source> - <translation type="unfinished">Farveskema:</translation> + <translation>Farveskema:</translation> </message> <message> <location filename="../pages/page_theme.ui" line="120"/> <source>Create/Edit a color scheme</source> - <translation type="unfinished"></translation> + <translation>Opret/rediger et farveskema</translation> </message> <message> <location filename="../pages/page_theme.ui" line="138"/> <source>Icon Pack:</source> - <translation type="unfinished"></translation> + <translation>Ikonpakke:</translation> </message> <message> <location filename="../pages/page_theme.ui" line="148"/> <source>Mouse Cursors:</source> - <translation type="unfinished"></translation> + <translation>Musemarkører:</translation> </message> <message> <location filename="../pages/page_theme.ui" line="192"/> <source>Application Themes</source> - <translation type="unfinished"></translation> + <translation>Programtemaer</translation> </message> <message> <location filename="../pages/page_theme.ui" line="198"/> <source>Qt5 Theme Engine</source> - <translation type="unfinished"></translation> + <translation>Qt5-temamotor</translation> </message> <message> <location filename="../pages/page_theme.cpp" line="58"/> <source>Theme Settings</source> - <translation type="unfinished"></translation> + <translation>Temaindstillinger</translation> </message> <message> <location filename="../pages/page_theme.cpp" line="73"/> @@ -1904,7 +1907,7 @@ Skal den overskrives?</translation> <location filename="../pages/page_theme.cpp" line="173"/> <location filename="../pages/page_theme.cpp" line="199"/> <source>Local</source> - <translation type="unfinished"></translation> + <translation>Lokal</translation> </message> <message> <location filename="../pages/page_theme.cpp" line="80"/> @@ -1912,17 +1915,17 @@ Skal den overskrives?</translation> <location filename="../pages/page_theme.cpp" line="180"/> <location filename="../pages/page_theme.cpp" line="206"/> <source>System</source> - <translation type="unfinished"></translation> + <translation>System</translation> </message> <message> <location filename="../pages/page_theme.cpp" line="137"/> <source>None</source> - <translation type="unfinished"></translation> + <translation>Ingen</translation> </message> <message> <location filename="../pages/page_theme.cpp" line="138"/> <source>Manual Setting</source> - <translation type="unfinished"></translation> + <translation>Manuel indstilling</translation> </message> </context> <context> @@ -1930,150 +1933,150 @@ Skal den overskrives?</translation> <message> <location filename="../pages/page_wallpaper.ui" line="14"/> <source>Form</source> - <translation type="unfinished">Form</translation> + <translation>Formular</translation> </message> <message> <location filename="../pages/page_wallpaper.ui" line="90"/> <source>Single Background</source> - <translation type="unfinished">Enlig Baggrund</translation> + <translation>Enkel baggrund</translation> </message> <message> <location filename="../pages/page_wallpaper.ui" line="100"/> <source>Rotate Background</source> - <translation type="unfinished">Rotér Baggrund</translation> + <translation>Roter baggrund</translation> </message> <message> <location filename="../pages/page_wallpaper.ui" line="107"/> <source> Minutes</source> - <translation type="unfinished"> Minutter</translation> + <translation> Minutter</translation> </message> <message> <location filename="../pages/page_wallpaper.ui" line="110"/> <source>Every </source> - <translation type="unfinished">Hver </translation> + <translation>Hver </translation> </message> <message> <location filename="../pages/page_wallpaper.ui" line="133"/> <source>Layout:</source> - <translation type="unfinished">Layout:</translation> + <translation>Layout:</translation> </message> <message> <location filename="../pages/page_wallpaper.cpp" line="56"/> <source>Wallpaper Settings</source> - <translation type="unfinished"></translation> + <translation>Tapetindstillinger</translation> </message> <message> <location filename="../pages/page_wallpaper.cpp" line="66"/> <source>System Default</source> - <translation type="unfinished"></translation> + <translation>Systemstandard</translation> </message> <message> <location filename="../pages/page_wallpaper.cpp" line="67"/> <location filename="../pages/page_wallpaper.cpp" line="222"/> <source>Solid Color: %1</source> - <translation type="unfinished">Ensfarvet farve: %1</translation> + <translation>Ensfarvet farve: %1</translation> </message> <message> <location filename="../pages/page_wallpaper.cpp" line="78"/> <source>Screen Resolution:</source> - <translation type="unfinished"></translation> + <translation>Skræmopløsning:</translation> </message> <message> <location filename="../pages/page_wallpaper.cpp" line="100"/> <location filename="../pages/page_wallpaper.cpp" line="101"/> <source>Select Color</source> - <translation type="unfinished">Vælg farve</translation> + <translation>Vælg farve</translation> </message> <message> <location filename="../pages/page_wallpaper.cpp" line="120"/> <source>File(s)</source> - <translation type="unfinished">Fil(er)</translation> + <translation>Fil(er)</translation> </message> <message> <location filename="../pages/page_wallpaper.cpp" line="121"/> <source>Directory (Single)</source> - <translation type="unfinished">Mappe (Enkelt)</translation> + <translation>Mappe (enkel)</translation> </message> <message> <location filename="../pages/page_wallpaper.cpp" line="122"/> <source>Directory (Recursive)</source> - <translation type="unfinished"></translation> + <translation>Mappe (rekursiv)</translation> </message> <message> <location filename="../pages/page_wallpaper.cpp" line="123"/> <source>Solid Color</source> - <translation type="unfinished"></translation> + <translation>Solid farve</translation> </message> <message> <location filename="../pages/page_wallpaper.cpp" line="127"/> <source>Automatic</source> - <translation type="unfinished">Automatisk</translation> + <translation>Automatisk</translation> </message> <message> <location filename="../pages/page_wallpaper.cpp" line="128"/> <source>Fullscreen</source> - <translation type="unfinished"></translation> + <translation>Fuldskærm</translation> </message> <message> <location filename="../pages/page_wallpaper.cpp" line="129"/> <source>Fit screen</source> - <translation type="unfinished"></translation> + <translation>Tilpas skærm</translation> </message> <message> <location filename="../pages/page_wallpaper.cpp" line="130"/> <source>Tile</source> - <translation type="unfinished">Flise</translation> + <translation>Fliselæg</translation> </message> <message> <location filename="../pages/page_wallpaper.cpp" line="131"/> <source>Center</source> - <translation type="unfinished">Centrér</translation> + <translation>I midten</translation> </message> <message> <location filename="../pages/page_wallpaper.cpp" line="132"/> <source>Top Left</source> - <translation type="unfinished">Øverst til venstre</translation> + <translation>Øverst til venstre</translation> </message> <message> <location filename="../pages/page_wallpaper.cpp" line="133"/> <source>Top Right</source> - <translation type="unfinished">Øverst til højre</translation> + <translation>Øverst til højre</translation> </message> <message> <location filename="../pages/page_wallpaper.cpp" line="134"/> <source>Bottom Left</source> - <translation type="unfinished">Nederst til venstre</translation> + <translation>Nederst til venstre</translation> </message> <message> <location filename="../pages/page_wallpaper.cpp" line="135"/> <source>Bottom Right</source> - <translation type="unfinished">Nederst til højre</translation> + <translation>Nederst til højre</translation> </message> <message> <location filename="../pages/page_wallpaper.cpp" line="143"/> <source>No Background</source> - <translation type="unfinished"></translation> + <translation>Ingen baggrund</translation> </message> <message> <location filename="../pages/page_wallpaper.cpp" line="143"/> <source>(use system default)</source> - <translation type="unfinished"></translation> + <translation>(brug systemstandard)</translation> </message> <message> <location filename="../pages/page_wallpaper.cpp" line="163"/> <source>File does not exist</source> - <translation type="unfinished"></translation> + <translation>Fil findes ikke</translation> </message> <message> <location filename="../pages/page_wallpaper.cpp" line="203"/> <source>Find Background Image(s)</source> - <translation type="unfinished"></translation> + <translation>Find baggrundsbillede(r)</translation> </message> <message> <location filename="../pages/page_wallpaper.cpp" line="234"/> <location filename="../pages/page_wallpaper.cpp" line="259"/> <source>Find Background Image Directory</source> - <translation type="unfinished"></translation> + <translation>Find baggrudsbilledmappe</translation> </message> </context> </TS> diff --git a/src-qt5/core-utils/lumina-config/i18n/lumina-config_de.ts b/src-qt5/core-utils/lumina-config/i18n/lumina-config_de.ts index 7109453a..9d145f55 100644 --- a/src-qt5/core-utils/lumina-config/i18n/lumina-config_de.ts +++ b/src-qt5/core-utils/lumina-config/i18n/lumina-config_de.ts @@ -340,7 +340,7 @@ </message> <message> <location filename="../LPlugins.cpp" line="67"/> - <source>Start menu alternative focusing on the user's files, directories, and favorites.</source> + <source>Start menu alternative focusing on the user's files, directories, and favorites.</source> <translation>Startmenüalternative, die Benutzerdateien, Verzeichnisse und Lesezeichen fokussiert.</translation> </message> <message> @@ -531,12 +531,12 @@ <message> <location filename="../LPlugins.cpp" line="312"/> <source>Lock Session</source> - <translation type="unfinished"></translation> + <translation>Sitzung sperren</translation> </message> <message> <location filename="../LPlugins.cpp" line="313"/> <source>Lock the current desktop session</source> - <translation type="unfinished"></translation> + <translation>Aktuelle Arbeitsflächen-Sitzung sperren</translation> </message> <message> <location filename="../LPlugins.cpp" line="323"/> @@ -711,17 +711,17 @@ <message> <location filename="../pages/getPage.h" line="29"/> <source>Wallpaper</source> - <translation type="unfinished"></translation> + <translation>Hintergrundbild</translation> </message> <message> <location filename="../pages/getPage.h" line="30"/> <source>Theme</source> - <translation type="unfinished"></translation> + <translation>Thema</translation> </message> <message> <location filename="../pages/getPage.h" line="32"/> <source>Autostart</source> - <translation type="unfinished"></translation> + <translation>Autostart</translation> </message> <message> <location filename="../pages/getPage.h" line="33"/> @@ -761,27 +761,27 @@ <message> <location filename="../pages/getPage.h" line="36"/> <source>Desktop</source> - <translation type="unfinished"></translation> + <translation>Arbeitsfläche</translation> </message> <message> <location filename="../pages/getPage.h" line="37"/> <source>Panels</source> - <translation type="unfinished"></translation> + <translation>Leisten</translation> </message> <message> <location filename="../pages/getPage.h" line="38"/> <source>Menu</source> - <translation type="unfinished"></translation> + <translation>Menü</translation> </message> <message> <location filename="../pages/getPage.h" line="42"/> <source>Input Device Settings</source> - <translation type="unfinished"></translation> + <translation>Eingabegeräteeinstellungen</translation> </message> <message> <location filename="../pages/getPage.h" line="42"/> <source>Adjust keyboard and mouse devices</source> - <translation type="unfinished"></translation> + <translation>Tastatur und Mausgeräte anpassen</translation> </message> <message> <location filename="../pages/getPage.h" line="36"/> @@ -826,7 +826,7 @@ <message> <location filename="../pages/getPage.h" line="39"/> <source>Localization</source> - <translation type="unfinished"></translation> + <translation>Lokalisierung</translation> </message> <message> <location filename="../pages/getPage.h" line="40"/> @@ -1073,7 +1073,7 @@ <message> <location filename="../pages/page_compton.ui" line="39"/> <source>Only use compositing with GPU acceleration </source> - <translation type="unfinished"></translation> + <translation>Compositing nur mit GPU-Beschleunigung verwenden </translation> </message> <message> <location filename="../pages/page_compton.cpp" line="38"/> @@ -1253,12 +1253,12 @@ </message> <message> <location filename="../pages/page_fluxbox_keys.ui" line="244"/> - <source>"Mod1": Alt key -"Mod4": Windows/Mac key -"Control": Ctrl key</source> - <translation>"Mod1": Alt-Taste -"Mod4": Windows/Mac-Taste -"Steuerung": Strg-Taste</translation> + <source>"Mod1": Alt key +"Mod4": Windows/Mac key +"Control": Ctrl key</source> + <translation>"Mod1": Alt-Taste +"Mod4": Windows/Mac-Taste +"Steuerung": Strg-Taste</translation> </message> <message> <location filename="../pages/page_fluxbox_keys.cpp" line="71"/> @@ -1436,12 +1436,12 @@ <message> <location filename="../pages/page_interface_panels.ui" line="69"/> <source>Profile</source> - <translation type="unfinished"></translation> + <translation>Profil</translation> </message> <message> <location filename="../pages/page_interface_panels.ui" line="82"/> <source>Import</source> - <translation type="unfinished"></translation> + <translation>Import</translation> </message> <message> <location filename="../pages/page_interface_panels.cpp" line="52"/> @@ -1474,7 +1474,7 @@ <message> <location filename="../pages/page_main.cpp" line="61"/> <source>Desktop Defaults</source> - <translation type="unfinished"></translation> + <translation>Arbeitsflächen-Standardeinstellungen</translation> </message> <message> <location filename="../pages/page_main.cpp" line="65"/> @@ -1497,27 +1497,27 @@ <message> <location filename="../pages/page_mouse.cpp" line="53"/> <source>Input Device Settings</source> - <translation type="unfinished"></translation> + <translation>Eingabegeräteeinstellungen</translation> </message> <message> <location filename="../pages/page_mouse.cpp" line="81"/> <source>Mouse #%1</source> - <translation type="unfinished"></translation> + <translation>Maus #%1</translation> </message> <message> <location filename="../pages/page_mouse.cpp" line="85"/> <source>Keyboard #%1</source> - <translation type="unfinished"></translation> + <translation>Tastatur #%1</translation> </message> <message> <location filename="../pages/page_mouse.cpp" line="106"/> <source>Extension Device #%1</source> - <translation type="unfinished"></translation> + <translation>Erweiterungsgerät #%1</translation> </message> <message> <location filename="../pages/page_mouse.cpp" line="107"/> <source>Master Device</source> - <translation type="unfinished"></translation> + <translation>Hauptgerät</translation> </message> </context> <context> @@ -1613,7 +1613,7 @@ <message> <location filename="../pages/page_session_options.ui" line="65"/> <source>Show application crash data</source> - <translation type="unfinished"></translation> + <translation>Anwendungsabsturzdaten anzeigen</translation> </message> <message> <location filename="../pages/page_session_options.ui" line="74"/> @@ -1833,7 +1833,7 @@ <message> <location filename="../pages/page_theme.ui" line="36"/> <source>Desktop Theme</source> - <translation type="unfinished"></translation> + <translation>Arbeitsflächenthema</translation> </message> <message> <location filename="../pages/page_theme.ui" line="42"/> @@ -1889,7 +1889,7 @@ <message> <location filename="../pages/page_theme.ui" line="192"/> <source>Application Themes</source> - <translation type="unfinished"></translation> + <translation>Anwendungsthemen</translation> </message> <message> <location filename="../pages/page_theme.ui" line="198"/> @@ -1920,12 +1920,12 @@ <message> <location filename="../pages/page_theme.cpp" line="137"/> <source>None</source> - <translation type="unfinished"></translation> + <translation>Keine</translation> </message> <message> <location filename="../pages/page_theme.cpp" line="138"/> <source>Manual Setting</source> - <translation type="unfinished"></translation> + <translation>Manuelle Einstellung</translation> </message> </context> <context> diff --git a/src-qt5/core-utils/lumina-config/i18n/lumina-config_lt.ts b/src-qt5/core-utils/lumina-config/i18n/lumina-config_lt.ts index ddee957a..6e2c7388 100644 --- a/src-qt5/core-utils/lumina-config/i18n/lumina-config_lt.ts +++ b/src-qt5/core-utils/lumina-config/i18n/lumina-config_lt.ts @@ -776,12 +776,12 @@ <message> <location filename="../pages/getPage.h" line="42"/> <source>Input Device Settings</source> - <translation type="unfinished"></translation> + <translation>Įvesties įrenginio nustatymai</translation> </message> <message> <location filename="../pages/getPage.h" line="42"/> <source>Adjust keyboard and mouse devices</source> - <translation type="unfinished"></translation> + <translation>Derinti klaviatūros ir pelės įrenginius</translation> </message> <message> <location filename="../pages/getPage.h" line="36"/> @@ -826,7 +826,7 @@ <message> <location filename="../pages/getPage.h" line="39"/> <source>Localization</source> - <translation type="unfinished"></translation> + <translation>Lokalizavimas</translation> </message> <message> <location filename="../pages/getPage.h" line="40"/> @@ -1073,7 +1073,7 @@ <message> <location filename="../pages/page_compton.ui" line="39"/> <source>Only use compositing with GPU acceleration </source> - <translation type="unfinished"></translation> + <translation>Naudoti komponavimą tik su vaizdo plokštės (GPU) spartinimu </translation> </message> <message> <location filename="../pages/page_compton.cpp" line="38"/> @@ -1436,12 +1436,12 @@ <message> <location filename="../pages/page_interface_panels.ui" line="69"/> <source>Profile</source> - <translation type="unfinished"></translation> + <translation>Profilis</translation> </message> <message> <location filename="../pages/page_interface_panels.ui" line="82"/> <source>Import</source> - <translation type="unfinished"></translation> + <translation>Importuoti</translation> </message> <message> <location filename="../pages/page_interface_panels.cpp" line="52"/> @@ -1474,7 +1474,7 @@ <message> <location filename="../pages/page_main.cpp" line="61"/> <source>Desktop Defaults</source> - <translation type="unfinished"></translation> + <translation>Darbalaukio numatytosios reikšmės</translation> </message> <message> <location filename="../pages/page_main.cpp" line="65"/> @@ -1492,32 +1492,32 @@ <message> <location filename="../pages/page_mouse.ui" line="14"/> <source>Form</source> - <translation type="unfinished">Forma</translation> + <translation>Forma</translation> </message> <message> <location filename="../pages/page_mouse.cpp" line="53"/> <source>Input Device Settings</source> - <translation type="unfinished"></translation> + <translation>Įvesties įrenginio nustatymai</translation> </message> <message> <location filename="../pages/page_mouse.cpp" line="81"/> <source>Mouse #%1</source> - <translation type="unfinished"></translation> + <translation>Pelė #%1</translation> </message> <message> <location filename="../pages/page_mouse.cpp" line="85"/> <source>Keyboard #%1</source> - <translation type="unfinished"></translation> + <translation>Klaviatūra #%1</translation> </message> <message> <location filename="../pages/page_mouse.cpp" line="106"/> <source>Extension Device #%1</source> - <translation type="unfinished"></translation> + <translation>Plėtinio įrenginys #%1</translation> </message> <message> <location filename="../pages/page_mouse.cpp" line="107"/> <source>Master Device</source> - <translation type="unfinished"></translation> + <translation>Pagrindinis įrenginys</translation> </message> </context> <context> @@ -1613,7 +1613,7 @@ <message> <location filename="../pages/page_session_options.ui" line="65"/> <source>Show application crash data</source> - <translation type="unfinished"></translation> + <translation>Rodyti programų trikčių duomenis</translation> </message> <message> <location filename="../pages/page_session_options.ui" line="74"/> @@ -1833,7 +1833,7 @@ <message> <location filename="../pages/page_theme.ui" line="36"/> <source>Desktop Theme</source> - <translation type="unfinished"></translation> + <translation>Darbalaukio tema</translation> </message> <message> <location filename="../pages/page_theme.ui" line="42"/> @@ -1889,12 +1889,12 @@ <message> <location filename="../pages/page_theme.ui" line="192"/> <source>Application Themes</source> - <translation type="unfinished"></translation> + <translation>Programų tema</translation> </message> <message> <location filename="../pages/page_theme.ui" line="198"/> <source>Qt5 Theme Engine</source> - <translation type="unfinished"></translation> + <translation>Qt5 temų modulis</translation> </message> <message> <location filename="../pages/page_theme.cpp" line="58"/> @@ -1920,12 +1920,12 @@ <message> <location filename="../pages/page_theme.cpp" line="137"/> <source>None</source> - <translation type="unfinished"></translation> + <translation>Joks</translation> </message> <message> <location filename="../pages/page_theme.cpp" line="138"/> <source>Manual Setting</source> - <translation type="unfinished"></translation> + <translation>Rankinis nustatymas</translation> </message> </context> <context> diff --git a/src-qt5/core-utils/lumina-config/i18n/lumina-config_pl.ts b/src-qt5/core-utils/lumina-config/i18n/lumina-config_pl.ts index c52873a3..25fb461c 100644 --- a/src-qt5/core-utils/lumina-config/i18n/lumina-config_pl.ts +++ b/src-qt5/core-utils/lumina-config/i18n/lumina-config_pl.ts @@ -340,8 +340,8 @@ </message> <message> <location filename="../LPlugins.cpp" line="67"/> - <source>Start menu alternative focusing on the user's files, directories, and favorites.</source> - <translation type="unfinished"></translation> + <source>Start menu alternative focusing on the user's files, directories, and favorites.</source> + <translation>Alternatywny wygląd menu start, pokazujący pliki użytkownika, jego katalogi i ulubione elementy.</translation> </message> <message> <location filename="../LPlugins.cpp" line="73"/> @@ -351,7 +351,7 @@ <message> <location filename="../LPlugins.cpp" line="74"/> <source>Start menu alternative which focuses on launching applications.</source> - <translation type="unfinished"></translation> + <translation>Alternatywny wygląd menu start, ułatwiający szybkie uruchamianie aplikacji.</translation> </message> <message> <location filename="../LPlugins.cpp" line="94"/> @@ -371,12 +371,12 @@ <message> <location filename="../LPlugins.cpp" line="130"/> <source>View and control any running application windows (group similar windows under a single button).</source> - <translation type="unfinished"></translation> + <translation>Pogląd i kontrola każdego okna uruchomionej aplikacji (grupowanie tych samych aplikacji).</translation> </message> <message> <location filename="../LPlugins.cpp" line="137"/> <source>View and control any running application windows (every individual window has a button)</source> - <translation type="unfinished"></translation> + <translation>Pogląd i kontrola każdego okna uruchomionej aplikacji (nie grupuj aplikacji).</translation> </message> <message> <location filename="../LPlugins.cpp" line="150"/> @@ -500,12 +500,12 @@ <location filename="../LPlugins.cpp" line="178"/> <location filename="../LPlugins.cpp" line="305"/> <source>Menu Script</source> - <translation type="unfinished"></translation> + <translation>Menu Skrypt</translation> </message> <message> <location filename="../LPlugins.cpp" line="205"/> <source>Configurable area for automatically showing desktop icons</source> - <translation type="unfinished"></translation> + <translation>Konfigurowalny obszar do automatycznego pokazywania ikon pulpitu</translation> </message> <message> <location filename="../LPlugins.cpp" line="263"/> @@ -520,23 +520,23 @@ <message> <location filename="../LPlugins.cpp" line="292"/> <source>List the open, minimized, active, and urgent application windows</source> - <translation type="unfinished"></translation> + <translation>Lista otwartych, zminimalizowanych i aktywnych okien aplikacji</translation> </message> <message> <location filename="../LPlugins.cpp" line="179"/> <location filename="../LPlugins.cpp" line="306"/> <source>Run an external script to generate a user defined menu</source> - <translation type="unfinished"></translation> + <translation>Uruchom skrypt do generowania menu</translation> </message> <message> <location filename="../LPlugins.cpp" line="312"/> <source>Lock Session</source> - <translation type="unfinished"></translation> + <translation>Zablokuj sesję</translation> </message> <message> <location filename="../LPlugins.cpp" line="313"/> <source>Lock the current desktop session</source> - <translation type="unfinished"></translation> + <translation>Zablokuj sesję pulpitu</translation> </message> <message> <location filename="../LPlugins.cpp" line="323"/> @@ -711,17 +711,17 @@ <message> <location filename="../pages/getPage.h" line="29"/> <source>Wallpaper</source> - <translation type="unfinished"></translation> + <translation>Tapeta</translation> </message> <message> <location filename="../pages/getPage.h" line="30"/> <source>Theme</source> - <translation type="unfinished"></translation> + <translation>Motyw</translation> </message> <message> <location filename="../pages/getPage.h" line="32"/> <source>Autostart</source> - <translation type="unfinished"></translation> + <translation>Uruchamianie automatyczne</translation> </message> <message> <location filename="../pages/getPage.h" line="33"/> @@ -761,27 +761,27 @@ <message> <location filename="../pages/getPage.h" line="36"/> <source>Desktop</source> - <translation type="unfinished"></translation> + <translation>Pulpit</translation> </message> <message> <location filename="../pages/getPage.h" line="37"/> <source>Panels</source> - <translation type="unfinished"></translation> + <translation>Panele</translation> </message> <message> <location filename="../pages/getPage.h" line="38"/> <source>Menu</source> - <translation type="unfinished"></translation> + <translation>Menu</translation> </message> <message> <location filename="../pages/getPage.h" line="42"/> <source>Input Device Settings</source> - <translation type="unfinished"></translation> + <translation>Ustawienia urządzeń wejściowych</translation> </message> <message> <location filename="../pages/getPage.h" line="42"/> <source>Adjust keyboard and mouse devices</source> - <translation type="unfinished"></translation> + <translation>Skonfiguruj klawiaturę oraz mysz</translation> </message> <message> <location filename="../pages/getPage.h" line="36"/> @@ -791,7 +791,7 @@ <message> <location filename="../pages/getPage.h" line="36"/> <source>Change what icons or tools are embedded on the desktop</source> - <translation type="unfinished"></translation> + <translation>Ikony lub narzędzia wyświetlane na pulpicie</translation> </message> <message> <location filename="../pages/getPage.h" line="37"/> @@ -801,12 +801,12 @@ <message> <location filename="../pages/getPage.h" line="37"/> <source>Change any floating panels and what they show</source> - <translation type="unfinished"></translation> + <translation>Panele i ich zawartość</translation> </message> <message> <location filename="../pages/getPage.h" line="38"/> <source>Menu Plugins</source> - <translation type="unfinished"></translation> + <translation>Wtyczki menu</translation> </message> <message> <location filename="../pages/getPage.h" line="38"/> @@ -821,12 +821,12 @@ <message> <location filename="../pages/getPage.h" line="39"/> <source>Change the default locale settings for this user</source> - <translation type="unfinished"></translation> + <translation>Zmień ustawienia językowe tego użytkownika</translation> </message> <message> <location filename="../pages/getPage.h" line="39"/> <source>Localization</source> - <translation type="unfinished"></translation> + <translation>Ustawienia językowe</translation> </message> <message> <location filename="../pages/getPage.h" line="40"/> @@ -849,7 +849,7 @@ <message> <location filename="../ScriptDialog.ui" line="14"/> <source>Setup a JSON Menu Script</source> - <translation type="unfinished"></translation> + <translation>Ustaw skrypt menu używając JSON</translation> </message> <message> <location filename="../ScriptDialog.ui" line="25"/> @@ -885,7 +885,7 @@ <message> <location filename="../ScriptDialog.cpp" line="57"/> <source>Select a menu script</source> - <translation type="unfinished"></translation> + <translation>Wybierz skrypt menu</translation> </message> <message> <location filename="../ScriptDialog.cpp" line="64"/> @@ -945,7 +945,7 @@ <message> <location filename="../mainWindow.ui" line="14"/> <source>MainWindow</source> - <translation type="unfinished"></translation> + <translation type="unfinished">MainWindow</translation> </message> <message> <location filename="../mainWindow.ui" line="23"/> @@ -1068,17 +1068,17 @@ <message> <location filename="../pages/page_compton.ui" line="32"/> <source>Disable Compositing Manager (session restart required)</source> - <translation type="unfinished"></translation> + <translation>Wyłącz menedżera kompozycji (wymagany restart sesji)</translation> </message> <message> <location filename="../pages/page_compton.ui" line="39"/> <source>Only use compositing with GPU acceleration </source> - <translation type="unfinished"></translation> + <translation>Menedżer kompozycji tylko z akceleracją GPU. </translation> </message> <message> <location filename="../pages/page_compton.cpp" line="38"/> <source>Compositor Settings</source> - <translation type="unfinished"></translation> + <translation>Ustawienia menedżera kompozycji</translation> </message> </context> <context> @@ -1199,7 +1199,7 @@ <message> <location filename="../pages/page_fluxbox_keys.ui" line="14"/> <source>page_fluxbox_keys</source> - <translation type="unfinished"></translation> + <translation type="unfinished">page_fluxbox_keys</translation> </message> <message> <location filename="../pages/page_fluxbox_keys.ui" line="34"/> @@ -1249,16 +1249,16 @@ <message> <location filename="../pages/page_fluxbox_keys.ui" line="220"/> <source>View Syntax Codes</source> - <translation type="unfinished"></translation> + <translation>Pokaż składnię kodu</translation> </message> <message> <location filename="../pages/page_fluxbox_keys.ui" line="244"/> - <source>"Mod1": Alt key -"Mod4": Windows/Mac key -"Control": Ctrl key</source> - <translation>"Mod1": Alt key -"Mod4": Windows/Mac key -"Control": Ctrl key</translation> + <source>"Mod1": Alt key +"Mod4": Windows/Mac key +"Control": Ctrl key</source> + <translation>"Mod1": klawisz Alt +"Mod4": klawisz Windows/Mac +"Control": klawisz Ctrl</translation> </message> <message> <location filename="../pages/page_fluxbox_keys.cpp" line="71"/> @@ -1436,12 +1436,12 @@ <message> <location filename="../pages/page_interface_panels.ui" line="69"/> <source>Profile</source> - <translation type="unfinished"></translation> + <translation>Profil</translation> </message> <message> <location filename="../pages/page_interface_panels.ui" line="82"/> <source>Import</source> - <translation type="unfinished"></translation> + <translation>Import</translation> </message> <message> <location filename="../pages/page_interface_panels.cpp" line="52"/> @@ -1474,7 +1474,7 @@ <message> <location filename="../pages/page_main.cpp" line="61"/> <source>Desktop Defaults</source> - <translation type="unfinished"></translation> + <translation>Domyślne ustawienia pulpitu</translation> </message> <message> <location filename="../pages/page_main.cpp" line="65"/> @@ -1492,32 +1492,32 @@ <message> <location filename="../pages/page_mouse.ui" line="14"/> <source>Form</source> - <translation type="unfinished">Formularz</translation> + <translation>Formularz</translation> </message> <message> <location filename="../pages/page_mouse.cpp" line="53"/> <source>Input Device Settings</source> - <translation type="unfinished"></translation> + <translation>Ustawienia urządzeń wejścia</translation> </message> <message> <location filename="../pages/page_mouse.cpp" line="81"/> <source>Mouse #%1</source> - <translation type="unfinished"></translation> + <translation>Mysz #%1</translation> </message> <message> <location filename="../pages/page_mouse.cpp" line="85"/> <source>Keyboard #%1</source> - <translation type="unfinished"></translation> + <translation>Klawiatura #%1</translation> </message> <message> <location filename="../pages/page_mouse.cpp" line="106"/> <source>Extension Device #%1</source> - <translation type="unfinished"></translation> + <translation>Urządzenie rozszerzeń #%1</translation> </message> <message> <location filename="../pages/page_mouse.cpp" line="107"/> <source>Master Device</source> - <translation type="unfinished"></translation> + <translation>Urządzenie główne</translation> </message> </context> <context> @@ -1608,12 +1608,12 @@ <message> <location filename="../pages/page_session_options.ui" line="58"/> <source>Manage desktop app links</source> - <translation type="unfinished"></translation> + <translation>Zarządzaj skrótami aplikacji pulpitu</translation> </message> <message> <location filename="../pages/page_session_options.ui" line="65"/> <source>Show application crash data</source> - <translation type="unfinished"></translation> + <translation>Pokazuj informacje o błędach aplikacji</translation> </message> <message> <location filename="../pages/page_session_options.ui" line="74"/> @@ -1833,7 +1833,7 @@ <message> <location filename="../pages/page_theme.ui" line="36"/> <source>Desktop Theme</source> - <translation type="unfinished"></translation> + <translation>Motyw pulpitu</translation> </message> <message> <location filename="../pages/page_theme.ui" line="42"/> @@ -1889,12 +1889,12 @@ <message> <location filename="../pages/page_theme.ui" line="192"/> <source>Application Themes</source> - <translation type="unfinished"></translation> + <translation>Motyw aplikacji</translation> </message> <message> <location filename="../pages/page_theme.ui" line="198"/> <source>Qt5 Theme Engine</source> - <translation type="unfinished"></translation> + <translation>Silnik motywu Qt5</translation> </message> <message> <location filename="../pages/page_theme.cpp" line="58"/> @@ -1920,12 +1920,12 @@ <message> <location filename="../pages/page_theme.cpp" line="137"/> <source>None</source> - <translation type="unfinished"></translation> + <translation>Żaden</translation> </message> <message> <location filename="../pages/page_theme.cpp" line="138"/> <source>Manual Setting</source> - <translation type="unfinished"></translation> + <translation>Ustawienia manualne</translation> </message> </context> <context> diff --git a/src-qt5/core-utils/lumina-config/lumina-config.pro b/src-qt5/core-utils/lumina-config/lumina-config.pro index d690bcb3..5494393e 100644 --- a/src-qt5/core-utils/lumina-config/lumina-config.pro +++ b/src-qt5/core-utils/lumina-config/lumina-config.pro @@ -16,11 +16,11 @@ include(../../core/libLumina/LuminaXDG.pri) include(../../core/libLumina/LuminaSingleApplication.pri) include(../../core/libLumina/LuminaThemes.pri) -NO_XINPUT{ +#NO_XINPUT{ DEFINES+=NO_XINPUT -}else{ - include(../../core/libLumina/LInputDevice.pri) -} +#}else{ +# include(../../core/libLumina/LInputDevice.pri) +#} SOURCES += main.cpp \ mainWindow.cpp \ diff --git a/src-qt5/core-utils/lumina-config/pages/getPage.h b/src-qt5/core-utils/lumina-config/pages/getPage.h index c820283e..59dbcd2b 100644 --- a/src-qt5/core-utils/lumina-config/pages/getPage.h +++ b/src-qt5/core-utils/lumina-config/pages/getPage.h @@ -38,11 +38,6 @@ static QList<PAGEINFO> KnownPages(){ list << PageInfo("interface-menu", QObject::tr("Menu"), QObject::tr("Menu Plugins"), "format-list-unordered",QObject::tr("Change what options are shown on the desktop context menu"), "interface", QStringList(), QStringList() << "desktop" << "menu" << "plugins" << "shortcuts"); list << PageInfo("session-locale", QObject::tr("Localization"), QObject::tr("Locale Settings"), "preferences-desktop-locale",QObject::tr("Change the default locale settings for this user"), "user", QStringList(), QStringList() << "user"<<"locale"<<"language"<<"translations"); list << PageInfo("session-options", QObject::tr("General Options"), QObject::tr("User Settings"), "configure",QObject::tr("Change basic user settings such as time/date formats"), "user", QStringList(), QStringList() << "user"<<"settings"<<"time"<<"date"<<"icon"<<"reset"<<"numlock"<<"clock"); - #ifndef NO_XINPUT - if(LUtils::isValidBinary("xinput")){ - list << PageInfo("input-devices", QObject::tr("Input Device Settings"), QObject::tr("Input Device Settings"), "preferences-desktop-peripherals",QObject::tr("Adjust keyboard and mouse devices"), "user", QStringList(), QStringList() << "user"<<"speed"<<"accel"<<"mouse" << "keyboard"); - } - #endif // list << PageInfo("mouse-settings", QObject::tr("TrueOS Mouse Settings"), QObject::tr("TrueOS Mouse Settings"), "preferences-desktop-mouse",QObject::tr("Adjust mouse devices"), "user", QStringList(), QStringList() << "user"<<"speed"<<"accel"<<"mouse"); // list << PageInfo("bluetooth-settings", QObject::tr("TrueOS Bluetooth Settings"), QObject::tr("TrueOS Bluetooth Settings"), "preferences-desktop-bluetooth",QObject::tr("Setup Bluetooth devices"), "user", QStringList(), QStringList() << "user"<<"bluetooth"<<"audio"); @@ -64,10 +59,6 @@ static QList<PAGEINFO> KnownPages(){ #include "page_session_options.h" #include "page_compton.h" -#ifndef NO_XINPUT -#include "page_mouse.h" -#endif - // #include "page_mouse_trueos.h" // #include "page_bluetooth_trueos.h" @@ -86,9 +77,6 @@ static PageWidget* GetNewPage(QString id, QWidget *parent){ else if(id=="session-locale"){ page = new page_session_locale(parent); } else if(id=="session-options"){ page = new page_session_options(parent); } else if(id=="compton"){ page = new page_compton(parent); } - #ifndef NO_XINPUT - else if(id=="input-devices"){ page = new page_mouse(parent); } - #endif // else if(id=="mouse-settings"){ page = new page_mouse_trueos(parent); } // else if(id=="bluetooth-settings"){ page = new page_bluetooth_trueos(parent); } diff --git a/src-qt5/core-utils/lumina-config/pages/page_defaultapps.cpp b/src-qt5/core-utils/lumina-config/pages/page_defaultapps.cpp index b2a0896c..a21653c9 100644 --- a/src-qt5/core-utils/lumina-config/pages/page_defaultapps.cpp +++ b/src-qt5/core-utils/lumina-config/pages/page_defaultapps.cpp @@ -42,92 +42,23 @@ void page_defaultapps::LoadSettings(int){ emit HasPendingChanges(false); emit ChangePageTitle( tr("Default Applications") ); -//First load the lumina-open specific defaults - // - Default File Manager - QString tmp = LXDG::findDefaultAppForMime("inode/directory"); - if(tmp.isEmpty()){ tmp = "lumina-fm"; } - if( !QFile::exists(tmp) && !LUtils::isValidBinary(tmp) ){ qDebug() << "Invalid Settings:" << tmp; tmp.clear(); } //invalid settings - if(tmp.endsWith(".desktop")){ - XDGDesktop file(tmp); - if(file.type == XDGDesktop::BAD){ - //Might be a binary - just print out the raw "path" - ui->tool_default_filemanager->setText(tmp.section("/",-1)); - ui->tool_default_filemanager->setIcon( LXDG::findIcon("application-x-executable","") ); - }else{ - ui->tool_default_filemanager->setText(file.name); - ui->tool_default_filemanager->setIcon(LXDG::findIcon(file.icon,"") ); - } - }else if(tmp.isEmpty()){ - ui->tool_default_filemanager->setText(tr("Click to Set")); - ui->tool_default_filemanager->setIcon( LXDG::findIcon("system-help","") ); - }else{ - //Might be a binary - just print out the raw "path" - ui->tool_default_filemanager->setText(tmp.section("/",-1)); - ui->tool_default_filemanager->setIcon( LXDG::findIcon("application-x-executable","") ); - } + //First load the lumina-open specific defaults + // - Default File Manager + defaultFileManager = LXDG::findDefaultAppForMime("inode/directory"); + if(defaultFileManager.isEmpty()){ defaultFileManager = "lumina-fm"; } + updateDefaultButton(ui->tool_default_filemanager, defaultFileManager); + // - Default Terminal - tmp =LXDG::findDefaultAppForMime("application/terminal"); //sessionsettings->value("default-terminal", "xterm").toString(); - if( !QFile::exists(tmp) && !LUtils::isValidBinary(tmp) ){ qDebug() << "Invalid Settings:" << tmp; tmp.clear(); } //invalid settings - if(tmp.endsWith(".desktop")){ - XDGDesktop file(tmp); - if(file.type == XDGDesktop::BAD){ - //Might be a binary - just print out the raw "path" - ui->tool_default_terminal->setText(tmp.section("/",-1)); - ui->tool_default_terminal->setIcon( LXDG::findIcon("application-x-executable","") ); - }else{ - ui->tool_default_terminal->setText(file.name); - ui->tool_default_terminal->setIcon(LXDG::findIcon(file.icon,"") ); - } - }else if(tmp.isEmpty()){ - ui->tool_default_terminal->setText(tr("Click to Set")); - ui->tool_default_terminal->setIcon( LXDG::findIcon("system-help","") ); - }else{ - //Might be a binary - just print out the raw "path" - ui->tool_default_terminal->setText(tmp.section("/",-1)); - ui->tool_default_terminal->setIcon( LXDG::findIcon("application-x-executable","") ); - } + defaultTerminal = LXDG::findDefaultAppForMime("application/terminal"); //sessionsettings->value("default-terminal", "xterm").toString(); + updateDefaultButton(ui->tool_default_terminal, defaultTerminal); + // - Default Web Browser - tmp = LXDG::findDefaultAppForMime("x-scheme-handler/http"); //appsettings->value("default/webbrowser", "").toString(); - if( !QFile::exists(tmp) && !LUtils::isValidBinary(tmp) ){ qDebug() << "Invalid Settings:" << tmp; tmp.clear(); } //invalid settings - if(tmp.endsWith(".desktop")){ - XDGDesktop file(tmp); - if(file.type == XDGDesktop::BAD){ - //Might be a binary - just print out the raw "path" - ui->tool_default_webbrowser->setText(tmp.section("/",-1)); - ui->tool_default_webbrowser->setIcon( LXDG::findIcon("application-x-executable","") ); - }else{ - ui->tool_default_webbrowser->setText(file.name); - ui->tool_default_webbrowser->setIcon(LXDG::findIcon(file.icon,"") ); - } - }else if(tmp.isEmpty()){ - ui->tool_default_webbrowser->setText(tr("Click to Set")); - ui->tool_default_webbrowser->setIcon( LXDG::findIcon("system-help","") ); - }else{ - //Might be a binary - just print out the raw "path" - ui->tool_default_webbrowser->setText(tmp.section("/",-1)); - ui->tool_default_webbrowser->setIcon( LXDG::findIcon("application-x-executable","") ); - } + defaultBrowser = LXDG::findDefaultAppForMime("x-scheme-handler/http"); //appsettings->value("default/webbrowser", "").toString(); + updateDefaultButton(ui->tool_default_webbrowser, defaultBrowser); + // - Default Email Client - tmp = LXDG::findDefaultAppForMime("application/email"); //appsettings->value("default/email", "").toString(); - if( !QFile::exists(tmp) && !LUtils::isValidBinary(tmp) ){ qDebug() << "Invalid Settings:" << tmp; tmp.clear(); } //invalid settings - if(tmp.endsWith(".desktop")){ - XDGDesktop file(tmp); - if(file.type == XDGDesktop::BAD){ - //Might be a binary - just print out the raw "path" - ui->tool_default_email->setText(tmp.section("/",-1)); - ui->tool_default_email->setIcon( LXDG::findIcon("application-x-executable","") ); - }else{ - ui->tool_default_email->setText(file.name); - ui->tool_default_email->setIcon(LXDG::findIcon(file.icon,"") ); - } - }else if(tmp.isEmpty()){ - ui->tool_default_email->setText(tr("Click to Set")); - ui->tool_default_email->setIcon( LXDG::findIcon("system-help","") ); - }else{ - //Might be a binary - just print out the raw "path" - ui->tool_default_email->setText(tmp.section("/",-1)); - ui->tool_default_email->setIcon( LXDG::findIcon("application-x-executable","") ); - } + defaultEmail = LXDG::findDefaultAppForMime("application/email"); //appsettings->value("default/email", "").toString(); + updateDefaultButton(ui->tool_default_email, defaultEmail); //Now load the XDG mime defaults ui->tree_defaults->clear(); @@ -135,7 +66,7 @@ void page_defaultapps::LoadSettings(int){ //qDebug() << "Mime List:\n" << defMimeList.join("\n"); defMimeList.sort(); //sort by group/mime //Now fill the tree by group/mime - QTreeWidgetItem *group = new QTreeWidgetItem(0); //nothing at the moment + QTreeWidgetItem *group = nullptr; QString ccat; for(int i=0; i<defMimeList.length(); i++){ //Get the info from this entry @@ -145,37 +76,38 @@ void page_defaultapps::LoadSettings(int){ QString def = defMimeList[i].section("::::",2,2); QString comment = defMimeList[i].section("::::",3,50); //Now check if this is a new category - if(ccat!=cat){ - //New group - group = new QTreeWidgetItem(0); + if(group == nullptr || ccat!=cat){ + //New group + group = new QTreeWidgetItem(0); group->setText(0, cat); //add translations for known/common groups later - ui->tree_defaults->addTopLevelItem(group); - ccat = cat; + ui->tree_defaults->addTopLevelItem(group); + ccat = cat; } //Now create the entry QTreeWidgetItem *it = new QTreeWidgetItem(); - it->setWhatsThis(0,mime); // full mimetype - it->setText(0, QString(tr("%1 (%2)")).arg(mime.section("/",-1), extlist) ); - it->setText(2,comment); - it->setToolTip(0, comment); it->setToolTip(1,comment); - //Now load the default (if there is one) - it->setWhatsThis(1,def); //save for later - if(def.endsWith(".desktop")){ - XDGDesktop file(def); - if(file.type == XDGDesktop::BAD){ - //Might be a binary - just print out the raw "path" - it->setText(1,def.section("/",-1)); - it->setIcon(1, LXDG::findIcon("application-x-executable","") ); - }else{ - it->setText(1, file.name); - it->setIcon(1, LXDG::findIcon(file.icon,"") ); - } - }else if(!def.isEmpty()){ - //Binary/Other default - it->setText(1, def.section("/",-1)); - it->setIcon(1, LXDG::findIcon("application-x-executable","") ); + it->setWhatsThis(0,mime); // full mimetype + it->setText(0, QString(tr("%1 (%2)")).arg(mime.section("/",-1), extlist) ); + it->setText(2,comment); + it->setToolTip(0, comment); it->setToolTip(1,comment); + //Now load the default (if there is one) + it->setWhatsThis(1,def); //save for later + it->setData(1, Qt::UserRole, def); + if(def.endsWith(".desktop")){ + XDGDesktop file(def); + if(file.type == XDGDesktop::BAD){ + //Might be a binary - just print out the raw "path" + it->setText(1, def.section("/",-1)); + it->setIcon(1, LXDG::findIcon("application-x-executable","") ); + }else{ + it->setText(1, file.name); + it->setIcon(1, LXDG::findIcon(file.icon,"") ); } - group->addChild(it); + }else if(!def.isEmpty()){ + //Binary/Other default + it->setText(1, def.section("/",-1)); + it->setIcon(1, LXDG::findIcon("application-x-executable","") ); + } + group->addChild(it); } ui->tree_defaults->sortItems(0,Qt::AscendingOrder); @@ -194,8 +126,8 @@ void page_defaultapps::updateIcons(){ //================= // PRIVATE //================= -QString page_defaultapps::getSysApp(bool allowreset){ - AppDialog dlg(this); +QString page_defaultapps::getSysApp(bool allowreset, QString defaultPath){ + AppDialog dlg(this, defaultPath); dlg.allowReset(allowreset); dlg.exec(); if(dlg.appreset && allowreset){ @@ -206,6 +138,7 @@ QString page_defaultapps::getSysApp(bool allowreset){ } void page_defaultapps::updateDefaultButton(QToolButton *button, QString app){ + if( !QFile::exists(app) && !LUtils::isValidBinary(app) ){ qDebug() << "Invalid Settings:" << app; app.clear(); } //invalid settings if(app.endsWith(".desktop")){ XDGDesktop file(app); if(file.type == XDGDesktop::BAD){ @@ -231,10 +164,11 @@ void page_defaultapps::updateDefaultButton(QToolButton *button, QString app){ //================= void page_defaultapps::changeDefaultBrowser(){ //Prompt for the new app - QString app = getSysApp(true); - if(app.isEmpty()){ return; }//nothing selected - if(app=="reset"){ app.clear(); } + QString app = getSysApp(true, defaultBrowser); + if(app.isEmpty()){ return; }//nothing selected + if(app=="reset"){ app.clear(); } //save the new app setting and adjust the button appearance + defaultBrowser = app; LXDG::setDefaultAppForMime("x-scheme-handler/http", app.section("/",-1)); LXDG::setDefaultAppForMime("x-scheme-handler/https", app.section("/",-1)); updateDefaultButton(ui->tool_default_webbrowser, app); @@ -242,30 +176,33 @@ void page_defaultapps::changeDefaultBrowser(){ void page_defaultapps::changeDefaultEmail(){ //Prompt for the new app - QString app = getSysApp(true); - if(app.isEmpty()){ return; }//nothing selected - if(app=="reset"){ app.clear(); } + QString app = getSysApp(true, defaultEmail); + if(app.isEmpty()){ return; }//nothing selected + if(app=="reset"){ app.clear(); } //save the new app setting and adjust the button appearance + defaultEmail = app; LXDG::setDefaultAppForMime("application/email",app.section("/",-1)); updateDefaultButton(ui->tool_default_email, app); } void page_defaultapps::changeDefaultFileManager(){ //Prompt for the new app - QString app = getSysApp(true); - if(app.isEmpty()){ return; }//nothing selected - if(app=="reset"){ app = "lumina-fm"; } + QString app = getSysApp(true, defaultFileManager); + if(app.isEmpty()){ return; }//nothing selected + if(app=="reset"){ app = "lumina-fm"; } //save the new app setting and adjust the button appearance + defaultFileManager = app; LXDG::setDefaultAppForMime("inode/directory", app.section("/",-1)); updateDefaultButton(ui->tool_default_filemanager, app); } void page_defaultapps::changeDefaultTerminal(){ //Prompt for the new app - QString app = getSysApp(true); - if(app.isEmpty()){ return; }//nothing selected - if(app=="reset"){ app = "xterm"; } + QString app = getSysApp(true, defaultTerminal); + if(app.isEmpty()){ return; }//nothing selected + if(app=="reset"){ app = "xterm"; } //save the new app setting and adjust the button appearance + defaultTerminal = app; LXDG::setDefaultAppForMime("application/terminal", app.section("/",-1) ); updateDefaultButton(ui->tool_default_terminal, app); } @@ -292,14 +229,19 @@ void page_defaultapps::cleardefaultitem(){ void page_defaultapps::setdefaultitem(){ QTreeWidgetItem *it = ui->tree_defaults->currentItem(); + QString path; if(it==0){ return; } //no item selected QList<QTreeWidgetItem*> list; for(int i=0; i<it->childCount(); i++){ list << it->child(i); } - if(list.isEmpty()){ list << it; } //just do the current item + if(list.isEmpty()){ + //just do the current item + list << it; + path = it->data(1, Qt::UserRole).toString(); + } //Prompt for which application to use - QString app = getSysApp(false); //no "reset" option + QString app = getSysApp(false, path); //no "reset" option if(app.isEmpty()){ return; }//nothing selected //Now set the items for(int i=0; i<list.length(); i++){ @@ -310,6 +252,7 @@ void page_defaultapps::setdefaultitem(){ list[i]->setWhatsThis(1,app); //app path list[i]->setIcon(1,LXDG::findIcon(desk.icon,"")); //reset the icon list[i]->setText(1,desk.name); //reset the name + list[i]->setData(1, Qt::UserRole, app); } } diff --git a/src-qt5/core-utils/lumina-config/pages/page_defaultapps.h b/src-qt5/core-utils/lumina-config/pages/page_defaultapps.h index f80ea1ab..d8e2bcde 100644 --- a/src-qt5/core-utils/lumina-config/pages/page_defaultapps.h +++ b/src-qt5/core-utils/lumina-config/pages/page_defaultapps.h @@ -26,8 +26,12 @@ public slots: private: Ui::page_defaultapps *ui; + QString defaultBrowser; + QString defaultEmail; + QString defaultFileManager; + QString defaultTerminal; - QString getSysApp(bool allowreset); + QString getSysApp(bool allowreset, QString defaultPath = ""); void updateDefaultButton(QToolButton *button, QString app); diff --git a/src-qt5/core-utils/lumina-config/pages/page_interface_panels.cpp b/src-qt5/core-utils/lumina-config/pages/page_interface_panels.cpp index 827061af..3c355aa7 100644 --- a/src-qt5/core-utils/lumina-config/pages/page_interface_panels.cpp +++ b/src-qt5/core-utils/lumina-config/pages/page_interface_panels.cpp @@ -21,6 +21,13 @@ page_interface_panels::page_interface_panels(QWidget *parent) : PageWidget(paren connect(ui->tool_panels_add, SIGNAL(clicked()), this, SLOT(newPanel()) ); updateIcons(); setupProfiles(); + + //Create panels container + QHBoxLayout *panels_layout = new QHBoxLayout(); + panels_layout->setContentsMargins(0,0,0,0); + panels_layout->setAlignment(Qt::AlignLeft); + panels_layout->addStretch(); + ui->scroll_panels->widget()->setLayout(panels_layout); } page_interface_panels::~page_interface_panels(){ @@ -53,28 +60,30 @@ void page_interface_panels::LoadSettings(int screennum){ QString screenID = QApplication::screens().at(cscreen)->name(); QString DPrefix = "desktop-"+screenID+"/"; int panelnumber = settings->value(DPrefix+"panels",-1).toInt(); + QBoxLayout *panels_layout = static_cast<QHBoxLayout*>(ui->scroll_panels->widget()->layout()); -//First clean any current panels - for(int i=0; i<PANELS.length(); i++){ delete PANELS.takeAt(i); i--; } - //Now create new panels - if(ui->scroll_panels->widget()->layout()==0){ - ui->scroll_panels->widget()->setLayout( new QHBoxLayout() ); - ui->scroll_panels->widget()->layout()->setContentsMargins(0,0,0,0); + //Remove extra panels (if any) + for(int i=panelnumber; i<PANELS.length(); i++){ + PanelWidget *tmp = PANELS.takeAt(i); + delete tmp; + i--; } - ui->scroll_panels->widget()->layout()->setAlignment(Qt::AlignLeft); - //Clear anything left over in the layout - for(int i=0; i<ui->scroll_panels->widget()->layout()->count(); i++){ - delete ui->scroll_panels->widget()->layout()->takeAt(i); + + int current_count = panels_layout->count()-1; + + //Update current panels + for(int i=0; i<current_count; i++) { + PANELS[i]->LoadSettings(settings, cscreen, i); } - for(int i=0; i<panelnumber; i++){ + //Create new panels + for(int i=current_count; i<panelnumber; i++){ PanelWidget *tmp = new PanelWidget(ui->scroll_panels->widget(), this, PINFO); tmp->LoadSettings(settings, cscreen, i); PANELS << tmp; connect(tmp, SIGNAL(PanelChanged()), this, SLOT(panelValChanged()) ); connect(tmp, SIGNAL(PanelRemoved(int)), this, SLOT(removePanel(int)) ); - ui->scroll_panels->widget()->layout()->addWidget(tmp); + panels_layout->insertWidget(panels_layout->count()-1, tmp); } - static_cast<QHBoxLayout*>(ui->scroll_panels->widget()->layout())->addStretch(); QApplication::processEvents(); loading = false; diff --git a/src-qt5/core-utils/lumina-config/pages/page_mouse.cpp b/src-qt5/core-utils/lumina-config/pages/page_mouse.cpp deleted file mode 100644 index f4eebd0e..00000000 --- a/src-qt5/core-utils/lumina-config/pages/page_mouse.cpp +++ /dev/null @@ -1,217 +0,0 @@ -//=========================================== -// Lumina Desktop Source Code -// Copyright (c) 2016, Ken Moore -// Available under the 3-clause BSD license -// See the LICENSE file for full details -//=========================================== -#include "page_mouse.h" -#include "ui_page_mouse.h" -#include "getPage.h" - -#include <QSpinBox> -#include <QDoubleSpinBox> - -//========== -// PUBLIC -//========== -page_mouse::page_mouse(QWidget *parent) : PageWidget(parent), ui(new Ui::page_mouse()){ - ui->setupUi(this); - devices = LInput::listDevices(); - //DEBUG Code - /*qDebug() << "List Devices:"; - for(int i=0; i<devices.length(); i++){ - if(!devices[i]->isPointer()){ - ::free( devices.takeAt(i)); - i--; - }else{ - qDebug() << "Found Pointer:" << devices[i]->devNumber(); - qDebug() << " - isExtension:" << devices[i]->isExtension(); - QList<int> props = devices[i]->listProperties(); - qDebug() << " - Properties:"; - for(int j=0; j<props.length(); j++){ - qDebug() << " --" <<devices[i]->propertyName(props[j])+" ("+QString::number(props[j])+")" <<" = " << devices[i]->getPropertyValue(props[j]); - } - } - }*/ - generateUI(); -} - -page_mouse::~page_mouse(){ - for(int i=0; i<devices.length(); i++){ ::free(devices[i]); } -} - -//================ -// PUBLIC SLOTS -//================ -void page_mouse::SaveSettings(){ - - emit HasPendingChanges(false); -} - -void page_mouse::LoadSettings(int){ - emit HasPendingChanges(false); - emit ChangePageTitle( tr("Input Device Settings") ); - -} - -void page_mouse::updateIcons(){ - for(int i=0; i<ui->tabWidget->count(); i++){ - ui->tabWidget->setTabIcon( i, LXDG::findIcon( "input-"+ui->tabWidget->tabWhatsThis(i).section(":",0,0), "" ) ); - } -} - -//================= -// PRIVATE -//================= -void page_mouse::generateUI(){ - ui->tabWidget->clear(); //remove all tabs (just in case) - int mouse = 1; - int keyboard = 1; - qDebug() << "Devices Found:" << devices.length(); - for(int i=0; i<devices.length(); i++){ - QTreeWidget *tree = 0; - if(!devices[i]->isExtension() || devices[i]->isPointer()){ - if(devices[i]->isPointer() && devices[i]->listProperties().count() <4){ continue; } //filter out all the trivial/static mouse devices - //Make a new tab for this device - tree = new QTreeWidget(this); - tree->setHeaderHidden(true); - tree->setColumnCount(2); - connect(tree, SIGNAL(itemActivated(QTreeWidgetItem*, int)), this, SLOT(itemClicked(QTreeWidgetItem*,int)) ); - if(devices[i]->isPointer()){ - int tab = ui->tabWidget->addTab(tree, LXDG::findIcon("input-mouse",""), QString(tr("Mouse #%1")).arg(QString::number(mouse)) ); - ui->tabWidget->setTabWhatsThis(tab, "mouse:"+QString::number(devices[i]->devNumber())); - mouse++; - }else{ - int tab = ui->tabWidget->addTab(tree, LXDG::findIcon("input-keyboard",""), QString(tr("Keyboard #%1")).arg(QString::number(keyboard)) ); - ui->tabWidget->setTabWhatsThis(tab, "keyboard:"+QString::number(devices[i]->devNumber()) ); - keyboard++; - } - }else{ - //Find the associated tab for this extension device - int tab = 0; - QString type = devices[i]->isPointer() ? "mouse" : "keyboard"; - int num = devices[i]->devNumber(); - for(int t=ui->tabWidget->count()-1; t>0; t--){ - if(ui->tabWidget->tabWhatsThis(t).startsWith(type) && ui->tabWidget->tabWhatsThis(t).section(":",-1).toInt() < num ){ tab = t; break; } - } - tree = static_cast<QTreeWidget*>( ui->tabWidget->widget(tab) ); - } - if(tree!=0){ populateDeviceTree(tree, devices[i]); } - } -} - -void page_mouse::populateDeviceTree(QTreeWidget *tree, LInputDevice *device){ - QTreeWidgetItem *top = new QTreeWidgetItem(tree); - if(device->isExtension()){ - top->setText( 0, QString(tr("Extension Device #%1")).arg(QString::number(tree->topLevelItemCount())) ); - }else{ top->setText(0, tr("Master Device")); } - top->setWhatsThis(0, QString(device->isPointer() ? "mouse" : "keyboard")+":"+QString::number(device->devNumber()) ); //save this for later - top->setFirstColumnSpanned(true); - top->setExpanded(true); - tree->addTopLevelItem(top); - //Now add all the child properties to this item - QList<int> props = device->listProperties(); - for(int i=0; i<props.length(); i++){ - if(device->propertyName(props[i]).toLower().contains("matrix")){ continue; } //skip this one - can not change from UI and most people will never want to anyway - QTreeWidgetItem *tmp = new QTreeWidgetItem(top); - tmp->setWhatsThis(0, QString::number(props[i]) ); - tmp->setText(0, device->propertyName(props[i])); - top->addChild(tmp); - populateDeviceItemValue(tree, tmp, device->getPropertyValue(props[i]), QString::number(device->devNumber())+":"+QString::number(props[i]) ); - } - //Clean up the tree widget as needed - top->sortChildren(0, Qt::AscendingOrder); - tree->resizeColumnToContents(0); -} - -void page_mouse::populateDeviceItemValue(QTreeWidget *tree, QTreeWidgetItem *it, QVariant value, QString id){ - if(value.type()==QVariant::Int){ - //Could be a boolian - check the name for known "enable" states - if(value.toInt() < 2 && (it->text(0).toLower().contains("enable") || it->text(0).toLower().contains("emulation") || it->text(0)==("XTEST Device") ) ){ - //Just use a checkable column within the item - bool enabled = (value.toInt()==1); - it->setText(1,""); - it->setWhatsThis(1, "bool:"+id); - it->setCheckState(1, enabled ? Qt::Checked : Qt::Unchecked); - }else{ - //Use a QSpinBox - QSpinBox *box = new QSpinBox(); - box->setRange(0,100); - box->setValue( value.toInt() ); - box->setWhatsThis("int:"+id); - tree->setItemWidget(it, 1, box); - connect(box, SIGNAL(valueChanged(int)), this, SLOT(valueChanged()) ); - } - }else if(value.type()==QVariant::Double){ - //Use a QDoubleSpinBox - QDoubleSpinBox *box = new QDoubleSpinBox(); - box->setRange(0,1000); - box->setValue( value.toInt() ); - box->setWhatsThis("double:"+id); - tree->setItemWidget(it, 1, box); - connect(box, SIGNAL(valueChanged(double)), this, SLOT(valueChanged()) ); - - }else if(value.canConvert< QList<QVariant> >()){ - //Not Modifiable - just use the label in the item - QList<QVariant> list = value.toList(); - QStringList txtList; - for(int i=0; i<list.length(); i++){ txtList << list[i].toString(); } - it->setText(1, txtList.join(", ") ); - it->setToolTip(1, txtList.join(", ")); - }else if( value.canConvert<QString>() ){ - //Not Modifiable - just use the label in the item - it->setText(1, value.toString()); - } -} -//================= -// PRIVATE SLOTS -//================= -void page_mouse::valueChanged(){ - //Now get the currently focused widget - QWidget *foc = this->focusWidget(); - if(foc==0){ return; } - //qDebug() << "Focus Widget:" << foc->whatsThis(); - //Now pull out the value and device/property numbers - unsigned int dev = foc->whatsThis().section(":",1,1).toInt(); - int prop = foc->whatsThis().section(":",2,2).toInt(); - QVariant value; - if(foc->whatsThis().startsWith("int:")){ value.setValue( static_cast<QSpinBox*>(foc)->value() ); } - else if(foc->whatsThis().startsWith("double:")){ value.setValue( static_cast<QDoubleSpinBox*>(foc)->value() ); } - //Now change the property for the device - qDebug() << " - Device:" <<dev << "prop:" << prop << "value:" << value; - for(int i=0; i<devices.length(); i++){ - if(devices[i]->devNumber() == dev){ - bool ok = devices[i]->setPropertyValue(prop, value); - if(ok){ foc->setStyleSheet(""); } - else{ foc->setStyleSheet("background: red"); } - //qDebug() << " - Changed property:" << (ok ? "success" : "failure"); - break; - } - } -} - -void page_mouse::itemClicked(QTreeWidgetItem *it, int col){ - if(col!=1){ return; } //only care about value changes - if(it->whatsThis(1).isEmpty()){ return; }//not a checkable item - qDebug() << "item Clicked:" << it->whatsThis(1) << it->text(0); - //Now pull out the value and device/property numbers - unsigned int dev = it->whatsThis(1).section(":",1,1).toInt(); - int prop = it->whatsThis(1).section(":",2,2).toInt(); - QVariant value( (it->checkState(1)==Qt::Checked) ? 1 : 0 ); - //Now change the property for the device - qDebug() << " - Device:" <<dev << "prop:" << prop << "value:" << value; - for(int i=0; i<devices.length(); i++){ - if(devices[i]->devNumber() == dev){ - //Since this "clicked" signal can get sent out even if the value has not changed, go ahead and make sure we have a different value first - QVariant current = devices[i]->getPropertyValue(prop); - //qDebug() << " - Current Value:" << current; - if(value.toInt()!=current.toInt()){ - bool ok = devices[i]->setPropertyValue(prop, value); - //if(ok){ foc->setStyleSheet(""); } - //else{ foc->setStyleSheet("background: red"); } - qDebug() << " - Changed property:" << (ok ? "success" : "failure"); - } - break; - } - } -} diff --git a/src-qt5/core-utils/lumina-config/pages/page_mouse.h b/src-qt5/core-utils/lumina-config/pages/page_mouse.h deleted file mode 100644 index 5409a9c2..00000000 --- a/src-qt5/core-utils/lumina-config/pages/page_mouse.h +++ /dev/null @@ -1,43 +0,0 @@ -//=========================================== -// Lumina Desktop Source Code -// Copyright (c) 2016, Ken Moore -// Available under the 3-clause BSD license -// See the LICENSE file for full details -//=========================================== -#ifndef _LUMINA_CONFIG_PAGE_MOUSE_H -#define _LUMINA_CONFIG_PAGE_MOUSE_H -#include "../globals.h" -#include "PageWidget.h" - -#include <LInputDevice.h> -#include <QTreeWidgetItem> - -namespace Ui{ - class page_mouse; -}; - -class page_mouse : public PageWidget{ - Q_OBJECT -public: - page_mouse(QWidget *parent); - ~page_mouse(); - -public slots: - void SaveSettings(); - void LoadSettings(int screennum); - void updateIcons(); - -private: - Ui::page_mouse *ui; - QList<LInputDevice*> devices; - - void generateUI(); - void populateDeviceTree(QTreeWidget *tree, LInputDevice *device); - void populateDeviceItemValue(QTreeWidget *tree, QTreeWidgetItem *it, QVariant value, QString id); - -private slots: - void valueChanged(); - void itemClicked(QTreeWidgetItem*, int); - -}; -#endif diff --git a/src-qt5/core-utils/lumina-config/pages/page_mouse.ui b/src-qt5/core-utils/lumina-config/pages/page_mouse.ui deleted file mode 100644 index a6c2e53f..00000000 --- a/src-qt5/core-utils/lumina-config/pages/page_mouse.ui +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>page_mouse</class> - <widget class="QWidget" name="page_mouse"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>400</width> - <height>300</height> - </rect> - </property> - <property name="windowTitle"> - <string>Form</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <widget class="QTabWidget" name="tabWidget"> - <property name="iconSize"> - <size> - <width>32</width> - <height>32</height> - </size> - </property> - </widget> - </item> - </layout> - </widget> - <resources/> - <connections/> -</ui> diff --git a/src-qt5/core-utils/lumina-config/pages/pages.pri b/src-qt5/core-utils/lumina-config/pages/pages.pri index 0ee5d561..89b9b010 100644 --- a/src-qt5/core-utils/lumina-config/pages/pages.pri +++ b/src-qt5/core-utils/lumina-config/pages/pages.pri @@ -51,9 +51,3 @@ FORMS += $${PWD}/page_main.ui \ $${PWD}/page_compton.ui # $${PWD}/page_bluetooth_trueos.ui # $${PWD}/page_mouse_trueos.ui - -!NO_XINPUT{ - HEADERS += $${PWD}/page_mouse.h - SOURCES += $${PWD}/page_mouse.cpp - FORMS += $${PWD}/page_mouse.ui -} diff --git a/src-qt5/core-utils/lumina-search/i18n/lumina-search_da.ts b/src-qt5/core-utils/lumina-search/i18n/lumina-search_da.ts index cdf95b44..2c750640 100644 --- a/src-qt5/core-utils/lumina-search/i18n/lumina-search_da.ts +++ b/src-qt5/core-utils/lumina-search/i18n/lumina-search_da.ts @@ -74,12 +74,12 @@ <message> <location filename="../MainUI.ui" line="88"/> <source>Close</source> - <translation>Afslut</translation> + <translation>Luk</translation> </message> <message> <location filename="../MainUI.ui" line="108"/> <source>Launch Item</source> - <translation>Startenhed</translation> + <translation>Start post</translation> </message> <message> <location filename="../MainUI.ui" line="119"/> @@ -149,7 +149,7 @@ <message> <location filename="../Worker.cpp" line="112"/> <source>Search Finished</source> - <translation>Søgning afsluttet</translation> + <translation>Søgning gennemført</translation> </message> </context> </TS> diff --git a/src-qt5/core/libLumina/ExternalProcess.h b/src-qt5/core/libLumina/ExternalProcess.h index 1325247f..8329c361 100644 --- a/src-qt5/core/libLumina/ExternalProcess.h +++ b/src-qt5/core/libLumina/ExternalProcess.h @@ -13,17 +13,40 @@ #include <QProcess> #include <QString> +#include <QTimer> +#include <QApplication> class ExternalProcess : public QProcess{ Q_OBJECT +private: + bool cursorRestored; + private slots: + void resetCursor(){ + if(!cursorRestored){ + QApplication::restoreOverrideCursor(); + cursorRestored = true; + } + } + void processStarting(){ + if(!cursorRestored){ + QApplication::setOverrideCursor( QCursor(Qt::WaitCursor) ); + QTimer::singleShot(15000, this, SLOT(resetCursor()) ); + } + } void processFinished(){ + if(!cursorRestored){ + QApplication::restoreOverrideCursor(); + cursorRestored = true; + } //Clean up this object this->deleteLater(); } + public: - ExternalProcess(QString logfile = "") : QProcess(){ + ExternalProcess(QString logfile = "", bool manageCursors = true) : QProcess(){ this->setProcessChannelMode(QProcess::MergedChannels); + cursorRestored = !manageCursors; if(logfile.isEmpty()){ this->setStandardOutputFile(QProcess::nullDevice()); }else{ @@ -32,6 +55,7 @@ public: //Setup the connection for automatic cleanup connect(this, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(processFinished()) ); } + ~ExternalProcess(){ /*if(this->state() == QProcess::Running){ this->detach(); //about to close down the QProcess - detach the other program so it can continue functioning normally. diff --git a/src-qt5/core/libLumina/LuminaRandR-X11.cpp b/src-qt5/core/libLumina/LuminaRandR-X11.cpp new file mode 100644 index 00000000..85251b64 --- /dev/null +++ b/src-qt5/core/libLumina/LuminaRandR-X11.cpp @@ -0,0 +1,206 @@ +//=========================================== +// Lumina-DE source code +// Copyright (c) 2017, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +#include "LuminaRandR.h" + +#include "xcb/randr.h" +#include "xcb/xcb_atom.h" + +#include <QDebug> +#include <QX11Info> + +static QString atomToName(xcb_atom_t atom){ + xcb_get_atom_name_reply_t *nreply = xcb_get_atom_name_reply(QX11Info::connection(), xcb_get_atom_name_unchecked(QX11Info::connection(), atom), NULL); + QString name = QString::fromLocal8Bit(xcb_get_atom_name_name(nreply), xcb_get_atom_name_name_length(nreply)); + free(nreply); + return name; +}; + +//More efficient method for converting lots of atoms to strings +static QStringList atomsToNames(xcb_atom_t *atoms, unsigned int num){ + //qDebug() << "atomsToNames:" << num; + QList< xcb_get_atom_name_cookie_t > cookies; + //qDebug() << " - Get cookies"; + for(unsigned int i=0; i<num; i++){ cookies << xcb_get_atom_name_unchecked(QX11Info::connection(), atoms[i]); } + QStringList names; + //qDebug() << " - Get names"; + for(int i=0; i<cookies.length(); i++){ + xcb_get_atom_name_reply_t *nreply = xcb_get_atom_name_reply(QX11Info::connection(), cookies[i], NULL); + if(nreply==0){ continue; } + names << QString::fromLocal8Bit(xcb_get_atom_name_name(nreply), xcb_get_atom_name_name_length(nreply)); + free(nreply); + } + return names; +}; + +class OutputDevice::p_objects{ +public: + xcb_atom_t monitor_atom; + QList<xcb_randr_output_t> outputs; //the actual output devices used by the monitor + +}; + +//Global Listing of Devices +QList<OutputDevice> OutputDevice::availableMonitors(){ + QList<OutputDevice> list; + //Get the list of monitors + xcb_randr_get_monitors_cookie_t cookie = xcb_randr_get_monitors_unchecked(QX11Info::connection(), QX11Info::appRootWindow(), 1); + xcb_randr_get_monitors_reply_t *reply = xcb_randr_get_monitors_reply(QX11Info::connection(), cookie, NULL); + if(reply==0){ + qDebug() << "Could not get monitor list"; + return list; + } + xcb_randr_monitor_info_iterator_t iter = xcb_randr_get_monitors_monitors_iterator(reply); + qDebug() << "Number of Monitors:" << xcb_randr_get_monitors_monitors_length(reply); + while(iter.rem>0){ + qDebug() << "Found Monitor:"; + //qDebug() << " Index:" << iter.index << "Rem:" << iter.rem; + QString name = atomToName(iter.data->name); + /*xcb_get_atom_name_reply_t *nreply = xcb_get_atom_name_reply(QX11Info::connection(), xcb_get_atom_name_unchecked(QX11Info::connection(), iter.data->name), NULL); + QString name = QString::fromLocal8Bit(xcb_get_atom_name_name(nreply), xcb_get_atom_name_name_length(nreply)); + free(nreply);*/ + + qDebug() << " - Name:" << iter.data->name << name; + qDebug() << " - Primary:" << (iter.data->primary == 1); + qDebug() << " - Automatic:" << (iter.data->automatic == 1); + qDebug() << " - nOutput:" << iter.data->nOutput; + qDebug() << " - Geometry:" << QRect(iter.data->x, iter.data->y, iter.data->width, iter.data->height); + qDebug() << " - Physical Size (mm):" << iter.data->width_in_millimeters << "x" << iter.data->height_in_millimeters; + qDebug() << " - Number of outputs:" << xcb_randr_monitor_info_outputs_length(iter.data); + xcb_randr_monitor_info_next(&iter); + } + + //Free up any objects we are done with + free(reply); + //Return the list + return list; +} + +//FUNCTIONS (do not use directly - use the static list function instead) +OutputDevice::OutputDevice(){ + enabled = false; + p_obj = new p_objects(); + p_obj->monitor_atom = 0; +} + +OutputDevice::~OutputDevice(){ + +} + +//Modification +bool OutputDevice::setAsPrimary(){ + if(isPrimary){ return true; } + if( !p_obj->outputs.isEmpty() ){ + xcb_randr_set_output_primary (QX11Info::connection(), QX11Info::appRootWindow(), p_obj->outputs[0]); + isPrimary = true; + } + return isPrimary; +} + +bool OutputDevice::disable(){ + if(p_obj->monitor_atom!=0){ + xcb_randr_delete_monitor(QX11Info::connection(), QX11Info::appRootWindow(), p_obj->monitor_atom); + p_obj->monitor_atom = 0; + return true; + } + return false; +} + +void OutputDevice::enable(QRect geom){ + //if no geom provided, will add as the right-most screen at optimal resolution + if(p_obj->monitor_atom!=0){ return; } + qDebug() << "Enable Monitor:" << geom; + +} + +void OutputDevice::changeResolution(QSize){ + +} + +OutputDeviceList::OutputDeviceList(){ + xcb_randr_get_screen_resources_reply_t *reply = xcb_randr_get_screen_resources_reply(QX11Info::connection(), + xcb_randr_get_screen_resources_unchecked(QX11Info::connection(), QX11Info::appRootWindow()), + NULL); + int outputnum = xcb_randr_get_screen_resources_outputs_length(reply); + qDebug() << "Probing Screen Resources:"; + qDebug() << " - Number of Outputs:" << outputnum; + qDebug() << " - Number of CRTC's:" << xcb_randr_get_screen_resources_crtcs_length(reply); + int mode_len =xcb_randr_get_screen_resources_modes_length(reply); + qDebug() << " - Modes:" << mode_len; + for(int m=0; m<mode_len; m++){ + xcb_randr_mode_info_t mode = xcb_randr_get_screen_resources_modes(reply)[m]; + qDebug() << " -- Mode:" << mode.id; + qDebug() << " - Size:" << mode.width <<"x"<<mode.height; + } + //qDebug() << " -- " << atomsToNames( (xcb_atom_t*) xcb_randr_get_screen_resources_modes(reply), xcb_randr_get_screen_resources_modes_length(reply) ); + qDebug() << " - Names:" << xcb_randr_get_screen_resources_names_length(reply); + //qDebug() << " -- " << atomsToNames( (xcb_atom_t*) xcb_randr_get_screen_resources_names(reply), xcb_randr_get_screen_resources_names_length(reply)); + for(int i=0; i<outputnum; i++){ + xcb_randr_output_t output = xcb_randr_get_screen_resources_outputs(reply)[i]; + //Now display the info about this output + xcb_randr_get_output_info_reply_t *info = xcb_randr_get_output_info_reply(QX11Info::connection(), + xcb_randr_get_output_info_unchecked(QX11Info::connection(), output, QX11Info::appTime()), + NULL); + qDebug() << "==== Output Information #"+QString::number(i); + + //Modes + qDebug() << "Number of Modes:" << xcb_randr_get_output_info_modes_length(info); + + + //Clones + qDebug() << "Number of Clones:" << xcb_randr_get_output_info_clones_length(info); + + //Names + int name_len = xcb_randr_get_output_info_name_length(info); + qDebug() << "Names:" << atomsToNames( (xcb_atom_t*) xcb_randr_get_output_info_name(info), name_len); + for(int n=0; n<name_len; n++){ + QString name = atomToName( xcb_randr_get_output_info_name(info)[n] ); + qDebug() << " -- " << name; + } + + //Properties + xcb_randr_list_output_properties_reply_t *pinfo = xcb_randr_list_output_properties_reply(QX11Info::connection(), + xcb_randr_list_output_properties_unchecked(QX11Info::connection(), output), + NULL); + int pinfo_len = xcb_randr_list_output_properties_atoms_length(pinfo); + qDebug() << "Properties:" << pinfo_len; + for(int p=0; p<pinfo_len; p++){ + xcb_atom_t atom = xcb_randr_list_output_properties_atoms(pinfo)[p]; + //Property Name + QString name = atomToName(atom); + //Property Value + xcb_randr_query_output_property_reply_t *pvalue = xcb_randr_query_output_property_reply(QX11Info::connection(), + xcb_randr_query_output_property_unchecked(QX11Info::connection(), output, atom), + NULL); + QStringList values = atomsToNames ( (xcb_atom_t*) xcb_randr_query_output_property_valid_values(pvalue), xcb_randr_query_output_property_valid_values_length(pvalue) ); //need to read values + /*for(int v=0; v<xcb_randr_query_output_property_valid_values_length(pvalue); v++){ + //values << QString::number(xcb_randr_query_output_property_valid_values(pvalue)[v] ); + values << atomToName( xcb_randr_query_output_property_valid_values(pvalue)[v] ); + }*/ + free(pvalue); + qDebug() << " -- " << name << "=" << values; + + } + free(pinfo); + + free(info); + } + + free(reply); +} + +OutputDeviceList::~OutputDeviceList(){ + +} + +//Simplification functions for dealing with multiple monitors +void OutputDeviceList::setPrimaryMonitor(QString id){ + +} + +void OutputDeviceList::disableMonitor(QString id){ + +} diff --git a/src-qt5/core/libLumina/LuminaRandR.cpp b/src-qt5/core/libLumina/LuminaRandR.cpp deleted file mode 100644 index eefc5aa8..00000000 --- a/src-qt5/core/libLumina/LuminaRandR.cpp +++ /dev/null @@ -1 +0,0 @@ -#include "LuminaRandR.h" diff --git a/src-qt5/core/libLumina/LuminaRandR.h b/src-qt5/core/libLumina/LuminaRandR.h index 3cdff651..448c676d 100644 --- a/src-qt5/core/libLumina/LuminaRandR.h +++ b/src-qt5/core/libLumina/LuminaRandR.h @@ -1,35 +1,70 @@ //=========================================== // Lumina-DE source code -// Copyright (c) 2016, Ken Moore +// Copyright (c) 2017, Ken Moore // Available under the 3-clause BSD license // See the LICENSE file for full details //=========================================== // This class governs all the xcb/randr interactions // and provides simpler Qt-based functions for use elsewhere //=========================================== +#ifndef _LUMINA_LIBRARY_RANDR_MONITORS_H +#define _LUMINA_LIBRARY_RANDR_MONITORS_H //Qt includes #include <QSize> +#include <QString> +#include <QPoint> +#include <QRect> +#include <QList> -#include "xcb/randr.h" -class outputDevice{ +class OutputDevice{ public: QString id; //output ID bool enabled; + bool isPrimary; //Monitor Geometry QPoint geom; //geometry of monitor within session //Monitor Resolution QSize cRes; //current resolution of the monitor (could be different from geom.size() if panning is enabled) QList<QSize> availRes; //available resolutions supported by the monitor //Refresh Rate - int cHz; //current refresh rate - QList<int> availHz; //available refresh rates + //int cHz; //current refresh rate + //QList<int> availHz; //available refresh rates //Expand this later to include: // panning (current/possible) // rotation (current/possible) - //FUNCTIONS - - //Modification + //Global Listing of Devices + static QList<OutputDevice> availableMonitors(); + + //FUNCTIONS (do not use directly - use the static list function instead) + OutputDevice(); + ~OutputDevice(); + + //Modification + bool setAsPrimary(); + bool disable(); + void enable(QRect geom = QRect()); //if no geom provided, will add as the right-most screen at optimal resolution + void changeResolution(QSize); + + //Now define a simple public_objects class so that each implementation + // has a storage container for placing private objects as needed + class p_objects; + p_objects* p_obj; +}; + +class OutputDeviceList : public QList<OutputDevice>{ +public: + OutputDeviceList(); + ~OutputDeviceList(); + + //Simplification functions for dealing with multiple monitors + void setPrimaryMonitor(QString id); + void disableMonitor(QString id); + //void enableMonitor(QString id, + +private: + }; +#endif diff --git a/src-qt5/core/libLumina/LuminaRandR.pri b/src-qt5/core/libLumina/LuminaRandR.pri new file mode 100644 index 00000000..0812819f --- /dev/null +++ b/src-qt5/core/libLumina/LuminaRandR.pri @@ -0,0 +1,12 @@ +#include("$${PWD}/../../OS-detect.pri") + +QT *= x11extras + +#X11/XCB includes +LIBS *= -lxcb -lxcb-randr +SOURCES *= $${PWD}/LuminaRandR-X11.cpp + +#General API/Header +HEADERS *= $${PWD}/LuminaRandR.h + +INCLUDEPATH *= ${PWD} diff --git a/src-qt5/core/libLumina/LuminaX11.cpp b/src-qt5/core/libLumina/LuminaX11.cpp index a8016460..e9eb4b7c 100644 --- a/src-qt5/core/libLumina/LuminaX11.cpp +++ b/src-qt5/core/libLumina/LuminaX11.cpp @@ -1470,7 +1470,17 @@ void LXCB::WM_ICCCM_SetProtocols(WId win, LXCB::ICCCM_PROTOCOLS flags){ // _NET_SUPPORTED (Root) void LXCB::WM_Set_Root_Supported(){ //NET_WM standards (ICCCM implied - no standard way to list those) - xcb_atom_t list[] = {}; + xcb_atom_t list[] = {EWMH._NET_WM_NAME, + EWMH._NET_WM_ICON, + EWMH._NET_WM_ICON_NAME, + EWMH._NET_WM_DESKTOP, + /*_NET_WINDOW_TYPE (and all the various types)*/ + EWMH._NET_WM_WINDOW_TYPE, EWMH._NET_WM_WINDOW_TYPE_DESKTOP, EWMH._NET_WM_WINDOW_TYPE_DOCK, + EWMH._NET_WM_WINDOW_TYPE_TOOLBAR, EWMH._NET_WM_WINDOW_TYPE_MENU, EWMH._NET_WM_WINDOW_TYPE_UTILITY, + EWMH._NET_WM_WINDOW_TYPE_SPLASH, EWMH._NET_WM_WINDOW_TYPE_DIALOG, EWMH._NET_WM_WINDOW_TYPE_NORMAL, + EWMH._NET_WM_WINDOW_TYPE_DROPDOWN_MENU, EWMH._NET_WM_WINDOW_TYPE_POPUP_MENU, EWMH._NET_WM_WINDOW_TYPE_TOOLTIP, + EWMH._NET_WM_WINDOW_TYPE_NOTIFICATION, EWMH._NET_WM_WINDOW_TYPE_COMBO, EWMH._NET_WM_WINDOW_TYPE_DND, + }; xcb_ewmh_set_supported(&EWMH, QX11Info::appScreen(), 0,list); } @@ -1609,7 +1619,23 @@ WId LXCB::WM_Get_Active_Window(){ } void LXCB::WM_Set_Active_Window(WId win){ - xcb_ewmh_set_active_window(&EWMH, QX11Info::appScreen(), win); + xcb_ewmh_set_active_window(&EWMH, QX11Info::appScreen(), win); + //Also send the active window a message to take input focus + //Send the window a WM_TAKE_FOCUS message + if(atoms.isEmpty()){ createWMAtoms(); } //need these atoms + xcb_client_message_event_t event; + event.response_type = XCB_CLIENT_MESSAGE; + event.format = 32; + event.window = win; + event.type = ATOMS[atoms.indexOf("WM_PROTOCOLS")]; + event.data.data32[0] = ATOMS[atoms.indexOf("WM_TAKE_FOCUS")]; + event.data.data32[1] = XCB_TIME_CURRENT_TIME; //CurrentTime; + event.data.data32[2] = 0; + event.data.data32[3] = 0; + event.data.data32[4] = 0; + + xcb_send_event(QX11Info::connection(), 0, win, XCB_EVENT_MASK_STRUCTURE_NOTIFY | XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT, (const char *) &event); + xcb_flush(QX11Info::connection()); } // _NET_WORKAREA diff --git a/src-qt5/core/libLumina/LuminaX11.h b/src-qt5/core/libLumina/LuminaX11.h index 2c741111..2f66ce06 100644 --- a/src-qt5/core/libLumina/LuminaX11.h +++ b/src-qt5/core/libLumina/LuminaX11.h @@ -23,7 +23,6 @@ #include <QObject> #include <QFlags> - #include <xcb/xcb_ewmh.h> //SYSTEM TRAY STANDARD DEFINITIONS @@ -67,6 +66,18 @@ public: || width_inc>=0 || height_inc>=0 || min_aspect_num>=0 || min_aspect_den>=0 || max_aspect_num>=0 || max_aspect_den>=0 \ || base_width>=0 || base_height>=0 || win_gravity>0 ); } + bool validMaxSize(){ + return (max_width>0 && max_width>=min_width) && (max_height>0 && max_height>=min_height); + } + bool validMinSize(){ + return (min_width>0 && min_height>0); + } + bool validBaseSize(){ + return (base_width>0 && base_height>0); + } + bool validSize(){ //only check this if the base sizes are invalid (this is the old spec and should not be used any more) + return (x>0 && y>0); + } }; //simple data structure for passing around the XRANDR information diff --git a/src-qt5/core/libLumina/LuminaXDG.cpp b/src-qt5/core/libLumina/LuminaXDG.cpp index d92285c5..38128fc7 100644 --- a/src-qt5/core/libLumina/LuminaXDG.cpp +++ b/src-qt5/core/libLumina/LuminaXDG.cpp @@ -127,9 +127,8 @@ void XDGDesktop::sync(){ else if(var=="Type" && insection){ if(val.toLower()=="application"){ type = XDGDesktop::APP; } else if(val.toLower()=="link"){ type = XDGDesktop::LINK; } - else if(val.toLower()=="dir"){ type = XDGDesktop::DIR; } + else if(val.toLower().startsWith("dir")){ type = XDGDesktop::DIR; } //older specs are "Dir", newer specs are "Directory" else{ type = XDGDesktop::BAD; } //Unknown type - //hasType = true; } } //end reading file file.clear(); //done with contents of file @@ -176,7 +175,7 @@ bool XDGDesktop::isValid(bool showAll){ //if(DEBUG && !ok){ qDebug() << " - Link with missing URL"; } break; case XDGDesktop::DIR: - ok = !path.isEmpty(); + ok = !path.isEmpty() && QFile::exists(path); //if(DEBUG && !ok){ qDebug() << " - Dir with missing path"; } break; default: diff --git a/src-qt5/core/libLumina/NativeWindow.cpp b/src-qt5/core/libLumina/NativeWindow.cpp new file mode 100644 index 00000000..bd42ecaa --- /dev/null +++ b/src-qt5/core/libLumina/NativeWindow.cpp @@ -0,0 +1,37 @@ +//=========================================== +// Lumina-DE source code +// Copyright (c) 2017, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +#include "NativeWindow.h" + +// === PUBLIC === +NativeWindow::NativeWindow(WId id) : QObject(){ + winid = id; + WIN = QWindow::fromWinId(winid); +} + +NativeWindow::~NativeWindow(){ + hash.clear(); + //WIN->deleteLater(); //This class only deals with Native windows which were created outside the app - they need to be cleaned up outside the app too +} + +WId NativeWindow::id(){ + return winid; +} + +QWindow* NativeWindow::window(){ + return WIN; +} + +QVariant NativeWindow::property(NativeWindow::Property prop){ + if(hash.contains(prop)){ return hash.value(prop); } + return QVariant(); //null variant +} + +void NativeWindow::setProperty(NativeWindow::Property prop, QVariant val){ + if(prop == NativeWindow::None){ return; } + hash.insert(prop, val); + emit PropertyChanged(prop, val); +} diff --git a/src-qt5/core/libLumina/NativeWindow.h b/src-qt5/core/libLumina/NativeWindow.h new file mode 100644 index 00000000..59b955c3 --- /dev/null +++ b/src-qt5/core/libLumina/NativeWindow.h @@ -0,0 +1,81 @@ +//=========================================== +// Lumina-DE source code +// Copyright (c) 2017, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +// This is a container object for setting/announcing changes +// in a native window's properties. +// The WM will usually run the "setProperty" function on this object, +// and any other classes/widgets which watch this window can act appropriatly after-the-fact +// Non-WM classes should use the "Request" signals to ask the WM to do something, and listen for changes later +//=========================================== +#ifndef _LUMINA_DESKTOP_NATIVE_WINDOW_H +#define _LUMINA_DESKTOP_NATIVE_WINDOW_H + +#include <QString> +#include <QRect> +#include <QSize> +#include <QObject> +#include <QWindow> +#include <QHash> +#include <QVariant> + +class NativeWindow : public QObject{ + Q_OBJECT +public: + enum State{ S_MODAL, S_STICKY, S_MAX_VERT, S_MAX_HORZ, S_SHADED, S_SKIP_TASKBAR, S_SKIP_PAGER, S_HIDDEN, S_FULLSCREEN, S_ABOVE, S_BELOW, S_ATTENTION }; + enum Type{T_DESKTOP, T_DOCK, T_TOOLBAR, T_MENU, T_UTILITY, T_SPLASH, T_DIALOG, T_DROPDOWN_MENU, T_POPUP_MENU, T_TOOLTIP, T_NOTIFICATION, T_COMBO, T_DND, T_NORMAL }; + enum Action {A_MOVE, A_RESIZE, A_MINIMIZE, A_SHADE, A_STICK, A_MAX_VERT, A_MAX_HORZ, A_FULLSCREEN, A_CHANGE_DESKTOP, A_CLOSE, A_ABOVE, A_BELOW}; + + enum Property{ /*QVariant Type*/ + None, /*null*/ + MinSize, /*QSize*/ + MaxSize, /*QSize*/ + Size, /*QSize*/ + GlobalPos, /*QPoint*/ + Title, /*QString*/ + ShortTitle, /*QString*/ + Icon, /*QIcon*/ + Name, /*QString*/ + Workspace, /*int*/ + States, /*QList<NativeWindow::State> : Current state of the window */ + WinTypes, /*QList<NativeWindow::Type> : Current type of window (typically does not change)*/ + WinActions, /*QList<NativeWindow::Action> : Current actions that the window allows (Managed/set by the WM)*/ + Active, /*bool*/ + Visible /*bool*/ + }; + + + NativeWindow(WId id); + ~NativeWindow(); + + WId id(); + QWindow* window(); + + QVariant property(NativeWindow::Property); + void setProperty(NativeWindow::Property, QVariant); + +private: + QHash <NativeWindow::Property, QVariant> hash; + QWindow *WIN; + WId winid; + +signals: + //General Notifications + void PropertyChanged(NativeWindow::Property, QVariant); + void WindowClosed(WId); + + //Action Requests (not automatically emitted - typically used to ask the WM to do something) + //Note: "WId" should be the NativeWindow id() + void RequestActivate(WId); //Activate the window + void RequestClose(WId); //Close the window + void RequestSetVisible(WId, bool); //Minimize/restore visiblility + void RequestSetGeometry(WId, QRect); //Register the location/size of the window + void RequestSetFrameExtents(WId, QList<int>); //Register the size of the frame around the window [Left,Right, Top,Bottom] in pixels + + // System Tray Icon Embed/Unembed Requests + //void RequestEmbed(WId, QWidget*); + //void RequestUnEmbed(WId, QWidget*); +}; +#endif diff --git a/src-qt5/core/libLumina/NativeWindow.pri b/src-qt5/core/libLumina/NativeWindow.pri new file mode 100644 index 00000000..4a585a06 --- /dev/null +++ b/src-qt5/core/libLumina/NativeWindow.pri @@ -0,0 +1,8 @@ + +# Files +SOURCES *= $${PWD}/NativeWindow.cpp + +HEADERS *= $${PWD}/NativeWindow.h + +INCLUDEPATH *= ${PWD} + diff --git a/src-qt5/core/libLumina/NativeWindowSystem.cpp b/src-qt5/core/libLumina/NativeWindowSystem.cpp new file mode 100644 index 00000000..c8e6d483 --- /dev/null +++ b/src-qt5/core/libLumina/NativeWindowSystem.cpp @@ -0,0 +1,221 @@ +//=========================================== +// Lumina-DE source code +// Copyright (c) 2017, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +// This is the XCB version of the NativeWindowSystem class, +// used for interacting with the X11 display system on BSD/Linux/Unix systems +//=========================================== +#include "NativeWindowSystem.h" + +//Additional Qt includes +#include <QX11Info> +#include <QDebug> + +//XCB Library functions +#include <xcb/xcb_ewmh.h> + +//XCB Library includes +#include <xcb/xcb.h> +#include <xcb/xcb_atom.h> +#include <xcb/xproto.h> +#include <xcb/xcb_ewmh.h> +#include <xcb/xcb_icccm.h> +#include <xcb/xcb_image.h> +#include <xcb/xcb_aux.h> +#include <xcb/composite.h> +#include <xcb/damage.h> + +//XLib includes (XCB Damage lib does not appear to register for damage events properly) +#include <X11/extensions/Xdamage.h> + +//SYSTEM TRAY STANDARD DEFINITIONS +#define _NET_SYSTEM_TRAY_ORIENTATION_HORZ 0 +#define _NET_SYSTEM_TRAY_ORIENTATION_VERT 1 +#define SYSTEM_TRAY_REQUEST_DOCK 0 +#define SYSTEM_TRAY_BEGIN_MESSAGE 1 +#define SYSTEM_TRAY_CANCEL_MESSAGE 2 + +#define URGENCYHINT (1L << 8) //For window urgency detection + +#define ROOT_WIN_EVENT_MASK (XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT | \ + XCB_EVENT_MASK_BUTTON_PRESS | \ + XCB_EVENT_MASK_STRUCTURE_NOTIFY | \ + XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT | \ + XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY | \ + XCB_EVENT_MASK_POINTER_MOTION | \ + XCB_EVENT_MASK_PROPERTY_CHANGE | \ + XCB_EVENT_MASK_FOCUS_CHANGE | \ + XCB_EVENT_MASK_ENTER_WINDOW) + +//Internal XCB private objects class +class NativeWindowSystem::p_objects{ +public: + xcb_ewmh_connection_t EWMH; //This is where all the screen info and atoms are located + QHash<QString, xcb_atom_t> ATOMS; + xcb_screen_t *root_screen; + xcb_window_t root_window, wm_window, tray_window; + + //Functions for setting up these objects as needed + bool init_ATOMS(){ + QStringList atoms; + atoms << "WM_TAKE_FOCUS" << "WM_DELETE_WINDOW" << "WM_PROTOCOLS" << "WM_CHANGE_STATE" << "_NET_SYSTEM_TRAY_OPCODE" << "_NET_SYSTEM_TRAY_ORIENTATION" << "_NET_SYSTEM_TRAY_VISUAL" << QString("_NET_SYSTEM_TRAY_S%1").arg(QString::number(QX11Info::appScreen())); + //Create all the requests for the atoms + QList<xcb_intern_atom_reply_t*> reply; + for(int i=0; i<atoms.length(); i++){ + reply << xcb_intern_atom_reply(QX11Info::connection(), \ + xcb_intern_atom(QX11Info::connection(), 0, atoms[i].length(), atoms[i].toLocal8Bit()), NULL); + } + //Now evaluate all the requests and save the atoms + for(int i=0; i<reply.length(); i++){ //NOTE: this will always be the same length as the "atoms" list + if(reply[i]!=0){ + obj->ATOMS.insert(atoms[i], reply[i]->atom); + free(reply[i]); //done with this reply + }else{ + //Invalid atom - could not be created + qDebug() << "Could not initialize XCB atom:" << atoms[i]; + } + } //loop over reply + return (obj->ATOMS.keys.length() == atoms.length()); + } + + bool register_wm(){ + uint32_t value_list[1] = {ROOT_WIN_EVENT_MASK}; + xcb_generic_error_t *status = xcb_request_check( QX11Info::connection(), xcb_change_window_attributes_checked(QX11Info::connection(), root_window, XCB_CW_EVENT_MASK, value_list)); + if(status!=0){ return false; } + uint32_t params[] = {1}; + wm_window = xcb_generate_id(QX11Info::connection()); //need a new ID + xcb_create_window(QX11Info::connection(), root_screen->root_depth, \ + win, root_window, -1, -1, 1, 1, 0, \ + XCB_WINDOW_CLASS_INPUT_OUTPUT, root_screen->root_visual, \ + XCB_CW_OVERRIDE_REDIRECT, params); + if(wm_window==0){ return false; } + //Set the _NET_SUPPORTING_WM property on the root window first + xcb_ewmh_set_supporting_wm_check(&EWMH, root_window, wm_window); + //Also set this property on the child window (pointing to itself) + xcb_ewmh_set_supporting_wm_check(&EWMH, wm_window, wm_window); + //Now also setup the root event mask on the wm_window + status = xcb_request_check( QX11Info::connection(), xcb_change_window_attributes_checked(QX11Info::connection(), wm_window, XCB_CW_EVENT_MASK, value_list)); + if(status!=0){ return false; } + return true; + } + + bool startSystemTray{ + xcb_atom_t _NET_SYSTEM_TRAY_S = ATOMS.value(QString("_NET_SYSTEM_TRAY_S%1").arg(QString::number(QX11Info::appScreen())) ); + //Make sure that there is no other system tray running + xcb_get_selection_owner_reply_t *ownreply = xcb_get_selection_owner_reply(QX11Info::connection(), \ + xcb_get_selection_owner_unchecked(QX11Info::connection(), _NET_SYSTEM_TRAY_S), NULL); + if(ownreply==0){ + qWarning() << " - Could not get owner selection reply"; + return false; + }else if(ownreply->owner != 0){ + free(ownreply); + qWarning() << " - An alternate system tray is currently in use"; + return false; + } + free(ownreply); + //Now create the window to use (just offscreen) + //TODO + } + +}; //end private objects class + + +//inline functions for setting up the internal objects + + +// === PUBLIC === +NativeWindowSystem::NativeWindowSystem() : QObject(){ + obj = 0; +} + +NativeWindowSystem::~NativeWindowSystem(){ + xcb_ewmh_connection_wipe(obj->EWMH); + free(obj); +} + +//Overarching start/stop functions +bool NativeWindowSystem::start(){ + //Initialize the XCB/EWMH objects + if(obj==0){ + obj = new p_objects(); } //instantiate the private objects + obj->wm_window = 0; + obj->tray_window = 0; + xcb_intern_atom_cookie_t *cookie = xcb_ewmh_init_atoms(QX11Info::connection(), &obj->EWMH); + if(!xcb_ewmh_init_atoms_replies(&obj->EWMH, cookie, NULL) ){ + qDebug() << "Error with XCB atom initializations"; + return false; + } + obj->root_screen = xcb_aux_get_screen(QX11Info::connection(), QX11Info::appScreen()); + obj->root_window = obj->root_screen->root; //simplification for later - minor duplication of memory (unsigned int) + //Initialize all the extra atoms that the EWMH object does not have + if( !obj->init_ATOMS() ){ return false; } + } //Done with private object init + + return true; +} + +void NativeWindowSystem::stop(){ + +} + +// === PRIVATE === +void NativeWindowSystem::UpdateWindowProperties(NativeWindow* win, QList< NativeWindow::Property > props){ + +} + +// === PUBLIC SLOTS === +//These are the slots which are only used by the desktop system itself or the NativeWindowEventFilter +void NativeWindowSystem::RegisterVirtualRoot(WId){ + +} + +//NativeWindowEventFilter interactions +void NativeWindowSystem::NewWindowDetected(WId){ + +} + +void NativeWindowSystem::WindowCloseDetected(WId){ + +} + +void NativeWindowSystem::WindowPropertyChanged(WId, NativeWindow::Property){ + +} + +void NativeWindowSystem::NewKeyPress(int keycode){ + +} + +void NativeWindowSystem::NewKeyRelease(int keycode){ + +} + +void NativeWindowSystem::NewMousePress(int buttoncode){ + +} + +void NativeWindowSystem::NewMouseRelease(int buttoncode){ + +} + +// === PRIVATE SLOTS === +//These are the slots which are built-in and automatically connected when a new NativeWindow is created +void NativeWindowSystem::RequestActivate(WId){ + +} +void NativeWindowSystem::RequestClose(WId){ + +} + +void NativeWindowSystem::RequestSetVisible(WId, bool){ + +} +void NativeWindowSystem::RequestSetGeometry(WId, QRect){ + +} +void NativeWindowSystem::RequestSetFrameExtents(WId, QList<int>){ + //[Left,Top,Right,Bottom] in pixels + +} diff --git a/src-qt5/core/libLumina/NativeWindowSystem.h b/src-qt5/core/libLumina/NativeWindowSystem.h new file mode 100644 index 00000000..ef169059 --- /dev/null +++ b/src-qt5/core/libLumina/NativeWindowSystem.h @@ -0,0 +1,92 @@ +//=========================================== +// Lumina-DE source code +// Copyright (c) 2017, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +// This is a Qt5/Lumina wrapper around native graphics system calls +// It is primarily designed around the creation/modification of instances of +// the "NativeWindow" class for passing information around +//=========================================== +#ifndef _LUMINA_NATIVE_WINDOW_SYSTEM_H +#define _LUMINA_NATIVE_WINDOW_SYSTEM_H + +#include "NativeWindow.h" + +class NativeWindowSystem : public QObject{ + Q_OBJECT +private: + QList<NativeWindow*> NWindows; + QList<NativeWindow*> TWindows; + + //Simplifications to find an already-created window object + NativeWindow* findWindow(WId id){ + for(int i=0; i<NWindows.length(); i++){ + if(id==NWindows[i]->id()){ return NWindows[i]; } + } + } + + NativeWindow* findTrayWindow(WId id){ + for(int i=0; i<TWindows.length(); i++){ + if(id==TWindows[i]->id()){ return TWindows[i]; } + } + } + + //Now define a simple private_objects class so that each implementation + // has a storage container for placing private objects as needed + class p_objects; + p_objects* obj; + + // Since some properties may be easier to update in bulk + // let the native system interaction do them in whatever logical groups are best + void UpdateWindowProperties(NativeWindow* win, QList< NativeWindow::Property > props); + +public: + NativeWindowSystem(); + ~NativeWindowSystem(); + + //Overarching start/stop functions + bool start(); + void stop(); + + //General-purpose listing functions + QList<NativeWindow*> currentWindows(){ return NWindows; } + +public slots: + //These are the slots which are typically only used by the desktop system itself or the NativeWindowEventFilter + + //RootWindow interactions + void RegisterVirtualRoot(WId); + //void GoToWorkspace(int); + //void RegisterWorkspaces(QStringList); //Names of workspaces, in ascending order + //void RegisterKnownInteractions(); + + + //NativeWindowEventFilter interactions + void NewWindowDetected(WId); //will automatically create the new NativeWindow object + void WindowCloseDetected(WId); //will update the lists and make changes if needed + void WindowPropertyChanged(WId, NativeWindow::Property); //will rescan the window and update the object as needed + void NewKeyPress(int keycode); + void NewKeyRelease(int keycode); + void NewMousePress(int buttoncode); + void NewMouseRelease(int buttoncode); + void CheckDamageID(WId); + +private slots: + //These are the slots which are built-in and automatically connected when a new NativeWindow is created + void RequestActivate(WId); + void RequestClose(WId); + void RequestSetVisible(WId, bool); + void RequestSetGeometry(WId, QRect); + void RequestSetFrameExtents(WId, QList<int>); //[Left,Right,Top,Bottom] in pixels + +signals: + void NewWindowAvailable(NativeWindow*); + void NewInputEvent(); //a mouse or keypress was detected (lock-state independent); + void NewKeyPress(int); //only emitted if lockstate = false + void NewKeyRelease(int); //only emitted if lockstate = false + void NewMousePress(Qt::MouseButton); //only emitted if lockstate = false + +}; + +#endif diff --git a/src-qt5/core/libLumina/RootSubWindow.cpp b/src-qt5/core/libLumina/RootSubWindow.cpp new file mode 100644 index 00000000..7be89f48 --- /dev/null +++ b/src-qt5/core/libLumina/RootSubWindow.cpp @@ -0,0 +1,110 @@ +//=========================================== +// Lumina Desktop source code +// Copyright (c) 2017, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +#include "RootSubWindow.h" +#include <QDebug> + +// === PUBLIC === +RootSubWindow::RootSubWindow(QMdiArea *root, NativeWindow *win) : QMdiSubWindow(0){ + this->setAttribute(Qt::WA_DeleteOnClose); + //Create the QWindow and QWidget containers for the window + WIN = win; + closing = false; + WinWidget = QWidget::createWindowContainer( WIN->window(), this); + this->setWidget(WinWidget); + LoadProperties( QList< NativeWindow::Property>() << NativeWindow::WindowFlags << NativeWindow::Title << NativeWindow::Icon \ + << NativeWindow::MinSize << NativeWindow::MaxSize << NativeWindow::Size ); + //Hookup the signals/slots + connect(this, SIGNAL(aboutToActivate()), this, SLOT(aboutToActivate()) ); + connect(WIN, SIGNAL(PropertyChanged(NativeWindow::Property, QVariant)), this, SLOT(propertyChanged(NativeWindow::Property, QVariant))); + //Now add this window to the root QMdiArea + root->addSubWindow(this); + //Make sure the visibily property only gets loaded after it is added to the root area + propertyChanged(NativeWindow::Visible, WIN->property(NativeWindow::Visible)); +} + +RootSubWindow::~RootSubWindow(){ + +} + +WId RootSubWindow::id(){ + return WIN->id(); +} + +// === PRIVATE === +void RootSubWindow::LoadProperties( QList< NativeWindow::Property> list){ + for(int i=0; i<list.length(); i++){ + propertyChanged( list[i], WIN->property(list[i]) ); + } +} + +// === PUBLIC SLOTS === +void RootSubWindow::clientClosed(){ + qDebug() << "Client Closed"; + closing = true; + this->close(); +} + +void RootSubWindow::clientHidden(){ + qDebug() << "Client Hidden"; + this->hide(); +} + +void RootSubWindow::clientShown(){ + qDebug() << "Client Shown"; + this->show(); +} + +// === PRIVATE SLOTS === +void RootSubWindow::aboutToActivate(){ + WIN->emit RequestActivate(WIN->id()); +} + +void RootSubWindow::propertyChanged(NativeWindow::Property prop, QVariant val){ + if(val.isNull()){ return; } //not the same as a default/empty value - the property has just not been set yet + qDebug() << "Set Window Property:" << prop << val; + switch(prop){ + case NativeWindow::Visible: + if(val.toBool()){ clientShown(); } + else{ clientHidden(); } + break; + case NativeWindow::Title: + this->setWindowTitle(val.toString()); + break; + case NativeWindow::Icon: + this->setWindowIcon(val.value< QIcon>()); + break; + case NativeWindow::Size: + this->resize(val.toSize()); + break; + case NativeWindow::MinSize: + this->setMinimumSize(val.toSize()); + break; + case NativeWindow::MaxSize: + this->setMaximumSize(val.toSize()); + break; + case NativeWindow::Active: + if(val.toBool()){ this->mdiArea()->setActiveSubWindow(this); } + break; + case NativeWindow::WindowFlags: + this->setWindowFlags( val.value< Qt::WindowFlags >() ); + break; + default: + qDebug() << "Window Property Unused:" << prop << val; + } +} + +// === PROTECTED === +void RootSubWindow::closeEvent(QCloseEvent *ev){ + if(!closing){ + //qDebug() << "Close Window By Button:" << WIN->id(); + ev->ignore(); + WIN->emit RequestClose(WIN->id()); + }else{ + QMdiSubWindow::closeEvent(ev); + } + +} diff --git a/src-qt5/core/libLumina/RootSubWindow.h b/src-qt5/core/libLumina/RootSubWindow.h new file mode 100644 index 00000000..c56f3c96 --- /dev/null +++ b/src-qt5/core/libLumina/RootSubWindow.h @@ -0,0 +1,51 @@ +//=========================================== +// Lumina Desktop source code +// Copyright (c) 2017, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +// This class embeds a native window +// within the RootWindow area +//=========================================== +#ifndef _LUMINA_ROOT_WINDOW_SUB_WINDOW_H +#define _LUMINA_ROOT_WINDOW_SUB_WINDOW_H + +#include <QMdiArea> +#include <QMdiSubWindow> +#include <QWindow> +#include <QWidget> +#include <QCloseEvent> + +#include <NativeWindow.h> + +class RootSubWindow : public QMdiSubWindow{ + Q_OBJECT +public: + RootSubWindow(QMdiArea *root, NativeWindow *win); + ~RootSubWindow(); + + WId id(); + +private: + NativeWindow *WIN; + QWidget *WinWidget; + bool closing; + + void LoadProperties( QList< NativeWindow::Property> list); + +public slots: + void clientClosed(); + +private slots: + void clientHidden(); + void clientShown(); + void aboutToActivate(); + void propertyChanged(NativeWindow::Property, QVariant); + + +protected: + void closeEvent(QCloseEvent*); + +}; + +#endif diff --git a/src-qt5/core/libLumina/RootWindow.cpp b/src-qt5/core/libLumina/RootWindow.cpp index aa5957b5..0758653b 100644 --- a/src-qt5/core/libLumina/RootWindow.cpp +++ b/src-qt5/core/libLumina/RootWindow.cpp @@ -11,7 +11,7 @@ #include <QDebug> // === PUBLIC === -RootWindow::RootWindow() : QWidget(0, Qt::Window | Qt::BypassWindowManagerHint | Qt::WindowStaysOnBottomHint){ +RootWindow::RootWindow() : QMdiArea(0){ //QWidget(0, Qt::Window | Qt::BypassWindowManagerHint | Qt::WindowStaysOnBottomHint){ qRegisterMetaType<WId>("WId"); autoResizeTimer = 0; } @@ -166,13 +166,32 @@ void RootWindow::ChangeWallpaper(QString id, RootWindow::ScaleType scale, QStrin } +void RootWindow::NewWindow(NativeWindow *win){ + RootSubWindow *subwin = 0; + for(int i=0; i<WINDOWS.length() && subwin==0; i++){ + if(WINDOWS[i]->id() == win->id()){ subwin = WINDOWS[i]; } + } + if(subwin==0){ + subwin = new RootSubWindow(this, win); + connect(win, SIGNAL(WindowClosed(WId)), this, SLOT(CloseWindow(WId)) ); + WINDOWS << subwin; + } + //subwin->show(); +} + +void RootWindow::CloseWindow(WId win){ + for(int i=0; i<WINDOWS.length(); i++){ + if(WINDOWS[i]->id() == win){ WINDOWS.takeAt(i)->clientClosed(); break; } + } +} + // === PRIVATE SLOTS === // === PROTECTED === void RootWindow::paintEvent(QPaintEvent *ev){ //qDebug() << "RootWindow: PaintEvent:" << ev->rect(); //<< QDateTime::currentDateTime()->toString(QDateTime::ShortDate); bool found = false; - QPainter painter(this); + QPainter painter(this->viewport()); for(int i=0; i<WALLPAPERS.length(); i++){ if(WALLPAPERS[i].area.intersects(ev->rect()) ){ found = true; diff --git a/src-qt5/core/libLumina/RootWindow.h b/src-qt5/core/libLumina/RootWindow.h index b371d239..5d3bc963 100644 --- a/src-qt5/core/libLumina/RootWindow.h +++ b/src-qt5/core/libLumina/RootWindow.h @@ -18,8 +18,12 @@ #include <QTimer> #include <QApplication> #include <QPaintEvent> +#include <QMdiArea> -class RootWindow : public QWidget{ +#include "RootSubWindow.h" +#include "NativeWindow.h" + +class RootWindow : public QMdiArea{ Q_OBJECT public: enum ScaleType{ SolidColor, Stretch, Full, Fit, Center, Tile, BottomLeft, BottomRight, BottomCenter, \ @@ -43,11 +47,17 @@ private: QList<screeninfo> WALLPAPERS; void updateScreenPixmap(screeninfo *info); //used for recalculating the wallpaper pixmap based on file/area/scale as needed + //Window Management + QList<RootSubWindow*> WINDOWS; + public slots: void ResizeRoot(); void ChangeWallpaper(QString id, RootWindow::ScaleType scale, QString file); //Note: for "SingleColor" scaling the "file" variable should be "rgb(R,G,B)" or "#hexcode" + void NewWindow(NativeWindow*); + void CloseWindow(WId); //automatically connected for any new native window + private slots: protected: diff --git a/src-qt5/core/libLumina/RootWindow.pri b/src-qt5/core/libLumina/RootWindow.pri index 7ef3efb0..35e0e770 100644 --- a/src-qt5/core/libLumina/RootWindow.pri +++ b/src-qt5/core/libLumina/RootWindow.pri @@ -1,9 +1,13 @@ # Files -SOURCES *= $${PWD}/RootWindow.cpp -HEADERS *= $${PWD}/RootWindow.h +SOURCES *= $${PWD}/RootWindow.cpp \ + $${PWD}/RootSubWindow.cpp + +HEADERS *= $${PWD}/RootWindow.h \ + $${PWD}/RootSubWindow.h INCLUDEPATH *= ${PWD} -# include LUtils and LuminaX11 +# include other library dependencies include(LUtils.pri) +include(NativeWindow.pri); diff --git a/src-qt5/core/libLumina/test/main.cpp b/src-qt5/core/libLumina/test/main.cpp new file mode 100644 index 00000000..309fb938 --- /dev/null +++ b/src-qt5/core/libLumina/test/main.cpp @@ -0,0 +1,13 @@ + +#include "../LuminaRandR.h" +#include <QDebug> +#include <QApplication> + +int main(int argc, char** argv){ + QApplication A(argc, argv); + qDebug() << "Starting monitor scan..."; + QList<OutputDevice> outputs = OutputDevice::availableMonitors(); + qDebug() << "Finished monitor Scan"; + OutputDeviceList(); + return 0; +} diff --git a/src-qt5/core/libLumina/test/test.pro b/src-qt5/core/libLumina/test/test.pro new file mode 100644 index 00000000..9674801b --- /dev/null +++ b/src-qt5/core/libLumina/test/test.pro @@ -0,0 +1,7 @@ +QT = core gui widgets + +TARGET = test + +SOURCES += main.cpp + +include(../LuminaRandR.pri) diff --git a/src-qt5/core/lumina-desktop-unified/LSession.cpp b/src-qt5/core/lumina-desktop-unified/LSession.cpp index cb0144d5..1c8d3c45 100644 --- a/src-qt5/core/lumina-desktop-unified/LSession.cpp +++ b/src-qt5/core/lumina-desktop-unified/LSession.cpp @@ -24,11 +24,12 @@ RootWindow* Lumina::ROOTWIN = 0; XDGDesktopList* Lumina::APPLIST = 0; LShortcutEvents* Lumina::SHORTCUTS = 0; -LSession::LSession(int &argc, char ** argv) : LSingleApplication(argc, argv, "lumina-desktop"){ +LSession::LSession(int &argc, char ** argv) : LSingleApplication(argc, argv, "lumina-desktop-unified"){ //Initialize the global objects to null pointers mediaObj = 0; //private object used for playing login/logout chimes if(this->isPrimaryProcess()){ //Setup the global registrations + qsrand(QDateTime::currentMSecsSinceEpoch()); this->setApplicationName("Lumina Desktop Environment"); this->setApplicationVersion( LDesktopUtils::LuminaDesktopVersion() ); this->setOrganizationName("LuminaDesktopEnvironment"); @@ -41,7 +42,7 @@ LSession::LSession(int &argc, char ** argv) : LSingleApplication(argc, argv, "lu //this->setAttribute(Qt::AA_UseHighDpiPixmaps); //allow pixmaps to be scaled up as well as down //Now initialize the global objects (but do not start them yet) - Lumina::EFILTER = new EventFilter(); //Need the XCB Event filter + Lumina::EFILTER = new EventFilter(); //Need the XCB Event filter first Lumina::SETTINGS = new DesktopSettings(); Lumina::SS = new LScreenSaver(); //Lumina::WM = new LWindowManager(); @@ -60,7 +61,7 @@ LSession::LSession(int &argc, char ** argv) : LSingleApplication(argc, argv, "lu //Setup the various connections between the global classes // NOTE: Most of these connections will only become "active" as the global objects get started during the setupSession routine connect(Lumina::ROOTWIN, SIGNAL(RegisterVirtualRoot(WId)), Lumina::EFILTER, SLOT(RegisterVirtualRoot(WId)) ); - + connect(Lumina::EFILTER, SIGNAL(WindowCreated(NativeWindow*)), Lumina::ROOTWIN, SLOT(NewWindow(NativeWindow*)) ); } //end check for primary process } @@ -176,7 +177,7 @@ void LSession::setupSession(){ Lumina::SHORTCUTS->start(); //Startup the shortcut handler now //for(int i=0; i<4; i++){ LSession::processEvents(); } //Again, just a few event loops here so thing can settle before we close the splash screen //launchStartupApps(); - //QTimer::singleShot(500, this, SLOT(launchStartupApps()) ); + QTimer::singleShot(500, this, SLOT(launchStartupApps()) ); splash.hide(); LSession::processEvents(); splash.close(); @@ -279,7 +280,7 @@ void LSession::launchStartupApps(){ LOS::setScreenBrightness( tmp ); qDebug() << " - - Screen Brightness:" << QString::number(tmp)+"%"; } - QProcess::startDetached("nice lumina-open -autostart-apps"); + //ExternalProcess::launch("nice lumina-open -autostart-apps"); //Re-load the screen brightness and volume settings from the previous session // Wait until after the XDG-autostart functions, since the audio system might be started that way diff --git a/src-qt5/core/lumina-desktop-unified/global-includes.h b/src-qt5/core/lumina-desktop-unified/global-includes.h index 6a753cd1..867076db 100644 --- a/src-qt5/core/lumina-desktop-unified/global-includes.h +++ b/src-qt5/core/lumina-desktop-unified/global-includes.h @@ -57,6 +57,8 @@ #include <LuminaSingleApplication.h> #include <DesktopSettings.h> #include <RootWindow.h> +#include <ExternalProcess.h> +#include <NativeWindow.h> // Standard C includes #include <unistd.h> diff --git a/src-qt5/core/lumina-desktop-unified/lumina-desktop.pro b/src-qt5/core/lumina-desktop-unified/lumina-desktop.pro index 497ce635..1de8308d 100644 --- a/src-qt5/core/lumina-desktop-unified/lumina-desktop.pro +++ b/src-qt5/core/lumina-desktop-unified/lumina-desktop.pro @@ -17,6 +17,7 @@ include(../libLumina/LuminaSingleApplication.pri) include(../libLumina/LuminaThemes.pri) include(../libLumina/DesktopSettings.pri) include(../libLumina/RootWindow.pri) +include(../libLumina/ExternalProcess.pri) #include all the main individual source groups include(src-screensaver/screensaver.pri) diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/ContextMenu.cpp b/src-qt5/core/lumina-desktop-unified/src-desktop/ContextMenu.cpp index fa4af5ba..e363af01 100644 --- a/src-qt5/core/lumina-desktop-unified/src-desktop/ContextMenu.cpp +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/ContextMenu.cpp @@ -24,7 +24,7 @@ void DesktopContextMenu::UpdateMenu(){ for(int i=0; i<items.length(); i++){ if(items[i]=="terminal"){ this->addAction(LXDG::findIcon("utilities-terminal",""), tr("Terminal"))->setWhatsThis("lumina-open -terminal"); } else if(items[i]=="lockdesktop"){ this->addAction(LXDG::findIcon("system-lock-screen",""), tr("Lock Session"), this, SIGNAL(LockSession()) ); } - else if(items[i]=="filemanager"){ this->addAction( LXDG::findIcon("user-home",""), tr("Browse Files"))->setWhatsThis("lumina-open ~"); } + else if(items[i]=="filemanager"){ this->addAction( LXDG::findIcon("user-home",""), tr("Browse Files"))->setWhatsThis("lumina-open \""+QDir::homePath()+"\""); } //else if(items[i]=="applications"){ this->addMenu( LSession::handle()->applicationMenu() ); } else if(items[i]=="line"){ this->addSeparator(); } //else if(items[i]=="settings"){ this->addMenu( LSession::handle()->settingsMenu() ); } @@ -34,7 +34,7 @@ void DesktopContextMenu::UpdateMenu(){ QString file = items[i].section("::::",1,1).simplified(); XDGDesktop xdgf(file);// = LXDG::loadDesktopFile(file, ok); if(xdgf.type!=XDGDesktop::BAD){ - this->addAction( LXDG::findIcon(xdgf.icon,""), xdgf.name)->setWhatsThis(file); + this->addAction( LXDG::findIcon(xdgf.icon,""), xdgf.name)->setWhatsThis("lumina-open \""+file+"\""); }else{ qDebug() << "Could not load application file:" << file; } @@ -86,8 +86,9 @@ void DesktopContextMenu::start(){ // === PRIVATE SLOTS === void DesktopContextMenu::LaunchAction(QAction *act){ if(act->whatsThis().isEmpty() || act->parent()!=this ){ return; } + qDebug() << "Launch Menu Action:" << act->whatsThis(); QString cmd = act->whatsThis(); - emit LaunchApplication(cmd); + ExternalProcess::launch(cmd); } void DesktopContextMenu::showMenu(const QPoint &pt){ diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/ContextMenu.h b/src-qt5/core/lumina-desktop-unified/src-desktop/ContextMenu.h index 1a4befc9..8b0509fb 100644 --- a/src-qt5/core/lumina-desktop-unified/src-desktop/ContextMenu.h +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/ContextMenu.h @@ -30,7 +30,6 @@ private slots: void showMenu(const QPoint&); signals: - void LaunchApplication(QString); //cmd to run void LockSession(); void showLeaveDialog(); }; diff --git a/src-qt5/core/lumina-desktop-unified/src-events/LXcbEventFilter.cpp b/src-qt5/core/lumina-desktop-unified/src-events/LXcbEventFilter.cpp index 4a192aa4..7031f3df 100644 --- a/src-qt5/core/lumina-desktop-unified/src-events/LXcbEventFilter.cpp +++ b/src-qt5/core/lumina-desktop-unified/src-events/LXcbEventFilter.cpp @@ -53,6 +53,7 @@ void EventFilter::start(){ XCB->setupEventsForRoot(WMFlag); XCB->WM_Set_Supporting_WM(WMFlag); + XCB->WM_Set_Root_Supported(); //announce all the various options that the WM supports static_cast<XCBEventFilter*>(EF)->startSystemTray(); QCoreApplication::instance()->flush(); @@ -71,11 +72,22 @@ unsigned int EventFilter::currentWorkspace(){ return XCB->CurrentWorkspace(); } +QList<NativeWindow*> EventFilter::currentWindows(){ + return static_cast<XCBEventFilter*>(EF)->windowList(); +} + // === PUBLIC SLOTS === void EventFilter::RegisterVirtualRoot(WId id){ XCB->WM_Set_Virtual_Roots( QList<WId>() << id ); } +void EventFilter::TryCloseWindow(WId id){ + XCB->WM_CloseWindow(id, false); //do not force close +} + +void EventFilter::TryActivateWindow(WId id){ + XCB->WM_Set_Active_Window(id); +} //============================= // XCBEventFilter Class //============================= @@ -132,13 +144,13 @@ bool XCBEventFilter::nativeEventFilter(const QByteArray &eventType, void *messag //============================== case XCB_KEY_PRESS: //This is a keyboard key press - qDebug() << "Key Press Event"; + //qDebug() << "Key Press Event"; stopevent = BlockInputEvent( ((xcb_key_press_event_t *) ev)->root ); //use the main "root" window - not the child widget if(!stopevent){ obj->emit KeyPressed( InputWindow(((xcb_key_press_event_t *) ev)->root), ((xcb_key_press_event_t *) ev)->detail ); } break; case XCB_KEY_RELEASE: //This is a keyboard key release - qDebug() << "Key Release Event"; + //qDebug() << "Key Release Event"; stopevent = BlockInputEvent( ((xcb_key_release_event_t *) ev)->root ); //use the main "root" window - not the child widget if(!stopevent){ obj->emit KeyReleased( InputWindow(((xcb_key_release_event_t *) ev)->root), ((xcb_key_release_event_t *) ev)->detail ); } break; @@ -183,25 +195,42 @@ bool XCBEventFilter::nativeEventFilter(const QByteArray &eventType, void *messag break; //============================== case XCB_MAP_NOTIFY: + //qDebug() << "Window Map Event:" << ((xcb_map_notify_event_t *)ev)->window; + if(Lumina::SS->isLocked()){ waitingToShow << ((xcb_map_notify_event_t *)ev)->window ; } + else{ + for(int i=0; i<windows.length(); i++){ + if(windows[i]->id() == ((xcb_map_notify_event_t *)ev)->window){ windows[i]->setProperty(NativeWindow::Visible, true); break; } + } + } break; //This is just a notification that a window was mapped - nothing needs to change here case XCB_MAP_REQUEST: - qDebug() << "Window Map Request Event"; - obj->emit ModifyWindow( ((xcb_map_request_event_t *) ev)->window, Lumina::Show); + //qDebug() << "Window Map Request Event"; + SetupNewWindow( ((xcb_map_request_event_t *) ev) ); break; //============================== case XCB_CREATE_NOTIFY: - qDebug() << "Window Create Event"; + //qDebug() << "Window Create Event"; break; //============================== case XCB_UNMAP_NOTIFY: - qDebug() << "Window Unmap Event"; - obj->emit ModifyWindow( ((xcb_unmap_notify_event_t *)ev)->window, Lumina::Hide); + //qDebug() << "Window Unmap Event:" << ((xcb_unmap_notify_event_t *)ev)->window; + if(waitingToShow.contains(((xcb_unmap_notify_event_t *)ev)->window)){ waitingToShow.removeAll(((xcb_unmap_notify_event_t *)ev)->window); } + for(int i=0; i<windows.length(); i++){ + if(windows[i]->id() == ((xcb_unmap_notify_event_t *)ev)->window){ windows[i]->setProperty(NativeWindow::Visible, false); break; } + } break; //============================== case XCB_DESTROY_NOTIFY: - qDebug() << "Window Closed Event"; + //qDebug() << "Window Closed Event:" << ((xcb_destroy_notify_event_t *)ev)->window; if( !rmTrayApp( ((xcb_destroy_notify_event_t *) ev)->window ) ){ - obj->emit WindowClosed( ((xcb_destroy_notify_event_t *) ev)->window ); + //qDebug() <<" - Non-tray window"; + for(int i=0; i<windows.length(); i++){ + if(windows[i]->id() == ((xcb_destroy_notify_event_t *)ev)->window){ + windows[i]->emit WindowClosed(windows[i]->id()); + QTimer::singleShot(500, windows.takeAt(i), SLOT(deleteLater()) ); //give a few moments first, then clean up the object + break; + } + } } break; //============================== @@ -215,7 +244,7 @@ bool XCBEventFilter::nativeEventFilter(const QByteArray &eventType, void *messag //============================== case XCB_PROPERTY_NOTIFY: //qDebug() << "Property Notify Event:"; - //qDebug() << " - Given Window:" << ((xcb_property_notify_event_t*)ev)->window; + ParsePropertyEvent((xcb_property_notify_event_t*)ev); break; //============================== case XCB_CLIENT_MESSAGE: @@ -305,6 +334,10 @@ bool XCBEventFilter::stopSystemTray(){ return true; } +QList<NativeWindow*> XCBEventFilter::windowList(){ + return windows; +} + //========= // PRIVATE //========= @@ -389,3 +422,79 @@ void XCBEventFilter::checkDamageID(WId id){ //Could check for window damage ID's - but we should not need this } } + +// WINDOW HANDLING FUNCTIONS +void XCBEventFilter::SetupNewWindow(xcb_map_request_event_t *ev){ + WId win = ev->window; + + bool ok = obj->XCB->WM_ManageWindow(win, true); + //Quick check if this is a transient window if we could not manage it directly + if(!ok){ + WId tran = obj->XCB->WM_ICCCM_GetTransientFor(win); + if(tran!=win && tran!=0){ + win = tran; + ok = obj->XCB->WM_ManageWindow(win); + } + } + qDebug() << "New Window:" << win << obj->XCB->WM_ICCCM_GetClass(win) << " Managed:" << ok; + obj->XCB->WM_Set_Active_Window(win); + //Determing the requested geometry/location/management within the event, + NativeWindow *nwin = new NativeWindow(win); + QObject::connect(nwin, SIGNAL(RequestClose(WId)), obj, SLOT(TryCloseWindow(WId)) ); + QObject::connect(nwin, SIGNAL(RequestActivate(WId)), obj, SLOT(TryActivateWindow(WId)) ); + windows << nwin; + bool show_now = !Lumina::SS->isLocked(); + if(!show_now){ waitingToShow << win; } //add to the list to get set visible later + //populate the native window settings as they are right now + nwin->setProperty(NativeWindow::Active, true); + nwin->setProperty(NativeWindow::Visible, show_now); + nwin->setProperty(NativeWindow::Workspace, obj->XCB->CurrentWorkspace()); + icccm_size_hints hints = obj->XCB->WM_ICCCM_GetNormalHints(win); + if(!hints.isValid()){ hints = obj->XCB->WM_ICCCM_GetSizeHints(win); } + if(hints.validMinSize()){ nwin->setProperty(NativeWindow::MinSize, QSize(hints.min_width,hints.min_height)); } + if(hints.validMaxSize()){ nwin->setProperty(NativeWindow::MaxSize, QSize(hints.max_width,hints.max_height)); } + if(hints.validBaseSize()){ nwin->setProperty(NativeWindow::Size, QSize(hints.base_width,hints.base_height)); } + else if(hints.validSize()){ nwin->setProperty(NativeWindow::Size, QSize(hints.width, hints.height)); } + nwin->setProperty(NativeWindow::Icon, obj->XCB->WM_Get_Icon(win)); + QString title = obj->XCB->WM_Get_Name(win); + if(title.isEmpty()){ title = obj->XCB->WM_Get_Visible_Name(win); } + if(title.isEmpty()){ title = obj->XCB->WM_ICCCM_GetName(win); } + nwin->setProperty(NativeWindow::Title, title); + title = obj->XCB->WM_Get_Icon_Name(win); + if(title.isEmpty()){ title = obj->XCB->WM_Get_Visible_Icon_Name(win); } + if(title.isEmpty()){ title = obj->XCB->WM_ICCCM_GetIconName(win); } + nwin->setProperty(NativeWindow::ShortTitle, title); + + obj->emit WindowCreated(nwin); +} + +void XCBEventFilter::ParsePropertyEvent(xcb_property_notify_event_t *ev){ + //First find the NativeWindow associated with the event + NativeWindow *nwin = 0; + for(int i=0; i<windows.length() && nwin==0; i++){ + if(windows[i]->id() == ev->window){ nwin = windows[i]; } + } + if(nwin==0){ return; } //unmanaged window - ignore this event + qDebug() << "Got Property Event:" << ev->window << ev->atom; + //Now determine which properties are getting changed, and update the native window as appropriate + if(ev->atom == obj->XCB->EWMH._NET_WM_NAME){ + qDebug() << " - Found _NET_WM_NAME atom"; + nwin->setProperty(NativeWindow::Title, obj->XCB->WM_Get_Name(nwin->id())); + }else if(ev->atom == obj->XCB->EWMH._NET_WM_ICON){ + qDebug() << " - Found _NET_WM_ICON atom"; + nwin->setProperty(NativeWindow::Icon, obj->XCB->WM_Get_Icon(nwin->id())); + }else if(ev->atom == obj->XCB->EWMH._NET_WM_ICON_NAME){ + qDebug() << " - Found _NET_WM_ICON_NAME atom"; + nwin->setProperty(NativeWindow::ShortTitle, obj->XCB->WM_Get_Icon_Name(nwin->id())); + }else if(ev->atom == obj->XCB->EWMH._NET_WM_DESKTOP){ + qDebug() << " - Found _NET_WM_DESKTOP atom"; + nwin->setProperty(NativeWindow::Workspace, obj->XCB->WM_Get_Desktop(nwin->id())); + }else if(ev->atom == obj->XCB->EWMH._NET_WM_WINDOW_TYPE ){ + qDebug() << " - Found _NET_WM_WINDOW_TYPE atom"; + + }else if( ev->atom == obj->XCB->EWMH._NET_WM_STATE){ + qDebug() << " - Found _NET_WM_STATE atom"; + + } + +} diff --git a/src-qt5/core/lumina-desktop-unified/src-events/LXcbEventFilter.h b/src-qt5/core/lumina-desktop-unified/src-events/LXcbEventFilter.h index 9e76ba53..9f2530e8 100644 --- a/src-qt5/core/lumina-desktop-unified/src-events/LXcbEventFilter.h +++ b/src-qt5/core/lumina-desktop-unified/src-events/LXcbEventFilter.h @@ -60,18 +60,21 @@ public: //Public Session Interaction Functions unsigned int currentWorkspace(); + + //Public Window Management Lists + QList<NativeWindow*> currentWindows(); //always returned in creation-order (oldest first) //Variables/Functions needed by the XCBEventFilter class only (not really needed by anything else) LXCB *XCB; //used to interact with the X11 graphics subsystem public slots: void RegisterVirtualRoot(WId); + void TryCloseWindow(WId); + void TryActivateWindow(WId); signals: void NewInputEvent(); - void NewManagedWindow(WId); - void WindowClosed(WId); - void ModifyWindow(WId win, Lumina::WindowAction); + void WindowCreated(NativeWindow*); // Session Signals void WorkspaceChanged(unsigned int); @@ -99,6 +102,9 @@ public: bool startSystemTray(); bool stopSystemTray(); + //Window List Functions + QList<NativeWindow*> windowList(); + private: EventFilter *obj; QList<xcb_atom_t> WinNotifyAtoms, SysNotifyAtoms; @@ -119,13 +125,19 @@ private: bool rmTrayApp(WId); //returns "true" if the tray app was found and removed void checkDamageID(WId); + //Window List Variables + QList<NativeWindow*> windows; + QList<WId> waitingToShow; + //Longer Event handling functions + void SetupNewWindow(xcb_map_request_event_t *ev); + //bool ParseKeyPressEvent(); //bool ParseKeyReleaseEvent(); //bool ParseButtonPressEvent(); //bool ParseButtonReleaseEvent(); //bool ParseMotionEvent(); - //bool ParsePropertyEvent(); + void ParsePropertyEvent(xcb_property_notify_event_t *ev); //bool ParseClientMessageEvent(); //bool ParseDestroyEvent(); //bool ParseConfigureEvent(); diff --git a/src-qt5/core/lumina-desktop-unified/src-screensaver/SSBaseWidget.cpp b/src-qt5/core/lumina-desktop-unified/src-screensaver/SSBaseWidget.cpp index 83b82ff8..9ad31f5c 100644 --- a/src-qt5/core/lumina-desktop-unified/src-screensaver/SSBaseWidget.cpp +++ b/src-qt5/core/lumina-desktop-unified/src-screensaver/SSBaseWidget.cpp @@ -19,6 +19,7 @@ SSBaseWidget::SSBaseWidget(QWidget *parent, QSettings *set) : QWidget(parent){ this->setObjectName("LuminaBaseSSWidget"); ANIM = 0; this->setMouseTracking(true); + plugType="none"; } SSBaseWidget::~SSBaseWidget(){ @@ -51,7 +52,7 @@ void SSBaseWidget::startPainting(){ //Now list all the various plugins and start them appropriately QString style; if(cplug=="none"){ - style = "background: transparent;"; //show the underlying black parent widget + style = "background: black;"; //show the underlying black parent widget }else{ style = "background: black;"; } diff --git a/src-qt5/core/lumina-desktop/LDesktop.cpp b/src-qt5/core/lumina-desktop/LDesktop.cpp index d4ebaa7f..73ed6d47 100644 --- a/src-qt5/core/lumina-desktop/LDesktop.cpp +++ b/src-qt5/core/lumina-desktop/LDesktop.cpp @@ -265,7 +265,7 @@ void LDesktop::SettingsChanged(){ UpdatePanels(); UpdateMenu(); issyncing = false; - QTimer::singleShot(100, this, SLOT(UnlockSettings()) ); //give it a few moments to settle before performing another sync + QTimer::singleShot(50, this, SLOT(UnlockSettings()) ); //give it a few moments to settle before performing another sync } void LDesktop::LocaleChanged(){ @@ -376,11 +376,11 @@ void LDesktop::UpdateDesktop(){ } //Also show anything available in the /media directory QDir media("/media"); - QStringList mediadirs = media.entryList(QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name); + QStringList mediadirs = media.entryList(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot, QDir::Name); for(int i=0; i<mediadirs.length(); i++){ filelist << media.absoluteFilePath(mediadirs[i]); } - qDebug() << "Found media Dirs:" << mediadirs; + //qDebug() << "Found media Dirs:" << mediadirs; UpdateDesktopPluginArea(); bgDesktop->LoadItems(plugins, filelist); } @@ -456,7 +456,7 @@ void LDesktop::UpdatePanels(){ } } //Give it a 1/2 second before ensuring that the visible desktop area is correct - QTimer::singleShot(500, this, SLOT(UpdateDesktopPluginArea()) ); + QTimer::singleShot(1500, this, SLOT(UpdateDesktopPluginArea()) ); } void LDesktop::UpdateDesktopPluginArea(){ @@ -484,7 +484,8 @@ void LDesktop::UpdateDesktopPluginArea(){ } //Now make sure the desktop plugin area is only the visible area QRect rec = visReg.boundingRect(); - //qDebug() << " - DPArea: Panel-Adjusted rectangle:" << rec; +// QRect rec = LSession::desktop()->availableGeometry(Screen()); + qDebug() << " - DPArea: Panel-Adjusted rectangle:" << rec; //LSession::handle()->XCB->SetScreenWorkArea((unsigned int) Screen(), rec); //Now remove the X offset to place it on the current screen (needs widget-coords, not global) globalWorkRect = rec; //save this for later diff --git a/src-qt5/core/lumina-desktop/LDesktopPluginSpace.cpp b/src-qt5/core/lumina-desktop/LDesktopPluginSpace.cpp index 18126dfa..75e4affc 100644 --- a/src-qt5/core/lumina-desktop/LDesktopPluginSpace.cpp +++ b/src-qt5/core/lumina-desktop/LDesktopPluginSpace.cpp @@ -325,8 +325,9 @@ void LDesktopPluginSpace::reloadPlugins(bool ForceIconUpdate ){ void LDesktopPluginSpace::paintEvent(QPaintEvent*ev){ if(!wallpaper.isNull()){ QPainter painter(this); - painter.setBrush(wallpaper); - painter.drawRect(ev->rect().adjusted(-1,-1,2,2)); + //painter.setBrush(wallpaper); + //painter.drawRect(ev->rect().adjusted(-1,-1,2,2)); + painter.drawPixmap(ev->rect(), wallpaper, ev->rect() ); }else{ QWidget::paintEvent(ev); } diff --git a/src-qt5/core/lumina-desktop/desktop-plugins/applauncher/AppLauncherPlugin.cpp b/src-qt5/core/lumina-desktop/desktop-plugins/applauncher/AppLauncherPlugin.cpp index c8ecf2c8..76b27787 100644 --- a/src-qt5/core/lumina-desktop/desktop-plugins/applauncher/AppLauncherPlugin.cpp +++ b/src-qt5/core/lumina-desktop/desktop-plugins/applauncher/AppLauncherPlugin.cpp @@ -38,6 +38,7 @@ void AppLauncherPlugin::loadButton(){ int icosize = this->height()-4 - 2.2*button->fontMetrics().height(); button->setFixedSize( this->width()-4, this->height()-4); button->setIconSize( QSize(icosize,icosize) ); + button->setToolTip(""); QString txt; if(path.endsWith(".desktop") && ok){ XDGDesktop file(path); @@ -50,6 +51,7 @@ void AppLauncherPlugin::loadButton(){ }else{ button->setWhatsThis(file.filePath); button->setIcon( QIcon(LXDG::findIcon(file.icon,"system-run").pixmap(QSize(icosize,icosize)).scaledToHeight(icosize, Qt::SmoothTransformation) ) ); + if(!file.comment.isEmpty()){button->setWhatsThis(file.comment); } txt = file.name; if(!watcher->files().isEmpty()){ watcher->removePaths(watcher->files()); } watcher->addPath(file.filePath); //make sure to update this shortcut if the file changes @@ -90,7 +92,7 @@ void AppLauncherPlugin::loadButton(){ button->setIcon( QIcon(QPixmap::fromImage(img)) ); } //Now adjust the visible text as necessary based on font/grid sizing - button->setToolTip(txt); + if(button->toolTip().isEmpty()){ button->setToolTip(txt); } //Double check that the visual icon size matches the requested size - otherwise upscale the icon if(button->fontMetrics().width(txt) > (button->width()-OUTMARGIN) ){ //Text too long, try to show it on two lines diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_da.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_da.ts index b4ec953f..1d042180 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_da.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_da.ts @@ -35,7 +35,7 @@ <location filename="../desktop-plugins/applauncher/AppLauncherPlugin.cpp" line="48"/> <location filename="../desktop-plugins/applauncher/AppLauncherPlugin.cpp" line="76"/> <source>Click to Set</source> - <translation>Klik for at vælge</translation> + <translation>Klik for at sætte</translation> </message> <message> <location filename="../desktop-plugins/applauncher/AppLauncherPlugin.cpp" line="137"/> @@ -58,7 +58,7 @@ <message> <location filename="../AppMenu.cpp" line="82"/> <source>Manage Applications</source> - <translation>Håndtér Programmer</translation> + <translation>Håndtér programmer</translation> </message> <message> <location filename="../AppMenu.cpp" line="87"/> @@ -123,7 +123,7 @@ <message> <location filename="../AppMenu.cpp" line="108"/> <source>Wine</source> - <translation></translation> + <translation>Wine</translation> </message> <message> <location filename="../AppMenu.cpp" line="109"/> @@ -146,242 +146,242 @@ <message> <location filename="../BootSplash.ui" line="94"/> <source>Starting the Lumina Desktop...</source> - <translation type="unfinished"></translation> + <translation>Starter Lumina-skrivebordet...</translation> </message> <message> <location filename="../BootSplash.cpp" line="15"/> <source>Version %1</source> - <translation type="unfinished"></translation> + <translation>Version %1</translation> </message> <message> <location filename="../BootSplash.cpp" line="39"/> <source>This desktop is powered by coffee, coffee, and more coffee.</source> - <translation type="unfinished"></translation> + <translation>Dette skrivebord er drevet af kaffe, kaffe og mere kaffe.</translation> </message> <message> <location filename="../BootSplash.cpp" line="41"/> <source>Keep up with desktop news!</source> - <translation type="unfinished"></translation> + <translation>Hold dig opdateret med skrivebordsnyheder!</translation> </message> <message> <location filename="../BootSplash.cpp" line="43"/> <source>There is a full handbook of information about the desktop available online.</source> - <translation type="unfinished"></translation> + <translation>Der er en hel håndbog af information om skrivebordet online.</translation> </message> <message> <location filename="../BootSplash.cpp" line="45"/> <source>Want to change the interface? Everything is customizable in the desktop configuration!</source> - <translation type="unfinished"></translation> + <translation>Vil du ændre brugerfladen? Alt kan tilpasses i skrivebordskonfigurationen!</translation> </message> <message> <location filename="../BootSplash.cpp" line="47"/> <source>Lumina can easily reproduce the interface from most other desktop environments.</source> - <translation type="unfinished"></translation> + <translation>Lumina kan nemt efterligne brugerfladen fra de fleste andre skrivebordsmiljøer.</translation> </message> <message> <location filename="../BootSplash.cpp" line="49"/> <source>This desktop is generously sponsored by iXsystems</source> - <translation type="unfinished"></translation> + <translation>Dette skrivebord er generøst sponsoreret af iXsystems</translation> </message> <message> <location filename="../BootSplash.cpp" line="51"/> <source>I have never been hurt by what I have not said</source> - <translation type="unfinished"></translation> + <translation>Jeg har aldrig taget skade af det jeg aldrig har sagt</translation> </message> <message> <location filename="../BootSplash.cpp" line="53"/> <source>Gotta have more cowbell!</source> - <translation type="unfinished"></translation> + <translation>Mere koklokke tak!</translation> </message> <message> <location filename="../BootSplash.cpp" line="55"/> <source>Everything has its beauty but not everyone sees it.</source> - <translation type="unfinished"></translation> + <translation>Alt har sin skønhed, men alle ser det ikke.</translation> </message> <message> <location filename="../BootSplash.cpp" line="57"/> <source>Before God we are all equally wise - and equally foolish.</source> - <translation type="unfinished"></translation> + <translation>Før gud er vi alle lige kloge - og lige dumme.</translation> </message> <message> <location filename="../BootSplash.cpp" line="59"/> <source>We cannot do everything at once, but we can do something at once.</source> - <translation type="unfinished"></translation> + <translation>Vi kan ikke gøre alt på samme tid, men vi kan gøre noget på en gang.</translation> </message> <message> <location filename="../BootSplash.cpp" line="61"/> <source>One with the law is a majority.</source> - <translation type="unfinished"></translation> + <translation>En med loven er et flertal.</translation> </message> <message> <location filename="../BootSplash.cpp" line="63"/> - <source>Don't expect to build up the weak by pulling down the strong.</source> - <translation type="unfinished"></translation> + <source>Don't expect to build up the weak by pulling down the strong.</source> + <translation>Forvent ikke at opbygge det svage ved at nedrive det stærke.</translation> </message> <message> <location filename="../BootSplash.cpp" line="65"/> - <source>You can't know too much, but you can say too much.</source> - <translation type="unfinished"></translation> + <source>You can't know too much, but you can say too much.</source> + <translation>Du kan ikke vide hvor meget, men du kan sige for meget.</translation> </message> <message> <location filename="../BootSplash.cpp" line="67"/> <source>Duty is not collective; it is personal.</source> - <translation type="unfinished"></translation> + <translation>Pligt er ikke kollektivt; det er personligt.</translation> </message> <message> <location filename="../BootSplash.cpp" line="69"/> <source>Any society that would give up a little liberty to gain a little security will deserve neither and lose both.</source> - <translation type="unfinished"></translation> + <translation>Et samfund som ville opgive en smule frihed for at gå en smule sikkerhed vil ikke gøre sig fortjent til noget af det og miste begge.</translation> </message> <message> <location filename="../BootSplash.cpp" line="71"/> <source>Never trust a computer you can’t throw out a window.</source> - <translation type="unfinished"></translation> + <translation>Stol aldrig på en computer du ikke kan smide ud af et vindue.</translation> </message> <message> <location filename="../BootSplash.cpp" line="73"/> <source>Study the past if you would define the future.</source> - <translation type="unfinished"></translation> + <translation>Lær fortiden af kende hvis du definere fremtiden.</translation> </message> <message> <location filename="../BootSplash.cpp" line="75"/> <source>The way to get started is to quit talking and begin doing.</source> - <translation type="unfinished"></translation> + <translation>Måden at komme i gang, er at holde op med at snakke og begynde at gøre.</translation> </message> <message> <location filename="../BootSplash.cpp" line="77"/> <source>Ask and it will be given to you; search, and you will find; knock and the door will be opened for you.</source> - <translation type="unfinished"></translation> + <translation>Spørg, og det vil blive givet til dig; søg, og du vil finde; bank på, og døren vil blive åbnet for dig.</translation> </message> <message> <location filename="../BootSplash.cpp" line="79"/> <source>Start where you are. Use what you have. Do what you can.</source> - <translation type="unfinished"></translation> + <translation>Start hvor du er. Brug hvad du har. Gør hvad du kan.</translation> </message> <message> <location filename="../BootSplash.cpp" line="81"/> <source>A person who never made a mistake never tried anything new.</source> - <translation type="unfinished"></translation> + <translation>En person der aldrig har lavet fejl, har aldrig prøvet noget nyt.</translation> </message> <message> <location filename="../BootSplash.cpp" line="83"/> <source>It does not matter how slowly you go as long as you do not stop.</source> - <translation type="unfinished"></translation> + <translation>Det har ikke betydning hvor hurtigt du går, så længe du ikke stopper.</translation> </message> <message> <location filename="../BootSplash.cpp" line="85"/> <source>Do what you can, where you are, with what you have.</source> - <translation type="unfinished"></translation> + <translation>Gør hvad du kan, der hvor du er, med det du har.</translation> </message> <message> <location filename="../BootSplash.cpp" line="87"/> <source>Remember no one can make you feel inferior without your consent.</source> - <translation type="unfinished"></translation> + <translation>Husk, at ingen kan få dig til at føle dig underlegen, uden dit samtykke.</translation> </message> <message> <location filename="../BootSplash.cpp" line="89"/> <source>It’s not the years in your life that count. It’s the life in your years.</source> - <translation type="unfinished"></translation> + <translation>Det er ikke årene i dit liv der tæller. Det er livet i dine år.</translation> </message> <message> <location filename="../BootSplash.cpp" line="91"/> <source>Either write something worth reading or do something worth writing.</source> - <translation type="unfinished"></translation> + <translation>Skriv enten noget som er værd at læse, eller noget som er værd at skrive.</translation> </message> <message> <location filename="../BootSplash.cpp" line="93"/> <source>The only way to do great work is to love what you do.</source> - <translation type="unfinished"></translation> + <translation>Den eneste måde at udføre godt arbejde, er ved at elske det du gør.</translation> </message> <message> <location filename="../BootSplash.cpp" line="95"/> <source>Political correctness is tyranny with manners.</source> - <translation type="unfinished"></translation> + <translation>Politisk korrekthed er tyranni uden manerer.</translation> </message> <message> <location filename="../BootSplash.cpp" line="97"/> - <source>Only two things are infinite, the universe and human stupidity, and I'm not sure about the former.</source> - <translation type="unfinished"></translation> + <source>Only two things are infinite, the universe and human stupidity, and I'm not sure about the former.</source> + <translation>Kun to ting er uendelige, universet og menneskelig dumhed, og jeg er ikke sikker på det sidste.</translation> </message> <message> <location filename="../BootSplash.cpp" line="99"/> <source>I find that the harder I work, the more luck I seem to have.</source> - <translation type="unfinished"></translation> + <translation>Jeg oplever at jo hårdere jeg arbejder, jo mere heldig ser jeg ud til at være.</translation> </message> <message> <location filename="../BootSplash.cpp" line="101"/> - <source>Do, or do not. There is no 'try'.</source> - <translation type="unfinished"></translation> + <source>Do, or do not. There is no 'try'.</source> + <translation>Gør, eller gør ikke. Der er ikke noget "prøv".</translation> </message> <message> <location filename="../BootSplash.cpp" line="103"/> <source>A mathematician is a device for turning coffee into theorems.</source> - <translation type="unfinished"></translation> + <translation>En matematiker er en enhed som omdanner kaffe til matematiske sætninger.</translation> </message> <message> <location filename="../BootSplash.cpp" line="105"/> <source>Good people do not need laws to tell them to act responsibly, while bad people will find a way around the laws.</source> - <translation type="unfinished"></translation> + <translation>Gode mennesker behøver ikke love til at fortælle dem at de skal opføre sig ordentligt, mens dårlige mennesker vil finde en vej omkring lovene.</translation> </message> <message> <location filename="../BootSplash.cpp" line="107"/> <source>Black holes are where God divided by zero.</source> - <translation type="unfinished"></translation> + <translation>Sorte huller er når gud dividere med nul.</translation> </message> <message> <location filename="../BootSplash.cpp" line="109"/> - <source>It's kind of fun to do the impossible.</source> - <translation type="unfinished"></translation> + <source>It's kind of fun to do the impossible.</source> + <translation>Det er egentligt sjovt at gøre det umulige.</translation> </message> <message> <location filename="../BootSplash.cpp" line="111"/> <source>Knowledge speaks, but wisdom listens.</source> - <translation type="unfinished"></translation> + <translation>Viden taler, men klogskab lytter.</translation> </message> <message> <location filename="../BootSplash.cpp" line="113"/> <source>A witty saying proves nothing.</source> - <translation type="unfinished"></translation> + <translation>En vittig udtalelse beviser intet.</translation> </message> <message> <location filename="../BootSplash.cpp" line="115"/> <source>Success usually comes to those who are too busy to be looking for it.</source> - <translation type="unfinished"></translation> + <translation>Succes kommer typisk til dem der ikke har travlt med at lede efter det.</translation> </message> <message> <location filename="../BootSplash.cpp" line="117"/> <source>Well-timed silence hath more eloquence than speech.</source> - <translation type="unfinished"></translation> + <translation>Godt timet stilhed havde mere elokvens end tale.</translation> </message> <message> <location filename="../BootSplash.cpp" line="119"/> <source>I have never let my schooling interfere with my education.</source> - <translation type="unfinished"></translation> + <translation>Jeg har aldrig ladet min skolegang blande sig i min uddannelse.</translation> </message> <message> <location filename="../BootSplash.cpp" line="121"/> <source>The best way to predict the future is to invent it.</source> - <translation type="unfinished"></translation> + <translation>Den bedste måde at forudse fremtiden er ved at opfinde den.</translation> </message> <message> <location filename="../BootSplash.cpp" line="123"/> <source>Well done is better than well said.</source> - <translation type="unfinished"></translation> + <translation>Vel gjort eller bedre end vel sagt.</translation> </message> <message> <location filename="../BootSplash.cpp" line="125"/> <source>Sometimes it is not enough that we do our best; we must do what is required.</source> - <translation type="unfinished"></translation> + <translation>Nogen gange er det ikke nok at gøre vores bedst; vi må gøre hvad der er krævet.</translation> </message> <message> <location filename="../BootSplash.cpp" line="127"/> <source>The truth is more important than the facts.</source> - <translation type="unfinished"></translation> + <translation>Sandheden er vigtigere end fakta.</translation> </message> <message> <location filename="../BootSplash.cpp" line="129"/> <source>Better to remain silent and be thought a fool than to speak out and remove all doubt.</source> - <translation type="unfinished"></translation> + <translation>Bedre at forblive stille og blive tænkt som værende et fjols, end at tale og fjerne al tvivl.</translation> </message> <message> <location filename="../BootSplash.cpp" line="140"/> @@ -396,7 +396,7 @@ <message> <location filename="../BootSplash.cpp" line="146"/> <source>Loading User Preferences …</source> - <translation>Indlæser brugerindstillinger …</translation> + <translation>Indlæser brugerpræferencer …</translation> </message> <message> <location filename="../BootSplash.cpp" line="149"/> @@ -431,7 +431,7 @@ <message> <location filename="../BootSplash.cpp" line="167"/> <source>Starting App: %1</source> - <translation>Starter Progr: %1</translation> + <translation>Starter program: %1</translation> </message> </context> <context> @@ -497,12 +497,12 @@ <message> <location filename="../panel-plugins/systemstart/ItemWidget.cpp" line="188"/> <source>Remove from Quicklaunch</source> - <translation>Fjern fra Kvikbar</translation> + <translation>Fjern fra hurtigstart</translation> </message> <message> <location filename="../panel-plugins/systemstart/ItemWidget.cpp" line="191"/> <source>Add to Quicklaunch</source> - <translation>Tilføj til Kvikbar</translation> + <translation>Føj til hurtigstart</translation> </message> </context> <context> @@ -518,7 +518,7 @@ <message> <location filename="../panel-plugins/appmenu/LAppMenuPlugin.cpp" line="37"/> <source>Quickly launch applications or open files</source> - <translation>Hurtigt kør programmer eller åbne filer</translation> + <translation>Start hurtigt programmer eller åbne filer</translation> </message> <message> <location filename="../panel-plugins/appmenu/LAppMenuPlugin.cpp" line="38"/> @@ -598,7 +598,7 @@ <message> <location filename="../panel-plugins/appmenu/LAppMenuPlugin.cpp" line="101"/> <source>Wine</source> - <translation></translation> + <translation>Wine</translation> </message> <message> <location filename="../panel-plugins/appmenu/LAppMenuPlugin.cpp" line="102"/> @@ -608,7 +608,7 @@ <message> <location filename="../panel-plugins/appmenu/LAppMenuPlugin.cpp" line="139"/> <source>Leave</source> - <translation>Forlad</translation> + <translation>Ud</translation> </message> </context> <context> @@ -616,12 +616,12 @@ <message> <location filename="../panel-plugins/battery/LBattery.cpp" line="92"/> <source>%1 % (Charging)</source> - <translation>%1 % (Oplader)</translation> + <translation>%1 % (lader)</translation> </message> <message> <location filename="../panel-plugins/battery/LBattery.cpp" line="93"/> <source>%1 % (%2 Remaining)</source> - <translation>%1 % (%2 Tilbage)</translation> + <translation>%1 % (%2 tilbage)</translation> </message> </context> <context> @@ -634,7 +634,7 @@ <message> <location filename="../panel-plugins/clock/LClock.cpp" line="157"/> <source>Use System Time</source> - <translation>Brug Systemtid</translation> + <translation>Brug systemtid</translation> </message> </context> <context> @@ -642,7 +642,7 @@ <message> <location filename="../desktop-plugins/LDPlugin.cpp" line="38"/> <source>Launch Item</source> - <translation type="unfinished"></translation> + <translation>Start post</translation> </message> <message> <location filename="../desktop-plugins/LDPlugin.cpp" line="42"/> @@ -675,7 +675,7 @@ <message> <location filename="../panel-plugins/desktopbar/LDeskBar.cpp" line="192"/> <source>Favorite Applications</source> - <translation>Farvoritprogrammer</translation> + <translation>Favoritprogrammer</translation> </message> <message> <location filename="../panel-plugins/desktopbar/LDeskBar.cpp" line="194"/> @@ -723,7 +723,7 @@ <message> <location filename="../LDesktop.cpp" line="280"/> <source>Lumina Desktop</source> - <translation>Lumina Skrivebord</translation> + <translation>Lumina-skrivebord</translation> </message> <message> <location filename="../LDesktop.cpp" line="281"/> @@ -733,12 +733,12 @@ <message> <location filename="../LDesktop.cpp" line="291"/> <source>Terminal</source> - <translation></translation> + <translation>Terminal</translation> </message> <message> <location filename="../LDesktop.cpp" line="292"/> <source>Lock Session</source> - <translation type="unfinished"></translation> + <translation>Lås session</translation> </message> <message> <location filename="../LDesktop.cpp" line="293"/> @@ -748,7 +748,7 @@ <message> <location filename="../LDesktop.cpp" line="322"/> <source>Leave</source> - <translation>Forlad</translation> + <translation>Ud</translation> </message> </context> <context> @@ -765,7 +765,7 @@ <message> <location filename="../panel-plugins/systemstart/LStartButton.h" line="52"/> <source>Remove from Quicklaunch</source> - <translation>Fjern fra kvikstart</translation> + <translation>Fjern fra hurtigstart</translation> </message> </context> <context> @@ -782,7 +782,7 @@ <message> <location filename="../panel-plugins/systemdashboard/LSysDashboard.cpp" line="43"/> <source>System Dashboard</source> - <translation>Systemets instrumentpanel</translation> + <translation>Systemets instrumentbræt</translation> </message> </context> <context> @@ -795,12 +795,12 @@ <message> <location filename="../panel-plugins/systemdashboard/SysMenuQuick.ui" line="50"/> <source>System Volume</source> - <translation>Systemdrev</translation> + <translation>Systemlydstyrke</translation> </message> <message> <location filename="../panel-plugins/systemdashboard/SysMenuQuick.ui" line="111"/> <source>Launch Audio Mixer</source> - <translation>Kør Lyd Mixer</translation> + <translation>Start lydmikser</translation> </message> <message> <location filename="../panel-plugins/systemdashboard/SysMenuQuick.ui" line="156"/> @@ -888,7 +888,7 @@ <message> <location filename="../panel-plugins/userbutton/LUserButton.cpp" line="41"/> <source>Quickly launch applications or open files</source> - <translation>Hurtigt kør programmer eller åbne filer</translation> + <translation>Start hurtigt programmer eller åbne filer</translation> </message> </context> <context> @@ -901,7 +901,7 @@ <message> <location filename="../desktop-plugins/systemmonitor/MonitorWidget.ui" line="36"/> <source>Summary</source> - <translation>Oversigt</translation> + <translation>Sammendrag</translation> </message> <message> <location filename="../desktop-plugins/systemmonitor/MonitorWidget.ui" line="42"/> @@ -911,12 +911,12 @@ <message> <location filename="../desktop-plugins/systemmonitor/MonitorWidget.ui" line="56"/> <source>CPU Usage:</source> - <translation>CPU brug:</translation> + <translation>CPU-forbrug:</translation> </message> <message> <location filename="../desktop-plugins/systemmonitor/MonitorWidget.ui" line="70"/> <source>Mem Usage:</source> - <translation>Hukommelsesbrug:</translation> + <translation>Hukommelsesforbrug:</translation> </message> <message> <location filename="../desktop-plugins/systemmonitor/MonitorWidget.ui" line="85"/> @@ -929,7 +929,7 @@ <message> <location filename="../desktop-plugins/notepad/NotepadPlugin.cpp" line="98"/> <source>Note Files (*.note)</source> - <translation>Note Filer (*.note)</translation> + <translation>Note-filer (*.note)</translation> </message> <message> <location filename="../desktop-plugins/notepad/NotepadPlugin.cpp" line="98"/> @@ -949,17 +949,17 @@ <message> <location filename="../desktop-plugins/notepad/NotepadPlugin.cpp" line="138"/> <source>Invalid Note Name: Try Again</source> - <translation>Forkert Note Navn: Prøv Igen</translation> + <translation>Ugyldigt notenavn: Prøv igen</translation> </message> <message> <location filename="../desktop-plugins/notepad/NotepadPlugin.cpp" line="139"/> <source>Select a Note Name</source> - <translation>Vælg et Notenavn</translation> + <translation>Vælg et notenavn</translation> </message> <message> <location filename="../desktop-plugins/notepad/NotepadPlugin.cpp" line="166"/> <source>Open Text File</source> - <translation>Åbn Tekstfil</translation> + <translation>Åbn tekstfil</translation> </message> <message> <location filename="../desktop-plugins/notepad/NotepadPlugin.cpp" line="167"/> @@ -982,57 +982,57 @@ <message> <location filename="../panel-plugins/audioplayer/PPlayerWidget.ui" line="14"/> <source>Form</source> - <translation type="unfinished">Formular</translation> + <translation>Formular</translation> </message> <message> <location filename="../panel-plugins/audioplayer/PPlayerWidget.cpp" line="69"/> <source>Clear Playlist</source> - <translation type="unfinished">Ryd spilleliste</translation> + <translation>Ryd spilleliste</translation> </message> <message> <location filename="../panel-plugins/audioplayer/PPlayerWidget.cpp" line="70"/> <source>Shuffle Playlist</source> - <translation type="unfinished">Bland spilleliste</translation> + <translation>Bland spilleliste</translation> </message> <message> <location filename="../panel-plugins/audioplayer/PPlayerWidget.cpp" line="72"/> <source>Add Files</source> - <translation type="unfinished">Tilføj filer</translation> + <translation>Tilføj filer</translation> </message> <message> <location filename="../panel-plugins/audioplayer/PPlayerWidget.cpp" line="73"/> <source>Add Directory</source> - <translation type="unfinished">Tilføj mappe</translation> + <translation>Tilføj mappe</translation> </message> <message> <location filename="../panel-plugins/audioplayer/PPlayerWidget.cpp" line="74"/> <source>Add URL</source> - <translation type="unfinished">Tilføj URL</translation> + <translation>Tilføj URL</translation> </message> <message> <location filename="../panel-plugins/audioplayer/PPlayerWidget.cpp" line="102"/> <source>Multimedia Files</source> - <translation type="unfinished">Mediefiler</translation> + <translation>Multimediefiler</translation> </message> <message> <location filename="../panel-plugins/audioplayer/PPlayerWidget.cpp" line="103"/> <source>Select Multimedia Files</source> - <translation type="unfinished">Vælg mediefiler</translation> + <translation>Vælg multimediefiler</translation> </message> <message> <location filename="../panel-plugins/audioplayer/PPlayerWidget.cpp" line="130"/> <source>Select Multimedia Directory</source> - <translation type="unfinished">Vælg Medie Mappe</translation> + <translation>Vælg multimediemappe</translation> </message> <message> <location filename="../panel-plugins/audioplayer/PPlayerWidget.cpp" line="159"/> <source>Enter a valid URL for a multimedia file or stream:</source> - <translation type="unfinished">Indtast en korrekt URL til mediefil eller stream:</translation> + <translation>Indtast en gyldig URL til en multimediefil eller strøm:</translation> </message> <message> <location filename="../panel-plugins/audioplayer/PPlayerWidget.cpp" line="161"/> <source>Multimedia URL</source> - <translation type="unfinished">Medie URL</translation> + <translation>Multimedie-URL</translation> </message> </context> <context> @@ -1070,27 +1070,27 @@ <message> <location filename="../desktop-plugins/audioplayer/PlayerWidget.cpp" line="102"/> <source>Multimedia Files</source> - <translation>Mediefiler</translation> + <translation>Multimediefiler</translation> </message> <message> <location filename="../desktop-plugins/audioplayer/PlayerWidget.cpp" line="103"/> <source>Select Multimedia Files</source> - <translation>Vælg mediefiler</translation> + <translation>Vælg multimediefiler</translation> </message> <message> <location filename="../desktop-plugins/audioplayer/PlayerWidget.cpp" line="130"/> <source>Select Multimedia Directory</source> - <translation>Vælg Medie Mappe</translation> + <translation>Vælg multimediemappe</translation> </message> <message> <location filename="../desktop-plugins/audioplayer/PlayerWidget.cpp" line="159"/> <source>Enter a valid URL for a multimedia file or stream:</source> - <translation>Indtast en korrekt URL til mediefil eller stream:</translation> + <translation>Indtast en gyldig URL til en multimediefil eller strøm:</translation> </message> <message> <location filename="../desktop-plugins/audioplayer/PlayerWidget.cpp" line="161"/> <source>Multimedia URL</source> - <translation>Medie URL</translation> + <translation>Multimedie-URL</translation> </message> </context> <context> @@ -1135,12 +1135,12 @@ <message> <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.ui" line="263"/> <source>New Feed Subscription</source> - <translation>Abonner på nyt RSS-feed</translation> + <translation>Abonner på nyt feed</translation> </message> <message> <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.ui" line="287"/> <source>RSS URL</source> - <translation>RSS URL</translation> + <translation>RSS-URL</translation> </message> <message> <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.ui" line="302"/> @@ -1150,7 +1150,7 @@ <message> <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.ui" line="332"/> <source>Add to Feeds</source> - <translation>Tilføj til RSS-feeds</translation> + <translation>Tilføj til feeds</translation> </message> <message> <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.ui" line="409"/> @@ -1160,7 +1160,7 @@ <message> <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.ui" line="430"/> <source>Manual Sync Only</source> - <translation>Udelukkende manuel synkronisering</translation> + <translation>Kun manuel synkronisering</translation> </message> <message> <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.ui" line="437"/> @@ -1170,7 +1170,7 @@ <message> <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.ui" line="440"/> <source>Default Sync Interval</source> - <translation>Standard synkroniseringsinterval</translation> + <translation>Standardsynkroniseringsinterval</translation> </message> <message> <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.ui" line="471"/> @@ -1216,7 +1216,7 @@ <message> <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> <source>Feed URL: %1</source> - <translation>RSS-feed URL: %1</translation> + <translation>Feed-URL: %1</translation> </message> <message> <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> @@ -1254,27 +1254,27 @@ <message> <location filename="../SettingsMenu.cpp" line="30"/> <source>Screensaver</source> - <translation>Skærmskåner</translation> + <translation>Pauseskærm</translation> </message> <message> <location filename="../SettingsMenu.cpp" line="26"/> <source>Preferences</source> - <translation>Indstillinger</translation> + <translation>Præferencer</translation> </message> <message> <location filename="../SettingsMenu.cpp" line="33"/> <source>Wallpaper</source> - <translation type="unfinished"></translation> + <translation>Tapet</translation> </message> <message> <location filename="../SettingsMenu.cpp" line="36"/> <source>Display</source> - <translation>Fremvis</translation> + <translation>Skærm</translation> </message> <message> <location filename="../SettingsMenu.cpp" line="39"/> <source>All Desktop Settings</source> - <translation type="unfinished"></translation> + <translation>Alle skrivebordsindstillinger</translation> </message> <message> <location filename="../SettingsMenu.cpp" line="54"/> @@ -1307,7 +1307,7 @@ <message> <location filename="../panel-plugins/systemstart/StartMenu.ui" line="199"/> <source>Browse Applications</source> - <translation>Gennemse Programmer</translation> + <translation>Gennemse programmer</translation> </message> <message> <location filename="../panel-plugins/systemstart/StartMenu.ui" line="234"/> @@ -1317,12 +1317,12 @@ <message> <location filename="../panel-plugins/systemstart/StartMenu.ui" line="305"/> <source>Leave</source> - <translation>Forlad</translation> + <translation>Ud</translation> </message> <message> <location filename="../panel-plugins/systemstart/StartMenu.ui" line="379"/> <source>Manage Applications</source> - <translation>Håndtér Programmer</translation> + <translation>Håndtér programmer</translation> </message> <message> <location filename="../panel-plugins/systemstart/StartMenu.ui" line="408"/> @@ -1332,12 +1332,12 @@ <message> <location filename="../panel-plugins/systemstart/StartMenu.ui" line="488"/> <source>Configure Desktop</source> - <translation>Indstil skrivebordsmiljø</translation> + <translation>Konfigurer skrivebord</translation> </message> <message> <location filename="../panel-plugins/systemstart/StartMenu.ui" line="1065"/> <source>Sign Out User</source> - <translation>Log Bruger Ud</translation> + <translation>Log bruger ud</translation> </message> <message> <location filename="../panel-plugins/systemstart/StartMenu.ui" line="989"/> @@ -1347,22 +1347,22 @@ <message> <location filename="../panel-plugins/systemstart/StartMenu.ui" line="262"/> <source>Preferences</source> - <translation>Indstillinger</translation> + <translation>Præferencer</translation> </message> <message> <location filename="../panel-plugins/systemstart/StartMenu.ui" line="1017"/> <source>Power Off System</source> - <translation>Sluk System</translation> + <translation>Sluk system</translation> </message> <message> <location filename="../panel-plugins/systemstart/StartMenu.ui" line="1036"/> <source>(System Performing Updates)</source> - <translation>(System Udfører Opdateringer)</translation> + <translation>(systemet udfører opdateringer)</translation> </message> <message> <location filename="../panel-plugins/systemstart/StartMenu.ui" line="924"/> <source>Suspend System</source> - <translation>Systemdvale</translation> + <translation>Sæt system i hvile</translation> </message> <message> <location filename="../panel-plugins/systemstart/StartMenu.ui" line="1125"/> @@ -1382,17 +1382,17 @@ <message> <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="500"/> <source>%1% (Plugged In)</source> - <translation>%1% (Indsat)</translation> + <translation>%1% (tilsluttet)</translation> </message> <message> <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="504"/> <source>%1% (%2 Estimated)</source> - <translation>%1% (%2 Estimeret)</translation> + <translation>%1% (%2 estimeret)</translation> </message> <message> <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> <source>%1% Remaining</source> - <translation>%1% Tilbage</translation> + <translation>%1% tilbage</translation> </message> <message> <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="521"/> @@ -1407,7 +1407,7 @@ <message> <location filename="../SystemWindow.ui" line="14"/> <source>System Options</source> - <translation>Systemindstillinger</translation> + <translation>Systemvalgmuligheder</translation> </message> <message> <location filename="../SystemWindow.ui" line="55"/> @@ -1427,7 +1427,7 @@ <message> <location filename="../SystemWindow.ui" line="127"/> <source>Cancel</source> - <translation>Annullér</translation> + <translation>Annuller</translation> </message> <message> <location filename="../SystemWindow.ui" line="156"/> @@ -1478,7 +1478,7 @@ <message> <location filename="../panel-plugins/userbutton/UserWidget.ui" line="14"/> <source>UserWidget</source> - <translation>Bruger Widget</translation> + <translation>Brugerwidget</translation> </message> <message> <location filename="../panel-plugins/userbutton/UserWidget.ui" line="24"/> @@ -1489,7 +1489,7 @@ <message> <location filename="../panel-plugins/userbutton/UserWidget.ui" line="65"/> <source>Favorite Applications</source> - <translation>Farvoritprogrammer</translation> + <translation>Favoritprogrammer</translation> </message> <message> <location filename="../panel-plugins/userbutton/UserWidget.ui" line="68"/> @@ -1556,7 +1556,7 @@ <message> <location filename="../panel-plugins/userbutton/UserWidget.ui" line="461"/> <source>Desktop Preferences</source> - <translation>Skrivebordsindstillinger</translation> + <translation>Skrivebordspræferencer</translation> </message> <message> <location filename="../panel-plugins/userbutton/UserWidget.ui" line="473"/> @@ -1566,12 +1566,12 @@ <message> <location filename="../panel-plugins/userbutton/UserWidget.ui" line="495"/> <source>Desktop Appearance/Plugins</source> - <translation>Skrivebord Udseende/Plugins</translation> + <translation>Skrivebord udseende/plugins</translation> </message> <message> <location filename="../panel-plugins/userbutton/UserWidget.ui" line="517"/> <source>Screen Configuration</source> - <translation>Skærm Indstillinger</translation> + <translation>Skærmkonfiguration</translation> </message> <message> <location filename="../panel-plugins/userbutton/UserWidget.ui" line="539"/> @@ -1581,7 +1581,7 @@ <message> <location filename="../panel-plugins/userbutton/UserWidget.ui" line="581"/> <source>About the Lumina Desktop</source> - <translation>Om Lumina Skrivebordet</translation> + <translation>Om Lumina-skrivebordet</translation> </message> <message> <location filename="../panel-plugins/userbutton/UserWidget.cpp" line="289"/> @@ -1641,12 +1641,12 @@ <message> <location filename="../panel-plugins/userbutton/UserWidget.cpp" line="300"/> <source>Utilities</source> - <translation>Hjælpeværktøjer</translation> + <translation>Redskaber</translation> </message> <message> <location filename="../panel-plugins/userbutton/UserWidget.cpp" line="301"/> <source>Wine</source> - <translation></translation> + <translation>Wine</translation> </message> <message> <location filename="../panel-plugins/userbutton/UserWidget.cpp" line="302"/> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_de.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_de.ts index b9d1e7c5..2935b900 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_de.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_de.ts @@ -6,7 +6,7 @@ <message> <location filename="../panel-plugins/applauncher/AppLaunchButton.cpp" line="37"/> <source>Click to assign an application</source> - <translation>Klicke um Programm zuzuweisen</translation> + <translation>Klicken Sie, um eine Anwendung zuzuweisen</translation> </message> <message> <location filename="../panel-plugins/applauncher/AppLaunchButton.cpp" line="42"/> @@ -16,7 +16,7 @@ <message> <location filename="../panel-plugins/applauncher/AppLaunchButton.cpp" line="49"/> <source>Open %1</source> - <translation>Öffne %1</translation> + <translation>%1 öffnen</translation> </message> <message> <location filename="../panel-plugins/applauncher/AppLaunchButton.cpp" line="67"/> @@ -146,17 +146,17 @@ <message> <location filename="../BootSplash.ui" line="94"/> <source>Starting the Lumina Desktop...</source> - <translation type="unfinished"></translation> + <translation>Lumina-Arbeitsfläche wird gestartet...</translation> </message> <message> <location filename="../BootSplash.cpp" line="15"/> <source>Version %1</source> - <translation type="unfinished"></translation> + <translation>Version %1</translation> </message> <message> <location filename="../BootSplash.cpp" line="39"/> <source>This desktop is powered by coffee, coffee, and more coffee.</source> - <translation type="unfinished"></translation> + <translation>Diese Arbeitsfläche wird durch Kaffee, Kaffee und mehr Kaffee angetrieben.</translation> </message> <message> <location filename="../BootSplash.cpp" line="41"/> @@ -181,12 +181,12 @@ <message> <location filename="../BootSplash.cpp" line="49"/> <source>This desktop is generously sponsored by iXsystems</source> - <translation type="unfinished"></translation> + <translation>Diese Arbeitsfläche wird großzügig von iXsystems gesponsert</translation> </message> <message> <location filename="../BootSplash.cpp" line="51"/> <source>I have never been hurt by what I have not said</source> - <translation type="unfinished"></translation> + <translation>Ich bin niemals durch das verletzt worden, was ich nicht gesagt habe</translation> </message> <message> <location filename="../BootSplash.cpp" line="53"/> @@ -196,17 +196,17 @@ <message> <location filename="../BootSplash.cpp" line="55"/> <source>Everything has its beauty but not everyone sees it.</source> - <translation type="unfinished"></translation> + <translation>Alles hat seine Schönheit, aber nicht jeder sieht es.</translation> </message> <message> <location filename="../BootSplash.cpp" line="57"/> <source>Before God we are all equally wise - and equally foolish.</source> - <translation type="unfinished"></translation> + <translation>Vor Gott sind wir alle gleich weise - und gleich dumm.</translation> </message> <message> <location filename="../BootSplash.cpp" line="59"/> <source>We cannot do everything at once, but we can do something at once.</source> - <translation type="unfinished"></translation> + <translation>Wir können nicht alles auf einmal machen, aber wir können etwas auf einmal machen.</translation> </message> <message> <location filename="../BootSplash.cpp" line="61"/> @@ -215,13 +215,13 @@ </message> <message> <location filename="../BootSplash.cpp" line="63"/> - <source>Don't expect to build up the weak by pulling down the strong.</source> + <source>Don't expect to build up the weak by pulling down the strong.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../BootSplash.cpp" line="65"/> - <source>You can't know too much, but you can say too much.</source> - <translation type="unfinished"></translation> + <source>You can't know too much, but you can say too much.</source> + <translation>Sie können nicht zu viel wissen, aber Sie können zu viel sagen.</translation> </message> <message> <location filename="../BootSplash.cpp" line="67"/> @@ -236,12 +236,12 @@ <message> <location filename="../BootSplash.cpp" line="71"/> <source>Never trust a computer you can’t throw out a window.</source> - <translation type="unfinished"></translation> + <translation>Trauen Sie niemals einem Computer, den Sie nicht aus einem Fenster werfen können.</translation> </message> <message> <location filename="../BootSplash.cpp" line="73"/> <source>Study the past if you would define the future.</source> - <translation type="unfinished"></translation> + <translation>Studieren Sie die Vergangenheit, wenn Sie die Zukunft bestimmen würden.</translation> </message> <message> <location filename="../BootSplash.cpp" line="75"/> @@ -261,12 +261,12 @@ <message> <location filename="../BootSplash.cpp" line="81"/> <source>A person who never made a mistake never tried anything new.</source> - <translation type="unfinished"></translation> + <translation>Eine Person, die nie einen Fehler gemacht hat, hat nie etwas Neues versucht.</translation> </message> <message> <location filename="../BootSplash.cpp" line="83"/> <source>It does not matter how slowly you go as long as you do not stop.</source> - <translation type="unfinished"></translation> + <translation>Es spielt keine Rolle, wie langsam Sie gehen, solange Sie nicht aufhören.</translation> </message> <message> <location filename="../BootSplash.cpp" line="85"/> @@ -291,17 +291,17 @@ <message> <location filename="../BootSplash.cpp" line="93"/> <source>The only way to do great work is to love what you do.</source> - <translation type="unfinished"></translation> + <translation>Der einzige Weg großartige Arbeit zu verrichten, ist zu lieben, was Sie machen.</translation> </message> <message> <location filename="../BootSplash.cpp" line="95"/> <source>Political correctness is tyranny with manners.</source> - <translation type="unfinished"></translation> + <translation>Politische Korrektheit ist Tyrannei mit Manieren.</translation> </message> <message> <location filename="../BootSplash.cpp" line="97"/> - <source>Only two things are infinite, the universe and human stupidity, and I'm not sure about the former.</source> - <translation type="unfinished"></translation> + <source>Only two things are infinite, the universe and human stupidity, and I'm not sure about the former.</source> + <translation>Nur zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber beim ersten bin ich mir nicht sicher.</translation> </message> <message> <location filename="../BootSplash.cpp" line="99"/> @@ -310,13 +310,13 @@ </message> <message> <location filename="../BootSplash.cpp" line="101"/> - <source>Do, or do not. There is no 'try'.</source> - <translation type="unfinished"></translation> + <source>Do, or do not. There is no 'try'.</source> + <translation>Machen oder nicht machen. Es gibt kein "Versuchen".</translation> </message> <message> <location filename="../BootSplash.cpp" line="103"/> <source>A mathematician is a device for turning coffee into theorems.</source> - <translation type="unfinished"></translation> + <translation>Ein Mathematiker ist ein Gerät, um Kaffee in Theoreme umzuwandeln.</translation> </message> <message> <location filename="../BootSplash.cpp" line="105"/> @@ -326,22 +326,22 @@ <message> <location filename="../BootSplash.cpp" line="107"/> <source>Black holes are where God divided by zero.</source> - <translation type="unfinished"></translation> + <translation>Schwarze Löcher sind, wo Gott durch Null geteilt hat.</translation> </message> <message> <location filename="../BootSplash.cpp" line="109"/> - <source>It's kind of fun to do the impossible.</source> - <translation type="unfinished"></translation> + <source>It's kind of fun to do the impossible.</source> + <translation>Es macht Spaß, das Unmögliche zu tun.</translation> </message> <message> <location filename="../BootSplash.cpp" line="111"/> <source>Knowledge speaks, but wisdom listens.</source> - <translation type="unfinished"></translation> + <translation>Wissen spricht, aber Weisheit hört zu.</translation> </message> <message> <location filename="../BootSplash.cpp" line="113"/> <source>A witty saying proves nothing.</source> - <translation type="unfinished"></translation> + <translation>Ein witziges Sprichwort beweist nichts.</translation> </message> <message> <location filename="../BootSplash.cpp" line="115"/> @@ -351,7 +351,7 @@ <message> <location filename="../BootSplash.cpp" line="117"/> <source>Well-timed silence hath more eloquence than speech.</source> - <translation type="unfinished"></translation> + <translation>Zeitlich gut angesetzte Stille hat mehr Sprachfertigkeit als eine Rede.</translation> </message> <message> <location filename="../BootSplash.cpp" line="119"/> @@ -361,12 +361,12 @@ <message> <location filename="../BootSplash.cpp" line="121"/> <source>The best way to predict the future is to invent it.</source> - <translation type="unfinished"></translation> + <translation>Der beste Weg, die Zukunft vorauszusagen, ist, sie zu erfinden.</translation> </message> <message> <location filename="../BootSplash.cpp" line="123"/> <source>Well done is better than well said.</source> - <translation type="unfinished"></translation> + <translation>Gut gemacht ist besser als gut gesagt.</translation> </message> <message> <location filename="../BootSplash.cpp" line="125"/> @@ -376,7 +376,7 @@ <message> <location filename="../BootSplash.cpp" line="127"/> <source>The truth is more important than the facts.</source> - <translation type="unfinished"></translation> + <translation>Die Wahrheit ist wichtiger als die Fakten.</translation> </message> <message> <location filename="../BootSplash.cpp" line="129"/> @@ -642,7 +642,7 @@ <message> <location filename="../desktop-plugins/LDPlugin.cpp" line="38"/> <source>Launch Item</source> - <translation type="unfinished"></translation> + <translation>Element starten</translation> </message> <message> <location filename="../desktop-plugins/LDPlugin.cpp" line="42"/> @@ -738,7 +738,7 @@ <message> <location filename="../LDesktop.cpp" line="292"/> <source>Lock Session</source> - <translation type="unfinished"></translation> + <translation>Sitzung sperren</translation> </message> <message> <location filename="../LDesktop.cpp" line="293"/> @@ -982,7 +982,7 @@ <message> <location filename="../panel-plugins/audioplayer/PPlayerWidget.ui" line="14"/> <source>Form</source> - <translation type="unfinished"></translation> + <translation>Formular</translation> </message> <message> <location filename="../panel-plugins/audioplayer/PPlayerWidget.cpp" line="69"/> @@ -1264,7 +1264,7 @@ <message> <location filename="../SettingsMenu.cpp" line="33"/> <source>Wallpaper</source> - <translation type="unfinished"></translation> + <translation>Hintergrundbild</translation> </message> <message> <location filename="../SettingsMenu.cpp" line="36"/> @@ -1274,7 +1274,7 @@ <message> <location filename="../SettingsMenu.cpp" line="39"/> <source>All Desktop Settings</source> - <translation type="unfinished"></translation> + <translation>Alle Arbeitsflächeneinstellungen</translation> </message> <message> <location filename="../SettingsMenu.cpp" line="54"/> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_it.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_it.ts index 26c14237..8dac2274 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_it.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_it.ts @@ -221,7 +221,7 @@ <message> <location filename="../BootSplash.cpp" line="65"/> <source>You can't know too much, but you can say too much.</source> - <translation type="unfinished"></translation> + <translation>Non puoi sapere troppo, ma puoi dire troppo.</translation> </message> <message> <location filename="../BootSplash.cpp" line="67"/> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_lt.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_lt.ts index a4a5ff5c..6e97229f 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_lt.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_lt.ts @@ -156,12 +156,12 @@ <message> <location filename="../BootSplash.cpp" line="39"/> <source>This desktop is powered by coffee, coffee, and more coffee.</source> - <translation type="unfinished"></translation> + <translation>Šis darbalaukis veikia su kava, kava ir dar daugiau kavos.</translation> </message> <message> <location filename="../BootSplash.cpp" line="41"/> <source>Keep up with desktop news!</source> - <translation type="unfinished"></translation> + <translation>Sekite darbalaukio naujienas!</translation> </message> <message> <location filename="../BootSplash.cpp" line="43"/> @@ -246,7 +246,7 @@ <message> <location filename="../BootSplash.cpp" line="75"/> <source>The way to get started is to quit talking and begin doing.</source> - <translation type="unfinished"></translation> + <translation>Darbo pradžios paslaptis yra nustoti kalbėti ir pradėti daryti.</translation> </message> <message> <location filename="../BootSplash.cpp" line="77"/> @@ -306,7 +306,7 @@ <message> <location filename="../BootSplash.cpp" line="99"/> <source>I find that the harder I work, the more luck I seem to have.</source> - <translation type="unfinished"></translation> + <translation>Aš suprantu, kad kuo daugiau aš dirbu, tuo labiau man sekasi.</translation> </message> <message> <location filename="../BootSplash.cpp" line="101"/> @@ -331,7 +331,7 @@ <message> <location filename="../BootSplash.cpp" line="109"/> <source>It's kind of fun to do the impossible.</source> - <translation type="unfinished"></translation> + <translation>Smagu yra daryti tai, kas neįmanoma.</translation> </message> <message> <location filename="../BootSplash.cpp" line="111"/> @@ -346,7 +346,7 @@ <message> <location filename="../BootSplash.cpp" line="115"/> <source>Success usually comes to those who are too busy to be looking for it.</source> - <translation type="unfinished"></translation> + <translation>Sėkmė, dažniausiai, nusišypso tiems, kas yra pernelyg užsiėmę, kad jos ieškotų.</translation> </message> <message> <location filename="../BootSplash.cpp" line="117"/> @@ -361,7 +361,7 @@ <message> <location filename="../BootSplash.cpp" line="121"/> <source>The best way to predict the future is to invent it.</source> - <translation type="unfinished"></translation> + <translation>Geriausiai būdas išpranašauti ateitį yra ją išrasti.</translation> </message> <message> <location filename="../BootSplash.cpp" line="123"/> @@ -371,7 +371,7 @@ <message> <location filename="../BootSplash.cpp" line="125"/> <source>Sometimes it is not enough that we do our best; we must do what is required.</source> - <translation type="unfinished"></translation> + <translation>Kartais, mums nepakanka daryti tai, kas geriausia; privalome daryti tai, kas reikalinga.</translation> </message> <message> <location filename="../BootSplash.cpp" line="127"/> @@ -982,7 +982,7 @@ <message> <location filename="../panel-plugins/audioplayer/PPlayerWidget.ui" line="14"/> <source>Form</source> - <translation type="unfinished">Forma</translation> + <translation>Forma</translation> </message> <message> <location filename="../panel-plugins/audioplayer/PPlayerWidget.cpp" line="69"/> @@ -1017,22 +1017,22 @@ <message> <location filename="../panel-plugins/audioplayer/PPlayerWidget.cpp" line="103"/> <source>Select Multimedia Files</source> - <translation type="unfinished">Pasirinkti multimedijos failus</translation> + <translation>Pasirinkti multimedijos failus</translation> </message> <message> <location filename="../panel-plugins/audioplayer/PPlayerWidget.cpp" line="130"/> <source>Select Multimedia Directory</source> - <translation type="unfinished">Pasirinkti multimedijos katalogą</translation> + <translation>Pasirinkti multimedijos katalogą</translation> </message> <message> <location filename="../panel-plugins/audioplayer/PPlayerWidget.cpp" line="159"/> <source>Enter a valid URL for a multimedia file or stream:</source> - <translation type="unfinished">Įveskite taisyklingą multimedijos failo ar srauto URL:</translation> + <translation>Įveskite taisyklingą multimedijos failo ar srauto URL:</translation> </message> <message> <location filename="../panel-plugins/audioplayer/PPlayerWidget.cpp" line="161"/> <source>Multimedia URL</source> - <translation type="unfinished">Multimedijos URL</translation> + <translation>Multimedijos URL</translation> </message> </context> <context> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_pl.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_pl.ts index 8ce06739..806b46f3 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_pl.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_pl.ts @@ -231,157 +231,157 @@ <message> <location filename="../BootSplash.cpp" line="69"/> <source>Any society that would give up a little liberty to gain a little security will deserve neither and lose both.</source> - <translation type="unfinished"></translation> + <translation>Any society that would give up a little liberty to gain a little security will deserve neither and lose both.</translation> </message> <message> <location filename="../BootSplash.cpp" line="71"/> <source>Never trust a computer you can’t throw out a window.</source> - <translation type="unfinished"></translation> + <translation>Never trust a computer you can’t throw out a window.</translation> </message> <message> <location filename="../BootSplash.cpp" line="73"/> <source>Study the past if you would define the future.</source> - <translation type="unfinished"></translation> + <translation>Study the past if you would define the future.</translation> </message> <message> <location filename="../BootSplash.cpp" line="75"/> <source>The way to get started is to quit talking and begin doing.</source> - <translation type="unfinished"></translation> + <translation>The way to get started is to quit talking and begin doing.</translation> </message> <message> <location filename="../BootSplash.cpp" line="77"/> <source>Ask and it will be given to you; search, and you will find; knock and the door will be opened for you.</source> - <translation type="unfinished"></translation> + <translation>Ask and it will be given to you; search, and you will find; knock and the door will be opened for you.</translation> </message> <message> <location filename="../BootSplash.cpp" line="79"/> <source>Start where you are. Use what you have. Do what you can.</source> - <translation type="unfinished"></translation> + <translation>Start where you are. Use what you have. Do what you can.</translation> </message> <message> <location filename="../BootSplash.cpp" line="81"/> <source>A person who never made a mistake never tried anything new.</source> - <translation type="unfinished"></translation> + <translation>A person who never made a mistake never tried anything new.</translation> </message> <message> <location filename="../BootSplash.cpp" line="83"/> <source>It does not matter how slowly you go as long as you do not stop.</source> - <translation type="unfinished"></translation> + <translation>It does not matter how slowly you go as long as you do not stop.</translation> </message> <message> <location filename="../BootSplash.cpp" line="85"/> <source>Do what you can, where you are, with what you have.</source> - <translation type="unfinished"></translation> + <translation>Do what you can, where you are, with what you have.</translation> </message> <message> <location filename="../BootSplash.cpp" line="87"/> <source>Remember no one can make you feel inferior without your consent.</source> - <translation type="unfinished"></translation> + <translation>Remember no one can make you feel inferior without your consent.</translation> </message> <message> <location filename="../BootSplash.cpp" line="89"/> <source>It’s not the years in your life that count. It’s the life in your years.</source> - <translation type="unfinished"></translation> + <translation>It’s not the years in your life that count. It’s the life in your years.</translation> </message> <message> <location filename="../BootSplash.cpp" line="91"/> <source>Either write something worth reading or do something worth writing.</source> - <translation type="unfinished"></translation> + <translation>Either write something worth reading or do something worth writing.</translation> </message> <message> <location filename="../BootSplash.cpp" line="93"/> <source>The only way to do great work is to love what you do.</source> - <translation type="unfinished"></translation> + <translation>The only way to do great work is to love what you do.</translation> </message> <message> <location filename="../BootSplash.cpp" line="95"/> <source>Political correctness is tyranny with manners.</source> - <translation type="unfinished"></translation> + <translation>Political correctness is tyranny with manners.</translation> </message> <message> <location filename="../BootSplash.cpp" line="97"/> <source>Only two things are infinite, the universe and human stupidity, and I'm not sure about the former.</source> - <translation type="unfinished"></translation> + <translation>Only two things are infinite, the universe and human stupidity, and I'm not sure about the former.</translation> </message> <message> <location filename="../BootSplash.cpp" line="99"/> <source>I find that the harder I work, the more luck I seem to have.</source> - <translation type="unfinished"></translation> + <translation>I find that the harder I work, the more luck I seem to have.</translation> </message> <message> <location filename="../BootSplash.cpp" line="101"/> <source>Do, or do not. There is no 'try'.</source> - <translation type="unfinished"></translation> + <translation>Do, or do not. There is no 'try'.</translation> </message> <message> <location filename="../BootSplash.cpp" line="103"/> <source>A mathematician is a device for turning coffee into theorems.</source> - <translation type="unfinished"></translation> + <translation>A mathematician is a device for turning coffee into theorems.</translation> </message> <message> <location filename="../BootSplash.cpp" line="105"/> <source>Good people do not need laws to tell them to act responsibly, while bad people will find a way around the laws.</source> - <translation type="unfinished"></translation> + <translation>Good people do not need laws to tell them to act responsibly, while bad people will find a way around the laws.</translation> </message> <message> <location filename="../BootSplash.cpp" line="107"/> <source>Black holes are where God divided by zero.</source> - <translation type="unfinished"></translation> + <translation>Black holes are where God divided by zero.</translation> </message> <message> <location filename="../BootSplash.cpp" line="109"/> <source>It's kind of fun to do the impossible.</source> - <translation type="unfinished"></translation> + <translation>It's kind of fun to do the impossible.</translation> </message> <message> <location filename="../BootSplash.cpp" line="111"/> <source>Knowledge speaks, but wisdom listens.</source> - <translation type="unfinished"></translation> + <translation>Knowledge speaks, but wisdom listens.</translation> </message> <message> <location filename="../BootSplash.cpp" line="113"/> <source>A witty saying proves nothing.</source> - <translation type="unfinished"></translation> + <translation>A witty saying proves nothing.</translation> </message> <message> <location filename="../BootSplash.cpp" line="115"/> <source>Success usually comes to those who are too busy to be looking for it.</source> - <translation type="unfinished"></translation> + <translation>Success usually comes to those who are too busy to be looking for it.</translation> </message> <message> <location filename="../BootSplash.cpp" line="117"/> <source>Well-timed silence hath more eloquence than speech.</source> - <translation type="unfinished"></translation> + <translation>Well-timed silence hath more eloquence than speech.</translation> </message> <message> <location filename="../BootSplash.cpp" line="119"/> <source>I have never let my schooling interfere with my education.</source> - <translation type="unfinished"></translation> + <translation>I have never let my schooling interfere with my education.</translation> </message> <message> <location filename="../BootSplash.cpp" line="121"/> <source>The best way to predict the future is to invent it.</source> - <translation type="unfinished"></translation> + <translation>The best way to predict the future is to invent it.</translation> </message> <message> <location filename="../BootSplash.cpp" line="123"/> <source>Well done is better than well said.</source> - <translation type="unfinished"></translation> + <translation>Well done is better than well said.</translation> </message> <message> <location filename="../BootSplash.cpp" line="125"/> <source>Sometimes it is not enough that we do our best; we must do what is required.</source> - <translation type="unfinished"></translation> + <translation>Sometimes it is not enough that we do our best; we must do what is required.</translation> </message> <message> <location filename="../BootSplash.cpp" line="127"/> <source>The truth is more important than the facts.</source> - <translation type="unfinished"></translation> + <translation>The truth is more important than the facts.</translation> </message> <message> <location filename="../BootSplash.cpp" line="129"/> <source>Better to remain silent and be thought a fool than to speak out and remove all doubt.</source> - <translation type="unfinished"></translation> + <translation>Better to remain silent and be thought a fool than to speak out and remove all doubt.</translation> </message> <message> <location filename="../BootSplash.cpp" line="140"/> @@ -642,17 +642,17 @@ <message> <location filename="../desktop-plugins/LDPlugin.cpp" line="38"/> <source>Launch Item</source> - <translation type="unfinished"></translation> + <translation>Uruchom</translation> </message> <message> <location filename="../desktop-plugins/LDPlugin.cpp" line="42"/> <source>Start Moving Item</source> - <translation>Zacznij przesuwać element</translation> + <translation>Przesuń element</translation> </message> <message> <location filename="../desktop-plugins/LDPlugin.cpp" line="43"/> <source>Start Resizing Item</source> - <translation>Zacznij zmieniać rozmiar elementu</translation> + <translation>Zmień rozmiar elementu</translation> </message> <message> <location filename="../desktop-plugins/LDPlugin.cpp" line="45"/> @@ -738,7 +738,7 @@ <message> <location filename="../LDesktop.cpp" line="292"/> <source>Lock Session</source> - <translation type="unfinished"></translation> + <translation>Zablokuj sesję</translation> </message> <message> <location filename="../LDesktop.cpp" line="293"/> @@ -982,57 +982,57 @@ <message> <location filename="../panel-plugins/audioplayer/PPlayerWidget.ui" line="14"/> <source>Form</source> - <translation type="unfinished">Formularz</translation> + <translation>Formularz</translation> </message> <message> <location filename="../panel-plugins/audioplayer/PPlayerWidget.cpp" line="69"/> <source>Clear Playlist</source> - <translation type="unfinished">Wyczyść listę odtwarzania</translation> + <translation>Wyczyść listę odtwarzania</translation> </message> <message> <location filename="../panel-plugins/audioplayer/PPlayerWidget.cpp" line="70"/> <source>Shuffle Playlist</source> - <translation type="unfinished">Odtwarzanie losowe</translation> + <translation>Odtwarzanie losowe</translation> </message> <message> <location filename="../panel-plugins/audioplayer/PPlayerWidget.cpp" line="72"/> <source>Add Files</source> - <translation type="unfinished">Dodaj pliki</translation> + <translation>Dodaj pliki</translation> </message> <message> <location filename="../panel-plugins/audioplayer/PPlayerWidget.cpp" line="73"/> <source>Add Directory</source> - <translation type="unfinished">Dodaj katalog</translation> + <translation>Dodaj katalog</translation> </message> <message> <location filename="../panel-plugins/audioplayer/PPlayerWidget.cpp" line="74"/> <source>Add URL</source> - <translation type="unfinished">Dodaj URL</translation> + <translation>Dodaj URL</translation> </message> <message> <location filename="../panel-plugins/audioplayer/PPlayerWidget.cpp" line="102"/> <source>Multimedia Files</source> - <translation type="unfinished">Pliki multimedialne</translation> + <translation>Pliki multimedialne</translation> </message> <message> <location filename="../panel-plugins/audioplayer/PPlayerWidget.cpp" line="103"/> <source>Select Multimedia Files</source> - <translation type="unfinished">Wybierz pliki multimedialne</translation> + <translation>Wybierz pliki multimedialne</translation> </message> <message> <location filename="../panel-plugins/audioplayer/PPlayerWidget.cpp" line="130"/> <source>Select Multimedia Directory</source> - <translation type="unfinished">Wybierz katalog z multimediami</translation> + <translation>Wybierz katalog z multimediami</translation> </message> <message> <location filename="../panel-plugins/audioplayer/PPlayerWidget.cpp" line="159"/> <source>Enter a valid URL for a multimedia file or stream:</source> - <translation type="unfinished">Podaj adres URL pliku lub strumienia multimedialnego:</translation> + <translation>Podaj adres URL pliku lub strumienia multimedialnego:</translation> </message> <message> <location filename="../panel-plugins/audioplayer/PPlayerWidget.cpp" line="161"/> <source>Multimedia URL</source> - <translation type="unfinished">Adres URL multimediów</translation> + <translation>Adres URL multimediów</translation> </message> </context> <context> @@ -1264,7 +1264,7 @@ <message> <location filename="../SettingsMenu.cpp" line="33"/> <source>Wallpaper</source> - <translation type="unfinished"></translation> + <translation>Tapeta</translation> </message> <message> <location filename="../SettingsMenu.cpp" line="36"/> @@ -1274,7 +1274,7 @@ <message> <location filename="../SettingsMenu.cpp" line="39"/> <source>All Desktop Settings</source> - <translation type="unfinished"></translation> + <translation>Ustawienia pulpitu</translation> </message> <message> <location filename="../SettingsMenu.cpp" line="54"/> diff --git a/src-qt5/core/lumina-desktop/panel-plugins/taskmanager/LTaskButton.cpp b/src-qt5/core/lumina-desktop/panel-plugins/taskmanager/LTaskButton.cpp index 0dd68bb0..ab4e786f 100644 --- a/src-qt5/core/lumina-desktop/panel-plugins/taskmanager/LTaskButton.cpp +++ b/src-qt5/core/lumina-desktop/panel-plugins/taskmanager/LTaskButton.cpp @@ -16,7 +16,6 @@ LTaskButton::LTaskButton(QWidget *parent, bool smallDisplay) : LTBWidget(parent) winMenu = new QMenu(this); UpdateMenus(); showText = !smallDisplay; - this->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); this->setAutoRaise(false); //make sure these always look like buttons this->setContextMenuPolicy(Qt::CustomContextMenu); this->setFocusPolicy(Qt::NoFocus); @@ -126,16 +125,15 @@ void LTaskButton::UpdateButton(){ QString txt = WINLIST[0].text(); if(txt.length()>30){ txt.truncate(27); txt.append("..."); } else if(txt.length()<30){ txt = txt.leftJustified(30, ' '); } - this->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); this->setText(txt); - }else if(noicon){ this->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); this->setText( cname ); } - else{ this->setToolButtonStyle(Qt::ToolButtonIconOnly); this->setText(""); } + this->setText(txt); + }else if(noicon){ this->setText( cname ); } + else{ this->setText(""); } this->setToolTip(WINLIST[0].text()); }else if(WINLIST.length() > 1){ //multiple windows this->setPopupMode(QToolButton::InstantPopup); this->setMenu(winMenu); - this->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); - if(noicon || showText){ "("+QString::number(WINLIST.length())+") "+cname; } + if(noicon || showText){ this->setText("("+QString::number(WINLIST.length())+") "+cname); } else{ this->setText("("+QString::number(WINLIST.length())+")"); } } this->setState(showstate); //Make sure this is after the button setup so that it properly sets the margins/etc diff --git a/src-qt5/core/lumina-desktop/panel-plugins/taskmanager/LTaskManagerPlugin.cpp b/src-qt5/core/lumina-desktop/panel-plugins/taskmanager/LTaskManagerPlugin.cpp index 79c5dd36..c8e24702 100644 --- a/src-qt5/core/lumina-desktop/panel-plugins/taskmanager/LTaskManagerPlugin.cpp +++ b/src-qt5/core/lumina-desktop/panel-plugins/taskmanager/LTaskManagerPlugin.cpp @@ -116,8 +116,10 @@ void LTaskManagerPlugin::UpdateButtons(){ but->addWindow( winlist[i] ); if(this->layout()->direction()==QBoxLayout::LeftToRight){ but->setIconSize(QSize(this->height(), this->height())); + but->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); }else{ but->setIconSize(QSize(this->width(), this->width())); + but->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); } this->layout()->addWidget(but); connect(but, SIGNAL(MenuClosed()), this, SIGNAL(MenuClosed())); diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_da.ts b/src-qt5/core/lumina-info/i18n/lumina-info_da.ts index 97caa513..894a0dc0 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_da.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_da.ts @@ -6,7 +6,7 @@ <message> <location filename="../MainUI.ui" line="14"/> <source>Lumina Desktop Information</source> - <translation>Lumina Skrivebords Information</translation> + <translation>Lumina-skrivebordsinformation</translation> </message> <message> <location filename="../MainUI.ui" line="60"/> @@ -21,7 +21,7 @@ <message> <location filename="../MainUI.ui" line="124"/> <source>Lumina Website</source> - <translation>Hjemmeside for Lumina</translation> + <translation>Lumina-websted</translation> </message> <message> <location filename="../MainUI.ui" line="152"/> @@ -31,17 +31,17 @@ <message> <location filename="../MainUI.ui" line="179"/> <source>Desktop Version:</source> - <translation>Skrivebords Version:</translation> + <translation>Skrivebordsversion:</translation> </message> <message> <location filename="../MainUI.ui" line="202"/> <source>OS Build:</source> - <translation></translation> + <translation>OS-byg:</translation> </message> <message> <location filename="../MainUI.ui" line="218"/> <source>Qt Version:</source> - <translation>Qt Version:</translation> + <translation>Qt version:</translation> </message> <message> <location filename="../MainUI.ui" line="276"/> @@ -51,7 +51,7 @@ <message> <location filename="../MainUI.ui" line="233"/> <source>View Information</source> - <translation>Se Information</translation> + <translation>Vis information</translation> </message> <message> <location filename="../MainUI.ui" line="298"/> @@ -70,8 +70,8 @@ </message> <message> <location filename="../MainUI.ui" line="340"/> - <source><a href="https://github.com/beanpole135">Ken Moore</a></source> - <translation><a href="https://github.com/beanpole135"> Ken Moore</a></translation> + <source><a href="https://github.com/beanpole135">Ken Moore</a></source> + <translation><a href="https://github.com/beanpole135">Ken Moore</a></translation> </message> <message> <location filename="../MainUI.ui" line="353"/> @@ -85,8 +85,8 @@ </message> <message> <location filename="../MainUI.ui" line="428"/> - <source><a href="https://github.com/pcbsd/lumina/graphs/contributors">Open in web browser<a></source> - <translation><a href="https://github.com/pcbsd/lumina/graphs/contributors">Åben i en web browser<a></translation> + <source><a href="https://github.com/pcbsd/lumina/graphs/contributors">Open in web browser<a></source> + <translation><a href="https://github.com/pcbsd/lumina/graphs/contributors">Åbn i en webbrowser<a></translation> </message> <message> <location filename="../MainUI.ui" line="454"/> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_pl.ts b/src-qt5/core/lumina-info/i18n/lumina-info_pl.ts index 6ff00c18..0bc77338 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_pl.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_pl.ts @@ -16,7 +16,7 @@ <message> <location filename="../MainUI.ui" line="89"/> <source>Source Repository</source> - <translation>Repozytorium Żródłowe</translation> + <translation>Repozytorium źródłowe</translation> </message> <message> <location filename="../MainUI.ui" line="124"/> @@ -26,7 +26,7 @@ <message> <location filename="../MainUI.ui" line="152"/> <source>Bug Reports</source> - <translation>Zgłaszanie Błędów</translation> + <translation>Zgłaszanie błędów</translation> </message> <message> <location filename="../MainUI.ui" line="179"/> @@ -46,7 +46,7 @@ <message> <location filename="../MainUI.ui" line="276"/> <source>Ask the Community</source> - <translation type="unfinished">Zadaj Pytanie</translation> + <translation>Zapytaj Społeczność</translation> </message> <message> <location filename="../MainUI.ui" line="233"/> @@ -70,8 +70,8 @@ </message> <message> <location filename="../MainUI.ui" line="340"/> - <source><a href="https://github.com/beanpole135">Ken Moore</a></source> - <translation><a href="https://github.com/beanpole135">Ken Moore</a></translation> + <source><a href="https://github.com/beanpole135">Ken Moore</a></source> + <translation><a href="https://github.com/beanpole135">Ken Moore</a></translation> </message> <message> <location filename="../MainUI.ui" line="353"/> @@ -85,8 +85,8 @@ </message> <message> <location filename="../MainUI.ui" line="428"/> - <source><a href="https://github.com/pcbsd/lumina/graphs/contributors">Open in web browser<a></source> - <translation><a href="https://github.com/pcbsd/lumina/graphs/contributors">Otwórz w przeglądarce internetowej<a></translation> + <source><a href="https://github.com/pcbsd/lumina/graphs/contributors">Open in web browser<a></source> + <translation><a href="https://github.com/pcbsd/lumina/graphs/contributors">Otwórz w przeglądarce internetowej<a></translation> </message> <message> <location filename="../MainUI.ui" line="454"/> diff --git a/src-qt5/core/lumina-open/LFileDialog.cpp b/src-qt5/core/lumina-open/LFileDialog.cpp index a0fef17c..a400c60b 100644 --- a/src-qt5/core/lumina-open/LFileDialog.cpp +++ b/src-qt5/core/lumina-open/LFileDialog.cpp @@ -161,11 +161,13 @@ void LFileDialog::generateAppList(bool shownetwork){ XDGDesktopList applist; applist.updateList(); PREFAPPS = getPreferredApplications(); - //qDebug() << "Preferred Apps:" << PREFAPPS; + qDebug() << "Preferred Apps:" << PREFAPPS; ui->combo_rec->clear(); //Now get the application mimetype for the file extension (if available) QStringList mimetypes = LXDG::findAppMimeForFile(filePath, true).split("::::"); //use all mimetypes mimetypes.removeDuplicates(); + QString defapp = getDefaultApp(mimetypes.first()); //default application + if(!defapp.isEmpty() && !PREFAPPS.contains(defapp) ){ PREFAPPS << defapp; } //ensure this is listed in the preferred apps list //Now add all the detected applications QHash< QString, QList<XDGDesktop*> > hash = LXDG::sortDesktopCats( applist.apps(false,true) ); QStringList cat = hash.keys(); @@ -205,7 +207,9 @@ void LFileDialog::generateAppList(bool shownetwork){ for(int i=0; i<PREFAPPS.length(); i++){ XDGDesktop dFile(PREFAPPS[i]); if( dFile.isValid() ){ - ui->combo_rec->addItem( LXDG::findIcon(dFile.icon, "application-x-desktop"), dFile.name); + QString txt = dFile.name; + if(PREFAPPS[i] == defapp){ txt.prepend( tr("[default] ") ); } + ui->combo_rec->addItem( LXDG::findIcon(dFile.icon, "application-x-desktop"), txt); if(i==0){ ui->combo_rec->setCurrentIndex(0); } //make sure the first item is selected }else{ PREFAPPS.removeAt(i); //invalid app diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_da.ts b/src-qt5/core/lumina-open/i18n/lumina-open_da.ts index 757d5128..4f6d82c2 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_da.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_da.ts @@ -31,7 +31,7 @@ <message> <location filename="../LFileDialog.ui" line="138"/> <source>Find</source> - <translation>Søg</translation> + <translation>Find</translation> </message> <message> <location filename="../LFileDialog.ui" line="199"/> @@ -41,22 +41,22 @@ <message> <location filename="../LFileDialog.ui" line="221"/> <source>OK</source> - <translation>Ok</translation> + <translation>OK</translation> </message> <message> <location filename="../LFileDialog.ui" line="235"/> <source>Cancel</source> - <translation>Annullér</translation> + <translation>Annuller</translation> </message> <message> <location filename="../LFileDialog.cpp" line="40"/> <source>(Email Link)</source> - <translation>Email henvisning</translation> + <translation>(e-maillink)</translation> </message> <message> <location filename="../LFileDialog.cpp" line="41"/> <source>(Internet URL - %1)</source> - <translation>(Internet URL - %1)</translation> + <translation>(Internet-URL - %1)</translation> </message> <message> <location filename="../LFileDialog.cpp" line="114"/> @@ -121,7 +121,7 @@ <message> <location filename="../LFileDialog.cpp" line="126"/> <source>Utilities</source> - <translation>Værktøjer</translation> + <translation>Redskaber</translation> </message> <message> <location filename="../LFileDialog.cpp" line="127"/> @@ -145,13 +145,13 @@ <location filename="../main.cpp" line="188"/> <location filename="../main.cpp" line="194"/> <source>Audio Volume %1%</source> - <translation>Lyd Volume %1%</translation> + <translation>Lydstyrke %1%</translation> </message> <message> <location filename="../main.cpp" line="202"/> <location filename="../main.cpp" line="211"/> <source>Screen Brightness %1%</source> - <translation>skærm-lysstyrke %1%</translation> + <translation>Skærm-lysstyrke %1%</translation> </message> <message> <location filename="../main.cpp" line="243"/> @@ -161,7 +161,7 @@ <message> <location filename="../main.cpp" line="264"/> <source>Application entry is invalid: %1</source> - <translation type="unfinished"></translation> + <translation>Programpost er ugyldig: %1</translation> </message> <message> <location filename="../main.cpp" line="273"/> @@ -171,7 +171,7 @@ <message> <location filename="../main.cpp" line="284"/> <source>URL shortcut is missing the URL: %1</source> - <translation>URL genvej mangler URL'en: %1</translation> + <translation>URL genvej mangler URL'en: %1</translation> </message> <message> <location filename="../main.cpp" line="295"/> @@ -190,8 +190,8 @@ </message> <message> <location filename="../main.cpp" line="363"/> - <source>Could not find "%1". Please ensure it is installed first.</source> - <translation>Kunne ikke finde "%1". Sørg for at programmet er installeret først.</translation> + <source>Could not find "%1". Please ensure it is installed first.</source> + <translation>Kunne ikke finde "%1". Sørg for at programmet er installeret først.</translation> </message> <message> <location filename="../main.cpp" line="413"/> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_de.ts b/src-qt5/core/lumina-open/i18n/lumina-open_de.ts index 8af30d78..08e0bb7e 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_de.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_de.ts @@ -161,7 +161,7 @@ <message> <location filename="../main.cpp" line="264"/> <source>Application entry is invalid: %1</source> - <translation type="unfinished"></translation> + <translation>Anwendungseintrag ist ungültig: %1</translation> </message> <message> <location filename="../main.cpp" line="273"/> @@ -171,17 +171,17 @@ <message> <location filename="../main.cpp" line="284"/> <source>URL shortcut is missing the URL: %1</source> - <translation>fehlende URL für URL: %1</translation> + <translation>URL-Verknüpfung fehlt die URL: %1</translation> </message> <message> <location filename="../main.cpp" line="295"/> <source>Directory shortcut is missing the path to the directory: %1</source> - <translation>fehlender Pfad zum Verzeichnis der Verknüpfung: %1</translation> + <translation>Verzeichnisverknüpfung fehlt der Pfad zum Verzeichnis: %1</translation> </message> <message> <location filename="../main.cpp" line="300"/> <source>Unknown type of shortcut : %1</source> - <translation>unbekannter Typ für Vernüpfung: %1</translation> + <translation>Unbekannter Typ für Vernüpfung: %1</translation> </message> <message> <location filename="../main.cpp" line="363"/> @@ -190,8 +190,8 @@ </message> <message> <location filename="../main.cpp" line="363"/> - <source>Could not find "%1". Please ensure it is installed first.</source> - <translation>Konnte "%1" nicht finden. Bitte stellen Sie zuerst sicher, dass es installiert ist.</translation> + <source>Could not find "%1". Please ensure it is installed first.</source> + <translation>Konnte "%1" nicht finden. Bitte stellen Sie zuerst sicher, dass es installiert ist.</translation> </message> <message> <location filename="../main.cpp" line="413"/> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_it.ts b/src-qt5/core/lumina-open/i18n/lumina-open_it.ts index 341374d2..415476ca 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_it.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_it.ts @@ -26,7 +26,7 @@ <message> <location filename="../LFileDialog.ui" line="131"/> <source>Binary Location</source> - <translation type="unfinished">Posizione codice binario</translation> + <translation>Posizione codice binario</translation> </message> <message> <location filename="../LFileDialog.ui" line="138"/> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_lt.ts b/src-qt5/core/lumina-open/i18n/lumina-open_lt.ts index acb59691..fce7de40 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_lt.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_lt.ts @@ -161,7 +161,7 @@ <message> <location filename="../main.cpp" line="264"/> <source>Application entry is invalid: %1</source> - <translation type="unfinished"></translation> + <translation>Programos įrašas yra neteisingas: %1</translation> </message> <message> <location filename="../main.cpp" line="273"/> @@ -190,8 +190,8 @@ </message> <message> <location filename="../main.cpp" line="363"/> - <source>Could not find "%1". Please ensure it is installed first.</source> - <translation>Nepavyko rasti "%1". Iš pradžių, įsitikinkite ar ji įdiegta.</translation> + <source>Could not find "%1". Please ensure it is installed first.</source> + <translation>Nepavyko rasti "%1". Iš pradžių, įsitikinkite ar ji įdiegta.</translation> </message> <message> <location filename="../main.cpp" line="413"/> diff --git a/src-qt5/core/lumina-session/main.cpp b/src-qt5/core/lumina-session/main.cpp index ed391e04..3696ed20 100644 --- a/src-qt5/core/lumina-session/main.cpp +++ b/src-qt5/core/lumina-session/main.cpp @@ -61,7 +61,9 @@ int main(int argc, char ** argv) //Check for any stale desktop lock files and clean them up QString cfile = QDir::tempPath()+"/.LSingleApp-%1-%2-%3"; - cfile = cfile.arg( QString(getlogin()), "lumina-desktop", QString::number(QX11Info::appScreen()) ); + QString desk = "lumina-desktop"; + if(unified){ desk.append("-unified"); } + cfile = cfile.arg( QString(getlogin()), desk, QString::number(QX11Info::appScreen()) ); if(QFile::exists(cfile)){ qDebug() << "Found Desktop Lock for X session:" << disp; qDebug() << " - Disabling Lock and starting new desktop session"; diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_da.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_da.ts index 4a8aaca2..0edee8df 100644 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_da.ts +++ b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_da.ts @@ -6,37 +6,37 @@ <message> <location filename="../LLockScreen.ui" line="14"/> <source>Form</source> - <translation type="unfinished"></translation> + <translation>Formular</translation> </message> <message> <location filename="../LLockScreen.ui" line="114"/> <source>Password</source> - <translation type="unfinished"></translation> + <translation>Adgangskode</translation> </message> <message> <location filename="../LLockScreen.ui" line="126"/> <source>Unlock Session</source> - <translation type="unfinished"></translation> + <translation>Lås session op</translation> </message> <message> <location filename="../LLockScreen.cpp" line="39"/> <source>Locked by: %1</source> - <translation type="unfinished"></translation> + <translation>Låst af: %1</translation> </message> <message> <location filename="../LLockScreen.cpp" line="76"/> <source>Too Many Failures</source> - <translation type="unfinished"></translation> + <translation>For mange mislykkedes forsøg</translation> </message> <message> <location filename="../LLockScreen.cpp" line="76"/> <source>Wait %1 Minutes</source> - <translation type="unfinished"></translation> + <translation>Vent %1 minutter</translation> </message> <message> <location filename="../LLockScreen.cpp" line="77"/> <source>Failed Attempts: %1</source> - <translation type="unfinished"></translation> + <translation>Mislykkede forsøg: %1</translation> </message> </context> </TS> diff --git a/src-qt5/desktop-utils/lumina-archiver/MainUI.cpp b/src-qt5/desktop-utils/lumina-archiver/MainUI.cpp index e465cdf8..2972550c 100644 --- a/src-qt5/desktop-utils/lumina-archiver/MainUI.cpp +++ b/src-qt5/desktop-utils/lumina-archiver/MainUI.cpp @@ -42,6 +42,7 @@ MainUI::MainUI() : QMainWindow(), ui(new Ui::MainUI){ connect(ui->actionAdd_Dirs, SIGNAL(triggered()), this, SLOT(addDirs()) ); connect(ui->tree_contents, SIGNAL(itemDoubleClicked(QTreeWidgetItem*, int)), this, SLOT(ViewFile(QTreeWidgetItem*)) ); connect(ui->actionUSB_Image, SIGNAL(triggered()), this, SLOT(BurnImgToUSB()) ); + connect(ui->tree_contents, SIGNAL(itemSelectionChanged()), this, SLOT(selectionChanged()) ); //Set Keyboard Shortcuts ui->action_New->setShortcut(tr("CTRL+N")); @@ -88,7 +89,7 @@ void MainUI::loadIcons(){ ui->actionAdd_Dirs->setIcon( LXDG::findIcon("archive-insert-directory","") ); ui->actionRemove_File->setIcon( LXDG::findIcon("archive-remove","") ); ui->actionExtract_All->setIcon( LXDG::findIcon("archive-extract","") ); - ui->actionExtract_Sel->setIcon( LXDG::findIcon("archive-extract","") ); + ui->actionExtract_Sel->setIcon( LXDG::findIcon("edit-select-all","") ); ui->actionUSB_Image->setIcon( LXDG::findIcon("drive-removable-media-usb-pendrive","drive-removable-media-usb") ); } @@ -112,6 +113,12 @@ QTreeWidgetItem* MainUI::findItem(QString path, QTreeWidgetItem *start){ } bool MainUI::cleanItems(QStringList list, QTreeWidgetItem *start){ + //Quick detection for an empty list + if(list.isEmpty() && ui->tree_contents->topLevelItemCount()>0){ + ui->tree_contents->clear(); + return true; + } + //Recursive resolution of items bool changed = false; if(start==0){ for(int i=0; i<ui->tree_contents->topLevelItemCount(); i++){ @@ -154,7 +161,7 @@ QString MainUI::CreateFileTypes(){ QString MainUI::OpenFileTypes(){ QStringList types; - types << QString(tr("All Types %1")).arg("(*.tar.gz *.tar.xz *.tar.bz *.tar.bz2 *.tar.lzma *.tar *.zip *.tgz *.txz *.tbz *.tbz2 *.tlz *.cpio *.pax *.ar *.shar *.7z *.iso *.img *.xar *.jar *.rpm)"); + types << QString(tr("All Known Types %1")).arg("(*.tar.gz *.tar.xz *.tar.bz *.tar.bz2 *.tar.lzma *.tar *.zip *.tgz *.txz *.tbz *.tbz2 *.tlz *.cpio *.pax *.ar *.shar *.7z *.iso *.img *.xar *.jar *.rpm)"); types << tr("Uncompressed Archive (*.tar)"); types << tr("GZip Compressed Archive (*.tar.gz *.tgz)"); types << tr("BZip Compressed Archive (*.tar.bz *.tbz)"); @@ -171,6 +178,7 @@ QString MainUI::OpenFileTypes(){ types << tr("READ-ONLY: XAR archive (*.xar)"); types << tr("READ-ONLY: Java archive (*.jar)"); types << tr("READ-ONLY: RedHat Package (*.rpm)"); + types << tr("Show All Files (*)"); return types.join(";;"); } @@ -340,7 +348,8 @@ void MainUI::ProcFinished(bool success, QString msg){ canmodify = canmodify && BACKEND->canModify(); //also include the file type limitations ui->actionAdd_File->setEnabled(canmodify); ui->actionRemove_File->setEnabled(canmodify && info.exists()); - ui->actionExtract_All->setEnabled(info.exists()); + ui->actionExtract_All->setEnabled(info.exists() && ui->tree_contents->topLevelItemCount()>0); + ui->actionExtract_Sel->setEnabled(info.exists() && !ui->tree_contents->selectedItems().isEmpty()); ui->actionAdd_Dirs->setEnabled(canmodify); } @@ -349,3 +358,7 @@ void MainUI::ProcUpdate(int percent, QString txt){ ui->progressBar->setValue(percent); if(!txt.isEmpty()){ ui->label_progress->setText(txt); } } + +void MainUI::selectionChanged(){ + ui->actionExtract_Sel->setEnabled(!ui->tree_contents->selectedItems().isEmpty()); +} diff --git a/src-qt5/desktop-utils/lumina-archiver/MainUI.h b/src-qt5/desktop-utils/lumina-archiver/MainUI.h index bf37d26a..273078ea 100644 --- a/src-qt5/desktop-utils/lumina-archiver/MainUI.h +++ b/src-qt5/desktop-utils/lumina-archiver/MainUI.h @@ -55,6 +55,8 @@ private slots: void ProcFinished(bool, QString); void ProcUpdate(int percent, QString txt); + //UI Slots + void selectionChanged(); }; #endif diff --git a/src-qt5/desktop-utils/lumina-archiver/MainUI.ui b/src-qt5/desktop-utils/lumina-archiver/MainUI.ui index 6666b7cb..0fc9eadf 100644 --- a/src-qt5/desktop-utils/lumina-archiver/MainUI.ui +++ b/src-qt5/desktop-utils/lumina-archiver/MainUI.ui @@ -15,6 +15,15 @@ </property> <widget class="QWidget" name="centralwidget"> <layout class="QVBoxLayout" name="verticalLayout"> + <property name="spacing"> + <number>3</number> + </property> + <property name="topMargin"> + <number>1</number> + </property> + <property name="bottomMargin"> + <number>0</number> + </property> <item> <layout class="QHBoxLayout" name="horizontalLayout"> <item> @@ -111,7 +120,7 @@ <x>0</x> <y>0</y> <width>403</width> - <height>22</height> + <height>20</height> </rect> </property> <widget class="QMenu" name="menuFile"> @@ -168,6 +177,7 @@ <addaction name="actionRemove_File"/> <addaction name="separator"/> <addaction name="actionExtract_All"/> + <addaction name="actionExtract_Sel"/> </widget> <action name="action_Open"> <property name="text"> @@ -226,6 +236,9 @@ <property name="text"> <string>Extract Selection</string> </property> + <property name="statusTip"> + <string>Extract Selected Items</string> + </property> </action> <action name="actionUSB_Image"> <property name="text"> diff --git a/src-qt5/desktop-utils/lumina-archiver/TarBackend.cpp b/src-qt5/desktop-utils/lumina-archiver/TarBackend.cpp index 78efd51c..0659f8b1 100644 --- a/src-qt5/desktop-utils/lumina-archiver/TarBackend.cpp +++ b/src-qt5/desktop-utils/lumina-archiver/TarBackend.cpp @@ -27,6 +27,7 @@ Backend::~Backend(){ // PUBLIC //=============== void Backend::loadFile(QString path){ + //qDebug() << "Loading Archive:" << path; filepath = path; tmpfilepath = filepath.section("/",0,-2)+"/"+".tmp_larchiver_"+filepath.section("/",-1); flags.clear(); @@ -149,7 +150,7 @@ void Backend::startViewFile(QString path){ args << "-x"; args << flags <<"--include" << path <<"--strip-components" << QString::number(path.count("/")) << "-C" << QDir::tempPath(); STARTING=true; - qDebug() << "Starting command:" << "tar" << args; + //qDebug() << "Starting command:" << "tar" << args; PROC.start("tar", args); } @@ -195,6 +196,7 @@ void Backend::startList(){ QStringList args; args << "-tv"; LIST = STARTING=true; + //qDebug() << "Starting List:" << "tar "+args.join(" ")+" "+flags.join(" "); PROC.start("tar", QStringList() << args << flags); } @@ -203,12 +205,17 @@ void Backend::startList(){ //=============== void Backend::procFinished(int retcode, QProcess::ExitStatus){ static QString result; - processData(); //qDebug() << "Process Finished:" << PROC.arguments() << retcode; + processData(); LIST = STARTING = false; if(PROC.arguments().contains("-tv")){ - if(retcode!=0){ contents.clear(); } //could not read archive - emit ProcessFinished(true,result); + if(retcode!=0){ //could not read archive + contents.clear(); + result = tr("Could not read archive"); + }else if(result.isEmpty()){ + result = tr("Archive Loaded"); + } + emit ProcessFinished((retcode==0), result); result.clear(); }else{ bool needupdate = true; diff --git a/src-qt5/desktop-utils/lumina-fileinfo/i18n/l-fileinfo_da.ts b/src-qt5/desktop-utils/lumina-fileinfo/i18n/l-fileinfo_da.ts index 945bea76..526d90a9 100644 --- a/src-qt5/desktop-utils/lumina-fileinfo/i18n/l-fileinfo_da.ts +++ b/src-qt5/desktop-utils/lumina-fileinfo/i18n/l-fileinfo_da.ts @@ -8,7 +8,7 @@ <location filename="../MainUI.ui" line="24"/> <location filename="../MainUI.cpp" line="97"/> <source>File Information</source> - <translation>Filoplysninger</translation> + <translation>Filinformation</translation> </message> <message> <location filename="../MainUI.ui" line="56"/> @@ -48,7 +48,7 @@ <message> <location filename="../MainUI.ui" line="138"/> <source>MimeType:</source> - <translation>MimeType:</translation> + <translation>MIME-type:</translation> </message> <message> <location filename="../MainUI.ui" line="185"/> @@ -124,7 +124,7 @@ <message> <location filename="../MainUI.cpp" line="70"/> <source>Read/Write</source> - <translation>Læs/Skriv</translation> + <translation>Læs/skriv</translation> </message> <message> <location filename="../MainUI.cpp" line="71"/> @@ -144,7 +144,7 @@ <message> <location filename="../MainUI.cpp" line="77"/> <source>XDG Shortcut</source> - <translation>XDG genvej</translation> + <translation>XDG-genvej</translation> </message> <message> <location filename="../MainUI.cpp" line="78"/> @@ -154,7 +154,7 @@ <message> <location filename="../MainUI.cpp" line="79"/> <source>Binary</source> - <translation>Binær fil</translation> + <translation>Binær</translation> </message> <message> <location filename="../MainUI.cpp" line="81"/> @@ -169,17 +169,17 @@ <message> <location filename="../MainUI.cpp" line="249"/> <source>Save Application File</source> - <translation type="unfinished"></translation> + <translation>Gem programfil</translation> </message> <message> <location filename="../MainUI.cpp" line="249"/> <source>Application Registrations (*.desktop)</source> - <translation type="unfinished"></translation> + <translation>Programregistreringer (*.desktop)</translation> </message> <message> <location filename="../MainUI.cpp" line="290"/> <source>Select a binary</source> - <translation>Vælg en binær fil</translation> + <translation>Vælg en binær</translation> </message> <message> <location filename="../MainUI.cpp" line="293"/> @@ -189,7 +189,7 @@ <message> <location filename="../MainUI.cpp" line="293"/> <source>Invalid selection: Not a valid executable</source> - <translation type="unfinished"></translation> + <translation>Ugyldigt valg: Ikke en eksekverbar</translation> </message> <message> <location filename="../MainUI.cpp" line="305"/> diff --git a/src-qt5/desktop-utils/lumina-fm/MainUI.cpp b/src-qt5/desktop-utils/lumina-fm/MainUI.cpp index da3943a2..45ec860a 100644 --- a/src-qt5/desktop-utils/lumina-fm/MainUI.cpp +++ b/src-qt5/desktop-utils/lumina-fm/MainUI.cpp @@ -118,7 +118,7 @@ MainUI::~MainUI(){ } workThread->quit(); //Also ensure the work thread is stopped - workThread->wait(); +// workThread->wait(); } void MainUI::OpenDirs(QStringList dirs){ diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_da.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_da.ts index 6b5ecc1a..5959aa92 100644 --- a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_da.ts +++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_da.ts @@ -6,7 +6,7 @@ <message> <location filename="../BMMDialog.ui" line="14"/> <source>Manage Bookmarks</source> - <translation>Administrér bogmærker</translation> + <translation>Håndter bogmærker</translation> </message> <message> <location filename="../BMMDialog.ui" line="35"/> @@ -51,7 +51,7 @@ <message> <location filename="../BMMDialog.cpp" line="64"/> <source>This bookmark name already exists. Please choose another.</source> - <translation>Dette bogmærke navn findes allerede. Vælg venligst et andet navn.</translation> + <translation>Dette bogmærkenavn findes allerede. Vælg venligst et andet.</translation> </message> </context> <context> @@ -59,52 +59,52 @@ <message> <location filename="../BrowserWidget.cpp" line="209"/> <source>Name</source> - <translation type="unfinished">Navn</translation> + <translation>Navn</translation> </message> <message> <location filename="../BrowserWidget.cpp" line="210"/> <source>Size</source> - <translation type="unfinished">Størrelse</translation> + <translation>Størrelse</translation> </message> <message> <location filename="../BrowserWidget.cpp" line="211"/> <source>Type</source> - <translation type="unfinished">Type</translation> + <translation>Type</translation> </message> <message> <location filename="../BrowserWidget.cpp" line="212"/> <source>Date Modified</source> - <translation type="unfinished">Ændringsdato</translation> + <translation>Ændringsdato</translation> </message> <message> <location filename="../BrowserWidget.cpp" line="213"/> <source>Date Created</source> - <translation type="unfinished">Oprettelsesdato</translation> + <translation>Oprettelsesdato</translation> </message> <message> <location filename="../BrowserWidget.cpp" line="315"/> <source>Capacity: %1</source> - <translation type="unfinished">Kapacitet: %1</translation> + <translation>Kapacitet: %1</translation> </message> <message> <location filename="../BrowserWidget.cpp" line="341"/> <source>Files: %1 (%2)</source> - <translation type="unfinished">Filer: %1 (%2)</translation> + <translation>Filer: %1 (%2)</translation> </message> <message> <location filename="../BrowserWidget.cpp" line="343"/> <source>Files: %1</source> - <translation type="unfinished"></translation> + <translation>Filer: %1</translation> </message> <message> <location filename="../BrowserWidget.cpp" line="349"/> <source>Dirs: %1</source> - <translation type="unfinished"></translation> + <translation>Mapper: %1</translation> </message> <message> <location filename="../BrowserWidget.cpp" line="363"/> <source>No Directory Contents</source> - <translation type="unfinished"></translation> + <translation>Intet mappeindhold</translation> </message> </context> <context> @@ -117,23 +117,23 @@ <message> <location filename="../widgets/DirWidget2.ui" line="145"/> <source>Increase Icon Sizes</source> - <translation type="unfinished"></translation> + <translation>Større ikoner</translation> </message> <message> <location filename="../widgets/DirWidget2.ui" line="161"/> <source>Decrease Icon Sizes</source> - <translation type="unfinished"></translation> + <translation>Mindre ikoner</translation> </message> <message> <location filename="../widgets/DirWidget2.ui" line="179"/> <source>Back</source> - <translation>Forrige</translation> + <translation>Tilbage</translation> </message> <message> <location filename="../widgets/DirWidget2.ui" line="182"/> <location filename="../widgets/DirWidget2.ui" line="185"/> <source>Go back to previous directory</source> - <translation>Gå til forrige mappe</translation> + <translation>Gå tilbage til den forrige mappe</translation> </message> <message> <location filename="../widgets/DirWidget2.ui" line="193"/> @@ -160,37 +160,37 @@ <message> <location filename="../widgets/DirWidget2.ui" line="218"/> <source>Menu</source> - <translation type="unfinished"></translation> + <translation>Menu</translation> </message> <message> <location filename="../widgets/DirWidget2.ui" line="221"/> <source>Select Action</source> - <translation type="unfinished"></translation> + <translation>Vælg handling</translation> </message> <message> <location filename="../widgets/DirWidget2.ui" line="229"/> <source>SingleColumn</source> - <translation type="unfinished"></translation> + <translation>Enkelkolonne</translation> </message> <message> <location filename="../widgets/DirWidget2.ui" line="232"/> <source>Single column view</source> - <translation type="unfinished"></translation> + <translation>Enkelkolonne visning</translation> </message> <message> <location filename="../widgets/DirWidget2.ui" line="240"/> <source>Dual Column</source> - <translation type="unfinished"></translation> + <translation>Dobbeltkolonne</translation> </message> <message> <location filename="../widgets/DirWidget2.ui" line="243"/> <source>Dual Column View</source> - <translation type="unfinished"></translation> + <translation>Dobbeltkolonne visning</translation> </message> <message> <location filename="../widgets/DirWidget2.cpp" line="533"/> <source>(Limited Access) </source> - <translation>(Begrænset Adgang)</translation> + <translation>(begrænset adgang) </translation> </message> <message> <location filename="../widgets/DirWidget2.cpp" line="555"/> @@ -230,17 +230,17 @@ <message> <location filename="../widgets/DirWidget2.cpp" line="488"/> <source>File Operations</source> - <translation type="unfinished"></translation> + <translation>Filhandlinger</translation> </message> <message> <location filename="../widgets/DirWidget2.cpp" line="502"/> <source>Directory Operations</source> - <translation type="unfinished"></translation> + <translation>Mappehandlinger</translation> </message> <message> <location filename="../widgets/DirWidget2.cpp" line="514"/> <source>Loading...</source> - <translation type="unfinished"></translation> + <translation>Indlæser...</translation> </message> <message> <location filename="../widgets/DirWidget2.cpp" line="563"/> @@ -257,97 +257,97 @@ <message> <location filename="../widgets/DirWidget2.cpp" line="594"/> <source>The directory could not be created. Please ensure that you have the proper permissions to modify the current directory.</source> - <translation type="unfinished"></translation> + <translation>Mappen kunne ikke oprettes. Sørg venligst for at du har de fornødne tilladelser til at ændre den aktuelle mappe.</translation> </message> <message> <location filename="../widgets/DirWidget2.cpp" line="313"/> <source>Current</source> - <translation type="unfinished"></translation> + <translation>Aktuelle</translation> </message> <message> <location filename="../widgets/DirWidget2.cpp" line="229"/> <source>Create...</source> - <translation type="unfinished"></translation> + <translation>Opret...</translation> </message> <message> <location filename="../widgets/DirWidget2.cpp" line="231"/> <source>File</source> - <translation type="unfinished"></translation> + <translation>Fil</translation> </message> <message> <location filename="../widgets/DirWidget2.cpp" line="232"/> <source>Directory</source> - <translation type="unfinished"></translation> + <translation>Mappe</translation> </message> <message> <location filename="../widgets/DirWidget2.cpp" line="233"/> <source>Application Launcher</source> - <translation type="unfinished"></translation> + <translation>Programstarter</translation> </message> <message> <location filename="../widgets/DirWidget2.cpp" line="237"/> <source>Launch...</source> - <translation type="unfinished"></translation> + <translation>Start...</translation> </message> <message> <location filename="../widgets/DirWidget2.cpp" line="239"/> <source>Terminal</source> - <translation type="unfinished"></translation> + <translation>Terminal</translation> </message> <message> <location filename="../widgets/DirWidget2.cpp" line="240"/> <source>SlideShow</source> - <translation type="unfinished"></translation> + <translation>Diasshow</translation> </message> <message> <location filename="../widgets/DirWidget2.cpp" line="241"/> <source>Multimedia Player</source> - <translation type="unfinished"></translation> + <translation>Multimedieafspiller</translation> </message> <message> <location filename="../widgets/DirWidget2.cpp" line="256"/> <source>View Files...</source> - <translation type="unfinished"></translation> + <translation>Vis filer...</translation> </message> <message> <location filename="../widgets/DirWidget2.cpp" line="258"/> <source>Checksums</source> - <translation type="unfinished"></translation> + <translation>Tjeksumme</translation> </message> <message> <location filename="../widgets/DirWidget2.cpp" line="260"/> <source>Properties</source> - <translation type="unfinished"></translation> + <translation>Egenskaber</translation> </message> <message> <location filename="../widgets/DirWidget2.cpp" line="448"/> <source>File Checksums:</source> - <translation type="unfinished"></translation> + <translation>Fil-tjeksumme:</translation> </message> <message> <location filename="../widgets/DirWidget2.cpp" line="460"/> <source>Missing Utility</source> - <translation type="unfinished"></translation> + <translation>Manglende redskaber</translation> </message> <message> <location filename="../widgets/DirWidget2.cpp" line="460"/> - <source>The "lumina-fileinfo" utility could not be found on the system. Please install it first.</source> - <translation type="unfinished"></translation> + <source>The "lumina-fileinfo" utility could not be found on the system. Please install it first.</source> + <translation>Kunne ikke finde "lumina-fileinfo"-redskabet på systemet. Installér det venligst først.</translation> </message> <message> <location filename="../widgets/DirWidget2.cpp" line="485"/> <source>Open</source> - <translation type="unfinished"></translation> + <translation>Åbn</translation> </message> <message> <location filename="../widgets/DirWidget2.cpp" line="486"/> <source>Open With...</source> - <translation type="unfinished"></translation> + <translation>Åbn med...</translation> </message> <message> <location filename="../widgets/DirWidget2.cpp" line="493"/> <source>Rename...</source> - <translation type="unfinished"></translation> + <translation>Omdøb...</translation> </message> <message> <location filename="../widgets/DirWidget2.cpp" line="494"/> @@ -390,42 +390,42 @@ <message> <location filename="../FODialog.cpp" line="19"/> <source>Calculating</source> - <translation type="unfinished"></translation> + <translation>Udregner</translation> </message> <message> <location filename="../FODialog.cpp" line="131"/> <source>Overwrite Files?</source> - <translation type="unfinished"></translation> + <translation>Overskriv filer?</translation> </message> <message> <location filename="../FODialog.cpp" line="131"/> <source>Do you want to overwrite the existing files?</source> - <translation type="unfinished"></translation> + <translation>Vil du overskrive de eksisterende filer?</translation> </message> <message> <location filename="../FODialog.cpp" line="131"/> <source>Note: It will just add a number to the filename otherwise.</source> - <translation type="unfinished"></translation> + <translation>Bemærk: Det vel ellers blot tilføje et tal til filnavnet.</translation> </message> <message> <location filename="../FODialog.cpp" line="148"/> <source>Removing: %1</source> - <translation type="unfinished"></translation> + <translation>Fjerner: %1</translation> </message> <message> <location filename="../FODialog.cpp" line="149"/> <source>Copying: %1 to %2</source> - <translation type="unfinished"></translation> + <translation>Kopierer: %1 til %2</translation> </message> <message> <location filename="../FODialog.cpp" line="150"/> <source>Restoring: %1 as %2</source> - <translation type="unfinished"></translation> + <translation>Gendanner: %1 som %2</translation> </message> <message> <location filename="../FODialog.cpp" line="151"/> <source>Moving: %1 to %2</source> - <translation type="unfinished"></translation> + <translation>Flytter: %1 til %2</translation> </message> <message> <location filename="../FODialog.cpp" line="164"/> @@ -458,7 +458,7 @@ <message> <location filename="../FODialog.cpp" line="320"/> <source>Invalid Move</source> - <translation>Ugyldigt træk.</translation> + <translation>Ugyldigt træk</translation> </message> <message> <location filename="../FODialog.cpp" line="320"/> @@ -466,7 +466,7 @@ Old Location: %1 New Location: %2</source> - <translation>Det er ikke muligt at flytte en mappe ind i sig selv. Lav venligst en kopi af mappen istedet. + <translation>Det er ikke muligt at flytte en mappe ind i sig selv. Lav venligst en kopi af mappen i stedet. Gl. lokation: %1 Ny lokation: %2</translation> @@ -477,107 +477,107 @@ Ny lokation: %2</translation> <message> <location filename="../gitWizard.ui" line="14"/> <source>Clone a Git Repository</source> - <translation type="unfinished"></translation> + <translation>Klon et Git-arkiv</translation> </message> <message> <location filename="../gitWizard.ui" line="24"/> <source>Welcome!</source> - <translation type="unfinished"></translation> + <translation>Velkommen!</translation> </message> <message> <location filename="../gitWizard.ui" line="27"/> <source>This wizard will guide you through the process of downloading a GIT repository from the internet.</source> - <translation type="unfinished"></translation> + <translation>Denne assistent vil guide den gennem processen til at downloade et GIT-arkiv fra internettet.</translation> </message> <message> <location filename="../gitWizard.ui" line="46"/> <source>GitHub Repository Settings</source> - <translation type="unfinished"></translation> + <translation>Indstillinger for GitHub-arkiv</translation> </message> <message> <location filename="../gitWizard.ui" line="55"/> <source>Organization/User</source> - <translation type="unfinished"></translation> + <translation>Organisation/bruger</translation> </message> <message> <location filename="../gitWizard.ui" line="65"/> <source>Repository Name</source> - <translation type="unfinished"></translation> + <translation>Arkivnavn</translation> </message> <message> <location filename="../gitWizard.ui" line="75"/> <source>Is Private Repository</source> - <translation type="unfinished"></translation> + <translation>Er privat arkiv</translation> </message> <message> <location filename="../gitWizard.ui" line="89"/> <source>Type of Access</source> - <translation type="unfinished"></translation> + <translation>Type af tilgang</translation> </message> <message> <location filename="../gitWizard.ui" line="95"/> <source>Use my SSH Key</source> - <translation type="unfinished"></translation> + <translation>Brug min SSH-nøgle</translation> </message> <message> <location filename="../gitWizard.ui" line="105"/> <source>Login to server</source> - <translation type="unfinished"></translation> + <translation>Login til server</translation> </message> <message> <location filename="../gitWizard.ui" line="114"/> <source>Username</source> - <translation type="unfinished"></translation> + <translation>Brugernavn</translation> </message> <message> <location filename="../gitWizard.ui" line="124"/> <source>Password</source> - <translation type="unfinished"></translation> + <translation>Adgangskode</translation> </message> <message> <location filename="../gitWizard.ui" line="133"/> <source>Anonymous (public repositories only)</source> - <translation type="unfinished"></translation> + <translation>Anonym (kun offentlige arkiver)</translation> </message> <message> <location filename="../gitWizard.ui" line="143"/> <source>Optional SSH Password</source> - <translation type="unfinished"></translation> + <translation>Valgfri SSH-adgangskode</translation> </message> <message> <location filename="../gitWizard.ui" line="153"/> <source>Advanced Options</source> - <translation type="unfinished"></translation> + <translation>Avanceret valgmuligheder</translation> </message> <message> <location filename="../gitWizard.ui" line="159"/> <source>Custom Depth</source> - <translation type="unfinished"></translation> + <translation>Tilpasset dybde</translation> </message> <message> <location filename="../gitWizard.ui" line="166"/> <source>Single Branch</source> - <translation type="unfinished"></translation> + <translation>Enkel gren</translation> </message> <message> <location filename="../gitWizard.ui" line="175"/> <source>branch name</source> - <translation type="unfinished"></translation> + <translation>grennavn</translation> </message> <message> <location filename="../gitWizard.ui" line="232"/> - <source>Click "Next" to start downloading the repository</source> - <translation type="unfinished"></translation> + <source>Click "Next" to start downloading the repository</source> + <translation>Klik på "Næste" for at starte download af arkivet</translation> </message> <message> <location filename="../gitWizard.h" line="58"/> <source>Stop Download?</source> - <translation type="unfinished"></translation> + <translation>Stop download?</translation> </message> <message> <location filename="../gitWizard.h" line="58"/> <source>Kill the current download?</source> - <translation type="unfinished"></translation> + <translation>Dræb den aktuelle download?</translation> </message> </context> <context> @@ -590,52 +590,52 @@ Ny lokation: %2</translation> <message> <location filename="../MainUI.cpp" line="92"/> <source>Shift+Left</source> - <translation type="unfinished">Skift+venstre</translation> + <translation>Skift+Venstre</translation> </message> <message> <location filename="../MainUI.cpp" line="93"/> <source>Shift+Right</source> - <translation type="unfinished"></translation> + <translation>Skift+Højre</translation> </message> <message> <location filename="../MainUI.ui" line="114"/> <source>File</source> - <translation type="unfinished"></translation> + <translation>Fil</translation> </message> <message> <location filename="../MainUI.ui" line="126"/> <source>View</source> - <translation type="unfinished"></translation> + <translation>Vis</translation> </message> <message> <location filename="../MainUI.ui" line="130"/> <source>View Mode</source> - <translation type="unfinished"></translation> + <translation>Visningstilstand</translation> </message> <message> <location filename="../MainUI.ui" line="142"/> <source>Bookmarks</source> - <translation type="unfinished"></translation> + <translation>Bogmærker</translation> </message> <message> <location filename="../MainUI.ui" line="150"/> <source>External Devices</source> - <translation type="unfinished"></translation> + <translation>Eksterne enheder</translation> </message> <message> <location filename="../MainUI.ui" line="157"/> <source>Git</source> - <translation type="unfinished"></translation> + <translation>Git</translation> </message> <message> <location filename="../MainUI.ui" line="171"/> <source>New Tab</source> - <translation type="unfinished"></translation> + <translation>Nyt faneblad</translation> </message> <message> <location filename="../MainUI.ui" line="174"/> <source>New Browser</source> - <translation type="unfinished"></translation> + <translation>Ny browser</translation> </message> <message> <location filename="../MainUI.ui" line="250"/> @@ -650,317 +650,317 @@ Ny lokation: %2</translation> <message> <location filename="../MainUI.ui" line="288"/> <source>Decrease Icon Size</source> - <translation type="unfinished"></translation> + <translation>Mindre ikoner</translation> </message> <message> <location filename="../MainUI.ui" line="293"/> <source>Larger Icons</source> - <translation type="unfinished"></translation> + <translation>Større ikoner</translation> </message> <message> <location filename="../MainUI.ui" line="296"/> <source>Ctrl++</source> - <translation type="unfinished"></translation> + <translation>Ctrl++</translation> </message> <message> <location filename="../MainUI.ui" line="304"/> <source>Smaller Icons</source> - <translation type="unfinished"></translation> + <translation>Mindre ikoner</translation> </message> <message> <location filename="../MainUI.ui" line="307"/> <source>Ctrl+-</source> - <translation type="unfinished"></translation> + <translation>Ctrl+-</translation> </message> <message> <location filename="../MainUI.ui" line="315"/> <source>New Window</source> - <translation type="unfinished"></translation> + <translation>Nyt vindue</translation> </message> <message> <location filename="../MainUI.ui" line="318"/> <source>Ctrl+N</source> - <translation type="unfinished"></translation> + <translation>Ctrl+N</translation> </message> <message> <location filename="../MainUI.ui" line="326"/> <source>Add Bookmark</source> - <translation type="unfinished"></translation> + <translation>Tilføj bogmærke</translation> </message> <message> <location filename="../MainUI.ui" line="329"/> <source>Ctrl+D</source> - <translation type="unfinished"></translation> + <translation>Ctrl+D</translation> </message> <message> <location filename="../MainUI.ui" line="381"/> <source>Delete Selection</source> - <translation type="unfinished">Slet valgte</translation> + <translation>Slet valgte</translation> </message> <message> <location filename="../MainUI.ui" line="384"/> <source>Del</source> - <translation type="unfinished"></translation> + <translation>Del</translation> </message> <message> <location filename="../MainUI.ui" line="392"/> <source>Refresh</source> - <translation type="unfinished"></translation> + <translation>Genopfrisk</translation> </message> <message> <location filename="../MainUI.ui" line="403"/> <source>Close Tab</source> - <translation type="unfinished"></translation> + <translation>Luk faneblad</translation> </message> <message> <location filename="../MainUI.ui" line="414"/> <source>Repo Status</source> - <translation type="unfinished"></translation> + <translation>Arkivstatus</translation> </message> <message> <location filename="../MainUI.ui" line="419"/> <source>Clone Repository</source> - <translation type="unfinished"></translation> + <translation>Klon arkiv</translation> </message> <message> <location filename="../MainUI.ui" line="177"/> <source>Ctrl+T</source> - <translation type="unfinished"></translation> + <translation>Ctrl+T</translation> </message> <message> <location filename="../MainUI.ui" line="185"/> <source>Exit</source> - <translation type="unfinished"></translation> + <translation>Afslut</translation> </message> <message> <location filename="../MainUI.ui" line="188"/> <source>Ctrl+Q</source> - <translation type="unfinished"></translation> + <translation>Ctrl+Q</translation> </message> <message> <location filename="../MainUI.ui" line="196"/> <source>&Preferences</source> - <translation type="unfinished"></translation> + <translation>&Præferencer</translation> </message> <message> <location filename="../MainUI.ui" line="207"/> <source>Show Hidden Files</source> - <translation type="unfinished"></translation> + <translation>Vis skjulte filer</translation> </message> <message> <location filename="../MainUI.ui" line="212"/> <source>Scan for Devices</source> - <translation type="unfinished"></translation> + <translation>Skan efter enheder</translation> </message> <message> <location filename="../MainUI.ui" line="220"/> <source>Manage Bookmarks</source> - <translation type="unfinished">Administrér bogmærker</translation> + <translation>Håndter bogmærker</translation> </message> <message> <location filename="../MainUI.ui" line="234"/> <source>Show Action Buttons</source> - <translation type="unfinished"></translation> + <translation>Vis handlingsknapper</translation> </message> <message> <location filename="../MainUI.ui" line="245"/> <source>Load Thumbnails</source> - <translation type="unfinished"></translation> + <translation>Indlæs miniaturer</translation> </message> <message> <location filename="../MainUI.ui" line="253"/> <source>Ctrl+F</source> - <translation type="unfinished"></translation> + <translation>Ctrl+F</translation> </message> <message> <location filename="../MainUI.cpp" line="63"/> <source>Detailed List</source> - <translation type="unfinished"></translation> + <translation>Detaljeret liste</translation> </message> <message> <location filename="../MainUI.cpp" line="64"/> <source>Basic List</source> - <translation type="unfinished"></translation> + <translation>Basisliste</translation> </message> <message> <location filename="../MainUI.ui" line="406"/> <source>Ctrl+W</source> - <translation type="unfinished"></translation> + <translation>Ctrl+W</translation> </message> <message> <location filename="../MainUI.ui" line="395"/> <source>F5</source> - <translation type="unfinished"></translation> + <translation>F5</translation> </message> <message> <location filename="../MainUI.ui" line="362"/> <source>Ctrl+C</source> - <translation type="unfinished"></translation> + <translation>Ctrl+C</translation> </message> <message> <location filename="../MainUI.ui" line="337"/> <source>Rename...</source> - <translation type="unfinished"></translation> + <translation>Omdøb...</translation> </message> <message> <location filename="../MainUI.ui" line="340"/> <source>F2</source> - <translation type="unfinished"></translation> + <translation>F2</translation> </message> <message> <location filename="../MainUI.ui" line="348"/> <source>Cut Selection</source> - <translation type="unfinished">Klip valgte</translation> + <translation>Klip valgte</translation> </message> <message> <location filename="../MainUI.ui" line="359"/> <source>Copy Selection</source> - <translation type="unfinished">Kopiér valgte</translation> + <translation>Kopiér valgte</translation> </message> <message> <location filename="../MainUI.ui" line="370"/> <source>Paste</source> - <translation type="unfinished">Indsæt</translation> + <translation>Indsæt</translation> </message> <message> <location filename="../MainUI.ui" line="373"/> <source>Ctrl+V</source> - <translation type="unfinished"></translation> + <translation>Ctrl+V</translation> </message> <message> <location filename="../MainUI.ui" line="351"/> <source>Ctrl+X</source> - <translation type="unfinished"></translation> + <translation>Ctrl+X</translation> </message> <message> <location filename="../MainUI.cpp" line="189"/> <source>Invalid Directories</source> - <translation type="unfinished"></translation> + <translation>Ugyldige mapper</translation> </message> <message> <location filename="../MainUI.cpp" line="189"/> <source>The following directories are invalid and could not be opened:</source> - <translation type="unfinished"></translation> + <translation>De følgende mapper er ugyldige og kan ikke åbnes:</translation> </message> <message> <location filename="../MainUI.cpp" line="222"/> <source>CTRL+B</source> - <translation type="unfinished"></translation> + <translation>CTRL+B</translation> </message> <message> <location filename="../MainUI.cpp" line="231"/> <source>CTRL+E</source> - <translation type="unfinished"></translation> + <translation>CTRL+E</translation> </message> <message> <location filename="../MainUI.cpp" line="336"/> <source>Root</source> - <translation type="unfinished"></translation> + <translation>Rod</translation> </message> <message> <location filename="../MainUI.cpp" line="342"/> <source>%1 (Type: %2)</source> - <translation type="unfinished"></translation> + <translation>%1 (type: %2)</translation> </message> <message> <location filename="../MainUI.cpp" line="346"/> <source>Filesystem: %1</source> - <translation type="unfinished"></translation> + <translation>Filsystem: %1</translation> </message> <message> <location filename="../MainUI.cpp" line="595"/> <source>New Bookmark</source> - <translation type="unfinished"></translation> + <translation>Nyt bogmærke</translation> </message> <message> <location filename="../MainUI.cpp" line="595"/> <source>Name:</source> - <translation type="unfinished">Navn:</translation> + <translation>Navn:</translation> </message> <message> <location filename="../MainUI.cpp" line="600"/> <source>Invalid Name</source> - <translation type="unfinished">Ugyldigt navn</translation> + <translation>Ugyldigt navn</translation> </message> <message> <location filename="../MainUI.cpp" line="600"/> <source>This bookmark name already exists. Please choose another.</source> - <translation type="unfinished">Dette bogmærke navn findes allerede. Vælg venligst et andet navn.</translation> + <translation>Dette bogmærkenavn findes allerede. Vælg venligst et andet.</translation> </message> <message> <location filename="../MainUI.cpp" line="621"/> <source>Git Repository Status</source> - <translation type="unfinished"></translation> + <translation>Git-arkiv status</translation> </message> <message> <location filename="../MainUI.cpp" line="711"/> <source>Multimedia</source> - <translation type="unfinished"></translation> + <translation>Multimedie</translation> </message> <message> <location filename="../MainUI.cpp" line="729"/> <source>Slideshow</source> - <translation type="unfinished">Slideshow</translation> + <translation>Diasshow</translation> </message> <message> <location filename="../MainUI.cpp" line="909"/> <source>Items to be removed:</source> - <translation type="unfinished"></translation> + <translation>Poster som skal fjernes:</translation> </message> <message> <location filename="../MainUI.cpp" line="423"/> <source>Verify Quit</source> - <translation type="unfinished"></translation> + <translation>Bekræft afslut</translation> </message> <message> <location filename="../MainUI.cpp" line="94"/> <source>Ctrl+H</source> - <translation type="unfinished"></translation> + <translation>Ctrl+H</translation> </message> <message> <location filename="../MainUI.cpp" line="95"/> <source>Ctrl+L</source> - <translation type="unfinished"></translation> + <translation>Ctrl+L</translation> </message> <message> <location filename="../MainUI.cpp" line="423"/> <source>You have multiple tabs open. Are you sure you want to quit?</source> - <translation type="unfinished"></translation> + <translation>Du har adskillige åbne faneblade. Er du sikker på, at du vil afslutte?</translation> </message> <message> <location filename="../MainUI.cpp" line="908"/> <source>Verify Removal</source> - <translation type="unfinished"></translation> + <translation>Bekræft fjernelse</translation> </message> <message> <location filename="../MainUI.cpp" line="908"/> <source>WARNING: This will permanently delete the file(s) from the system!</source> - <translation type="unfinished"></translation> + <translation>ADVARSEL: Dette vil slette filen/filerne permanent fra systemet!</translation> </message> <message> <location filename="../MainUI.cpp" line="908"/> <source>Are you sure you want to continue?</source> - <translation type="unfinished"></translation> + <translation>Er du sikker på, at du vil fortsætte?</translation> </message> <message> <location filename="../MainUI.cpp" line="868"/> <source>Rename File</source> - <translation type="unfinished"></translation> + <translation>Omdøb fil</translation> </message> <message> <location filename="../MainUI.cpp" line="868"/> <source>New Name:</source> - <translation type="unfinished"></translation> + <translation>Nyt navn:</translation> </message> <message> <location filename="../MainUI.cpp" line="882"/> <source>Overwrite File?</source> - <translation type="unfinished"></translation> + <translation>Overskriv fil?</translation> </message> <message> <location filename="../MainUI.cpp" line="882"/> <source>An existing file with the same name will be replaced. Are you sure you want to proceed?</source> - <translation type="unfinished"></translation> + <translation>En eksisterende fil med der samme navn vil blive erstattet. Er du sikker på, at du vil fortsætte?</translation> </message> </context> <context> @@ -968,37 +968,37 @@ Ny lokation: %2</translation> <message> <location filename="../widgets/MultimediaWidget.ui" line="14"/> <source>Form</source> - <translation type="unfinished">Formular</translation> + <translation>Formular</translation> </message> <message> <location filename="../widgets/MultimediaWidget.ui" line="28"/> <source>Go To Next</source> - <translation type="unfinished"></translation> + <translation>Gå til næste</translation> </message> <message> <location filename="../widgets/MultimediaWidget.ui" line="107"/> <source>(No Running Video)</source> - <translation type="unfinished"></translation> + <translation>(ingen kørende video)</translation> </message> <message> <location filename="../widgets/MultimediaWidget.cpp" line="124"/> <source>Playing:</source> - <translation type="unfinished"></translation> + <translation>Afspiller:</translation> </message> <message> <location filename="../widgets/MultimediaWidget.cpp" line="130"/> <source>Stopped</source> - <translation type="unfinished"></translation> + <translation>Stoppet</translation> </message> <message> <location filename="../widgets/MultimediaWidget.cpp" line="157"/> <source>Error Playing File: %1</source> - <translation type="unfinished"></translation> + <translation>Fejl ved afspilning af fil: %1</translation> </message> <message> <location filename="../widgets/MultimediaWidget.cpp" line="168"/> <source>Finished</source> - <translation type="unfinished">Gennemført</translation> + <translation>Gennemført</translation> </message> </context> <context> @@ -1006,48 +1006,48 @@ Ny lokation: %2</translation> <message> <location filename="../OPWidget.ui" line="14"/> <source>Form</source> - <translation type="unfinished">Formular</translation> + <translation>Formular</translation> </message> <message> <location filename="../OPWidget.ui" line="44"/> <location filename="../OPWidget.ui" line="51"/> <source>...</source> - <translation type="unfinished"></translation> + <translation>...</translation> </message> <message> <location filename="../OPWidget.ui" line="60"/> <source>Evaluating...</source> - <translation type="unfinished"></translation> + <translation>Evaluerer...</translation> </message> <message> <location filename="../OPWidget.cpp" line="52"/> <source>Move</source> - <translation type="unfinished"></translation> + <translation>Flyt</translation> </message> <message> <location filename="../OPWidget.cpp" line="53"/> <source>Copy</source> - <translation type="unfinished"></translation> + <translation>Kopiér</translation> </message> <message> <location filename="../OPWidget.cpp" line="54"/> <source>Remove</source> - <translation type="unfinished"></translation> + <translation>Fjern</translation> </message> <message> <location filename="../OPWidget.cpp" line="96"/> <source>File Operation Errors</source> - <translation type="unfinished"></translation> + <translation>Filhandlingsfejl</translation> </message> <message> <location filename="../OPWidget.cpp" line="108"/> <source>%1 Finished</source> - <translation type="unfinished"></translation> + <translation>%1 gennemført</translation> </message> <message> <location filename="../OPWidget.cpp" line="108"/> <source>Errors Occured</source> - <translation type="unfinished"></translation> + <translation>Fejl opstod</translation> </message> </context> <context> @@ -1055,39 +1055,39 @@ Ny lokation: %2</translation> <message> <location filename="../widgets/SlideshowWidget.ui" line="14"/> <source>Form</source> - <translation type="unfinished">Formular</translation> + <translation>Formular</translation> </message> <message> <location filename="../widgets/SlideshowWidget.ui" line="36"/> <source>Delete this image file</source> - <translation type="unfinished"></translation> + <translation>Slet denne billedfil</translation> </message> <message> <location filename="../widgets/SlideshowWidget.ui" line="56"/> <source>Rotate this image file counter-clockwise</source> - <translation type="unfinished"></translation> + <translation>Roter denne billedfil modsat urets retning</translation> </message> <message> <location filename="../widgets/SlideshowWidget.ui" line="69"/> <source>Rotate this image file clockwise</source> - <translation type="unfinished"></translation> + <translation>Roter denne billefil i urets retning</translation> </message> <message> <location filename="../widgets/SlideshowWidget.ui" line="89"/> <location filename="../widgets/SlideshowWidget.ui" line="92"/> <source>Zoom in</source> - <translation type="unfinished"></translation> + <translation>Zoom ind</translation> </message> <message> <location filename="../widgets/SlideshowWidget.ui" line="105"/> <location filename="../widgets/SlideshowWidget.ui" line="108"/> <source>Zoom out</source> - <translation type="unfinished"></translation> + <translation>Zoom ud</translation> </message> <message> <location filename="../widgets/SlideshowWidget.ui" line="212"/> <source>Go to Beginning</source> - <translation type="unfinished"></translation> + <translation>Gå til begyndelsen</translation> </message> <message> <location filename="../widgets/SlideshowWidget.ui" line="215"/> @@ -1095,62 +1095,62 @@ Ny lokation: %2</translation> <location filename="../widgets/SlideshowWidget.ui" line="304"/> <location filename="../widgets/SlideshowWidget.ui" line="320"/> <source>...</source> - <translation type="unfinished"></translation> + <translation>...</translation> </message> <message> <location filename="../widgets/SlideshowWidget.ui" line="218"/> <source>Shift+Left</source> - <translation type="unfinished">Skift+venstre</translation> + <translation>Skift+Venstre</translation> </message> <message> <location filename="../widgets/SlideshowWidget.ui" line="228"/> <source>Go to Previous</source> - <translation type="unfinished"></translation> + <translation>Gå til forrige</translation> </message> <message> <location filename="../widgets/SlideshowWidget.ui" line="234"/> <source>Left</source> - <translation type="unfinished"></translation> + <translation>Venstre</translation> </message> <message> <location filename="../widgets/SlideshowWidget.ui" line="267"/> <source>File Name</source> - <translation type="unfinished"></translation> + <translation>Filnavn</translation> </message> <message> <location filename="../widgets/SlideshowWidget.ui" line="301"/> <source>Go to Next</source> - <translation type="unfinished"></translation> + <translation>Gå til næste</translation> </message> <message> <location filename="../widgets/SlideshowWidget.ui" line="307"/> <source>Right</source> - <translation type="unfinished"></translation> + <translation>Højre</translation> </message> <message> <location filename="../widgets/SlideshowWidget.ui" line="317"/> <source>Go to End</source> - <translation type="unfinished"></translation> + <translation>Gå til slutningen</translation> </message> <message> <location filename="../widgets/SlideshowWidget.ui" line="323"/> <source>Shift+Right</source> - <translation type="unfinished"></translation> + <translation>Skift+Højre</translation> </message> <message> <location filename="../widgets/SlideshowWidget.cpp" line="125"/> <source>Verify Removal</source> - <translation type="unfinished"></translation> + <translation>Bekræft fjernelse</translation> </message> <message> <location filename="../widgets/SlideshowWidget.cpp" line="125"/> <source>WARNING: This will permanently delete the file from the system!</source> - <translation type="unfinished"></translation> + <translation>ADVARSEL: Dette vil slette filen permanent fra systemet!</translation> </message> <message> <location filename="../widgets/SlideshowWidget.cpp" line="125"/> <source>Are you sure you want to continue?</source> - <translation type="unfinished"></translation> + <translation>Er du sikker på, at du vil fortsætte?</translation> </message> </context> <context> @@ -1158,12 +1158,12 @@ Ny lokation: %2</translation> <message> <location filename="../TrayUI.cpp" line="76"/> <source>Finished</source> - <translation type="unfinished">Gennemført</translation> + <translation>Gennemført</translation> </message> <message> <location filename="../TrayUI.cpp" line="76"/> <source>Errors during operation. Click to view details</source> - <translation type="unfinished"></translation> + <translation>Fejl under handling. Klik for at vise detaljer</translation> </message> </context> </TS> diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_de.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_de.ts index 84c07a5e..26942d93 100644 --- a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_de.ts +++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_de.ts @@ -94,7 +94,7 @@ <message> <location filename="../BrowserWidget.cpp" line="343"/> <source>Files: %1</source> - <translation type="unfinished"></translation> + <translation>Dateien: %1</translation> </message> <message> <location filename="../BrowserWidget.cpp" line="349"/> @@ -104,7 +104,7 @@ <message> <location filename="../BrowserWidget.cpp" line="363"/> <source>No Directory Contents</source> - <translation type="unfinished"></translation> + <translation>Kein Verzeichnisinhalt</translation> </message> </context> <context> @@ -118,12 +118,12 @@ <message> <location filename="../widgets/DirWidget2.ui" line="145"/> <source>Increase Icon Sizes</source> - <translation type="unfinished"></translation> + <translation>Symbolgrößen erhöhen</translation> </message> <message> <location filename="../widgets/DirWidget2.ui" line="161"/> <source>Decrease Icon Sizes</source> - <translation type="unfinished"></translation> + <translation>Symbolgrößen verringern</translation> </message> <message> <location filename="../widgets/DirWidget2.ui" line="179"/> @@ -134,7 +134,7 @@ <location filename="../widgets/DirWidget2.ui" line="182"/> <location filename="../widgets/DirWidget2.ui" line="185"/> <source>Go back to previous directory</source> - <translation>zurück zum vorhergehenden Verzeichnis</translation> + <translation>Zurück zum vorherigen Verzeichnis</translation> </message> <message> <location filename="../widgets/DirWidget2.ui" line="193"/> @@ -161,32 +161,32 @@ <message> <location filename="../widgets/DirWidget2.ui" line="218"/> <source>Menu</source> - <translation type="unfinished"></translation> + <translation>Menü</translation> </message> <message> <location filename="../widgets/DirWidget2.ui" line="221"/> <source>Select Action</source> - <translation type="unfinished"></translation> + <translation>Aktion auswählen</translation> </message> <message> <location filename="../widgets/DirWidget2.ui" line="229"/> <source>SingleColumn</source> - <translation type="unfinished"></translation> + <translation>EinzelneSpalte</translation> </message> <message> <location filename="../widgets/DirWidget2.ui" line="232"/> <source>Single column view</source> - <translation type="unfinished"></translation> + <translation>Einzelspaltenansicht</translation> </message> <message> <location filename="../widgets/DirWidget2.ui" line="240"/> <source>Dual Column</source> - <translation type="unfinished"></translation> + <translation>Doppelspalte</translation> </message> <message> <location filename="../widgets/DirWidget2.ui" line="243"/> <source>Dual Column View</source> - <translation type="unfinished"></translation> + <translation>Doppelspaltenansicht</translation> </message> <message> <location filename="../widgets/DirWidget2.cpp" line="533"/> @@ -231,17 +231,17 @@ <message> <location filename="../widgets/DirWidget2.cpp" line="488"/> <source>File Operations</source> - <translation type="unfinished"></translation> + <translation>Dateioperationen</translation> </message> <message> <location filename="../widgets/DirWidget2.cpp" line="502"/> <source>Directory Operations</source> - <translation type="unfinished"></translation> + <translation>Verzeichnisoperationen</translation> </message> <message> <location filename="../widgets/DirWidget2.cpp" line="514"/> <source>Loading...</source> - <translation type="unfinished"></translation> + <translation>Ladevorgang...</translation> </message> <message> <location filename="../widgets/DirWidget2.cpp" line="563"/> @@ -268,7 +268,7 @@ <message> <location filename="../widgets/DirWidget2.cpp" line="229"/> <source>Create...</source> - <translation type="unfinished"></translation> + <translation>Erstellen...</translation> </message> <message> <location filename="../widgets/DirWidget2.cpp" line="231"/> @@ -278,22 +278,22 @@ <message> <location filename="../widgets/DirWidget2.cpp" line="232"/> <source>Directory</source> - <translation type="unfinished"></translation> + <translation>Verzeichnis</translation> </message> <message> <location filename="../widgets/DirWidget2.cpp" line="233"/> <source>Application Launcher</source> - <translation type="unfinished"></translation> + <translation>Anwendungsstarter</translation> </message> <message> <location filename="../widgets/DirWidget2.cpp" line="237"/> <source>Launch...</source> - <translation type="unfinished"></translation> + <translation>Starten...</translation> </message> <message> <location filename="../widgets/DirWidget2.cpp" line="239"/> <source>Terminal</source> - <translation type="unfinished"></translation> + <translation>Terminal</translation> </message> <message> <location filename="../widgets/DirWidget2.cpp" line="240"/> @@ -303,22 +303,22 @@ <message> <location filename="../widgets/DirWidget2.cpp" line="241"/> <source>Multimedia Player</source> - <translation type="unfinished"></translation> + <translation>Multimedia-Abspieler</translation> </message> <message> <location filename="../widgets/DirWidget2.cpp" line="256"/> <source>View Files...</source> - <translation type="unfinished"></translation> + <translation>Dateien ansehen...</translation> </message> <message> <location filename="../widgets/DirWidget2.cpp" line="258"/> <source>Checksums</source> - <translation type="unfinished"></translation> + <translation>Prüfsummen</translation> </message> <message> <location filename="../widgets/DirWidget2.cpp" line="260"/> <source>Properties</source> - <translation type="unfinished"></translation> + <translation>Eigenschaften</translation> </message> <message> <location filename="../widgets/DirWidget2.cpp" line="448"/> @@ -332,8 +332,8 @@ </message> <message> <location filename="../widgets/DirWidget2.cpp" line="460"/> - <source>The "lumina-fileinfo" utility could not be found on the system. Please install it first.</source> - <translation>Das "lumina-fileinfo" Dienstprogramm konnte nicht gefunden werden. Bitte erst installieren.</translation> + <source>The "lumina-fileinfo" utility could not be found on the system. Please install it first.</source> + <translation>Das "lumina-fileinfo" Dienstprogramm konnte nicht gefunden werden. Bitte erst installieren.</translation> </message> <message> <location filename="../widgets/DirWidget2.cpp" line="485"/> @@ -553,7 +553,7 @@ Neue Position: %2</translation> <message> <location filename="../gitWizard.ui" line="159"/> <source>Custom Depth</source> - <translation>Benutzerdefinierter Wert für "depth"</translation> + <translation>Benutzerdefinierter Wert für "depth"</translation> </message> <message> <location filename="../gitWizard.ui" line="166"/> @@ -567,8 +567,8 @@ Neue Position: %2</translation> </message> <message> <location filename="../gitWizard.ui" line="232"/> - <source>Click "Next" to start downloading the repository</source> - <translation>Auf "Weiter" klicken, um das Repository herunterzuladen</translation> + <source>Click "Next" to start downloading the repository</source> + <translation>Auf "Weiter" klicken, um das Repository herunterzuladen</translation> </message> <message> <location filename="../gitWizard.h" line="58"/> @@ -631,17 +631,17 @@ Neue Position: %2</translation> <message> <location filename="../MainUI.ui" line="171"/> <source>New Tab</source> - <translation type="unfinished"></translation> + <translation>Neue Registerkarte</translation> </message> <message> <location filename="../MainUI.ui" line="174"/> <source>New Browser</source> - <translation>neuer Browser</translation> + <translation>Neuer Browser</translation> </message> <message> <location filename="../MainUI.ui" line="250"/> <source>Search Directory...</source> - <translation>Suche im Verzeichnis...</translation> + <translation>Im Verzeichnis suchen...</translation> </message> <message> <location filename="../MainUI.ui" line="283"/> @@ -711,17 +711,17 @@ Neue Position: %2</translation> <message> <location filename="../MainUI.ui" line="403"/> <source>Close Tab</source> - <translation type="unfinished"></translation> + <translation>Registerkarte schließen</translation> </message> <message> <location filename="../MainUI.ui" line="414"/> <source>Repo Status</source> - <translation>Status des Repositorys</translation> + <translation>Repositoriumsstatus</translation> </message> <message> <location filename="../MainUI.ui" line="419"/> <source>Clone Repository</source> - <translation>Repository klonen</translation> + <translation>Repositorium klonen</translation> </message> <message> <location filename="../MainUI.ui" line="177"/> @@ -846,12 +846,12 @@ Neue Position: %2</translation> <message> <location filename="../MainUI.cpp" line="222"/> <source>CTRL+B</source> - <translation type="unfinished"></translation> + <translation>STRG+B</translation> </message> <message> <location filename="../MainUI.cpp" line="231"/> <source>CTRL+E</source> - <translation type="unfinished"></translation> + <translation>STRG+E</translation> </message> <message> <location filename="../MainUI.cpp" line="336"/> @@ -1018,37 +1018,37 @@ Neue Position: %2</translation> <message> <location filename="../OPWidget.ui" line="60"/> <source>Evaluating...</source> - <translation type="unfinished"></translation> + <translation>Auswertung...</translation> </message> <message> <location filename="../OPWidget.cpp" line="52"/> <source>Move</source> - <translation type="unfinished"></translation> + <translation>Verschieben</translation> </message> <message> <location filename="../OPWidget.cpp" line="53"/> <source>Copy</source> - <translation type="unfinished"></translation> + <translation>Kopieren</translation> </message> <message> <location filename="../OPWidget.cpp" line="54"/> <source>Remove</source> - <translation type="unfinished"></translation> + <translation>Entfernen</translation> </message> <message> <location filename="../OPWidget.cpp" line="96"/> <source>File Operation Errors</source> - <translation type="unfinished"></translation> + <translation>Dateioperationsfehler</translation> </message> <message> <location filename="../OPWidget.cpp" line="108"/> <source>%1 Finished</source> - <translation type="unfinished"></translation> + <translation>%1 abgeschlossen</translation> </message> <message> <location filename="../OPWidget.cpp" line="108"/> <source>Errors Occured</source> - <translation type="unfinished"></translation> + <translation>Fehler aufgetreten</translation> </message> </context> <context> @@ -1164,7 +1164,7 @@ Neue Position: %2</translation> <message> <location filename="../TrayUI.cpp" line="76"/> <source>Errors during operation. Click to view details</source> - <translation type="unfinished"></translation> + <translation>Fehler während des Vorgangs. Zum Anzeigen von Details klicken</translation> </message> </context> </TS> diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_lt.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_lt.ts index b5720165..328f8c36 100644 --- a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_lt.ts +++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_lt.ts @@ -165,7 +165,7 @@ <message> <location filename="../widgets/DirWidget2.ui" line="221"/> <source>Select Action</source> - <translation type="unfinished"></translation> + <translation>Pasirinkti veiksmą</translation> </message> <message> <location filename="../widgets/DirWidget2.ui" line="229"/> @@ -307,7 +307,7 @@ <message> <location filename="../widgets/DirWidget2.cpp" line="256"/> <source>View Files...</source> - <translation type="unfinished"></translation> + <translation>Rodyti failų...</translation> </message> <message> <location filename="../widgets/DirWidget2.cpp" line="258"/> @@ -331,8 +331,8 @@ </message> <message> <location filename="../widgets/DirWidget2.cpp" line="460"/> - <source>The "lumina-fileinfo" utility could not be found on the system. Please install it first.</source> - <translation>Sistemoje nepavyko rasti "lumina-fileinfo" paslaugų programos. Prašome, iš pradžių, ją įdiegti.</translation> + <source>The "lumina-fileinfo" utility could not be found on the system. Please install it first.</source> + <translation>Sistemoje nepavyko rasti "lumina-fileinfo" paslaugų programos. Prašome, iš pradžių, ją įdiegti.</translation> </message> <message> <location filename="../widgets/DirWidget2.cpp" line="485"/> @@ -566,8 +566,8 @@ Nauja vieta: %2</translation> </message> <message> <location filename="../gitWizard.ui" line="232"/> - <source>Click "Next" to start downloading the repository</source> - <translation>Spustelėkite "Kitas", kad pradėtumėte saugyklos atsisiuntimą</translation> + <source>Click "Next" to start downloading the repository</source> + <translation>Spustelėkite "Kitas", kad pradėtumėte saugyklos atsisiuntimą</translation> </message> <message> <location filename="../gitWizard.h" line="58"/> @@ -845,12 +845,12 @@ Nauja vieta: %2</translation> <message> <location filename="../MainUI.cpp" line="222"/> <source>CTRL+B</source> - <translation type="unfinished"></translation> + <translation>CTRL(VALD)+B</translation> </message> <message> <location filename="../MainUI.cpp" line="231"/> <source>CTRL+E</source> - <translation type="unfinished"></translation> + <translation>CTRL(VALD)+E</translation> </message> <message> <location filename="../MainUI.cpp" line="336"/> @@ -1037,7 +1037,7 @@ Nauja vieta: %2</translation> <message> <location filename="../OPWidget.cpp" line="96"/> <source>File Operation Errors</source> - <translation type="unfinished"></translation> + <translation>Failų operacijos klaidos</translation> </message> <message> <location filename="../OPWidget.cpp" line="108"/> diff --git a/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget2.cpp b/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget2.cpp index 967e6b1a..69693c7d 100644 --- a/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget2.cpp +++ b/src-qt5/desktop-utils/lumina-fm/widgets/DirWidget2.cpp @@ -7,6 +7,7 @@ #include "DirWidget2.h" #include "ui_DirWidget2.h" +#include <QActionGroup> #include <QMessageBox> #include <QCursor> #include <QClipboard> @@ -44,9 +45,12 @@ DirWidget::DirWidget(QString objID, QWidget *parent) : QWidget(parent), ui(new U line_dir = new QLineEdit(this); toolbar->addWidget(line_dir); connect(line_dir, SIGNAL(returnPressed()), this, SLOT(dir_changed()) ); - toolbar->addAction(ui->actionSingleColumn); - ui->actionSingleColumn->setChecked(true); - toolbar->addAction(ui->actionDualColumn); + QActionGroup *columnActionGroup = new QActionGroup(this); + toolbar->addAction(ui->actionSingleColumn); + ui->actionSingleColumn->setChecked(true); + columnActionGroup->addAction(ui->actionSingleColumn); + toolbar->addAction(ui->actionDualColumn); + columnActionGroup->addAction(ui->actionDualColumn); toolbar->addAction(ui->actionMenu); //Add the browser widgets RCBW = 0; //right column browser is unavailable initially @@ -400,7 +404,6 @@ void DirWidget::dir_changed(){ void DirWidget::on_actionSingleColumn_triggered(bool checked){ if(!checked){ return; } - ui->actionDualColumn->setChecked(false); if(RCBW==0){ return; } //nothing to do ui->browser_layout->removeWidget(RCBW); RCBW->deleteLater(); @@ -410,7 +413,6 @@ void DirWidget::on_actionSingleColumn_triggered(bool checked){ void DirWidget::on_actionDualColumn_triggered(bool checked){ if(!checked){ return; } - ui->actionSingleColumn->setChecked(false); if(RCBW!=0){ return; } //nothing to do RCBW = new BrowserWidget("rc", this); ui->browser_layout->addWidget(RCBW); diff --git a/src-qt5/desktop-utils/lumina-screenshot/MainUI.cpp b/src-qt5/desktop-utils/lumina-screenshot/MainUI.cpp index 40c9857b..25f4cc62 100644 --- a/src-qt5/desktop-utils/lumina-screenshot/MainUI.cpp +++ b/src-qt5/desktop-utils/lumina-screenshot/MainUI.cpp @@ -9,12 +9,15 @@ #include <LuminaX11.h> #include <QMessageBox> +#include <QClipboard> - -MainUI::MainUI() : QMainWindow(), ui(new Ui::MainUI){ +MainUI::MainUI() + : QMainWindow(), ui(new Ui::MainUI), + mousegrabbed(false), + picSaved(false), + closeOnSave(false) +{ ui->setupUi(this); //load the designer file - mousegrabbed = false; - picSaved = false; XCB = new LXCB(); IMG = new ImageEditor(this); ui->scrollArea->setWidget(IMG); @@ -30,7 +33,8 @@ MainUI::MainUI() : QMainWindow(), ui(new Ui::MainUI){ scaleTimer->setSingleShot(true); scaleTimer->setInterval(200); //~1/5 second tabbar = new QTabBar(this); - ui->tabLayout->insertWidget(0,tabbar); + tabbar->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred); + ui->tabLayout->insertWidget(0,tabbar, Qt::AlignLeft | Qt::AlignBottom); tabbar->addTab(LXDG::findIcon("view-preview",""), tr("View")); tabbar->addTab(LXDG::findIcon("preferences-other",""), tr("Settings")); ui->stackedWidget->setCurrentWidget(ui->page_current); @@ -47,6 +51,7 @@ MainUI::MainUI() : QMainWindow(), ui(new Ui::MainUI){ //connect(ui->push_snap, SIGNAL(clicked()), this, SLOT(startScreenshot()) ); connect(ui->actionTake_Screenshot, SIGNAL(triggered()), this, SLOT(startScreenshot()) ); connect(ui->tool_crop, SIGNAL(clicked()), IMG, SLOT(cropImage()) ); + connect(ui->tool_copy_to_clipboard, SIGNAL(clicked()), this, SLOT(copyToClipboard()) ); connect(IMG, SIGNAL(selectionChanged(bool)), this, SLOT(imgselchanged(bool)) ); connect(IMG, SIGNAL(scaleFactorChanged(int)), this, SLOT(imgScalingChanged(int)) ); connect(ui->slider_zoom, SIGNAL(valueChanged(int)), this, SLOT(sliderChanged()) ); @@ -74,16 +79,14 @@ MainUI::~MainUI(){} void MainUI::setupIcons(){ //Setup the icons - //ui->tool_save->setIcon( LXDG::findIcon("document-save","") ); ui->tool_quicksave->setIcon( LXDG::findIcon("document-edit","") ); ui->actionSave_As->setIcon( LXDG::findIcon("document-save-as","") ); ui->actionQuick_Save->setIcon( LXDG::findIcon("document-save","") ); ui->actionClose->setIcon( LXDG::findIcon("application-exit","") ); - //ui->push_snap->setIcon( LXDG::findIcon("camera-web","") ); + ui->tool_copy_to_clipboard->setIcon( LXDG::findIcon("insert-image","") ); ui->actionTake_Screenshot->setIcon( LXDG::findIcon("camera-web","") ); ui->tool_crop->setIcon( LXDG::findIcon("transform-crop","") ); ui->tool_resize->setIcon( LXDG::findIcon("transform-scale","") ); - //ui->actionEdit->setIcon( LXDG::findIcon("applications-graphics","") ); this->setWindowIcon( LXDG::findIcon("camera-web","") ); } @@ -96,13 +99,22 @@ void MainUI::showSaveError(QString path){ void MainUI::saveScreenshot(){ if(mousegrabbed){ return; } QString filepath = QFileDialog::getSaveFileName(this, tr("Save Screenshot"), ppath+"/"+QString( "Screenshot-%1.png" ).arg( lastScreenShot.toString("yyyy-MM-dd-hh-mm-ss")), tr("PNG Files (*.png);;AllFiles (*)") ); - if(filepath.isEmpty()){ return; } + if(filepath.isEmpty()){ + closeOnSave = false; + return; + } if(!filepath.endsWith(".png")){ filepath.append(".png"); } if( !IMG->image().save(filepath, "png") ){ + closeOnSave = false; showSaveError(filepath); }else{ picSaved = true; ppath = filepath.section("/",0,-2); //just the directory + if (closeOnSave) { + // We came here from close, now we need to close *after* handling + // the current screen event. + QTimer::singleShot(0, this, SLOT(close())); + } } } @@ -121,6 +133,12 @@ void MainUI::quicksave(){ } } +void MainUI::copyToClipboard(){ + qDebug() << "Copy Image to clipboard"; + QClipboard *clipboard = QApplication::clipboard(); + clipboard->setImage(IMG->image()); + qDebug() << " - Success:" << !clipboard->image().isNull(); +} void MainUI::startScreenshot(){ if(mousegrabbed){ return; } @@ -243,8 +261,18 @@ void MainUI::closeEvent(QCloseEvent *ev){ //qDebug() << "Close Event:" << ui->check_show_popups->isChecked() << picSaved; if(ui->check_show_popups->isChecked() && !picSaved){ //Ask what to do about the unsaved changed - if(QMessageBox::Yes != QMessageBox::warning(this, tr("Unsaved Screenshot"), tr("The current screenshot has not been saved yet. Do you want to quit anyway?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::No) ){ - //cancelled close of window + const int messageRet = QMessageBox::warning(this, tr("Unsaved Screenshot"), + tr("The current screenshot has not been saved yet. Do you want to save or discard your changes?"), + QMessageBox::Discard | QMessageBox::Save |QMessageBox::Cancel, QMessageBox::Cancel); + switch (messageRet) { + case QMessageBox::Discard: + // Just close, we don't care about the file. + break; + case QMessageBox::Save: + closeOnSave = true; + saveScreenshot(); + // fall through + case QMessageBox::Cancel: ev->ignore(); return; } diff --git a/src-qt5/desktop-utils/lumina-screenshot/MainUI.h b/src-qt5/desktop-utils/lumina-screenshot/MainUI.h index 396bfafe..4a18ef74 100644 --- a/src-qt5/desktop-utils/lumina-screenshot/MainUI.h +++ b/src-qt5/desktop-utils/lumina-screenshot/MainUI.h @@ -41,7 +41,7 @@ public slots: private: Ui::MainUI *ui; - bool mousegrabbed, picSaved; + bool mousegrabbed, picSaved, closeOnSave; QRect lastgeom; QString ppath; //previous file path WId cwin; //current window to screenshot @@ -63,6 +63,7 @@ private slots: } void saveScreenshot(); void quicksave(); + void copyToClipboard(); void startScreenshot(); diff --git a/src-qt5/desktop-utils/lumina-screenshot/MainUI.ui b/src-qt5/desktop-utils/lumina-screenshot/MainUI.ui index cddee009..f4230ff6 100644 --- a/src-qt5/desktop-utils/lumina-screenshot/MainUI.ui +++ b/src-qt5/desktop-utils/lumina-screenshot/MainUI.ui @@ -6,8 +6,8 @@ <rect> <x>0</x> <y>0</y> - <width>386</width> - <height>288</height> + <width>480</width> + <height>318</height> </rect> </property> <property name="sizePolicy"> @@ -54,7 +54,7 @@ <item> <widget class="QFrame" name="frame_modify"> <property name="frameShape"> - <enum>QFrame::NoFrame</enum> + <enum>QFrame::StyledPanel</enum> </property> <property name="frameShadow"> <enum>QFrame::Raised</enum> @@ -83,12 +83,44 @@ <verstretch>0</verstretch> </sizepolicy> </property> + <property name="statusTip"> + <string>Open screenshot with an application</string> + </property> <property name="text"> - <string>Open With...</string> + <string>Open</string> </property> <property name="toolButtonStyle"> <enum>Qt::ToolButtonTextBesideIcon</enum> </property> + <property name="autoRaise"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="tool_copy_to_clipboard"> + <property name="statusTip"> + <string>Copy screenshot to clipboard</string> + </property> + <property name="text"> + <string>Copy</string> + </property> + <property name="shortcut"> + <string>Ctrl+C</string> + </property> + <property name="toolButtonStyle"> + <enum>Qt::ToolButtonTextBesideIcon</enum> + </property> + <property name="autoRaise"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="Line" name="line"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> </widget> </item> <item> @@ -99,12 +131,18 @@ <verstretch>0</verstretch> </sizepolicy> </property> + <property name="statusTip"> + <string>Resize screenshot to selection</string> + </property> <property name="text"> <string>Resize</string> </property> <property name="toolButtonStyle"> <enum>Qt::ToolButtonTextBesideIcon</enum> </property> + <property name="autoRaise"> + <bool>true</bool> + </property> </widget> </item> <item> @@ -115,12 +153,18 @@ <verstretch>0</verstretch> </sizepolicy> </property> + <property name="statusTip"> + <string>Crop screenshot to selection</string> + </property> <property name="text"> <string>&Crop</string> </property> <property name="toolButtonStyle"> <enum>Qt::ToolButtonTextBesideIcon</enum> </property> + <property name="autoRaise"> + <bool>true</bool> + </property> </widget> </item> </layout> @@ -210,8 +254,8 @@ <rect> <x>0</x> <y>0</y> - <width>344</width> - <height>216</height> + <width>439</width> + <height>230</height> </rect> </property> </widget> @@ -463,9 +507,9 @@ </attribute> <addaction name="actionTake_Screenshot"/> <addaction name="actionSave_As"/> - <addaction name="actionQuick_Save"/> <addaction name="actionClose"/> </widget> + <widget class="QStatusBar" name="statusBar"/> <action name="actionTake_Screenshot"> <property name="text"> <string>Capture</string> diff --git a/src-qt5/desktop-utils/lumina-screenshot/i18n/l-screenshot_da.ts b/src-qt5/desktop-utils/lumina-screenshot/i18n/l-screenshot_da.ts index 7cc9d423..ec870f78 100644 --- a/src-qt5/desktop-utils/lumina-screenshot/i18n/l-screenshot_da.ts +++ b/src-qt5/desktop-utils/lumina-screenshot/i18n/l-screenshot_da.ts @@ -6,12 +6,12 @@ <message> <location filename="../ImageEditor.cpp" line="14"/> <source>Zoom In</source> - <translation type="unfinished"></translation> + <translation>Zoom ind</translation> </message> <message> <location filename="../ImageEditor.cpp" line="15"/> <source>Zoom Out</source> - <translation type="unfinished"></translation> + <translation>Zoom ud</translation> </message> </context> <context> @@ -19,7 +19,7 @@ <message> <location filename="../MainUI.ui" line="375"/> <source>Take Screenshot</source> - <translation>Gem skærmbillede</translation> + <translation>Tag skærmbillede</translation> </message> <message> <location filename="../MainUI.ui" line="151"/> @@ -30,57 +30,57 @@ <location filename="../MainUI.ui" line="196"/> <location filename="../MainUI.ui" line="386"/> <source>Save As</source> - <translation type="unfinished"></translation> + <translation>Gem som</translation> </message> <message> <location filename="../MainUI.ui" line="244"/> <source>Crop</source> - <translation type="unfinished"></translation> + <translation>Beskær</translation> </message> <message> <location filename="../MainUI.ui" line="228"/> <source>Resize</source> - <translation type="unfinished"></translation> + <translation>Tilpas størrelse</translation> </message> <message> <location filename="../MainUI.ui" line="20"/> <source>Lumina Screenshot</source> - <translation type="unfinished"></translation> + <translation>Lumina-skærmbillede</translation> </message> <message> <location filename="../MainUI.ui" line="70"/> <source> Sec Delay</source> - <translation type="unfinished"></translation> + <translation> Sek. forsinkelse</translation> </message> <message> <location filename="../MainUI.ui" line="183"/> <source>Capture</source> - <translation type="unfinished"></translation> + <translation>Fang</translation> </message> <message> <location filename="../MainUI.ui" line="212"/> <source>Edit</source> - <translation type="unfinished"></translation> + <translation>Rediger</translation> </message> <message> <location filename="../MainUI.ui" line="362"/> <source>File</source> - <translation type="unfinished"></translation> + <translation>Fil</translation> </message> <message> <location filename="../MainUI.ui" line="378"/> <source>Ctrl+N</source> - <translation type="unfinished"></translation> + <translation>Ctrl+N</translation> </message> <message> <location filename="../MainUI.ui" line="402"/> <source>Close</source> - <translation type="unfinished"></translation> + <translation>Luk</translation> </message> <message> <location filename="../MainUI.ui" line="405"/> <source>Esc</source> - <translation type="unfinished"></translation> + <translation>Esc</translation> </message> <message> <location filename="../MainUI.ui" line="57"/> @@ -100,12 +100,12 @@ <message> <location filename="../MainUI.cpp" line="79"/> <source>Could not save screenshot</source> - <translation type="unfinished"></translation> + <translation>Kunne ikke gemme skærmbillede</translation> </message> <message> <location filename="../MainUI.cpp" line="79"/> <source>The screenshot could not be saved. Please check directory permissions or pick a different directory</source> - <translation type="unfinished"></translation> + <translation>Skærmbilledet kunne ikke gemmes. Tjek venligst mappetilladelserne eller vælg en anden mappe</translation> </message> <message> <location filename="../MainUI.cpp" line="86"/> @@ -125,7 +125,7 @@ <message> <location filename="../MainUI.cpp" line="86"/> <source>PNG Files (*.png);;AllFiles (*)</source> - <translation>PNG Filer (*.png);;AllFiles (*)</translation> + <translation>PNG-filer (*.png);;Alle filer (*)</translation> </message> </context> </TS> diff --git a/src-qt5/desktop-utils/lumina-screenshot/i18n/l-screenshot_de.ts b/src-qt5/desktop-utils/lumina-screenshot/i18n/l-screenshot_de.ts index ab4efacf..5888f671 100644 --- a/src-qt5/desktop-utils/lumina-screenshot/i18n/l-screenshot_de.ts +++ b/src-qt5/desktop-utils/lumina-screenshot/i18n/l-screenshot_de.ts @@ -50,17 +50,17 @@ <message> <location filename="../MainUI.ui" line="70"/> <source> Sec Delay</source> - <translation type="unfinished"></translation> + <translation> Sek. Verzögerung</translation> </message> <message> <location filename="../MainUI.ui" line="183"/> <source>Capture</source> - <translation type="unfinished"></translation> + <translation>Aufnehmen</translation> </message> <message> <location filename="../MainUI.ui" line="212"/> <source>Edit</source> - <translation type="unfinished"></translation> + <translation>Bearbeiten</translation> </message> <message> <location filename="../MainUI.ui" line="362"/> @@ -100,12 +100,12 @@ <message> <location filename="../MainUI.cpp" line="79"/> <source>Could not save screenshot</source> - <translation type="unfinished"></translation> + <translation>Bildschirmfoto konnte nicht gespeichert werden</translation> </message> <message> <location filename="../MainUI.cpp" line="79"/> <source>The screenshot could not be saved. Please check directory permissions or pick a different directory</source> - <translation type="unfinished"></translation> + <translation>Das Bildschirmfoto konnte nicht gespeichert werden. Bitte überprüfen Sie die Verzeichnisberechtigungen oder wählen Sie ein anderes Verzeichnis aus</translation> </message> <message> <location filename="../MainUI.cpp" line="86"/> diff --git a/src-qt5/desktop-utils/lumina-screenshot/i18n/l-screenshot_pl.ts b/src-qt5/desktop-utils/lumina-screenshot/i18n/l-screenshot_pl.ts index 9ccca97d..c2dafeda 100644 --- a/src-qt5/desktop-utils/lumina-screenshot/i18n/l-screenshot_pl.ts +++ b/src-qt5/desktop-utils/lumina-screenshot/i18n/l-screenshot_pl.ts @@ -45,22 +45,22 @@ <message> <location filename="../MainUI.ui" line="20"/> <source>Lumina Screenshot</source> - <translation type="unfinished"></translation> + <translation>Zrzut ekranu Lumina</translation> </message> <message> <location filename="../MainUI.ui" line="70"/> <source> Sec Delay</source> - <translation type="unfinished"></translation> + <translation> sekund(y) opoźnienia</translation> </message> <message> <location filename="../MainUI.ui" line="183"/> <source>Capture</source> - <translation type="unfinished"></translation> + <translation>Wykonaj zrzut ekranu</translation> </message> <message> <location filename="../MainUI.ui" line="212"/> <source>Edit</source> - <translation type="unfinished"></translation> + <translation>Edycja</translation> </message> <message> <location filename="../MainUI.ui" line="362"/> diff --git a/src-qt5/desktop-utils/lumina-terminal/i18n/l-terminal_da.ts b/src-qt5/desktop-utils/lumina-terminal/i18n/l-terminal_da.ts index ff5233cb..f046a686 100644 --- a/src-qt5/desktop-utils/lumina-terminal/i18n/l-terminal_da.ts +++ b/src-qt5/desktop-utils/lumina-terminal/i18n/l-terminal_da.ts @@ -6,12 +6,12 @@ <message> <location filename="../TerminalWidget.cpp" line="60"/> <source>Copy Selection</source> - <translation type="unfinished"></translation> + <translation>Kopiér valgte</translation> </message> <message> <location filename="../TerminalWidget.cpp" line="61"/> <source>Paste</source> - <translation type="unfinished"></translation> + <translation>Indsæt</translation> </message> </context> <context> @@ -19,27 +19,27 @@ <message> <location filename="../TrayIcon.cpp" line="123"/> <source>Trigger Terminal</source> - <translation type="unfinished"></translation> + <translation>Udløs terminal</translation> </message> <message> <location filename="../TrayIcon.cpp" line="125"/> <source>Top of Screen</source> - <translation type="unfinished"></translation> + <translation>Øverst på skærmen</translation> </message> <message> <location filename="../TrayIcon.cpp" line="130"/> <source>Close Terminal</source> - <translation type="unfinished"></translation> + <translation>Luk terminal</translation> </message> <message> <location filename="../TrayIcon.cpp" line="139"/> <source>Move To Monitor</source> - <translation type="unfinished"></translation> + <translation>Flyt til skærm</translation> </message> <message> <location filename="../TrayIcon.cpp" line="142"/> <source>Monitor %1</source> - <translation type="unfinished"></translation> + <translation>Skærm %1</translation> </message> </context> </TS> diff --git a/src-qt5/desktop-utils/lumina-terminal/i18n/l-terminal_de.ts b/src-qt5/desktop-utils/lumina-terminal/i18n/l-terminal_de.ts index 9cf56536..606091e8 100644 --- a/src-qt5/desktop-utils/lumina-terminal/i18n/l-terminal_de.ts +++ b/src-qt5/desktop-utils/lumina-terminal/i18n/l-terminal_de.ts @@ -6,12 +6,12 @@ <message> <location filename="../TerminalWidget.cpp" line="60"/> <source>Copy Selection</source> - <translation type="unfinished"></translation> + <translation>Auswahl kopieren</translation> </message> <message> <location filename="../TerminalWidget.cpp" line="61"/> <source>Paste</source> - <translation type="unfinished"></translation> + <translation>Einfügen</translation> </message> </context> <context> @@ -24,12 +24,12 @@ <message> <location filename="../TrayIcon.cpp" line="125"/> <source>Top of Screen</source> - <translation type="unfinished"></translation> + <translation>Oben am Bildschirm</translation> </message> <message> <location filename="../TrayIcon.cpp" line="130"/> <source>Close Terminal</source> - <translation type="unfinished"></translation> + <translation>Terminal schließen</translation> </message> <message> <location filename="../TrayIcon.cpp" line="139"/> @@ -39,7 +39,7 @@ <message> <location filename="../TrayIcon.cpp" line="142"/> <source>Monitor %1</source> - <translation type="unfinished"></translation> + <translation>Monitor %1</translation> </message> </context> </TS> diff --git a/src-qt5/desktop-utils/lumina-textedit/PlainTextEditor.cpp b/src-qt5/desktop-utils/lumina-textedit/PlainTextEditor.cpp index e8eaa007..a0aff9cc 100644 --- a/src-qt5/desktop-utils/lumina-textedit/PlainTextEditor.cpp +++ b/src-qt5/desktop-utils/lumina-textedit/PlainTextEditor.cpp @@ -83,7 +83,7 @@ void PlainTextEditor::LoadFile(QString filepath){ this->centerCursor(); //scroll until cursor is centered (if possible) } hasChanges = false; - watcher->addPath(filepath); + if(QFile::exists(filepath)){ watcher->addPath(filepath); } emit FileLoaded(this->whatsThis()); } diff --git a/src-qt5/desktop-utils/lumina-textedit/i18n/l-te_da.ts b/src-qt5/desktop-utils/lumina-textedit/i18n/l-te_da.ts index 66f5b9bd..f9a5fdde 100644 --- a/src-qt5/desktop-utils/lumina-textedit/i18n/l-te_da.ts +++ b/src-qt5/desktop-utils/lumina-textedit/i18n/l-te_da.ts @@ -1,43 +1,43 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.1"> +<TS version="2.1" language="l-te_da"> <context> <name>ColorDialog</name> <message> <location filename="../ColorDialog.ui" line="14"/> <source>Customize Colors</source> - <translation type="unfinished"></translation> + <translation>Tilpas farver</translation> </message> <message> <location filename="../ColorDialog.ui" line="24"/> <source>Item Type</source> - <translation type="unfinished"></translation> + <translation>Posttype</translation> </message> <message> <location filename="../ColorDialog.ui" line="29"/> <source>Color</source> - <translation type="unfinished"></translation> + <translation>Farve</translation> </message> <message> <location filename="../ColorDialog.ui" line="34"/> <source>Sample</source> - <translation type="unfinished"></translation> + <translation>Prøve</translation> </message> <message> <location filename="../ColorDialog.ui" line="44"/> <location filename="../ColorDialog.cpp" line="55"/> <source>Select Color</source> - <translation type="unfinished"></translation> + <translation>Vælg farve</translation> </message> <message> <location filename="../ColorDialog.ui" line="64"/> <source>Cancel</source> - <translation type="unfinished"></translation> + <translation>Annuller</translation> </message> <message> <location filename="../ColorDialog.ui" line="71"/> <source>Apply</source> - <translation type="unfinished"></translation> + <translation>Anvend</translation> </message> </context> <context> @@ -45,17 +45,17 @@ <message> <location filename="../MainUI.ui" line="14"/> <source>MainWindow</source> - <translation type="unfinished"></translation> + <translation>Hovedvindue</translation> </message> <message> <location filename="../MainUI.ui" line="46"/> <source>Tab 1</source> - <translation type="unfinished"></translation> + <translation>Faneblad 1</translation> </message> <message> <location filename="../MainUI.ui" line="81"/> <source>Find the previous match</source> - <translation type="unfinished"></translation> + <translation>Find det forrige match</translation> </message> <message> <location filename="../MainUI.ui" line="84"/> @@ -64,184 +64,184 @@ <location filename="../MainUI.ui" line="161"/> <location filename="../MainUI.ui" line="173"/> <source>...</source> - <translation type="unfinished"></translation> + <translation>...</translation> </message> <message> <location filename="../MainUI.ui" line="183"/> <source>Find:</source> - <translation type="unfinished"></translation> + <translation>Find:</translation> </message> <message> <location filename="../MainUI.ui" line="94"/> <source>Find the next match</source> - <translation type="unfinished"></translation> + <translation>Find det næste match</translation> </message> <message> <location filename="../MainUI.ui" line="104"/> <source>Replace:</source> - <translation type="unfinished"></translation> + <translation>Erstat:</translation> </message> <message> <location filename="../MainUI.ui" line="123"/> <source>Match case</source> - <translation type="unfinished"></translation> + <translation>Forskel på store og små bogstaver</translation> </message> <message> <location filename="../MainUI.ui" line="145"/> <source>Replace next match</source> - <translation type="unfinished"></translation> + <translation>Erstat næste match</translation> </message> <message> <location filename="../MainUI.ui" line="158"/> <source>Replace all matches (to end of document)</source> - <translation type="unfinished"></translation> + <translation>Erstat alle match (til slutningen af dokumentet)</translation> </message> <message> <location filename="../MainUI.ui" line="170"/> <source>Hide the find/replace options</source> - <translation type="unfinished"></translation> + <translation>Skjul valgmulighederne find/erstat</translation> </message> <message> <location filename="../MainUI.ui" line="208"/> <source>File</source> - <translation type="unfinished"></translation> + <translation>Fil</translation> </message> <message> <location filename="../MainUI.ui" line="221"/> <source>View</source> - <translation type="unfinished"></translation> + <translation>Vis</translation> </message> <message> <location filename="../MainUI.ui" line="225"/> <source>Syntax Highlighting</source> - <translation type="unfinished"></translation> + <translation>Syntaksfremhævning</translation> </message> <message> <location filename="../MainUI.ui" line="238"/> <source>Edit</source> - <translation type="unfinished"></translation> + <translation>Rediger</translation> </message> <message> <location filename="../MainUI.ui" line="253"/> <source>toolBar</source> - <translation type="unfinished"></translation> + <translation>værktøjsbjælke</translation> </message> <message> <location filename="../MainUI.ui" line="279"/> <source>Show Line Numbers</source> - <translation type="unfinished"></translation> + <translation>Vis linjenumre</translation> </message> <message> <location filename="../MainUI.ui" line="284"/> <source>None</source> - <translation type="unfinished"></translation> + <translation>Ingen</translation> </message> <message> <location filename="../MainUI.ui" line="289"/> <location filename="../MainUI.cpp" line="151"/> <source>New File</source> - <translation type="unfinished"></translation> + <translation>Ny fil</translation> </message> <message> <location filename="../MainUI.ui" line="292"/> <source>Ctrl+N</source> - <translation type="unfinished"></translation> + <translation>Ctrl+N</translation> </message> <message> <location filename="../MainUI.ui" line="300"/> <source>Open File</source> - <translation type="unfinished"></translation> + <translation>Åbn fil</translation> </message> <message> <location filename="../MainUI.ui" line="303"/> <source>Ctrl+O</source> - <translation type="unfinished"></translation> + <translation>Ctrl+O</translation> </message> <message> <location filename="../MainUI.ui" line="311"/> <source>Save File</source> - <translation type="unfinished"></translation> + <translation>Gem fil</translation> </message> <message> <location filename="../MainUI.ui" line="314"/> <source>Ctrl+S</source> - <translation type="unfinished"></translation> + <translation>Ctrl+S</translation> </message> <message> <location filename="../MainUI.ui" line="322"/> <source>Save File As</source> - <translation type="unfinished"></translation> + <translation>Gem fil som</translation> </message> <message> <location filename="../MainUI.ui" line="327"/> <source>Close</source> - <translation type="unfinished"></translation> + <translation>Luk</translation> </message> <message> <location filename="../MainUI.ui" line="330"/> <source>Ctrl+Q</source> - <translation type="unfinished"></translation> + <translation>Ctrl+Q</translation> </message> <message> <location filename="../MainUI.ui" line="338"/> <source>Close File</source> - <translation type="unfinished"></translation> + <translation>Luk fil</translation> </message> <message> <location filename="../MainUI.ui" line="341"/> <source>Ctrl+W</source> - <translation type="unfinished"></translation> + <translation>Ctrl+W</translation> </message> <message> <location filename="../MainUI.ui" line="349"/> <source>Customize Colors</source> - <translation type="unfinished"></translation> + <translation>Tilpas farver</translation> </message> <message> <location filename="../MainUI.ui" line="360"/> <source>Wrap Lines</source> - <translation type="unfinished"></translation> + <translation>Ombryd linjer</translation> </message> <message> <location filename="../MainUI.ui" line="365"/> <source>Find</source> - <translation type="unfinished"></translation> + <translation>Find</translation> </message> <message> <location filename="../MainUI.ui" line="368"/> <source>Ctrl+F</source> - <translation type="unfinished"></translation> + <translation>Ctrl+F</translation> </message> <message> <location filename="../MainUI.ui" line="376"/> <source>Replace</source> - <translation type="unfinished"></translation> + <translation>Erstat</translation> </message> <message> <location filename="../MainUI.ui" line="379"/> <source>Ctrl+R</source> - <translation type="unfinished"></translation> + <translation>Ctrl+R</translation> </message> <message> <location filename="../MainUI.cpp" line="40"/> <source>Text Editor</source> - <translation type="unfinished"></translation> + <translation>Tekstredigering</translation> </message> <message> <location filename="../MainUI.cpp" line="158"/> <source>Open File(s)</source> - <translation type="unfinished"></translation> + <translation>Åbn fil(er)</translation> </message> <message> <location filename="../MainUI.cpp" line="158"/> <source>Text Files (*)</source> - <translation type="unfinished"></translation> + <translation>Tekstfiler (*)</translation> </message> <message> <location filename="../MainUI.cpp" line="289"/> <location filename="../MainUI.cpp" line="386"/> <source>Lose Unsaved Changes?</source> - <translation type="unfinished"></translation> + <translation>Mist ugemte ændringer?</translation> </message> <message> <location filename="../MainUI.cpp" line="289"/> @@ -249,7 +249,10 @@ Do you want to close it anyway? %1</source> - <translation type="unfinished"></translation> + <translation>Denne fil har ugemte ændringer. +Vil du lukke den alligevel? + +%1</translation> </message> <message> <location filename="../MainUI.cpp" line="386"/> @@ -257,7 +260,10 @@ Do you want to close it anyway? Do you want to close the editor anyway? %1</source> - <translation type="unfinished"></translation> + <translation>Der er ugemte ændringer. +Vil du lukke redigeringsprogrammet alligevel? + +%1</translation> </message> </context> <context> @@ -265,32 +271,32 @@ Do you want to close the editor anyway? <message> <location filename="../PlainTextEditor.cpp" line="94"/> <source>Save File</source> - <translation type="unfinished"></translation> + <translation>Gem fil</translation> </message> <message> <location filename="../PlainTextEditor.cpp" line="94"/> <source>Text File (*)</source> - <translation type="unfinished"></translation> + <translation>Tekstfil (*)</translation> </message> <message> <location filename="../PlainTextEditor.cpp" line="289"/> <source>Row Number: %1, Column Number: %2</source> - <translation type="unfinished"></translation> + <translation>Rækkenummer: %1, kolonnenummer: %2</translation> </message> <message> <location filename="../PlainTextEditor.cpp" line="298"/> <source>The following file has been changed by some other utility. Do you want to re-load it?</source> - <translation type="unfinished"></translation> + <translation>Den følgende fil er blevet ændret af et andet redskab. Vil du genindlæse den?</translation> </message> <message> <location filename="../PlainTextEditor.cpp" line="300"/> <source>(Note: You will lose all currently-unsaved changes)</source> - <translation type="unfinished"></translation> + <translation>(bemærk: du vil miste alle nuværende ugemte ændringer)</translation> </message> <message> <location filename="../PlainTextEditor.cpp" line="304"/> <source>File Modified</source> - <translation type="unfinished"></translation> + <translation>Fil ændret</translation> </message> </context> </TS> diff --git a/src-qt5/desktop-utils/lumina-textedit/i18n/l-te_de.ts b/src-qt5/desktop-utils/lumina-textedit/i18n/l-te_de.ts index d493699e..9d7c344b 100644 --- a/src-qt5/desktop-utils/lumina-textedit/i18n/l-te_de.ts +++ b/src-qt5/desktop-utils/lumina-textedit/i18n/l-te_de.ts @@ -241,7 +241,7 @@ <location filename="../MainUI.cpp" line="289"/> <location filename="../MainUI.cpp" line="386"/> <source>Lose Unsaved Changes?</source> - <translation type="unfinished"></translation> + <translation>Nicht gespeicherte Änderungen verlieren?</translation> </message> <message> <location filename="../MainUI.cpp" line="289"/> @@ -249,7 +249,10 @@ Do you want to close it anyway? %1</source> - <translation type="unfinished"></translation> + <translation>Diese Datei hat nicht gespeicherte Änderungen. +Möchten Sie sie trotzdem schließen? + +%1</translation> </message> <message> <location filename="../MainUI.cpp" line="386"/> @@ -257,7 +260,10 @@ Do you want to close it anyway? Do you want to close the editor anyway? %1</source> - <translation type="unfinished"></translation> + <translation>Es gibt nicht gespeicherte Änderungen. +Möchten Sie den Editor trotzdem schließen? + +%1</translation> </message> </context> <context> @@ -275,7 +281,7 @@ Do you want to close the editor anyway? <message> <location filename="../PlainTextEditor.cpp" line="289"/> <source>Row Number: %1, Column Number: %2</source> - <translation type="unfinished"></translation> + <translation>Zeilennummer: %1, Spaltennummer: %2</translation> </message> <message> <location filename="../PlainTextEditor.cpp" line="298"/> @@ -285,7 +291,7 @@ Do you want to close the editor anyway? <message> <location filename="../PlainTextEditor.cpp" line="300"/> <source>(Note: You will lose all currently-unsaved changes)</source> - <translation>(Hinweis: Sie werden alle momentan ungespeicherten Änderungen verlieren)</translation> + <translation>(Hinweis: Sie werden alle momentan nicht gespeicherten Änderungen verlieren)</translation> </message> <message> <location filename="../PlainTextEditor.cpp" line="304"/> diff --git a/src-qt5/desktop-utils/lumina-textedit/i18n/l-te_pl.ts b/src-qt5/desktop-utils/lumina-textedit/i18n/l-te_pl.ts index 914fa454..9d24336f 100644 --- a/src-qt5/desktop-utils/lumina-textedit/i18n/l-te_pl.ts +++ b/src-qt5/desktop-utils/lumina-textedit/i18n/l-te_pl.ts @@ -99,7 +99,7 @@ <message> <location filename="../MainUI.ui" line="170"/> <source>Hide the find/replace options</source> - <translation type="unfinished"></translation> + <translation>Ukryj opcję szukaj/zamień</translation> </message> <message> <location filename="../MainUI.ui" line="208"/> @@ -241,7 +241,7 @@ <location filename="../MainUI.cpp" line="289"/> <location filename="../MainUI.cpp" line="386"/> <source>Lose Unsaved Changes?</source> - <translation type="unfinished"></translation> + <translation>Porzucić niezapisane zmiany?</translation> </message> <message> <location filename="../MainUI.cpp" line="289"/> @@ -249,7 +249,10 @@ Do you want to close it anyway? %1</source> - <translation type="unfinished"></translation> + <translation>Plik posiada niezapisane dane. +Czy na pewno go zamknąć? + +%1</translation> </message> <message> <location filename="../MainUI.cpp" line="386"/> @@ -257,7 +260,10 @@ Do you want to close it anyway? Do you want to close the editor anyway? %1</source> - <translation type="unfinished"></translation> + <translation>Niezapisane dane. +Czy chcesz mimo to zamknąć edytor? + +%1</translation> </message> </context> <context> @@ -275,22 +281,22 @@ Do you want to close the editor anyway? <message> <location filename="../PlainTextEditor.cpp" line="289"/> <source>Row Number: %1, Column Number: %2</source> - <translation type="unfinished"></translation> + <translation>Numier wiersza: %1, Numer kolumny: %2</translation> </message> <message> <location filename="../PlainTextEditor.cpp" line="298"/> <source>The following file has been changed by some other utility. Do you want to re-load it?</source> - <translation type="unfinished"></translation> + <translation>Zawartość pliku została zmieniona przez zewnętrzny program. Czy ponownie załadować plik?</translation> </message> <message> <location filename="../PlainTextEditor.cpp" line="300"/> <source>(Note: You will lose all currently-unsaved changes)</source> - <translation type="unfinished"></translation> + <translation>(Uwaga: Utracisz wszystkie niezapisane dane)</translation> </message> <message> <location filename="../PlainTextEditor.cpp" line="304"/> <source>File Modified</source> - <translation type="unfinished"></translation> + <translation>Plik zmodyfikowany</translation> </message> </context> </TS> |