From 471d6616ba64f2f6dd4f61f79c0079a5901b18ea Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Mon, 26 Jun 2017 10:25:12 -0400 Subject: Disable the QT_AUTO_SCREEN_SCALE_FACTOR usage in the Lumina app environment (for now - needs more testing). --- src-qt5/core/lumina-desktop/LSession.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-desktop/LSession.cpp b/src-qt5/core/lumina-desktop/LSession.cpp index ebd40030..93318b0f 100644 --- a/src-qt5/core/lumina-desktop/LSession.cpp +++ b/src-qt5/core/lumina-desktop/LSession.cpp @@ -471,7 +471,7 @@ void LSession::updateDesktops(){ //Make sure all the background windows are registered on the system as virtual roots QTimer::singleShot(100,this, SLOT(registerDesktopWindows())); //Determine if any High-DPI screens are available and enable auto-scaling as needed - for(int i=0; iname(); qDebug() << " -- Physical DPI:" << scrns[i]->physicalDotsPerInchX() << "x" << scrns[i]->physicalDotsPerInchY(); qDebug() << " -- Logical DPI:" << scrns[i]->logicalDotsPerInchX() << "x" << scrns[i]->logicalDotsPerInchY(); @@ -481,7 +481,7 @@ void LSession::updateDesktops(){ }else if(i==(scrns.length()-1)){ unsetenv("QT_AUTO_SCREEN_SCALE_FACTOR"); } - } + }*/ } void LSession::registerDesktopWindows(){ -- cgit From 2a45036bc3a74aaba919353f3ac5c84df1004eed Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Mon, 26 Jun 2017 10:37:07 -0400 Subject: Tag Version 1.3.0 in source Ensure the translation files are all in sync as well. --- src-qt5/core/libLumina/LDesktopUtils.cpp | 110 +++++++++--------- .../core/lumina-desktop/i18n/lumina-desktop_af.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_ar.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_az.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_bg.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_bn.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_bs.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_ca.ts | 128 ++++++++++----------- .../core/lumina-desktop/i18n/lumina-desktop_cs.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_cy.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_da.ts | 38 +++--- .../core/lumina-desktop/i18n/lumina-desktop_de.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_el.ts | 26 ++--- .../lumina-desktop/i18n/lumina-desktop_en_GB.ts | 26 ++--- .../lumina-desktop/i18n/lumina-desktop_en_ZA.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_es.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_et.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_eu.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_fa.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_fi.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_fr.ts | 26 ++--- .../lumina-desktop/i18n/lumina-desktop_fr_CA.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_gl.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_he.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_hi.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_hr.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_hu.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_id.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_is.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_it.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_ja.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_ka.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_ko.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_lt.ts | 38 +++--- .../core/lumina-desktop/i18n/lumina-desktop_lv.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_mk.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_mn.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_ms.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_mt.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_nb.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_nl.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_pa.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_pl.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_pt.ts | 26 ++--- .../lumina-desktop/i18n/lumina-desktop_pt_BR.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_ro.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_ru.ts | 36 +++--- .../core/lumina-desktop/i18n/lumina-desktop_sk.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_sl.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_sr.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_sv.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_sw.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_ta.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_tg.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_th.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_tr.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_uk.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_uz.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_vi.ts | 26 ++--- .../lumina-desktop/i18n/lumina-desktop_zh_CN.ts | 26 ++--- .../lumina-desktop/i18n/lumina-desktop_zh_HK.ts | 26 ++--- .../lumina-desktop/i18n/lumina-desktop_zh_TW.ts | 26 ++--- .../core/lumina-desktop/i18n/lumina-desktop_zu.ts | 26 ++--- 63 files changed, 929 insertions(+), 929 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/LDesktopUtils.cpp b/src-qt5/core/libLumina/LDesktopUtils.cpp index d76c68e9..caf3c55e 100644 --- a/src-qt5/core/libLumina/LDesktopUtils.cpp +++ b/src-qt5/core/libLumina/LDesktopUtils.cpp @@ -15,12 +15,12 @@ static QStringList fav; -QString LDesktopUtils::LuminaDesktopVersion(){ - QString ver = "1.2.2"; +QString LDesktopUtils::LuminaDesktopVersion(){ + QString ver = "1.3.0"; #ifdef GIT_VERSION ver.append( QString(" (Git Revision: %1)").arg(GIT_VERSION) ); #endif - return ver; + return ver; } QString LDesktopUtils::LuminaDesktopBuildDate(){ @@ -88,7 +88,7 @@ QStringList LDesktopUtils::listFavorites(){ fav.removeDuplicates(); lastRead = cur; } - + return fav; } @@ -138,7 +138,7 @@ void LDesktopUtils::removeFavorite(QString path){ void LDesktopUtils::upgradeFavorites(int){ //fromoldversionnumber //NOTE: Version number syntax: *1000000 + *1000 + // Example: 1.2.3 -> 1002003 -} +} void LDesktopUtils::LoadSystemDefaults(bool skipOS){ //Will create the Lumina configuration files based on the current system template (if any) @@ -156,15 +156,15 @@ void LDesktopUtils::LoadSystemDefaults(bool skipOS){ QDesktopWidget *desk =QApplication::desktop(); QRect screenGeom; for(int i=0; iscreenCount(); i++){ - if(desk->screenGeometry(i).x()==0){ - screen = QString::number(i); - screenGeom = desk->screenGeometry(i); - break; + if(desk->screenGeometry(i).x()==0){ + screen = QString::number(i); + screenGeom = desk->screenGeometry(i); + break; } } //Now setup the default "desktopsettings.conf" and "sessionsettings.conf" files QStringList deskset, sesset;//, lopenset; - + // -- SESSION SETTINGS -- QStringList tmp = sysDefaults.filter("session_"); if(tmp.isEmpty()){ tmp = sysDefaults.filter("session."); }//for backwards compat @@ -177,36 +177,36 @@ void LDesktopUtils::LoadSystemDefaults(bool skipOS){ if(val.isEmpty()){ continue; } QString istrue = (val.toLower()=="true") ? "true": "false"; //Change in 0.8.5 - use "_" instead of "." within variables names - need backwards compat for a little while - if(var.contains(".")){ var.replace(".","_"); } - //Now parse the variable and put the value in the proper file - + if(var.contains(".")){ var.replace(".","_"); } + //Now parse the variable and put the value in the proper file + if(var.contains("_default_")){ val = LUtils::AppToAbsolute(val); } //got an application/binary //Special handling for values which need to exist first - if(var.endsWith("_ifexists") ){ + if(var.endsWith("_ifexists") ){ var = var.remove("_ifexists"); //remove this flag from the variable //Check if the value exists (absolute path only) if(!QFile::exists(val)){ continue; } //skip this line - value/file does not exist } - + //Parse/save the value QString sset; //temporary strings if(var=="session_enablenumlock"){ sset = "EnableNumlock="+ istrue; } else if(var=="session_playloginaudio"){ sset = "PlayStartupAudio="+istrue; } else if(var=="session_playlogoutaudio"){ sset = "PlayLogoutAudio="+istrue; } - else if(var=="session_default_terminal"){ + else if(var=="session_default_terminal"){ LXDG::setDefaultAppForMime("application/terminal", val); - //sset = "default-terminal="+val; - }else if(var=="session_default_filemanager"){ + //sset = "default-terminal="+val; + }else if(var=="session_default_filemanager"){ LXDG::setDefaultAppForMime("inode/directory", val); //sset = "default-filemanager="+val; - //loset = "directory="+val; - }else if(var=="session_default_webbrowser"){ - //loset = "webbrowser="+val; + //loset = "directory="+val; + }else if(var=="session_default_webbrowser"){ + //loset = "webbrowser="+val; LXDG::setDefaultAppForMime("x-scheme-handler/http", val); LXDG::setDefaultAppForMime("x-scheme-handler/https", val); - }else if(var=="session_default_email"){ + }else if(var=="session_default_email"){ LXDG::setDefaultAppForMime("application/email",val); - //loset = "email="+val; + //loset = "email="+val; } //Put the line into the file (overwriting any previous assignment as necessary) /*if(!loset.isEmpty()){ @@ -218,7 +218,7 @@ void LDesktopUtils::LoadSystemDefaults(bool skipOS){ if(!sset.isEmpty()){ int index = sesset.indexOf(QRegExp(sset.section("=",0,0)+"=*", Qt::CaseSensitive, QRegExp::Wildcard)); if(index<0){ sesset << sset; } //new line - else{ sesset[index] = sset; } //overwrite the other line + else{ sesset[index] = sset; } //overwrite the other line } } //if(!lopenset.isEmpty()){ lopenset.prepend("[default]"); } //the session options exist within this set @@ -232,11 +232,11 @@ void LDesktopUtils::LoadSystemDefaults(bool skipOS){ if(val.isEmpty()){ continue; } QString istrue = (val.toLower()=="true") ? "true": "false"; //Change in 0.8.5 - use "_" instead of "." within variables names - need backwards compat for a little while - if(var.contains(".")){ var.replace(".","_"); } - //Now parse the variable and put the value in the proper file + if(var.contains(".")){ var.replace(".","_"); } + //Now parse the variable and put the value in the proper file val = LUtils::AppToAbsolute(val); //Special handling for values which need to exist first - if(var.endsWith("_ifexists") ){ + if(var.endsWith("_ifexists") ){ var = var.remove("_ifexists"); //remove this flag from the variable //Check if the value exists (absolute path only) if(!QFile::exists(val)){ continue; } //skip this line - value/file does not exist @@ -259,8 +259,8 @@ void LDesktopUtils::LoadSystemDefaults(bool skipOS){ if(val.isEmpty()){ continue; } QString istrue = (val.toLower()=="true") ? "true": "false"; //Change in 0.8.5 - use "_" instead of "." within variables names - need backwards compat for a little while - if(var.contains(".")){ var.replace(".","_"); } - //Now parse the variable and put the value in the proper file + if(var.contains(".")){ var.replace(".","_"); } + //Now parse the variable and put the value in the proper file if(var=="desktop_visiblepanels"){ deskset << "panels="+val; } else if(var=="desktop_backgroundfiles"){ deskset << "background\\filelist="+val; } else if(var=="desktop_backgroundrotateminutes"){ deskset << "background\\minutesToChange="+val; } @@ -282,8 +282,8 @@ void LDesktopUtils::LoadSystemDefaults(bool skipOS){ if(val.isEmpty()){ continue; } QString istrue = (val.toLower()=="true") ? "true": "false"; //Change in 0.8.5 - use "_" instead of "." within variables names - need backwards compat for a little while - if(var.contains(".")){ var.replace(".","_"); } - //Now parse the variable and put the value in the proper file + if(var.contains(".")){ var.replace(".","_"); } + //Now parse the variable and put the value in the proper file if(var==(panvar+"_pixelsize")){ //qDebug() << "Panel Size:" << val; if(val.contains("%")){ @@ -293,7 +293,7 @@ void LDesktopUtils::LoadSystemDefaults(bool skipOS){ else if(last=="w"){ val = QString::number( qRound(screenGeom.width()*val.toDouble())/100 ); }//adjust value to a percentage of the width of the screen } //qDebug() << " -- Adjusted:" << val; - deskset << "height="+val; + deskset << "height="+val; } else if(var==(panvar+"_autohide")){ deskset << "hidepanel="+istrue; } else if(var==(panvar+"_location")){ deskset << "location="+val.toLower(); } @@ -314,8 +314,8 @@ void LDesktopUtils::LoadSystemDefaults(bool skipOS){ QString val = tmp[i].section("=",1,1).section("#",0,0).toLower().simplified(); if(val.isEmpty()){ continue; } //Change in 0.8.5 - use "_" instead of "." within variables names - need backwards compat for a little while - if(var.contains(".")){ var.replace(".","_"); } - //Now parse the variable and put the value in the proper file + if(var.contains(".")){ var.replace(".","_"); } + //Now parse the variable and put the value in the proper file if(var=="menu_plugins"){ deskset << "itemlist="+val; } } if(!tmp.isEmpty()){ deskset << ""; } //space between sections @@ -328,7 +328,7 @@ void LDesktopUtils::LoadSystemDefaults(bool skipOS){ QString var = tmp[i].section("=",0,0).toLower().simplified(); QString val = tmp[i].section("=",1,1).section("#",0,0).simplified(); //Change in 0.8.5 - use "_" instead of "." within variables names - need backwards compat for a little while - if(var.contains(".")){ var.replace(".","_"); } + if(var.contains(".")){ var.replace(".","_"); } //Now parse the variable and put the value in the proper file qDebug() << "Favorite entry:" << var << val; val = LUtils::AppToAbsolute(val); //turn any relative files into absolute @@ -346,19 +346,19 @@ void LDesktopUtils::LoadSystemDefaults(bool skipOS){ QString var = tmp[i].section("=",0,0).toLower().simplified(); QString val = tmp[i].section("=",1,1).section("#",0,0).simplified(); //Change in 0.8.5 - use "_" instead of "." within variables names - need backwards compat for a little while - if(var.contains(".")){ var.replace(".","_"); } + if(var.contains(".")){ var.replace(".","_"); } //Now parse the variable and put the value in the proper file val = LUtils::AppToAbsolute(val); //turn any relative files into absolute if(var=="quicklaunch_add_ifexists" && QFile::exists(val)){ quickL << val; } else if(var=="quicklaunch_add"){ quickL << val; } } - if(!quickL.isEmpty()){ + if(!quickL.isEmpty()){ if(sesset.isEmpty()){ sesset << "[General]"; } //everything is in this section - sesset << "QuicklaunchApps="+quickL.join(", "); + sesset << "QuicklaunchApps="+quickL.join(", "); } //Now do any theme settings - QStringList themesettings = LTHEME::currentSettings(); + QStringList themesettings = LTHEME::currentSettings(); //List: [theme path, colorspath, iconsname, font, fontsize] //qDebug() << "Current Theme Color:" << themesettings[1]; tmp = sysDefaults.filter("theme_"); @@ -370,19 +370,19 @@ void LDesktopUtils::LoadSystemDefaults(bool skipOS){ QString val = tmp[i].section("=",1,1).section("#",0,0).simplified(); if(val.isEmpty()){ continue; } //Change in 0.8.5 - use "_" instead of "." within variables names - need backwards compat for a little while - if(var.contains(".")){ var.replace(".","_"); } - //Now parse the variable and put the value in the proper file + if(var.contains(".")){ var.replace(".","_"); } + //Now parse the variable and put the value in the proper file if(var=="theme_themefile"){ themesettings[0] = val; } else if(var=="theme_colorfile"){ themesettings[1] = val; } else if(var=="theme_iconset"){ themesettings[2] = val; } else if(var=="theme_font"){ themesettings[3] = val; } - else if(var=="theme_fontsize"){ + else if(var=="theme_fontsize"){ if(val.endsWith("%")){ val = QString::number( (screenGeom.height()*val.section("%",0,0).toDouble())/100 )+"px"; } - themesettings[4] = val; + themesettings[4] = val; } } //qDebug() << " - Now Color:" << themesettings[1] << setTheme; - + //Now double check that the custom theme/color files exist and reset it will the full path as necessary if(setTheme){ QStringList systhemes = LTHEME::availableSystemThemes(); @@ -414,15 +414,15 @@ void LDesktopUtils::LoadSystemDefaults(bool skipOS){ //Ensure that the settings directory exists QString setdir = QString(getenv("XDG_CONFIG_HOME"))+"/lumina-desktop"; - if(!QFile::exists(setdir)){ - QDir dir; - dir.mkpath(setdir); + if(!QFile::exists(setdir)){ + QDir dir; + dir.mkpath(setdir); } //Now save the settings files if(setTheme){ LTHEME::setCurrentSettings( themesettings[0], themesettings[1], themesettings[2], themesettings[3], themesettings[4]); } LUtils::writeFile(setdir+"/sessionsettings.conf", sesset, true); LUtils::writeFile(setdir+"/desktopsettings.conf", deskset, true); - + //Now run any extra config scripts or utilities as needed tmp = sysDefaults.filter("usersetup_run"); if(tmp.isEmpty()){ tmp = sysDefaults.filter("usersetup.run"); } @@ -431,25 +431,25 @@ void LDesktopUtils::LoadSystemDefaults(bool skipOS){ QString var = tmp[i].section("=",0,0).toLower().simplified(); QString val = tmp[i].section("=",1,1).section("#",0,0).simplified(); //Change in 0.8.5 - use "_" instead of "." within variables names - need backwards compat for a little while - if(var.contains(".")){ var.replace(".","_"); } + if(var.contains(".")){ var.replace(".","_"); } //Now parse the variable and put the value in the proper file if(var=="usersetup_run"){ qDebug() << "Running user setup command:" << val; QProcess::execute(val); } } - + } bool LDesktopUtils::checkUserFiles(QString lastversion){ - //internal version conversion examples: + //internal version conversion examples: // [1.0.0 -> 1000000], [1.2.3 -> 1002003], [0.6.1 -> 6001] //returns true if something changed int oldversion = LDesktopUtils::VersionStringToNumber(lastversion); int nversion = LDesktopUtils::VersionStringToNumber(QApplication::applicationVersion()); bool newversion = ( oldversion < nversion ); //increasing version number bool newrelease = ( lastversion.contains("-devel", Qt::CaseInsensitive) && QApplication::applicationVersion().contains("-release", Qt::CaseInsensitive) ); //Moving from devel to release - + QString confdir = QString(getenv("XDG_CONFIG_HOME"))+"/lumina-desktop/"; //Check for the desktop settings file QString dset = confdir+"desktopsettings.conf"; @@ -461,7 +461,7 @@ bool LDesktopUtils::checkUserFiles(QString lastversion){ } //Convert the favorites framework as necessary (change occured with 0.8.4) if(newversion || newrelease){ - LDesktopUtils::upgradeFavorites(oldversion); + LDesktopUtils::upgradeFavorites(oldversion); } //Convert from the old desktop numbering system to the new one (change occured with 1.0.1) if(oldversion<=1000001){ @@ -488,7 +488,7 @@ bool LDesktopUtils::checkUserFiles(QString lastversion){ } LUtils::writeFile(dset, DS, true); } - + //Check the fluxbox configuration files dset = QString(getenv("XDG_CONFIG_HOME"))+"/lumina-desktop/"; if(!QFile::exists(dset+"fluxbox-init")){ @@ -517,7 +517,7 @@ bool LDesktopUtils::checkUserFiles(QString lastversion){ int LDesktopUtils::VersionStringToNumber(QString version){ version = version.section("-",0,0); //trim any extra labels off the end int maj, mid, min; //major/middle/minor version numbers (..) - maj = mid = min = 0; + maj = mid = min = 0; bool ok = true; maj = version.section(".",0,0).toInt(&ok); if(ok){ mid = version.section(".",1,1).toInt(&ok); }else{ maj = 0; } diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_af.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_af.ts index 6a86d9f6..caeb719a 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_af.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_af.ts @@ -38,62 +38,62 @@ - + Launch %1 - + Open - + Open With - + View Properties - + File Operations - + Rename - + Copy - + Cut - + Delete - + Select Application - + Name: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ar.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ar.ts index 6a86d9f6..caeb719a 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ar.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ar.ts @@ -38,62 +38,62 @@ - + Launch %1 - + Open - + Open With - + View Properties - + File Operations - + Rename - + Copy - + Cut - + Delete - + Select Application - + Name: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_az.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_az.ts index 6a86d9f6..caeb719a 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_az.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_az.ts @@ -38,62 +38,62 @@ - + Launch %1 - + Open - + Open With - + View Properties - + File Operations - + Rename - + Copy - + Cut - + Delete - + Select Application - + Name: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_bg.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_bg.ts index 394d0666..2496641f 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_bg.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_bg.ts @@ -38,62 +38,62 @@ Кликнете за задаване - + Launch %1 Стартиране на %1 - + Open Отваряне - + Open With - + View Properties - + File Operations - + Rename - + Copy Копиране - + Cut Изрязване - + Delete Изтриване - + Select Application Избор на програма - + Name: Име: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop Работен плот diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_bn.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_bn.ts index 6a86d9f6..caeb719a 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_bn.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_bn.ts @@ -38,62 +38,62 @@ - + Launch %1 - + Open - + Open With - + View Properties - + File Operations - + Rename - + Copy - + Cut - + Delete - + Select Application - + Name: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_bs.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_bs.ts index 6a86d9f6..caeb719a 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_bs.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_bs.ts @@ -38,62 +38,62 @@ - + Launch %1 - + Open - + Open With - + View Properties - + File Operations - + Rename - + Copy - + Cut - + Delete - + Select Application - + Name: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ca.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ca.ts index d44936d1..20bf3c1b 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ca.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ca.ts @@ -21,7 +21,7 @@ Select Application - Seleccioneu l'aplicació + Seleccioneu l'aplicació @@ -38,62 +38,62 @@ Cliqueu per establir-ho - + Launch %1 Llança %1 - + Open Obre - + Open With Obre amb - + View Properties - Mostra'n les propietats + Mostra'n les propietats - + File Operations Operacions de fitxers - + Rename - Canvia'n el nom + Canvia'n el nom - + Copy Copia - + Cut Retalla - + Delete Suprimeix - + Select Application - Seleccioneu l'aplicació + Seleccioneu l'aplicació - + Name: Nom: - + New Filename Nom de fitxer nou @@ -196,7 +196,7 @@ Starting the Lumina Desktop... - S'inicia l'escriptori Lumina... + S'inicia l'escriptori Lumina... @@ -211,22 +211,22 @@ Keep up with desktop news! - Mantingueu-vos al dia de les notícies de l'escriptori! + Mantingueu-vos al dia de les notícies de l'escriptori! There is a full handbook of information about the desktop available online. - Hi ha un manual ple d'informació de l'escriptori disponible en línia. + Hi ha un manual ple d'informació de l'escriptori disponible en línia. Want to change the interface? Everything is customizable in the desktop configuration! - Voleu canviar-ne la interfície? Tot és personalitzable des de la configuració de l'escriptori! + Voleu canviar-ne la interfície? Tot és personalitzable des de la configuració de l'escriptori! Lumina can easily reproduce the interface from most other desktop environments. - El Lumina pot reproduir fàcilment la interfície de la majoria d'altres entorns d'escriptori. + El Lumina pot reproduir fàcilment la interfície de la majoria d'altres entorns d'escriptori. @@ -236,7 +236,7 @@ I have never been hurt by what I have not said - Mai no m'ha fet mal el que no he dit. + Mai no m'ha fet mal el que no he dit. @@ -265,12 +265,12 @@ - Don't expect to build up the weak by pulling down the strong. + Don't expect to build up the weak by pulling down the strong. No espereu fer forts els febles enfonsant forts. - You can't know too much, but you can say too much. + You can't know too much, but you can say too much. No es pot saber massa, però es pot dir massa. @@ -281,7 +281,7 @@ Any society that would give up a little liberty to gain a little security will deserve neither and lose both. - Qualsevol societat que deixi de banda una mica de llibertat per guanyar una mica de seguretat no en mereixerà ni una ni l'altra i les perdrà totes dues. + Qualsevol societat que deixi de banda una mica de llibertat per guanyar una mica de seguretat no en mereixerà ni una ni l'altra i les perdrà totes dues. @@ -341,7 +341,7 @@ The only way to do great work is to love what you do. - L'única manera de fer una bona feina és que us agradi el que feu. + L'única manera de fer una bona feina és que us agradi el que feu. @@ -350,8 +350,8 @@ - Only two things are infinite, the universe and human stupidity, and I'm not sure about the former. - Només hi ha dues coses infinites: l'univers i l'estupidesa humana, i no estic segur de la primera. + Only two things are infinite, the universe and human stupidity, and I'm not sure about the former. + Només hi ha dues coses infinites: l'univers i l'estupidesa humana, i no estic segur de la primera. @@ -360,8 +360,8 @@ - Do, or do not. There is no 'try'. - Fes-ho o no. No hi ha un "intent". + Do, or do not. There is no 'try'. + Fes-ho o no. No hi ha un "intent". @@ -371,7 +371,7 @@ Good people do not need laws to tell them to act responsibly, while bad people will find a way around the laws. - La gent bona no necessita lleis que els diguin d'actuar responsablement, mentre que la mala gent trobarà una manera d'evitar les lleis. + La gent bona no necessita lleis que els diguin d'actuar responsablement, mentre que la mala gent trobarà una manera d'evitar les lleis. @@ -380,8 +380,8 @@ - It's kind of fun to do the impossible. - És bastant divertit fer l'impossible. + It's kind of fun to do the impossible. + És bastant divertit fer l'impossible. @@ -396,7 +396,7 @@ Success usually comes to those who are too busy to be looking for it. - L'èxit normalment arriba als que estan massa enfeinats per buscar-lo. + L'èxit normalment arriba als que estan massa enfeinats per buscar-lo. @@ -421,7 +421,7 @@ Sometimes it is not enough that we do our best; we must do what is required. - Algunes vegades no n'hi ha prou amb fer-ho el millor que podem, hem de fer el que cal. + Algunes vegades no n'hi ha prou amb fer-ho el millor que podem, hem de fer el que cal. @@ -446,7 +446,7 @@ Loading User Preferences … - Carregant les preferències de l'usuari… + Carregant les preferències de l'usuari… @@ -471,7 +471,7 @@ Preparing Workspace … - Preparant l'espai de treball… + Preparant l'espai de treball… @@ -481,7 +481,7 @@ Starting App: %1 - Iniciant l'aplicació: %1 + Iniciant l'aplicació: %1 @@ -532,7 +532,7 @@ Pin to Desktop - Enganxa a l'escriptori + Enganxa a l'escriptori @@ -560,7 +560,7 @@ Error parsing script output: %1 - Error analitzant la sortida de l'script: %1 + Error analitzant la sortida de l'script: %1 @@ -684,7 +684,7 @@ Use System Time - Usa l'hora del sistema + Usa l'hora del sistema @@ -692,17 +692,17 @@ Modify Item - Modifica l'ítem + Modifica l'ítem Start Moving Item - Inicia el trasllat de l'ítem + Inicia el trasllat de l'ítem Start Resizing Item - Inicia el canvi de mida de l'ítem + Inicia el canvi de mida de l'ítem @@ -717,7 +717,7 @@ Remove Item - Elimina l'ítem + Elimina l'ítem @@ -773,7 +773,7 @@ Desktop Actions - Accions de l'escriptori + Accions de l'escriptori @@ -851,7 +851,7 @@ LSession - + Desktop Escriptori @@ -879,7 +879,7 @@ Launch Audio Mixer - Obre el Mesclador d'àudio + Obre el Mesclador d'àudio @@ -1182,12 +1182,12 @@ View Options - Mostra'n les opcions + Mostra'n les opcions Open Website - Obre'n el lloc web + Obre'n el lloc web @@ -1219,7 +1219,7 @@ RSS URL - URL de l'RSS + URL de l'RSS @@ -1244,7 +1244,7 @@ Some RSS feeds may request custom update intervals instead of using this setting - Alguns canals RSS poden sol·licitar intervals d'actualització personalitzats en lloc d'utilitzar aquest paràmetre. + Alguns canals RSS poden sol·licitar intervals d'actualització personalitzats en lloc d'utilitzar aquest paràmetre. @@ -1290,7 +1290,7 @@ Lumina Desktop RSS - RSS de l'escriptori Lumina + RSS de l'escriptori Lumina @@ -1315,7 +1315,7 @@ Last Build Date: %1 - Data de l'última construcció: %1 + Data de l'última construcció: %1 @@ -1353,7 +1353,7 @@ All Desktop Settings - Tots els paràmetres de l'escriptori + Tots els paràmetres de l'escriptori @@ -1411,7 +1411,7 @@ Configure Desktop - Configureu l'escriptori + Configureu l'escriptori @@ -1557,7 +1557,7 @@ UserWidget - Giny de l'usuari + Giny de l'usuari @@ -1605,12 +1605,12 @@ Home - Carpeta de l'usuari + Carpeta de l'usuari Home Directory - Directori de l'usuari + Directori de l'usuari @@ -1620,7 +1620,7 @@ Go back to home directory - Torna al directori de l'usuari + Torna al directori de l'usuari @@ -1635,7 +1635,7 @@ Desktop Preferences - Preferències de l'escriptori + Preferències de l'escriptori @@ -1645,7 +1645,7 @@ Desktop Appearance/Plugins - Aparença de l'escriptori / connectors + Aparença de l'escriptori / connectors @@ -1655,12 +1655,12 @@ Screensaver Settings - Paràmetres de l'estalvi de pantalla + Paràmetres de l'estalvi de pantalla About the Lumina Desktop - Quant a l'escriptori Lumina + Quant a l'escriptori Lumina diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_cs.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_cs.ts index fe0c683b..0371966b 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_cs.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_cs.ts @@ -38,62 +38,62 @@ Klepnutím nastavit - + Launch %1 Spustit %1 - + Open Otevřít - + Open With - + View Properties - + File Operations - + Rename - + Copy Kopírovat - + Cut Vyjmout - + Delete Vymazat - + Select Application Vybrat aplikaci - + Name: Název: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop Plocha diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_cy.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_cy.ts index 6a86d9f6..caeb719a 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_cy.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_cy.ts @@ -38,62 +38,62 @@ - + Launch %1 - + Open - + Open With - + View Properties - + File Operations - + Rename - + Copy - + Cut - + Delete - + Select Application - + Name: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop 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 d28fbbc4..a9522431 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_da.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_da.ts @@ -38,62 +38,62 @@ Klik for at sætte - + Launch %1 Start %1 - + Open Åbn - + Open With Åbn med - + View Properties Vis egenskaber - + File Operations Filhandlinger - + Rename Omdøb - + Copy Kopiér - + Cut Klip - + Delete Slet - + Select Application Vælg program - + Name: Navn: - + New Filename Nyt filnavn @@ -265,12 +265,12 @@ - Don't expect to build up the weak by pulling down the strong. + Don't expect to build up the weak by pulling down the strong. Forvent ikke at opbygge det svage ved at nedrive det stærke. - You can't know too much, but you can say too much. + You can't know too much, but you can say too much. Du kan ikke vide for meget, men du kan sige for meget. @@ -350,7 +350,7 @@ - Only two things are infinite, the universe and human stupidity, and I'm not sure about the former. + Only two things are infinite, the universe and human stupidity, and I'm not sure about the former. Kun to ting er uendelige, universet og menneskelig dumhed, og jeg er ikke sikker på det første. @@ -360,8 +360,8 @@ - Do, or do not. There is no 'try'. - Gør eller lad være. Der er ikke noget "prøv". + Do, or do not. There is no 'try'. + Gør eller lad være. Der er ikke noget "prøv". @@ -380,7 +380,7 @@ - It's kind of fun to do the impossible. + It's kind of fun to do the impossible. Det er egentligt sjovt at gøre det umulige. @@ -851,7 +851,7 @@ LSession - + Desktop Skrivebord 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 f4626cee..644524e1 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_de.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_de.ts @@ -38,62 +38,62 @@ Klicken zum Festlegen - + Launch %1 %1 starten - + Open Öffnen - + Open With Öffnen mit - + View Properties Eigenschaften anzeigen - + File Operations Dateioperationen - + Rename Umbenennen - + Copy Kopieren - + Cut Ausschneiden - + Delete Löschen - + Select Application Anwendung auswählen - + Name: Name: - + New Filename Neuer Dateiname @@ -851,7 +851,7 @@ LSession - + Desktop Arbeitsfläche diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_el.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_el.ts index ef889209..257c2f1d 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_el.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_el.ts @@ -38,62 +38,62 @@ - + Launch %1 - + Open - + Open With - + View Properties - + File Operations - + Rename - + Copy - + Cut - + Delete - + Select Application Επιλογή εφαρμογής - + Name: Όνομα: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_en_GB.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_en_GB.ts index c3a92c07..25505c23 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_en_GB.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_en_GB.ts @@ -38,62 +38,62 @@ Click to Set - + Launch %1 Starte %1 - + Open Open - + Open With - + View Properties - + File Operations - + Rename - + Copy Copy - + Cut Cut - + Delete Delete - + Select Application Select Application - + Name: Name: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop Desktop diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_en_ZA.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_en_ZA.ts index 6a86d9f6..caeb719a 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_en_ZA.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_en_ZA.ts @@ -38,62 +38,62 @@ - + Launch %1 - + Open - + Open With - + View Properties - + File Operations - + Rename - + Copy - + Cut - + Delete - + Select Application - + Name: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_es.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_es.ts index 3a598c96..bef9d8aa 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_es.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_es.ts @@ -38,62 +38,62 @@ Presione para Aplicar - + Launch %1 Lanzar %1 - + Open Abrir - + Open With - + View Properties - + File Operations - + Rename - + Copy Copiar - + Cut Cortar - + Delete Borrar - + Select Application Seleccionar Aplicación - + Name: Nombre: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop Escritorio diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_et.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_et.ts index 4c1fef59..5bf00b5f 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_et.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_et.ts @@ -38,62 +38,62 @@ Klõpsa määramiseks - + Launch %1 Käivita %1 - + Open Ava - + Open With - + View Properties - + File Operations - + Rename - + Copy Kopeeri - + Cut Lõika - + Delete Kustuta - + Select Application Vali rakendus - + Name: Nimi: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop Töölaud diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_eu.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_eu.ts index f2a8c9c3..800eb234 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_eu.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_eu.ts @@ -38,62 +38,62 @@ - + Launch %1 - + Open - + Open With - + View Properties - + File Operations - + Rename - + Copy - + Cut - + Delete Ezabatu - + Select Application Aplikazioa hautatu - + Name: Izena: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_fa.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_fa.ts index 97e33521..d6469c56 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_fa.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_fa.ts @@ -38,62 +38,62 @@ - + Launch %1 %1 را راه بیانداز - + Open - + Open With - + View Properties - + File Operations - + Rename - + Copy - + Cut - + Delete - + Select Application کاربست برگزین - + Name: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_fi.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_fi.ts index b1a2ede1..62634130 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_fi.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_fi.ts @@ -38,62 +38,62 @@ Aseta napsauttamalla - + Launch %1 Käynnistä %1 - + Open Avaa - + Open With - + View Properties - + File Operations - + Rename - + Copy Kopioi - + Cut Leikkaa - + Delete Poista - + Select Application Valitse sovellus - + Name: Nimi: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop Työpöytä diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_fr.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_fr.ts index ede307cc..53f00a69 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_fr.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_fr.ts @@ -38,62 +38,62 @@ Cliquer pour Définir - + Launch %1 Lancer %1 - + Open Ouvrir - + Open With - + View Properties - + File Operations - + Rename - + Copy Copier - + Cut Couper - + Delete Supprimer - + Select Application Sélectionner un Programme - + Name: Nom : - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop Bureau diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_fr_CA.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_fr_CA.ts index 6a86d9f6..caeb719a 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_fr_CA.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_fr_CA.ts @@ -38,62 +38,62 @@ - + Launch %1 - + Open - + Open With - + View Properties - + File Operations - + Rename - + Copy - + Cut - + Delete - + Select Application - + Name: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_gl.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_gl.ts index 6a86d9f6..caeb719a 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_gl.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_gl.ts @@ -38,62 +38,62 @@ - + Launch %1 - + Open - + Open With - + View Properties - + File Operations - + Rename - + Copy - + Cut - + Delete - + Select Application - + Name: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_he.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_he.ts index 5d7abbd1..9ff16d1d 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_he.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_he.ts @@ -38,62 +38,62 @@ - + Launch %1 - + Open - + Open With - + View Properties - + File Operations - + Rename - + Copy - + Cut - + Delete - + Select Application - + Name: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop שולחן עבודה diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_hi.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_hi.ts index d189b796..f1ed8825 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_hi.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_hi.ts @@ -38,62 +38,62 @@ निश्चित करने के लिए क्लिक करे - + Launch %1 प्रारंभ %1 - + Open चालू - + Open With - + View Properties - + File Operations - + Rename - + Copy कॉपी करें - + Cut काटें - + Delete नष्ट करें - + Select Application एप्लीकेशन चुनें - + Name: नाम - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop डेस्कटॉप diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_hr.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_hr.ts index 6a86d9f6..caeb719a 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_hr.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_hr.ts @@ -38,62 +38,62 @@ - + Launch %1 - + Open - + Open With - + View Properties - + File Operations - + Rename - + Copy - + Cut - + Delete - + Select Application - + Name: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_hu.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_hu.ts index 1dd4b838..abdfc7b4 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_hu.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_hu.ts @@ -38,62 +38,62 @@ Kattintás a beállításhoz - + Launch %1 %1 indítása - + Open Megnyitás - + Open With - + View Properties - + File Operations - + Rename - + Copy Másolás - + Cut Kivágás - + Delete Törlés - + Select Application Alkalmazás kiválasztása - + Name: Név: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop Asztal diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_id.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_id.ts index 14137dcd..13bba7d0 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_id.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_id.ts @@ -38,62 +38,62 @@ klik untuk mengatur - + Launch %1 Luncurkan %1 - + Open Buka - + Open With - + View Properties - + File Operations - + Rename - + Copy Salin - + Cut Potong - + Delete Hapus - + Select Application Pilih Aplikasi - + Name: Nama: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop Layar Kerja Utama diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_is.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_is.ts index 6a86d9f6..caeb719a 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_is.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_is.ts @@ -38,62 +38,62 @@ - + Launch %1 - + Open - + Open With - + View Properties - + File Operations - + Rename - + Copy - + Cut - + Delete - + Select Application - + Name: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop 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 f46b1976..ed420545 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_it.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_it.ts @@ -38,62 +38,62 @@ Clicca per Impostare - + Launch %1 Lancia %1 - + Open Apri - + Open With - + View Properties - + File Operations - + Rename - + Copy Copia - + Cut Taglia - + Delete Cancella - + Select Application Seleziona Applicazione - + Name: Nome: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop Desktop diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ja.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ja.ts index d4dc2e77..55ab6645 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ja.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ja.ts @@ -41,62 +41,62 @@ クリックして設定してください - + Launch %1 %1 を起動 - + Open 開く - + Open With - + View Properties - + File Operations - + Rename - + Copy コピー - + Cut 切り取り - + Delete 削除 - + Select Application アプリケーションを選択してください - + Name: 名前: - + New Filename @@ -856,7 +856,7 @@ LSession - + Desktop これ、ファイルパスなので、「デスクトップ」と訳したらまずい Desktop diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ka.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ka.ts index 6a86d9f6..caeb719a 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ka.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ka.ts @@ -38,62 +38,62 @@ - + Launch %1 - + Open - + Open With - + View Properties - + File Operations - + Rename - + Copy - + Cut - + Delete - + Select Application - + Name: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ko.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ko.ts index 836f74da..c47d7279 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ko.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ko.ts @@ -38,62 +38,62 @@ 설정하기 위해 누름 - + Launch %1 %1 실행 - + Open 열기 - + Open With - + View Properties - + File Operations - + Rename - + Copy 복사 - + Cut 잘라내기 - + Delete 삭제 - + Select Application 프로그램 선택 - + Name: 이름: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop 바탕 화면 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 1869e3e0..34b0a5e6 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_lt.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_lt.ts @@ -38,62 +38,62 @@ Spustelėkite, norėdami nustatyti - + Launch %1 Paleisti %1 - + Open Atverti - + Open With Atverti, naudojant - + View Properties Rodyti savybes - + File Operations Failų operacijos - + Rename Pervadinti - + Copy Kopijuoti - + Cut Iškirpti - + Delete Ištrinti - + Select Application Pasirinkti programą - + Name: Pavadinimas: - + New Filename Naujas failo pavadinimas @@ -265,12 +265,12 @@ - Don't expect to build up the weak by pulling down the strong. + Don't expect to build up the weak by pulling down the strong. Nesitikėk padrąsinti silpnus, žemindamas stiprius. - You can't know too much, but you can say too much. + You can't know too much, but you can say too much. Negali per daug žinoti, tačiau gali per daug pasakyti. @@ -350,7 +350,7 @@ - Only two things are infinite, the universe and human stupidity, and I'm not sure about the former. + Only two things are infinite, the universe and human stupidity, and I'm not sure about the former. Tik du dalykai yra beribiai: visata ir žmogaus kvailumas; tačiau dėl visatos aš nesu tikras. @@ -360,8 +360,8 @@ - Do, or do not. There is no 'try'. - Daryti arba nedaryti. Nėra "bandyti". + Do, or do not. There is no 'try'. + Daryti arba nedaryti. Nėra "bandyti". @@ -380,7 +380,7 @@ - It's kind of fun to do the impossible. + It's kind of fun to do the impossible. Smagu yra daryti tai, kas neįmanoma. @@ -851,7 +851,7 @@ LSession - + Desktop Darbalaukis diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_lv.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_lv.ts index 070884ed..7cf1b6f3 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_lv.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_lv.ts @@ -38,62 +38,62 @@ Klikšķiniet, lai iestatītu - + Launch %1 Palaist %1 - + Open Atvērt - + Open With - + View Properties - + File Operations - + Rename - + Copy Kopēt - + Cut Izgriezt - + Delete Dzēst - + Select Application Izvēlieties lietotni - + Name: Nosaukums: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop Darbvirsma diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_mk.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_mk.ts index 6a86d9f6..caeb719a 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_mk.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_mk.ts @@ -38,62 +38,62 @@ - + Launch %1 - + Open - + Open With - + View Properties - + File Operations - + Rename - + Copy - + Cut - + Delete - + Select Application - + Name: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_mn.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_mn.ts index 6a86d9f6..caeb719a 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_mn.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_mn.ts @@ -38,62 +38,62 @@ - + Launch %1 - + Open - + Open With - + View Properties - + File Operations - + Rename - + Copy - + Cut - + Delete - + Select Application - + Name: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ms.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ms.ts index 6a86d9f6..caeb719a 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ms.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ms.ts @@ -38,62 +38,62 @@ - + Launch %1 - + Open - + Open With - + View Properties - + File Operations - + Rename - + Copy - + Cut - + Delete - + Select Application - + Name: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_mt.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_mt.ts index 6a86d9f6..caeb719a 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_mt.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_mt.ts @@ -38,62 +38,62 @@ - + Launch %1 - + Open - + Open With - + View Properties - + File Operations - + Rename - + Copy - + Cut - + Delete - + Select Application - + Name: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_nb.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_nb.ts index 6a86d9f6..caeb719a 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_nb.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_nb.ts @@ -38,62 +38,62 @@ - + Launch %1 - + Open - + Open With - + View Properties - + File Operations - + Rename - + Copy - + Cut - + Delete - + Select Application - + Name: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_nl.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_nl.ts index e39fcf70..9702b408 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_nl.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_nl.ts @@ -38,62 +38,62 @@ Klik om in te stellen - + Launch %1 %1 opstarten - + Open Openen - + Open With - + View Properties - + File Operations - + Rename - + Copy Plakken - + Cut Knippen - + Delete Verwijderen - + Select Application Applicatie selecteren - + Name: Naam: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop Bureaublad diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_pa.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_pa.ts index 6a86d9f6..caeb719a 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_pa.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_pa.ts @@ -38,62 +38,62 @@ - + Launch %1 - + Open - + Open With - + View Properties - + File Operations - + Rename - + Copy - + Cut - + Delete - + Select Application - + Name: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop 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 d909cda8..f9c747e9 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_pl.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_pl.ts @@ -38,62 +38,62 @@ Kliknij by ustawić - + Launch %1 Uruchom %1 - + Open Otwórz - + Open With - + View Properties - + File Operations - + Rename - + Copy Kopiuj - + Cut Wytnij - + Delete Usuń - + Select Application Wybierz aplikację - + Name: Nazwa: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop Pulpit diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_pt.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_pt.ts index c87ec370..dfe5c837 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_pt.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_pt.ts @@ -38,62 +38,62 @@ Clique para Definir - + Launch %1 Iniciar %1 - + Open Abrir - + Open With - + View Properties - + File Operations - + Rename - + Copy Copiar - + Cut Cortar - + Delete Excluir - + Select Application Selecionar Aplicativo - + Name: Nome: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop Área de Trabalho diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_pt_BR.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_pt_BR.ts index 0a238ed7..08732029 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_pt_BR.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_pt_BR.ts @@ -38,62 +38,62 @@ Clique para definir - + Launch %1 Lançar %1 - + Open Abrir - + Open With - + View Properties - + File Operations - + Rename - + Copy Copiar - + Cut Cortar - + Delete Excluir - + Select Application Selecionar aplicativo - + Name: Nome: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop Área de trabalho diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ro.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ro.ts index 6a86d9f6..caeb719a 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ro.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ro.ts @@ -38,62 +38,62 @@ - + Launch %1 - + Open - + Open With - + View Properties - + File Operations - + Rename - + Copy - + Cut - + Delete - + Select Application - + Name: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ru.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ru.ts index 11bf37d6..a7a78a16 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ru.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ru.ts @@ -38,62 +38,62 @@ Нажмите что бы выбрать - + Launch %1 Запуск %1 - + Open Открыть - + Open With Открыть с помощью - + View Properties Посмотреть свойства - + File Operations Операции с файлами - + Rename Переименовать - + Copy Копировать - + Cut Вырезать - + Delete Удалить - + Select Application Выбрать Приложение - + Name: Название: - + New Filename Новое имя файла @@ -265,12 +265,12 @@ - Don't expect to build up the weak by pulling down the strong. + Don't expect to build up the weak by pulling down the strong. Не ждите, чтобы создать слабое, потянув вниз сильное. - You can't know too much, but you can say too much. + You can't know too much, but you can say too much. Вы не можете знать слишком много, но вы можете сказать слишком много. @@ -350,7 +350,7 @@ - Only two things are infinite, the universe and human stupidity, and I'm not sure about the former. + Only two things are infinite, the universe and human stupidity, and I'm not sure about the former. Только две вещи бесконечны, вселенная и человеческая глупость. @@ -360,7 +360,7 @@ - Do, or do not. There is no 'try'. + Do, or do not. There is no 'try'. Делай, или не делай. Не пробуй. @@ -380,7 +380,7 @@ - It's kind of fun to do the impossible. + It's kind of fun to do the impossible. Это своего рода забава - сделать невозможное. @@ -851,7 +851,7 @@ LSession - + Desktop Рабочий стол diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sk.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sk.ts index 234c5e0b..c9bfecb1 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sk.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sk.ts @@ -38,62 +38,62 @@ Kliknutím nastaviť - + Launch %1 Spustiť %1 - + Open Otvoriť - + Open With - + View Properties - + File Operations - + Rename - + Copy Kopírovať - + Cut Vystrihnúť - + Delete Vymazať - + Select Application Výber aplikácie - + Name: Meno: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop Pracovná plocha diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sl.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sl.ts index 1773c5ae..5a4ab343 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sl.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sl.ts @@ -38,62 +38,62 @@ - + Launch %1 Zaženi %1 - + Open Odpri - + Open With - + View Properties - + File Operations - + Rename - + Copy Kopiraj - + Cut Izreži - + Delete Izbriši - + Select Application Izberi program - + Name: Ime: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sr.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sr.ts index 6a86d9f6..caeb719a 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sr.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sr.ts @@ -38,62 +38,62 @@ - + Launch %1 - + Open - + Open With - + View Properties - + File Operations - + Rename - + Copy - + Cut - + Delete - + Select Application - + Name: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sv.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sv.ts index 673a2732..9a5870cd 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sv.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sv.ts @@ -38,62 +38,62 @@ Klicka för att tilldela - + Launch %1 Starta %1 - + Open Öppna - + Open With Öppna med - + View Properties Visa egenskaper - + File Operations - + Rename Döp om - + Copy Kopiera - + Cut Klipp ut - + Delete Ta bort - + Select Application Välj program - + Name: Namn: - + New Filename Nytt filnamn @@ -851,7 +851,7 @@ LSession - + Desktop Skrivbord diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sw.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sw.ts index 6a86d9f6..caeb719a 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sw.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sw.ts @@ -38,62 +38,62 @@ - + Launch %1 - + Open - + Open With - + View Properties - + File Operations - + Rename - + Copy - + Cut - + Delete - + Select Application - + Name: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ta.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ta.ts index 6a86d9f6..caeb719a 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ta.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ta.ts @@ -38,62 +38,62 @@ - + Launch %1 - + Open - + Open With - + View Properties - + File Operations - + Rename - + Copy - + Cut - + Delete - + Select Application - + Name: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_tg.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_tg.ts index 6a86d9f6..caeb719a 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_tg.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_tg.ts @@ -38,62 +38,62 @@ - + Launch %1 - + Open - + Open With - + View Properties - + File Operations - + Rename - + Copy - + Cut - + Delete - + Select Application - + Name: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_th.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_th.ts index 6a86d9f6..caeb719a 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_th.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_th.ts @@ -38,62 +38,62 @@ - + Launch %1 - + Open - + Open With - + View Properties - + File Operations - + Rename - + Copy - + Cut - + Delete - + Select Application - + Name: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_tr.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_tr.ts index e04cdaac..02e7e914 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_tr.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_tr.ts @@ -38,62 +38,62 @@ Ayarlamak için Tıkla - + Launch %1 %1 öğesini başlat - + Open - + Open With - + View Properties - + File Operations - + Rename - + Copy Kopyala - + Cut Kes - + Delete Sil - + Select Application Uygulama Seç - + Name: Ad: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop Masaüstü diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_uk.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_uk.ts index eab60624..eef5d753 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_uk.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_uk.ts @@ -38,62 +38,62 @@ Натисніть щоб встановити - + Launch %1 Запуск %1 - + Open Відкрити - + Open With - + View Properties - + File Operations - + Rename - + Copy Копіювати - + Cut Вирізати - + Delete Видалити - + Select Application Оберіть додаток - + Name: Ім'я: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop Робочий стіл diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_uz.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_uz.ts index 6a86d9f6..caeb719a 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_uz.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_uz.ts @@ -38,62 +38,62 @@ - + Launch %1 - + Open - + Open With - + View Properties - + File Operations - + Rename - + Copy - + Cut - + Delete - + Select Application - + Name: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_vi.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_vi.ts index 6a86d9f6..caeb719a 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_vi.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_vi.ts @@ -38,62 +38,62 @@ - + Launch %1 - + Open - + Open With - + View Properties - + File Operations - + Rename - + Copy - + Cut - + Delete - + Select Application - + Name: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_zh_CN.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_zh_CN.ts index 818cd2a6..17149435 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_zh_CN.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_zh_CN.ts @@ -38,62 +38,62 @@ 单击以设定 - + Launch %1 启动 %1 - + Open 打开 - + Open With 打开用 - + View Properties 查看属性 - + File Operations 文件操作 - + Rename 重命名 - + Copy 复制 - + Cut 剪切 - + Delete 删除 - + Select Application 选择程序 - + Name: 名称: - + New Filename 新文件名 @@ -851,7 +851,7 @@ LSession - + Desktop 桌面 diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_zh_HK.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_zh_HK.ts index 6a86d9f6..caeb719a 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_zh_HK.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_zh_HK.ts @@ -38,62 +38,62 @@ - + Launch %1 - + Open - + Open With - + View Properties - + File Operations - + Rename - + Copy - + Cut - + Delete - + Select Application - + Name: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_zh_TW.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_zh_TW.ts index 6a86d9f6..caeb719a 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_zh_TW.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_zh_TW.ts @@ -38,62 +38,62 @@ - + Launch %1 - + Open - + Open With - + View Properties - + File Operations - + Rename - + Copy - + Cut - + Delete - + Select Application - + Name: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_zu.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_zu.ts index 6a86d9f6..caeb719a 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_zu.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_zu.ts @@ -38,62 +38,62 @@ - + Launch %1 - + Open - + Open With - + View Properties - + File Operations - + Rename - + Copy - + Cut - + Delete - + Select Application - + Name: - + New Filename @@ -851,7 +851,7 @@ LSession - + Desktop -- cgit From a5d8b3a97df1e2037200bedf9c2eb99814892b78 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Mon, 26 Jun 2017 13:57:45 -0400 Subject: Nuke some old reference files in the lumina-desktop-unified directory (not used) --- .../lumina-desktop-unified/src-WM/DEPENDENCIES | 17 - .../lumina-desktop-unified/src-WM/GlobalDefines.h | 74 ---- .../core/lumina-desktop-unified/src-WM/LWindow.cpp | 474 --------------------- .../core/lumina-desktop-unified/src-WM/LWindow.h | 114 ----- .../src-WM/LWindowManager.cpp | 186 -------- .../lumina-desktop-unified/src-WM/LWindowManager.h | 40 -- .../lumina-desktop-unified/src-WM/WMSession.cpp | 62 --- .../core/lumina-desktop-unified/src-WM/WMSession.h | 42 -- .../lumina-desktop-unified/src-WM/lumina-wm.pro | 107 ----- .../core/lumina-desktop-unified/src-WM/main.cpp | 56 --- 10 files changed, 1172 deletions(-) delete mode 100644 src-qt5/core/lumina-desktop-unified/src-WM/DEPENDENCIES delete mode 100644 src-qt5/core/lumina-desktop-unified/src-WM/GlobalDefines.h delete mode 100644 src-qt5/core/lumina-desktop-unified/src-WM/LWindow.cpp delete mode 100644 src-qt5/core/lumina-desktop-unified/src-WM/LWindow.h delete mode 100644 src-qt5/core/lumina-desktop-unified/src-WM/LWindowManager.cpp delete mode 100644 src-qt5/core/lumina-desktop-unified/src-WM/LWindowManager.h delete mode 100644 src-qt5/core/lumina-desktop-unified/src-WM/WMSession.cpp delete mode 100644 src-qt5/core/lumina-desktop-unified/src-WM/WMSession.h delete mode 100644 src-qt5/core/lumina-desktop-unified/src-WM/lumina-wm.pro delete mode 100644 src-qt5/core/lumina-desktop-unified/src-WM/main.cpp (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-desktop-unified/src-WM/DEPENDENCIES b/src-qt5/core/lumina-desktop-unified/src-WM/DEPENDENCIES deleted file mode 100644 index fa0ce486..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-WM/DEPENDENCIES +++ /dev/null @@ -1,17 +0,0 @@ -Most dependencies required to build Lumina are listed in the -DEPENDENCIES file in the directory above this one. The following -are dependencies specific to Lumina's window manager. - - -FreeBSD/TrueOS -======================= - - - - -Linux (Debian/Ubuntu) -======================= - -libxcb-screensaver0-dev - - diff --git a/src-qt5/core/lumina-desktop-unified/src-WM/GlobalDefines.h b/src-qt5/core/lumina-desktop-unified/src-WM/GlobalDefines.h deleted file mode 100644 index 3ec278ac..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-WM/GlobalDefines.h +++ /dev/null @@ -1,74 +0,0 @@ -//=========================================== -// Lumina-DE source code -// Copyright (c) 2015, Ken Moore -// Available under the 3-clause BSD license -// See the LICENSE file for full details -//=========================================== -// Global defines and enumerations for the window manager -//=========================================== -#ifndef _LUMINA_WINDOW_MANAGER_GLOBAL_DEFINES_H -#define _LUMINA_WINDOW_MANAGER_GLOBAL_DEFINES_H - -//Qt includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// libLumina includes -#include -#include -#include -#include -#include -#include - -//XCB Includes -#include -#include -#include -#include -#include //included in libxcb-util.so - -#define ANIMTIME 80 //animation time in milliseconds -//Global flags/structures -namespace LWM{ - //Flags/enumerations - enum WindowAction{MoveResize, Show, Hide, TryClose, Closed, WA_NONE}; - - //Data structures - extern LXCB *SYSTEM; -}; - - - -#endif diff --git a/src-qt5/core/lumina-desktop-unified/src-WM/LWindow.cpp b/src-qt5/core/lumina-desktop-unified/src-WM/LWindow.cpp deleted file mode 100644 index 84ff2ffd..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-WM/LWindow.cpp +++ /dev/null @@ -1,474 +0,0 @@ -//=========================================== -// Lumina-DE source code -// Copyright (c) 2015, Ken Moore -// Available under the 3-clause BSD license -// See the LICENSE file for full details -//=========================================== -#include "LWindow.h" - -LWindowFrame::LWindowFrame(WId client, QWidget *parent) : QFrame(parent, Qt::X11BypassWindowManagerHint){ - activeState = LWindowFrame::Normal; - CID = client; - lastAction = LWM::WA_NONE; - Closing = false; - //qDebug() << "New Window:" << CID << "Frame:" << this->winId(); - this->setMouseTracking(true); //need this to determine mouse location when not clicked - this->setObjectName("LWindowFrame"); - this->setStyleSheet("LWindowFrame#LWindowFrame{ border: 2px solid white; border-radius:3px; } QWidget#TitleBar{background: grey; } QLabel{ color: black; }"); - InitWindow(); //initially create all the child widgets - //LWM::SYSTEM->setupEventsForFrame(this->winId()); - updateAppearance(); //this loads the appearance based on window/theme settings - //QApplication::processEvents(); - //Now set the frame size on this window - SyncSize(); - SyncText(); - this->show(); -} - -LWindowFrame::~LWindowFrame(){ -} - -// ================= -// PRIVATE -// ================= -void LWindowFrame::InitWindow(){ - anim = new QPropertyAnimation(this); //For simple window animations - anim->setTargetObject(this); - anim->setDuration(ANIMTIME); //In milliseconds - connect(anim, SIGNAL(finished()), this, SLOT(finishedAnimation()) ); - titleBar = new QLabel(this); //This is the "container" for all the title buttons/widgets - titleBar->setObjectName("TitleBar"); - titleBar->setSizePolicy(QSizePolicy::Minimum,QSizePolicy::Minimum); - titleBar->setFocusPolicy(Qt::NoFocus); - titleBar->setCursor(Qt::ArrowCursor); - title = new QLabel(this); //Shows the window title/text - title->setObjectName("Title"); - title->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); - title->setCursor(Qt::ArrowCursor); - title->setFocusPolicy(Qt::NoFocus); - icon = new QLabel(this); //Contains the window icon - icon->setObjectName("Icon"); - icon->setCursor(Qt::ArrowCursor); - icon->setFocusPolicy(Qt::NoFocus); - minB = new QToolButton(this); //Minimize Button - minB->setObjectName("Minimize"); - minB->setCursor(Qt::ArrowCursor); - minB->setFocusPolicy(Qt::NoFocus); - connect(minB, SIGNAL(clicked()), this, SLOT(minClicked()) ); - maxB = new QToolButton(this); //Maximize Button - maxB->setObjectName("Maximize"); - maxB->setCursor(Qt::ArrowCursor); - maxB->setFocusPolicy(Qt::NoFocus); - connect(maxB, SIGNAL(clicked()), this, SLOT(maxClicked()) ); - closeB = new QToolButton(this); - closeB->setObjectName("Close"); - closeB->setCursor(Qt::ArrowCursor); - closeB->setFocusPolicy(Qt::NoFocus); - connect(closeB, SIGNAL(clicked()), this, SLOT(closeClicked()) ); - otherB = new QToolButton(this); //Button to place any other actions - otherB->setObjectName("Options"); - otherB->setCursor(Qt::ArrowCursor); - otherB->setPopupMode(QToolButton::InstantPopup); - otherB->setStyleSheet("QToolButton::menu-indicator{ image: none; }"); - otherB->setFocusPolicy(Qt::NoFocus); - otherM = new QMenu(this); //menu of "other" actions for the window - otherB->setMenu(otherM); - connect(otherM, SIGNAL(triggered(QAction*)), this, SLOT(otherClicked(QAction*)) ); - //Now assemble the titlebar - QHBoxLayout *HL = new QHBoxLayout(this); - HL->setContentsMargins(0,0,0,0); - HL->addWidget(otherB); - HL->addWidget(icon); - HL->addWidget(title); - HL->addWidget(minB); - HL->addWidget(maxB); - HL->addWidget(closeB); - titleBar->setLayout(HL); - QVBoxLayout *VL = new QVBoxLayout(this); - this->setLayout(VL); - //The WinWidget container appears shifted right/down by 1 pixel for some reason - // Adjust the margins to account for this variation - VL->setContentsMargins(1,1,2,2); - VL->setSpacing(0); - //Have the window take the same initial size of the client window - QRect geom = LWM::SYSTEM->WM_Window_Geom(CID); - qDebug() << " - Load Size Hints" << "initial size:" << geom.size(); - icccm_size_hints SH = LWM::SYSTEM->WM_ICCCM_GetNormalHints(CID); - qDebug() << " - - Got Normal Hints"; - if(!SH.isValid()){ SH = LWM::SYSTEM->WM_ICCCM_GetSizeHints(CID); } - qDebug() << " - - Start resizing..."; - if(SH.base_width>geom.width() && SH.base_height>geom.height()){ this->resize(SH.base_width, SH.base_height); } - else if(SH.min_width>geom.width() && SH.min_height>geom.height()){ this->resize(SH.min_width, SH.min_height); } - else if(SH.width>geom.width() && SH.height>geom.height()){ this->resize(SH.width, SH.height); } - else if(geom.isNull()){ this->resize(100,80); } - else{ this->resize( geom.size() ); } - qDebug() << " - done"; - - //Now embed the native window into the frame - WIN = QWindow::fromWinId(CID); - WinWidget = QWidget::createWindowContainer( WIN, this); - WinWidget->setCursor(Qt::ArrowCursor); //this is just a fallback - the window itself will adjust it - //WINBACK = new QBackingStore(WIN); //create a data backup for the widget - - //Now assemble te initial layout for the window (all while still invisible) - /*VL->addWidget(titleBar); - VL->addWidget(WinWidget); - VL->setStretch(1,1);*/ -} - -LWindowFrame::ModState LWindowFrame::getStateAtPoint(QPoint pt, bool setoffset){ - //Note: pt should be in widget-relative coordinates, not global - if(!this->layout()->geometry().contains(pt)){ - //above the frame itself - need to figure out which quadrant it is in (8-directions) - if(pt.y() < 3){ - //One of the top options - if(pt.x() < 3){ - if(setoffset){ offset.setX(pt.x()); offset.setY(pt.y()); } //difference from top-left corner - return ResizeTopLeft; - }else if(pt.x() > (this->width()-3)){ - if(setoffset){ offset.setX(this->width()-pt.x()); offset.setY(pt.y()); } //difference from top-right corner - return ResizeTopRight; - }else{ - if(setoffset){ offset.setX(0); offset.setY(pt.y()); } //difference from top edge (X does not matter) - return ResizeTop; - } - }else if(pt.y() > (this->height()-3) ){ - //One of the bottom options - if(pt.x() < 3){ - if(setoffset){ offset.setX(pt.x()); offset.setY(this->height()-pt.y()); } //difference from bottom-left corner - return ResizeBottomLeft; - }else if(pt.x() > (this->width()-3)){ - if(setoffset){ offset.setX(this->width()-pt.x()); offset.setY(this->height()-pt.y()); } //difference from bottom-right corner - return ResizeBottomRight; - }else{ - if(setoffset){ offset.setX(0); offset.setY(this->height() - pt.y()); } //difference from bottom edge (X does not matter) - return ResizeBottom; - } - }else{ - //One of the side options - if(pt.x() < 3){ - if(setoffset){ offset.setX(pt.x()); offset.setY(0); } //difference from left edge (Y does not matter) - return ResizeLeft; - }else if(pt.x() > (this->width()-3) ){ - if(setoffset){ offset.setX(this->width()-pt.x()); offset.setY(0); } //difference from right edge (Y does not matter) - return ResizeRight; - }else{ - return Normal; - } - } - } - return Normal; -} - -void LWindowFrame::setMouseCursor(ModState state, bool override){ - Qt::CursorShape shape; - switch(state){ - case Normal: - shape = Qt::ArrowCursor; - break; - case Move: - shape = Qt::SizeAllCursor; - break; - case ResizeTop: - shape = Qt::SizeVerCursor; - break; - case ResizeTopRight: - shape = Qt::SizeBDiagCursor; - break; - case ResizeRight: - shape = Qt::SizeHorCursor; - break; - case ResizeBottomRight: - shape = Qt::SizeFDiagCursor; - break; - case ResizeBottom: - shape = Qt::SizeVerCursor; - break; - case ResizeBottomLeft: - shape = Qt::SizeBDiagCursor; - break; - case ResizeLeft: - shape = Qt::SizeHorCursor; - break; - case ResizeTopLeft: - shape = Qt::SizeFDiagCursor; - break; - } - if(override){ - QApplication::setOverrideCursor(QCursor(shape)); - }else{ - this->setCursor(shape); - } -} - -// ========================== -// WINDOW INTERACTIONS -//========================== -void LWindowFrame::SyncSize(bool fromwin){ - //sync the window/frame geometries (generally only done before embedding the client window) - int frame = this->frameWidth(); - int TH = titleBar->height(); - //Now load the information about the window and adjust the frame to match - if(fromwin){ lastGeom = LWM::SYSTEM->WM_Window_Geom(CID); } - else{ lastGeom = this->geometry(); } - qDebug() << "Initial Size:" << lastGeom << frame << TH; - //Add in the frame size - lastGeom.moveTop(lastGeom.y()-frame-TH); - lastGeom.setHeight(lastGeom.height()+(2*frame)+TH); - lastGeom.moveLeft(lastGeom.x()-frame); - lastGeom.setWidth( lastGeom.width()+(2*frame)); - QList margins; - margins << frame << frame << frame+TH << frame; //L/R/Top/Bottom - qDebug() << " - With Frame:" << lastGeom; - //Now adjust for a out-of-bounds location - if(lastGeom.x() < 0){ lastGeom.moveLeft(0); } - if(lastGeom.y() < 0){ lastGeom.moveTop(0); } - qDebug() << " - Adjusted:" << lastGeom; - this->setGeometry(lastGeom); - LWM::SYSTEM->WM_Set_Frame_Extents(CID, margins); -} - -void LWindowFrame::SyncText(){ - QString txt = WIN->title(); - if(txt.isEmpty()){ txt = LWM::SYSTEM->WindowName(CID); } - if(txt.isEmpty()){ txt = LWM::SYSTEM->OldWindowName(CID); } - if(txt.isEmpty()){ txt = LWM::SYSTEM->WindowVisibleName(CID); } - if(txt.isEmpty()){ txt = LWM::SYSTEM->WindowIconName(CID); } - if(txt.isEmpty()){ txt = LWM::SYSTEM->WindowVisibleIconName(CID); } - if(txt.isEmpty()){ txt = LWM::SYSTEM->WM_ICCCM_GetClass(CID); } - title->setText(txt); -} - -// SIMPLE ANIMATIONS -void LWindowFrame::showAnimation(LWM::WindowAction act){ - bool useanimation = (act!=lastAction); - if(anim->state()==QAbstractAnimation::Running){ - qDebug() << "New Animation Event:" << act; - return; - } - //Setup the animation routine - if(act==LWM::Show){ - if(useanimation){ - lastGeom = this->geometry(); - //Expand out from center point - anim->setPropertyName("geometry"); - anim->setStartValue( QRect(lastGeom.center(), QSize(0,0) ) ); - anim->setEndValue( this->geometry() ); - //Fade in gradually - //anim->setPropertyName("windowOpacity"); - //anim->setStartValue( 0.0 ); - //anim->setEndValue( 1.0 ); - }else{ - ShowClient(true); - this->raise(); - this->show(); //just show it right away - } - - }else if(act==LWM::Hide){ - if(useanimation){ - //Collapse in on center point - lastGeom = this->geometry(); - anim->setPropertyName("geometry"); - anim->setStartValue( QRect(this->geometry()) ); - anim->setEndValue( QRect(this->geometry().center(), QSize(0,0) ) ); - }else{ - this->hide(); //just hide it right away - } - }else if(act==LWM::Closed){ - //Need to clean up the container widget first to prevent XCB errors - //qDebug() << "Window Closed:" << WIN->winId() << CID; - if(useanimation){ - //Collapse in on center line - lastGeom = this->geometry(); - anim->setPropertyName("geometry"); - anim->setStartValue( QRect(this->geometry()) ); - anim->setEndValue( QRect(this->geometry().x(), this->geometry().center().y(), this->width(), 0 ) ); - }else{ - CloseAll(); //just hide it right away - } - } - if(useanimation){ - ShowClient(false); - this->show(); - qDebug() << " - Starting Animation:" << act; - lastAction = act; - anim->start(); - }; -} - -void LWindowFrame::ShowClient(bool show){ - if(show && this->layout()->indexOf(WinWidget)<0 && !Closing){ - while(this->layout()->count()>0){ this->layout()->removeItem(0); } - this->layout()->addWidget(titleBar); - this->layout()->setAlignment(titleBar, Qt::AlignTop); - this->layout()->addWidget(WinWidget); - static_cast(this->layout())->setStretch(1,1); - LWM::SYSTEM->WM_ShowWindow(CID); - }else if( !show && this->layout()->indexOf(WinWidget)>=0){ - LWM::SYSTEM->WM_HideWindow(CID); - this->layout()->removeWidget(WinWidget); - } -} - -void LWindowFrame::finishedAnimation(){ - //Also set any final values - qDebug() << " - Finished Animation:" << lastAction; - switch(lastAction){ - case LWM::Show: - ShowClient(true); - break; - case LWM::Closed: - case LWM::Hide: - this->lower(); - this->hide(); - LWM::SYSTEM->WM_HideWindow(this->winId()); - default: - break; - } - if(Closing){ - qDebug() << "Emitting finished signal"; - emit Finished(); - } -} - -// ================= -// PUBLIC SLOTS -// ================= -void LWindowFrame::updateAppearance(){ - //Reload any button icons and such - minB->setIcon(LXDG::findIcon("window-suppressed","")); - maxB->setIcon(LXDG::findIcon("view-fullscreen","")); - closeB->setIcon(LXDG::findIcon("application-exit","")); - otherB->setIcon(LXDG::findIcon("configure","")); -} - -void LWindowFrame::windowChanged(LWM::WindowAction act){ - //A window property was changed - update accordingly - switch(act){ - case LWM::Closed: - Closing = true; - case LWM::Hide: - case LWM::Show: - showAnimation(act); - break; - case LWM::MoveResize: - //Re-adjust to the new position/size of the window - SyncSize(true); - break; - default: - break; //do nothing - } -} -// ================= -// PRIVATE SLOTS -// ================= -void LWindowFrame::closeClicked(){ - qDebug() << "Closing Window" << LWM::SYSTEM->WM_ICCCM_GetClass(CID); - //First try the close event to let the client app do cleanup/etc - LWM::SYSTEM->WM_CloseWindow(CID); -} - -void LWindowFrame::minClicked(){ - qDebug() << "Minimize Window"; - windowChanged(LWM::Hide); -} - -void LWindowFrame::maxClicked(){ - if(normalGeom.isNull()){ - qDebug() << "Maximize Window"; - normalGeom = this->geometry(); //save for later - this->showMaximized(); - }else{ - qDebug() << "Restore Window"; - this->showNormal(); - this->setGeometry(normalGeom); - normalGeom = QRect(); //clear it - } -} - -void LWindowFrame::otherClicked(QAction* act){ - QString action = act->whatsThis(); -} - -void LWindowFrame::CloseAll(){ - qDebug() << " - Closing Frame"; - this->hide(); - emit Finished(); -} -// ===================== -// PROTECTED -// ===================== -void LWindowFrame::mousePressEvent(QMouseEvent *ev){ - qDebug() << "Frame Mouse Press Event"; - offset.setX(0); offset.setY(0); - if(activeState != Normal){ return; } // do nothing - already in a state of grabbed mouse - this->activateWindow(); - LWM::SYSTEM->WM_Set_Active_Window(CID); - if(this->childAt(ev->pos())!=0){ - //Check for any non-left-click event and skip it - if(ev->button()!=Qt::LeftButton){ return; } - activeState = Move; - offset.setX(ev->pos().x()); offset.setY(ev->pos().y()); - }else{ - //Clicked on the frame somewhere - activeState = getStateAtPoint(ev->pos(), true); //also have it set the offset variable - } - setMouseCursor(activeState, true); //this one is an override cursor - -} - -void LWindowFrame::mouseMoveEvent(QMouseEvent *ev){ - ev->accept(); - if(activeState == Normal){ - setMouseCursor( getStateAtPoint(ev->pos()) ); //just update the mouse cursor - - }else{ - //Currently in a modification state - QRect geom = this->geometry(); - switch(activeState){ - case Move: - geom.moveTopLeft(ev->globalPos()-offset); //will not change size - break; - case ResizeTop: - geom.setTop(ev->globalPos().y()-offset.y()); - break; - case ResizeTopRight: - geom.setTopRight(ev->globalPos()-offset); - break; - case ResizeRight: - geom.setRight(ev->globalPos().x()-offset.x()); - break; - case ResizeBottomRight: - geom.setBottomRight(ev->globalPos()-offset); - break; - case ResizeBottom: - geom.setBottom(ev->globalPos().y()-offset.y()); - break; - case ResizeBottomLeft: - geom.setBottomLeft(ev->globalPos()-offset); - break; - case ResizeLeft: - geom.setLeft(ev->globalPos().x()-offset.x()); - break; - case ResizeTopLeft: - geom.setTopLeft(ev->globalPos()-offset); - break; - default: - break; - } - this->setGeometry(geom); - } -} - -void LWindowFrame::mouseReleaseEvent(QMouseEvent *ev){ - //Check for a right-click event - qDebug() << "Frame Mouse Release Event"; - ev->accept(); - if( (activeState==Normal) && (this->childAt(ev->pos())==titleBar) && (ev->button()==Qt::RightButton) ){ - otherM->popup(ev->globalPos()); - return; - } - activeState = Normal; - QApplication::restoreOverrideCursor(); - setMouseCursor( getStateAtPoint(ev->pos()) ); -} diff --git a/src-qt5/core/lumina-desktop-unified/src-WM/LWindow.h b/src-qt5/core/lumina-desktop-unified/src-WM/LWindow.h deleted file mode 100644 index ceefca83..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-WM/LWindow.h +++ /dev/null @@ -1,114 +0,0 @@ -//=========================================== -// Lumina-DE source code -// Copyright (c) 2015, Ken Moore -// Available under the 3-clause BSD license -// See the LICENSE file for full details -//=========================================== -#ifndef _LUMINA_DESKTOP_WINDOW_FRAME_H -#define _LUMINA_DESKTOP_WINDOW_FRAME_H - -#include "GlobalDefines.h" - -class LWindowFrame : public QFrame{ - Q_OBJECT -public: - LWindowFrame(WId client, QWidget *parent = 0); //MUST have a valid client window - ~LWindowFrame(); - -private: - void InitWindow(); //Initialize all the internal widgets - - //Window status - enum ModState{Normal, Move, ResizeTop, ResizeTopRight, ResizeRight, ResizeBottomRight, ResizeBottom, ResizeBottomLeft, ResizeLeft, ResizeTopLeft}; - ModState activeState; - QPoint offset; //needed for movement calculations (offset from mouse click to movement point) - //Functions for getting/setting state - ModState getStateAtPoint(QPoint pt, bool setoffset = false); //generally used for mouse location detection - void setMouseCursor(ModState, bool override = false); //Update the mouse cursor based on state - - //General Properties/Modifications - WId CID; //Client ID - QWindow *WIN; //Embedded window container - QWidget *WinWidget; - bool Closing; - LWM::WindowAction lastAction; - //QBackingStore *WINBACK; - void SyncSize(bool fromwin = false); //sync the window/frame geometries - void SyncText(); - - //Window Frame Widgets/Items - QLabel *titleBar, *title, *icon; - QToolButton *minB, *maxB, *closeB, *otherB; - QMenu *otherM; //menu of "other" actions for the window - QRect normalGeom; //used for restoring back to original size after maximization/fullscreen - - //Animations - QPropertyAnimation *anim; //used for appear/disappear animations - QRect lastGeom; //used for appear/disappear animations - void showAnimation(LWM::WindowAction); //sets lastAction - void ShowClient(bool show); - -public slots: - //These slots are generally used for the outside event watcher to prod for changes - void updateAppearance(); //reload the theme and change styling as necessary - void windowChanged(LWM::WindowAction); - -private slots: - void finishedAnimation(); //uses lastAction - void closeClicked(); - void minClicked(); - void maxClicked(); - void otherClicked(QAction*); - - void CloseAll(); - -protected: - void mousePressEvent(QMouseEvent*); - void mouseMoveEvent(QMouseEvent*); - void mouseReleaseEvent(QMouseEvent*); - -signals: - void Finished(); //This means the window is completely finished (with animations and such) and should be removed from any lists - -}; - -class LWindow : public QObject{ - Q_OBJECT -signals: - void Finished(WId client); //ready to be removed -private: - WId CID; - LWindowFrame *FID; - bool needsFrame(QList list){ - if(list.isEmpty()){ return !LWM::SYSTEM->WM_ICCCM_GetClass(CID).contains("Lumina-DE"); } //assume a normal window (fallback) - return !(list.contains(LXCB::T_DESKTOP) || list.contains(LXCB::T_DOCK) || list.contains(LXCB::T_TOOLBAR) \ - || list.contains(LXCB::T_SPLASH) || list.contains(LXCB::T_DROPDOWN_MENU) \ - || list.contains(LXCB::T_TOOLTIP) || list.contains(LXCB::T_POPUP_MENU) || list.contains(LXCB::T_TOOLTIP) \ - || list.contains(LXCB::T_COMBO) || list.contains(LXCB::T_DND) ); - } -private slots: - void frameclosed(){ - qDebug() << " - Window got frame closed signal"; - //FID->close(); - //delete FID; - emit Finished(CID); - } -public: - LWindow(WId client){ - FID= 0; - CID = client; - if( needsFrame(LWM::SYSTEM->WM_Get_Window_Type(CID)) ){ - FID = new LWindowFrame(CID); - connect(FID, SIGNAL(Finished()), this, SLOT(frameclosed()) ); - } - } - ~LWindow(){ - if(FID!=0){delete FID;} - } - - WId clientID(){ return CID; } - bool hasFrame(){ return FID!=0; } - LWindowFrame* frame(){ return FID; } - -}; -#endif diff --git a/src-qt5/core/lumina-desktop-unified/src-WM/LWindowManager.cpp b/src-qt5/core/lumina-desktop-unified/src-WM/LWindowManager.cpp deleted file mode 100644 index 14ce6897..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-WM/LWindowManager.cpp +++ /dev/null @@ -1,186 +0,0 @@ -//=========================================== -// Lumina-DE source code -// Copyright (c) 2015, Ken Moore -// Available under the 3-clause BSD license -// See the LICENSE file for full details -//=========================================== -#include "LWindowManager.h" - -#define DEBUG 1 - -LWindowManager::LWindowManager(){ - -} - -LWindowManager::~LWindowManager(){ - -} - -bool LWindowManager::start(){ - //Setup the initial screen/session values - LWM::SYSTEM->WM_Set_Root_Supported(); - LWM::SYSTEM->WM_SetNumber_Desktops(1); - LWM::SYSTEM->WM_Set_Current_Desktop(0); - LWM::SYSTEM->WM_Set_Desktop_Names(QStringList() << "one"); - QRect totgeom; - QList viewports; - QList geoms; - for(int i=0; iscreenCount(); i++){ - geoms << QApplication::desktop()->screen(i)->geometry(); - viewports << QPoint(0,0); - totgeom = QApplication::desktop()->screen(i)->geometry(); - } - LWM::SYSTEM->WM_Set_Desktop_Geometry(totgeom.size()); - LWM::SYSTEM->WM_Set_Desktop_Viewport(viewports); - LWM::SYSTEM->WM_Set_Workarea(geoms); - //Should probably do a quick loop over any existing windows with the root as parent (just in case) - QList initial = LWM::SYSTEM->WM_RootWindows(); - for(int i=0; ihasFrame()){ - LWM::SYSTEM->UnembedWindow(WINS[i]->clientID()); - WINS[i]->frame()->close(); - } - } -} -//=============== -// PUBLIC SLOTS -//=============== -void LWindowManager::NewWindow(WId win, bool requested){ - //Verify that this window can/should be managed first - //if(DEBUG){ qDebug() << "New Window:" << LWM::SYSTEM->WM_ICCCM_GetClass(win); } - QString wclass = LWM::SYSTEM->WM_ICCCM_GetClass(win); - if( wclass.contains("lumina-wm",Qt::CaseInsensitive) ){ return; } //just in case: prevent recursion - else{ - bool ok = (wclass.isEmpty() ? false : LWM::SYSTEM->WM_ManageWindow(win, requested) ); - if(!ok){ - //See if this window is just a transient pointing to some other window - WId tran = LWM::SYSTEM->WM_ICCCM_GetTransientFor(win); - if(tran!=win && tran!=0){ - win = tran; - ok = LWM::SYSTEM->WM_ManageWindow(win); - } - } - if(!ok){ return; } - } - if(DEBUG){ qDebug() << "New Managed Window:" << LWM::SYSTEM->WM_ICCCM_GetClass(win); } - LWM::SYSTEM->WM_Set_Active_Window(win); - LWindow *lwin = new LWindow(win); - connect(lwin, SIGNAL(Finished(WId)), this, SLOT(FinishedWindow(WId)) ); - WINS << lwin; - if(lwin->hasFrame()){ - lwin->frame()->windowChanged(LWM::Show); //Make sure to show it right away - }else{ - LWM::SYSTEM->WM_ShowWindow(win); //just map the window right now - } -} - -void LWindowManager::ClosedWindow(WId win){ - for(int i=0; iclientID()==win){ - qDebug() << " - Closed Window"; - if(WINS[i]->hasFrame()){ WINS[i]->frame()->windowChanged(LWM::Closed); } //do any animations/cleanup - else{ FinishedWindow(win); } - break; - } - } -} - -void LWindowManager::ModifyWindow(WId win, LWM::WindowAction act){ - for(int i=0; iclientID()==win){ - if(WINS[i]->hasFrame()){ WINS[i]->frame()->windowChanged(act); } - return; - } - } - //If it gets this far - it is an unmanaged window - if(act==LWM::Show){ - NewWindow(win); - } - RestackWindows(); -} - -void LWindowManager::RestackWindows(){ - Stack_Desktop.clear(); Stack_Below.clear(); Stack_Normal.clear(); Stack_Above.clear(); Stack_Fullscreen.clear(); - QList currwins; - int cwork = LWM::SYSTEM->WM_Get_Current_Desktop(); - int winwork = -1; - QList states; - QList types; - for(int i=0; iWM_Get_Desktop(WINS[i]->clientID()); - states = LWM::SYSTEM->WM_Get_Window_States(WINS[i]->clientID()); - types = LWM::SYSTEM->WM_Get_Window_Type(WINS[i]->clientID()); - WId id = WINS[i]->clientID(); - if(WINS[i]->hasFrame()){ id = WINS[i]->frame()->winId(); } - if(winwork<0 || winwork == cwork || states.contains(LXCB::S_STICKY) ){ - //Now check the state/type and put it in the proper stack - currwins << WINS[i]->clientID(); //add this to the overall "age" list - //Now add it to the proper stack - if(types.contains(LXCB::T_DESKTOP)){ Stack_Desktop << id; } - else if(states.contains(LXCB::S_BELOW)){ Stack_Below << id; } - else if(types.contains(LXCB::T_DOCK) || states.contains(LXCB::S_ABOVE) ){ Stack_Above << id; } - else if(states.contains(LXCB::S_FULLSCREEN)){ Stack_Fullscreen << id; } - else{ Stack_Normal << id; } - } - } - //Active Window management - WId active = LWM::SYSTEM->WM_Get_Active_Window(); - if(Stack_Desktop.contains(active)){ Stack_Desktop.removeAll(active); Stack_Desktop << active; } - else if(Stack_Below.contains(active)){ Stack_Below.removeAll(active); Stack_Below << active; } - else if(Stack_Normal.contains(active)){ Stack_Normal.removeAll(active); Stack_Normal << active; } - else if(Stack_Above.contains(active)){ Stack_Above.removeAll(active); Stack_Above << active; } - else if(Stack_Fullscreen.contains(active)){ Stack_Fullscreen.removeAll(active); Stack_Fullscreen << active; } - - //Now set the root properties for these lists - LWM::SYSTEM->WM_Set_Client_List(currwins, false); //age-ordered version - LWM::SYSTEM->WM_Set_Client_List(QList() << Stack_Desktop << Stack_Below << Stack_Normal << Stack_Above << Stack_Fullscreen, true); //stacking order version - //Now re-paint (in order) the windows - RepaintWindows(); -} - -void LWindowManager::RepaintWindows(){ - //Go through all the current windows (in stacking order) and re-paint them - for(int i=0; iWM_ShowWindow(Stack_Desktop[i]); - } - for(int i=0; iWM_ShowWindow(Stack_Below[i]); - } - for(int i=0; iWM_ShowWindow(Stack_Normal[i]); - } - for(int i=0; iWM_ShowWindow(Stack_Above[i]); - } - for(int i=0; iWM_ShowWindow(Stack_Fullscreen[i]); - } -} - -//================= -// PRIVATE SLOTS -//================= -void LWindowManager::FinishedWindow(WId win){ - for(int i=0; iclientID() == win){ - qDebug() << " - Finished Window"; - if(win == LWM::SYSTEM->WM_Get_Active_Window()){ - if(i==0 && WINS.length()>1){ LWM::SYSTEM->WM_Set_Active_Window(WINS[i+1]->clientID()); } - else if(i>0){ LWM::SYSTEM->WM_Set_Active_Window(WINS[i-1]->clientID()); } - else{ LWM::SYSTEM->WM_Set_Active_Window( QX11Info::appRootWindow()); } - } - delete WINS.takeAt(i); break; - } - } - //Now update the list of clients - RestackWindows(); -} diff --git a/src-qt5/core/lumina-desktop-unified/src-WM/LWindowManager.h b/src-qt5/core/lumina-desktop-unified/src-WM/LWindowManager.h deleted file mode 100644 index 203efa1b..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-WM/LWindowManager.h +++ /dev/null @@ -1,40 +0,0 @@ -//=========================================== -// Lumina-DE source code -// Copyright (c) 2015, Ken Moore -// Available under the 3-clause BSD license -// See the LICENSE file for full details -//=========================================== -#ifndef _LUMINA_DESKTOP_WINDOW_MANAGER_MAIN_CLASS_H -#define _LUMINA_DESKTOP_WINDOW_MANAGER_MAIN_CLASS_H - -#include "GlobalDefines.h" -#include "LWindow.h" - -class LWindowManager : public QObject{ - Q_OBJECT -public: - LWindowManager(); - ~LWindowManager(); - - bool start(); - void stop(); - -private: - QList WINS; - QList Stack_Desktop, Stack_Below, Stack_Normal, Stack_Above, Stack_Fullscreen; -public slots: - void NewWindow(WId win, bool requested = true); - void ClosedWindow(WId win); - void ModifyWindow(WId win, LWM::WindowAction act); - - void RestackWindows(); - void RepaintWindows(); - -private slots: - void FinishedWindow(WId win); //This is used for LWindow connections/animations - -signals: - void NewFullScreenWindows(QList); -}; - -#endif diff --git a/src-qt5/core/lumina-desktop-unified/src-WM/WMSession.cpp b/src-qt5/core/lumina-desktop-unified/src-WM/WMSession.cpp deleted file mode 100644 index 4a7c6e02..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-WM/WMSession.cpp +++ /dev/null @@ -1,62 +0,0 @@ -//=========================================== -// Lumina-DE source code -// Copyright (c) 2015, Ken Moore -// Available under the 3-clause BSD license -// See the LICENSE file for full details -//=========================================== -#include "WMSession.h" - -#define DEBUG 1 -// ========== -// PUBLIC -// ========== -WMSession::WMSession(){ - if(DEBUG){ qDebug() << "Creating Event Filter..."; } - EFILTER = new EventFilter(); - if(DEBUG){ qDebug() << "Creating Screen Saver..."; } - SS = new LScreenSaver(); - if(DEBUG){ qDebug() << "Creating Window Manager..."; } - WM = new LWindowManager(); - EVThread = new QThread(); - EFILTER->moveToThread(EVThread); - //Setup connections - connect(EFILTER, SIGNAL(NewInputEvent()), SS, SLOT(newInputEvent()) ); - connect(EFILTER, SIGNAL(NewManagedWindow(WId)), WM, SLOT(NewWindow(WId)) ); - connect(EFILTER, SIGNAL(WindowClosed(WId)), WM, SLOT(ClosedWindow(WId)) ); - connect(EFILTER, SIGNAL(ModifyWindow(WId, LWM::WindowAction)), WM, SLOT(ModifyWindow(WId,LWM::WindowAction)) ); - connect(SS, SIGNAL(StartingScreenSaver()), EFILTER, SLOT(StartedSS()) ); - connect(SS, SIGNAL(ClosingScreenSaver()), EFILTER, SLOT(StoppedSS()) ); - connect(WM, SIGNAL(NewFullScreenWindows(QList)), EFILTER, SLOT(FullScreenChanged(QList)) ); -} - -WMSession::~WMSession(){ -} - -void WMSession::start(bool SSONLY){ - //Get the screensaver initialized/ready - if(DEBUG){ qDebug() << "Starting Screen Saver..."; } - SS->start(); - if(SSONLY){ return; } - //Now start pulling/filtering events - if(DEBUG){ qDebug() << "Starting Window Manager..."; } - WM->start(); - if(DEBUG){ qDebug() << "Starting Event Filter..."; } - EVThread->start(); - EFILTER->start(); - if(DEBUG){ qDebug() << "Done Starting WM session..."; } -} - -// ========== -// Public Slots -// ========== -void WMSession::reloadIcons(){ - -} - -void WMSession::newInputsAvailable(QStringList inputs){ - for(int i=0; i - - -//#define DEBUG 0 -int main(int argc, char ** argv) -{ - qDebug() << "Starting lumina-wm..."; - LTHEME::LoadCustomEnvSettings(); - LSingleApplication a(argc, argv, "lumina-wm"); - if(!a.isPrimaryProcess()){ return 0; } //Inputs forwarded on to the primary already - LuminaThemeEngine themes(&a); - - //Setup the global structures - LWM::SYSTEM = new LXCB(); - if( a.inputlist.contains("--test-win") ){ - //Simple override to test out the window class - qDebug() << "Starting window test..."; - QLabel dlg(0, Qt::Window | Qt::BypassWindowManagerHint); //this test should be ignored by the current WM - dlg.setText("Sample Window"); - dlg.setWindowTitle("Test"); - dlg.resize(200,100); - dlg.setStyleSheet("background: rgba(255,255,255,100); color: black;"); - dlg.move(100,100); - dlg.show(); - //dlg.move(100,100); - qDebug() << " - Loading window frame..."; - LWindow win(dlg.winId()); //have it wrap around the dialog - qDebug() << " - Show frame..."; - win.frame()->windowChanged(LWM::Show); - qDebug() << " - Start event loop..."; - a.setQuitOnLastWindowClosed(true); - return a.exec(); - } - WMSession w; - w.start(a.inputlist.contains("--test-ss")); - QObject::connect(&themes, SIGNAL(updateIcons()), &w, SLOT(reloadIcons()) ); - QObject::connect(&a, SIGNAL(InputsAvailable(QStringList)), &w, SLOT(newInputsAvailable(QStringList)) ); - if(!a.inputlist.isEmpty()){ w.newInputsAvailable(a.inputlist); } - int retCode = a.exec(); - - return retCode; -} -- cgit From 01b8ec846504b1a13b8523048fbe8bc1171a00e4 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Mon, 26 Jun 2017 14:43:47 -0400 Subject: Tag version 1.3.1 in the source tree (no differences from 1.3.0 yet) --- src-qt5/core/libLumina/LDesktopUtils.cpp | 2 +- src-qt5/core/libLumina/NativeWindowSystem.cpp | 48 +++++++++++++-------------- src-qt5/core/libLumina/NativeWindowSystem.h | 12 +++---- 3 files changed, 31 insertions(+), 31 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/LDesktopUtils.cpp b/src-qt5/core/libLumina/LDesktopUtils.cpp index caf3c55e..4454d29b 100644 --- a/src-qt5/core/libLumina/LDesktopUtils.cpp +++ b/src-qt5/core/libLumina/LDesktopUtils.cpp @@ -16,7 +16,7 @@ static QStringList fav; QString LDesktopUtils::LuminaDesktopVersion(){ - QString ver = "1.3.0"; + QString ver = "1.3.1"; #ifdef GIT_VERSION ver.append( QString(" (Git Revision: %1)").arg(GIT_VERSION) ); #endif diff --git a/src-qt5/core/libLumina/NativeWindowSystem.cpp b/src-qt5/core/libLumina/NativeWindowSystem.cpp index 36a0b7f0..da7f4404 100644 --- a/src-qt5/core/libLumina/NativeWindowSystem.cpp +++ b/src-qt5/core/libLumina/NativeWindowSystem.cpp @@ -59,14 +59,14 @@ public: //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" + 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 reply; for(int i=0; ivisual_id); + ATOMS.value("_NET_SYSTEM_TRAY_VISUAL"), XCB_ATOM_VISUALID, 32, 1, &type->visual_id); }else{ qWarning() << " - Could not set TrueColor visual for system tray"; } - + //Finally, send out an X event letting others know that the system tray is up and running xcb_client_message_event_t event; event.response_type = XCB_CLIENT_MESSAGE; event.format = 32; event.window = root_screen->root; event.type = EWMH.MANAGER; //MANAGER atom - event.data.data32[0] = XCB_TIME_CURRENT_TIME; //CurrentTime; + event.data.data32[0] = XCB_TIME_CURRENT_TIME; //CurrentTime; event.data.data32[1] = _NET_SYSTEM_TRAY_S; //_NET_SYSTEM_TRAY_S atom event.data.data32[2] = tray_window; event.data.data32[3] = 0; @@ -255,7 +255,7 @@ void NativeWindowSystem::UpdateWindowProperties(NativeWindow* win, QList< Native if(name.isEmpty()){ //_NET_WM_VISIBLE_NAME xcb_get_property_cookie_t cookie = xcb_ewmh_get_wm_visible_name_unchecked(&obj->EWMH, win->id()); - if(cookie.sequence != 0){ + if(cookie.sequence != 0){ xcb_ewmh_get_utf8_strings_reply_t data; if( 1 == xcb_ewmh_get_wm_visible_name_reply(&obj->EWMH, cookie, &data, NULL) ){ name = QString::fromUtf8(data.strings, data.strings_len); @@ -288,7 +288,7 @@ void NativeWindowSystem::UpdateWindowProperties(NativeWindow* win, QList< Native if(name.isEmpty()){ //_NET_WM_VISIBLE_ICON_NAME xcb_get_property_cookie_t cookie = xcb_ewmh_get_wm_visible_icon_name_unchecked(&obj->EWMH, win->id()); - if(cookie.sequence != 0){ + if(cookie.sequence != 0){ xcb_ewmh_get_utf8_strings_reply_t data; if( 1 == xcb_ewmh_get_wm_visible_icon_name_reply(&obj->EWMH, cookie, &data, NULL) ){ name = QString::fromUtf8(data.strings, data.strings_len); @@ -337,7 +337,7 @@ void NativeWindowSystem::UpdateWindowProperties(NativeWindow* win, QList< Native uint* dat = iter.data; //dat+=2; //remember the first 2 element offset for(int i=0; isetProperty(NativeWindow::Icon, icon); } //end ICON property - if(props.contains(NativeWindow::MinSize) || props.contains(NativeWindow::MaxSize) + if(props.contains(NativeWindow::MinSize) || props.contains(NativeWindow::MaxSize) || props.contains(NativeWindow::Size) || props.contains(NativeWindow::GlobalPos) ){ //Try the ICCCM "Normal Hints" structure first (newer spec?) xcb_get_property_cookie_t cookie = xcb_icccm_get_wm_normal_hints_unchecked(QX11Info::connection(), win->id()); @@ -429,7 +429,7 @@ void NativeWindowSystem::NewWindowDetected(WId id){ XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT | \ XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY | \ XCB_EVENT_MASK_ENTER_WINDOW) - + uint32_t value_list[1] = {NORMAL_WIN_EVENT_MASK}; xcb_change_window_attributes(QX11Info::connection(), id, XCB_CW_EVENT_MASK, value_list); //Now go ahead and create/populate the container for this window @@ -457,7 +457,7 @@ void NativeWindowSystem::NewTrayWindowDetected(WId id){ XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT | \ XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY | \ XCB_EVENT_MASK_ENTER_WINDOW) - + uint32_t value_list[1] = {TRAY_WIN_EVENT_MASK}; xcb_change_window_attributes(QX11Info::connection(), id, XCB_CW_EVENT_MASK, value_list); //Now go ahead and create/populate the container for this window @@ -478,7 +478,7 @@ void NativeWindowSystem::WindowCloseDetected(WId id){ if(win!=0){ TWindows.removeAll(win); win->emit WindowClosed(id); - win->deleteLater(); + win->deleteLater(); } } } @@ -515,13 +515,13 @@ void NativeWindowSystem::NewMousePress(int buttoncode, WId win){ //Convert the native button code into a Qt mouse button code Qt::MouseButton button; switch(buttoncode){ - case 1: + case 1: button = Qt::LeftButton ; break; - case 2: + case 2: button = Qt::MiddleButton ; break; - case 3: + case 3: button = Qt::RightButton ; break; - case 4: + case 4: button = Qt::LeftButton ; break; default: return; //Unhandled button @@ -534,13 +534,13 @@ void NativeWindowSystem::NewMouseRelease(int buttoncode, WId win){ //Convert the native button code into a Qt mouse button code Qt::MouseButton button; switch(buttoncode){ - case 1: + case 1: button = Qt::LeftButton ; break; - case 2: + case 2: button = Qt::MiddleButton ; break; - case 3: + case 3: button = Qt::RightButton ; break; - case 4: + case 4: button = Qt::LeftButton ; break; default: return; //Unhandled button @@ -564,7 +564,7 @@ void NativeWindowSystem::RequestPropertiesChange(WId win, QListid()){ return NWindows[i]; } + for(int i=0; iid()){ return NWindows[i]; } } return 0; } NativeWindow* findTrayWindow(WId id){ - for(int i=0; iid()){ return TWindows[i]; } + for(int i=0; iid()){ return TWindows[i]; } } return 0; } - //Now define a simple private_objects class so that each implementation + //Now define a simple private_objects class so that each implementation // has a storage container for defining/placing private objects as needed class p_objects; p_objects* obj; @@ -58,7 +58,7 @@ private: } } - // Since some properties may be easier to update in bulk + // 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); -- cgit From 79ed54ff31ed654b953d46987851ce4f572245c2 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Tue, 27 Jun 2017 08:20:14 -0400 Subject: Another large batch of re-organization for lumina-desktop-unified. This gets the new "NativeWindowSystem" and associated Native* classes all integrated (untested) --- src-qt5/core/libLumina/NativeWindow.h | 8 +- src-qt5/core/libLumina/NativeWindow.pri | 6 +- src-qt5/core/libLumina/NativeWindowSystem.cpp | 56 ++++----- src-qt5/core/libLumina/NativeWindowSystem.h | 23 +++- src-qt5/core/libLumina/RootWindow.cpp | 16 +-- src-qt5/core/libLumina/RootWindow.h | 4 +- src-qt5/core/lumina-desktop-unified/LSession.cpp | 131 +++++++++++++++------ src-qt5/core/lumina-desktop-unified/LSession.h | 5 +- .../core/lumina-desktop-unified/global-includes.h | 2 + .../core/lumina-desktop-unified/global-objects.h | 12 +- .../core/lumina-desktop-unified/lumina-desktop.pro | 1 + .../src-desktop/ContextMenu.cpp | 2 +- .../src-events/LShortcutEvents.cpp | 49 ++++---- .../src-events/LShortcutEvents.h | 8 +- .../lumina-desktop-unified/src-events/events.pri | 4 +- .../src-screensaver/LLockScreen.cpp | 24 ++-- .../src-screensaver/LScreenSaver.cpp | 16 +-- .../src-screensaver/LScreenSaver.h | 3 +- 18 files changed, 209 insertions(+), 161 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/NativeWindow.h b/src-qt5/core/libLumina/NativeWindow.h index fbdf9e1b..351462bd 100644 --- a/src-qt5/core/libLumina/NativeWindow.h +++ b/src-qt5/core/libLumina/NativeWindow.h @@ -5,8 +5,8 @@ // 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, +// 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 //=========================================== @@ -59,7 +59,7 @@ public: ~NativeWindow(); WId id(); - QWindow* window(); + QWindow* window(); QVariant property(NativeWindow::Property); void setProperty(NativeWindow::Property, QVariant); @@ -89,7 +89,7 @@ signals: void RequestClose(WId); //Close the window void RequestKill(WId); //Kill the window/app (usually from being unresponsive) void RequestPing(WId); //Verify that the window is still active (such as not closing after a request - + // System Tray Icon Embed/Unembed Requests //void RequestEmbed(WId, QWidget*); //void RequestUnEmbed(WId, QWidget*); diff --git a/src-qt5/core/libLumina/NativeWindow.pri b/src-qt5/core/libLumina/NativeWindow.pri index a5715287..b10e472c 100644 --- a/src-qt5/core/libLumina/NativeWindow.pri +++ b/src-qt5/core/libLumina/NativeWindow.pri @@ -4,9 +4,11 @@ QT *= x11extras LIBS *= -lc -lxcb -lxcb-ewmh -lxcb-icccm -lxcb-image -lxcb-composite -lxcb-damage -lxcb-util -lXdamage SOURCES *= $${PWD}/NativeWindow.cpp \ - $${PWD}/NativeWindowSystem.cpp + $${PWD}/NativeWindowSystem.cpp \ + $${PWD}/NativeEventFilter.cpp HEADERS *= $${PWD}/NativeWindow.h \ - $${PWD}/NativeWindowSystem.h + $${PWD}/NativeWindowSystem.h \ + $${PWD}/NativeEventFilter.h INCLUDEPATH *= $${PWD} diff --git a/src-qt5/core/libLumina/NativeWindowSystem.cpp b/src-qt5/core/libLumina/NativeWindowSystem.cpp index da7f4404..49839a69 100644 --- a/src-qt5/core/libLumina/NativeWindowSystem.cpp +++ b/src-qt5/core/libLumina/NativeWindowSystem.cpp @@ -175,6 +175,7 @@ public: NativeWindowSystem::NativeWindowSystem() : QObject(){ obj = 0; pingTimer = 0; + screenLocked = false; } NativeWindowSystem::~NativeWindowSystem(){ @@ -210,6 +211,8 @@ void NativeWindowSystem::stop(){ //Small simplification functions Qt::Key NativeWindowSystem::KeycodeToQt(int keycode){ + qDebug() << "Try to convert keycode to Qt::Key:" << keycode; + qDebug() << " - Not implemented yet"; return Qt::Key_unknown; } @@ -410,6 +413,10 @@ void NativeWindowSystem::RegisterVirtualRoot(WId){ } +int NativeWindowSystem::currentWorkspace(){ + return 0; +} + //NativeWindowEventFilter interactions void NativeWindowSystem::NewWindowDetected(WId id){ //Make sure this can be managed first @@ -499,54 +506,29 @@ void NativeWindowSystem::GotPong(WId id){ if(waitingForPong.isEmpty() && pingTimer!=0){ pingTimer->stop(); } } -/*void NativeWindowSystem::NewKeyPress(int keycode, WId win){ +void NativeWindowSystem::NewKeyPress(int keycode, WId win){ emit NewInputEvent(); + if(screenLocked){ return; } + emit KeyPressDetected(win, keycode); } void NativeWindowSystem::NewKeyRelease(int keycode, WId win){ emit NewInputEvent(); - //Convert the native button code into a Qt keycode - //Qt::Key key = keycode; //TODO - //emit KeyReleaseDetected( key, win); + if(screenLocked){ return; } + emit KeyReleaseDetected(win, keycode); } void NativeWindowSystem::NewMousePress(int buttoncode, WId win){ emit NewInputEvent(); - //Convert the native button code into a Qt mouse button code - Qt::MouseButton button; - switch(buttoncode){ - case 1: - button = Qt::LeftButton ; break; - case 2: - button = Qt::MiddleButton ; break; - case 3: - button = Qt::RightButton ; break; - case 4: - button = Qt::LeftButton ; break; - default: - return; //Unhandled button - } - emit MousePressDetected(button, win); + if(screenLocked){ return; } + emit MousePressDetected(win, MouseToQt(buttoncode)); } void NativeWindowSystem::NewMouseRelease(int buttoncode, WId win){ emit NewInputEvent(); - //Convert the native button code into a Qt mouse button code - Qt::MouseButton button; - switch(buttoncode){ - case 1: - button = Qt::LeftButton ; break; - case 2: - button = Qt::MiddleButton ; break; - case 3: - button = Qt::RightButton ; break; - case 4: - button = Qt::LeftButton ; break; - default: - return; //Unhandled button - } - emit MouseReleaseDetected(button, win); -}*/ + if(screenLocked){ return; } + emit MouseReleaseDetected(win, MouseToQt(buttoncode)); +} void NativeWindowSystem::CheckDamageID(WId win){ NativeWindow *WIN = findTrayWindow(win); @@ -564,7 +546,9 @@ void NativeWindowSystem::RequestPropertiesChange(WId win, QList props); + //Generic private variables + bool screenLocked; + public: enum Property{ None, CurrentWorkspace, Workspaces, VirtualRoots, WorkAreas }; enum MouseButton{NoButton, LeftButton, RightButton, MidButton, BackButton, ForwardButton, TaskButton, WheelUp, WheelDown, WheelLeft, WheelRight}; @@ -84,8 +87,16 @@ public: public slots: //These are the slots which are typically only used by the desktop system itself or the NativeWindowEventFilter + //This is called by the lock screen to keep the NWS aware of the current status + // it is **NOT** the function to call for the user to actually lock the session (that is in the screensaver/lockscreen class) + void ScreenLockChanged(bool lock){ + screenLocked = lock; + } + //RootWindow interactions void RegisterVirtualRoot(WId); + // - Workspaces + int currentWorkspace(); //void GoToWorkspace(int); //void RegisterWorkspaces(QStringList); //Names of workspaces, in ascending order //void RegisterKnownInteractions(); @@ -98,10 +109,10 @@ public slots: void WindowPropertyChanged(WId, NativeWindow::Property); //will rescan the window and update the object as needed void GotPong(WId); -/* void NewKeyPress(int keycode, WId win = 0); + void NewKeyPress(int keycode, WId win = 0); void NewKeyRelease(int keycode, WId win = 0); void NewMousePress(int buttoncode, WId win = 0); - void NewMouseRelease(int buttoncode, WId win = 0);*/ + void NewMouseRelease(int buttoncode, WId win = 0); void CheckDamageID(WId); private slots: @@ -115,10 +126,10 @@ signals: void NewWindowAvailable(NativeWindow*); void NewTrayWindowAvailable(NativeWindow*); void NewInputEvent(); //a mouse or keypress was detected (lock-state independent); - void KeyPressDetected(Qt::Key, WId); //only emitted if lockstate = false - void KeyReleaseDetected(Qt::Key, WId); //only emitted if lockstate = false - void MousePressDetected(Qt::MouseButton, WId); //only emitted if lockstate = false - void MouseReleaseDetected(Qt::MouseButton, WId); //only emitted if lockstate = false + void KeyPressDetected(WId, int); //only emitted if lockstate = false + void KeyReleaseDetected(WId, int); //only emitted if lockstate = false + void MousePressDetected(WId, NativeWindowSystem::MouseButton); //only emitted if lockstate = false + void MouseReleaseDetected(WId, NativeWindowSystem::MouseButton); //only emitted if lockstate = false }; diff --git a/src-qt5/core/libLumina/RootWindow.cpp b/src-qt5/core/libLumina/RootWindow.cpp index b1f740d3..2586ccc2 100644 --- a/src-qt5/core/libLumina/RootWindow.cpp +++ b/src-qt5/core/libLumina/RootWindow.cpp @@ -51,7 +51,7 @@ void RootWindow::updateScreenPixmap(screeninfo *info){ QPixmap raw(info->file); //load the image from file //Now apply the proper aspect ratio as needed if(info->scale == RootWindow::Stretch || info->scale == RootWindow::Full || info->scale == RootWindow::Fit){ - Qt::AspectRatioMode armode = Qt::KeepAspectRatio; + Qt::AspectRatioMode armode = Qt::KeepAspectRatio; if(info->scale == RootWindow::Stretch ){ armode = Qt::IgnoreAspectRatio; } else if(info->scale == RootWindow::Full ){ armode = Qt::KeepAspectRatioByExpanding; } if(raw.height()!=info->area.height() && raw.width() !=info->area.width()){ @@ -60,16 +60,16 @@ void RootWindow::updateScreenPixmap(screeninfo *info){ } //Now calculate offset and draw width/height QRect drawRect(0,0, raw.width(), raw.height()); - if(info->scale == RootWindow::Full ){ + if(info->scale == RootWindow::Full ){ drawRect.moveTo( (info->area.width() - raw.width())/2, (info->area.height() - raw.height())/2 ); }else if(info->scale == RootWindow::Fit ){ - drawRect.moveTo( (info->area.width() - raw.width())/2, (info->area.height() - raw.height())/2 ); + drawRect.moveTo( (info->area.width() - raw.width())/2, (info->area.height() - raw.height())/2 ); }else if(info->scale == RootWindow::Center ){ - drawRect.moveTo( (info->area.width() - raw.width())/2, (info->area.height() - raw.height())/2 ); + drawRect.moveTo( (info->area.width() - raw.width())/2, (info->area.height() - raw.height())/2 ); }else if(info->scale == RootWindow::Tile ){ //Draw the entire area - no offset drawRect.setHeight(info->area.height()); - drawRect.setWidth(info->area.width()); + drawRect.setWidth(info->area.width()); }else if(info->scale == RootWindow::BottomLeft ){ drawRect.moveTo( 0 , info->area.height() - raw.height() ); }else if(info->scale == RootWindow::BottomRight ){ @@ -138,7 +138,7 @@ void RootWindow::ResizeRoot(){ void RootWindow::ChangeWallpaper(QString id, RootWindow::ScaleType scale, QString file){ bool found = false; for(int i=0; iid() == win->id()){ subwin = WINDOWS[i]; } + if(WINDOWS[i]->id() == win->id()){ subwin = WINDOWS[i]; } } if(subwin==0){ subwin = new RootSubWindow(this, win); @@ -181,7 +181,7 @@ void RootWindow::NewWindow(NativeWindow *win){ void RootWindow::CloseWindow(WId win){ for(int i=0; iid() == win){ WINDOWS.takeAt(i)->clientClosed(); break; } + if(WINDOWS[i]->id() == win){ WINDOWS.takeAt(i)->clientClosed(); break; } } } diff --git a/src-qt5/core/libLumina/RootWindow.h b/src-qt5/core/libLumina/RootWindow.h index 0ae248b5..080c4bd1 100644 --- a/src-qt5/core/libLumina/RootWindow.h +++ b/src-qt5/core/libLumina/RootWindow.h @@ -31,7 +31,7 @@ public: RootWindow(); ~RootWindow(); - + void start(); private: @@ -49,7 +49,7 @@ private: //Window Management QList WINDOWS; - + public slots: void ResizeRoot(); void ChangeWallpaper(QString id, RootWindow::ScaleType scale, QString file); diff --git a/src-qt5/core/lumina-desktop-unified/LSession.cpp b/src-qt5/core/lumina-desktop-unified/LSession.cpp index e511d7ad..c67156c6 100644 --- a/src-qt5/core/lumina-desktop-unified/LSession.cpp +++ b/src-qt5/core/lumina-desktop-unified/LSession.cpp @@ -15,7 +15,9 @@ #endif //Initialize all the global objects to null pointers -EventFilter* Lumina::EFILTER = 0; +NativeWindowSystem* Lumina::NWS = 0; +NativeEventFilter* Lumina::NEF = 0; +//EventFilter* Lumina::EFILTER = 0; LScreenSaver* Lumina::SS = 0; DesktopSettings* Lumina::SETTINGS = 0; //Lumina::WM = 0; @@ -42,32 +44,29 @@ 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 first + Lumina::NEF = new NativeEventFilter(); + Lumina::NWS = new NativeWindowSystem(); + //Lumina::EFILTER = new EventFilter(); //Need the XCB Event filter first Lumina::SETTINGS = new DesktopSettings(); Lumina::SS = new LScreenSaver(); //Lumina::WM = new LWindowManager(); //Now put the Event Filter into it's own thread to keep things snappy Lumina::EVThread = new QThread(); - Lumina::EFILTER->moveToThread(Lumina::EVThread); + Lumina::NEF->moveToThread(Lumina::EVThread); Lumina::EVThread->start(); Lumina::ROOTWIN = new RootWindow(); Lumina::APPLIST = new XDGDesktopList(0, true); //keep this list up to date Lumina::SHORTCUTS = new LShortcutEvents(); //this can be moved to it's own thread eventually as well - //Setup the basic connections between the shortcuts class and the session itself - connect(Lumina::SHORTCUTS, SIGNAL(StartLogout()), this, SLOT(StartLogout()) ); - connect(Lumina::SHORTCUTS, SIGNAL(StartReboot()), this, SLOT(StartReboot()) ); - connect(Lumina::SHORTCUTS, SIGNAL(StartShutdown()), this, SLOT(StartShutdown()) ); - //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 + setupGlobalConnections(); + } //end check for primary process } LSession::~LSession(){ //Clean up the global objects as needed - if(Lumina::EFILTER!=0){ Lumina::EFILTER->deleteLater(); } + if(Lumina::NEF!=0){ Lumina::NEF->deleteLater(); } + if(Lumina::NWS!=0){ Lumina::NWS->deleteLater(); } + //if(Lumina::EFILTER!=0){ Lumina::EFILTER->deleteLater(); } if(Lumina::SS!=0){ Lumina::SS->deleteLater(); } if(Lumina::EVThread!=0){ if(Lumina::EVThread->isRunning()){ Lumina::EVThread->quit(); } @@ -106,35 +105,39 @@ void LSession::setupSession(){ sessionsettings->value("InitLocale/LC_COLLATE","").toString(), \ sessionsettings->value("InitLocale/LC_CTYPE","").toString() ); }*/ - if(DEBUG){ qDebug() << " - Load Localization Files:" << timer->elapsed();} - currTranslator = LUtils::LoadTranslation(this, "lumina-desktop"); + if(DEBUG){ qDebug() << " - Load Localization Files:" << timer->elapsed();} + currTranslator = LUtils::LoadTranslation(this, "lumina-desktop"); if(DEBUG){ qDebug() << " - Start Event Filter:" << timer->elapsed(); } - Lumina::EFILTER->start(); + Lumina::NEF->start(); + if( !Lumina::NWS->start() ){ + qWarning() << "Could not start the Lumina desktop. Is another desktop or window manager running?"; + this->exit(1); + return; + } //use the system settings //Setup the user's lumina settings directory as necessary splash.showScreen("user"); - if(DEBUG){ qDebug() << " - Init User Files:" << timer->elapsed();} + if(DEBUG){ qDebug() << " - Init User Files:" << timer->elapsed();} //checkUserFiles(); //adds these files to the watcher as well //Initialize the internal variables //DESKTOPS.clear(); - + //Start the background system tray splash.showScreen("systray"); - //Initialize the global menus qDebug() << " - Initialize system menus"; splash.showScreen("apps"); if(DEBUG){ qDebug() << " - Populate App List:" << timer->elapsed();} Lumina::APPLIST->updateList(); //appmenu = new AppMenu(); - + splash.showScreen("menus"); //if(DEBUG){ qDebug() << " - Init SettingsMenu:" << timer->elapsed();} //settingsmenu = new SettingsMenu(); //if(DEBUG){ qDebug() << " - Init SystemWindow:" << timer->elapsed();} //sysWindow = new SystemWindow(); - + //Initialize the desktops splash.showScreen("desktop"); if(DEBUG){ qDebug() << " - Init Desktops:" << timer->elapsed(); } @@ -180,7 +183,7 @@ void LSession::setupSession(){ QTimer::singleShot(500, this, SLOT(launchStartupApps()) ); splash.hide(); LSession::processEvents(); - splash.close(); + splash.close(); LSession::processEvents(); //DEBUG: Wait a bit then close down the session //QTimer::singleShot(15000, this, SLOT(StartLogout()) ); @@ -201,7 +204,7 @@ void LSession::CleanupSession(){ bool playaudio = Lumina::SETTINGS->value(DesktopSettings::Session,"PlayLogoutAudio",true).toBool(); if( playaudio ){ playAudioFile(LOS::LuminaShare()+"Logout.ogg"); } //Now perform any other cleanup - Lumina::EFILTER->stop(); + //Lumina::NEF->stop(); //Now wait a moment for things to close down before quitting if(playaudio){ //wait a max of 5 seconds for audio to finish @@ -219,10 +222,60 @@ void LSession::CleanupSession(){ if(QFile::exists("/tmp/.luminastopping")){ QFile::remove("/tmp/.luminastopping"); } } +//================= + +void LSession::setupGlobalConnections(){ + //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 + + //Setup the basic connections between the shortcuts class and the session itself + connect(Lumina::SHORTCUTS, SIGNAL(StartLogout()), this, SLOT(StartLogout()) ); + connect(Lumina::SHORTCUTS, SIGNAL(StartReboot()), this, SLOT(StartReboot()) ); + connect(Lumina::SHORTCUTS, SIGNAL(StartShutdown()), this, SLOT(StartShutdown()) ); + + //Root window connections + connect(Lumina::ROOTWIN, SIGNAL(RegisterVirtualRoot(WId)), Lumina::NWS, SLOT(RegisterVirtualRoot(WId)) ); + + //Native Window Class connections + connect(Lumina::NEF, SIGNAL(WindowCreated(WId)), Lumina::NWS, SLOT(NewWindowDetected(WId))); + connect(Lumina::NEF, SIGNAL(WindowDestroyed(WId)), Lumina::NWS, SLOT(WindowCloseDetected(WId))); + connect(Lumina::NEF, SIGNAL(WindowPropertyChanged(WId, NativeWindow::Property)), Lumina::NWS, SLOT(WindowPropertyChanged(WId, NativeWindow::Property))); + connect(Lumina::NEF, SIGNAL(TrayWindowCreated(WId)), Lumina::NWS, SLOT(NewTrayWindowDetected(WId))); + connect(Lumina::NEF, SIGNAL(TrayWindowDestroyed(WId)), Lumina::NWS, SLOT(WindowCloseDetected(WId))); + connect(Lumina::NEF, SIGNAL(PossibleDamageEvent(WId)), Lumina::NWS, SLOT(CheckDamageID(WId))); + connect(Lumina::NEF, SIGNAL(KeyPressed(int, WId)), Lumina::NWS, SLOT(NewKeyPress(int, WId))); + connect(Lumina::NEF, SIGNAL(KeyReleased(int, WId)), Lumina::NWS, SLOT(NewKeyRelease(int, WId))); + connect(Lumina::NEF, SIGNAL(MousePressed(int, WId)), Lumina::NWS, SLOT(NewMousePress(int, WId))); + connect(Lumina::NEF, SIGNAL(MouseReleased(int, WId)), Lumina::NWS, SLOT(NewMouseRelease(int, WId))); + //connect(Lumina::NEF, SIGNAL(MouseMovement(WId)), Lumina::NWS, SLOT()); + //connect(Lumina::NEF, SIGNAL(MouseEnterWindow(WId)), Lumina::NWS, SLOT()); + //connect(Lumina::NEF, SIGNAL(MouseLeaveWindow(WId)), Lumina::NWS, SLOT()); + + //Input Events for ScreenSaver + connect(Lumina::NEF, SIGNAL(KeyPressed(int, WId)), Lumina::SS, SLOT(newInputEvent())); + connect(Lumina::NEF, SIGNAL(KeyReleased(int, WId)), Lumina::SS, SLOT(newInputEvent())); + connect(Lumina::NEF, SIGNAL(MousePressed(int, WId)), Lumina::SS, SLOT(newInputEvent())); + connect(Lumina::NEF, SIGNAL(MouseReleased(int, WId)), Lumina::SS, SLOT(newInputEvent())); + connect(Lumina::NEF, SIGNAL(MouseMovement(WId)), Lumina::SS, SLOT(newInputEvent())); + + connect(Lumina::SS, SIGNAL(LockStatusChanged(bool)), Lumina::NWS, SLOT(ScreenLockChanged(bool)) ); + + //Mouse/Keyboard Shortcut Events (Make sure to connect to the NWS - the raw events need to be ignored sometimes) + connect(Lumina::NWS, SIGNAL(KeyPressDetected(WId, int);), this, SLOT(KeyPress(WId, int)) ); + connect(Lumina::NWS, SIGNAL(KeyReleaseDetected(WId, int)), this, SLOT(KeyRelease(WId, int)) ); + connect(Lumina::NWS, SIGNAL(MousePressDetected(WId, NativeWindowSystem::MouseButton)), this, SLOT(MousePress(WId, NativeWindowSystem::MouseButton)) ); + connect(Lumina::NWS, SIGNAL(MouseReleaseDetected(WId, NativeWindowSystem::MouseButton)), this, SLOT(MouseRelease(WId, NativeWindowSystem::MouseButton)) ); + + //NWS Events to the window system + connect(Lumina::NWS, SIGNAL(NewWindowAvailable(NativeWindow*)), Lumina::ROOTWIN, SLOT(NewWindow(NativeWindow*)) ); +} + +//================= + int LSession::VersionStringToNumber(QString version){ version = version.section("-",0,0); //trim any extra labels off the end int maj, mid, min; //major/middle/minor version numbers (..) - maj = mid = min = 0; + maj = mid = min = 0; bool ok = true; maj = version.section(".",0,0).toInt(&ok); if(ok){ mid = version.section(".",1,1).toInt(&ok); }else{ maj = 0; } @@ -233,6 +286,8 @@ int LSession::VersionStringToNumber(QString version){ return (maj*1000000 + mid*1000 + min); } +//================= + //Play System Audio void LSession::playAudioFile(QString filepath){ if( !QFile::exists(filepath) ){ return; } @@ -257,10 +312,10 @@ void LSession::NewCommunication(QStringList list){ for(int i=0; iLockScreenNow(); } - } + } } void LSession::launchStartupApps(){ @@ -275,32 +330,32 @@ void LSession::launchStartupApps(){ QProcess::startDetached("numlockx off"); } } - int tmp = LOS::ScreenBrightness(); - if(tmp>0){ + /*int tmp = LOS::ScreenBrightness(); + if(tmp>0){ LOS::setScreenBrightness( tmp ); qDebug() << " - - Screen Brightness:" << QString::number(tmp)+"%"; } //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 qDebug() << " - Loading previous settings"; tmp = LOS::audioVolume(); LOS::setAudioVolume(tmp); qDebug() << " - - Audio Volume:" << QString::number(tmp)+"%"; - + */ //Now play the login music since we are finished if(Lumina::SETTINGS->value(DesktopSettings::System,"PlayStartupAudio",true).toBool()){ //Make sure to re-set the system volume to the last-used value at outset - int vol = LOS::audioVolume(); - if(vol>=0){ LOS::setAudioVolume(vol); } + /*int vol = LOS::audioVolume(); + if(vol>=0){ LOS::setAudioVolume(vol); }*/ LSession::playAudioFile(LOS::LuminaShare()+"Login.ogg"); } qDebug() << " - Finished with startup routines"; } void LSession::checkUserFiles(){ - //internal version conversion examples: + //internal version conversion examples: // [1.0.0 -> 1000000], [1.2.3 -> 1002003], [0.6.1 -> 6001] QString OVS = Lumina::SETTINGS->value(DesktopSettings::System,"DesktopVersion","0").toString(); //Old Version String bool changed = LDesktopUtils::checkUserFiles(OVS); @@ -322,26 +377,26 @@ void LSession::StartLogout(){ void LSession::StartShutdown(bool skipupdates){ CleanupSession(); LOS::systemShutdown(skipupdates); - QCoreApplication::exit(0); + QCoreApplication::exit(0); } void LSession::StartReboot(bool skipupdates){ CleanupSession(); LOS::systemRestart(skipupdates); - QCoreApplication::exit(0); + QCoreApplication::exit(0); } void LSession::reloadIconTheme(){ //Wait a moment for things to settle before sending out the signal to the interfaces QApplication::processEvents(); QApplication::processEvents(); - emit IconThemeChanged(); + emit IconThemeChanged(); } //Temporarily change the session locale (nothing saved between sessions) void LSession::switchLocale(QString localeCode){ - currTranslator = LUtils::LoadTranslation(this, "lumina-desktop", localeCode, currTranslator); - if(currTranslator!=0 || localeCode=="en_US"){ + currTranslator = LUtils::LoadTranslation(this, "lumina-desktop", localeCode, currTranslator); + if(currTranslator!=0 || localeCode=="en_US"){ LUtils::setLocaleEnv(localeCode); //will set everything to this locale (no custom settings) } emit LocaleChanged(); diff --git a/src-qt5/core/lumina-desktop-unified/LSession.h b/src-qt5/core/lumina-desktop-unified/LSession.h index c791c66b..dd32d22a 100644 --- a/src-qt5/core/lumina-desktop-unified/LSession.h +++ b/src-qt5/core/lumina-desktop-unified/LSession.h @@ -17,7 +17,8 @@ public: private: void CleanupSession(); - + void setupGlobalConnections(); + int VersionStringToNumber(QString version); QMediaPlayer *mediaObj; void playAudioFile(QString filepath); @@ -45,7 +46,7 @@ signals: //General Signals void LocaleChanged(); void IconThemeChanged(); - + }; #endif diff --git a/src-qt5/core/lumina-desktop-unified/global-includes.h b/src-qt5/core/lumina-desktop-unified/global-includes.h index 867076db..53caf88f 100644 --- a/src-qt5/core/lumina-desktop-unified/global-includes.h +++ b/src-qt5/core/lumina-desktop-unified/global-includes.h @@ -59,6 +59,8 @@ #include #include #include +#include +#include // Standard C includes #include diff --git a/src-qt5/core/lumina-desktop-unified/global-objects.h b/src-qt5/core/lumina-desktop-unified/global-objects.h index 2f298e27..8d76772e 100644 --- a/src-qt5/core/lumina-desktop-unified/global-objects.h +++ b/src-qt5/core/lumina-desktop-unified/global-objects.h @@ -19,7 +19,7 @@ //Load the appropriate "EventFilter" class for the graphics subsystem //#ifndef USE_WAYLAND -#include "src-events/LXcbEventFilter.h" +//#include "src-events/LXcbEventFilter.h" //#endif #include "src-events/LShortcutEvents.h" @@ -30,9 +30,13 @@ #define ANIMTIME 80 //animation time in milliseconds //Global flags/structures -namespace Lumina{ +namespace Lumina{ //Data structures and objects - extern EventFilter *EFILTER; //Native Event Watcher + // -- Native Window System Objects + extern NativeWindowSystem *NWS; + extern NativeEventFilter *NEF; + + //extern EventFilter *EFILTER; //Native Event Watcher extern LShortcutEvents *SHORTCUTS; //Keyboard/mouse shortcut events extern DesktopSettings *SETTINGS; //All Settings files //ScreenSaver @@ -43,7 +47,7 @@ namespace Lumina{ //LWindowManager *WM; //Application List extern XDGDesktopList *APPLIST; - + extern QThread *EVThread; //X Event thread }; diff --git a/src-qt5/core/lumina-desktop-unified/lumina-desktop.pro b/src-qt5/core/lumina-desktop-unified/lumina-desktop.pro index 1de8308d..58c7e774 100644 --- a/src-qt5/core/lumina-desktop-unified/lumina-desktop.pro +++ b/src-qt5/core/lumina-desktop-unified/lumina-desktop.pro @@ -18,6 +18,7 @@ include(../libLumina/LuminaThemes.pri) include(../libLumina/DesktopSettings.pri) include(../libLumina/RootWindow.pri) include(../libLumina/ExternalProcess.pri) +include(../libLumina/NativeWindow.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 e363af01..6bd36ef6 100644 --- a/src-qt5/core/lumina-desktop-unified/src-desktop/ContextMenu.cpp +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/ContextMenu.cpp @@ -13,7 +13,7 @@ void DesktopContextMenu::SettingsChanged(DesktopSettings::File file){ void DesktopContextMenu::UpdateMenu(){ //Put a label at the top - unsigned int num = Lumina::EFILTER->currentWorkspace(); //LX11::GetCurrentDesktop(); + unsigned int num = Lumina::NWS->currentWorkspace(); workspaceLabel->setText( ""+QString(tr("Workspace %1")).arg(QString::number(num+1))+""); this->clear(); //clear it for refresh this->addAction(wkspaceact); diff --git a/src-qt5/core/lumina-desktop-unified/src-events/LShortcutEvents.cpp b/src-qt5/core/lumina-desktop-unified/src-events/LShortcutEvents.cpp index b09a1a5b..eb448f02 100644 --- a/src-qt5/core/lumina-desktop-unified/src-events/LShortcutEvents.cpp +++ b/src-qt5/core/lumina-desktop-unified/src-events/LShortcutEvents.cpp @@ -25,18 +25,9 @@ void LShortcutEvents::start(){ clearTimer->setSingleShot(true); connect(clearTimer, SIGNAL(timeout()), this, SLOT(clearKeys()) ); } - //Now connect this object to the global EFILTER object signals - connect(Lumina::EFILTER, SIGNAL(KeyPressed(WId, int)), this, SLOT(KeyPress(WId, int)) ); - connect(Lumina::EFILTER, SIGNAL(KeyReleased(WId, int)), this, SLOT(KeyRelease(WId, int)) ); - connect(Lumina::EFILTER, SIGNAL(MousePressed(WId, Lumina::MouseButton)), this, SLOT(MousePress(WId, Lumina::MouseButton)) ); - connect(Lumina::EFILTER, SIGNAL(MouseReleased(WId, Lumina::MouseButton)), this, SLOT(MouseRelease(WId, Lumina::MouseButton)) ); } void LShortcutEvents::stop(){ - disconnect(Lumina::EFILTER, SIGNAL(KeyPressed(WId, int)), this, SLOT(KeyPress(WId, int)) ); - disconnect(Lumina::EFILTER, SIGNAL(KeyReleased(WId, int)), this, SLOT(KeyRelease(WId, int)) ); - disconnect(Lumina::EFILTER, SIGNAL(MousePressed(WId, Lumina::MouseButton)), this, SLOT(MousePress(WId, Lumina::MouseButton)) ); - disconnect(Lumina::EFILTER, SIGNAL(MouseReleased(WId, Lumina::MouseButton)), this, SLOT(MouseRelease(WId, Lumina::MouseButton)) ); clearKeys(); } @@ -59,42 +50,42 @@ void LShortcutEvents::CheckKeySequence(WId win){ } } -void LShortcutEvents::CheckMouseSequence(WId win, Lumina::MouseButton button, bool release){ - if(release && (button == Lumina::WheelUp || button == Lumina::WheelDown || button == Lumina::WheelLeft || button == Lumina::WheelRight)){ +void LShortcutEvents::CheckMouseSequence(WId win, NativeWindowSystem::MouseButton button, bool release){ + if(release && (button == NativeWindowSystem::WheelUp || button == NativeWindowSystem::WheelDown || button == NativeWindowSystem::WheelLeft || button == NativeWindowSystem::WheelRight)){ return; //skip mouse release events for wheel actions (always come in pairs of press/release) - }else if(keylist.isEmpty() || button == Lumina::NoButton){ return; } //Never overwrite mouse clicks themselves - just combinations with key presses + }else if(keylist.isEmpty() || button == NativeWindowSystem::NoButton){ return; } //Never overwrite mouse clicks themselves - just combinations with key presses //Get the keyboard modifiers QString shortcut = keylistToString(); //Add the mouse button to the shortcut switch(button){ - case Lumina::LeftButton: + case NativeWindowSystem::LeftButton: shortcut.append("+LeftMouse"); break; - case Lumina::RightButton: + case NativeWindowSystem::RightButton: shortcut.append("+RightMouse"); break; - case Lumina::MidButton: + case NativeWindowSystem::MidButton: shortcut.append("+MiddleMouse"); break; - case Lumina::BackButton: + case NativeWindowSystem::BackButton: shortcut.append("+BackMouse"); break; - case Lumina::ForwardButton: + case NativeWindowSystem::ForwardButton: shortcut.append("+ForwardMouse"); break; - case Lumina::TaskButton: + case NativeWindowSystem::TaskButton: shortcut.append("+TaskMouse"); break; - case Lumina::WheelUp: + case NativeWindowSystem::WheelUp: shortcut.append("+WheelUp"); break; - case Lumina::WheelDown: + case NativeWindowSystem::WheelDown: shortcut.append("+WheelDown"); break; - case Lumina::WheelLeft: + case NativeWindowSystem::WheelLeft: shortcut.append("+WheelLeft"); break; - case Lumina::WheelRight: + case NativeWindowSystem::WheelRight: shortcut.append("+WheelRight"); break; default: @@ -146,7 +137,7 @@ void LShortcutEvents::evaluateShortcutAction(QString action){ // === PUBLIC SLOTS === void LShortcutEvents::KeyPress(WId window, int key){ if(window!=WIN){ keylist.clear(); WIN = window; } - if(!keylist.contains(key)){ + if(!keylist.contains(key)){ //Put it in the list in ascending order bool found = false; for(int i=0; istart(); //will "restart" if already running + clearTimer->start(); //will "restart" if already running } void LShortcutEvents::KeyRelease(WId window, int key){ if(window!=WIN){ keylist.clear(); return; } if(!evaluated){ CheckKeySequence(WIN); } //run this "before" removing the key from the list keylist.removeAll(key); - clearTimer->start(); //will "restart" if already running + clearTimer->start(); //will "restart" if already running } -void LShortcutEvents::MousePress(WId window, Lumina::MouseButton button){ +void LShortcutEvents::MousePress(WId window, NativeWindowSystem::MouseButton button){ //We do not provide shortcuts for combinations of mouse buttons - just mouse+keyboard combinations CheckMouseSequence(window, button, false); - clearTimer->start(); //will "restart" if already running + clearTimer->start(); //will "restart" if already running } -void LShortcutEvents::MouseRelease(WId window, Lumina::MouseButton button){ +void LShortcutEvents::MouseRelease(WId window, NativeWindowSystem::MouseButton button){ //We do not provide shortcuts for combinations of mouse buttons - just mouse+keyboard combinations CheckMouseSequence(window, button, true); - clearTimer->start(); //will "restart" if already running + clearTimer->start(); //will "restart" if already running } void LShortcutEvents::clearKeys(){ diff --git a/src-qt5/core/lumina-desktop-unified/src-events/LShortcutEvents.h b/src-qt5/core/lumina-desktop-unified/src-events/LShortcutEvents.h index d1c3b4e0..a8ab4b38 100644 --- a/src-qt5/core/lumina-desktop-unified/src-events/LShortcutEvents.h +++ b/src-qt5/core/lumina-desktop-unified/src-events/LShortcutEvents.h @@ -29,15 +29,15 @@ private: //Actual check functions void CheckKeySequence(WId win); - void CheckMouseSequence(WId win, Lumina::MouseButton, bool release); + void CheckMouseSequence(WId win, NativeWindowSystem::MouseButton, bool release); QString keylistToString(); void evaluateShortcutAction(QString action); public slots: void KeyPress(WId window, int key); void KeyRelease(WId window, int key); - void MousePress(WId window, Lumina::MouseButton); - void MouseRelease(WId window, Lumina::MouseButton); + void MousePress(WId window, NativeWindowSystem::MouseButton); + void MouseRelease(WId window, NativeWindowSystem::MouseButton); void clearKeys(); signals: @@ -50,7 +50,7 @@ signals: // Session Options void ChangeWorkspace(int); // +/- 1 from current void LockSession(); - + //Active Window Options void ActiveWindowMoveToWorkspace(int); //number of workspace void ActiveWindowTakeToWorkspace(int); //number of workspace diff --git a/src-qt5/core/lumina-desktop-unified/src-events/events.pri b/src-qt5/core/lumina-desktop-unified/src-events/events.pri index 9eec91ca..48d500ed 100644 --- a/src-qt5/core/lumina-desktop-unified/src-events/events.pri +++ b/src-qt5/core/lumina-desktop-unified/src-events/events.pri @@ -1,6 +1,6 @@ -SOURCES *= $${PWD}/LXcbEventFilter.cpp +#SOURCES *= $${PWD}/LXcbEventFilter.cpp -HEADERS *= $${PWD}/LXcbEventFilter.h +#HEADERS *= $${PWD}/LXcbEventFilter.h #Shortcut event files SOURCES *= $${PWD}/LShortcutEvents.cpp diff --git a/src-qt5/core/lumina-desktop-unified/src-screensaver/LLockScreen.cpp b/src-qt5/core/lumina-desktop-unified/src-screensaver/LLockScreen.cpp index cdcf2434..0ff70142 100644 --- a/src-qt5/core/lumina-desktop-unified/src-screensaver/LLockScreen.cpp +++ b/src-qt5/core/lumina-desktop-unified/src-screensaver/LLockScreen.cpp @@ -10,17 +10,15 @@ #include #define NUMTRIES 3 -//#define WAITMINS 1 #define DEBUG 1 LLockScreen::LLockScreen(QWidget *parent) : QWidget(parent), ui(new Ui::LLockScreen()){ ui->setupUi(this); waittime = new QTimer(this); - //waittime->setInterval(WAITMINS*60000); //(too many attempts in short time) waittime->setSingleShot(true); refreshtime = new QTimer(this); //timer to update the wait time display refreshtime->setInterval(6000); //6 seconds (1/10 second) - + connect(ui->tool_unlock, SIGNAL(clicked()), this, SLOT(TryUnlock()) ); connect(ui->line_password, SIGNAL(returnPressed()), this, SLOT(TryUnlock()) ); connect(ui->line_password, SIGNAL(textEdited(QString)), this, SIGNAL(InputDetected()) ); @@ -30,7 +28,7 @@ LLockScreen::LLockScreen(QWidget *parent) : QWidget(parent), ui(new Ui::LLockScr } LLockScreen::~LLockScreen(){ - + } void LLockScreen::LoadSystemDetails(){ @@ -47,7 +45,7 @@ void LLockScreen::aboutToHide(){ ui->line_password->clear(); ui->line_password->clearFocus(); if(refreshtime->isActive()){ refreshtime->stop(); } -} +} void LLockScreen::aboutToShow(){ if(!waittime->isActive()){ @@ -61,21 +59,17 @@ void LLockScreen::aboutToShow(){ UpdateLockInfo(); ui->line_password->clear(); ui->line_password->setFocus(); -} +} // ================= // PRIVATE SLOTS // ================= void LLockScreen::UpdateLockInfo(){ QString info; - /*if(triesleft>0 && triesleftisActive()){ + if(waittime->isActive()){ info = tr("Too Many Failures")+"\n"+ QString(tr("Wait %1 Minutes")).arg( QString::number(qRound(waittime->remainingTime()/6000.0)/10.0) ); }else if(attempts>0){ info.append("\n"+QString(tr("Failed Attempts: %1")).arg(QString::number(attempts)) ); } - ui->label_info->setText(info); + ui->label_info->setText(info); } void LLockScreen::TryUnlock(){ @@ -89,11 +83,11 @@ void LLockScreen::TryUnlock(){ this->setEnabled(true); }else{ triesleft--; - if(triesleft>0){ + if(triesleft>0){ this->setEnabled(true); - }else{ + }else{ waittime->setInterval( (attempts/NUMTRIES)*60000); - waittime->start(); + waittime->start(); refreshtime->start(); } ui->line_password->setFocus(); diff --git a/src-qt5/core/lumina-desktop-unified/src-screensaver/LScreenSaver.cpp b/src-qt5/core/lumina-desktop-unified/src-screensaver/LScreenSaver.cpp index 3dcbf85e..9f280a47 100644 --- a/src-qt5/core/lumina-desktop-unified/src-screensaver/LScreenSaver.cpp +++ b/src-qt5/core/lumina-desktop-unified/src-screensaver/LScreenSaver.cpp @@ -17,7 +17,7 @@ LScreenSaver::LScreenSaver() : QWidget(0,Qt::BypassWindowManagerHint | Qt::Windo locktimer->setSingleShot(true); hidetimer = new QTimer(this); hidetimer->setSingleShot(true); - + LOCKER = new LLockScreen(this); LOCKER->hide(); settings = new QSettings("lumina-desktop","lumina-screensaver",this); @@ -33,7 +33,7 @@ LScreenSaver::LScreenSaver() : QWidget(0,Qt::BypassWindowManagerHint | Qt::Windo } LScreenSaver::~LScreenSaver(){ - + } bool LScreenSaver::isLocked(){ @@ -66,7 +66,7 @@ void LScreenSaver::reloadSettings(){ hidetimer->setInterval( settings->value("hidesecs",15).toInt() * 1000 ); } -void LScreenSaver::newInputEvent(){ +void LScreenSaver::newInputEvent(){ if(updating){ return; } //in the middle of making changes which could cause an event if(DEBUG){ qDebug() << "New Input Event"; } if(SSRunning && SSLocked){ @@ -79,7 +79,6 @@ void LScreenSaver::newInputEvent(){ HideScreenSaver(); } UpdateTimers(); - } void LScreenSaver::LockScreenNow(){ @@ -119,7 +118,7 @@ void LScreenSaver::ShowScreenSaver(){ if(!this->isActiveWindow()){ this->raise(); this->show(); - this->activateWindow(); + this->activateWindow(); } for(int i=0; ishow(); @@ -149,10 +148,11 @@ void LScreenSaver::HideScreenSaver(){ if(!SSLocked){ this->hide(); emit ClosingScreenSaver(); + emit LockStatusChanged(false); } - for(int i=0; ihide(); - BASES[i]->stopPainting(); + BASES[i]->stopPainting(); } UpdateTimers(); } @@ -171,6 +171,7 @@ void LScreenSaver::LockScreen(){ if(SSLocked){ return; } if(DEBUG){ qDebug() << "Locking Screen:" << QDateTime::currentDateTime().toString(); } SSLocked = true; + emit LockStatusChanged(true); LOCKER->LoadSystemDetails(); UpdateTimers(); } @@ -178,6 +179,7 @@ void LScreenSaver::LockScreen(){ void LScreenSaver::SSFinished(){ if(DEBUG){ qDebug() << "Screensaver Finished:" << QDateTime::currentDateTime().toString(); } SSLocked = false; + emit LockStatusChanged(false); HideLockScreen(); HideScreenSaver(); } diff --git a/src-qt5/core/lumina-desktop-unified/src-screensaver/LScreenSaver.h b/src-qt5/core/lumina-desktop-unified/src-screensaver/LScreenSaver.h index d27db37e..18f12fab 100644 --- a/src-qt5/core/lumina-desktop-unified/src-screensaver/LScreenSaver.h +++ b/src-qt5/core/lumina-desktop-unified/src-screensaver/LScreenSaver.h @@ -19,7 +19,7 @@ public: ~LScreenSaver(); bool isLocked(); - + private: QTimer *starttimer, *locktimer, *hidetimer; QSettings *settings; @@ -48,6 +48,7 @@ private slots: signals: void StartingScreenSaver(); void ClosingScreenSaver(); + void LockStatusChanged(bool locked); protected: void mouseMoveEvent(QMouseEvent*){ -- cgit From 711cf23db3f3e73e82e21ecd22a7ea56aa1c18ca Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Tue, 27 Jun 2017 08:26:27 -0400 Subject: Oops - forgot to add the new NativeEventFilter files in the last commit. --- src-qt5/core/libLumina/NativeEventFilter.cpp | 316 +++++++++++++++++++++++++++ src-qt5/core/libLumina/NativeEventFilter.h | 109 +++++++++ 2 files changed, 425 insertions(+) create mode 100644 src-qt5/core/libLumina/NativeEventFilter.cpp create mode 100644 src-qt5/core/libLumina/NativeEventFilter.h (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/NativeEventFilter.cpp b/src-qt5/core/libLumina/NativeEventFilter.cpp new file mode 100644 index 00000000..cc73e222 --- /dev/null +++ b/src-qt5/core/libLumina/NativeEventFilter.cpp @@ -0,0 +1,316 @@ +//=========================================== +// Lumina-desktop source code +// Copyright (c) 2015-2017, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +#include "NativeEventFilter.h" +#include +#include + +//#include +//#include + +//================================================== +// NOTE: All the XCB interactions and atoms are accessed via: +// obj->XCB->EWMH.(atom name) +// obj->XCB->(do something) +//================================================== + +/* +List of XCB response types (since almost impossible to find good docs on XCB) +switch (xcb_generic_event_t*->response_type & ~0x80) +case values: +XCB_KEY_[PRESS | RELEASE] +XCB_BUTTON_[PRESS | RELEASE] +XCB_MOTION_NOTIFY +XCB_ENTER_NOTIFY +XCB_LEAVE_NOTIFY +XCB_FOCUS_[IN | OUT] +XCB_KEYMAP_NOTIFY +XCB_EXPOSE +XCB_GRAPHICS_EXPOSURE +XCB_VISIBILITY_NOTIFY +XCB_CREATE_NOTIFY +XCB_DESTROY_NOTIFY +XCB_UNMAP_NOTIFY +XCB_MAP_[NOTIFY | REQUEST] +XCB_REPARENT_NOTIFY +XCB_CONFIGURE_[NOTIFY | REQUEST] +XCB_GRAVITY_NOTIFY +XCB_RESIZE_REQUEST +XCB_CIRCULATE_[NOTIFY | REQUEST] +XCB_PROPERTY_NOTIFY +XCB_SELECTION_[CLEAR | REQUEST | NOTIFY] +XCB_COLORMAP_NOTIFY +XCB_CLIENT_MESSAGE +*/ + +//SYSTEM TRAY STANDARD DEFINITIONS +#define SYSTEM_TRAY_REQUEST_DOCK 0 +#define SYSTEM_TRAY_BEGIN_MESSAGE 1 +#define SYSTEM_TRAY_CANCEL_MESSAGE 2 + +#include +#include +#include + +#define DEBUG 0 + +//Special objects/variables for XCB parsing +static LXCB *XCB = new LXCB(); +static xcb_atom_t _NET_SYSTEM_TRAY_OPCODE = 0; + +inline void ParsePropertyEvent(xcb_property_notify_event_t *ev, NativeEventFilter *obj){ + //qDebug() << "Got Property Event:" << ev->window << ev->atom; + NativeWindow::Property prop = NativeWindow::None; + //Now determine which properties are getting changed, and update the native window as appropriate + if(ev->atom == XCB->EWMH._NET_WM_NAME){ prop = NativeWindow::Title; } + else if(ev->atom == XCB->EWMH._NET_WM_ICON){ prop = NativeWindow::Icon; } + else if(ev->atom == XCB->EWMH._NET_WM_ICON_NAME){ prop = NativeWindow::ShortTitle; } + else if(ev->atom == XCB->EWMH._NET_WM_DESKTOP){ prop = NativeWindow::Workspace; } + else if(ev->atom == XCB->EWMH._NET_WM_WINDOW_TYPE ){ prop = NativeWindow::WinTypes; } + else if( ev->atom == XCB->EWMH._NET_WM_STATE){ prop = NativeWindow::States; } + //Send out the signal if necessary + if(prop!=NativeWindow::None){ + obj->emit WindowPropertyChanged(ev->window, prop); + } +} + + +//Constructor for the Event Filter wrapper +NativeEventFilter::NativeEventFilter() : QObject(){ + EF = new EventFilter(this); + if(_NET_SYSTEM_TRAY_OPCODE==0){ + //_NET_SYSTEM_TRAY_OPCODE + xcb_intern_atom_cookie_t cookie = xcb_intern_atom(QX11Info::connection(), 0, 23,"_NET_SYSTEM_TRAY_OPCODE"); + xcb_intern_atom_reply_t *r = xcb_intern_atom_reply(QX11Info::connection(), cookie, NULL); + if(r){ + _NET_SYSTEM_TRAY_OPCODE = r->atom; + free(r); + } + } +} + +void NativeEventFilter::start(){ + if(DEBUG){ qDebug() << " - Install event filter..."; } + QCoreApplication::instance()->installNativeEventFilter(EF); + if(DEBUG){ qDebug() << " - Run request check..."; } + +} + +void NativeEventFilter::stop(){ + QCoreApplication::instance()->installNativeEventFilter(0); +} + +//============================= +// EventFilter Class +//============================= + +//Constructor for the XCB event filter +EventFilter::EventFilter(NativeEventFilter *parent) : QAbstractNativeEventFilter(){ + obj = parent; +} + +//This function format taken directly from the Qt5.3 documentation +bool EventFilter::nativeEventFilter(const QByteArray &eventType, void *message, long *){ + //qDebug() << "New Event"; + if(eventType=="xcb_generic_event_t"){ + //Convert to known event type (for X11 systems) + xcb_generic_event_t *ev = static_cast(message); + //Now parse the event and emit signals as necessary + switch( ev->response_type & ~0x80){ +//============================== +// INTERACTIVITY EVENTS +//============================== + case XCB_KEY_PRESS: + //This is a keyboard key press + //qDebug() << "Key Press Event" + obj->emit KeyPressed( ((xcb_key_press_event_t *) ev)->detail, ((xcb_key_press_event_t *) ev)->root ); + break; + case XCB_KEY_RELEASE: + //This is a keyboard key release + //qDebug() << "Key Release Event"; + obj->emit KeyReleased( ((xcb_key_release_event_t *) ev)->detail, ((xcb_key_release_event_t *) ev)->root ); + break; + case XCB_BUTTON_PRESS: + //This is a mouse button press + //qDebug() << "Button Press Event"; + obj->emit MousePressed( ((xcb_button_press_event_t *) ev)->detail, ((xcb_button_press_event_t *) ev)->root ); + break; + case XCB_BUTTON_RELEASE: + //This is a mouse button release + //qDebug() << "Button Release Event"; + obj->emit MouseReleased( ((xcb_button_release_event_t *) ev)->detail, ((xcb_button_release_event_t *) ev)->root ); + break; + case XCB_MOTION_NOTIFY: + //This is a mouse movement event + //qDebug() << "Motion Notify Event"; + obj->emit MouseMovement(); + break; + case XCB_ENTER_NOTIFY: + //This is a mouse movement event when mouse goes over a new window + //qDebug() << "Enter Notify Event"; + obj->emit MouseEnterWindow( ((xcb_enter_notify_event_t *) ev)->root ); + break; + case XCB_LEAVE_NOTIFY: + //This is a mouse movement event when mouse goes leaves a window + //qDebug() << "Leave Notify Event"; + obj->emit MouseLeaveWindow( ((xcb_leave_notify_event_t *) ev)->root ); + break; +//============================== + case XCB_EXPOSE: + //qDebug() << "Expose Notify Event:"; + //qDebug() << " - Given Window:" << ((xcb_property_notify_event_t*)ev)->window; + 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; iid() == ((xcb_map_notify_event_t *)ev)->window){ windows[i]->setProperty(NativeWindow::Visible, true); break; } + } + }*/ + obj->emit WindowPropertyChanged( ((xcb_map_notify_event_t *)ev)->window, NativeWindow::Visible ); + 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 WindowCreated( ((xcb_map_request_event_t *) ev)->window ); + //SetupNewWindow( ); + break; +//============================== + case XCB_CREATE_NOTIFY: + //qDebug() << "Window Create Event"; + break; +//============================== + case XCB_UNMAP_NOTIFY: + //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; iid() == ((xcb_unmap_notify_event_t *)ev)->window){ windows[i]->setProperty(NativeWindow::Visible, false); break; } + }*/ + obj->emit WindowPropertyChanged( ((xcb_map_notify_event_t *)ev)->window, NativeWindow::Visible ); + break; +//============================== + case XCB_DESTROY_NOTIFY: + //qDebug() << "Window Closed Event:" << ((xcb_destroy_notify_event_t *)ev)->window; + obj->emit WindowDestroyed( ((xcb_destroy_notify_event_t *) ev)->window ); + /*if( !rmTrayApp( ((xcb_destroy_notify_event_t *) ev)->window ) ){ + //qDebug() <<" - Non-tray window"; + for(int i=0; iid() == ((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; +//============================== + case XCB_FOCUS_IN: + //qDebug() << "Focus In Event:"; + break; +//============================== + case XCB_FOCUS_OUT: + //qDebug() << "Focus Out Event:"; + break; +//============================== + case XCB_PROPERTY_NOTIFY: + //qDebug() << "Property Notify Event:"; + ParsePropertyEvent((xcb_property_notify_event_t*)ev, obj); + break; +//============================== + case XCB_CLIENT_MESSAGE: + //qDebug() << "Client Message Event"; + //qDebug() << " - Given Window:" << ((xcb_client_message_event_t*)ev)->window; + if( ((xcb_client_message_event_t*)ev)->type == _NET_SYSTEM_TRAY_OPCODE && ((xcb_client_message_event_t*)ev)->format == 32){ + //data32[0] is timestamp, [1] is opcode, [2] is window handle + if(SYSTEM_TRAY_REQUEST_DOCK == ((xcb_client_message_event_t*)ev)->data.data32[1]){ + obj->emit TrayWindowCreated( ((xcb_client_message_event_t*)ev)->data.data32[2] ); + //addTrayApp( ((xcb_client_message_event_t*)ev)->data.data32[2] ); + } + //Ignore the System Tray messages at the moment + } + break; +//============================== + case XCB_CONFIGURE_NOTIFY: + //qDebug() << "Configure Notify Event"; + break; +//============================== + case XCB_CONFIGURE_REQUEST: + //qDebug() << "Configure Request Event"; + break; +//============================== + case XCB_SELECTION_CLEAR: + //qDebug() << "Selection Clear Event"; + break; +//============================== + case 85: //not sure what event this is - but it seems to come up very often (just hide the notice) + case 0: + case XCB_GE_GENERIC: + break; //generic event - don't do anything special + default: + //if( (ev->response_type & ~0x80)==TrayDmgID){ + obj->emit PossibleDamageEvent( ((xcb_damage_notify_event_t*)ev)->drawable ); + //checkDamageID( ((xcb_damage_notify_event_t*)ev)->drawable ); + //}else{ + qDebug() << "Default Event:" << (ev->response_type & ~0x80); + //} +//============================== + } + } + return false; + //never stop event handling (this will not impact the X events themselves - just the internal Qt application) +} + + +//========= +// PRIVATE +//========= + + +// WINDOW HANDLING FUNCTIONS +/*void EventFilter::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); +}*/ diff --git a/src-qt5/core/libLumina/NativeEventFilter.h b/src-qt5/core/libLumina/NativeEventFilter.h new file mode 100644 index 00000000..2d5fbc61 --- /dev/null +++ b/src-qt5/core/libLumina/NativeEventFilter.h @@ -0,0 +1,109 @@ +//=========================================== +// Lumina-DE source code +// Copyright (c) 2012-2017, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +// This class provides the XCB event handling/registrations that are needed +//=========================================== +#ifndef _LUMINA_DESKTOP_NATIVE_EVENT_FILTER_H +#define _LUMINA_DESKTOP_NATIVE_EVENT_FILTER_H + +#include +#include +#include + +#include "NativeWindow.h" + + +class NativeEventFilter : public QObject{ + Q_OBJECT +private: + QAbstractNativeEventFilter* EF; + WId WMFlag; //used to flag a running WM process + +public: + NativeEventFilter(); + ~NativeEventFilter(){} + + void start(); + void stop(); + +signals: + //Window Signals + void WindowCreated(WId); + void WindowDestroyed(WId); + void WindowPropertyChanged(WId, NativeWindow::Property); + + //System Tray Signals + void TrayWindowCreated(WId); + void TrayWindowDestroyed(WId); + + //Miscellaneos Signals + void PossibleDamageEvent(WId); + + //Input Event Signals + void KeyPressed(int, WId); + void KeyReleased(int, WId); + void MousePressed(int, WId); + void MouseReleased(int, WId); + void MouseMovement(); + void MouseEnterWindow(WId); + void MouseLeaveWindow(WId); +}; + +class EventFilter : public QAbstractNativeEventFilter{ +public: + EventFilter(NativeEventFilter *parent); + ~EventFilter(){} + + virtual bool nativeEventFilter(const QByteArray &eventType, void *message, long *); + + //System Tray Functions + //QList trayApps(); //return the list of all current tray apps + //bool startSystemTray(); + //bool stopSystemTray(); + + //Window List Functions + //QList windowList(); + +private: + NativeEventFilter *obj; + /*QList WinNotifyAtoms, SysNotifyAtoms; + xcb_atom_t _NET_SYSTEM_TRAY_OPCODE; + void InitAtoms(); + + bool BlockInputEvent(WId win = 0); //Checks the current state of the system to see if the event should be stopped + WId InputWindow(WId win = 0); //Checks the window ID and determines if this is an external window or returns 0 (for desktop/root windows) + Lumina::MouseButton MouseKey(int keycode); //convert the keycode into the mouse button code + + //System Tray Variables + WId SystemTrayID; + int TrayDmgID; + QList RunningTrayApps; + //System Tray functions + void addTrayApp(WId); + bool rmTrayApp(WId); //returns "true" if the tray app was found and removed + void checkDamageID(WId); + + //Window List Variables + QList windows; + QList waitingToShow; + + //Longer Event handling functions + void SetupNewWindow(xcb_map_request_event_t *ev); + + //bool ParseKeyPressEvent(); + //bool ParseKeyReleaseEvent(); + //bool ParseButtonPressEvent(); + //bool ParseButtonReleaseEvent(); + //bool ParseMotionEvent(); + void ParsePropertyEvent(xcb_property_notify_event_t *ev); + //bool ParseClientMessageEvent(); + //bool ParseDestroyEvent(); + //bool ParseConfigureEvent(); + //bool ParseKeySelectionClearEvent(); + */ +}; + +#endif -- cgit From 57e4e4d134d16d35aa0ca566534d46a59fd78ed3 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Tue, 27 Jun 2017 08:32:48 -0400 Subject: Add some debugging to the unified process --- src-qt5/core/lumina-desktop-unified/main.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-desktop-unified/main.cpp b/src-qt5/core/lumina-desktop-unified/main.cpp index 6141f1ea..50092a46 100644 --- a/src-qt5/core/lumina-desktop-unified/main.cpp +++ b/src-qt5/core/lumina-desktop-unified/main.cpp @@ -8,7 +8,7 @@ #include "global-includes.h" #include "LSession.h" -#define DEBUG 0 +#define DEBUG 1 int main(int argc, char ** argv) { @@ -29,6 +29,7 @@ int main(int argc, char ** argv) setenv("XDG_CURRENT_DESKTOP","Lumina",1); unsetenv("QT_QPA_PLATFORMTHEME"); //causes issues with Lumina themes - not many people have this by default... //Startup the session + if(DEBUG){ qDebug() << "Starting unified session"; } LSession a(argc, argv); if(!a.isPrimaryProcess()){ return 0; } QTime *timer=0; -- cgit From 23e6d3530c092e336bd8d9cd89e4146d9e74ef43 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Tue, 27 Jun 2017 08:39:06 -0400 Subject: Some more debugging --- src-qt5/core/lumina-desktop-unified/main.cpp | 3 ++- src-qt5/core/lumina-session/session.cpp | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-desktop-unified/main.cpp b/src-qt5/core/lumina-desktop-unified/main.cpp index 50092a46..7a454eab 100644 --- a/src-qt5/core/lumina-desktop-unified/main.cpp +++ b/src-qt5/core/lumina-desktop-unified/main.cpp @@ -12,6 +12,7 @@ int main(int argc, char ** argv) { + qDebug() << "Starting lumina-desktop-unified..."; if (argc > 1) { if (QString(argv[1]) == QString("--version")){ qDebug() << LDesktopUtils::LuminaDesktopVersion(); @@ -42,6 +43,6 @@ int main(int argc, char ** argv) theme.refresh(); if(DEBUG){ qDebug() << "Exec Time:" << timer->elapsed(); delete timer;} int retCode = a.exec(); - qDebug() << "Finished Closing Down Lumina"; + qDebug() << "Finished Closing Down Unified Lumina"; return retCode; } diff --git a/src-qt5/core/lumina-session/session.cpp b/src-qt5/core/lumina-session/session.cpp index 1aa86720..de9b86ee 100644 --- a/src-qt5/core/lumina-session/session.cpp +++ b/src-qt5/core/lumina-session/session.cpp @@ -92,7 +92,7 @@ void LSession::start(bool unified){ if(WM=="fluxbox"){ // FLUXBOX BUG BYPASS: if the ~/.fluxbox dir does not exist, it will ignore the given config file if( !LUtils::isValidBinary("fluxbox") ){ - qDebug() << "[INCOMPLETE LUMINA INSTALLATION] fluxbox binary is missing - cannot continue"; + qDebug() << "[INCOMPLETE LUMINA INSTALLATION] fluxbox binary is missing - cannot continue"; }else{ QString confDir = QString( getenv("XDG_CONFIG_HOME"))+"/lumina-desktop"; if(!QFile::exists(confDir)){ QDir dir(confDir); dir.mkpath(confDir); } -- cgit From 6444a12d81b3a2539e9c86dc4fe2117fbe49489e Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Tue, 27 Jun 2017 09:37:10 -0400 Subject: Fix a bug in the initialization routine of NativeEventFilter --- src-qt5/core/libLumina/NativeEventFilter.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/NativeEventFilter.cpp b/src-qt5/core/libLumina/NativeEventFilter.cpp index cc73e222..537d54aa 100644 --- a/src-qt5/core/libLumina/NativeEventFilter.cpp +++ b/src-qt5/core/libLumina/NativeEventFilter.cpp @@ -58,7 +58,7 @@ XCB_CLIENT_MESSAGE #define DEBUG 0 //Special objects/variables for XCB parsing -static LXCB *XCB = new LXCB(); +static LXCB *XCB = 0; static xcb_atom_t _NET_SYSTEM_TRAY_OPCODE = 0; inline void ParsePropertyEvent(xcb_property_notify_event_t *ev, NativeEventFilter *obj){ @@ -90,6 +90,7 @@ NativeEventFilter::NativeEventFilter() : QObject(){ free(r); } } + if(XCB==0){ XCB = new LXCB(); } } void NativeEventFilter::start(){ -- cgit From 2debe98d6408ccd63d5ef8046dc2972b8e4f8eee Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Tue, 27 Jun 2017 09:47:50 -0400 Subject: Fix a bunch of the signals/slots connections. They should all be hooked up now. --- src-qt5/core/lumina-desktop-unified/LSession.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-desktop-unified/LSession.cpp b/src-qt5/core/lumina-desktop-unified/LSession.cpp index c67156c6..3226fa82 100644 --- a/src-qt5/core/lumina-desktop-unified/LSession.cpp +++ b/src-qt5/core/lumina-desktop-unified/LSession.cpp @@ -256,15 +256,15 @@ void LSession::setupGlobalConnections(){ connect(Lumina::NEF, SIGNAL(KeyReleased(int, WId)), Lumina::SS, SLOT(newInputEvent())); connect(Lumina::NEF, SIGNAL(MousePressed(int, WId)), Lumina::SS, SLOT(newInputEvent())); connect(Lumina::NEF, SIGNAL(MouseReleased(int, WId)), Lumina::SS, SLOT(newInputEvent())); - connect(Lumina::NEF, SIGNAL(MouseMovement(WId)), Lumina::SS, SLOT(newInputEvent())); + connect(Lumina::NEF, SIGNAL(MouseMovement()), Lumina::SS, SLOT(newInputEvent())); connect(Lumina::SS, SIGNAL(LockStatusChanged(bool)), Lumina::NWS, SLOT(ScreenLockChanged(bool)) ); //Mouse/Keyboard Shortcut Events (Make sure to connect to the NWS - the raw events need to be ignored sometimes) - connect(Lumina::NWS, SIGNAL(KeyPressDetected(WId, int);), this, SLOT(KeyPress(WId, int)) ); - connect(Lumina::NWS, SIGNAL(KeyReleaseDetected(WId, int)), this, SLOT(KeyRelease(WId, int)) ); - connect(Lumina::NWS, SIGNAL(MousePressDetected(WId, NativeWindowSystem::MouseButton)), this, SLOT(MousePress(WId, NativeWindowSystem::MouseButton)) ); - connect(Lumina::NWS, SIGNAL(MouseReleaseDetected(WId, NativeWindowSystem::MouseButton)), this, SLOT(MouseRelease(WId, NativeWindowSystem::MouseButton)) ); + connect(Lumina::NWS, SIGNAL(KeyPressDetected(WId, int)), Lumina::SHORTCUTS, SLOT(KeyPress(WId, int)) ); + connect(Lumina::NWS, SIGNAL(KeyReleaseDetected(WId, int)), Lumina::SHORTCUTS, SLOT(KeyRelease(WId, int)) ); + connect(Lumina::NWS, SIGNAL(MousePressDetected(WId, NativeWindowSystem::MouseButton)), Lumina::SHORTCUTS, SLOT(MousePress(WId, NativeWindowSystem::MouseButton)) ); + connect(Lumina::NWS, SIGNAL(MouseReleaseDetected(WId, NativeWindowSystem::MouseButton)), Lumina::SHORTCUTS, SLOT(MouseRelease(WId, NativeWindowSystem::MouseButton)) ); //NWS Events to the window system connect(Lumina::NWS, SIGNAL(NewWindowAvailable(NativeWindow*)), Lumina::ROOTWIN, SLOT(NewWindow(NativeWindow*)) ); -- cgit From 3285fabf539aa136c20fba6902d3927f684b901b Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Tue, 27 Jun 2017 10:06:00 -0400 Subject: Add some more debugging. --- src-qt5/core/libLumina/RootSubWindow.cpp | 30 ++++++++++++++++-------------- src-qt5/core/libLumina/RootWindow.cpp | 3 ++- 2 files changed, 18 insertions(+), 15 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/RootSubWindow.cpp b/src-qt5/core/libLumina/RootSubWindow.cpp index 41c04ee1..d00a3a75 100644 --- a/src-qt5/core/libLumina/RootSubWindow.cpp +++ b/src-qt5/core/libLumina/RootSubWindow.cpp @@ -41,34 +41,34 @@ RootSubWindow::ModState RootSubWindow::getStateAtPoint(QPoint pt, bool setoffset //above the frame itself - need to figure out which quadrant it is in (8-directions) if(pt.y() < WIN_BORDER){ //One of the top options - if(pt.x() < WIN_BORDER){ + if(pt.x() < WIN_BORDER){ if(setoffset){ offset.setX(pt.x()); offset.setY(pt.y()); } //difference from top-left corner return ResizeTopLeft; - }else if(pt.x() > (this->width()-WIN_BORDER)){ + }else if(pt.x() > (this->width()-WIN_BORDER)){ if(setoffset){ offset.setX(this->width()-pt.x()); offset.setY(pt.y()); } //difference from top-right corner return ResizeTopRight; - }else{ + }else{ if(setoffset){ offset.setX(0); offset.setY(pt.y()); } //difference from top edge (X does not matter) - return ResizeTop; - } + return ResizeTop; + } }else if(pt.y() > (this->height()-WIN_BORDER) ){ //One of the bottom options - if(pt.x() < WIN_BORDER){ + if(pt.x() < WIN_BORDER){ if(setoffset){ offset.setX(pt.x()); offset.setY(this->height()-pt.y()); } //difference from bottom-left corner return ResizeBottomLeft; - }else if(pt.x() > (this->width()-WIN_BORDER)){ + }else if(pt.x() > (this->width()-WIN_BORDER)){ if(setoffset){ offset.setX(this->width()-pt.x()); offset.setY(this->height()-pt.y()); } //difference from bottom-right corner return ResizeBottomRight; - }else{ + }else{ if(setoffset){ offset.setX(0); offset.setY(this->height() - pt.y()); } //difference from bottom edge (X does not matter) - return ResizeBottom; - } + return ResizeBottom; + } }else{ //One of the side options - if(pt.x() < WIN_BORDER){ + if(pt.x() < WIN_BORDER){ if(setoffset){ offset.setX(pt.x()); offset.setY(0); } //difference from left edge (Y does not matter) return ResizeLeft; - }else if(pt.x() > (this->width()-WIN_BORDER) ){ + }else if(pt.x() > (this->width()-WIN_BORDER) ){ if(setoffset){ offset.setX(this->width()-pt.x()); offset.setY(0); } //difference from right edge (Y does not matter) return ResizeRight; }else{ @@ -112,7 +112,7 @@ void RootSubWindow::setMouseCursor(ModState state, bool override){ break; case ResizeTopLeft: shape = Qt::SizeFDiagCursor; - break; + break; } if(override){ QApplication::setOverrideCursor(QCursor(shape)); @@ -123,6 +123,7 @@ void RootSubWindow::setMouseCursor(ModState state, bool override){ } void RootSubWindow::initWindowFrame(){ + qDebug() << "Create RootSubWindow Frame"; mainLayout = new QVBoxLayout(this); titleBar = new QHBoxLayout(this); closeB = new QToolButton(this); @@ -139,7 +140,6 @@ void RootSubWindow::initWindowFrame(){ connect(maxB, SIGNAL(clicked()), this, SLOT(toggleMaximize()) ); connect(minB, SIGNAL(clicked()), this, SLOT(toggleMinimize()) ); //Now assemble the frame layout based on the current settings - this->setLayout(mainLayout); titleBar->addWidget(otherB); titleBar->addWidget(titleLabel); titleBar->addWidget(minB); @@ -161,6 +161,8 @@ void RootSubWindow::initWindowFrame(){ mainLayout->setSpacing(0); titleBar->setSpacing(1); titleBar->setContentsMargins(0,0,0,0); + this->setLayout(mainLayout); + qDebug() << " - Done"; } void RootSubWindow::LoadProperties( QList< NativeWindow::Property> list){ diff --git a/src-qt5/core/libLumina/RootWindow.cpp b/src-qt5/core/libLumina/RootWindow.cpp index 2586ccc2..f7b73eac 100644 --- a/src-qt5/core/libLumina/RootWindow.cpp +++ b/src-qt5/core/libLumina/RootWindow.cpp @@ -168,6 +168,7 @@ void RootWindow::ChangeWallpaper(QString id, RootWindow::ScaleType scale, QStrin void RootWindow::NewWindow(NativeWindow *win){ RootSubWindow *subwin = 0; + qDebug() << "Got New Window:" << win->property(NativeWindow::Title); for(int i=0; iid() == win->id()){ subwin = WINDOWS[i]; } } @@ -176,7 +177,7 @@ void RootWindow::NewWindow(NativeWindow *win){ connect(win, SIGNAL(WindowClosed(WId)), this, SLOT(CloseWindow(WId)) ); WINDOWS << subwin; } - //subwin->show(); + subwin->show(); } void RootWindow::CloseWindow(WId win){ -- cgit From 91c9e6f4c7b5aad491d5f8fdd892e038b2cd9656 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Tue, 27 Jun 2017 10:21:41 -0400 Subject: Start working on the RootSubWindow interactions. --- src-qt5/core/libLumina/NativeWindowSystem.cpp | 5 +++-- src-qt5/core/libLumina/RootSubWindow.cpp | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/NativeWindowSystem.cpp b/src-qt5/core/libLumina/NativeWindowSystem.cpp index 49839a69..d25d441f 100644 --- a/src-qt5/core/libLumina/NativeWindowSystem.cpp +++ b/src-qt5/core/libLumina/NativeWindowSystem.cpp @@ -408,7 +408,7 @@ void NativeWindowSystem::UpdateWindowProperties(NativeWindow* win, QList< Native // === PUBLIC SLOTS === -//These are the slots which are only used by the desktop system itself or the NativeWindowEventFilter +//These are the slots which are only used by the desktop system itself or the NativeEventFilter void NativeWindowSystem::RegisterVirtualRoot(WId){ } @@ -476,6 +476,7 @@ void NativeWindowSystem::NewTrayWindowDetected(WId id){ void NativeWindowSystem::WindowCloseDetected(WId id){ NativeWindow *win = findWindow(id); + qDebug() << "Got Window Closed" << id << win; if(win!=0){ NWindows.removeAll(win); win->emit WindowClosed(id); @@ -491,7 +492,7 @@ void NativeWindowSystem::WindowCloseDetected(WId id){ } void NativeWindowSystem::WindowPropertyChanged(WId id, NativeWindow::Property prop){ - //NOTE: This is triggered by the NativeWindowEventFilter - not by changes to the NativeWindow objects themselves + //NOTE: This is triggered by the NativeEventFilter - not by changes to the NativeWindow objects themselves NativeWindow *win = findWindow(id); if(win==0){ win = findTrayWindow(id); } if(win!=0){ diff --git a/src-qt5/core/libLumina/RootSubWindow.cpp b/src-qt5/core/libLumina/RootSubWindow.cpp index d00a3a75..3c8e5b97 100644 --- a/src-qt5/core/libLumina/RootSubWindow.cpp +++ b/src-qt5/core/libLumina/RootSubWindow.cpp @@ -155,7 +155,7 @@ void RootSubWindow::initWindowFrame(){ maxB->setObjectName("Button_Maximize"); otherM->setObjectName("Menu_Actions"); titleLabel->setObjectName("Label_Title"); - this->setStyleSheet("QWidget#WindowFrame{background-color: darkblue;} QWidget#Label_Title{background-color: transparent; color: white; }"); + this->setStyleSheet("QWidget#WindowFrame{background-color: rgba(0,0,0,125);} QWidget#Label_Title{background-color: transparent; color: white; }"); //And adjust the margins mainLayout->setContentsMargins(WIN_BORDER,WIN_BORDER,WIN_BORDER,WIN_BORDER); mainLayout->setSpacing(0); @@ -227,7 +227,7 @@ void RootSubWindow::startResizing(){ void RootSubWindow::propertiesChanged(QList props, QList vals){ for(int i=0; ishow(); } -- cgit From 42ccfd08274e4ebb8a8b8a22ec329bcf5abb6684 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Tue, 27 Jun 2017 10:48:21 -0400 Subject: Another couple minor changes - trying to track down some missing events. --- src-qt5/core/libLumina/NativeWindowSystem.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/NativeWindowSystem.h b/src-qt5/core/libLumina/NativeWindowSystem.h index eb01a460..631b8cb2 100644 --- a/src-qt5/core/libLumina/NativeWindowSystem.h +++ b/src-qt5/core/libLumina/NativeWindowSystem.h @@ -23,7 +23,9 @@ private: //Simplifications to find an already-created window object NativeWindow* findWindow(WId id){ + qDebug() << "Find Window:" << id; for(int i=0; iid(); if(id==NWindows[i]->id()){ return NWindows[i]; } } return 0; -- cgit From 5de759a52a3339741bff176d47efb9d9399d7c0d Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Tue, 27 Jun 2017 12:21:43 -0400 Subject: Commit some more debugging and changes to the event systems for Lumina2. --- src-qt5/core/libLumina/NativeEventFilter.cpp | 35 +++++----------------- src-qt5/core/libLumina/NativeWindow.cpp | 8 +++++ src-qt5/core/libLumina/NativeWindow.h | 4 +++ src-qt5/core/libLumina/NativeWindowSystem.h | 5 ++-- src-qt5/core/libLumina/RootSubWindow.cpp | 9 +++--- .../core/lumina-desktop-unified/global-includes.h | 6 +--- .../src-desktop/ContextMenu.cpp | 1 + .../src-desktop/ContextMenu.h | 2 +- 8 files changed, 30 insertions(+), 40 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/NativeEventFilter.cpp b/src-qt5/core/libLumina/NativeEventFilter.cpp index 537d54aa..4914cea3 100644 --- a/src-qt5/core/libLumina/NativeEventFilter.cpp +++ b/src-qt5/core/libLumina/NativeEventFilter.cpp @@ -146,7 +146,7 @@ bool EventFilter::nativeEventFilter(const QByteArray &eventType, void *message, break; case XCB_MOTION_NOTIFY: //This is a mouse movement event - //qDebug() << "Motion Notify Event"; + qDebug() << "Motion Notify Event"; obj->emit MouseMovement(); break; case XCB_ENTER_NOTIFY: @@ -166,47 +166,26 @@ bool EventFilter::nativeEventFilter(const QByteArray &eventType, void *message, 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; iid() == ((xcb_map_notify_event_t *)ev)->window){ windows[i]->setProperty(NativeWindow::Visible, true); break; } - } - }*/ + qDebug() << "Window Map Event:" << ((xcb_map_notify_event_t *)ev)->window; obj->emit WindowPropertyChanged( ((xcb_map_notify_event_t *)ev)->window, NativeWindow::Visible ); 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"; + qDebug() << "Window Map Request Event"; obj->emit WindowCreated( ((xcb_map_request_event_t *) ev)->window ); - //SetupNewWindow( ); break; //============================== case XCB_CREATE_NOTIFY: - //qDebug() << "Window Create Event"; + qDebug() << "Window Create Event"; break; //============================== case XCB_UNMAP_NOTIFY: - //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; iid() == ((xcb_unmap_notify_event_t *)ev)->window){ windows[i]->setProperty(NativeWindow::Visible, false); break; } - }*/ + qDebug() << "Window Unmap Event:" << ((xcb_unmap_notify_event_t *)ev)->window; obj->emit WindowPropertyChanged( ((xcb_map_notify_event_t *)ev)->window, NativeWindow::Visible ); break; //============================== case XCB_DESTROY_NOTIFY: - //qDebug() << "Window Closed Event:" << ((xcb_destroy_notify_event_t *)ev)->window; + qDebug() << "Window Closed Event:" << ((xcb_destroy_notify_event_t *)ev)->window; obj->emit WindowDestroyed( ((xcb_destroy_notify_event_t *) ev)->window ); - /*if( !rmTrayApp( ((xcb_destroy_notify_event_t *) ev)->window ) ){ - //qDebug() <<" - Non-tray window"; - for(int i=0; iid() == ((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; //============================== case XCB_FOCUS_IN: @@ -218,7 +197,7 @@ bool EventFilter::nativeEventFilter(const QByteArray &eventType, void *message, break; //============================== case XCB_PROPERTY_NOTIFY: - //qDebug() << "Property Notify Event:"; + qDebug() << "Property Notify Event:"; ParsePropertyEvent((xcb_property_notify_event_t*)ev, obj); break; //============================== diff --git a/src-qt5/core/libLumina/NativeWindow.cpp b/src-qt5/core/libLumina/NativeWindow.cpp index 97131b52..020e4596 100644 --- a/src-qt5/core/libLumina/NativeWindow.cpp +++ b/src-qt5/core/libLumina/NativeWindow.cpp @@ -17,6 +17,14 @@ NativeWindow::~NativeWindow(){ //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 } +void NativeWindow::addFrameWinID(WId fid){ + relatedTo << fid; +} + +bool NativeWindow::isRelatedTo(WId tmp){ + return (relatedTo.contains(tmp) || winid == tmp); +} + WId NativeWindow::id(){ return winid; } diff --git a/src-qt5/core/libLumina/NativeWindow.h b/src-qt5/core/libLumina/NativeWindow.h index 351462bd..a3efd234 100644 --- a/src-qt5/core/libLumina/NativeWindow.h +++ b/src-qt5/core/libLumina/NativeWindow.h @@ -58,6 +58,9 @@ public: NativeWindow(WId id); ~NativeWindow(); + void addFrameWinID(WId); + bool isRelatedTo(WId); + WId id(); QWindow* window(); @@ -76,6 +79,7 @@ private: QHash hash; QWindow *WIN; WId winid; + QList relatedTo; signals: //General Notifications diff --git a/src-qt5/core/libLumina/NativeWindowSystem.h b/src-qt5/core/libLumina/NativeWindowSystem.h index 631b8cb2..c82c70fd 100644 --- a/src-qt5/core/libLumina/NativeWindowSystem.h +++ b/src-qt5/core/libLumina/NativeWindowSystem.h @@ -14,6 +14,7 @@ #include "NativeWindow.h" #include #include +#include class NativeWindowSystem : public QObject{ Q_OBJECT @@ -26,14 +27,14 @@ private: qDebug() << "Find Window:" << id; for(int i=0; iid(); - if(id==NWindows[i]->id()){ return NWindows[i]; } + if(NWindows[i]->isRelatedTo(id)){ qDebug() << " -- Got Match!"; return NWindows[i]; } } return 0; } NativeWindow* findTrayWindow(WId id){ for(int i=0; iid()){ return TWindows[i]; } + if(TWindows[i]->isRelatedTo(id)){ return TWindows[i]; } } return 0; } diff --git a/src-qt5/core/libLumina/RootSubWindow.cpp b/src-qt5/core/libLumina/RootSubWindow.cpp index 3c8e5b97..fdb9ac76 100644 --- a/src-qt5/core/libLumina/RootSubWindow.cpp +++ b/src-qt5/core/libLumina/RootSubWindow.cpp @@ -10,7 +10,7 @@ #include #include -#define WIN_BORDER 3 +#define WIN_BORDER 5 // === PUBLIC === RootSubWindow::RootSubWindow(QWidget *root, NativeWindow *win) : QFrame(root){ @@ -24,6 +24,7 @@ RootSubWindow::RootSubWindow(QWidget *root, NativeWindow *win) : QFrame(root){ LoadProperties( NativeWindow::allProperties() ); //Hookup the signals/slots connect(WIN, SIGNAL(PropertiesChanged(QList, QList)), this, SLOT(propertiesChanged(QList, QList))); + WIN->addFrameWinID(this->winId()); } RootSubWindow::~RootSubWindow(){ @@ -123,7 +124,7 @@ void RootSubWindow::setMouseCursor(ModState state, bool override){ } void RootSubWindow::initWindowFrame(){ - qDebug() << "Create RootSubWindow Frame"; + //qDebug() << "Create RootSubWindow Frame"; mainLayout = new QVBoxLayout(this); titleBar = new QHBoxLayout(this); closeB = new QToolButton(this); @@ -161,8 +162,8 @@ void RootSubWindow::initWindowFrame(){ mainLayout->setSpacing(0); titleBar->setSpacing(1); titleBar->setContentsMargins(0,0,0,0); - this->setLayout(mainLayout); - qDebug() << " - Done"; + //this->setLayout(mainLayout); + //qDebug() << " - Done"; } void RootSubWindow::LoadProperties( QList< NativeWindow::Property> list){ diff --git a/src-qt5/core/lumina-desktop-unified/global-includes.h b/src-qt5/core/lumina-desktop-unified/global-includes.h index 53caf88f..94b1a364 100644 --- a/src-qt5/core/lumina-desktop-unified/global-includes.h +++ b/src-qt5/core/lumina-desktop-unified/global-includes.h @@ -66,10 +66,6 @@ #include //Setup any global defines (no classes or global objects: use "global-objects.h" for that) -namespace Lumina{ - //Flags/enumerations - enum WindowAction{MoveResize, Show, Hide, TryClose, Closed, WA_NONE}; - enum MouseButton{NoButton, LeftButton, RightButton, MidButton, BackButton, ForwardButton, TaskButton, WheelUp, WheelDown, WheelLeft, WheelRight}; -}; + #endif 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 6bd36ef6..0a78fb25 100644 --- a/src-qt5/core/lumina-desktop-unified/src-desktop/ContextMenu.cpp +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/ContextMenu.cpp @@ -85,6 +85,7 @@ void DesktopContextMenu::start(){ // === PRIVATE SLOTS === void DesktopContextMenu::LaunchAction(QAction *act){ + //qDebug() << "Launch Action Triggered:" << act->whatsThis(); if(act->whatsThis().isEmpty() || act->parent()!=this ){ return; } qDebug() << "Launch Menu Action:" << act->whatsThis(); QString cmd = act->whatsThis(); 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 8b0509fb..1e3165ec 100644 --- a/src-qt5/core/lumina-desktop-unified/src-desktop/ContextMenu.h +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/ContextMenu.h @@ -19,7 +19,7 @@ private: QLabel *workspaceLabel; QWidgetAction *wkspaceact; -public: +public: DesktopContextMenu(QWidget *parent = 0); ~DesktopContextMenu(); -- cgit From 4caf7b5e15bf8989b26091cd6981215bb0cfa8fd Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Tue, 27 Jun 2017 13:04:18 -0400 Subject: Add a ton of the root-window registration routines to the NativeWindowSystem class. --- src-qt5/core/libLumina/LuminaX11.cpp | 6 +- src-qt5/core/libLumina/NativeWindowSystem.cpp | 110 ++++++++++++++++++++++++-- src-qt5/core/libLumina/NativeWindowSystem.h | 12 ++- 3 files changed, 117 insertions(+), 11 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/LuminaX11.cpp b/src-qt5/core/libLumina/LuminaX11.cpp index ab6cd880..3bd248b6 100644 --- a/src-qt5/core/libLumina/LuminaX11.cpp +++ b/src-qt5/core/libLumina/LuminaX11.cpp @@ -1514,7 +1514,7 @@ void LXCB::WM_Set_Client_List(QList list, bool stacking){ xcb_ewmh_set_client_list_stacking(&EWMH, QX11Info::appScreen(), list.length(), array); }else{ xcb_ewmh_set_client_list(&EWMH, QX11Info::appScreen(), list.length(), array); - } + } } @@ -1528,7 +1528,7 @@ unsigned int LXCB::WM_Get_Number_Desktops(){ } void LXCB::WM_SetNumber_Desktops(unsigned int number){ - //NOTE: number should be at least 1 + //NOTE: number should be at least 1 xcb_ewmh_set_number_of_desktops(&EWMH, QX11Info::appScreen(), number); } @@ -1555,7 +1555,7 @@ QList LXCB::WM_Get_Desktop_Viewport(){ out << QPoint( reply.desktop_viewport[i].x, reply.desktop_viewport[i].y ); } xcb_ewmh_get_desktop_viewport_reply_wipe(&reply); //clean up the reply structure first - } + } return out; } diff --git a/src-qt5/core/libLumina/NativeWindowSystem.cpp b/src-qt5/core/libLumina/NativeWindowSystem.cpp index d25d441f..4b9c9e62 100644 --- a/src-qt5/core/libLumina/NativeWindowSystem.cpp +++ b/src-qt5/core/libLumina/NativeWindowSystem.cpp @@ -98,7 +98,7 @@ public: 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; } + if(status!=0){ return false; } return true; } @@ -201,7 +201,10 @@ bool NativeWindowSystem::start(){ if( !obj->init_ATOMS() ){ return false; } } //Done with private object init bool ok = obj->register_wm(); - if(ok){ ok = obj->start_system_tray(); } + if(ok){ + setRoot_supportedActions(); + ok = obj->start_system_tray(); + } return ok; } @@ -408,13 +411,110 @@ void NativeWindowSystem::UpdateWindowProperties(NativeWindow* win, QList< Native // === PUBLIC SLOTS === -//These are the slots which are only used by the desktop system itself or the NativeEventFilter -void NativeWindowSystem::RegisterVirtualRoot(WId){ +//These are the slots which are typically only used by the desktop system itself or the NativeEventFilter +void NativeWindowSystem::RegisterVirtualRoot(WId id){ + //Convert to XCB array + xcb_window_t array[1]; + array[0] = id; + //Set the property + xcb_ewmh_set_virtual_roots(&obj->EWMH, QX11Info::appScreen(), 1, array); +} + +void NativeWindowSystem::setRoot_supportedActions(){ +//NET_WM standards (ICCCM implied - no standard way to list those) + xcb_atom_t list[] = {obj->EWMH._NET_WM_NAME, + obj->EWMH._NET_WM_ICON, + obj->EWMH._NET_WM_ICON_NAME, + obj->EWMH._NET_WM_DESKTOP, + /*_NET_WINDOW_TYPE (and all the various types)*/ + obj->EWMH._NET_WM_WINDOW_TYPE, obj->EWMH._NET_WM_WINDOW_TYPE_DESKTOP, obj->EWMH._NET_WM_WINDOW_TYPE_DOCK, + obj->EWMH._NET_WM_WINDOW_TYPE_TOOLBAR, obj->EWMH._NET_WM_WINDOW_TYPE_MENU, obj->EWMH._NET_WM_WINDOW_TYPE_UTILITY, + obj->EWMH._NET_WM_WINDOW_TYPE_SPLASH, obj->EWMH._NET_WM_WINDOW_TYPE_DIALOG, obj->EWMH._NET_WM_WINDOW_TYPE_NORMAL, + obj->EWMH._NET_WM_WINDOW_TYPE_DROPDOWN_MENU, obj->EWMH._NET_WM_WINDOW_TYPE_POPUP_MENU, obj->EWMH._NET_WM_WINDOW_TYPE_TOOLTIP, + obj->EWMH._NET_WM_WINDOW_TYPE_NOTIFICATION, obj->EWMH._NET_WM_WINDOW_TYPE_COMBO, obj->EWMH._NET_WM_WINDOW_TYPE_DND, + }; + xcb_ewmh_set_supported(&obj->EWMH, QX11Info::appScreen(), 0,list); +} + +void NativeWindowSystem::setRoot_numberOfWorkspaces(QStringList names){ + if(names.isEmpty()){ names << "one"; } + //First set the overall number of workspaces + xcb_ewmh_set_number_of_desktops(&obj->EWMH, QX11Info::appScreen(), names.length()); + //Now set the names for the workspaces + //EWMH LIBRARY BROKEN - appears to be a mismatch in the function header (looking for a single char array, instead of a list of char arrays) + // Ken Moore - 6/27/17 + /* + char *array[ names.length() ]; + for(int i=0; iEWMH, QX11Info::appScreen(), names.length(), array); + */ +} + +void NativeWindowSystem::setRoot_currentWorkspace(int num){ + xcb_ewmh_set_current_desktop(&obj->EWMH, QX11Info::appScreen(), num); +} + +void NativeWindowSystem::setRoot_clientList(QList list, bool stackorder){ + //convert the QList into a generic array + xcb_window_t array[list.length()]; + for(int i=0; iEWMH, QX11Info::appScreen(), list.length(), array); + }else{ + xcb_ewmh_set_client_list(&obj->EWMH, QX11Info::appScreen(), list.length(), array); + } +} + +void NativeWindowSystem::setRoot_desktopGeometry(QRect geom){ + //This one is a combo function + // This will set the "DESKTOP_VIEWPORT" property (point) + // as well as the "DESKTOP_GEOMETRY" property (size) + //Turn the QList into xcb_ewmh_coordinates_t* + xcb_ewmh_coordinates_t array[1]; + array[0].x=geom.x(); array[0].y=geom.y(); + //Now set the property + xcb_ewmh_set_desktop_viewport(&obj->EWMH, QX11Info::appScreen(), 1, array); + xcb_ewmh_set_desktop_geometry(&obj->EWMH, QX11Info::appScreen(), geom.width(), geom.height()); +} +void NativeWindowSystem::setRoot_desktopWorkarea(QList list){ + //Convert to the XCB/EWMH data structures + xcb_ewmh_geometry_t array[list.length()]; + for(int i=0; iEWMH, QX11Info::appScreen(), list.length(), array); +} + +void NativeWindowSystem::setRoot_activeWindow(WId win){ + xcb_ewmh_set_active_window(&obj->EWMH, QX11Info::appScreen(), win); + //Also send the active window a message to take input focus + //Send the window a WM_TAKE_FOCUS message + xcb_client_message_event_t event; + event.response_type = XCB_CLIENT_MESSAGE; + event.format = 32; + event.window = win; + event.type = obj->ATOMS["WM_PROTOCOLS"]; + event.data.data32[0] = obj->ATOMS["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()); } int NativeWindowSystem::currentWorkspace(){ - return 0; + xcb_get_property_cookie_t cookie = xcb_ewmh_get_current_desktop_unchecked(&obj->EWMH, QX11Info::appScreen()); + uint32_t num = 0; + if(1==xcb_ewmh_get_current_desktop_reply(&obj->EWMH, cookie, &num, NULL) ){ + return num; + }else{ + return 0; + } } //NativeWindowEventFilter interactions diff --git a/src-qt5/core/libLumina/NativeWindowSystem.h b/src-qt5/core/libLumina/NativeWindowSystem.h index c82c70fd..53abd633 100644 --- a/src-qt5/core/libLumina/NativeWindowSystem.h +++ b/src-qt5/core/libLumina/NativeWindowSystem.h @@ -96,13 +96,19 @@ public slots: screenLocked = lock; } - //RootWindow interactions + //Root Window property registrations void RegisterVirtualRoot(WId); + void setRoot_supportedActions(); + void setRoot_numberOfWorkspaces(QStringList names); + void setRoot_currentWorkspace(int); + void setRoot_clientList(QList, bool stackorder = false); + void setRoot_desktopGeometry(QRect); + void setRoot_desktopWorkarea(QList); + void setRoot_activeWindow(WId); + // - Workspaces int currentWorkspace(); //void GoToWorkspace(int); - //void RegisterWorkspaces(QStringList); //Names of workspaces, in ascending order - //void RegisterKnownInteractions(); //NativeWindowEventFilter interactions -- cgit From cd5553238538bb4dc62aee43a5e1a0cd9c070e68 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Tue, 27 Jun 2017 13:18:55 -0400 Subject: Commit a bunch more root-level session changes - should be almost ready to start testing and see if windows respond to the EWMH hints. --- src-qt5/core/libLumina/LuminaX11.cpp | 7 ++---- src-qt5/core/libLumina/NativeEventFilter.cpp | 26 ++++++++++++++-------- src-qt5/core/libLumina/RootWindow.cpp | 2 +- src-qt5/core/libLumina/RootWindow.h | 2 +- src-qt5/core/lumina-desktop-unified/LSession.cpp | 3 +++ .../core/lumina-desktop-unified/lumina-desktop.pro | 2 +- 6 files changed, 25 insertions(+), 17 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/LuminaX11.cpp b/src-qt5/core/libLumina/LuminaX11.cpp index 3bd248b6..b5dd62cd 100644 --- a/src-qt5/core/libLumina/LuminaX11.cpp +++ b/src-qt5/core/libLumina/LuminaX11.cpp @@ -75,9 +75,6 @@ void LXCB::createWMAtoms(){ i--; } } - - - } // === WindowList() === @@ -91,13 +88,13 @@ QList LXCB::WindowList(bool rawlist){ if( 1 == xcb_ewmh_get_client_list_reply( &EWMH, cookie, &winlist, NULL) ){ //qDebug() << " - Loop over items"; unsigned int wkspace = CurrentWorkspace(); - for(unsigned int i=0; i +//#include +#include +#include #include #include #define DEBUG 0 //Special objects/variables for XCB parsing -static LXCB *XCB = 0; +static xcb_ewmh_connection_t EWMH; +//static LXCB *XCB = 0; static xcb_atom_t _NET_SYSTEM_TRAY_OPCODE = 0; inline void ParsePropertyEvent(xcb_property_notify_event_t *ev, NativeEventFilter *obj){ //qDebug() << "Got Property Event:" << ev->window << ev->atom; NativeWindow::Property prop = NativeWindow::None; //Now determine which properties are getting changed, and update the native window as appropriate - if(ev->atom == XCB->EWMH._NET_WM_NAME){ prop = NativeWindow::Title; } - else if(ev->atom == XCB->EWMH._NET_WM_ICON){ prop = NativeWindow::Icon; } - else if(ev->atom == XCB->EWMH._NET_WM_ICON_NAME){ prop = NativeWindow::ShortTitle; } - else if(ev->atom == XCB->EWMH._NET_WM_DESKTOP){ prop = NativeWindow::Workspace; } - else if(ev->atom == XCB->EWMH._NET_WM_WINDOW_TYPE ){ prop = NativeWindow::WinTypes; } - else if( ev->atom == XCB->EWMH._NET_WM_STATE){ prop = NativeWindow::States; } + if(ev->atom == EWMH._NET_WM_NAME){ prop = NativeWindow::Title; } + else if(ev->atom == EWMH._NET_WM_ICON){ prop = NativeWindow::Icon; } + else if(ev->atom == EWMH._NET_WM_ICON_NAME){ prop = NativeWindow::ShortTitle; } + else if(ev->atom == EWMH._NET_WM_DESKTOP){ prop = NativeWindow::Workspace; } + else if(ev->atom == EWMH._NET_WM_WINDOW_TYPE ){ prop = NativeWindow::WinTypes; } + else if( ev->atom == EWMH._NET_WM_STATE){ prop = NativeWindow::States; } //Send out the signal if necessary if(prop!=NativeWindow::None){ obj->emit WindowPropertyChanged(ev->window, prop); @@ -81,6 +84,12 @@ inline void ParsePropertyEvent(xcb_property_notify_event_t *ev, NativeEventFilte //Constructor for the Event Filter wrapper NativeEventFilter::NativeEventFilter() : QObject(){ EF = new EventFilter(this); + if(EWMH.nb_screens <=0){ + xcb_intern_atom_cookie_t *cookie = xcb_ewmh_init_atoms(QX11Info::connection(), &EWMH); + if(!xcb_ewmh_init_atoms_replies(&EWMH, cookie, NULL) ){ + qDebug() << "Error with XCB atom initializations"; + } + } if(_NET_SYSTEM_TRAY_OPCODE==0){ //_NET_SYSTEM_TRAY_OPCODE xcb_intern_atom_cookie_t cookie = xcb_intern_atom(QX11Info::connection(), 0, 23,"_NET_SYSTEM_TRAY_OPCODE"); @@ -90,7 +99,6 @@ NativeEventFilter::NativeEventFilter() : QObject(){ free(r); } } - if(XCB==0){ XCB = new LXCB(); } } void NativeEventFilter::start(){ diff --git a/src-qt5/core/libLumina/RootWindow.cpp b/src-qt5/core/libLumina/RootWindow.cpp index f7b73eac..65fb6083 100644 --- a/src-qt5/core/libLumina/RootWindow.cpp +++ b/src-qt5/core/libLumina/RootWindow.cpp @@ -130,7 +130,7 @@ void RootWindow::ResizeRoot(){ //Trigger a repaint and send out any signals this->setGeometry(fullscreen); this->update(); - emit RootResized(); + emit RootResized(fullscreen); if(!valid.isEmpty()){ emit NewScreens(valid); } if(!invalid.isEmpty()){ emit RemovedScreens(invalid); } } diff --git a/src-qt5/core/libLumina/RootWindow.h b/src-qt5/core/libLumina/RootWindow.h index 080c4bd1..a7792752 100644 --- a/src-qt5/core/libLumina/RootWindow.h +++ b/src-qt5/core/libLumina/RootWindow.h @@ -65,7 +65,7 @@ protected: signals: void RegisterVirtualRoot(WId); - void RootResized(); + void RootResized(QRect); void NewScreens(QStringList); // [screen_id_1, screen_id_2, etc..] void RemovedScreens(QStringList); // [screen_id_1, screen_id_2, etc..] diff --git a/src-qt5/core/lumina-desktop-unified/LSession.cpp b/src-qt5/core/lumina-desktop-unified/LSession.cpp index 3226fa82..c0a0ac7d 100644 --- a/src-qt5/core/lumina-desktop-unified/LSession.cpp +++ b/src-qt5/core/lumina-desktop-unified/LSession.cpp @@ -147,6 +147,8 @@ void LSession::setupSession(){ Lumina::ROOTWIN->ChangeWallpaper(scrns[i]->name(), RootWindow::Stretch, LOS::LuminaShare()+"desktop-background.jpg"); } Lumina::ROOTWIN->start(); + Lumina::NWS->setRoot_numberOfWorkspaces(QStringList() << "one" << "two"); + DesktopContextMenu *cmenu = new DesktopContextMenu(Lumina::ROOTWIN); connect(cmenu, SIGNAL(showLeaveDialog()), this, SLOT(StartLogout()) ); cmenu->start(); @@ -235,6 +237,7 @@ void LSession::setupGlobalConnections(){ //Root window connections connect(Lumina::ROOTWIN, SIGNAL(RegisterVirtualRoot(WId)), Lumina::NWS, SLOT(RegisterVirtualRoot(WId)) ); + connect(Lumina::ROOTWIN, SIGNAL(RootResized(QRect)), Lumina::NWS, SLOT(setRoot_desktopGeometry(QRect)) ); //Native Window Class connections connect(Lumina::NEF, SIGNAL(WindowCreated(WId)), Lumina::NWS, SLOT(NewWindowDetected(WId))); diff --git a/src-qt5/core/lumina-desktop-unified/lumina-desktop.pro b/src-qt5/core/lumina-desktop-unified/lumina-desktop.pro index 58c7e774..a4e9867b 100644 --- a/src-qt5/core/lumina-desktop-unified/lumina-desktop.pro +++ b/src-qt5/core/lumina-desktop-unified/lumina-desktop.pro @@ -12,7 +12,7 @@ target.path = $${L_BINDIR} include(../libLumina/ResizeMenu.pri) include(../libLumina/LDesktopUtils.pri) #includes LUtils and LOS include(../libLumina/LuminaXDG.pri) -include(../libLumina/LuminaX11.pri) +#include(../libLumina/LuminaX11.pri) include(../libLumina/LuminaSingleApplication.pri) include(../libLumina/LuminaThemes.pri) include(../libLumina/DesktopSettings.pri) -- cgit From 48f91b4a3892f8431021e10454cebca33430bb3e Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Tue, 27 Jun 2017 13:27:51 -0400 Subject: Oops - make sure we initialize the EWMH class before using it. --- src-qt5/core/libLumina/NativeWindowSystem.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/NativeWindowSystem.cpp b/src-qt5/core/libLumina/NativeWindowSystem.cpp index 4b9c9e62..5e119baf 100644 --- a/src-qt5/core/libLumina/NativeWindowSystem.cpp +++ b/src-qt5/core/libLumina/NativeWindowSystem.cpp @@ -58,6 +58,12 @@ public: //Functions for setting up these objects as needed bool init_ATOMS(){ + xcb_intern_atom_cookie_t *cookie = xcb_ewmh_init_atoms(QX11Info::connection(), &EWMH); + if(!xcb_ewmh_init_atoms_replies(&EWMH, cookie, NULL) ){ + qDebug() << "Error with XCB atom initializations"; + return false; + } + QStringList atoms; atoms << "WM_TAKE_FOCUS" << "WM_DELETE_WINDOW" << "WM_PROTOCOLS" << "WM_CHANGE_STATE" << "_NET_SYSTEM_TRAY_OPCODE" << "_NET_SYSTEM_TRAY_ORIENTATION" @@ -98,7 +104,7 @@ public: 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; } + if(status!=0){ return false; } return true; } @@ -204,6 +210,8 @@ bool NativeWindowSystem::start(){ if(ok){ setRoot_supportedActions(); ok = obj->start_system_tray(); + }else{ + qWarning() << "Could not register the WM"; } return ok; } -- cgit From ee425989c2c2519d803a416aa0030e9e488bf70b Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Tue, 27 Jun 2017 13:48:55 -0400 Subject: Cleanup a bit more of the root level property setting. Now things seem to be properly getting registered for the session. --- src-qt5/core/libLumina/NativeWindowSystem.cpp | 2 +- src-qt5/core/lumina-desktop-unified/LSession.cpp | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/NativeWindowSystem.cpp b/src-qt5/core/libLumina/NativeWindowSystem.cpp index 5e119baf..13d6221c 100644 --- a/src-qt5/core/libLumina/NativeWindowSystem.cpp +++ b/src-qt5/core/libLumina/NativeWindowSystem.cpp @@ -441,7 +441,7 @@ void NativeWindowSystem::setRoot_supportedActions(){ obj->EWMH._NET_WM_WINDOW_TYPE_DROPDOWN_MENU, obj->EWMH._NET_WM_WINDOW_TYPE_POPUP_MENU, obj->EWMH._NET_WM_WINDOW_TYPE_TOOLTIP, obj->EWMH._NET_WM_WINDOW_TYPE_NOTIFICATION, obj->EWMH._NET_WM_WINDOW_TYPE_COMBO, obj->EWMH._NET_WM_WINDOW_TYPE_DND, }; - xcb_ewmh_set_supported(&obj->EWMH, QX11Info::appScreen(), 0,list); + xcb_ewmh_set_supported(&obj->EWMH, QX11Info::appScreen(), 19,list); } void NativeWindowSystem::setRoot_numberOfWorkspaces(QStringList names){ diff --git a/src-qt5/core/lumina-desktop-unified/LSession.cpp b/src-qt5/core/lumina-desktop-unified/LSession.cpp index c0a0ac7d..ab117df0 100644 --- a/src-qt5/core/lumina-desktop-unified/LSession.cpp +++ b/src-qt5/core/lumina-desktop-unified/LSession.cpp @@ -17,7 +17,6 @@ //Initialize all the global objects to null pointers NativeWindowSystem* Lumina::NWS = 0; NativeEventFilter* Lumina::NEF = 0; -//EventFilter* Lumina::EFILTER = 0; LScreenSaver* Lumina::SS = 0; DesktopSettings* Lumina::SETTINGS = 0; //Lumina::WM = 0; @@ -46,10 +45,8 @@ LSession::LSession(int &argc, char ** argv) : LSingleApplication(argc, argv, "lu //Now initialize the global objects (but do not start them yet) Lumina::NEF = new NativeEventFilter(); Lumina::NWS = new NativeWindowSystem(); - //Lumina::EFILTER = new EventFilter(); //Need the XCB Event filter first Lumina::SETTINGS = new DesktopSettings(); Lumina::SS = new LScreenSaver(); - //Lumina::WM = new LWindowManager(); //Now put the Event Filter into it's own thread to keep things snappy Lumina::EVThread = new QThread(); Lumina::NEF->moveToThread(Lumina::EVThread); @@ -148,6 +145,7 @@ void LSession::setupSession(){ } Lumina::ROOTWIN->start(); Lumina::NWS->setRoot_numberOfWorkspaces(QStringList() << "one" << "two"); + Lumina::NWS->setRoot_currentWorkspace(0); DesktopContextMenu *cmenu = new DesktopContextMenu(Lumina::ROOTWIN); connect(cmenu, SIGNAL(showLeaveDialog()), this, SLOT(StartLogout()) ); -- cgit From b02fd1721f71e3f120c2fe56d866fac5b3a796d1 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Wed, 28 Jun 2017 10:20:24 -0400 Subject: Work on making a new NativeWindow property "RelatedWindows" which is a special property used only for seeing which Window ID's are also associated with a given window. --- src-qt5/core/libLumina/NativeWindow.cpp | 8 +++++--- src-qt5/core/libLumina/NativeWindow.h | 15 ++++++++------- src-qt5/core/libLumina/NativeWindowSystem.h | 4 ++-- 3 files changed, 15 insertions(+), 12 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/NativeWindow.cpp b/src-qt5/core/libLumina/NativeWindow.cpp index 020e4596..1fcaa552 100644 --- a/src-qt5/core/libLumina/NativeWindow.cpp +++ b/src-qt5/core/libLumina/NativeWindow.cpp @@ -35,11 +35,13 @@ QWindow* NativeWindow::window(){ QVariant NativeWindow::property(NativeWindow::Property prop){ if(hash.contains(prop)){ return hash.value(prop); } + else if(prop == NativeWindow::RelatedWindows){ return QVariant::fromValue(relatedTo); } return QVariant(); //null variant } void NativeWindow::setProperty(NativeWindow::Property prop, QVariant val){ - if(prop == NativeWindow::None || hash.value(prop)==val){ return; } + if(prop == NativeWindow::RelatedWindows){ relatedTo = val.value< QList >(); } + else if(prop == NativeWindow::None || hash.value(prop)==val){ return; } hash.insert(prop, val); emit PropertiesChanged(QList() << prop, QList() << val); } @@ -54,7 +56,7 @@ void NativeWindow::setProperties(QList props, QList() << prop, QList() << val); } @@ -62,7 +64,7 @@ void NativeWindow::requestProperties(QList props, QList< //Verify/adjust inputs as needed for(int i=0; i=vals.length()){ props.removeAt(i); i--; continue; } //no corresponding value for this property - if(props[i] == NativeWindow::None || hash.value(props[i])==vals[i] ){ props.removeAt(i); vals.removeAt(i); i--; continue; } //Invalid property or identical value + if(props[i] == NativeWindow::None || props[i] == NativeWindow::RelatedWindows || hash.value(props[i])==vals[i] ){ props.removeAt(i); vals.removeAt(i); i--; continue; } //Invalid property or identical value } emit RequestPropertiesChange(winid, props, vals); } diff --git a/src-qt5/core/libLumina/NativeWindow.h b/src-qt5/core/libLumina/NativeWindow.h index a3efd234..e6e90825 100644 --- a/src-qt5/core/libLumina/NativeWindow.h +++ b/src-qt5/core/libLumina/NativeWindow.h @@ -30,9 +30,9 @@ public: enum Property{ /*QVariant Type*/ None, /*null*/ - MinSize, /*QSize*/ - MaxSize, /*QSize*/ - Size, /*QSize*/ + MinSize, /*QSize*/ + MaxSize, /*QSize*/ + Size, /*QSize*/ GlobalPos, /*QPoint*/ Title, /*QString*/ ShortTitle, /*QString*/ @@ -41,17 +41,18 @@ public: Workspace, /*int*/ States, /*QList : Current state of the window */ WinTypes, /*QList : Current type of window (typically does not change)*/ - WinActions, /*QList : Current actions that the window allows (Managed/set by the WM)*/ - FrameExtents, /*QList : [Left, Right, Top, Bottom] in pixels */ + WinActions, /*QList : Current actions that the window allows (Managed/set by the WM)*/ + FrameExtents, /*QList : [Left, Right, Top, Bottom] in pixels */ + RelatedWindows, /* QList - better to use the "isRelatedTo(WId)" function instead of reading this directly*/ Active, /*bool*/ Visible /*bool*/ }; static QList allProperties(){ - //Return all the available properties (excluding "None") + //Return all the available properties (excluding "None" and "FrameExtents" (WM control only) ) QList props; props << MinSize << MaxSize << Size << GlobalPos << Title << ShortTitle << Icon << Name << Workspace \ - << States << WinTypes << WinActions << Active << Visible; + << States << WinTypes << WinActions << RelatedWindows << Active << Visible; return props; }; diff --git a/src-qt5/core/libLumina/NativeWindowSystem.h b/src-qt5/core/libLumina/NativeWindowSystem.h index 53abd633..00841903 100644 --- a/src-qt5/core/libLumina/NativeWindowSystem.h +++ b/src-qt5/core/libLumina/NativeWindowSystem.h @@ -26,9 +26,9 @@ private: NativeWindow* findWindow(WId id){ qDebug() << "Find Window:" << id; for(int i=0; iid(); if(NWindows[i]->isRelatedTo(id)){ qDebug() << " -- Got Match!"; return NWindows[i]; } } + qDebug() << " -- Could not find Window!"; return 0; } @@ -69,7 +69,7 @@ private: bool screenLocked; public: - enum Property{ None, CurrentWorkspace, Workspaces, VirtualRoots, WorkAreas }; + //enum Property{ None, CurrentWorkspace, Workspaces, VirtualRoots, WorkAreas }; enum MouseButton{NoButton, LeftButton, RightButton, MidButton, BackButton, ForwardButton, TaskButton, WheelUp, WheelDown, WheelLeft, WheelRight}; NativeWindowSystem(); -- cgit From 431e837ead4e8fd7f7aef6b7d198dac50156c2b2 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Wed, 28 Jun 2017 17:18:57 -0400 Subject: Get a lot more of the Lumina2 window-management functionality working. --- src-qt5/core/libLumina/LuminaX11.cpp | 2 +- src-qt5/core/libLumina/NativeEventFilter.cpp | 9 +- src-qt5/core/libLumina/NativeEventFilter.h | 1 + src-qt5/core/libLumina/NativeWindow.cpp | 10 +- src-qt5/core/libLumina/NativeWindow.h | 8 +- src-qt5/core/libLumina/NativeWindowSystem.cpp | 142 +++++++++++++++++++++-- src-qt5/core/libLumina/NativeWindowSystem.h | 19 +-- src-qt5/core/libLumina/RootSubWindow.cpp | 60 ++++++++-- src-qt5/core/libLumina/RootSubWindow.h | 7 ++ src-qt5/core/libLumina/RootWindow.cpp | 4 +- src-qt5/core/lumina-desktop-unified/LSession.cpp | 1 + 11 files changed, 221 insertions(+), 42 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/LuminaX11.cpp b/src-qt5/core/libLumina/LuminaX11.cpp index b5dd62cd..86af1a00 100644 --- a/src-qt5/core/libLumina/LuminaX11.cpp +++ b/src-qt5/core/libLumina/LuminaX11.cpp @@ -497,7 +497,7 @@ QIcon LXCB::WindowIcon(WId win){ uint* dat = iter.data; //dat+=2; //remember the first 2 element offset for(int i=0; iatom == EWMH._NET_WM_STATE){ prop = NativeWindow::States; } //Send out the signal if necessary if(prop!=NativeWindow::None){ + qDebug() << "Detected Property Change:" << ev->window << prop; obj->emit WindowPropertyChanged(ev->window, prop); + }else{ + //qDebug() << "Unknown Property Change:" << ev->window << ev->atom; } } @@ -175,7 +178,7 @@ bool EventFilter::nativeEventFilter(const QByteArray &eventType, void *message, //============================== case XCB_MAP_NOTIFY: qDebug() << "Window Map Event:" << ((xcb_map_notify_event_t *)ev)->window; - obj->emit WindowPropertyChanged( ((xcb_map_notify_event_t *)ev)->window, NativeWindow::Visible ); + obj->emit WindowPropertyChanged( ((xcb_map_notify_event_t *)ev)->window, NativeWindow::Visible, true); 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"; @@ -188,7 +191,7 @@ bool EventFilter::nativeEventFilter(const QByteArray &eventType, void *message, //============================== case XCB_UNMAP_NOTIFY: qDebug() << "Window Unmap Event:" << ((xcb_unmap_notify_event_t *)ev)->window; - obj->emit WindowPropertyChanged( ((xcb_map_notify_event_t *)ev)->window, NativeWindow::Visible ); + obj->emit WindowPropertyChanged( ((xcb_map_notify_event_t *)ev)->window, NativeWindow::Visible, false); break; //============================== case XCB_DESTROY_NOTIFY: @@ -205,7 +208,7 @@ bool EventFilter::nativeEventFilter(const QByteArray &eventType, void *message, break; //============================== case XCB_PROPERTY_NOTIFY: - qDebug() << "Property Notify Event:"; + //qDebug() << "Property Notify Event:"; ParsePropertyEvent((xcb_property_notify_event_t*)ev, obj); break; //============================== diff --git a/src-qt5/core/libLumina/NativeEventFilter.h b/src-qt5/core/libLumina/NativeEventFilter.h index 2d5fbc61..2c6bfb6b 100644 --- a/src-qt5/core/libLumina/NativeEventFilter.h +++ b/src-qt5/core/libLumina/NativeEventFilter.h @@ -34,6 +34,7 @@ signals: void WindowCreated(WId); void WindowDestroyed(WId); void WindowPropertyChanged(WId, NativeWindow::Property); + void WindowPropertyChanged(WId, NativeWindow::Property, QVariant); //System Tray Signals void TrayWindowCreated(WId); diff --git a/src-qt5/core/libLumina/NativeWindow.cpp b/src-qt5/core/libLumina/NativeWindow.cpp index 1fcaa552..68610ce2 100644 --- a/src-qt5/core/libLumina/NativeWindow.cpp +++ b/src-qt5/core/libLumina/NativeWindow.cpp @@ -9,6 +9,7 @@ // === PUBLIC === NativeWindow::NativeWindow(WId id) : QObject(){ winid = id; + frameid = 0; WIN = QWindow::fromWinId(winid); } @@ -18,11 +19,11 @@ NativeWindow::~NativeWindow(){ } void NativeWindow::addFrameWinID(WId fid){ - relatedTo << fid; + frameid = fid; } bool NativeWindow::isRelatedTo(WId tmp){ - return (relatedTo.contains(tmp) || winid == tmp); + return (relatedTo.contains(tmp) || winid == tmp || frameid == tmp); } WId NativeWindow::id(){ @@ -65,6 +66,11 @@ void NativeWindow::requestProperties(QList props, QList< for(int i=0; i=vals.length()){ props.removeAt(i); i--; continue; } //no corresponding value for this property if(props[i] == NativeWindow::None || props[i] == NativeWindow::RelatedWindows || hash.value(props[i])==vals[i] ){ props.removeAt(i); vals.removeAt(i); i--; continue; } //Invalid property or identical value + if( (props[i] == NativeWindow::Visible || props[i] == NativeWindow::Active) && frameid !=0){ + //These particular properties needs to change the frame - not the window itself + emit RequestPropertiesChange(frameid, QList() << props[i], QList() << vals[i]); + props.removeAt(i); vals.removeAt(i); i--; + } } emit RequestPropertiesChange(winid, props, vals); } diff --git a/src-qt5/core/libLumina/NativeWindow.h b/src-qt5/core/libLumina/NativeWindow.h index e6e90825..a1cb7c1a 100644 --- a/src-qt5/core/libLumina/NativeWindow.h +++ b/src-qt5/core/libLumina/NativeWindow.h @@ -29,7 +29,7 @@ public: 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*/ + None=0, /*null*/ MinSize, /*QSize*/ MaxSize, /*QSize*/ Size, /*QSize*/ @@ -79,7 +79,7 @@ public slots: private: QHash hash; QWindow *WIN; - WId winid; + WId winid, frameid; QList relatedTo; signals: @@ -92,9 +92,9 @@ signals: //Action Requests (not automatically emitted - typically used to ask the WM to do something) //Note: "WId" should be the NativeWindow id() void RequestClose(WId); //Close the window - void RequestKill(WId); //Kill the window/app (usually from being unresponsive) + void RequestKill(WId); //Kill the window/app (usually from being unresponsive) void RequestPing(WId); //Verify that the window is still active (such as not closing after a request - + void RequestReparent(WId, WId, QPoint); //client window, frame window, relative origin point in frame // System Tray Icon Embed/Unembed Requests //void RequestEmbed(WId, QWidget*); //void RequestUnEmbed(WId, QWidget*); diff --git a/src-qt5/core/libLumina/NativeWindowSystem.cpp b/src-qt5/core/libLumina/NativeWindowSystem.cpp index 13d6221c..a6bcd718 100644 --- a/src-qt5/core/libLumina/NativeWindowSystem.cpp +++ b/src-qt5/core/libLumina/NativeWindowSystem.cpp @@ -87,6 +87,16 @@ public: return (ATOMS.keys().length() == atoms.length()); } + WId getTransientFor(WId win){ + xcb_get_property_cookie_t cookie = xcb_icccm_get_wm_transient_for_unchecked(QX11Info::connection(), win); + xcb_window_t trans; + if(1!= xcb_icccm_get_wm_transient_for_reply(QX11Info::connection(), cookie, &trans, NULL) ){ + return win; //error in fetching transient window ID (or none found) + }else{ + return trans; + } +} + 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)); @@ -253,6 +263,25 @@ NativeWindowSystem::MouseButton NativeWindowSystem::MouseToQt(int keycode){ } // === PRIVATE === +NativeWindow* NativeWindowSystem::findWindow(WId id){ + //qDebug() << "Find Window:" << id; + for(int i=0; iisRelatedTo(id)){ qDebug() << " -- Got Window Match!" << id; return NWindows[i]; } + } + //Check to see if this is a transient for some other window + WId tid = obj->getTransientFor(id); + if(tid!=id){ return findWindow(tid); } //call it recursively as needed + //qDebug() << " -- Could not find Window!"; + return 0; +} + +NativeWindow* NativeWindowSystem::findTrayWindow(WId id){ + for(int i=0; iisRelatedTo(id)){ return TWindows[i]; } + } + return 0; +} + void NativeWindowSystem::UpdateWindowProperties(NativeWindow* win, QList< NativeWindow::Property > props){ //Put the properties in logical groups as appropriate (some XCB calls return multiple properties) if(props.contains(NativeWindow::Title)){ @@ -285,7 +314,7 @@ void NativeWindowSystem::UpdateWindowProperties(NativeWindow* win, QList< Native xcb_icccm_get_text_property_reply_wipe(&reply); } } - win->setProperty(NativeWindow::Name, name); + win->setProperty(NativeWindow::Title, name); } //end TITLE property if(props.contains(NativeWindow::ShortTitle)){ @@ -415,8 +444,85 @@ void NativeWindowSystem::UpdateWindowProperties(NativeWindow* win, QList< Native }*/ win->setProperty(NativeWindow::Workspace, wkspace); } + + if(props.contains(NativeWindow::RelatedWindows)){ + WId orig = win->id(); + WId tid = obj->getTransientFor(orig); + QList list; + while(tid != orig){ + list << tid; + orig = tid; + tid = obj->getTransientFor(orig); + } + win->setProperty(NativeWindow::RelatedWindows, QVariant::fromValue(list)); + } + if(props.contains(NativeWindow::Visible)){ + xcb_get_window_attributes_reply_t *attr = xcb_get_window_attributes_reply(QX11Info::connection(), xcb_get_window_attributes(QX11Info::connection(), win->id()) , NULL); + if(attr != 0){ + win->setProperty(NativeWindow::Visible, attr->map_state == XCB_MAP_STATE_VIEWABLE); + free(attr); + } + } } +void NativeWindowSystem::ChangeWindowProperties(NativeWindow* win, QList< NativeWindow::Property > props, QList vals){ + qDebug() << "Change Window Properties:" << props << vals; + if(props.contains(NativeWindow::Title)){ + + } + if(props.contains(NativeWindow::ShortTitle)){ + + } + if(props.contains(NativeWindow::Icon)){ + + } + if(props.contains(NativeWindow::MinSize) || props.contains(NativeWindow::MaxSize) + || props.contains(NativeWindow::Size) || props.contains(NativeWindow::GlobalPos) ){ + + } + if(props.contains(NativeWindow::Name)){ + + } + if(props.contains(NativeWindow::Workspace)){ + int num = vals[ props.indexOf(NativeWindow::Workspace) ].toInt(); + xcb_ewmh_set_wm_desktop(&obj->EWMH, win->id(), (num<0 ? 0xFFFFFFFF : qAbs(num) ) ); + } + if(props.contains(NativeWindow::RelatedWindows)){ + + } + if(props.contains(NativeWindow::Visible)){ + qDebug() << "Check Window Visibility:" << vals[ props.indexOf(NativeWindow::Visible) ]; + if( vals[ props.indexOf(NativeWindow::Visible) ].toBool() ){ + qDebug() << " - Map it!"; + xcb_map_window(QX11Info::connection(), win->id()); + }else{ + qDebug() << " - Unmap it!"; + xcb_unmap_window(QX11Info::connection(), win->id()); + } + } + if(props.contains(NativeWindow::Active)){ + //Only one window can be "Active" at a time - so only do anything if this window wants to be active + if(vals[props.indexOf(NativeWindow::Active)].toBool() ){ + xcb_ewmh_set_active_window(&obj->EWMH, QX11Info::appScreen(), win->id()); + //Also send the active window a message to take input focus + //Send the window a WM_TAKE_FOCUS message + xcb_client_message_event_t event; + event.response_type = XCB_CLIENT_MESSAGE; + event.format = 32; + event.window = win->id(); + event.type = obj->ATOMS["WM_PROTOCOLS"]; + event.data.data32[0] = obj->ATOMS["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->id(), XCB_EVENT_MASK_STRUCTURE_NOTIFY | XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT, (const char *) &event); + xcb_flush(QX11Info::connection()); + } + } + +} // === PUBLIC SLOTS === //These are the slots which are typically only used by the desktop system itself or the NativeEventFilter @@ -534,6 +640,8 @@ void NativeWindowSystem::NewWindowDetected(WId id){ if(attr == 0){ return; } //could not get attributes of window if(attr->override_redirect){ free(attr); return; } //window has override redirect set (do not manage) free(attr); + //Now go ahead and create/populate the container for this window + NativeWindow *win = new NativeWindow(id); //Register for events from this window #define NORMAL_WIN_EVENT_MASK (XCB_EVENT_MASK_BUTTON_PRESS | \ XCB_EVENT_MASK_BUTTON_RELEASE | \ @@ -543,14 +651,20 @@ void NativeWindowSystem::NewWindowDetected(WId id){ XCB_EVENT_MASK_STRUCTURE_NOTIFY | \ XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT | \ XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY | \ - XCB_EVENT_MASK_ENTER_WINDOW) + XCB_EVENT_MASK_ENTER_WINDOW| \ + XCB_EVENT_MASK_PROPERTY_CHANGE) uint32_t value_list[1] = {NORMAL_WIN_EVENT_MASK}; xcb_change_window_attributes(QX11Info::connection(), id, XCB_CW_EVENT_MASK, value_list); - //Now go ahead and create/populate the container for this window - NativeWindow *win = new NativeWindow(id); NWindows << win; UpdateWindowProperties(win, NativeWindow::allProperties()); + qDebug() << "New Window [associated ID's]:" << win->property(NativeWindow::RelatedWindows); + //Now setup the connections with this window + connect(win, SIGNAL(RequestClose(WId)), this, SLOT(RequestClose(WId)) ); + connect(win, SIGNAL(RequestKill(WId)), this, SLOT(RequestKill(WId)) ); + connect(win, SIGNAL(RequestPing(WId)), this, SLOT(RequestPing(WId)) ); + connect(win, SIGNAL(RequestReparent(WId, WId, QPoint)), this, SLOT(RequestReparent(WId, WId, QPoint)) ); + connect(win, SIGNAL(RequestPropertiesChange(WId, QList, QList)), this, SLOT(RequestPropertiesChange(WId, QList, QList)) ); emit NewWindowAvailable(win); } @@ -608,6 +722,14 @@ void NativeWindowSystem::WindowPropertyChanged(WId id, NativeWindow::Property pr } } +void NativeWindowSystem::WindowPropertyChanged(WId id, NativeWindow::Property prop, QVariant val){ + NativeWindow *win = findWindow(id); + if(win==0){ win = findTrayWindow(id); } + if(win!=0){ + win->setProperty(prop, val); + } +} + void NativeWindowSystem::GotPong(WId id){ if(waitingForPong.contains(id)){ waitingForPong.remove(id); @@ -655,9 +777,7 @@ void NativeWindowSystem::RequestPropertiesChange(WId win, QListstart(); } + +void NativeWindowSystem::RequestReparent(WId client, WId parent, QPoint relorigin){ + xcb_reparent_window(QX11Info::connection(), client, parent, relorigin.x(), relorigin.y()); + //Now enable compositing between these two windows as well + // TODO + + xcb_map_window(QX11Info::connection(), parent); +} diff --git a/src-qt5/core/libLumina/NativeWindowSystem.h b/src-qt5/core/libLumina/NativeWindowSystem.h index 00841903..5b71249e 100644 --- a/src-qt5/core/libLumina/NativeWindowSystem.h +++ b/src-qt5/core/libLumina/NativeWindowSystem.h @@ -23,21 +23,9 @@ private: QList TWindows; //Simplifications to find an already-created window object - NativeWindow* findWindow(WId id){ - qDebug() << "Find Window:" << id; - for(int i=0; iisRelatedTo(id)){ qDebug() << " -- Got Match!"; return NWindows[i]; } - } - qDebug() << " -- Could not find Window!"; - return 0; - } + NativeWindow* findWindow(WId id); - NativeWindow* findTrayWindow(WId id){ - for(int i=0; iisRelatedTo(id)){ return TWindows[i]; } - } - return 0; - } + NativeWindow* findTrayWindow(WId id); //Now define a simple private_objects class so that each implementation // has a storage container for defining/placing private objects as needed @@ -64,6 +52,7 @@ private: // 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); + void ChangeWindowProperties(NativeWindow* win, QList< NativeWindow::Property > props, QList vals); //Generic private variables bool screenLocked; @@ -116,6 +105,7 @@ public slots: void NewTrayWindowDetected(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 WindowPropertyChanged(WId, NativeWindow::Property, QVariant); //will save that property/value to the right object void GotPong(WId); void NewKeyPress(int keycode, WId win = 0); @@ -130,6 +120,7 @@ private slots: void RequestClose(WId); void RequestKill(WId); void RequestPing(WId); + void RequestReparent(WId, WId, QPoint); //client, parent, relative origin point in parent signals: void NewWindowAvailable(NativeWindow*); diff --git a/src-qt5/core/libLumina/RootSubWindow.cpp b/src-qt5/core/libLumina/RootSubWindow.cpp index fdb9ac76..04deacf9 100644 --- a/src-qt5/core/libLumina/RootSubWindow.cpp +++ b/src-qt5/core/libLumina/RootSubWindow.cpp @@ -8,7 +8,8 @@ #include #include #include -#include +#include +#include #define WIN_BORDER 5 @@ -19,12 +20,14 @@ RootSubWindow::RootSubWindow(QWidget *root, NativeWindow *win) : QFrame(root){ //Create the QWindow and QWidget containers for the window WIN = win; closing = false; - WinWidget = QWidget::createWindowContainer( WIN->window(), this); + //WinWidget = QWidget::createWindowContainer( WIN->window(), this); initWindowFrame(); - LoadProperties( NativeWindow::allProperties() ); //Hookup the signals/slots connect(WIN, SIGNAL(PropertiesChanged(QList, QList)), this, SLOT(propertiesChanged(QList, QList))); - WIN->addFrameWinID(this->winId()); + WIN->addFrameWinID(WinWidget->winId()); + WIN->emit RequestReparent(WIN->id(), WinWidget->winId(), QPoint(0,0)); + LoadAllProperties(); + //QTimer::singleShot(20, this, SLOT(LoadAllProperties()) ); } RootSubWindow::~RootSubWindow(){ @@ -126,7 +129,7 @@ void RootSubWindow::setMouseCursor(ModState state, bool override){ void RootSubWindow::initWindowFrame(){ //qDebug() << "Create RootSubWindow Frame"; mainLayout = new QVBoxLayout(this); - titleBar = new QHBoxLayout(this); + titleBar = new QHBoxLayout(); closeB = new QToolButton(this); maxB = new QToolButton(this); minB = new QToolButton(this); @@ -137,6 +140,7 @@ void RootSubWindow::initWindowFrame(){ otherB->setMenu(otherM); otherB->setPopupMode(QToolButton::InstantPopup); otherB->setAutoRaise(true); + WinWidget = new QWidget(this); connect(closeB, SIGNAL(clicked()), this, SLOT(triggerClose()) ); connect(maxB, SIGNAL(clicked()), this, SLOT(toggleMaximize()) ); connect(minB, SIGNAL(clicked()), this, SLOT(toggleMinimize()) ); @@ -169,9 +173,12 @@ void RootSubWindow::initWindowFrame(){ void RootSubWindow::LoadProperties( QList< NativeWindow::Property> list){ QList vals; for(int i=0; iproperty(list[i]); + qDebug() << "Property:" << list[i] << vals[i]; } propertiesChanged(list, vals); + WIN->requestProperty(NativeWindow::Visible, true); } // === PUBLIC SLOTS === @@ -181,6 +188,13 @@ void RootSubWindow::clientClosed(){ this->close(); } +void RootSubWindow::LoadAllProperties(){ + QList< NativeWindow::Property> list = WIN->allProperties(); + /*list.removeAll(NativeWindow::Visible); + list << NativeWindow::Visible;*/ + LoadProperties(list); +} + //Button Actions - public so they can be tied to key shortcuts and stuff as well void RootSubWindow::toggleMinimize(){ @@ -227,21 +241,31 @@ void RootSubWindow::startResizing(){ // === PRIVATE SLOTS === void RootSubWindow::propertiesChanged(QList props, QList vals){ for(int i=0; ishow(); } + qDebug() << "Got Visibility Change:" << vals[i]; + if(vals[i].toBool()){ WinWidget->setVisible(true); this->show(); } else{ this->hide(); } break; case NativeWindow::Title: titleLabel->setText(vals[i].toString()); break; case NativeWindow::Icon: + //qDebug() << "Got Icon Change:" << vals[i]; otherB->setIcon(vals[i].value< QIcon>()); break; + case NativeWindow::GlobalPos: + //qDebug() << "Got Global Pos:" << vals[i].toPoint(); + this->move( vals[i].toPoint() ); + break; case NativeWindow::Size: - WinWidget->resize(vals[i].toSize()); + //qDebug() << "Got Widget Size:" << vals[i].toSize(); + //WinWidget->setSizeHint( vals[i].toSize() ); + //WinWidget->resize(vals[i].toSize() ); + this->resize( vals[i].toSize()+QSize( this->width()-WinWidget->width(), this->height()-WinWidget->height() ) ); + //qDebug() << " - Size after change:" << WinWidget->size() << this->size(); break; case NativeWindow::MinSize: WinWidget->setMinimumSize(vals[i].toSize()); @@ -250,7 +274,7 @@ void RootSubWindow::propertiesChanged(QList props, QList WinWidget->setMaximumSize(vals[i].toSize()); break; case NativeWindow::Active: - if(vals[i].toBool()){ WinWidget->setFocus(); } + //if(vals[i].toBool()){ WinWidget->setFocus(); } break; /*case NativeWindow::WindowFlags: this->setWindowFlags( val.value< Qt::WindowFlags >() ); @@ -380,3 +404,19 @@ void RootSubWindow::leaveEvent(QEvent *ev){ setMouseCursor(Normal); } } + +/*void RootSubWindow::hideEvent(QHideEvent *ev){ + WIN->requestProperty(NativeWindow::Visible, false); + QFrame::hideEvent(ev); +}*/ + +void RootSubWindow::resizeEvent(QResizeEvent *ev){ + qDebug() << "Got Resize Event:" << ev->size(); + WIN->requestProperty(NativeWindow::Size, WinWidget->size()); + QFrame::resizeEvent(ev); +} +/*void RootSubWindow::showEvent(QShowEvent *ev){ + WIN->requestProperty(NativeWindow::Visible, true); + QFrame::showEvent(ev); +}*/ + diff --git a/src-qt5/core/libLumina/RootSubWindow.h b/src-qt5/core/libLumina/RootSubWindow.h index 779f783b..e1b992c9 100644 --- a/src-qt5/core/libLumina/RootSubWindow.h +++ b/src-qt5/core/libLumina/RootSubWindow.h @@ -53,6 +53,7 @@ private: public slots: void clientClosed(); + void LoadAllProperties(); //Button Actions - public so they can be tied to key shortcuts and stuff as well void toggleMinimize(); @@ -74,6 +75,12 @@ protected: void mouseReleaseEvent(QMouseEvent*); void leaveEvent(QEvent *ev); + //void hideEvent(QHideEvent *ev); + void resizeEvent(QResizeEvent *ev); + //void showEvent(QShowEvent *ev); + //void moveEvent(QMoveEvent *ev); + + }; #endif diff --git a/src-qt5/core/libLumina/RootWindow.cpp b/src-qt5/core/libLumina/RootWindow.cpp index 65fb6083..17a9ecd7 100644 --- a/src-qt5/core/libLumina/RootWindow.cpp +++ b/src-qt5/core/libLumina/RootWindow.cpp @@ -177,7 +177,9 @@ void RootWindow::NewWindow(NativeWindow *win){ connect(win, SIGNAL(WindowClosed(WId)), this, SLOT(CloseWindow(WId)) ); WINDOWS << subwin; } - subwin->show(); + //win->setProperty(NativeWindow::Visible, true); + //win->requestProperty( NativeWindow::Active, true); + win->requestProperties(QList() << NativeWindow::Visible << NativeWindow::Active, QList() << true << true); } void RootWindow::CloseWindow(WId win){ diff --git a/src-qt5/core/lumina-desktop-unified/LSession.cpp b/src-qt5/core/lumina-desktop-unified/LSession.cpp index ab117df0..27c6dd8d 100644 --- a/src-qt5/core/lumina-desktop-unified/LSession.cpp +++ b/src-qt5/core/lumina-desktop-unified/LSession.cpp @@ -241,6 +241,7 @@ void LSession::setupGlobalConnections(){ connect(Lumina::NEF, SIGNAL(WindowCreated(WId)), Lumina::NWS, SLOT(NewWindowDetected(WId))); connect(Lumina::NEF, SIGNAL(WindowDestroyed(WId)), Lumina::NWS, SLOT(WindowCloseDetected(WId))); connect(Lumina::NEF, SIGNAL(WindowPropertyChanged(WId, NativeWindow::Property)), Lumina::NWS, SLOT(WindowPropertyChanged(WId, NativeWindow::Property))); + connect(Lumina::NEF, SIGNAL(WindowPropertyChanged(WId, NativeWindow::Property, QVariant)), Lumina::NWS, SLOT(WindowPropertyChanged(WId, NativeWindow::Property, QVariant))); connect(Lumina::NEF, SIGNAL(TrayWindowCreated(WId)), Lumina::NWS, SLOT(NewTrayWindowDetected(WId))); connect(Lumina::NEF, SIGNAL(TrayWindowDestroyed(WId)), Lumina::NWS, SLOT(WindowCloseDetected(WId))); connect(Lumina::NEF, SIGNAL(PossibleDamageEvent(WId)), Lumina::NWS, SLOT(CheckDamageID(WId))); -- cgit From 48d2ca3d03015b7b349f3ab7962416faa71ae671 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Thu, 29 Jun 2017 08:21:35 -0400 Subject: Turn on the OpenGL backing for Lumina2. --- src-qt5/core/lumina-desktop-unified/LSession.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-desktop-unified/LSession.cpp b/src-qt5/core/lumina-desktop-unified/LSession.cpp index 27c6dd8d..d08e5708 100644 --- a/src-qt5/core/lumina-desktop-unified/LSession.cpp +++ b/src-qt5/core/lumina-desktop-unified/LSession.cpp @@ -39,7 +39,7 @@ LSession::LSession(int &argc, char ** argv) : LSingleApplication(argc, argv, "lu this->setEffectEnabled( Qt::UI_AnimateMenu, true); this->setEffectEnabled( Qt::UI_AnimateCombo, true); this->setEffectEnabled( Qt::UI_AnimateTooltip, true); - //this->setAttribute(Qt::AA_UseDesktopOpenGL); + this->setAttribute(Qt::AA_UseDesktopOpenGL); 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) -- cgit From c47e7ca51fcf653a3d3078924a93f2dca2c25359 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Thu, 29 Jun 2017 08:37:37 -0400 Subject: Clean up some of the rootSubWindow overrides --- src-qt5/core/libLumina/RootSubWindow.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/RootSubWindow.cpp b/src-qt5/core/libLumina/RootSubWindow.cpp index 04deacf9..f45258a3 100644 --- a/src-qt5/core/libLumina/RootSubWindow.cpp +++ b/src-qt5/core/libLumina/RootSubWindow.cpp @@ -245,7 +245,7 @@ void RootSubWindow::propertiesChanged(QList props, QList //qDebug() << "RootSubWindow: Property Changed:" << props[i] << vals[i]; switch(props[i]){ case NativeWindow::Visible: - qDebug() << "Got Visibility Change:" << vals[i]; + //qDebug() << "Got Visibility Change:" << vals[i]; if(vals[i].toBool()){ WinWidget->setVisible(true); this->show(); } else{ this->hide(); } break; @@ -301,11 +301,11 @@ void RootSubWindow::mousePressEvent(QMouseEvent *ev){ activeState = getStateAtPoint(ev->pos(), true); //also have it set the offset variable } setMouseCursor(activeState, true); //this one is an override cursor - + QFrame::mousePressEvent(ev); } void RootSubWindow::mouseMoveEvent(QMouseEvent *ev){ - ev->accept(); + //ev->accept(); if(activeState == Normal){ setMouseCursor( getStateAtPoint(ev->pos()) ); //just update the mouse cursor }else{ @@ -382,12 +382,13 @@ void RootSubWindow::mouseMoveEvent(QMouseEvent *ev){ this->setGeometry(geom); } + QFrame::mouseMoveEvent(ev); } void RootSubWindow::mouseReleaseEvent(QMouseEvent *ev){ //Check for a right-click event //qDebug() << "Frame Mouse Release Event"; - ev->accept(); + QFrame::mouseReleaseEvent(ev); if( (activeState==Normal) && (titleBar->geometry().contains(ev->pos())) && (ev->button()==Qt::RightButton) ){ otherM->popup(ev->globalPos()); return; @@ -419,4 +420,3 @@ void RootSubWindow::resizeEvent(QResizeEvent *ev){ WIN->requestProperty(NativeWindow::Visible, true); QFrame::showEvent(ev); }*/ - -- cgit From 4fa1cdda33d5fbdf3f1d496e705cddd76f7e1cfa Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Thu, 29 Jun 2017 10:18:18 -0400 Subject: Get the window size/position change detection implemented. --- src-qt5/core/libLumina/LuminaX11.cpp | 8 ++-- src-qt5/core/libLumina/NativeEventFilter.cpp | 14 +++++++ src-qt5/core/libLumina/NativeEventFilter.h | 46 ++------------------- src-qt5/core/libLumina/NativeWindowSystem.cpp | 52 +++++++++++++++--------- src-qt5/core/libLumina/NativeWindowSystem.h | 4 +- src-qt5/core/libLumina/RootSubWindow.cpp | 4 +- src-qt5/core/lumina-desktop-unified/LSession.cpp | 3 ++ 7 files changed, 62 insertions(+), 69 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/LuminaX11.cpp b/src-qt5/core/libLumina/LuminaX11.cpp index 86af1a00..dd98d12c 100644 --- a/src-qt5/core/libLumina/LuminaX11.cpp +++ b/src-qt5/core/libLumina/LuminaX11.cpp @@ -179,7 +179,7 @@ void LXCB::SetCurrentWorkspace(int number){ event.data.data32[4] = 0; xcb_send_event(QX11Info::connection(), 0, QX11Info::appRootWindow(), XCB_EVENT_MASK_STRUCTURE_NOTIFY | XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT, (const char *) &event); - + //EWMH function (does not seem to be recognized by Fluxbox) xcb_ewmh_request_change_showing_desktop(&EWMH, QX11Info::appScreen(), number); } @@ -190,7 +190,7 @@ QString LXCB::WindowClass(WId win){ QString out; if(win==0){ return ""; } xcb_get_property_cookie_t cookie = xcb_icccm_get_wm_class_unchecked(QX11Info::connection(), win); - if(cookie.sequence == 0){ return out; } + if(cookie.sequence == 0){ return out; } xcb_icccm_get_wm_class_reply_t value; if( 1== xcb_icccm_get_wm_class_reply( QX11Info::connection(), cookie, &value, NULL) ){ out = QString::fromUtf8(value.class_name); @@ -207,7 +207,7 @@ unsigned int LXCB::WindowWorkspace(WId win){ uint32_t wkspace = 0; xcb_get_property_cookie_t scookie = xcb_ewmh_get_wm_state_unchecked(&EWMH, win); xcb_get_property_cookie_t cookie = xcb_ewmh_get_wm_desktop_unchecked(&EWMH, win); - if(cookie.sequence == 0){ return wkspace; } + if(cookie.sequence == 0){ return wkspace; } xcb_ewmh_get_wm_desktop_reply(&EWMH, cookie, &wkspace, NULL); xcb_ewmh_get_atoms_reply_t reply; if(1==xcb_ewmh_get_wm_state_reply(&EWMH,scookie, &reply, NULL)){ @@ -217,7 +217,7 @@ unsigned int LXCB::WindowWorkspace(WId win){ } } //qDebug() << " - done: " << wkspace; - return wkspace; + return wkspace; } // === WindowGeometry() === diff --git a/src-qt5/core/libLumina/NativeEventFilter.cpp b/src-qt5/core/libLumina/NativeEventFilter.cpp index c4873d6b..28432222 100644 --- a/src-qt5/core/libLumina/NativeEventFilter.cpp +++ b/src-qt5/core/libLumina/NativeEventFilter.cpp @@ -227,11 +227,25 @@ bool EventFilter::nativeEventFilter(const QByteArray &eventType, void *message, //============================== case XCB_CONFIGURE_NOTIFY: //qDebug() << "Configure Notify Event"; + obj->emit WindowPropertiesChanged( ((xcb_configure_notify_event_t*)ev)->window, + QList() << NativeWindow::GlobalPos << NativeWindow::Size, + QList() << QPoint(((xcb_configure_notify_event_t*)ev)->x, ((xcb_configure_notify_event_t*)ev)->y) << + QSize(((xcb_configure_notify_event_t*)ev)->width, ((xcb_configure_notify_event_t*)ev)->height) ); break; //============================== case XCB_CONFIGURE_REQUEST: //qDebug() << "Configure Request Event"; + obj->emit RequestWindowPropertiesChange( ((xcb_configure_request_event_t*)ev)->window, + QList() << NativeWindow::GlobalPos << NativeWindow::Size, + QList() << QPoint(((xcb_configure_request_event_t*)ev)->x, ((xcb_configure_request_event_t*)ev)->y) << + QSize(((xcb_configure_request_event_t*)ev)->width, ((xcb_configure_request_event_t*)ev)->height) ); break; +//============================== + case XCB_RESIZE_REQUEST: + //qDebug() << "Resize Request Event"; + obj->emit RequestWindowPropertyChange( ((xcb_resize_request_event_t*)ev)->window, + NativeWindow::Size, QSize(((xcb_resize_request_event_t*)ev)->width, ((xcb_resize_request_event_t*)ev)->height) ); + break; //============================== case XCB_SELECTION_CLEAR: //qDebug() << "Selection Clear Event"; diff --git a/src-qt5/core/libLumina/NativeEventFilter.h b/src-qt5/core/libLumina/NativeEventFilter.h index 2c6bfb6b..2b184f99 100644 --- a/src-qt5/core/libLumina/NativeEventFilter.h +++ b/src-qt5/core/libLumina/NativeEventFilter.h @@ -35,6 +35,9 @@ signals: void WindowDestroyed(WId); void WindowPropertyChanged(WId, NativeWindow::Property); void WindowPropertyChanged(WId, NativeWindow::Property, QVariant); + void WindowPropertiesChanged(WId, QList, QList); + void RequestWindowPropertyChange(WId, NativeWindow::Property, QVariant); + void RequestWindowPropertiesChange(WId, QList, QList); //System Tray Signals void TrayWindowCreated(WId); @@ -60,51 +63,8 @@ public: virtual bool nativeEventFilter(const QByteArray &eventType, void *message, long *); - //System Tray Functions - //QList trayApps(); //return the list of all current tray apps - //bool startSystemTray(); - //bool stopSystemTray(); - - //Window List Functions - //QList windowList(); - private: NativeEventFilter *obj; - /*QList WinNotifyAtoms, SysNotifyAtoms; - xcb_atom_t _NET_SYSTEM_TRAY_OPCODE; - void InitAtoms(); - - bool BlockInputEvent(WId win = 0); //Checks the current state of the system to see if the event should be stopped - WId InputWindow(WId win = 0); //Checks the window ID and determines if this is an external window or returns 0 (for desktop/root windows) - Lumina::MouseButton MouseKey(int keycode); //convert the keycode into the mouse button code - - //System Tray Variables - WId SystemTrayID; - int TrayDmgID; - QList RunningTrayApps; - //System Tray functions - void addTrayApp(WId); - bool rmTrayApp(WId); //returns "true" if the tray app was found and removed - void checkDamageID(WId); - - //Window List Variables - QList windows; - QList waitingToShow; - - //Longer Event handling functions - void SetupNewWindow(xcb_map_request_event_t *ev); - - //bool ParseKeyPressEvent(); - //bool ParseKeyReleaseEvent(); - //bool ParseButtonPressEvent(); - //bool ParseButtonReleaseEvent(); - //bool ParseMotionEvent(); - void ParsePropertyEvent(xcb_property_notify_event_t *ev); - //bool ParseClientMessageEvent(); - //bool ParseDestroyEvent(); - //bool ParseConfigureEvent(); - //bool ParseKeySelectionClearEvent(); - */ }; #endif diff --git a/src-qt5/core/libLumina/NativeWindowSystem.cpp b/src-qt5/core/libLumina/NativeWindowSystem.cpp index a6bcd718..8d732d8c 100644 --- a/src-qt5/core/libLumina/NativeWindowSystem.cpp +++ b/src-qt5/core/libLumina/NativeWindowSystem.cpp @@ -644,21 +644,21 @@ void NativeWindowSystem::NewWindowDetected(WId id){ NativeWindow *win = new NativeWindow(id); //Register for events from this window #define NORMAL_WIN_EVENT_MASK (XCB_EVENT_MASK_BUTTON_PRESS | \ - XCB_EVENT_MASK_BUTTON_RELEASE | \ - XCB_EVENT_MASK_POINTER_MOTION | \ - XCB_EVENT_MASK_BUTTON_MOTION | \ - XCB_EVENT_MASK_EXPOSURE | \ - XCB_EVENT_MASK_STRUCTURE_NOTIFY | \ - XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT | \ - XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY | \ - XCB_EVENT_MASK_ENTER_WINDOW| \ - XCB_EVENT_MASK_PROPERTY_CHANGE) + XCB_EVENT_MASK_BUTTON_RELEASE | \ + XCB_EVENT_MASK_POINTER_MOTION | \ + XCB_EVENT_MASK_BUTTON_MOTION | \ + XCB_EVENT_MASK_EXPOSURE | \ + XCB_EVENT_MASK_STRUCTURE_NOTIFY | \ + XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT | \ + XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY | \ + XCB_EVENT_MASK_ENTER_WINDOW| \ + XCB_EVENT_MASK_PROPERTY_CHANGE) uint32_t value_list[1] = {NORMAL_WIN_EVENT_MASK}; xcb_change_window_attributes(QX11Info::connection(), id, XCB_CW_EVENT_MASK, value_list); NWindows << win; UpdateWindowProperties(win, NativeWindow::allProperties()); - qDebug() << "New Window [associated ID's]:" << win->property(NativeWindow::RelatedWindows); + qDebug() << "New Window [& associated ID's]:" << win->id() << win->property(NativeWindow::RelatedWindows); //Now setup the connections with this window connect(win, SIGNAL(RequestClose(WId)), this, SLOT(RequestClose(WId)) ); connect(win, SIGNAL(RequestKill(WId)), this, SLOT(RequestKill(WId)) ); @@ -730,6 +730,29 @@ void NativeWindowSystem::WindowPropertyChanged(WId id, NativeWindow::Property pr } } +void NativeWindowSystem::WindowPropertiesChanged(WId id, QList props, QList vals){ + NativeWindow *win = findWindow(id); + if(win==0){ win = findTrayWindow(id); } + if(win!=0){ + for(int i=0; isetProperty(props[i], vals[i]); } + } +} + +void NativeWindowSystem::RequestPropertyChange(WId id, NativeWindow::Property prop, QVariant val){ + //This is just a simplified version of the multiple-property function + RequestPropertiesChange(id, QList() << prop, QList() << val); +} + +void NativeWindowSystem::RequestPropertiesChange(WId win, QList props, QList vals){ + //Find the window object associated with this id + bool istraywin = false; //just in case we care later if it is a tray window or a regular window + NativeWindow *WIN = findWindow(win); + if(WIN==0){ istraywin = true; WIN = findTrayWindow(win); } + if(WIN==0){ return; } //invalid window ID - no longer available + //Now make any changes as needed + ChangeWindowProperties(WIN, props, vals); +} + void NativeWindowSystem::GotPong(WId id){ if(waitingForPong.contains(id)){ waitingForPong.remove(id); @@ -770,15 +793,6 @@ void NativeWindowSystem::CheckDamageID(WId win){ // === PRIVATE SLOTS === //These are the slots which are built-in and automatically connected when a new NativeWindow is created -void NativeWindowSystem::RequestPropertiesChange(WId win, QList props, QList vals){ - //Find the window object associated with this id - bool istraywin = false; //just in case we care later if it is a tray window or a regular window - NativeWindow *WIN = findWindow(win); - if(WIN==0){ istraywin = true; WIN = findTrayWindow(win); } - if(WIN==0){ return; } //invalid window ID - no longer available - //Now make any changes as needed - ChangeWindowProperties(WIN, props, vals); -} void NativeWindowSystem::RequestClose(WId win){ //Send the window a WM_DELETE_WINDOW message diff --git a/src-qt5/core/libLumina/NativeWindowSystem.h b/src-qt5/core/libLumina/NativeWindowSystem.h index 5b71249e..7786c87d 100644 --- a/src-qt5/core/libLumina/NativeWindowSystem.h +++ b/src-qt5/core/libLumina/NativeWindowSystem.h @@ -106,6 +106,9 @@ public slots: 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 WindowPropertyChanged(WId, NativeWindow::Property, QVariant); //will save that property/value to the right object + void WindowPropertiesChanged(WId, QList, QList); + void RequestPropertyChange(WId, NativeWindow::Property, QVariant); + void RequestPropertiesChange(WId, QList, QList); void GotPong(WId); void NewKeyPress(int keycode, WId win = 0); @@ -116,7 +119,6 @@ public slots: private slots: //These are the slots which are built-in and automatically connected when a new NativeWindow is created - void RequestPropertiesChange(WId, QList, QList); void RequestClose(WId); void RequestKill(WId); void RequestPing(WId); diff --git a/src-qt5/core/libLumina/RootSubWindow.cpp b/src-qt5/core/libLumina/RootSubWindow.cpp index f45258a3..66cfbc6a 100644 --- a/src-qt5/core/libLumina/RootSubWindow.cpp +++ b/src-qt5/core/libLumina/RootSubWindow.cpp @@ -261,11 +261,11 @@ void RootSubWindow::propertiesChanged(QList props, QList this->move( vals[i].toPoint() ); break; case NativeWindow::Size: - //qDebug() << "Got Widget Size:" << vals[i].toSize(); + qDebug() << "Got Widget Size:" << vals[i].toSize(); //WinWidget->setSizeHint( vals[i].toSize() ); //WinWidget->resize(vals[i].toSize() ); this->resize( vals[i].toSize()+QSize( this->width()-WinWidget->width(), this->height()-WinWidget->height() ) ); - //qDebug() << " - Size after change:" << WinWidget->size() << this->size(); + qDebug() << " - Size after change:" << WinWidget->size() << this->size(); break; case NativeWindow::MinSize: WinWidget->setMinimumSize(vals[i].toSize()); diff --git a/src-qt5/core/lumina-desktop-unified/LSession.cpp b/src-qt5/core/lumina-desktop-unified/LSession.cpp index d08e5708..5aaf99c7 100644 --- a/src-qt5/core/lumina-desktop-unified/LSession.cpp +++ b/src-qt5/core/lumina-desktop-unified/LSession.cpp @@ -242,6 +242,9 @@ void LSession::setupGlobalConnections(){ connect(Lumina::NEF, SIGNAL(WindowDestroyed(WId)), Lumina::NWS, SLOT(WindowCloseDetected(WId))); connect(Lumina::NEF, SIGNAL(WindowPropertyChanged(WId, NativeWindow::Property)), Lumina::NWS, SLOT(WindowPropertyChanged(WId, NativeWindow::Property))); connect(Lumina::NEF, SIGNAL(WindowPropertyChanged(WId, NativeWindow::Property, QVariant)), Lumina::NWS, SLOT(WindowPropertyChanged(WId, NativeWindow::Property, QVariant))); + connect(Lumina::NEF, SIGNAL(WindowPropertiesChanged(WId, QList, QList)), Lumina::NWS, SLOT(WindowPropertiesChanged(WId, QList, QList)) ); + connect(Lumina::NEF, SIGNAL(RequestWindowPropertyChange(WId, NativeWindow::Property, QVariant)), Lumina::NWS, SLOT(RequestPropertyChange(WId, NativeWindow::Property, QVariant))); + connect(Lumina::NEF, SIGNAL(RequestWindowPropertiesChange(WId, QList, QList)), Lumina::NWS, SLOT(RequestPropertiesChange(WId, QList, QList))); connect(Lumina::NEF, SIGNAL(TrayWindowCreated(WId)), Lumina::NWS, SLOT(NewTrayWindowDetected(WId))); connect(Lumina::NEF, SIGNAL(TrayWindowDestroyed(WId)), Lumina::NWS, SLOT(WindowCloseDetected(WId))); connect(Lumina::NEF, SIGNAL(PossibleDamageEvent(WId)), Lumina::NWS, SLOT(CheckDamageID(WId))); -- cgit From fd0224378284bb98a03a87220eef0c02894619de Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Thu, 29 Jun 2017 10:28:23 -0400 Subject: Add the ability to change the "Size" property for windows. --- src-qt5/core/libLumina/NativeWindowSystem.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/NativeWindowSystem.cpp b/src-qt5/core/libLumina/NativeWindowSystem.cpp index 8d732d8c..d540d86e 100644 --- a/src-qt5/core/libLumina/NativeWindowSystem.cpp +++ b/src-qt5/core/libLumina/NativeWindowSystem.cpp @@ -476,9 +476,16 @@ void NativeWindowSystem::ChangeWindowProperties(NativeWindow* win, QList< Native if(props.contains(NativeWindow::Icon)){ } - if(props.contains(NativeWindow::MinSize) || props.contains(NativeWindow::MaxSize) - || props.contains(NativeWindow::Size) || props.contains(NativeWindow::GlobalPos) ){ - + if(props.contains(NativeWindow::Size) ){ + xcb_configure_window_value_list_t valList; + uint16_t mask = 0; + //if(props.contains(NativeWindow::Size)){ + QSize sz = vals[ props.indexOf(NativeWindow::Size) ] .toSize(); + valList.width = sz.width(); + valList.height = sz.height(); + mask = mask & XCB_CONFIG_WINDOW_WIDTH & XCB_CONFIG_WINDOW_HEIGHT; + //} + xcb_configure_window_aux(QX11Info::connection(), win->id(), mask, &valList); } if(props.contains(NativeWindow::Name)){ -- cgit From f7ef0f0a21d56e3c9c946c6f4010a713835c8cbe Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Thu, 29 Jun 2017 10:41:12 -0400 Subject: Make sure the global position of a window is/can be set as needed. --- src-qt5/core/libLumina/NativeWindowSystem.cpp | 12 +++++++++--- src-qt5/core/libLumina/RootSubWindow.cpp | 9 ++++++++- src-qt5/core/libLumina/RootSubWindow.h | 2 +- 3 files changed, 18 insertions(+), 5 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/NativeWindowSystem.cpp b/src-qt5/core/libLumina/NativeWindowSystem.cpp index d540d86e..791271cc 100644 --- a/src-qt5/core/libLumina/NativeWindowSystem.cpp +++ b/src-qt5/core/libLumina/NativeWindowSystem.cpp @@ -476,15 +476,21 @@ void NativeWindowSystem::ChangeWindowProperties(NativeWindow* win, QList< Native if(props.contains(NativeWindow::Icon)){ } - if(props.contains(NativeWindow::Size) ){ + if(props.contains(NativeWindow::Size) || props.contains(NativeWindow::GlobalPos) ){ xcb_configure_window_value_list_t valList; uint16_t mask = 0; - //if(props.contains(NativeWindow::Size)){ + if(props.contains(NativeWindow::Size)){ QSize sz = vals[ props.indexOf(NativeWindow::Size) ] .toSize(); valList.width = sz.width(); valList.height = sz.height(); mask = mask & XCB_CONFIG_WINDOW_WIDTH & XCB_CONFIG_WINDOW_HEIGHT; - //} + } + if(props.contains(NativeWindow::GlobalPos)){ + QPoint pt = vals[ props.indexOf(NativeWindow::GlobalPos) ] .toPoint(); + valList.x = pt.x(); + valList.y = pt.y(); + mask = mask & XCB_CONFIG_WINDOW_X & XCB_CONFIG_WINDOW_Y; + } xcb_configure_window_aux(QX11Info::connection(), win->id(), mask, &valList); } if(props.contains(NativeWindow::Name)){ diff --git a/src-qt5/core/libLumina/RootSubWindow.cpp b/src-qt5/core/libLumina/RootSubWindow.cpp index 66cfbc6a..59cfc662 100644 --- a/src-qt5/core/libLumina/RootSubWindow.cpp +++ b/src-qt5/core/libLumina/RootSubWindow.cpp @@ -412,11 +412,18 @@ void RootSubWindow::leaveEvent(QEvent *ev){ }*/ void RootSubWindow::resizeEvent(QResizeEvent *ev){ - qDebug() << "Got Resize Event:" << ev->size(); + //qDebug() << "Got Resize Event:" << ev->size(); WIN->requestProperty(NativeWindow::Size, WinWidget->size()); QFrame::resizeEvent(ev); } + /*void RootSubWindow::showEvent(QShowEvent *ev){ WIN->requestProperty(NativeWindow::Visible, true); QFrame::showEvent(ev); }*/ + +void RootSubWindow::moveEvent(QMoveEvent *ev){ + //qDebug() << "Got Move Event:" << ev->pos(); + WIN->setProperty(NativeWindow::GlobalPos, WinWidget->mapToGlobal(QPoint(0,0)) ); + QFrame::moveEvent(ev); +} diff --git a/src-qt5/core/libLumina/RootSubWindow.h b/src-qt5/core/libLumina/RootSubWindow.h index e1b992c9..cb502107 100644 --- a/src-qt5/core/libLumina/RootSubWindow.h +++ b/src-qt5/core/libLumina/RootSubWindow.h @@ -78,7 +78,7 @@ protected: //void hideEvent(QHideEvent *ev); void resizeEvent(QResizeEvent *ev); //void showEvent(QShowEvent *ev); - //void moveEvent(QMoveEvent *ev); + void moveEvent(QMoveEvent *ev); }; -- cgit From d911eba7e870937803e68562729b38173cdd5857 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Thu, 29 Jun 2017 11:02:42 -0400 Subject: Ensure that the Global Position (and Size) properties *always* reference the embedded window. Also make a new "geometry()" function in NativeWindow to return the full window+frame geometry. --- src-qt5/core/libLumina/NativeWindow.cpp | 10 ++++++++++ src-qt5/core/libLumina/NativeWindow.h | 2 ++ src-qt5/core/libLumina/RootSubWindow.cpp | 8 ++++---- 3 files changed, 16 insertions(+), 4 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/NativeWindow.cpp b/src-qt5/core/libLumina/NativeWindow.cpp index 68610ce2..8853c48e 100644 --- a/src-qt5/core/libLumina/NativeWindow.cpp +++ b/src-qt5/core/libLumina/NativeWindow.cpp @@ -75,6 +75,16 @@ void NativeWindow::requestProperties(QList props, QList< emit RequestPropertiesChange(winid, props, vals); } +QRect NativeWindow::geometry(){ + //Calculate the "full" geometry of the window + frame (if any) + QRect geom( hash.value(NativeWindow::GlobalPos).toPoint(), hash.value(NativeWindow::Size).toSize() ); + //Now adjust the window geom by the frame margins + QList frame = hash.value(NativeWindow::FrameExtents).value< QList >(); //Left,Right,Top,Bottom + if(frame.length()==4){ + geom = geom.adjusted( -frame[0], -frame[2], frame[1], frame[3] ); + } + return geom; +} // ==== PUBLIC SLOTS === void NativeWindow::requestClose(){ emit RequestClose(winid); diff --git a/src-qt5/core/libLumina/NativeWindow.h b/src-qt5/core/libLumina/NativeWindow.h index a1cb7c1a..c87ccb2d 100644 --- a/src-qt5/core/libLumina/NativeWindow.h +++ b/src-qt5/core/libLumina/NativeWindow.h @@ -71,6 +71,8 @@ public: void requestProperty(NativeWindow::Property, QVariant); void requestProperties(QList, QList); + QRect geometry(); //this returns the "full" geometry of the window (window + frame) + public slots: void requestClose(); //ask the app to close the window (may/not depending on activity) void requestKill(); //ask the WM to kill the app associated with this window (harsh - only use if not responding) diff --git a/src-qt5/core/libLumina/RootSubWindow.cpp b/src-qt5/core/libLumina/RootSubWindow.cpp index 59cfc662..f17ee9a1 100644 --- a/src-qt5/core/libLumina/RootSubWindow.cpp +++ b/src-qt5/core/libLumina/RootSubWindow.cpp @@ -254,17 +254,17 @@ void RootSubWindow::propertiesChanged(QList props, QList break; case NativeWindow::Icon: //qDebug() << "Got Icon Change:" << vals[i]; - otherB->setIcon(vals[i].value< QIcon>()); + otherB->setIcon(vals[i].value()); break; case NativeWindow::GlobalPos: //qDebug() << "Got Global Pos:" << vals[i].toPoint(); - this->move( vals[i].toPoint() ); + this->move( WIN->geometry().topLeft() ); break; case NativeWindow::Size: qDebug() << "Got Widget Size:" << vals[i].toSize(); //WinWidget->setSizeHint( vals[i].toSize() ); //WinWidget->resize(vals[i].toSize() ); - this->resize( vals[i].toSize()+QSize( this->width()-WinWidget->width(), this->height()-WinWidget->height() ) ); + this->resize( WIN->geometry().size() ); qDebug() << " - Size after change:" << WinWidget->size() << this->size(); break; case NativeWindow::MinSize: @@ -305,7 +305,7 @@ void RootSubWindow::mousePressEvent(QMouseEvent *ev){ } void RootSubWindow::mouseMoveEvent(QMouseEvent *ev){ - //ev->accept(); + activate(); //make sure this window is "Active" if(activeState == Normal){ setMouseCursor( getStateAtPoint(ev->pos()) ); //just update the mouse cursor }else{ -- cgit From 44f14e37bd0ad573590d92cc6e1052b8d8711021 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Thu, 29 Jun 2017 11:16:20 -0400 Subject: Clean up the handling of the frameExtents property quite a bit. --- src-qt5/core/libLumina/RootSubWindow.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/RootSubWindow.cpp b/src-qt5/core/libLumina/RootSubWindow.cpp index f17ee9a1..213e07ca 100644 --- a/src-qt5/core/libLumina/RootSubWindow.cpp +++ b/src-qt5/core/libLumina/RootSubWindow.cpp @@ -162,7 +162,7 @@ void RootSubWindow::initWindowFrame(){ titleLabel->setObjectName("Label_Title"); this->setStyleSheet("QWidget#WindowFrame{background-color: rgba(0,0,0,125);} QWidget#Label_Title{background-color: transparent; color: white; }"); //And adjust the margins - mainLayout->setContentsMargins(WIN_BORDER,WIN_BORDER,WIN_BORDER,WIN_BORDER); + mainLayout->setContentsMargins(WIN_BORDER,WIN_BORDER,WIN_BORDER,WIN_BORDER); //default border mainLayout->setSpacing(0); titleBar->setSpacing(1); titleBar->setContentsMargins(0,0,0,0); @@ -175,6 +175,13 @@ void RootSubWindow::LoadProperties( QList< NativeWindow::Property> list){ for(int i=0; iproperty(list[i]); + if(list[i] == NativeWindow::FrameExtents){ + if(vals[i].isNull()){ + QList frame; frame << WIN_BORDER << WIN_BORDER << WIN_BORDER+titleLabel->height() << WIN_BORDER; + vals[i] = QVariant::fromValue< QList >(frame); //use this by default + WIN->requestProperty(NativeWindow::FrameExtents, QVariant::fromValue< QList >(frame)); //make sure these values get saved permanently + } + } qDebug() << "Property:" << list[i] << vals[i]; } propertiesChanged(list, vals); @@ -276,6 +283,9 @@ void RootSubWindow::propertiesChanged(QList props, QList case NativeWindow::Active: //if(vals[i].toBool()){ WinWidget->setFocus(); } break; + case NativeWindow::FrameExtents: + mainLayout->setContentsMargins( vals[i].value< QList >().at(0),vals[i].value< QList >().at(2) - titleLabel->height(),vals[i].value< QList >().at(1),vals[i].value< QList >().at(3)); + break; /*case NativeWindow::WindowFlags: this->setWindowFlags( val.value< Qt::WindowFlags >() ); break;*/ -- cgit From 1d301fca58db2a1ba171a1c3c423a7e32f6a059e Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Thu, 29 Jun 2017 11:22:28 -0400 Subject: Oops - fix how the new/initial frame extents get saved into the structure.. --- src-qt5/core/libLumina/NativeWindowSystem.cpp | 1 + src-qt5/core/libLumina/RootSubWindow.cpp | 2 ++ 2 files changed, 3 insertions(+) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/NativeWindowSystem.cpp b/src-qt5/core/libLumina/NativeWindowSystem.cpp index 791271cc..5f2c8b6e 100644 --- a/src-qt5/core/libLumina/NativeWindowSystem.cpp +++ b/src-qt5/core/libLumina/NativeWindowSystem.cpp @@ -466,6 +466,7 @@ void NativeWindowSystem::UpdateWindowProperties(NativeWindow* win, QList< Native } void NativeWindowSystem::ChangeWindowProperties(NativeWindow* win, QList< NativeWindow::Property > props, QList vals){ + if(props.length() == 0 || vals.length()!=props.length() || win ==0 ){ return; } qDebug() << "Change Window Properties:" << props << vals; if(props.contains(NativeWindow::Title)){ diff --git a/src-qt5/core/libLumina/RootSubWindow.cpp b/src-qt5/core/libLumina/RootSubWindow.cpp index 213e07ca..bbbbf644 100644 --- a/src-qt5/core/libLumina/RootSubWindow.cpp +++ b/src-qt5/core/libLumina/RootSubWindow.cpp @@ -180,6 +180,7 @@ void RootSubWindow::LoadProperties( QList< NativeWindow::Property> list){ QList frame; frame << WIN_BORDER << WIN_BORDER << WIN_BORDER+titleLabel->height() << WIN_BORDER; vals[i] = QVariant::fromValue< QList >(frame); //use this by default WIN->requestProperty(NativeWindow::FrameExtents, QVariant::fromValue< QList >(frame)); //make sure these values get saved permanently + WIN->setProperty(NativeWindow::FrameExtents, QVariant::fromValue< QList >(frame)); } } qDebug() << "Property:" << list[i] << vals[i]; @@ -271,6 +272,7 @@ void RootSubWindow::propertiesChanged(QList props, QList qDebug() << "Got Widget Size:" << vals[i].toSize(); //WinWidget->setSizeHint( vals[i].toSize() ); //WinWidget->resize(vals[i].toSize() ); + WinWidget->resize(vals[i].toSize()); this->resize( WIN->geometry().size() ); qDebug() << " - Size after change:" << WinWidget->size() << this->size(); break; -- cgit From 9134d5971398e6de38465ca47b583d32bf8aaf94 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Thu, 29 Jun 2017 11:50:20 -0400 Subject: Try to fix up the looping of the size/resize between X and the window --- src-qt5/core/libLumina/RootSubWindow.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/RootSubWindow.cpp b/src-qt5/core/libLumina/RootSubWindow.cpp index bbbbf644..075f94c5 100644 --- a/src-qt5/core/libLumina/RootSubWindow.cpp +++ b/src-qt5/core/libLumina/RootSubWindow.cpp @@ -269,12 +269,12 @@ void RootSubWindow::propertiesChanged(QList props, QList this->move( WIN->geometry().topLeft() ); break; case NativeWindow::Size: - qDebug() << "Got Widget Size:" << vals[i].toSize(); - //WinWidget->setSizeHint( vals[i].toSize() ); - //WinWidget->resize(vals[i].toSize() ); - WinWidget->resize(vals[i].toSize()); - this->resize( WIN->geometry().size() ); - qDebug() << " - Size after change:" << WinWidget->size() << this->size(); + if(WinWidget->size() != vals[i].toSize()){ + qDebug() << "Got Widget Size Change:" << vals[i].toSize(); + WinWidget->resize(vals[i].toSize()); + this->resize( WIN->geometry().size() ); + qDebug() << " - Size after change:" << WinWidget->size() << this->size() << WIN->geometry(); + } break; case NativeWindow::MinSize: WinWidget->setMinimumSize(vals[i].toSize()); @@ -425,7 +425,9 @@ void RootSubWindow::leaveEvent(QEvent *ev){ void RootSubWindow::resizeEvent(QResizeEvent *ev){ //qDebug() << "Got Resize Event:" << ev->size(); - WIN->requestProperty(NativeWindow::Size, WinWidget->size()); + if(WinWidget->size() != WIN->property(NativeWindow::Size).toSize()){ + WIN->requestProperty(NativeWindow::Size, WinWidget->size()); + } QFrame::resizeEvent(ev); } -- cgit From 1030649f5c8e831f1e7abae0b999173c6aed65ec Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Thu, 29 Jun 2017 11:53:39 -0400 Subject: Quick fix to disable setting the new global position on window move (temporary) --- src-qt5/core/libLumina/RootSubWindow.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/RootSubWindow.cpp b/src-qt5/core/libLumina/RootSubWindow.cpp index 075f94c5..190ec3aa 100644 --- a/src-qt5/core/libLumina/RootSubWindow.cpp +++ b/src-qt5/core/libLumina/RootSubWindow.cpp @@ -265,7 +265,7 @@ void RootSubWindow::propertiesChanged(QList props, QList otherB->setIcon(vals[i].value()); break; case NativeWindow::GlobalPos: - //qDebug() << "Got Global Pos:" << vals[i].toPoint(); + qDebug() << "Got Global Pos:" << vals[i].toPoint(); this->move( WIN->geometry().topLeft() ); break; case NativeWindow::Size: @@ -437,7 +437,7 @@ void RootSubWindow::resizeEvent(QResizeEvent *ev){ }*/ void RootSubWindow::moveEvent(QMoveEvent *ev){ - //qDebug() << "Got Move Event:" << ev->pos(); - WIN->setProperty(NativeWindow::GlobalPos, WinWidget->mapToGlobal(QPoint(0,0)) ); + qDebug() << "Got Move Event:" << ev->pos() << WinWidget->mapToGlobal(QPoint(0,0)); + //WIN->setProperty(NativeWindow::GlobalPos, WinWidget->mapToGlobal(QPoint(0,0)) ); QFrame::moveEvent(ev); } -- cgit From a06db39550f3ee0a96dd5e75aa4a5cc724587324 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Thu, 29 Jun 2017 12:00:02 -0400 Subject: Fix the bitwise operations for the resize XCB operation --- src-qt5/core/libLumina/NativeWindowSystem.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/NativeWindowSystem.cpp b/src-qt5/core/libLumina/NativeWindowSystem.cpp index 5f2c8b6e..cea0e924 100644 --- a/src-qt5/core/libLumina/NativeWindowSystem.cpp +++ b/src-qt5/core/libLumina/NativeWindowSystem.cpp @@ -484,13 +484,13 @@ void NativeWindowSystem::ChangeWindowProperties(NativeWindow* win, QList< Native QSize sz = vals[ props.indexOf(NativeWindow::Size) ] .toSize(); valList.width = sz.width(); valList.height = sz.height(); - mask = mask & XCB_CONFIG_WINDOW_WIDTH & XCB_CONFIG_WINDOW_HEIGHT; + mask = mask | XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT; } if(props.contains(NativeWindow::GlobalPos)){ QPoint pt = vals[ props.indexOf(NativeWindow::GlobalPos) ] .toPoint(); valList.x = pt.x(); valList.y = pt.y(); - mask = mask & XCB_CONFIG_WINDOW_X & XCB_CONFIG_WINDOW_Y; + mask = mask | XCB_CONFIG_WINDOW_X | XCB_CONFIG_WINDOW_Y; } xcb_configure_window_aux(QX11Info::connection(), win->id(), mask, &valList); } -- cgit From 9a8aa1fdf09be158a35737c3331ca1e08d844993 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Thu, 29 Jun 2017 12:13:12 -0400 Subject: Quick change to some debugging --- src-qt5/core/libLumina/RootSubWindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/RootSubWindow.cpp b/src-qt5/core/libLumina/RootSubWindow.cpp index 190ec3aa..568c5dee 100644 --- a/src-qt5/core/libLumina/RootSubWindow.cpp +++ b/src-qt5/core/libLumina/RootSubWindow.cpp @@ -265,7 +265,7 @@ void RootSubWindow::propertiesChanged(QList props, QList otherB->setIcon(vals[i].value()); break; case NativeWindow::GlobalPos: - qDebug() << "Got Global Pos:" << vals[i].toPoint(); + qDebug() << "Got Global Pos:" << WIN->geometry().topLeft() << vals[i].toPoint(); this->move( WIN->geometry().topLeft() ); break; case NativeWindow::Size: -- cgit From 4f98326bc7c3b8f93c0f86059c813bdf866c2ddf Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Thu, 29 Jun 2017 12:41:49 -0400 Subject: Fix up the saving/using of the global position property --- src-qt5/core/libLumina/RootSubWindow.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/RootSubWindow.cpp b/src-qt5/core/libLumina/RootSubWindow.cpp index 568c5dee..abaceca2 100644 --- a/src-qt5/core/libLumina/RootSubWindow.cpp +++ b/src-qt5/core/libLumina/RootSubWindow.cpp @@ -265,8 +265,8 @@ void RootSubWindow::propertiesChanged(QList props, QList otherB->setIcon(vals[i].value()); break; case NativeWindow::GlobalPos: - qDebug() << "Got Global Pos:" << WIN->geometry().topLeft() << vals[i].toPoint(); - this->move( WIN->geometry().topLeft() ); + qDebug() << "Got Global Pos:" << this->pos() << WinWidget->mapToGlobal(QPoint(0,0)) << WIN->geometry().topLeft() << vals[i].toPoint(); + this->move( vals[i].toPoint() - (WinWidget->mapToGlobal(QPoint(0,0)) - this->pos()) ); //WIN->geometry().topLeft() ); break; case NativeWindow::Size: if(WinWidget->size() != vals[i].toSize()){ @@ -438,6 +438,6 @@ void RootSubWindow::resizeEvent(QResizeEvent *ev){ void RootSubWindow::moveEvent(QMoveEvent *ev){ qDebug() << "Got Move Event:" << ev->pos() << WinWidget->mapToGlobal(QPoint(0,0)); - //WIN->setProperty(NativeWindow::GlobalPos, WinWidget->mapToGlobal(QPoint(0,0)) ); + WIN->setProperty(NativeWindow::GlobalPos, WinWidget->mapToGlobal(QPoint(0,0)) ); QFrame::moveEvent(ev); } -- cgit From c4e76b7425783af1e72ea76b8ab885e97abe9b0b Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Thu, 29 Jun 2017 12:48:09 -0400 Subject: Try to fix up the set geometry/position routine so it does not change the other property --- src-qt5/core/libLumina/NativeWindowSystem.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/NativeWindowSystem.cpp b/src-qt5/core/libLumina/NativeWindowSystem.cpp index cea0e924..b076f474 100644 --- a/src-qt5/core/libLumina/NativeWindowSystem.cpp +++ b/src-qt5/core/libLumina/NativeWindowSystem.cpp @@ -485,12 +485,18 @@ void NativeWindowSystem::ChangeWindowProperties(NativeWindow* win, QList< Native valList.width = sz.width(); valList.height = sz.height(); mask = mask | XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT; + }else{ + valList.width = win->property(NativeWindow::Size).toSize().width(); + valList.height = win->property(NativeWindow::Size).toSize().height(); } if(props.contains(NativeWindow::GlobalPos)){ QPoint pt = vals[ props.indexOf(NativeWindow::GlobalPos) ] .toPoint(); valList.x = pt.x(); valList.y = pt.y(); mask = mask | XCB_CONFIG_WINDOW_X | XCB_CONFIG_WINDOW_Y; + }else{ + valList.x = win->property(NativeWindow::GlobalPos).toPoint().x(); + valList.y = win->property(NativeWindow::GlobalPos).toPoint().y(); } xcb_configure_window_aux(QX11Info::connection(), win->id(), mask, &valList); } -- cgit From 796d84c2a1716002c07cdfc9dfabc3f8dc718df9 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Thu, 29 Jun 2017 12:57:13 -0400 Subject: Ensure that we never change the x11 position property on a window - that should always be (0,0) relative to the parent. --- src-qt5/core/libLumina/NativeWindowSystem.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/NativeWindowSystem.cpp b/src-qt5/core/libLumina/NativeWindowSystem.cpp index b076f474..9359b9f2 100644 --- a/src-qt5/core/libLumina/NativeWindowSystem.cpp +++ b/src-qt5/core/libLumina/NativeWindowSystem.cpp @@ -477,19 +477,19 @@ void NativeWindowSystem::ChangeWindowProperties(NativeWindow* win, QList< Native if(props.contains(NativeWindow::Icon)){ } - if(props.contains(NativeWindow::Size) || props.contains(NativeWindow::GlobalPos) ){ + if(props.contains(NativeWindow::Size) ){//|| props.contains(NativeWindow::GlobalPos) ){ xcb_configure_window_value_list_t valList; uint16_t mask = 0; - if(props.contains(NativeWindow::Size)){ + //if(props.contains(NativeWindow::Size)){ QSize sz = vals[ props.indexOf(NativeWindow::Size) ] .toSize(); valList.width = sz.width(); valList.height = sz.height(); mask = mask | XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT; - }else{ + /*}else{ valList.width = win->property(NativeWindow::Size).toSize().width(); valList.height = win->property(NativeWindow::Size).toSize().height(); - } - if(props.contains(NativeWindow::GlobalPos)){ + }*/ + /*if(props.contains(NativeWindow::GlobalPos)){ QPoint pt = vals[ props.indexOf(NativeWindow::GlobalPos) ] .toPoint(); valList.x = pt.x(); valList.y = pt.y(); @@ -497,7 +497,7 @@ void NativeWindowSystem::ChangeWindowProperties(NativeWindow* win, QList< Native }else{ valList.x = win->property(NativeWindow::GlobalPos).toPoint().x(); valList.y = win->property(NativeWindow::GlobalPos).toPoint().y(); - } + }*/ xcb_configure_window_aux(QX11Info::connection(), win->id(), mask, &valList); } if(props.contains(NativeWindow::Name)){ -- cgit From a4b1242e9516a52f0b0b3dc3377f5fd1620ce5a6 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Thu, 29 Jun 2017 13:00:34 -0400 Subject: de-activate the global position change notifications within the event filter - the WM handles that. --- src-qt5/core/libLumina/NativeEventFilter.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/NativeEventFilter.cpp b/src-qt5/core/libLumina/NativeEventFilter.cpp index 28432222..754bdb8f 100644 --- a/src-qt5/core/libLumina/NativeEventFilter.cpp +++ b/src-qt5/core/libLumina/NativeEventFilter.cpp @@ -227,10 +227,12 @@ bool EventFilter::nativeEventFilter(const QByteArray &eventType, void *message, //============================== case XCB_CONFIGURE_NOTIFY: //qDebug() << "Configure Notify Event"; - obj->emit WindowPropertiesChanged( ((xcb_configure_notify_event_t*)ev)->window, + /*obj->emit WindowPropertiesChanged( ((xcb_configure_notify_event_t*)ev)->window, QList() << NativeWindow::GlobalPos << NativeWindow::Size, QList() << QPoint(((xcb_configure_notify_event_t*)ev)->x, ((xcb_configure_notify_event_t*)ev)->y) << - QSize(((xcb_configure_notify_event_t*)ev)->width, ((xcb_configure_notify_event_t*)ev)->height) ); + QSize(((xcb_configure_notify_event_t*)ev)->width, ((xcb_configure_notify_event_t*)ev)->height) );*/ + obj->emit WindowPropertyChanged( ((xcb_configure_notify_event_t*)ev)->window, NativeWindow::Size, + QSize(((xcb_configure_notify_event_t*)ev)->width, ((xcb_configure_notify_event_t*)ev)->height) ); break; //============================== case XCB_CONFIGURE_REQUEST: -- cgit From 5a3ce5ac4fbc5f2169ab9eb7330e2096c73dd639 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Thu, 29 Jun 2017 13:16:53 -0400 Subject: Get the RootSubWindow loading/using icons for the various buttons now. --- src-qt5/core/libLumina/LIconCache.h | 2 +- src-qt5/core/libLumina/RootSubWindow.cpp | 12 +++++++++--- src-qt5/core/libLumina/RootWindow.pri | 3 ++- 3 files changed, 12 insertions(+), 5 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/LIconCache.h b/src-qt5/core/libLumina/LIconCache.h index 0344e0f3..f58a5510 100644 --- a/src-qt5/core/libLumina/LIconCache.h +++ b/src-qt5/core/libLumina/LIconCache.h @@ -69,7 +69,7 @@ private: private slots: void IconLoaded(QString id, QDateTime sync, QByteArray *data); - + signals: void InternalIconLoaded(QString, QDateTime, QByteArray*); //INTERNAL SIGNAL - DO NOT USE in other classes/objects void IconAvailable(QString); //way for classes to listen/reload icons as they change diff --git a/src-qt5/core/libLumina/RootSubWindow.cpp b/src-qt5/core/libLumina/RootSubWindow.cpp index abaceca2..d2ec7503 100644 --- a/src-qt5/core/libLumina/RootSubWindow.cpp +++ b/src-qt5/core/libLumina/RootSubWindow.cpp @@ -13,6 +13,8 @@ #define WIN_BORDER 5 +#include + // === PUBLIC === RootSubWindow::RootSubWindow(QWidget *root, NativeWindow *win) : QFrame(root){ this->setAttribute(Qt::WA_DeleteOnClose); @@ -166,8 +168,11 @@ void RootSubWindow::initWindowFrame(){ mainLayout->setSpacing(0); titleBar->setSpacing(1); titleBar->setContentsMargins(0,0,0,0); - //this->setLayout(mainLayout); - //qDebug() << " - Done"; + //Now load the icons for the button + LIconCache::instance()->loadIcon(closeB, "window-close"); + LIconCache::instance()->loadIcon(maxB, "window-maximize"); + LIconCache::instance()->loadIcon(minB, "window-minimize"); + LIconCache::instance()->loadIcon(otherB, "list"); } void RootSubWindow::LoadProperties( QList< NativeWindow::Property> list){ @@ -262,7 +267,8 @@ void RootSubWindow::propertiesChanged(QList props, QList break; case NativeWindow::Icon: //qDebug() << "Got Icon Change:" << vals[i]; - otherB->setIcon(vals[i].value()); + if(vals[i].value().isNull() ){ LIconCache::instance()->loadIcon(otherB, "window-close"); } + else{ otherB->setIcon(vals[i].value()); } break; case NativeWindow::GlobalPos: qDebug() << "Got Global Pos:" << this->pos() << WinWidget->mapToGlobal(QPoint(0,0)) << WIN->geometry().topLeft() << vals[i].toPoint(); diff --git a/src-qt5/core/libLumina/RootWindow.pri b/src-qt5/core/libLumina/RootWindow.pri index 35e0e770..e4d5f00b 100644 --- a/src-qt5/core/libLumina/RootWindow.pri +++ b/src-qt5/core/libLumina/RootWindow.pri @@ -10,4 +10,5 @@ INCLUDEPATH *= ${PWD} # include other library dependencies include(LUtils.pri) -include(NativeWindow.pri); +include(NativeWindow.pri) +include(LIconCache.pri) -- cgit From 8fb12e24a67156e0ed6087592a4c5fe564f4462d Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Thu, 29 Jun 2017 13:20:59 -0400 Subject: Also clean up the default stylesheet for the window frame right now --- src-qt5/core/libLumina/RootSubWindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/RootSubWindow.cpp b/src-qt5/core/libLumina/RootSubWindow.cpp index d2ec7503..cab02db4 100644 --- a/src-qt5/core/libLumina/RootSubWindow.cpp +++ b/src-qt5/core/libLumina/RootSubWindow.cpp @@ -162,7 +162,7 @@ void RootSubWindow::initWindowFrame(){ maxB->setObjectName("Button_Maximize"); otherM->setObjectName("Menu_Actions"); titleLabel->setObjectName("Label_Title"); - this->setStyleSheet("QWidget#WindowFrame{background-color: rgba(0,0,0,125);} QWidget#Label_Title{background-color: transparent; color: white; }"); + this->setStyleSheet("QWidget#WindowFrame{background-color: rgba(0,0,0,125);} QWidget#Label_Title{background-color: transparent; color: white; } QToolButton{background-color: transparent; border-color: transparent; } QToolButton::hover{border-color: white;}"); //And adjust the margins mainLayout->setContentsMargins(WIN_BORDER,WIN_BORDER,WIN_BORDER,WIN_BORDER); //default border mainLayout->setSpacing(0); -- cgit From 1325f89e7b9b8baee10c47ef8473bffd5052e9b5 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Thu, 29 Jun 2017 13:29:00 -0400 Subject: Some more tweaks to the default stylesheet for the window frame. --- src-qt5/core/libLumina/RootSubWindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/RootSubWindow.cpp b/src-qt5/core/libLumina/RootSubWindow.cpp index cab02db4..1814776a 100644 --- a/src-qt5/core/libLumina/RootSubWindow.cpp +++ b/src-qt5/core/libLumina/RootSubWindow.cpp @@ -162,7 +162,7 @@ void RootSubWindow::initWindowFrame(){ maxB->setObjectName("Button_Maximize"); otherM->setObjectName("Menu_Actions"); titleLabel->setObjectName("Label_Title"); - this->setStyleSheet("QWidget#WindowFrame{background-color: rgba(0,0,0,125);} QWidget#Label_Title{background-color: transparent; color: white; } QToolButton{background-color: transparent; border-color: transparent; } QToolButton::hover{border-color: white;}"); + this->setStyleSheet("QWidget#WindowFrame{background-color: rgba(0,0,0,125);} QWidget#Label_Title{background-color: transparent; color: white; } QToolButton{background-color: transparent; border: 1px solid transparent; } QToolButton::hover{border-color: white;} QToolButton::menu-arrow{ image: none; }"); //And adjust the margins mainLayout->setContentsMargins(WIN_BORDER,WIN_BORDER,WIN_BORDER,WIN_BORDER); //default border mainLayout->setSpacing(0); -- cgit From 06e86f64225d09ce1896f1ba860dbb1cedd71568 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Thu, 29 Jun 2017 13:40:19 -0400 Subject: Add in a "show" animation for windows when they appear This is a good example of how animations can be setup/used in the window --- src-qt5/core/libLumina/RootSubWindow.cpp | 14 ++++++++++++-- src-qt5/core/libLumina/RootSubWindow.h | 3 +++ 2 files changed, 15 insertions(+), 2 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/RootSubWindow.cpp b/src-qt5/core/libLumina/RootSubWindow.cpp index 1814776a..bf242eff 100644 --- a/src-qt5/core/libLumina/RootSubWindow.cpp +++ b/src-qt5/core/libLumina/RootSubWindow.cpp @@ -136,6 +136,9 @@ void RootSubWindow::initWindowFrame(){ maxB = new QToolButton(this); minB = new QToolButton(this); otherB = new QToolButton(this); + anim = new QPropertyAnimation(this); + anim->setTargetObject(this); + anim->setDuration(300); //1/3 second (appx) titleLabel = new QLabel(this); titleLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); otherM = new QMenu(this); //menu of other actions @@ -162,12 +165,13 @@ void RootSubWindow::initWindowFrame(){ maxB->setObjectName("Button_Maximize"); otherM->setObjectName("Menu_Actions"); titleLabel->setObjectName("Label_Title"); - this->setStyleSheet("QWidget#WindowFrame{background-color: rgba(0,0,0,125);} QWidget#Label_Title{background-color: transparent; color: white; } QToolButton{background-color: transparent; border: 1px solid transparent; } QToolButton::hover{border-color: white;} QToolButton::menu-arrow{ image: none; }"); + this->setStyleSheet("QWidget#WindowFrame{background-color: rgba(0,0,0,125);} QWidget#Label_Title{background-color: transparent; color: white; } QToolButton{background-color: transparent; border: 1px solid transparent; } QToolButton::hover{border-color: white;} QToolButton::pressed{ background-color: white; } QToolButton::menu-arrow{ image: none; }"); //And adjust the margins mainLayout->setContentsMargins(WIN_BORDER,WIN_BORDER,WIN_BORDER,WIN_BORDER); //default border mainLayout->setSpacing(0); titleBar->setSpacing(1); titleBar->setContentsMargins(0,0,0,0); + //Now load the icons for the button LIconCache::instance()->loadIcon(closeB, "window-close"); LIconCache::instance()->loadIcon(maxB, "window-maximize"); @@ -259,7 +263,13 @@ void RootSubWindow::propertiesChanged(QList props, QList switch(props[i]){ case NativeWindow::Visible: //qDebug() << "Got Visibility Change:" << vals[i]; - if(vals[i].toBool()){ WinWidget->setVisible(true); this->show(); } + if(vals[i].toBool()){ + WinWidget->setVisible(true); + this->show(); + anim->setPropertyName("windowOpacity"); + anim->setStartValue(0.0); anim->setEndValue(1.0); + anim->start(); + } else{ this->hide(); } break; case NativeWindow::Title: diff --git a/src-qt5/core/libLumina/RootSubWindow.h b/src-qt5/core/libLumina/RootSubWindow.h index cb502107..5e291aa3 100644 --- a/src-qt5/core/libLumina/RootSubWindow.h +++ b/src-qt5/core/libLumina/RootSubWindow.h @@ -18,6 +18,7 @@ #include #include #include +#include #include @@ -47,6 +48,8 @@ private: QToolButton *closeB, *maxB, *minB, *otherB; QLabel *titleLabel; QMenu *otherM; //menu of other actions + //Other random objects (animations,etc) + QPropertyAnimation *anim; void initWindowFrame(); void LoadProperties( QList< NativeWindow::Property> list); -- cgit From 8e9676547274d3bd63d5f54a583ceb79f775f359 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Thu, 29 Jun 2017 13:49:55 -0400 Subject: Make sure we set the root flag that window opacity is supported. --- src-qt5/core/libLumina/NativeWindowSystem.cpp | 7 ++++--- src-qt5/core/libLumina/RootSubWindow.cpp | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/NativeWindowSystem.cpp b/src-qt5/core/libLumina/NativeWindowSystem.cpp index 9359b9f2..d90b9dc1 100644 --- a/src-qt5/core/libLumina/NativeWindowSystem.cpp +++ b/src-qt5/core/libLumina/NativeWindowSystem.cpp @@ -65,7 +65,7 @@ public: } QStringList atoms; - atoms << "WM_TAKE_FOCUS" << "WM_DELETE_WINDOW" << "WM_PROTOCOLS" + atoms << "WM_TAKE_FOCUS" << "WM_DELETE_WINDOW" << "WM_PROTOCOLS" << "_NET_WM_WINDOW_OPACITY" << "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 @@ -560,14 +560,15 @@ void NativeWindowSystem::setRoot_supportedActions(){ obj->EWMH._NET_WM_ICON, obj->EWMH._NET_WM_ICON_NAME, obj->EWMH._NET_WM_DESKTOP, - /*_NET_WINDOW_TYPE (and all the various types)*/ + obj->ATOMS["_NET_WM_WINDOW_OPACITY"], + /*_NET_WINDOW_TYPE (and all the various types - 15 in total*/ obj->EWMH._NET_WM_WINDOW_TYPE, obj->EWMH._NET_WM_WINDOW_TYPE_DESKTOP, obj->EWMH._NET_WM_WINDOW_TYPE_DOCK, obj->EWMH._NET_WM_WINDOW_TYPE_TOOLBAR, obj->EWMH._NET_WM_WINDOW_TYPE_MENU, obj->EWMH._NET_WM_WINDOW_TYPE_UTILITY, obj->EWMH._NET_WM_WINDOW_TYPE_SPLASH, obj->EWMH._NET_WM_WINDOW_TYPE_DIALOG, obj->EWMH._NET_WM_WINDOW_TYPE_NORMAL, obj->EWMH._NET_WM_WINDOW_TYPE_DROPDOWN_MENU, obj->EWMH._NET_WM_WINDOW_TYPE_POPUP_MENU, obj->EWMH._NET_WM_WINDOW_TYPE_TOOLTIP, obj->EWMH._NET_WM_WINDOW_TYPE_NOTIFICATION, obj->EWMH._NET_WM_WINDOW_TYPE_COMBO, obj->EWMH._NET_WM_WINDOW_TYPE_DND, }; - xcb_ewmh_set_supported(&obj->EWMH, QX11Info::appScreen(), 19,list); + xcb_ewmh_set_supported(&obj->EWMH, QX11Info::appScreen(), 20,list); } void NativeWindowSystem::setRoot_numberOfWorkspaces(QStringList names){ diff --git a/src-qt5/core/libLumina/RootSubWindow.cpp b/src-qt5/core/libLumina/RootSubWindow.cpp index bf242eff..88dca132 100644 --- a/src-qt5/core/libLumina/RootSubWindow.cpp +++ b/src-qt5/core/libLumina/RootSubWindow.cpp @@ -265,10 +265,10 @@ void RootSubWindow::propertiesChanged(QList props, QList //qDebug() << "Got Visibility Change:" << vals[i]; if(vals[i].toBool()){ WinWidget->setVisible(true); - this->show(); anim->setPropertyName("windowOpacity"); anim->setStartValue(0.0); anim->setEndValue(1.0); anim->start(); + this->show(); } else{ this->hide(); } break; -- cgit From 1b8947f958d5ad1600a9eff5fe5fdf0f327d6926 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Thu, 29 Jun 2017 14:08:35 -0400 Subject: Add some window close debugging, and change the setVisible animation to a window zoom rather than opacity (the frame is not technically an independant window). --- src-qt5/core/libLumina/NativeWindowSystem.cpp | 2 ++ src-qt5/core/libLumina/RootSubWindow.cpp | 5 +++-- 2 files changed, 5 insertions(+), 2 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/NativeWindowSystem.cpp b/src-qt5/core/libLumina/NativeWindowSystem.cpp index d90b9dc1..ad5c969c 100644 --- a/src-qt5/core/libLumina/NativeWindowSystem.cpp +++ b/src-qt5/core/libLumina/NativeWindowSystem.cpp @@ -721,9 +721,11 @@ void NativeWindowSystem::WindowCloseDetected(WId id){ NativeWindow *win = findWindow(id); qDebug() << "Got Window Closed" << id << win; if(win!=0){ + qDebug() << "Old Window List:" << NWindows.length(); NWindows.removeAll(win); win->emit WindowClosed(id); win->deleteLater(); + qDebug() << " - Now:" << NWindows.length(); }else{ win = findTrayWindow(id); if(win!=0){ diff --git a/src-qt5/core/libLumina/RootSubWindow.cpp b/src-qt5/core/libLumina/RootSubWindow.cpp index 88dca132..0aa97c54 100644 --- a/src-qt5/core/libLumina/RootSubWindow.cpp +++ b/src-qt5/core/libLumina/RootSubWindow.cpp @@ -265,8 +265,9 @@ void RootSubWindow::propertiesChanged(QList props, QList //qDebug() << "Got Visibility Change:" << vals[i]; if(vals[i].toBool()){ WinWidget->setVisible(true); - anim->setPropertyName("windowOpacity"); - anim->setStartValue(0.0); anim->setEndValue(1.0); + anim->setPropertyName("geometry"); + anim->setStartValue( QRect(this->geometry().center(), QSize(0,0)) ); + anim->setEndValue(this->geometry()); anim->start(); this->show(); } -- cgit From a512f8b35b20fe2c1ab8f1c26a2261b22dc0a253 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Thu, 29 Jun 2017 14:25:50 -0400 Subject: Clean up a bunch of debugging, and add a "closing" animation to the rootSubWindow as well. --- src-qt5/core/libLumina/NativeEventFilter.cpp | 6 +++--- src-qt5/core/libLumina/NativeWindowSystem.cpp | 14 ++++++++------ src-qt5/core/libLumina/NativeWindowSystem.h | 2 +- src-qt5/core/libLumina/RootSubWindow.cpp | 20 +++++++++++++------- 4 files changed, 25 insertions(+), 17 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/NativeEventFilter.cpp b/src-qt5/core/libLumina/NativeEventFilter.cpp index 754bdb8f..74402690 100644 --- a/src-qt5/core/libLumina/NativeEventFilter.cpp +++ b/src-qt5/core/libLumina/NativeEventFilter.cpp @@ -177,7 +177,7 @@ bool EventFilter::nativeEventFilter(const QByteArray &eventType, void *message, break; //============================== case XCB_MAP_NOTIFY: - qDebug() << "Window Map Event:" << ((xcb_map_notify_event_t *)ev)->window; + //qDebug() << "Window Map Event:" << ((xcb_map_notify_event_t *)ev)->window; obj->emit WindowPropertyChanged( ((xcb_map_notify_event_t *)ev)->window, NativeWindow::Visible, true); break; //This is just a notification that a window was mapped - nothing needs to change here case XCB_MAP_REQUEST: @@ -186,11 +186,11 @@ bool EventFilter::nativeEventFilter(const QByteArray &eventType, void *message, break; //============================== case XCB_CREATE_NOTIFY: - qDebug() << "Window Create Event"; + //qDebug() << "Window Create Event"; break; //============================== case XCB_UNMAP_NOTIFY: - qDebug() << "Window Unmap Event:" << ((xcb_unmap_notify_event_t *)ev)->window; + //qDebug() << "Window Unmap Event:" << ((xcb_unmap_notify_event_t *)ev)->window; obj->emit WindowPropertyChanged( ((xcb_map_notify_event_t *)ev)->window, NativeWindow::Visible, false); break; //============================== diff --git a/src-qt5/core/libLumina/NativeWindowSystem.cpp b/src-qt5/core/libLumina/NativeWindowSystem.cpp index ad5c969c..82ce8d1f 100644 --- a/src-qt5/core/libLumina/NativeWindowSystem.cpp +++ b/src-qt5/core/libLumina/NativeWindowSystem.cpp @@ -263,15 +263,17 @@ NativeWindowSystem::MouseButton NativeWindowSystem::MouseToQt(int keycode){ } // === PRIVATE === -NativeWindow* NativeWindowSystem::findWindow(WId id){ +NativeWindow* NativeWindowSystem::findWindow(WId id, bool checkRelated){ //qDebug() << "Find Window:" << id; for(int i=0; iisRelatedTo(id)){ qDebug() << " -- Got Window Match!" << id; return NWindows[i]; } + if(NWindows[i]->isRelatedTo(id)){ return NWindows[i]; } } //Check to see if this is a transient for some other window - WId tid = obj->getTransientFor(id); - if(tid!=id){ return findWindow(tid); } //call it recursively as needed - //qDebug() << " -- Could not find Window!"; + if(checkRelated){ + WId tid = obj->getTransientFor(id); + if(tid!=id){ return findWindow(tid, checkRelated); } //call it recursively as needed + //qDebug() << " -- Could not find Window!"; + } return 0; } @@ -718,7 +720,7 @@ void NativeWindowSystem::NewTrayWindowDetected(WId id){ } void NativeWindowSystem::WindowCloseDetected(WId id){ - NativeWindow *win = findWindow(id); + NativeWindow *win = findWindow(id, false); qDebug() << "Got Window Closed" << id << win; if(win!=0){ qDebug() << "Old Window List:" << NWindows.length(); diff --git a/src-qt5/core/libLumina/NativeWindowSystem.h b/src-qt5/core/libLumina/NativeWindowSystem.h index 7786c87d..008a204f 100644 --- a/src-qt5/core/libLumina/NativeWindowSystem.h +++ b/src-qt5/core/libLumina/NativeWindowSystem.h @@ -23,7 +23,7 @@ private: QList TWindows; //Simplifications to find an already-created window object - NativeWindow* findWindow(WId id); + NativeWindow* findWindow(WId id, bool checkRelated = true); NativeWindow* findTrayWindow(WId id); diff --git a/src-qt5/core/libLumina/RootSubWindow.cpp b/src-qt5/core/libLumina/RootSubWindow.cpp index 0aa97c54..eae5aa39 100644 --- a/src-qt5/core/libLumina/RootSubWindow.cpp +++ b/src-qt5/core/libLumina/RootSubWindow.cpp @@ -138,7 +138,7 @@ void RootSubWindow::initWindowFrame(){ otherB = new QToolButton(this); anim = new QPropertyAnimation(this); anim->setTargetObject(this); - anim->setDuration(300); //1/3 second (appx) + anim->setDuration(200); //1/5 second (appx) titleLabel = new QLabel(this); titleLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); otherM = new QMenu(this); //menu of other actions @@ -165,7 +165,7 @@ void RootSubWindow::initWindowFrame(){ maxB->setObjectName("Button_Maximize"); otherM->setObjectName("Menu_Actions"); titleLabel->setObjectName("Label_Title"); - this->setStyleSheet("QWidget#WindowFrame{background-color: rgba(0,0,0,125);} QWidget#Label_Title{background-color: transparent; color: white; } QToolButton{background-color: transparent; border: 1px solid transparent; } QToolButton::hover{border-color: white;} QToolButton::pressed{ background-color: white; } QToolButton::menu-arrow{ image: none; }"); + this->setStyleSheet("QWidget#WindowFrame{background-color: rgba(0,0,0,125);} QWidget#Label_Title{background-color: transparent; color: white; } QToolButton{background-color: transparent; border: 1px solid transparent; border-radius: 3px; } QToolButton::hover{background-color: rgba(255,255,255,150); } QToolButton::pressed{ background-color: white; } QToolButton::menu-arrow{ image: none; }"); //And adjust the margins mainLayout->setContentsMargins(WIN_BORDER,WIN_BORDER,WIN_BORDER,WIN_BORDER); //default border mainLayout->setSpacing(0); @@ -266,12 +266,18 @@ void RootSubWindow::propertiesChanged(QList props, QList if(vals[i].toBool()){ WinWidget->setVisible(true); anim->setPropertyName("geometry"); - anim->setStartValue( QRect(this->geometry().center(), QSize(0,0)) ); + anim->setStartValue( QRect(this->geometry().center(), QSize(0,0)) ); anim->setEndValue(this->geometry()); anim->start(); this->show(); + }else{ + anim->setPropertyName("geometry"); + anim->setStartValue(this->geometry()); + anim->setEndValue( QRect(this->geometry().center(), QSize(0,0) ) ); + anim->start(); + QTimer::singleShot(anim->duration(), this, SLOT(hide()) ); + //this->hide(); } - else{ this->hide(); } break; case NativeWindow::Title: titleLabel->setText(vals[i].toString()); @@ -282,12 +288,12 @@ void RootSubWindow::propertiesChanged(QList props, QList else{ otherB->setIcon(vals[i].value()); } break; case NativeWindow::GlobalPos: - qDebug() << "Got Global Pos:" << this->pos() << WinWidget->mapToGlobal(QPoint(0,0)) << WIN->geometry().topLeft() << vals[i].toPoint(); + //qDebug() << "Got Global Pos:" << this->pos() << WinWidget->mapToGlobal(QPoint(0,0)) << WIN->geometry().topLeft() << vals[i].toPoint(); this->move( vals[i].toPoint() - (WinWidget->mapToGlobal(QPoint(0,0)) - this->pos()) ); //WIN->geometry().topLeft() ); break; case NativeWindow::Size: if(WinWidget->size() != vals[i].toSize()){ - qDebug() << "Got Widget Size Change:" << vals[i].toSize(); + //qDebug() << "Got Widget Size Change:" << vals[i].toSize(); WinWidget->resize(vals[i].toSize()); this->resize( WIN->geometry().size() ); qDebug() << " - Size after change:" << WinWidget->size() << this->size() << WIN->geometry(); @@ -454,7 +460,7 @@ void RootSubWindow::resizeEvent(QResizeEvent *ev){ }*/ void RootSubWindow::moveEvent(QMoveEvent *ev){ - qDebug() << "Got Move Event:" << ev->pos() << WinWidget->mapToGlobal(QPoint(0,0)); + //qDebug() << "Got Move Event:" << ev->pos() << WinWidget->mapToGlobal(QPoint(0,0)); WIN->setProperty(NativeWindow::GlobalPos, WinWidget->mapToGlobal(QPoint(0,0)) ); QFrame::moveEvent(ev); } -- cgit From f5aa2fcb72bdfdcf7025912b277d9aaf20e038a0 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Thu, 29 Jun 2017 14:31:32 -0400 Subject: Try to fix up some window close/re-open issues --- src-qt5/core/libLumina/NativeWindowSystem.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/NativeWindowSystem.cpp b/src-qt5/core/libLumina/NativeWindowSystem.cpp index 82ce8d1f..c80920c8 100644 --- a/src-qt5/core/libLumina/NativeWindowSystem.cpp +++ b/src-qt5/core/libLumina/NativeWindowSystem.cpp @@ -469,7 +469,7 @@ void NativeWindowSystem::UpdateWindowProperties(NativeWindow* win, QList< Native void NativeWindowSystem::ChangeWindowProperties(NativeWindow* win, QList< NativeWindow::Property > props, QList vals){ if(props.length() == 0 || vals.length()!=props.length() || win ==0 ){ return; } - qDebug() << "Change Window Properties:" << props << vals; + //qDebug() << "Change Window Properties:" << props << vals; if(props.contains(NativeWindow::Title)){ } @@ -513,12 +513,12 @@ void NativeWindowSystem::ChangeWindowProperties(NativeWindow* win, QList< Native } if(props.contains(NativeWindow::Visible)){ - qDebug() << "Check Window Visibility:" << vals[ props.indexOf(NativeWindow::Visible) ]; + //qDebug() << "Check Window Visibility:" << vals[ props.indexOf(NativeWindow::Visible) ]; if( vals[ props.indexOf(NativeWindow::Visible) ].toBool() ){ - qDebug() << " - Map it!"; + //qDebug() << " - Map it!"; xcb_map_window(QX11Info::connection(), win->id()); }else{ - qDebug() << " - Unmap it!"; + //qDebug() << " - Unmap it!"; xcb_unmap_window(QX11Info::connection(), win->id()); } } @@ -657,7 +657,7 @@ int NativeWindowSystem::currentWorkspace(){ //NativeWindowEventFilter interactions void NativeWindowSystem::NewWindowDetected(WId id){ //Make sure this can be managed first - if(findWindow(id) != 0){ return; } //already managed + if(findWindow(id, false) != 0){ qDebug() << "Window Already Managed!!!!"; return; } //already managed xcb_get_window_attributes_cookie_t cookie = xcb_get_window_attributes(QX11Info::connection(), id); xcb_get_window_attributes_reply_t *attr = xcb_get_window_attributes_reply(QX11Info::connection(), cookie, NULL); if(attr == 0){ return; } //could not get attributes of window -- cgit From acfb339551b824f1e89c24364df9c9f330fd8549 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Thu, 29 Jun 2017 14:42:08 -0400 Subject: Some more fixes for the window animations --- src-qt5/core/libLumina/NativeWindowSystem.cpp | 4 ++-- src-qt5/core/libLumina/RootSubWindow.cpp | 17 +++++++++++------ 2 files changed, 13 insertions(+), 8 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/NativeWindowSystem.cpp b/src-qt5/core/libLumina/NativeWindowSystem.cpp index c80920c8..9c55062d 100644 --- a/src-qt5/core/libLumina/NativeWindowSystem.cpp +++ b/src-qt5/core/libLumina/NativeWindowSystem.cpp @@ -722,12 +722,11 @@ void NativeWindowSystem::NewTrayWindowDetected(WId id){ void NativeWindowSystem::WindowCloseDetected(WId id){ NativeWindow *win = findWindow(id, false); qDebug() << "Got Window Closed" << id << win; + qDebug() << "Old Window List:" << NWindows.length(); if(win!=0){ - qDebug() << "Old Window List:" << NWindows.length(); NWindows.removeAll(win); win->emit WindowClosed(id); win->deleteLater(); - qDebug() << " - Now:" << NWindows.length(); }else{ win = findTrayWindow(id); if(win!=0){ @@ -736,6 +735,7 @@ void NativeWindowSystem::WindowCloseDetected(WId id){ win->deleteLater(); } } + qDebug() << " - Now:" << NWindows.length(); } void NativeWindowSystem::WindowPropertyChanged(WId id, NativeWindow::Property prop){ diff --git a/src-qt5/core/libLumina/RootSubWindow.cpp b/src-qt5/core/libLumina/RootSubWindow.cpp index eae5aa39..80d5c82b 100644 --- a/src-qt5/core/libLumina/RootSubWindow.cpp +++ b/src-qt5/core/libLumina/RootSubWindow.cpp @@ -202,7 +202,12 @@ void RootSubWindow::LoadProperties( QList< NativeWindow::Property> list){ void RootSubWindow::clientClosed(){ qDebug() << "Client Closed"; closing = true; - this->close(); + anim->setPropertyName("geometry"); + anim->setStartValue(this->geometry()); + anim->setEndValue( QRect(this->geometry().center(), QSize(0,0) ) ); + anim->start(); + QTimer::singleShot(anim->duration(), this, SLOT(close()) ); + //this->close(); } void RootSubWindow::LoadAllProperties(){ @@ -266,8 +271,8 @@ void RootSubWindow::propertiesChanged(QList props, QList if(vals[i].toBool()){ WinWidget->setVisible(true); anim->setPropertyName("geometry"); - anim->setStartValue( QRect(this->geometry().center(), QSize(0,0)) ); - anim->setEndValue(this->geometry()); + anim->setStartValue( QRect(WIN->geometry().center(), QSize(0,0)) ); + anim->setEndValue(WIN->geometry()); anim->start(); this->show(); }else{ @@ -284,7 +289,7 @@ void RootSubWindow::propertiesChanged(QList props, QList break; case NativeWindow::Icon: //qDebug() << "Got Icon Change:" << vals[i]; - if(vals[i].value().isNull() ){ LIconCache::instance()->loadIcon(otherB, "window-close"); } + if(vals[i].value().isNull() ){ LIconCache::instance()->loadIcon(otherB, "list"); } else{ otherB->setIcon(vals[i].value()); } break; case NativeWindow::GlobalPos: @@ -448,7 +453,7 @@ void RootSubWindow::leaveEvent(QEvent *ev){ void RootSubWindow::resizeEvent(QResizeEvent *ev){ //qDebug() << "Got Resize Event:" << ev->size(); - if(WinWidget->size() != WIN->property(NativeWindow::Size).toSize()){ + if(WinWidget->size() != WIN->property(NativeWindow::Size).toSize() && anim->state()!=QAbstractAnimation::Running){ WIN->requestProperty(NativeWindow::Size, WinWidget->size()); } QFrame::resizeEvent(ev); @@ -461,6 +466,6 @@ void RootSubWindow::resizeEvent(QResizeEvent *ev){ void RootSubWindow::moveEvent(QMoveEvent *ev){ //qDebug() << "Got Move Event:" << ev->pos() << WinWidget->mapToGlobal(QPoint(0,0)); - WIN->setProperty(NativeWindow::GlobalPos, WinWidget->mapToGlobal(QPoint(0,0)) ); + if(!closing && anim->state()!=QAbstractAnimation::Running){ WIN->setProperty(NativeWindow::GlobalPos, WinWidget->mapToGlobal(QPoint(0,0)) ); } QFrame::moveEvent(ev); } -- cgit From e0e184fab30995de316bb6c9bb111785ad9d4f6b Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Thu, 29 Jun 2017 14:46:57 -0400 Subject: Add an animation finished routine so we can re-load any Window settings which are ignored during the animation. --- src-qt5/core/libLumina/RootSubWindow.cpp | 8 ++++++-- src-qt5/core/libLumina/RootSubWindow.h | 1 + 2 files changed, 7 insertions(+), 2 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/RootSubWindow.cpp b/src-qt5/core/libLumina/RootSubWindow.cpp index 80d5c82b..d5a2795d 100644 --- a/src-qt5/core/libLumina/RootSubWindow.cpp +++ b/src-qt5/core/libLumina/RootSubWindow.cpp @@ -139,6 +139,7 @@ void RootSubWindow::initWindowFrame(){ anim = new QPropertyAnimation(this); anim->setTargetObject(this); anim->setDuration(200); //1/5 second (appx) + connect(anim, SIGNAL(finished()), this, SLOT(animFinished()) ); titleLabel = new QLabel(this); titleLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); otherM = new QMenu(this); //menu of other actions @@ -258,8 +259,6 @@ void RootSubWindow::startResizing(){ } - - // === PRIVATE SLOTS === void RootSubWindow::propertiesChanged(QList props, QList vals){ for(int i=0; i props, QList } } +void RootSubWindow::animFinished(){ + if(anim->propertyName()=="geometry"){ this->setGeometry(this->geometry()); } //make sure to send one more resize/move event + +} + // === PROTECTED === void RootSubWindow::mousePressEvent(QMouseEvent *ev){ //qDebug() << "Frame Mouse Press Event"; diff --git a/src-qt5/core/libLumina/RootSubWindow.h b/src-qt5/core/libLumina/RootSubWindow.h index 5e291aa3..25c6596a 100644 --- a/src-qt5/core/libLumina/RootSubWindow.h +++ b/src-qt5/core/libLumina/RootSubWindow.h @@ -71,6 +71,7 @@ public slots: private slots: void propertiesChanged(QList, QList); + void animFinished(); protected: void mousePressEvent(QMouseEvent*); -- cgit From aff9df01be61d2fb969ba38ba8c5721fac8384f6 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Thu, 29 Jun 2017 14:50:28 -0400 Subject: Fix up the animation finished routine - should work fine now --- src-qt5/core/libLumina/RootSubWindow.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/RootSubWindow.cpp b/src-qt5/core/libLumina/RootSubWindow.cpp index d5a2795d..2e773e9d 100644 --- a/src-qt5/core/libLumina/RootSubWindow.cpp +++ b/src-qt5/core/libLumina/RootSubWindow.cpp @@ -325,7 +325,10 @@ void RootSubWindow::propertiesChanged(QList props, QList } void RootSubWindow::animFinished(){ - if(anim->propertyName()=="geometry"){ this->setGeometry(this->geometry()); } //make sure to send one more resize/move event + if(anim->propertyName()=="geometry"){ + WIN->requestProperty(NativeWindow::Size, WinWidget->size()); + WIN->setProperty(NativeWindow::GlobalPos, WinWidget->mapToGlobal(QPoint(0,0)) ); + } } -- cgit From 5911c0b061840588626edee15d44ffbe16470301 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Thu, 29 Jun 2017 14:55:39 -0400 Subject: add some debugging for the new window routine (need window ID's) --- src-qt5/core/libLumina/RootSubWindow.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/RootSubWindow.cpp b/src-qt5/core/libLumina/RootSubWindow.cpp index 2e773e9d..9eb1ff58 100644 --- a/src-qt5/core/libLumina/RootSubWindow.cpp +++ b/src-qt5/core/libLumina/RootSubWindow.cpp @@ -28,6 +28,7 @@ RootSubWindow::RootSubWindow(QWidget *root, NativeWindow *win) : QFrame(root){ connect(WIN, SIGNAL(PropertiesChanged(QList, QList)), this, SLOT(propertiesChanged(QList, QList))); WIN->addFrameWinID(WinWidget->winId()); WIN->emit RequestReparent(WIN->id(), WinWidget->winId(), QPoint(0,0)); + qDebug() << "[NEW WINDOW]" << WIN->id() << WinWidget->winId() << this->winId(); LoadAllProperties(); //QTimer::singleShot(20, this, SLOT(LoadAllProperties()) ); } @@ -300,7 +301,7 @@ void RootSubWindow::propertiesChanged(QList props, QList //qDebug() << "Got Widget Size Change:" << vals[i].toSize(); WinWidget->resize(vals[i].toSize()); this->resize( WIN->geometry().size() ); - qDebug() << " - Size after change:" << WinWidget->size() << this->size() << WIN->geometry(); + //qDebug() << " - Size after change:" << WinWidget->size() << this->size() << WIN->geometry(); } break; case NativeWindow::MinSize: -- cgit From e4823c69c27494cf206cc9b856303deb08740579 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Thu, 29 Jun 2017 15:01:06 -0400 Subject: Add a secondary window ID for all window destroy events. --- src-qt5/core/libLumina/NativeEventFilter.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/NativeEventFilter.cpp b/src-qt5/core/libLumina/NativeEventFilter.cpp index 74402690..dba3146b 100644 --- a/src-qt5/core/libLumina/NativeEventFilter.cpp +++ b/src-qt5/core/libLumina/NativeEventFilter.cpp @@ -197,6 +197,7 @@ bool EventFilter::nativeEventFilter(const QByteArray &eventType, void *message, case XCB_DESTROY_NOTIFY: qDebug() << "Window Closed Event:" << ((xcb_destroy_notify_event_t *)ev)->window; obj->emit WindowDestroyed( ((xcb_destroy_notify_event_t *) ev)->window ); + obj->emit WindowDestroyed( ((xcb_destroy_notify_event_t *) ev)->event ); //sometimes this is the right window instead (window that sent the event) break; //============================== case XCB_FOCUS_IN: -- cgit From 0c877d64113f029e953d3bf27e47ca2c3d21b19c Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Thu, 29 Jun 2017 15:05:04 -0400 Subject: Back out that secondary close ID - unrelated to the actual window that was closed (some internal event identifier) --- src-qt5/core/libLumina/NativeEventFilter.cpp | 1 - 1 file changed, 1 deletion(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/NativeEventFilter.cpp b/src-qt5/core/libLumina/NativeEventFilter.cpp index dba3146b..74402690 100644 --- a/src-qt5/core/libLumina/NativeEventFilter.cpp +++ b/src-qt5/core/libLumina/NativeEventFilter.cpp @@ -197,7 +197,6 @@ bool EventFilter::nativeEventFilter(const QByteArray &eventType, void *message, case XCB_DESTROY_NOTIFY: qDebug() << "Window Closed Event:" << ((xcb_destroy_notify_event_t *)ev)->window; obj->emit WindowDestroyed( ((xcb_destroy_notify_event_t *) ev)->window ); - obj->emit WindowDestroyed( ((xcb_destroy_notify_event_t *) ev)->event ); //sometimes this is the right window instead (window that sent the event) break; //============================== case XCB_FOCUS_IN: -- cgit From 3cc4bb91529afd0a3454a3db86a7d8a7f51fde96 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Thu, 29 Jun 2017 22:31:49 -0400 Subject: Commit another large block of work on Lumina2. 1. Starting to get the compositing put together, but not functional yet. 2. Get the window close routines completely finished, with memory being freed properly on close. 3. Get some of the "reset" of window properties after an animation all setup. Not quite finished yet. --- src-qt5/core/libLumina/NativeEventFilter.cpp | 6 +- src-qt5/core/libLumina/NativeWindow.cpp | 43 +++++--- src-qt5/core/libLumina/NativeWindow.h | 17 ++-- src-qt5/core/libLumina/NativeWindowSystem.cpp | 135 ++++++++++++++++++++------ src-qt5/core/libLumina/RootSubWindow.cpp | 42 +++++--- src-qt5/core/libLumina/RootSubWindow.h | 1 + src-qt5/core/libLumina/RootWindow.cpp | 2 +- 7 files changed, 178 insertions(+), 68 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/NativeEventFilter.cpp b/src-qt5/core/libLumina/NativeEventFilter.cpp index 74402690..b85965ef 100644 --- a/src-qt5/core/libLumina/NativeEventFilter.cpp +++ b/src-qt5/core/libLumina/NativeEventFilter.cpp @@ -181,7 +181,7 @@ bool EventFilter::nativeEventFilter(const QByteArray &eventType, void *message, obj->emit WindowPropertyChanged( ((xcb_map_notify_event_t *)ev)->window, NativeWindow::Visible, true); 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"; + //qDebug() << "Window Map Request Event"; obj->emit WindowCreated( ((xcb_map_request_event_t *) ev)->window ); break; //============================== @@ -195,7 +195,7 @@ bool EventFilter::nativeEventFilter(const QByteArray &eventType, void *message, break; //============================== case XCB_DESTROY_NOTIFY: - qDebug() << "Window Closed Event:" << ((xcb_destroy_notify_event_t *)ev)->window; + //qDebug() << "Window Closed Event:" << ((xcb_destroy_notify_event_t *)ev)->window; obj->emit WindowDestroyed( ((xcb_destroy_notify_event_t *) ev)->window ); break; //============================== @@ -262,7 +262,7 @@ bool EventFilter::nativeEventFilter(const QByteArray &eventType, void *message, obj->emit PossibleDamageEvent( ((xcb_damage_notify_event_t*)ev)->drawable ); //checkDamageID( ((xcb_damage_notify_event_t*)ev)->drawable ); //}else{ - qDebug() << "Default Event:" << (ev->response_type & ~0x80); + //qDebug() << "Default Event:" << (ev->response_type & ~0x80); //} //============================== } diff --git a/src-qt5/core/libLumina/NativeWindow.cpp b/src-qt5/core/libLumina/NativeWindow.cpp index 8853c48e..819661d5 100644 --- a/src-qt5/core/libLumina/NativeWindow.cpp +++ b/src-qt5/core/libLumina/NativeWindow.cpp @@ -10,7 +10,8 @@ NativeWindow::NativeWindow(WId id) : QObject(){ winid = id; frameid = 0; - WIN = QWindow::fromWinId(winid); + dmgID = 0; + //WIN = QWindow::fromWinId(winid); } NativeWindow::~NativeWindow(){ @@ -22,6 +23,10 @@ void NativeWindow::addFrameWinID(WId fid){ frameid = fid; } +void NativeWindow::addDamageID(unsigned int dmg){ + dmgID = dmg; +} + bool NativeWindow::isRelatedTo(WId tmp){ return (relatedTo.contains(tmp) || winid == tmp || frameid == tmp); } @@ -30,47 +35,55 @@ WId NativeWindow::id(){ return winid; } -QWindow* NativeWindow::window(){ - return WIN; +WId NativeWindow::frameId(){ + return frameid; +} + +unsigned int NativeWindow::damageId(){ + return dmgID; } +/*QWindow* NativeWindow::window(){ + return WIN; +}*/ + QVariant NativeWindow::property(NativeWindow::Property prop){ if(hash.contains(prop)){ return hash.value(prop); } else if(prop == NativeWindow::RelatedWindows){ return QVariant::fromValue(relatedTo); } return QVariant(); //null variant } -void NativeWindow::setProperty(NativeWindow::Property prop, QVariant val){ +void NativeWindow::setProperty(NativeWindow::Property prop, QVariant val, bool force){ if(prop == NativeWindow::RelatedWindows){ relatedTo = val.value< QList >(); } - else if(prop == NativeWindow::None || hash.value(prop)==val){ return; } - hash.insert(prop, val); + else if(prop == NativeWindow::None || (!force && hash.value(prop)==val)){ return; } + else{ hash.insert(prop, val); } emit PropertiesChanged(QList() << prop, QList() << val); } -void NativeWindow::setProperties(QList props, QList vals){ +void NativeWindow::setProperties(QList props, QList vals, bool force){ for(int i=0; i=vals.length()){ props.removeAt(i); i--; continue; } //no corresponding value for this propertu - if(props[i] == NativeWindow::None || (hash.value(props[i]) == vals[i]) ){ props.removeAt(i); vals.removeAt(i); i--; continue; } //Invalid property or identical value + if(i>=vals.length()){ props.removeAt(i); i--; continue; } //no corresponding value for this property + if(props[i] == NativeWindow::None || (!force && (hash.value(props[i]) == vals[i])) ){ props.removeAt(i); vals.removeAt(i); i--; continue; } //Invalid property or identical value hash.insert(props[i], vals[i]); } emit PropertiesChanged(props, vals); } -void NativeWindow::requestProperty(NativeWindow::Property prop, QVariant val){ - if(prop == NativeWindow::None || prop == NativeWindow::RelatedWindows || hash.value(prop)==val ){ return; } +void NativeWindow::requestProperty(NativeWindow::Property prop, QVariant val, bool force){ + if(prop == NativeWindow::None || prop == NativeWindow::RelatedWindows || (!force && hash.value(prop)==val) ){ return; } emit RequestPropertiesChange(winid, QList() << prop, QList() << val); } -void NativeWindow::requestProperties(QList props, QList vals){ +void NativeWindow::requestProperties(QList props, QList vals, bool force){ //Verify/adjust inputs as needed for(int i=0; i=vals.length()){ props.removeAt(i); i--; continue; } //no corresponding value for this property - if(props[i] == NativeWindow::None || props[i] == NativeWindow::RelatedWindows || hash.value(props[i])==vals[i] ){ props.removeAt(i); vals.removeAt(i); i--; continue; } //Invalid property or identical value - if( (props[i] == NativeWindow::Visible || props[i] == NativeWindow::Active) && frameid !=0){ + if(props[i] == NativeWindow::None || props[i] == NativeWindow::RelatedWindows || (!force && hash.value(props[i])==vals[i]) ){ props.removeAt(i); vals.removeAt(i); i--; continue; } //Invalid property or identical value + /*if( (props[i] == NativeWindow::Visible || props[i] == NativeWindow::Active) && frameid !=0){ //These particular properties needs to change the frame - not the window itself emit RequestPropertiesChange(frameid, QList() << props[i], QList() << vals[i]); props.removeAt(i); vals.removeAt(i); i--; - } + }*/ } emit RequestPropertiesChange(winid, props, vals); } diff --git a/src-qt5/core/libLumina/NativeWindow.h b/src-qt5/core/libLumina/NativeWindow.h index c87ccb2d..62bb74b5 100644 --- a/src-qt5/core/libLumina/NativeWindow.h +++ b/src-qt5/core/libLumina/NativeWindow.h @@ -60,16 +60,20 @@ public: ~NativeWindow(); void addFrameWinID(WId); + void addDamageID(unsigned int); bool isRelatedTo(WId); WId id(); - QWindow* window(); + WId frameId(); + unsigned int damageId(); + + //QWindow* window(); QVariant property(NativeWindow::Property); - void setProperty(NativeWindow::Property, QVariant); - void setProperties(QList, QList); - void requestProperty(NativeWindow::Property, QVariant); - void requestProperties(QList, QList); + void setProperty(NativeWindow::Property, QVariant, bool force = false); + void setProperties(QList, QList, bool force = false); + void requestProperty(NativeWindow::Property, QVariant, bool force = false); + void requestProperties(QList, QList, bool force = false); QRect geometry(); //this returns the "full" geometry of the window (window + frame) @@ -80,9 +84,10 @@ public slots: private: QHash hash; - QWindow *WIN; + //QWindow *WIN; WId winid, frameid; QList relatedTo; + unsigned int dmgID; signals: //General Notifications diff --git a/src-qt5/core/libLumina/NativeWindowSystem.cpp b/src-qt5/core/libLumina/NativeWindowSystem.cpp index 9c55062d..a8fb550e 100644 --- a/src-qt5/core/libLumina/NativeWindowSystem.cpp +++ b/src-qt5/core/libLumina/NativeWindowSystem.cpp @@ -14,6 +14,8 @@ #include #include #include +#include +#include //XCB Library includes #include @@ -48,6 +50,22 @@ XCB_EVENT_MASK_FOCUS_CHANGE | \ XCB_EVENT_MASK_ENTER_WINDOW) +#define NORMAL_WIN_EVENT_MASK (XCB_EVENT_MASK_BUTTON_PRESS | \ + XCB_EVENT_MASK_BUTTON_RELEASE | \ + XCB_EVENT_MASK_POINTER_MOTION | \ + XCB_EVENT_MASK_BUTTON_MOTION | \ + XCB_EVENT_MASK_EXPOSURE | \ + XCB_EVENT_MASK_STRUCTURE_NOTIFY | \ + XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT | \ + XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY | \ + XCB_EVENT_MASK_ENTER_WINDOW| \ + XCB_EVENT_MASK_PROPERTY_CHANGE) + +inline void registerClientEvents(WId id){ + uint32_t value_list[1] = {NORMAL_WIN_EVENT_MASK}; + xcb_change_window_attributes(QX11Info::connection(), id, XCB_CW_EVENT_MASK, value_list); +} + //Internal XCB private objects class class NativeWindowSystem::p_objects{ public: @@ -66,7 +84,7 @@ public: QStringList atoms; atoms << "WM_TAKE_FOCUS" << "WM_DELETE_WINDOW" << "WM_PROTOCOLS" << "_NET_WM_WINDOW_OPACITY" - << "WM_CHANGE_STATE" << "_NET_SYSTEM_TRAY_OPCODE" << "_NET_SYSTEM_TRAY_ORIENTATION" + << "WM_CHANGE_STATE" << "_NET_SYSTEM_TRAY_OPCODE" << "_NET_SYSTEM_TRAY_ORIENTATION" << "_XEMBED" << "_NET_SYSTEM_TRAY_VISUAL" << QString("_NET_SYSTEM_TRAY_S%1").arg(QString::number(QX11Info::appScreen())); //Create all the requests for the atoms QList reply; @@ -266,7 +284,8 @@ NativeWindowSystem::MouseButton NativeWindowSystem::MouseToQt(int keycode){ NativeWindow* NativeWindowSystem::findWindow(WId id, bool checkRelated){ //qDebug() << "Find Window:" << id; for(int i=0; iisRelatedTo(id)){ return NWindows[i]; } + if(checkRelated && NWindows[i]->isRelatedTo(id)){ return NWindows[i]; } + else if(!checkRelated && id==NWindows[i]->id()){ return NWindows[i]; } } //Check to see if this is a transient for some other window if(checkRelated){ @@ -446,7 +465,10 @@ void NativeWindowSystem::UpdateWindowProperties(NativeWindow* win, QList< Native }*/ win->setProperty(NativeWindow::Workspace, wkspace); } - + if(props.contains(NativeWindow::FrameExtents)){ + //Just assign default values to this - need to automate it later + win->setProperty(NativeWindow::FrameExtents, QVariant::fromValue >(QList() << 5 << 5 << 5+QFontMetrics(QFont()).height() << 5) ); + } if(props.contains(NativeWindow::RelatedWindows)){ WId orig = win->id(); WId tid = obj->getTransientFor(orig); @@ -481,6 +503,8 @@ void NativeWindowSystem::ChangeWindowProperties(NativeWindow* win, QList< Native } if(props.contains(NativeWindow::Size) ){//|| props.contains(NativeWindow::GlobalPos) ){ xcb_configure_window_value_list_t valList; + valList.x = 0; + valList.y = 0; uint16_t mask = 0; //if(props.contains(NativeWindow::Size)){ QSize sz = vals[ props.indexOf(NativeWindow::Size) ] .toSize(); @@ -494,9 +518,9 @@ void NativeWindowSystem::ChangeWindowProperties(NativeWindow* win, QList< Native /*if(props.contains(NativeWindow::GlobalPos)){ QPoint pt = vals[ props.indexOf(NativeWindow::GlobalPos) ] .toPoint(); valList.x = pt.x(); - valList.y = pt.y(); + valList.y = pt.y();*/ mask = mask | XCB_CONFIG_WINDOW_X | XCB_CONFIG_WINDOW_Y; - }else{ + /*}else{ valList.x = win->property(NativeWindow::GlobalPos).toPoint().x(); valList.y = win->property(NativeWindow::GlobalPos).toPoint().y(); }*/ @@ -525,7 +549,7 @@ void NativeWindowSystem::ChangeWindowProperties(NativeWindow* win, QList< Native if(props.contains(NativeWindow::Active)){ //Only one window can be "Active" at a time - so only do anything if this window wants to be active if(vals[props.indexOf(NativeWindow::Active)].toBool() ){ - xcb_ewmh_set_active_window(&obj->EWMH, QX11Info::appScreen(), win->id()); + xcb_ewmh_set_active_window(&obj->EWMH, QX11Info::appScreen(), (win->frameId()==0 ?win->id() : win->frameId())); //Also send the active window a message to take input focus //Send the window a WM_TAKE_FOCUS message xcb_client_message_event_t event; @@ -657,7 +681,7 @@ int NativeWindowSystem::currentWorkspace(){ //NativeWindowEventFilter interactions void NativeWindowSystem::NewWindowDetected(WId id){ //Make sure this can be managed first - if(findWindow(id, false) != 0){ qDebug() << "Window Already Managed!!!!"; return; } //already managed + if(findWindow(id, false) != 0){ qDebug() << "Window Already Managed!!!!"; findWindow(id,false)->setProperty(NativeWindow::Visible, true, true); return; } //already managed xcb_get_window_attributes_cookie_t cookie = xcb_get_window_attributes(QX11Info::connection(), id); xcb_get_window_attributes_reply_t *attr = xcb_get_window_attributes_reply(QX11Info::connection(), cookie, NULL); if(attr == 0){ return; } //could not get attributes of window @@ -666,19 +690,7 @@ void NativeWindowSystem::NewWindowDetected(WId id){ //Now go ahead and create/populate the container for this window NativeWindow *win = new NativeWindow(id); //Register for events from this window - #define NORMAL_WIN_EVENT_MASK (XCB_EVENT_MASK_BUTTON_PRESS | \ - XCB_EVENT_MASK_BUTTON_RELEASE | \ - XCB_EVENT_MASK_POINTER_MOTION | \ - XCB_EVENT_MASK_BUTTON_MOTION | \ - XCB_EVENT_MASK_EXPOSURE | \ - XCB_EVENT_MASK_STRUCTURE_NOTIFY | \ - XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT | \ - XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY | \ - XCB_EVENT_MASK_ENTER_WINDOW| \ - XCB_EVENT_MASK_PROPERTY_CHANGE) - - uint32_t value_list[1] = {NORMAL_WIN_EVENT_MASK}; - xcb_change_window_attributes(QX11Info::connection(), id, XCB_CW_EVENT_MASK, value_list); + registerClientEvents(win->id()); NWindows << win; UpdateWindowProperties(win, NativeWindow::allProperties()); qDebug() << "New Window [& associated ID's]:" << win->id() << win->property(NativeWindow::RelatedWindows); @@ -721,12 +733,14 @@ void NativeWindowSystem::NewTrayWindowDetected(WId id){ void NativeWindowSystem::WindowCloseDetected(WId id){ NativeWindow *win = findWindow(id, false); - qDebug() << "Got Window Closed" << id << win; - qDebug() << "Old Window List:" << NWindows.length(); + //qDebug() << "Got Window Closed" << id << win; + //qDebug() << "Old Window List:" << NWindows.length(); if(win!=0){ NWindows.removeAll(win); + //RequestReparent(id, QX11Info::appRootWindow(), QPoint(0,0)); win->emit WindowClosed(id); - win->deleteLater(); + //qDebug() << "Visible Window Closed!!!"; + //win->deleteLater(); }else{ win = findTrayWindow(id); if(win!=0){ @@ -735,7 +749,7 @@ void NativeWindowSystem::WindowCloseDetected(WId id){ win->deleteLater(); } } - qDebug() << " - Now:" << NWindows.length(); + //qDebug() << " - Now:" << NWindows.length(); } void NativeWindowSystem::WindowPropertyChanged(WId id, NativeWindow::Property prop){ @@ -810,6 +824,29 @@ void NativeWindowSystem::NewMouseRelease(int buttoncode, WId win){ } void NativeWindowSystem::CheckDamageID(WId win){ + for(int i=0; idamageId() == win || NWindows[i]->id() == win || NWindows[i]->frameId()==win){ + //qDebug() << "Got DAMAGE Event"; + /*NativeWindow *WIN = NWindows[i]; + QSize sz = WIN->property(NativeWindow::Size).toSize(); + //Need the graphics context of the window + xcb_gcontext_t gc = xcb_generate_id(QX11Info::connection()); + xcb_screen_t *screen = xcb_setup_roots_iterator(xcb_get_setup(QX11Info::connection())).data; + uint32_t values[1]; + values[0] = screen->black_pixel; + xcb_create_gc(QX11Info::connection(), + gc, + WIN->frameId(), + XCB_GC_BACKGROUND, + values ); + xcb_pixmap_t pix = xcb_generate_id(QX11Info::connection()); + xcb_composite_name_window_pixmap(QX11Info::connection(), WIN->id(), pix); + //Now put this pixmap onto the frame window + xcb_copy_area(QX11Info::connection(), pix, WIN->frameId(), gc, 0,0,0,0,sz.width(), sz.height());*/ + /*xcb_put_image(QX11Info::connection(), XCB_IMAGE_FORMAT_Z_PIXMAP, pix, gc, sz.width(), sz.height(), 0, 0, */ + return; + } + } NativeWindow *WIN = findTrayWindow(win); if(WIN!=0){ UpdateWindowProperties(WIN, QList() << NativeWindow::Icon); @@ -851,10 +888,52 @@ void NativeWindowSystem::RequestPing(WId win){ pingTimer->start(); } -void NativeWindowSystem::RequestReparent(WId client, WId parent, QPoint relorigin){ +void NativeWindowSystem::RequestReparent(WId win, WId container, QPoint relorigin){ + NativeWindow *WIN = findWindow(win); + if(WIN==0){ return; } //could not find corresponding window structure +//Reparent the window into the container + xcb_reparent_window(QX11Info::connection(), win, container, relorigin.x(), relorigin.y()); + //xcb_map_window(QX11Info::connection(), win); + + //Now send the embed event to the app + //qDebug() << " - send _XEMBED event"; + xcb_client_message_event_t event; + event.response_type = XCB_CLIENT_MESSAGE; + event.format = 32; + event.window = win; + event.type = obj->ATOMS["_XEMBED"]; //_XEMBED + event.data.data32[0] = XCB_TIME_CURRENT_TIME; //CurrentTime; + event.data.data32[1] = 0; //XEMBED_EMBEDDED_NOTIFY + event.data.data32[2] = 0; + event.data.data32[3] = container; //WID of the container + 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); + + //Now setup any redirects and return + //this->SelectInput(win, true); //Notify of structure changes + registerClientEvents(win); + //xcb_composite_redirect_window(QX11Info::connection(), win, XCB_COMPOSITE_REDIRECT_MANUAL); //XCB_COMPOSITE_REDIRECT_[MANUAL/AUTOMATIC]); + + //Now map the window (will be a transparent child of the container) + xcb_map_window(QX11Info::connection(), win); + xcb_map_window(QX11Info::connection(), container); + //Now create/register the damage handler + // -- XCB (Note: The XCB damage registration is completely broken at the moment - 9/15/15, Ken Moore) + // -- Retested 6/29/17 (no change) Ken Moore + //xcb_damage_damage_t dmgID = xcb_generate_id(QX11Info::connection()); //This is a typedef for a 32-bit unsigned integer + //xcb_damage_create(QX11Info::connection(), dmgID, win, XCB_DAMAGE_REPORT_LEVEL_RAW_RECTANGLES); + // -- XLib (Note: This is only used because the XCB routine above does not work - needs to be fixed upstream in XCB itself). + Damage dmgID = XDamageCreate(QX11Info::display(), win, XDamageReportRawRectangles); + WIN->addDamageID( (uint) dmgID); //save this for later + //qDebug() << " - Done"; + //return ( (uint) dmgID ); +} +/* xcb_reparent_window(QX11Info::connection(), client, parent, relorigin.x(), relorigin.y()); - //Now enable compositing between these two windows as well - // TODO + //Now ensure that we still get event for these windows + registerClientEvents(client); //make sure we re-do this after reparenting + registerClientEvents(parent); xcb_map_window(QX11Info::connection(), parent); -} +}*/ diff --git a/src-qt5/core/libLumina/RootSubWindow.cpp b/src-qt5/core/libLumina/RootSubWindow.cpp index 9eb1ff58..92a85291 100644 --- a/src-qt5/core/libLumina/RootSubWindow.cpp +++ b/src-qt5/core/libLumina/RootSubWindow.cpp @@ -30,11 +30,11 @@ RootSubWindow::RootSubWindow(QWidget *root, NativeWindow *win) : QFrame(root){ WIN->emit RequestReparent(WIN->id(), WinWidget->winId(), QPoint(0,0)); qDebug() << "[NEW WINDOW]" << WIN->id() << WinWidget->winId() << this->winId(); LoadAllProperties(); - //QTimer::singleShot(20, this, SLOT(LoadAllProperties()) ); } RootSubWindow::~RootSubWindow(){ - + //qDebug() << "Visible Window Destroyed"; + WIN->deleteLater(); } WId RootSubWindow::id(){ @@ -202,30 +202,30 @@ void RootSubWindow::LoadProperties( QList< NativeWindow::Property> list){ // === PUBLIC SLOTS === void RootSubWindow::clientClosed(){ - qDebug() << "Client Closed"; + //qDebug() << "Client Closed"; closing = true; + /*animResetProp = QRect(WIN->property(NativeWindow::GlobalPos).toPoint(), WIN->property(NativeWindow::Size).toSize()); anim->setPropertyName("geometry"); anim->setStartValue(this->geometry()); anim->setEndValue( QRect(this->geometry().center(), QSize(0,0) ) ); anim->start(); - QTimer::singleShot(anim->duration(), this, SLOT(close()) ); - //this->close(); + QTimer::singleShot(anim->duration(), this, SLOT(close()) );*/ + if(anim->state()!=QAbstractAnimation::Running){ this->close(); } } void RootSubWindow::LoadAllProperties(){ QList< NativeWindow::Property> list = WIN->allProperties(); - /*list.removeAll(NativeWindow::Visible); - list << NativeWindow::Visible;*/ LoadProperties(list); } //Button Actions - public so they can be tied to key shortcuts and stuff as well void RootSubWindow::toggleMinimize(){ - + WIN->setProperty(NativeWindow::Visible, false); + QTimer::singleShot(2000, this, SLOT(toggleMaximize()) ); } void RootSubWindow::toggleMaximize(){ - + WIN->setProperty(NativeWindow::Visible, true); } void RootSubWindow::triggerClose(){ @@ -270,12 +270,14 @@ void RootSubWindow::propertiesChanged(QList props, QList //qDebug() << "Got Visibility Change:" << vals[i]; if(vals[i].toBool()){ WinWidget->setVisible(true); + animResetProp = WIN->geometry(); //show event - might not have the right geom yet anim->setPropertyName("geometry"); anim->setStartValue( QRect(WIN->geometry().center(), QSize(0,0)) ); anim->setEndValue(WIN->geometry()); anim->start(); this->show(); }else{ + animResetProp = this->geometry(); //hide event - should already be the right geom anim->setPropertyName("geometry"); anim->setStartValue(this->geometry()); anim->setEndValue( QRect(this->geometry().center(), QSize(0,0) ) ); @@ -298,10 +300,10 @@ void RootSubWindow::propertiesChanged(QList props, QList break; case NativeWindow::Size: if(WinWidget->size() != vals[i].toSize()){ - //qDebug() << "Got Widget Size Change:" << vals[i].toSize(); + qDebug() << "Got Widget Size Change:" << vals[i].toSize(); WinWidget->resize(vals[i].toSize()); this->resize( WIN->geometry().size() ); - //qDebug() << " - Size after change:" << WinWidget->size() << this->size() << WIN->geometry(); + qDebug() << " - Size after change:" << WinWidget->size() << this->size() << WIN->geometry(); } break; case NativeWindow::MinSize: @@ -326,15 +328,25 @@ void RootSubWindow::propertiesChanged(QList props, QList } void RootSubWindow::animFinished(){ - if(anim->propertyName()=="geometry"){ - WIN->requestProperty(NativeWindow::Size, WinWidget->size()); - WIN->setProperty(NativeWindow::GlobalPos, WinWidget->mapToGlobal(QPoint(0,0)) ); + if(closing){ this->close(); return;} + else if(anim->propertyName()=="geometry"){ + if(!animResetProp.isNull()){ + qDebug() << "Animation Finished, Reset Geometry:" << animResetProp; + qDebug() << " - Starting Value:" << anim->startValue(); + qDebug() << " - Ending Value:" << anim->endValue(); + qDebug() << " - Current Value:" << this->geometry(); + this->setGeometry( animResetProp.toRect() ); + WIN->requestProperty(NativeWindow::Size, WinWidget->size(), true); + WIN->setProperty(NativeWindow::GlobalPos, WinWidget->mapToGlobal(QPoint(0,0)),true ); + } } - + animResetProp = QVariant(); //clear the variable } // === PROTECTED === void RootSubWindow::mousePressEvent(QMouseEvent *ev){ + activate(); + this->raise(); //qDebug() << "Frame Mouse Press Event"; offset.setX(0); offset.setY(0); if(activeState != Normal){ return; } // do nothing - already in a state of grabbed mouse diff --git a/src-qt5/core/libLumina/RootSubWindow.h b/src-qt5/core/libLumina/RootSubWindow.h index 25c6596a..bd20291e 100644 --- a/src-qt5/core/libLumina/RootSubWindow.h +++ b/src-qt5/core/libLumina/RootSubWindow.h @@ -50,6 +50,7 @@ private: QMenu *otherM; //menu of other actions //Other random objects (animations,etc) QPropertyAnimation *anim; + QVariant animResetProp; void initWindowFrame(); void LoadProperties( QList< NativeWindow::Property> list); diff --git a/src-qt5/core/libLumina/RootWindow.cpp b/src-qt5/core/libLumina/RootWindow.cpp index 17a9ecd7..2fee5d96 100644 --- a/src-qt5/core/libLumina/RootWindow.cpp +++ b/src-qt5/core/libLumina/RootWindow.cpp @@ -184,7 +184,7 @@ void RootWindow::NewWindow(NativeWindow *win){ void RootWindow::CloseWindow(WId win){ for(int i=0; iid() == win){ WINDOWS.takeAt(i)->clientClosed(); break; } + if(WINDOWS[i]->id() == win){ qDebug() << "Remove Window From Root List"; WINDOWS.takeAt(i)->clientClosed(); break; } } } -- cgit From 88c97efcbd3568aa79da2309fd480b20e0285860 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Fri, 30 Jun 2017 11:05:08 -0400 Subject: Remove the lumina-wm-INCOMPLETE source directory - not needed anymore and is obsolete anyway. --- src-qt5/core/lumina-wm-INCOMPLETE/DEPENDENCIES | 17 - src-qt5/core/lumina-wm-INCOMPLETE/GlobalDefines.h | 74 ---- src-qt5/core/lumina-wm-INCOMPLETE/LLockScreen.cpp | 102 ----- src-qt5/core/lumina-wm-INCOMPLETE/LLockScreen.h | 42 -- src-qt5/core/lumina-wm-INCOMPLETE/LLockScreen.ui | 144 ------- src-qt5/core/lumina-wm-INCOMPLETE/LScreenSaver.cpp | 181 -------- src-qt5/core/lumina-wm-INCOMPLETE/LScreenSaver.h | 59 --- src-qt5/core/lumina-wm-INCOMPLETE/LWindow.cpp | 474 --------------------- src-qt5/core/lumina-wm-INCOMPLETE/LWindow.h | 114 ----- .../core/lumina-wm-INCOMPLETE/LWindowManager.cpp | 186 -------- src-qt5/core/lumina-wm-INCOMPLETE/LWindowManager.h | 40 -- .../core/lumina-wm-INCOMPLETE/LXcbEventFilter.cpp | 204 --------- .../core/lumina-wm-INCOMPLETE/LXcbEventFilter.h | 130 ------ src-qt5/core/lumina-wm-INCOMPLETE/SSBaseWidget.cpp | 83 ---- src-qt5/core/lumina-wm-INCOMPLETE/SSBaseWidget.h | 55 --- src-qt5/core/lumina-wm-INCOMPLETE/WMSession.cpp | 62 --- src-qt5/core/lumina-wm-INCOMPLETE/WMSession.h | 42 -- .../animations/BaseAnimGroup.cpp | 27 -- .../animations/BaseAnimGroup.h | 37 -- .../animations/SampleAnimation.h | 45 -- .../lumina-wm-INCOMPLETE/animations/animations.pri | 6 - .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_af.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ar.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_az.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_bg.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_bn.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_bs.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ca.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_cs.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_cy.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_da.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_de.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_el.ts | 42 -- .../lumina-wm-INCOMPLETE/i18n/lumina-wm_en_GB.ts | 42 -- .../lumina-wm-INCOMPLETE/i18n/lumina-wm_en_ZA.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_es.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_et.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_eu.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_fa.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_fi.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_fr.ts | 42 -- .../lumina-wm-INCOMPLETE/i18n/lumina-wm_fr_CA.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_gl.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_he.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_hi.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_hr.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_hu.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_id.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_is.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_it.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ja.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ka.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ko.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_lt.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_lv.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_mk.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_mn.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ms.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_mt.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_nb.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_nl.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_pa.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_pl.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_pt.ts | 42 -- .../lumina-wm-INCOMPLETE/i18n/lumina-wm_pt_BR.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ro.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ru.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_sk.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_sl.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_sr.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_sv.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_sw.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ta.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_tg.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_th.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_tr.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_uk.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_uz.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_vi.ts | 42 -- .../lumina-wm-INCOMPLETE/i18n/lumina-wm_zh_CN.ts | 42 -- .../lumina-wm-INCOMPLETE/i18n/lumina-wm_zh_HK.ts | 42 -- .../lumina-wm-INCOMPLETE/i18n/lumina-wm_zh_TW.ts | 42 -- .../core/lumina-wm-INCOMPLETE/i18n/lumina-wm_zu.ts | 42 -- src-qt5/core/lumina-wm-INCOMPLETE/lumina-wm.pro | 107 ----- src-qt5/core/lumina-wm-INCOMPLETE/main.cpp | 56 --- 85 files changed, 4891 deletions(-) delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/DEPENDENCIES delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/GlobalDefines.h delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/LLockScreen.cpp delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/LLockScreen.h delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/LLockScreen.ui delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/LScreenSaver.cpp delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/LScreenSaver.h delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/LWindow.cpp delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/LWindow.h delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/LWindowManager.cpp delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/LWindowManager.h delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/LXcbEventFilter.cpp delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/LXcbEventFilter.h delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/SSBaseWidget.cpp delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/SSBaseWidget.h delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/WMSession.cpp delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/WMSession.h delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/animations/BaseAnimGroup.cpp delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/animations/BaseAnimGroup.h delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/animations/SampleAnimation.h delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/animations/animations.pri delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_af.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ar.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_az.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_bg.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_bn.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_bs.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ca.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_cs.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_cy.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_da.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_de.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_el.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_en_GB.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_en_ZA.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_es.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_et.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_eu.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_fa.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_fi.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_fr.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_fr_CA.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_gl.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_he.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_hi.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_hr.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_hu.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_id.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_is.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_it.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ja.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ka.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ko.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_lt.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_lv.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_mk.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_mn.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ms.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_mt.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_nb.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_nl.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_pa.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_pl.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_pt.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_pt_BR.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ro.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ru.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_sk.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_sl.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_sr.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_sv.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_sw.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ta.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_tg.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_th.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_tr.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_uk.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_uz.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_vi.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_zh_CN.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_zh_HK.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_zh_TW.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_zu.ts delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/lumina-wm.pro delete mode 100644 src-qt5/core/lumina-wm-INCOMPLETE/main.cpp (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/DEPENDENCIES b/src-qt5/core/lumina-wm-INCOMPLETE/DEPENDENCIES deleted file mode 100644 index fa0ce486..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/DEPENDENCIES +++ /dev/null @@ -1,17 +0,0 @@ -Most dependencies required to build Lumina are listed in the -DEPENDENCIES file in the directory above this one. The following -are dependencies specific to Lumina's window manager. - - -FreeBSD/TrueOS -======================= - - - - -Linux (Debian/Ubuntu) -======================= - -libxcb-screensaver0-dev - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/GlobalDefines.h b/src-qt5/core/lumina-wm-INCOMPLETE/GlobalDefines.h deleted file mode 100644 index 3ec278ac..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/GlobalDefines.h +++ /dev/null @@ -1,74 +0,0 @@ -//=========================================== -// Lumina-DE source code -// Copyright (c) 2015, Ken Moore -// Available under the 3-clause BSD license -// See the LICENSE file for full details -//=========================================== -// Global defines and enumerations for the window manager -//=========================================== -#ifndef _LUMINA_WINDOW_MANAGER_GLOBAL_DEFINES_H -#define _LUMINA_WINDOW_MANAGER_GLOBAL_DEFINES_H - -//Qt includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// libLumina includes -#include -#include -#include -#include -#include -#include - -//XCB Includes -#include -#include -#include -#include -#include //included in libxcb-util.so - -#define ANIMTIME 80 //animation time in milliseconds -//Global flags/structures -namespace LWM{ - //Flags/enumerations - enum WindowAction{MoveResize, Show, Hide, TryClose, Closed, WA_NONE}; - - //Data structures - extern LXCB *SYSTEM; -}; - - - -#endif diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/LLockScreen.cpp b/src-qt5/core/lumina-wm-INCOMPLETE/LLockScreen.cpp deleted file mode 100644 index 4cc6d68b..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/LLockScreen.cpp +++ /dev/null @@ -1,102 +0,0 @@ -//=========================================== -// Lumina-DE source code -// Copyright (c) 2015, Ken Moore -// Available under the 3-clause BSD license -// See the LICENSE file for full details -//=========================================== -#include "LLockScreen.h" -#include "ui_LLockScreen.h" - -#include - -#define NUMTRIES 3 -#define WAITMINS 1 -#define DEBUG 1 - -LLockScreen::LLockScreen(QWidget *parent) : QWidget(parent), ui(new Ui::LLockScreen()){ - ui->setupUi(this); - waittime = new QTimer(this); - waittime->setInterval(WAITMINS*60000); //(too many attempts in short time) - waittime->setSingleShot(true); - refreshtime = new QTimer(this); //timer to update the wait time display - refreshtime->setInterval(6000); //6 seconds (1/10 second) - - connect(ui->tool_unlock, SIGNAL(clicked()), this, SLOT(TryUnlock()) ); - connect(ui->line_password, SIGNAL(returnPressed()), this, SLOT(TryUnlock()) ); - connect(ui->line_password, SIGNAL(textEdited(QString)), this, SIGNAL(InputDetected()) ); - connect(ui->line_password, SIGNAL(cursorPositionChanged(int,int)), this, SIGNAL(InputDetected()) ); - connect(waittime, SIGNAL(timeout()), this, SLOT(aboutToShow()) ); - connect(refreshtime, SIGNAL(timeout()), this, SLOT(UpdateLockInfo()) ); -} - -LLockScreen::~LLockScreen(){ - -} - -void LLockScreen::LoadSystemDetails(){ - //Run every time the screen is initially locked - QString user = QString(getlogin()); - ui->label_username->setText( QString(tr("Locked by: %1")).arg(user) ); - ui->label_hostname->setText( QHostInfo::localHostName() ); - ui->tool_unlock->setIcon( LXDG::findIcon("document-decrypt","") ); - attempts = 0; -} - -void LLockScreen::aboutToHide(){ - //auto-hide timeout - clear display - ui->line_password->clear(); - ui->line_password->clearFocus(); - if(refreshtime->isActive()){ refreshtime->stop(); } -} - -void LLockScreen::aboutToShow(){ - if(!waittime->isActive()){ - ui->label_info->clear(); - this->setEnabled(true); - triesleft = NUMTRIES; //back to initial number of tries - if(refreshtime->isActive()){ refreshtime->stop(); } - }else{ - if(!refreshtime->isActive()){ refreshtime->start(); } - } - UpdateLockInfo(); - ui->line_password->clear(); - ui->line_password->setFocus(); -} - -// ================= -// PRIVATE SLOTS -// ================= -void LLockScreen::UpdateLockInfo(){ - QString info; - /*if(triesleft>0 && triesleftisActive()){ - info = tr("Too Many Failures")+"\n"+ QString(tr("Wait %1 Minutes")).arg( QString::number(qRound(waittime->remainingTime()/6000.0)/10.0) ); - }else if(attempts>0){ info.append("\n"+QString(tr("Failed Attempts: %1")).arg(QString::number(attempts)) ); } - ui->label_info->setText(info); -} - -void LLockScreen::TryUnlock(){ - attempts++; - this->setEnabled(false); - QString pass = ui->line_password->text(); - ui->line_password->clear(); - bool ok = (LUtils::runCmd("lumina-checkpass", QStringList() << pass) == 0); - if(ok){ - emit ScreenUnlocked(); - this->setEnabled(true); - }else{ - triesleft--; - if(triesleft>0){ - this->setEnabled(true); - }else{ - waittime->start(); - refreshtime->start(); - } - ui->line_password->setFocus(); - } - UpdateLockInfo(); - -} diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/LLockScreen.h b/src-qt5/core/lumina-wm-INCOMPLETE/LLockScreen.h deleted file mode 100644 index 040499c1..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/LLockScreen.h +++ /dev/null @@ -1,42 +0,0 @@ -//=========================================== -// Lumina-DE source code -// Copyright (c) 2015, Ken Moore -// Available under the 3-clause BSD license -// See the LICENSE file for full details -//=========================================== -#ifndef _LUMINA_DESKTOP_LOCK_SCREEN_WIDGET_H -#define _LUMINA_DESKTOP_LOCK_SCREEN_WIDGET_H - -#include "GlobalDefines.h" - -namespace Ui{ - class LLockScreen; -}; - -class LLockScreen : public QWidget{ - Q_OBJECT -public: - LLockScreen(QWidget *parent = 0); - ~LLockScreen(); - - void LoadSystemDetails(); //Run right after the screen is initially locked - -public slots: - void aboutToHide(); //auto-hide timeout (can happen multiple times per lock) - void aboutToShow(); //about to be re-shown (can happen multiple times per lock) - -private: - Ui::LLockScreen *ui; - int triesleft, attempts; - QTimer *waittime; - QTimer *refreshtime; - -private slots: - void UpdateLockInfo(); - void TryUnlock(); - -signals: - void ScreenUnlocked(); - void InputDetected(); -}; -#endif diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/LLockScreen.ui b/src-qt5/core/lumina-wm-INCOMPLETE/LLockScreen.ui deleted file mode 100644 index 7f0b45b8..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/LLockScreen.ui +++ /dev/null @@ -1,144 +0,0 @@ - - - LLockScreen - - - - 0 - 0 - 289 - 188 - - - - Form - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - QFrame::NoFrame - - - QFrame::Raised - - - - - - - 50 - true - false - true - - - - hostname - - - Qt::AlignCenter - - - - - - - Locked by username - - - Qt::AlignCenter - - - - - - - Qt::Vertical - - - - 20 - 20 - - - - - - - - - true - - - - - - - Qt::AlignCenter - - - true - - - - - - - - - - - - QLineEdit::Password - - - Qt::AlignCenter - - - Password - - - - - - - - - Qt::NoFocus - - - Unlock Session - - - Qt::ToolButtonTextBesideIcon - - - - - - - - - - - - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/LScreenSaver.cpp b/src-qt5/core/lumina-wm-INCOMPLETE/LScreenSaver.cpp deleted file mode 100644 index 0c92784e..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/LScreenSaver.cpp +++ /dev/null @@ -1,181 +0,0 @@ -//=========================================== -// Lumina-DE source code -// Copyright (c) 2015, Ken Moore -// Available under the 3-clause BSD license -// See the LICENSE file for full details -//=========================================== -#include "LScreenSaver.h" -#include -#include - -#define DEBUG 1 - -LScreenSaver::LScreenSaver() : QWidget(0,Qt::BypassWindowManagerHint | Qt::WindowStaysOnTopHint){ - starttimer = new QTimer(this); - starttimer->setSingleShot(true); - locktimer = new QTimer(this); - locktimer->setSingleShot(true); - hidetimer = new QTimer(this); - hidetimer->setSingleShot(true); - - LOCKER = new LLockScreen(this); - LOCKER->hide(); - settings = new QSettings("lumina-desktop","lumina-screensaver",this); - SSRunning = SSLocked = updating = false; - this->setObjectName("LSCREENSAVERBASE"); - this->setStyleSheet("LScreenSaver#LSCREENSAVERBASE{ background: grey; }"); - this->setMouseTracking(true); - connect(starttimer, SIGNAL(timeout()), this, SLOT(ShowScreenSaver()) ); - connect(locktimer, SIGNAL(timeout()), this, SLOT(LockScreen()) ); - connect(hidetimer, SIGNAL(timeout()), this, SLOT(HideLockScreen()) ); - connect(LOCKER, SIGNAL(ScreenUnlocked()), this, SLOT(SSFinished()) ); - connect(LOCKER, SIGNAL(InputDetected()), this, SLOT(newInputEvent()) ); -} - -LScreenSaver::~LScreenSaver(){ - -} - -bool LScreenSaver::isLocked(){ - return SSLocked; -} - -void LScreenSaver::UpdateTimers(){ - //This is generally used for programmatic changes - if(starttimer->isActive()){ starttimer->stop();} - if(locktimer->isActive()){ locktimer->stop(); } - if(hidetimer->isActive()){ hidetimer->stop(); } - - if(!SSRunning && !SSLocked && (starttimer->interval() > 1000) ){ starttimer->start(); } //time to SS start - else if( SSRunning && !SSLocked && (locktimer->interval() > 1000 ) ){ locktimer->start(); } //time to lock - else if( !SSRunning && SSLocked ){ hidetimer->start(); } //time to hide lock screen -} - -// =========== -// PUBLIC SLOTS -// =========== -void LScreenSaver::start(){ - reloadSettings(); //setup all the initial time frames - starttimer->start(); -} - -void LScreenSaver::reloadSettings(){ - settings->sync(); - starttimer->setInterval( settings->value("timedelaymin",10).toInt() * 60000 ); - locktimer->setInterval( settings->value("lockdelaymin",1).toInt() * 60000 ); - hidetimer->setInterval( settings->value("hidesecs",15).toInt() * 1000 ); -} - -void LScreenSaver::newInputEvent(){ - if(updating){ return; } //in the middle of making changes which could cause an event - if(DEBUG){ qDebug() << "New Input Event"; } - if(SSRunning && SSLocked){ - //Running and locked - // Hide the running setting, and display the lock screen - HideScreenSaver(); - ShowLockScreen(); - }else if(SSRunning){ - //Only running, not locked - HideScreenSaver(); - } - UpdateTimers(); - -} - -void LScreenSaver::LockScreenNow(){ - ShowScreenSaver(); - LockScreen(); -} - -// =========== -// PRIVATE SLOTS -// =========== -void LScreenSaver::ShowScreenSaver(){ - if(DEBUG){ qDebug() << "Showing Screen Saver:" << QDateTime::currentDateTime().toString(); } - SSRunning = true; - updating = true; - //Now remove any current Base widgets (prevent any lingering painting between sessions) - for(int i=0; i SCREENS = QApplication::screens(); - QRect bounds; - cBright = LOS::ScreenBrightness(); - if(cBright>0){ LOS::setScreenBrightness(cBright/2); } //cut to half while the screensaver is active - for(int i=0; igeometry()); - if(DEBUG){ qDebug() << " - New SS Base:" << i; } - BASES << new SSBaseWidget(this, settings); - connect(BASES[i], SIGNAL(InputDetected()), this, SLOT(newInputEvent()) ); - //Setup the geometry of the base to match the screen - BASES[i]->setGeometry(SCREENS[i]->geometry()); //match this screen geometry - BASES[i]->setPlugin(settings->value("screenplugin"+QString::number(i+1), settings->value("defaultscreenplugin","random").toString() ).toString() ); - } - //Now set the overall parent widget geometry and show everything - this->setGeometry(bounds); //overall background widget - if(!this->isActiveWindow()){ - this->raise(); - this->show(); - this->activateWindow(); - } - for(int i=0; ishow(); - BASES[i]->startPainting(); - } - updating = false; - UpdateTimers(); -} - -void LScreenSaver::ShowLockScreen(){ - if(DEBUG){ qDebug() << "Showing Lock Screen:" << QDateTime::currentDateTime().toString(); } - LOCKER->aboutToShow(); - //Move the screen locker to the appropriate spot - QPoint ctr = QApplication::desktop()->screenGeometry(QCursor::pos()).center(); - LOCKER->resize(LOCKER->sizeHint()); - LOCKER->move(ctr - QPoint(LOCKER->width()/2, LOCKER->height()/2) ); - LOCKER->show(); - //Start the timer for hiding the lock screen due to inactivity - UpdateTimers(); -} - -void LScreenSaver::HideScreenSaver(){ - if(DEBUG){ qDebug() << "Hiding Screen Saver:" << QDateTime::currentDateTime().toString(); } - SSRunning = false; - if(cBright>0){ LOS::setScreenBrightness(cBright); } //return to current brightness - if(!SSLocked){ - this->hide(); - emit ClosingScreenSaver(); - } - for(int i=0; ihide(); - BASES[i]->stopPainting(); - } - UpdateTimers(); -} - -void LScreenSaver::HideLockScreen(){ - if(DEBUG){ qDebug() << "Hiding Lock Screen:" << QDateTime::currentDateTime().toString(); } - //Leave the Locked flag set (still locked, just not visible) - LOCKER->aboutToHide(); - LOCKER->hide(); - this->repaint(); - if(SSLocked){ ShowScreenSaver(); } - UpdateTimers(); -} - -void LScreenSaver::LockScreen(){ - if(SSLocked){ return; } - if(DEBUG){ qDebug() << "Locking Screen:" << QDateTime::currentDateTime().toString(); } - SSLocked = true; - LOCKER->LoadSystemDetails(); - UpdateTimers(); -} - -void LScreenSaver::SSFinished(){ - if(DEBUG){ qDebug() << "Screensaver Finished:" << QDateTime::currentDateTime().toString(); } - SSLocked = false; - HideLockScreen(); - HideScreenSaver(); -} diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/LScreenSaver.h b/src-qt5/core/lumina-wm-INCOMPLETE/LScreenSaver.h deleted file mode 100644 index 5119d8b1..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/LScreenSaver.h +++ /dev/null @@ -1,59 +0,0 @@ -//=========================================== -// Lumina-DE source code -// Copyright (c) 2015, Ken Moore -// Available under the 3-clause BSD license -// See the LICENSE file for full details -//=========================================== -#ifndef _LUMINA_DESKTOP_SCREEN_SAVER_H -#define _LUMINA_DESKTOP_SCREEN_SAVER_H - -#include "GlobalDefines.h" - -#include "SSBaseWidget.h" -#include "LLockScreen.h" - -class LScreenSaver : public QWidget{ - Q_OBJECT -public: - LScreenSaver(); - ~LScreenSaver(); - - bool isLocked(); - -private: - QTimer *starttimer, *locktimer, *hidetimer; - QSettings *settings; - QList BASES; - LLockScreen *LOCKER; - int cBright; - bool SSRunning, SSLocked, updating; - - void UpdateTimers(); - -public slots: - void start(); - void reloadSettings(); - void newInputEvent(); - void LockScreenNow(); - -private slots: - void ShowScreenSaver(); - void ShowLockScreen(); - void HideScreenSaver(); - void HideLockScreen(); - - void LockScreen(); - void SSFinished(); - -signals: - void StartingScreenSaver(); - void ClosingScreenSaver(); - -protected: - void mouseMoveEvent(QMouseEvent*){ - QTimer::singleShot(0,this, SLOT(newInputEvent())); - } - -}; - -#endif \ No newline at end of file diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/LWindow.cpp b/src-qt5/core/lumina-wm-INCOMPLETE/LWindow.cpp deleted file mode 100644 index 84ff2ffd..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/LWindow.cpp +++ /dev/null @@ -1,474 +0,0 @@ -//=========================================== -// Lumina-DE source code -// Copyright (c) 2015, Ken Moore -// Available under the 3-clause BSD license -// See the LICENSE file for full details -//=========================================== -#include "LWindow.h" - -LWindowFrame::LWindowFrame(WId client, QWidget *parent) : QFrame(parent, Qt::X11BypassWindowManagerHint){ - activeState = LWindowFrame::Normal; - CID = client; - lastAction = LWM::WA_NONE; - Closing = false; - //qDebug() << "New Window:" << CID << "Frame:" << this->winId(); - this->setMouseTracking(true); //need this to determine mouse location when not clicked - this->setObjectName("LWindowFrame"); - this->setStyleSheet("LWindowFrame#LWindowFrame{ border: 2px solid white; border-radius:3px; } QWidget#TitleBar{background: grey; } QLabel{ color: black; }"); - InitWindow(); //initially create all the child widgets - //LWM::SYSTEM->setupEventsForFrame(this->winId()); - updateAppearance(); //this loads the appearance based on window/theme settings - //QApplication::processEvents(); - //Now set the frame size on this window - SyncSize(); - SyncText(); - this->show(); -} - -LWindowFrame::~LWindowFrame(){ -} - -// ================= -// PRIVATE -// ================= -void LWindowFrame::InitWindow(){ - anim = new QPropertyAnimation(this); //For simple window animations - anim->setTargetObject(this); - anim->setDuration(ANIMTIME); //In milliseconds - connect(anim, SIGNAL(finished()), this, SLOT(finishedAnimation()) ); - titleBar = new QLabel(this); //This is the "container" for all the title buttons/widgets - titleBar->setObjectName("TitleBar"); - titleBar->setSizePolicy(QSizePolicy::Minimum,QSizePolicy::Minimum); - titleBar->setFocusPolicy(Qt::NoFocus); - titleBar->setCursor(Qt::ArrowCursor); - title = new QLabel(this); //Shows the window title/text - title->setObjectName("Title"); - title->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); - title->setCursor(Qt::ArrowCursor); - title->setFocusPolicy(Qt::NoFocus); - icon = new QLabel(this); //Contains the window icon - icon->setObjectName("Icon"); - icon->setCursor(Qt::ArrowCursor); - icon->setFocusPolicy(Qt::NoFocus); - minB = new QToolButton(this); //Minimize Button - minB->setObjectName("Minimize"); - minB->setCursor(Qt::ArrowCursor); - minB->setFocusPolicy(Qt::NoFocus); - connect(minB, SIGNAL(clicked()), this, SLOT(minClicked()) ); - maxB = new QToolButton(this); //Maximize Button - maxB->setObjectName("Maximize"); - maxB->setCursor(Qt::ArrowCursor); - maxB->setFocusPolicy(Qt::NoFocus); - connect(maxB, SIGNAL(clicked()), this, SLOT(maxClicked()) ); - closeB = new QToolButton(this); - closeB->setObjectName("Close"); - closeB->setCursor(Qt::ArrowCursor); - closeB->setFocusPolicy(Qt::NoFocus); - connect(closeB, SIGNAL(clicked()), this, SLOT(closeClicked()) ); - otherB = new QToolButton(this); //Button to place any other actions - otherB->setObjectName("Options"); - otherB->setCursor(Qt::ArrowCursor); - otherB->setPopupMode(QToolButton::InstantPopup); - otherB->setStyleSheet("QToolButton::menu-indicator{ image: none; }"); - otherB->setFocusPolicy(Qt::NoFocus); - otherM = new QMenu(this); //menu of "other" actions for the window - otherB->setMenu(otherM); - connect(otherM, SIGNAL(triggered(QAction*)), this, SLOT(otherClicked(QAction*)) ); - //Now assemble the titlebar - QHBoxLayout *HL = new QHBoxLayout(this); - HL->setContentsMargins(0,0,0,0); - HL->addWidget(otherB); - HL->addWidget(icon); - HL->addWidget(title); - HL->addWidget(minB); - HL->addWidget(maxB); - HL->addWidget(closeB); - titleBar->setLayout(HL); - QVBoxLayout *VL = new QVBoxLayout(this); - this->setLayout(VL); - //The WinWidget container appears shifted right/down by 1 pixel for some reason - // Adjust the margins to account for this variation - VL->setContentsMargins(1,1,2,2); - VL->setSpacing(0); - //Have the window take the same initial size of the client window - QRect geom = LWM::SYSTEM->WM_Window_Geom(CID); - qDebug() << " - Load Size Hints" << "initial size:" << geom.size(); - icccm_size_hints SH = LWM::SYSTEM->WM_ICCCM_GetNormalHints(CID); - qDebug() << " - - Got Normal Hints"; - if(!SH.isValid()){ SH = LWM::SYSTEM->WM_ICCCM_GetSizeHints(CID); } - qDebug() << " - - Start resizing..."; - if(SH.base_width>geom.width() && SH.base_height>geom.height()){ this->resize(SH.base_width, SH.base_height); } - else if(SH.min_width>geom.width() && SH.min_height>geom.height()){ this->resize(SH.min_width, SH.min_height); } - else if(SH.width>geom.width() && SH.height>geom.height()){ this->resize(SH.width, SH.height); } - else if(geom.isNull()){ this->resize(100,80); } - else{ this->resize( geom.size() ); } - qDebug() << " - done"; - - //Now embed the native window into the frame - WIN = QWindow::fromWinId(CID); - WinWidget = QWidget::createWindowContainer( WIN, this); - WinWidget->setCursor(Qt::ArrowCursor); //this is just a fallback - the window itself will adjust it - //WINBACK = new QBackingStore(WIN); //create a data backup for the widget - - //Now assemble te initial layout for the window (all while still invisible) - /*VL->addWidget(titleBar); - VL->addWidget(WinWidget); - VL->setStretch(1,1);*/ -} - -LWindowFrame::ModState LWindowFrame::getStateAtPoint(QPoint pt, bool setoffset){ - //Note: pt should be in widget-relative coordinates, not global - if(!this->layout()->geometry().contains(pt)){ - //above the frame itself - need to figure out which quadrant it is in (8-directions) - if(pt.y() < 3){ - //One of the top options - if(pt.x() < 3){ - if(setoffset){ offset.setX(pt.x()); offset.setY(pt.y()); } //difference from top-left corner - return ResizeTopLeft; - }else if(pt.x() > (this->width()-3)){ - if(setoffset){ offset.setX(this->width()-pt.x()); offset.setY(pt.y()); } //difference from top-right corner - return ResizeTopRight; - }else{ - if(setoffset){ offset.setX(0); offset.setY(pt.y()); } //difference from top edge (X does not matter) - return ResizeTop; - } - }else if(pt.y() > (this->height()-3) ){ - //One of the bottom options - if(pt.x() < 3){ - if(setoffset){ offset.setX(pt.x()); offset.setY(this->height()-pt.y()); } //difference from bottom-left corner - return ResizeBottomLeft; - }else if(pt.x() > (this->width()-3)){ - if(setoffset){ offset.setX(this->width()-pt.x()); offset.setY(this->height()-pt.y()); } //difference from bottom-right corner - return ResizeBottomRight; - }else{ - if(setoffset){ offset.setX(0); offset.setY(this->height() - pt.y()); } //difference from bottom edge (X does not matter) - return ResizeBottom; - } - }else{ - //One of the side options - if(pt.x() < 3){ - if(setoffset){ offset.setX(pt.x()); offset.setY(0); } //difference from left edge (Y does not matter) - return ResizeLeft; - }else if(pt.x() > (this->width()-3) ){ - if(setoffset){ offset.setX(this->width()-pt.x()); offset.setY(0); } //difference from right edge (Y does not matter) - return ResizeRight; - }else{ - return Normal; - } - } - } - return Normal; -} - -void LWindowFrame::setMouseCursor(ModState state, bool override){ - Qt::CursorShape shape; - switch(state){ - case Normal: - shape = Qt::ArrowCursor; - break; - case Move: - shape = Qt::SizeAllCursor; - break; - case ResizeTop: - shape = Qt::SizeVerCursor; - break; - case ResizeTopRight: - shape = Qt::SizeBDiagCursor; - break; - case ResizeRight: - shape = Qt::SizeHorCursor; - break; - case ResizeBottomRight: - shape = Qt::SizeFDiagCursor; - break; - case ResizeBottom: - shape = Qt::SizeVerCursor; - break; - case ResizeBottomLeft: - shape = Qt::SizeBDiagCursor; - break; - case ResizeLeft: - shape = Qt::SizeHorCursor; - break; - case ResizeTopLeft: - shape = Qt::SizeFDiagCursor; - break; - } - if(override){ - QApplication::setOverrideCursor(QCursor(shape)); - }else{ - this->setCursor(shape); - } -} - -// ========================== -// WINDOW INTERACTIONS -//========================== -void LWindowFrame::SyncSize(bool fromwin){ - //sync the window/frame geometries (generally only done before embedding the client window) - int frame = this->frameWidth(); - int TH = titleBar->height(); - //Now load the information about the window and adjust the frame to match - if(fromwin){ lastGeom = LWM::SYSTEM->WM_Window_Geom(CID); } - else{ lastGeom = this->geometry(); } - qDebug() << "Initial Size:" << lastGeom << frame << TH; - //Add in the frame size - lastGeom.moveTop(lastGeom.y()-frame-TH); - lastGeom.setHeight(lastGeom.height()+(2*frame)+TH); - lastGeom.moveLeft(lastGeom.x()-frame); - lastGeom.setWidth( lastGeom.width()+(2*frame)); - QList margins; - margins << frame << frame << frame+TH << frame; //L/R/Top/Bottom - qDebug() << " - With Frame:" << lastGeom; - //Now adjust for a out-of-bounds location - if(lastGeom.x() < 0){ lastGeom.moveLeft(0); } - if(lastGeom.y() < 0){ lastGeom.moveTop(0); } - qDebug() << " - Adjusted:" << lastGeom; - this->setGeometry(lastGeom); - LWM::SYSTEM->WM_Set_Frame_Extents(CID, margins); -} - -void LWindowFrame::SyncText(){ - QString txt = WIN->title(); - if(txt.isEmpty()){ txt = LWM::SYSTEM->WindowName(CID); } - if(txt.isEmpty()){ txt = LWM::SYSTEM->OldWindowName(CID); } - if(txt.isEmpty()){ txt = LWM::SYSTEM->WindowVisibleName(CID); } - if(txt.isEmpty()){ txt = LWM::SYSTEM->WindowIconName(CID); } - if(txt.isEmpty()){ txt = LWM::SYSTEM->WindowVisibleIconName(CID); } - if(txt.isEmpty()){ txt = LWM::SYSTEM->WM_ICCCM_GetClass(CID); } - title->setText(txt); -} - -// SIMPLE ANIMATIONS -void LWindowFrame::showAnimation(LWM::WindowAction act){ - bool useanimation = (act!=lastAction); - if(anim->state()==QAbstractAnimation::Running){ - qDebug() << "New Animation Event:" << act; - return; - } - //Setup the animation routine - if(act==LWM::Show){ - if(useanimation){ - lastGeom = this->geometry(); - //Expand out from center point - anim->setPropertyName("geometry"); - anim->setStartValue( QRect(lastGeom.center(), QSize(0,0) ) ); - anim->setEndValue( this->geometry() ); - //Fade in gradually - //anim->setPropertyName("windowOpacity"); - //anim->setStartValue( 0.0 ); - //anim->setEndValue( 1.0 ); - }else{ - ShowClient(true); - this->raise(); - this->show(); //just show it right away - } - - }else if(act==LWM::Hide){ - if(useanimation){ - //Collapse in on center point - lastGeom = this->geometry(); - anim->setPropertyName("geometry"); - anim->setStartValue( QRect(this->geometry()) ); - anim->setEndValue( QRect(this->geometry().center(), QSize(0,0) ) ); - }else{ - this->hide(); //just hide it right away - } - }else if(act==LWM::Closed){ - //Need to clean up the container widget first to prevent XCB errors - //qDebug() << "Window Closed:" << WIN->winId() << CID; - if(useanimation){ - //Collapse in on center line - lastGeom = this->geometry(); - anim->setPropertyName("geometry"); - anim->setStartValue( QRect(this->geometry()) ); - anim->setEndValue( QRect(this->geometry().x(), this->geometry().center().y(), this->width(), 0 ) ); - }else{ - CloseAll(); //just hide it right away - } - } - if(useanimation){ - ShowClient(false); - this->show(); - qDebug() << " - Starting Animation:" << act; - lastAction = act; - anim->start(); - }; -} - -void LWindowFrame::ShowClient(bool show){ - if(show && this->layout()->indexOf(WinWidget)<0 && !Closing){ - while(this->layout()->count()>0){ this->layout()->removeItem(0); } - this->layout()->addWidget(titleBar); - this->layout()->setAlignment(titleBar, Qt::AlignTop); - this->layout()->addWidget(WinWidget); - static_cast(this->layout())->setStretch(1,1); - LWM::SYSTEM->WM_ShowWindow(CID); - }else if( !show && this->layout()->indexOf(WinWidget)>=0){ - LWM::SYSTEM->WM_HideWindow(CID); - this->layout()->removeWidget(WinWidget); - } -} - -void LWindowFrame::finishedAnimation(){ - //Also set any final values - qDebug() << " - Finished Animation:" << lastAction; - switch(lastAction){ - case LWM::Show: - ShowClient(true); - break; - case LWM::Closed: - case LWM::Hide: - this->lower(); - this->hide(); - LWM::SYSTEM->WM_HideWindow(this->winId()); - default: - break; - } - if(Closing){ - qDebug() << "Emitting finished signal"; - emit Finished(); - } -} - -// ================= -// PUBLIC SLOTS -// ================= -void LWindowFrame::updateAppearance(){ - //Reload any button icons and such - minB->setIcon(LXDG::findIcon("window-suppressed","")); - maxB->setIcon(LXDG::findIcon("view-fullscreen","")); - closeB->setIcon(LXDG::findIcon("application-exit","")); - otherB->setIcon(LXDG::findIcon("configure","")); -} - -void LWindowFrame::windowChanged(LWM::WindowAction act){ - //A window property was changed - update accordingly - switch(act){ - case LWM::Closed: - Closing = true; - case LWM::Hide: - case LWM::Show: - showAnimation(act); - break; - case LWM::MoveResize: - //Re-adjust to the new position/size of the window - SyncSize(true); - break; - default: - break; //do nothing - } -} -// ================= -// PRIVATE SLOTS -// ================= -void LWindowFrame::closeClicked(){ - qDebug() << "Closing Window" << LWM::SYSTEM->WM_ICCCM_GetClass(CID); - //First try the close event to let the client app do cleanup/etc - LWM::SYSTEM->WM_CloseWindow(CID); -} - -void LWindowFrame::minClicked(){ - qDebug() << "Minimize Window"; - windowChanged(LWM::Hide); -} - -void LWindowFrame::maxClicked(){ - if(normalGeom.isNull()){ - qDebug() << "Maximize Window"; - normalGeom = this->geometry(); //save for later - this->showMaximized(); - }else{ - qDebug() << "Restore Window"; - this->showNormal(); - this->setGeometry(normalGeom); - normalGeom = QRect(); //clear it - } -} - -void LWindowFrame::otherClicked(QAction* act){ - QString action = act->whatsThis(); -} - -void LWindowFrame::CloseAll(){ - qDebug() << " - Closing Frame"; - this->hide(); - emit Finished(); -} -// ===================== -// PROTECTED -// ===================== -void LWindowFrame::mousePressEvent(QMouseEvent *ev){ - qDebug() << "Frame Mouse Press Event"; - offset.setX(0); offset.setY(0); - if(activeState != Normal){ return; } // do nothing - already in a state of grabbed mouse - this->activateWindow(); - LWM::SYSTEM->WM_Set_Active_Window(CID); - if(this->childAt(ev->pos())!=0){ - //Check for any non-left-click event and skip it - if(ev->button()!=Qt::LeftButton){ return; } - activeState = Move; - offset.setX(ev->pos().x()); offset.setY(ev->pos().y()); - }else{ - //Clicked on the frame somewhere - activeState = getStateAtPoint(ev->pos(), true); //also have it set the offset variable - } - setMouseCursor(activeState, true); //this one is an override cursor - -} - -void LWindowFrame::mouseMoveEvent(QMouseEvent *ev){ - ev->accept(); - if(activeState == Normal){ - setMouseCursor( getStateAtPoint(ev->pos()) ); //just update the mouse cursor - - }else{ - //Currently in a modification state - QRect geom = this->geometry(); - switch(activeState){ - case Move: - geom.moveTopLeft(ev->globalPos()-offset); //will not change size - break; - case ResizeTop: - geom.setTop(ev->globalPos().y()-offset.y()); - break; - case ResizeTopRight: - geom.setTopRight(ev->globalPos()-offset); - break; - case ResizeRight: - geom.setRight(ev->globalPos().x()-offset.x()); - break; - case ResizeBottomRight: - geom.setBottomRight(ev->globalPos()-offset); - break; - case ResizeBottom: - geom.setBottom(ev->globalPos().y()-offset.y()); - break; - case ResizeBottomLeft: - geom.setBottomLeft(ev->globalPos()-offset); - break; - case ResizeLeft: - geom.setLeft(ev->globalPos().x()-offset.x()); - break; - case ResizeTopLeft: - geom.setTopLeft(ev->globalPos()-offset); - break; - default: - break; - } - this->setGeometry(geom); - } -} - -void LWindowFrame::mouseReleaseEvent(QMouseEvent *ev){ - //Check for a right-click event - qDebug() << "Frame Mouse Release Event"; - ev->accept(); - if( (activeState==Normal) && (this->childAt(ev->pos())==titleBar) && (ev->button()==Qt::RightButton) ){ - otherM->popup(ev->globalPos()); - return; - } - activeState = Normal; - QApplication::restoreOverrideCursor(); - setMouseCursor( getStateAtPoint(ev->pos()) ); -} diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/LWindow.h b/src-qt5/core/lumina-wm-INCOMPLETE/LWindow.h deleted file mode 100644 index ceefca83..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/LWindow.h +++ /dev/null @@ -1,114 +0,0 @@ -//=========================================== -// Lumina-DE source code -// Copyright (c) 2015, Ken Moore -// Available under the 3-clause BSD license -// See the LICENSE file for full details -//=========================================== -#ifndef _LUMINA_DESKTOP_WINDOW_FRAME_H -#define _LUMINA_DESKTOP_WINDOW_FRAME_H - -#include "GlobalDefines.h" - -class LWindowFrame : public QFrame{ - Q_OBJECT -public: - LWindowFrame(WId client, QWidget *parent = 0); //MUST have a valid client window - ~LWindowFrame(); - -private: - void InitWindow(); //Initialize all the internal widgets - - //Window status - enum ModState{Normal, Move, ResizeTop, ResizeTopRight, ResizeRight, ResizeBottomRight, ResizeBottom, ResizeBottomLeft, ResizeLeft, ResizeTopLeft}; - ModState activeState; - QPoint offset; //needed for movement calculations (offset from mouse click to movement point) - //Functions for getting/setting state - ModState getStateAtPoint(QPoint pt, bool setoffset = false); //generally used for mouse location detection - void setMouseCursor(ModState, bool override = false); //Update the mouse cursor based on state - - //General Properties/Modifications - WId CID; //Client ID - QWindow *WIN; //Embedded window container - QWidget *WinWidget; - bool Closing; - LWM::WindowAction lastAction; - //QBackingStore *WINBACK; - void SyncSize(bool fromwin = false); //sync the window/frame geometries - void SyncText(); - - //Window Frame Widgets/Items - QLabel *titleBar, *title, *icon; - QToolButton *minB, *maxB, *closeB, *otherB; - QMenu *otherM; //menu of "other" actions for the window - QRect normalGeom; //used for restoring back to original size after maximization/fullscreen - - //Animations - QPropertyAnimation *anim; //used for appear/disappear animations - QRect lastGeom; //used for appear/disappear animations - void showAnimation(LWM::WindowAction); //sets lastAction - void ShowClient(bool show); - -public slots: - //These slots are generally used for the outside event watcher to prod for changes - void updateAppearance(); //reload the theme and change styling as necessary - void windowChanged(LWM::WindowAction); - -private slots: - void finishedAnimation(); //uses lastAction - void closeClicked(); - void minClicked(); - void maxClicked(); - void otherClicked(QAction*); - - void CloseAll(); - -protected: - void mousePressEvent(QMouseEvent*); - void mouseMoveEvent(QMouseEvent*); - void mouseReleaseEvent(QMouseEvent*); - -signals: - void Finished(); //This means the window is completely finished (with animations and such) and should be removed from any lists - -}; - -class LWindow : public QObject{ - Q_OBJECT -signals: - void Finished(WId client); //ready to be removed -private: - WId CID; - LWindowFrame *FID; - bool needsFrame(QList list){ - if(list.isEmpty()){ return !LWM::SYSTEM->WM_ICCCM_GetClass(CID).contains("Lumina-DE"); } //assume a normal window (fallback) - return !(list.contains(LXCB::T_DESKTOP) || list.contains(LXCB::T_DOCK) || list.contains(LXCB::T_TOOLBAR) \ - || list.contains(LXCB::T_SPLASH) || list.contains(LXCB::T_DROPDOWN_MENU) \ - || list.contains(LXCB::T_TOOLTIP) || list.contains(LXCB::T_POPUP_MENU) || list.contains(LXCB::T_TOOLTIP) \ - || list.contains(LXCB::T_COMBO) || list.contains(LXCB::T_DND) ); - } -private slots: - void frameclosed(){ - qDebug() << " - Window got frame closed signal"; - //FID->close(); - //delete FID; - emit Finished(CID); - } -public: - LWindow(WId client){ - FID= 0; - CID = client; - if( needsFrame(LWM::SYSTEM->WM_Get_Window_Type(CID)) ){ - FID = new LWindowFrame(CID); - connect(FID, SIGNAL(Finished()), this, SLOT(frameclosed()) ); - } - } - ~LWindow(){ - if(FID!=0){delete FID;} - } - - WId clientID(){ return CID; } - bool hasFrame(){ return FID!=0; } - LWindowFrame* frame(){ return FID; } - -}; -#endif diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/LWindowManager.cpp b/src-qt5/core/lumina-wm-INCOMPLETE/LWindowManager.cpp deleted file mode 100644 index 14ce6897..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/LWindowManager.cpp +++ /dev/null @@ -1,186 +0,0 @@ -//=========================================== -// Lumina-DE source code -// Copyright (c) 2015, Ken Moore -// Available under the 3-clause BSD license -// See the LICENSE file for full details -//=========================================== -#include "LWindowManager.h" - -#define DEBUG 1 - -LWindowManager::LWindowManager(){ - -} - -LWindowManager::~LWindowManager(){ - -} - -bool LWindowManager::start(){ - //Setup the initial screen/session values - LWM::SYSTEM->WM_Set_Root_Supported(); - LWM::SYSTEM->WM_SetNumber_Desktops(1); - LWM::SYSTEM->WM_Set_Current_Desktop(0); - LWM::SYSTEM->WM_Set_Desktop_Names(QStringList() << "one"); - QRect totgeom; - QList viewports; - QList geoms; - for(int i=0; iscreenCount(); i++){ - geoms << QApplication::desktop()->screen(i)->geometry(); - viewports << QPoint(0,0); - totgeom = QApplication::desktop()->screen(i)->geometry(); - } - LWM::SYSTEM->WM_Set_Desktop_Geometry(totgeom.size()); - LWM::SYSTEM->WM_Set_Desktop_Viewport(viewports); - LWM::SYSTEM->WM_Set_Workarea(geoms); - //Should probably do a quick loop over any existing windows with the root as parent (just in case) - QList initial = LWM::SYSTEM->WM_RootWindows(); - for(int i=0; ihasFrame()){ - LWM::SYSTEM->UnembedWindow(WINS[i]->clientID()); - WINS[i]->frame()->close(); - } - } -} -//=============== -// PUBLIC SLOTS -//=============== -void LWindowManager::NewWindow(WId win, bool requested){ - //Verify that this window can/should be managed first - //if(DEBUG){ qDebug() << "New Window:" << LWM::SYSTEM->WM_ICCCM_GetClass(win); } - QString wclass = LWM::SYSTEM->WM_ICCCM_GetClass(win); - if( wclass.contains("lumina-wm",Qt::CaseInsensitive) ){ return; } //just in case: prevent recursion - else{ - bool ok = (wclass.isEmpty() ? false : LWM::SYSTEM->WM_ManageWindow(win, requested) ); - if(!ok){ - //See if this window is just a transient pointing to some other window - WId tran = LWM::SYSTEM->WM_ICCCM_GetTransientFor(win); - if(tran!=win && tran!=0){ - win = tran; - ok = LWM::SYSTEM->WM_ManageWindow(win); - } - } - if(!ok){ return; } - } - if(DEBUG){ qDebug() << "New Managed Window:" << LWM::SYSTEM->WM_ICCCM_GetClass(win); } - LWM::SYSTEM->WM_Set_Active_Window(win); - LWindow *lwin = new LWindow(win); - connect(lwin, SIGNAL(Finished(WId)), this, SLOT(FinishedWindow(WId)) ); - WINS << lwin; - if(lwin->hasFrame()){ - lwin->frame()->windowChanged(LWM::Show); //Make sure to show it right away - }else{ - LWM::SYSTEM->WM_ShowWindow(win); //just map the window right now - } -} - -void LWindowManager::ClosedWindow(WId win){ - for(int i=0; iclientID()==win){ - qDebug() << " - Closed Window"; - if(WINS[i]->hasFrame()){ WINS[i]->frame()->windowChanged(LWM::Closed); } //do any animations/cleanup - else{ FinishedWindow(win); } - break; - } - } -} - -void LWindowManager::ModifyWindow(WId win, LWM::WindowAction act){ - for(int i=0; iclientID()==win){ - if(WINS[i]->hasFrame()){ WINS[i]->frame()->windowChanged(act); } - return; - } - } - //If it gets this far - it is an unmanaged window - if(act==LWM::Show){ - NewWindow(win); - } - RestackWindows(); -} - -void LWindowManager::RestackWindows(){ - Stack_Desktop.clear(); Stack_Below.clear(); Stack_Normal.clear(); Stack_Above.clear(); Stack_Fullscreen.clear(); - QList currwins; - int cwork = LWM::SYSTEM->WM_Get_Current_Desktop(); - int winwork = -1; - QList states; - QList types; - for(int i=0; iWM_Get_Desktop(WINS[i]->clientID()); - states = LWM::SYSTEM->WM_Get_Window_States(WINS[i]->clientID()); - types = LWM::SYSTEM->WM_Get_Window_Type(WINS[i]->clientID()); - WId id = WINS[i]->clientID(); - if(WINS[i]->hasFrame()){ id = WINS[i]->frame()->winId(); } - if(winwork<0 || winwork == cwork || states.contains(LXCB::S_STICKY) ){ - //Now check the state/type and put it in the proper stack - currwins << WINS[i]->clientID(); //add this to the overall "age" list - //Now add it to the proper stack - if(types.contains(LXCB::T_DESKTOP)){ Stack_Desktop << id; } - else if(states.contains(LXCB::S_BELOW)){ Stack_Below << id; } - else if(types.contains(LXCB::T_DOCK) || states.contains(LXCB::S_ABOVE) ){ Stack_Above << id; } - else if(states.contains(LXCB::S_FULLSCREEN)){ Stack_Fullscreen << id; } - else{ Stack_Normal << id; } - } - } - //Active Window management - WId active = LWM::SYSTEM->WM_Get_Active_Window(); - if(Stack_Desktop.contains(active)){ Stack_Desktop.removeAll(active); Stack_Desktop << active; } - else if(Stack_Below.contains(active)){ Stack_Below.removeAll(active); Stack_Below << active; } - else if(Stack_Normal.contains(active)){ Stack_Normal.removeAll(active); Stack_Normal << active; } - else if(Stack_Above.contains(active)){ Stack_Above.removeAll(active); Stack_Above << active; } - else if(Stack_Fullscreen.contains(active)){ Stack_Fullscreen.removeAll(active); Stack_Fullscreen << active; } - - //Now set the root properties for these lists - LWM::SYSTEM->WM_Set_Client_List(currwins, false); //age-ordered version - LWM::SYSTEM->WM_Set_Client_List(QList() << Stack_Desktop << Stack_Below << Stack_Normal << Stack_Above << Stack_Fullscreen, true); //stacking order version - //Now re-paint (in order) the windows - RepaintWindows(); -} - -void LWindowManager::RepaintWindows(){ - //Go through all the current windows (in stacking order) and re-paint them - for(int i=0; iWM_ShowWindow(Stack_Desktop[i]); - } - for(int i=0; iWM_ShowWindow(Stack_Below[i]); - } - for(int i=0; iWM_ShowWindow(Stack_Normal[i]); - } - for(int i=0; iWM_ShowWindow(Stack_Above[i]); - } - for(int i=0; iWM_ShowWindow(Stack_Fullscreen[i]); - } -} - -//================= -// PRIVATE SLOTS -//================= -void LWindowManager::FinishedWindow(WId win){ - for(int i=0; iclientID() == win){ - qDebug() << " - Finished Window"; - if(win == LWM::SYSTEM->WM_Get_Active_Window()){ - if(i==0 && WINS.length()>1){ LWM::SYSTEM->WM_Set_Active_Window(WINS[i+1]->clientID()); } - else if(i>0){ LWM::SYSTEM->WM_Set_Active_Window(WINS[i-1]->clientID()); } - else{ LWM::SYSTEM->WM_Set_Active_Window( QX11Info::appRootWindow()); } - } - delete WINS.takeAt(i); break; - } - } - //Now update the list of clients - RestackWindows(); -} diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/LWindowManager.h b/src-qt5/core/lumina-wm-INCOMPLETE/LWindowManager.h deleted file mode 100644 index 203efa1b..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/LWindowManager.h +++ /dev/null @@ -1,40 +0,0 @@ -//=========================================== -// Lumina-DE source code -// Copyright (c) 2015, Ken Moore -// Available under the 3-clause BSD license -// See the LICENSE file for full details -//=========================================== -#ifndef _LUMINA_DESKTOP_WINDOW_MANAGER_MAIN_CLASS_H -#define _LUMINA_DESKTOP_WINDOW_MANAGER_MAIN_CLASS_H - -#include "GlobalDefines.h" -#include "LWindow.h" - -class LWindowManager : public QObject{ - Q_OBJECT -public: - LWindowManager(); - ~LWindowManager(); - - bool start(); - void stop(); - -private: - QList WINS; - QList Stack_Desktop, Stack_Below, Stack_Normal, Stack_Above, Stack_Fullscreen; -public slots: - void NewWindow(WId win, bool requested = true); - void ClosedWindow(WId win); - void ModifyWindow(WId win, LWM::WindowAction act); - - void RestackWindows(); - void RepaintWindows(); - -private slots: - void FinishedWindow(WId win); //This is used for LWindow connections/animations - -signals: - void NewFullScreenWindows(QList); -}; - -#endif diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/LXcbEventFilter.cpp b/src-qt5/core/lumina-wm-INCOMPLETE/LXcbEventFilter.cpp deleted file mode 100644 index abbe5a5a..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/LXcbEventFilter.cpp +++ /dev/null @@ -1,204 +0,0 @@ -//=========================================== -// Lumina-DE source code -// Copyright (c) 2015, Ken Moore -// Available under the 3-clause BSD license -// See the LICENSE file for full details -//=========================================== -#include "LXcbEventFilter.h" - -//================================================== -// NOTE: All the XCB interactions and atoms are accessed via: -// LWM::SYSTEM->EWMH.(atom name) -// LWM::SYSTEM->(do something) -// (LWM::SYSTEM is the global XCB structure) -//================================================== - -#include -#include - -//#include - -#define DEBUG 1 -// Also keep the root window/screen around for use in the filters -namespace L_XCB{ - xcb_screen_t *root_screen; - xcb_window_t root; -} - -//Constructor for the Event Filter wrapper -EventFilter::EventFilter() : QObject(){ - EF = new XCBEventFilter(this); - L_XCB::root_screen = xcb_aux_get_screen(QX11Info::connection(), QX11Info::appScreen()); - L_XCB::root = L_XCB::root_screen->root; - SSLocked = false; - WMFlag = 0; -} - -void EventFilter::start(){ - if(DEBUG){ qDebug() << " - Install event filter..."; } - QCoreApplication::instance()->installNativeEventFilter(EF); - if(DEBUG){ qDebug() << " - Run request check..."; } - if(!LWM::SYSTEM->setupEventsForRoot()){ - qCritical() << "[ERROR] Unable to setup WM event retrieval. Is another WM running?"; - exit(1); - } - if(DEBUG){ qDebug() << " - Create WM ID Window"; } - WMFlag = LWM::SYSTEM->WM_CreateWindow(); - LWM::SYSTEM->setupEventsForRoot(WMFlag); - LWM::SYSTEM->WM_Set_Supporting_WM(WMFlag); - QCoreApplication::instance()->flush(); -} - -//Constructor for the XCB event filter -XCBEventFilter::XCBEventFilter(EventFilter *parent) : QAbstractNativeEventFilter(){ - obj = parent; - InitAtoms(); -} - -//This function format taken directly from the Qt5.3 documentation -bool XCBEventFilter::nativeEventFilter(const QByteArray &eventType, void *message, long *) Q_DECL_OVERRIDE -{ - //if(stopping){ return false; } //don't do any parsing - //qDebug() << "New Event"; - bool stopevent = false; - if(eventType=="xcb_generic_event_t"){ - //Convert to known event type (for X11 systems) - xcb_generic_event_t *ev = static_cast(message); - //Now parse the event and emit signals as necessary - switch( ev->response_type & ~0x80){ -//============================== -// INTERACTIVITY EVENTS -//============================== - case XCB_KEY_PRESS: - //This is a keyboard key press - //qDebug() << "Key Press Event"; - obj->emit NewInputEvent(); - stopevent = BlockInputEvent( ((xcb_key_press_event_t *) ev)->root ); //use the main "root" window - not the child widget - break; - case XCB_KEY_RELEASE: - //This is a keyboard key release - //qDebug() << "Key Release Event"; - obj->emit NewInputEvent(); - stopevent = BlockInputEvent( ((xcb_key_release_event_t *) ev)->root ); //use the main "root" window - not the child widget - break; - case XCB_BUTTON_PRESS: - //This is a mouse button press - //qDebug() << "Button Press Event"; - obj->emit NewInputEvent(); - stopevent = BlockInputEvent( ((xcb_button_press_event_t *) ev)->root ); //use the main "root" window - not the child widget - if(!stopevent){ - //Activate the window right now if needed - if(LWM::SYSTEM->WM_Get_Active_Window()!=((xcb_button_press_event_t *) ev)->root){ - LWM::SYSTEM->WM_Set_Active_Window( ((xcb_button_press_event_t *) ev)->root); - } - } - break; - case XCB_BUTTON_RELEASE: - //This is a mouse button release - //qDebug() << "Button Release Event"; - //xcb_button_release_event_t *tmp = (xcb_button_release_event_t *)ev; - stopevent = BlockInputEvent( ((xcb_button_release_event_t *) ev)->root ); //use the main "root" window - not the child widget - break; - case XCB_MOTION_NOTIFY: - //This is a mouse movement event - //qDebug() << "Motion Notify Event"; - obj->emit NewInputEvent(); - stopevent = BlockInputEvent( ((xcb_motion_notify_event_t *) ev)->root ); //use the main "root" window - not the child widget); - break; - case XCB_ENTER_NOTIFY: - //This is a mouse movement event when mouse goes over a new window - //qDebug() << "Enter Notify Event"; - obj->emit NewInputEvent(); - stopevent = BlockInputEvent( ((xcb_enter_notify_event_t *) ev)->root ); - break; - case XCB_LEAVE_NOTIFY: - //This is a mouse movement event when mouse goes leaves a window - //qDebug() << "Leave Notify Event"; - obj->emit NewInputEvent(); - stopevent = BlockInputEvent(); - break; -//============================== - case XCB_EXPOSE: - //qDebug() << "Expose Notify Event:"; - //qDebug() << " - Given Window:" << ((xcb_property_notify_event_t*)ev)->window; - break; -//============================== - case XCB_MAP_NOTIFY: - 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, LWM::Show); - break; -//============================== - case XCB_CREATE_NOTIFY: - qDebug() << "Window Create Event"; - break; -//============================== - case XCB_UNMAP_NOTIFY: - qDebug() << "Window Unmap Event"; - obj->emit ModifyWindow( ((xcb_unmap_notify_event_t *)ev)->window, LWM::Hide); - break; -//============================== - case XCB_DESTROY_NOTIFY: - qDebug() << "Window Closed Event"; - obj->emit WindowClosed( ((xcb_destroy_notify_event_t *) ev)->window ); - break; -//============================== - case XCB_FOCUS_IN: - //qDebug() << "Focus In Event:"; - break; -//============================== - case XCB_FOCUS_OUT: - //qDebug() << "Focus Out Event:"; - break; -//============================== - case XCB_PROPERTY_NOTIFY: - //qDebug() << "Property Notify Event:"; - //qDebug() << " - Given Window:" << ((xcb_property_notify_event_t*)ev)->window; - break; -//============================== - case XCB_CLIENT_MESSAGE: - //qDebug() << "Client Message Event"; - //qDebug() << " - Given Window:" << ((xcb_client_message_event_t*)ev)->window; - break; -//============================== - case XCB_CONFIGURE_NOTIFY: - //qDebug() << "Configure Notify Event"; - break; -//============================== - case XCB_CONFIGURE_REQUEST: - //qDebug() << "Configure Request Event"; - break; -//============================== - case XCB_SELECTION_CLEAR: - //qDebug() << "Selection Clear Event"; - break; -//============================== - case 85: //not sure what event this is - but it seems to come up very often (just hide the notice) - case 0: - case XCB_GE_GENERIC: - break; //generic event - don't do anything special - default: - qDebug() << "Default Event:" << (ev->response_type & ~0x80); -//============================== - } - } - return false; - //never stop event handling (this will not impact the X events themselves - just the internal screensaver/WM/widgets) -} - -bool XCBEventFilter::BlockInputEvent(WId win){ - //Checks the current state of the WM and sets the stop flag as needed - // - Always let the screensaver know about the event first (need to reset timers and such) - obj->emit NewInputEvent(); - // - Check the state of the screensaver - if(obj->SSLocked){ qDebug() << "SS Locked"; return true; } - // - Check the state of any fullscreen apps - else if( win!=0 && !obj->FS_WINS.isEmpty()){ - if(!obj->FS_WINS.contains(win) ){ - //If this event is for an app underneath a fullscreen window - stop it - if(obj->FS_WINS.length() == QApplication::desktop()->screenCount()){ qDebug() << "Screens Covered"; return true; } //all screens covered right now - } - } - return false; -} diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/LXcbEventFilter.h b/src-qt5/core/lumina-wm-INCOMPLETE/LXcbEventFilter.h deleted file mode 100644 index b68eedf5..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/LXcbEventFilter.h +++ /dev/null @@ -1,130 +0,0 @@ -//=========================================== -// Lumina-DE source code -// Copyright (c) 2012, Ken Moore -// Available under the 3-clause BSD license -// See the LICENSE file for full details -//=========================================== -// This class provides the XCB ->Xlib conversion necessary for Qt5 usage -//=========================================== -#ifndef _LUMINA_DESKTOP_XCB_FILTER_H -#define _LUMINA_DESKTOP_XCB_FILTER_H - -#include "GlobalDefines.h" - - -/* -List of XCB response types (since almost impossible to find good docs on XCB) -switch (xcb_generic_event_t*->response_type & ~0x80) -case values: -XCB_KEY_[PRESS | RELEASE] -XCB_BUTTON_[PRESS | RELEASE] -XCB_MOTION_NOTIFY -XCB_ENTER_NOTIFY -XCB_LEAVE_NOTIFY -XCB_FOCUS_[IN | OUT] -XCB_KEYMAP_NOTIFY -XCB_EXPOSE -XCB_GRAPHICS_EXPOSURE -XCB_VISIBILITY_NOTIFY -XCB_CREATE_NOTIFY -XCB_DESTROY_NOTIFY -XCB_UNMAP_NOTIFY -XCB_MAP_[NOTIFY | REQUEST] -XCB_REPARENT_NOTIFY -XCB_CONFIGURE_[NOTIFY | REQUEST] -XCB_GRAVITY_NOTIFY -XCB_RESIZE_REQUEST -XCB_CIRCULATE_[NOTIFY | REQUEST] -XCB_PROPERTY_NOTIFY -XCB_SELECTION_[CLEAR | REQUEST | NOTIFY] -XCB_COLORMAP_NOTIFY -XCB_CLIENT_MESSAGE -*/ - -//SYSTEM TRAY STANDARD DEFINITIONS -//#define SYSTEM_TRAY_REQUEST_DOCK 0 -//#define SYSTEM_TRAY_BEGIN_MESSAGE 1 -//#define SYSTEM_TRAY_CANCEL_MESSAGE 2 - - -class EventFilter : public QObject{ - Q_OBJECT -private: - QAbstractNativeEventFilter* EF; - WId WMFlag; //used to flag a running WM process - -public: - EventFilter(); - ~EventFilter(){} - - void start(); - - //Public variables for the event filter to use/check - QList FS_WINS; //Full-screen windows (1 per monitor) - used for hiding non-app events as needed - bool SSLocked; - -public slots: - void StartedSS(){ SSLocked = true; } - void StoppedSS(){ SSLocked = false; } - void FullScreenChanged(QList fslist){ FS_WINS = fslist; } - -signals: - void NewInputEvent(); - void NewManagedWindow(WId); - void WindowClosed(WId); - void ModifyWindow(WId win, LWM::WindowAction); -}; - -class XCBEventFilter : public QAbstractNativeEventFilter{ -public: - XCBEventFilter(EventFilter *parent); - ~XCBEventFilter(){} - - virtual bool nativeEventFilter(const QByteArray &eventType, void *message, long *); - -private: - EventFilter *obj; - QList WinNotifyAtoms, SysNotifyAtoms; - - void InitAtoms(){ - //Initialize any special atoms that we need to save/use regularly - //NOTE: All the EWMH atoms are already saved globally in LWM::SYSTEM->EWMH - WinNotifyAtoms.clear(); - WinNotifyAtoms << LWM::SYSTEM->EWMH._NET_WM_NAME \ - << LWM::SYSTEM->EWMH._NET_WM_VISIBLE_NAME \ - << LWM::SYSTEM->EWMH._NET_WM_ICON_NAME \ - << LWM::SYSTEM->EWMH._NET_WM_VISIBLE_ICON_NAME \ - << LWM::SYSTEM->EWMH._NET_WM_ICON \ - << LWM::SYSTEM->EWMH._NET_WM_ICON_GEOMETRY; - - SysNotifyAtoms.clear(); - SysNotifyAtoms << LWM::SYSTEM->EWMH._NET_CLIENT_LIST \ - << LWM::SYSTEM->EWMH._NET_CLIENT_LIST_STACKING \ - << LWM::SYSTEM->EWMH._NET_CURRENT_DESKTOP \ - << LWM::SYSTEM->EWMH._NET_WM_STATE \ - << LWM::SYSTEM->EWMH._NET_ACTIVE_WINDOW \ - << LWM::SYSTEM->EWMH._NET_WM_ICON \ - << LWM::SYSTEM->EWMH._NET_WM_ICON_GEOMETRY; - - } - - bool BlockInputEvent(WId win = 0); //Checks the current state of the WM and sets the stop flag as needed - - //Longer Event handling functions - //bool ParseKeyPressEvent(); - //bool ParseKeyReleaseEvent(); - //bool ParseButtonPressEvent(); - //bool ParseButtonReleaseEvent(); - //bool ParseMotionEvent(); - //bool ParsePropertyEvent(); - //bool ParseClientMessageEvent(); - //bool ParseDestroyEvent(); - //bool ParseConfigureEvent(); - //bool ParseKeySelectionClearEvent(); - - - - -}; - -#endif diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/SSBaseWidget.cpp b/src-qt5/core/lumina-wm-INCOMPLETE/SSBaseWidget.cpp deleted file mode 100644 index 83b82ff8..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/SSBaseWidget.cpp +++ /dev/null @@ -1,83 +0,0 @@ -//=========================================== -// Lumina-DE source code -// Copyright (c) 2015, Ken Moore -// Available under the 3-clause BSD license -// See the LICENSE file for full details -//=========================================== - -#include "SSBaseWidget.h" - -#define DEBUG 1 - -static QStringList validPlugs; -// ======== -// PUBLIC -// ======== -SSBaseWidget::SSBaseWidget(QWidget *parent, QSettings *set) : QWidget(parent){ - if(validPlugs.isEmpty()){ validPlugs << "none"; } //add more later - settings = set; //needed to pass along for plugins to read any special options/settings - this->setObjectName("LuminaBaseSSWidget"); - ANIM = 0; - this->setMouseTracking(true); -} - -SSBaseWidget::~SSBaseWidget(){ - if(ANIM!=0){ this->stopPainting(); } -} - -void SSBaseWidget::setPlugin(QString plug){ - plug = plug.toLower(); - if(validPlugs.contains(plug) || plug=="random"){ plugType = plug; } - else{ plugType = "none"; } -} - -// ============= -// PUBLIC SLOTS -// ============= -void SSBaseWidget::startPainting(){ - cplug = plugType; - //free up any old animation instance - if(ANIM!=0){ - ANIM->stop(); ANIM->clear(); - delete ANIM; ANIM = 0; - } - //If a random plugin - grab one of the known plugins - if(cplug=="random"){ - QStringList valid = BaseAnimGroup::KnownAnimations(); - if(valid.isEmpty()){ cplug = "none"; } //no known plugins - else{ cplug = valid[ qrand()%valid.length() ]; } //grab a random plugin - } - if(DEBUG){ qDebug() << " - Screen Saver:" << cplug; } - //Now list all the various plugins and start them appropriately - QString style; - if(cplug=="none"){ - style = "background: transparent;"; //show the underlying black parent widget - }else{ - style = "background: black;"; - } - this->setStyleSheet("QWidget#LuminaBaseSSWidget{ "+style+"}"); - this->repaint(); - //If not a stylesheet-based plugin - set it here - if(cplug!="none"){ - ANIM = BaseAnimGroup::NewAnimation(cplug, this, settings); - connect(ANIM, SIGNAL(finished()), this, SLOT(startPainting()) ); //repeat the plugin as needed - ANIM->LoadAnimations(); - } - //Now start the animation(s) - if(ANIM!=0){ - //if(DEBUG){ qDebug() << " - Starting SS Plugin:" << cplug << ANIM->animationCount() << ANIM->duration() << ANIM->loopCount(); } - if(ANIM->animationCount()>0){ - if(DEBUG){ qDebug() << " - Starting SS Plugin:" << cplug << ANIM->animationCount() << ANIM->duration() << ANIM->loopCount(); } - ANIM->start(); - } - } -} - -void SSBaseWidget::stopPainting(){ - if(ANIM!=0){ - ANIM->stop(); - ANIM->clear(); - delete ANIM; - ANIM = 0; - } -} diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/SSBaseWidget.h b/src-qt5/core/lumina-wm-INCOMPLETE/SSBaseWidget.h deleted file mode 100644 index a6574679..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/SSBaseWidget.h +++ /dev/null @@ -1,55 +0,0 @@ -//=========================================== -// Lumina-DE source code -// Copyright (c) 2015, Ken Moore -// Available under the 3-clause BSD license -// See the LICENSE file for full details -//=========================================== -// This class is the widget which provides the screensaver painting/plugin functionality -//=========================================== -#ifndef _LUMINA_DESKTOP_SCREEN_SAVER_BASE_WIDGET_H -#define _LUMINA_DESKTOP_SCREEN_SAVER_BASE_WIDGET_H - -#include "GlobalDefines.h" -#include "animations/BaseAnimGroup.h" - -class SSBaseWidget : public QWidget{ - Q_OBJECT -public: - SSBaseWidget(QWidget *parent, QSettings *set); - ~SSBaseWidget(); - - void setPlugin(QString); - -public slots: - void startPainting(); - void stopPainting(); - -private: - QString plugType, cplug; //type of custom painting to do - BaseAnimGroup *ANIM; - QSettings *settings; - -private slots: - -signals: - void InputDetected(); //just in case no event handling setup at the WM level - -protected: - void mouseMoveEvent(QMouseEvent *ev){ - ev->accept(); - emit InputDetected(); - } - void keyPressEvent(QKeyEvent *ev){ - ev->accept(); - emit InputDetected(); - } - void paintEvent(QPaintEvent*){ - QStyleOption opt; - opt.init(this); - QPainter p(this); - style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this); - } - -}; - -#endif diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/WMSession.cpp b/src-qt5/core/lumina-wm-INCOMPLETE/WMSession.cpp deleted file mode 100644 index 4a7c6e02..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/WMSession.cpp +++ /dev/null @@ -1,62 +0,0 @@ -//=========================================== -// Lumina-DE source code -// Copyright (c) 2015, Ken Moore -// Available under the 3-clause BSD license -// See the LICENSE file for full details -//=========================================== -#include "WMSession.h" - -#define DEBUG 1 -// ========== -// PUBLIC -// ========== -WMSession::WMSession(){ - if(DEBUG){ qDebug() << "Creating Event Filter..."; } - EFILTER = new EventFilter(); - if(DEBUG){ qDebug() << "Creating Screen Saver..."; } - SS = new LScreenSaver(); - if(DEBUG){ qDebug() << "Creating Window Manager..."; } - WM = new LWindowManager(); - EVThread = new QThread(); - EFILTER->moveToThread(EVThread); - //Setup connections - connect(EFILTER, SIGNAL(NewInputEvent()), SS, SLOT(newInputEvent()) ); - connect(EFILTER, SIGNAL(NewManagedWindow(WId)), WM, SLOT(NewWindow(WId)) ); - connect(EFILTER, SIGNAL(WindowClosed(WId)), WM, SLOT(ClosedWindow(WId)) ); - connect(EFILTER, SIGNAL(ModifyWindow(WId, LWM::WindowAction)), WM, SLOT(ModifyWindow(WId,LWM::WindowAction)) ); - connect(SS, SIGNAL(StartingScreenSaver()), EFILTER, SLOT(StartedSS()) ); - connect(SS, SIGNAL(ClosingScreenSaver()), EFILTER, SLOT(StoppedSS()) ); - connect(WM, SIGNAL(NewFullScreenWindows(QList)), EFILTER, SLOT(FullScreenChanged(QList)) ); -} - -WMSession::~WMSession(){ -} - -void WMSession::start(bool SSONLY){ - //Get the screensaver initialized/ready - if(DEBUG){ qDebug() << "Starting Screen Saver..."; } - SS->start(); - if(SSONLY){ return; } - //Now start pulling/filtering events - if(DEBUG){ qDebug() << "Starting Window Manager..."; } - WM->start(); - if(DEBUG){ qDebug() << "Starting Event Filter..."; } - EVThread->start(); - EFILTER->start(); - if(DEBUG){ qDebug() << "Done Starting WM session..."; } -} - -// ========== -// Public Slots -// ========== -void WMSession::reloadIcons(){ - -} - -void WMSession::newInputsAvailable(QStringList inputs){ - for(int i=0; istop(); delete ball; } - - void LoadAnimations(){ - //qDebug() << "Loading Sample Animation"; - ball = new QWidget(canvas); - //This creates a red "ball" on the widget which is going to expand/contract in the center of the screen - ball->setStyleSheet("background: qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.5, fx:0.341, fy:0.796, stop:0.00531915 rgba(107, 10, 10, 255), stop:0.521277 rgba(170, 10, 10, 255), stop:0.957447 rgba(200, 0, 0, 255), stop:0.994681 rgba(0, 0, 0, 225), stop:1 rgba(255, 255, 255, 0));"); - //Now setup the movements - QPropertyAnimation *move = new QPropertyAnimation(ball,"geometry"); - QPoint ctr(canvas->width()/2, canvas->height()/2); - QRect initgeom(ctr-QPoint(12,12), QSize(24,24) ); - move->setKeyValueAt(0, initgeom ); //starting point - move->setKeyValueAt(1, initgeom ); //ending point (same as start for continuity) - int size = canvas->width(); - if(size > canvas->height()){ size = canvas->height(); } - move->setKeyValueAt(0.5, QRect(ctr-QPoint(size/2, size/2), QSize(size,size))); //touch the edge of the screen - move->setDuration(10000); //10 seconds - this->addAnimation(move); - this->setLoopCount(10); //repeat 10 times - ball->show(); - } - -}; -#endif diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/animations/animations.pri b/src-qt5/core/lumina-wm-INCOMPLETE/animations/animations.pri deleted file mode 100644 index 5473d4e1..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/animations/animations.pri +++ /dev/null @@ -1,6 +0,0 @@ -SOURCES += $$PWD/BaseAnimGroup.cpp - -HEADERS += $$PWD/BaseAnimGroup.h \ - $$PWD/SampleAnimation.h - -FORMS += \ No newline at end of file diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_af.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_af.ts deleted file mode 100644 index 94fa7f9d..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_af.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ar.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ar.ts deleted file mode 100644 index c1a77f55..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ar.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_az.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_az.ts deleted file mode 100644 index 7f25a0f6..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_az.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_bg.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_bg.ts deleted file mode 100644 index bc409571..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_bg.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_bn.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_bn.ts deleted file mode 100644 index 9ed8452e..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_bn.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_bs.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_bs.ts deleted file mode 100644 index a6b8877f..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_bs.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ca.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ca.ts deleted file mode 100644 index 106fcc87..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ca.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - Formulari - - - - Password - Contrasenya - - - - Unlock Session - Desbloqueja la sessió - - - - Locked by: %1 - Bloquejat per %1 - - - - Too Many Failures - Massa fallades - - - - Wait %1 Minutes - Espereu %1 minuts - - - - Failed Attempts: %1 - Intents fallits: %1 - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_cs.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_cs.ts deleted file mode 100644 index 8d58b752..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_cs.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - Formulář - - - - Password - Heslo - - - - Unlock Session - Odemknout sezení - - - - Locked by: %1 - Zamknuto: %1 - - - - Too Many Failures - Příliš mnoho selhání - - - - Wait %1 Minutes - Počkat %1 minut - - - - Failed Attempts: %1 - Nepodařených pokusů: %1 - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_cy.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_cy.ts deleted file mode 100644 index 9f19c204..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_cy.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - 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 deleted file mode 100644 index 0ead248b..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_da.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - Formular - - - - Password - Adgangskode - - - - Unlock Session - Lås session op - - - - Locked by: %1 - Låst af: %1 - - - - Too Many Failures - For mange mislykkede forsøg - - - - Wait %1 Minutes - Vent %1 minutter - - - - Failed Attempts: %1 - Mislykkede forsøg: %1 - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_de.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_de.ts deleted file mode 100644 index 9dac4498..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_de.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - Fenster - - - - Password - Kennwort - - - - Unlock Session - Sitzung entsperren - - - - Locked by: %1 - Gesperrt durch: %1 - - - - Too Many Failures - Zu viele Fehlversuche - - - - Wait %1 Minutes - %1 Minuten warten - - - - Failed Attempts: %1 - Fehlgeschlagene Versuche: %1 - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_el.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_el.ts deleted file mode 100644 index 492b417b..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_el.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - Μορφή - - - - Password - Κωδικός - - - - Unlock Session - Ξεκλείδωμα Συνεδρίας - - - - Locked by: %1 - Κλειδώθηκε απο: %1 - - - - Too Many Failures - Πάρα Πολλές Αποτυχίες - - - - Wait %1 Minutes - Περιμένετε %1 Λεπτά - - - - Failed Attempts: %1 - Αποτυχημένες προσπάθειες: %1 - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_en_GB.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_en_GB.ts deleted file mode 100644 index 78e3a18f..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_en_GB.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_en_ZA.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_en_ZA.ts deleted file mode 100644 index 50272a77..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_en_ZA.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_es.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_es.ts deleted file mode 100644 index b70e5640..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_es.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - Contraseña - - - - Unlock Session - Desbloquear Sesion - - - - Locked by: %1 - Bloqueado por:%1 - - - - Too Many Failures - Demasiadas Fallas - - - - Wait %1 Minutes - Espera %1 Minutos - - - - Failed Attempts: %1 - Intentos Fallidos: %1 - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_et.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_et.ts deleted file mode 100644 index 3dd232ba..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_et.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_eu.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_eu.ts deleted file mode 100644 index 64b6c785..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_eu.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_fa.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_fa.ts deleted file mode 100644 index f4441b5f..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_fa.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - از - - - - Password - گذرواژه - - - - Unlock Session - نشست را باز کن - - - - Locked by: %1 - بسته شده بدست: %1 - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_fi.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_fi.ts deleted file mode 100644 index a9ecb8f8..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_fi.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - Lomake - - - - Password - Salasana - - - - Unlock Session - Poista istunnon lukitus - - - - Locked by: %1 - Lukinnut: %1 - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_fr.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_fr.ts deleted file mode 100644 index d53f60e3..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_fr.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_fr_CA.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_fr_CA.ts deleted file mode 100644 index 704ad70f..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_fr_CA.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_gl.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_gl.ts deleted file mode 100644 index 3ae52d22..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_gl.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_he.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_he.ts deleted file mode 100644 index 42c618f6..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_he.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_hi.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_hi.ts deleted file mode 100644 index b1e3b837..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_hi.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_hr.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_hr.ts deleted file mode 100644 index 6e365d53..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_hr.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_hu.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_hu.ts deleted file mode 100644 index 201e8871..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_hu.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_id.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_id.ts deleted file mode 100644 index babeef2f..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_id.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_is.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_is.ts deleted file mode 100644 index 6eec6ff3..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_is.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_it.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_it.ts deleted file mode 100644 index ff630fb3..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_it.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - Modulo - - - - Password - Parola chiave - - - - Unlock Session - Sessione sbloccata - - - - Locked by: %1 - Bloccato da: %1 - - - - Too Many Failures - Troppi errori - - - - Wait %1 Minutes - Aspetta %1 minuti - - - - Failed Attempts: %1 - Tentativi non riusciti: %1 - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ja.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ja.ts deleted file mode 100644 index 52c9b6ae..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ja.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - Form - - - - Password - パスワード - - - - Unlock Session - セッションのロックを解除 - - - - Locked by: %1 - %1 によってロックされました - - - - Too Many Failures - 認証に続けて失敗しました - - - - Wait %1 Minutes - %1 分お待ちください - - - - Failed Attempts: %1 - 失敗した回数: %1 - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ka.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ka.ts deleted file mode 100644 index 86508f3a..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ka.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ko.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ko.ts deleted file mode 100644 index c1898e09..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ko.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_lt.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_lt.ts deleted file mode 100644 index e98e4f5e..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_lt.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - Forma - - - - Password - Slaptažodis - - - - Unlock Session - Atrakinti seansą - - - - Locked by: %1 - Užrakino: %1 - - - - Too Many Failures - Per daug nesėkmių - - - - Wait %1 Minutes - Palaukite %1 minutes - - - - Failed Attempts: %1 - Nepavykusių bandymų: %1 - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_lv.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_lv.ts deleted file mode 100644 index 1a4139fe..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_lv.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_mk.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_mk.ts deleted file mode 100644 index 595a844c..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_mk.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_mn.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_mn.ts deleted file mode 100644 index 0bcaaad2..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_mn.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ms.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ms.ts deleted file mode 100644 index b583bf67..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ms.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_mt.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_mt.ts deleted file mode 100644 index 11b14d02..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_mt.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_nb.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_nb.ts deleted file mode 100644 index 8c484832..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_nb.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_nl.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_nl.ts deleted file mode 100644 index b164c911..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_nl.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - Formulier - - - - Password - Wachtwoord - - - - Unlock Session - Ontgrendel sessie - - - - Locked by: %1 - Vergrendeld door: %1 - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_pa.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_pa.ts deleted file mode 100644 index d4af901e..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_pa.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_pl.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_pl.ts deleted file mode 100644 index 6be95399..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_pl.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - Formularz - - - - Password - Hasło - - - - Unlock Session - Odblokuj Sesję - - - - Locked by: %1 - Zablokowane przez: %1 - - - - Too Many Failures - Za Dużo Błędów - - - - Wait %1 Minutes - Zaczekaj %1 Minut - - - - Failed Attempts: %1 - Nieudanych Prób: %1 - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_pt.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_pt.ts deleted file mode 100644 index c2aafc06..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_pt.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_pt_BR.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_pt_BR.ts deleted file mode 100644 index c0a0387a..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_pt_BR.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - Formulário - - - - Password - Senha - - - - Unlock Session - Desbloquear Sessão - - - - Locked by: %1 - Bloqueado por: %1 - - - - Too Many Failures - Muitas Falhas - - - - Wait %1 Minutes - Aguarde %1 Minutos - - - - Failed Attempts: %1 - Tentativas com Falhas: %1 - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ro.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ro.ts deleted file mode 100644 index 0b9f7367..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ro.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ru.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ru.ts deleted file mode 100644 index 659116b8..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ru.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - Экран блокировки - - - - Password - Пароль - - - - Unlock Session - Разблокировать сессию - - - - Locked by: %1 - Заблокировано: %1 - - - - Too Many Failures - Слишком много неудач - - - - Wait %1 Minutes - Подождите %1 минут(ы) - - - - Failed Attempts: %1 - Неудачные попытки: %1 - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_sk.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_sk.ts deleted file mode 100644 index dab370e5..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_sk.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_sl.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_sl.ts deleted file mode 100644 index 69d4fc96..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_sl.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_sr.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_sr.ts deleted file mode 100644 index 1f825101..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_sr.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_sv.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_sv.ts deleted file mode 100644 index f9df7d49..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_sv.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_sw.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_sw.ts deleted file mode 100644 index ee493a36..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_sw.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ta.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ta.ts deleted file mode 100644 index c998a8c9..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_ta.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_tg.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_tg.ts deleted file mode 100644 index f2847d66..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_tg.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_th.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_th.ts deleted file mode 100644 index 3d34afe7..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_th.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_tr.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_tr.ts deleted file mode 100644 index deb5397b..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_tr.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_uk.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_uk.ts deleted file mode 100644 index c74b1ec6..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_uk.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_uz.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_uz.ts deleted file mode 100644 index 506e2eb9..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_uz.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_vi.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_vi.ts deleted file mode 100644 index 67f9b9b0..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_vi.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_zh_CN.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_zh_CN.ts deleted file mode 100644 index b6e21f5e..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_zh_CN.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - 密码 - - - - Unlock Session - 解除会话锁定 - - - - Locked by: %1 - - - - - Too Many Failures - 失败次数过多 - - - - Wait %1 Minutes - 等待 %1 分钟 - - - - Failed Attempts: %1 - 失败尝试: %1 - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_zh_HK.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_zh_HK.ts deleted file mode 100644 index 8457ef3d..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_zh_HK.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_zh_TW.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_zh_TW.ts deleted file mode 100644 index d1b834bc..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_zh_TW.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_zu.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_zu.ts deleted file mode 100644 index eebadac5..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_zu.ts +++ /dev/null @@ -1,42 +0,0 @@ - - - - - LLockScreen - - - Form - - - - - Password - - - - - Unlock Session - - - - - Locked by: %1 - - - - - Too Many Failures - - - - - Wait %1 Minutes - - - - - Failed Attempts: %1 - - - - diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/lumina-wm.pro b/src-qt5/core/lumina-wm-INCOMPLETE/lumina-wm.pro deleted file mode 100644 index 928f8744..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/lumina-wm.pro +++ /dev/null @@ -1,107 +0,0 @@ -include("$${PWD}/../../OS-detect.pri") - -QT += core gui network -greaterThan(QT_MAJOR_VERSION, 4): QT += widgets x11extras - -TARGET = lumina-wm -target.path = $${L_BINDIR} - -LIBS += -lLuminaUtils -lxcb -lxcb-damage -lxcb-composite -lxcb-screensaver -lxcb-util - -DEPENDPATH += ../libLumina - -SOURCES += main.cpp \ - WMSession.cpp \ - LScreenSaver.cpp \ - SSBaseWidget.cpp \ - LLockScreen.cpp \ - LXcbEventFilter.cpp \ - LWindow.cpp \ - LWindowManager.cpp - - -HEADERS += GlobalDefines.h \ - WMSession.h \ - LScreenSaver.h \ - SSBaseWidget.h \ - LLockScreen.h \ - LXcbEventFilter.h \ - LWindow.h \ - LWindowManager.h - -FORMS += LLockScreen.ui - -#Now add in all the screensaver animation plugins -include(animations/animations.pri) - -TRANSLATIONS = i18n/lumina-wm_af.ts \ - i18n/lumina-wm_ar.ts \ - i18n/lumina-wm_az.ts \ - i18n/lumina-wm_bg.ts \ - i18n/lumina-wm_bn.ts \ - i18n/lumina-wm_bs.ts \ - i18n/lumina-wm_ca.ts \ - i18n/lumina-wm_cs.ts \ - i18n/lumina-wm_cy.ts \ - i18n/lumina-wm_da.ts \ - i18n/lumina-wm_de.ts \ - i18n/lumina-wm_el.ts \ - i18n/lumina-wm_en_GB.ts \ - i18n/lumina-wm_en_ZA.ts \ - i18n/lumina-wm_es.ts \ - i18n/lumina-wm_et.ts \ - i18n/lumina-wm_eu.ts \ - i18n/lumina-wm_fa.ts \ - i18n/lumina-wm_fi.ts \ - i18n/lumina-wm_fr.ts \ - i18n/lumina-wm_fr_CA.ts \ - i18n/lumina-wm_gl.ts \ - i18n/lumina-wm_he.ts \ - i18n/lumina-wm_hi.ts \ - i18n/lumina-wm_hr.ts \ - i18n/lumina-wm_hu.ts \ - i18n/lumina-wm_id.ts \ - i18n/lumina-wm_is.ts \ - i18n/lumina-wm_it.ts \ - i18n/lumina-wm_ja.ts \ - i18n/lumina-wm_ka.ts \ - i18n/lumina-wm_ko.ts \ - i18n/lumina-wm_lt.ts \ - i18n/lumina-wm_lv.ts \ - i18n/lumina-wm_mk.ts \ - i18n/lumina-wm_mn.ts \ - i18n/lumina-wm_ms.ts \ - i18n/lumina-wm_mt.ts \ - i18n/lumina-wm_nb.ts \ - i18n/lumina-wm_nl.ts \ - i18n/lumina-wm_pa.ts \ - i18n/lumina-wm_pl.ts \ - i18n/lumina-wm_pt.ts \ - i18n/lumina-wm_pt_BR.ts \ - i18n/lumina-wm_ro.ts \ - i18n/lumina-wm_ru.ts \ - i18n/lumina-wm_sk.ts \ - i18n/lumina-wm_sl.ts \ - i18n/lumina-wm_sr.ts \ - i18n/lumina-wm_sv.ts \ - i18n/lumina-wm_sw.ts \ - i18n/lumina-wm_ta.ts \ - i18n/lumina-wm_tg.ts \ - i18n/lumina-wm_th.ts \ - i18n/lumina-wm_tr.ts \ - i18n/lumina-wm_uk.ts \ - i18n/lumina-wm_uz.ts \ - i18n/lumina-wm_vi.ts \ - i18n/lumina-wm_zh_CN.ts \ - i18n/lumina-wm_zh_HK.ts \ - i18n/lumina-wm_zh_TW.ts \ - i18n/lumina-wm_zu.ts - -dotrans.path=$${L_SHAREDIR}/lumina-desktop/i18n/ -dotrans.extra=cd i18n && $${LRELEASE} -nounfinished *.ts && cp *.qm $(INSTALL_ROOT)$${L_SHAREDIR}/lumina-desktop/i18n/ - -INSTALLS += target - -WITH_I18N{ - INSTALLS += dotrans -} diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/main.cpp b/src-qt5/core/lumina-wm-INCOMPLETE/main.cpp deleted file mode 100644 index 02e48b7b..00000000 --- a/src-qt5/core/lumina-wm-INCOMPLETE/main.cpp +++ /dev/null @@ -1,56 +0,0 @@ -//=========================================== -// Lumina-DE source code -// Copyright (c) 2015, Ken Moore -// Available under the 3-clause BSD license -// See the LICENSE file for full details -//=========================================== - -#include "GlobalDefines.h" -//Initialize any global structures here -LXCB *LWM::SYSTEM = 0; - -//Local includes -#include "WMSession.h" -#include "LWindow.h" -#include - - -//#define DEBUG 0 -int main(int argc, char ** argv) -{ - qDebug() << "Starting lumina-wm..."; - LTHEME::LoadCustomEnvSettings(); - LSingleApplication a(argc, argv, "lumina-wm"); - if(!a.isPrimaryProcess()){ return 0; } //Inputs forwarded on to the primary already - LuminaThemeEngine themes(&a); - - //Setup the global structures - LWM::SYSTEM = new LXCB(); - if( a.inputlist.contains("--test-win") ){ - //Simple override to test out the window class - qDebug() << "Starting window test..."; - QLabel dlg(0, Qt::Window | Qt::BypassWindowManagerHint); //this test should be ignored by the current WM - dlg.setText("Sample Window"); - dlg.setWindowTitle("Test"); - dlg.resize(200,100); - dlg.setStyleSheet("background: rgba(255,255,255,100); color: black;"); - dlg.move(100,100); - dlg.show(); - //dlg.move(100,100); - qDebug() << " - Loading window frame..."; - LWindow win(dlg.winId()); //have it wrap around the dialog - qDebug() << " - Show frame..."; - win.frame()->windowChanged(LWM::Show); - qDebug() << " - Start event loop..."; - a.setQuitOnLastWindowClosed(true); - return a.exec(); - } - WMSession w; - w.start(a.inputlist.contains("--test-ss")); - QObject::connect(&themes, SIGNAL(updateIcons()), &w, SLOT(reloadIcons()) ); - QObject::connect(&a, SIGNAL(InputsAvailable(QStringList)), &w, SLOT(newInputsAvailable(QStringList)) ); - if(!a.inputlist.isEmpty()){ w.newInputsAvailable(a.inputlist); } - int retCode = a.exec(); - - return retCode; -} -- cgit From c4a720027c58095a8401bc53df4dc0438fc91f8a Mon Sep 17 00:00:00 2001 From: Pavel Borecki Date: Mon, 3 Jul 2017 13:34:35 +0000 Subject: Translated using Weblate (Czech) Currently translated at 100.0% (325 of 325 strings) --- .../core/lumina-desktop/i18n/lumina-desktop_cs.ts | 54 +++++++++++----------- 1 file changed, 27 insertions(+), 27 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_cs.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_cs.ts index fe0c683b..dba12979 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_cs.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_cs.ts @@ -40,47 +40,47 @@ Launch %1 - Spustit %1 + Spustit %1 Open - Otevřít + Otevřít Open With - + Otevřít pomocí View Properties - + Zobrazit vlastnosti File Operations - + Operace se souborem Rename - + Přejmenovat Copy - Kopírovat + Kopírovat Cut - Vyjmout + Vyjmout Delete - Vymazat + Vymazat @@ -95,7 +95,7 @@ New Filename - + Nový název souboru @@ -265,12 +265,12 @@ - Don't expect to build up the weak by pulling down the strong. + Don't expect to build up the weak by pulling down the strong. Neočekávej, že povzbudíš slabé, tím že dolů stáhneš silné. - You can't know too much, but you can say too much. + You can't know too much, but you can say too much. Nemůžeš vědět příliš mnoho, ale můžeš toho říct přespříliš. @@ -350,7 +350,7 @@ - Only two things are infinite, the universe and human stupidity, and I'm not sure about the former. + Only two things are infinite, the universe and human stupidity, and I'm not sure about the former. Jen dvě věci jsou nekonečné, vesmír a lidská hloupost. A nejsem si jist, jak si mám vykládat to první. @@ -360,7 +360,7 @@ - Do, or do not. There is no 'try'. + Do, or do not. There is no 'try'. Udělej to, nebo to nedělej vůbec. Nejde o to to jen zkoušet. @@ -380,7 +380,7 @@ - It's kind of fun to do the impossible. + It's kind of fun to do the impossible. Dělat nemožné je zábava. @@ -692,7 +692,7 @@ Modify Item - + Upravit položku @@ -773,24 +773,24 @@ Desktop Actions - + Akce desktopu New Folder - + Nová složka New File - + Nový soubor Paste - + Vložit @@ -827,7 +827,7 @@ Desktop - Plocha + Plocha @@ -874,7 +874,7 @@ Volume - + Hlasitost @@ -1416,22 +1416,22 @@ Suspend - Uspat do paměti + Uspat do paměti Restart - Restartovat + Restartovat Power Off - + Vypnout Log Out - Odhlásit se + Odhlásit se @@ -1501,7 +1501,7 @@ Power Off - + Vypnout -- cgit From 8a5aa871922ce5878a965f320b73a57358129b00 Mon Sep 17 00:00:00 2001 From: Pavel Borecki Date: Sun, 2 Jul 2017 18:52:32 +0000 Subject: Translated using Weblate (Czech) Currently translated at 100.0% (7 of 7 strings) --- src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_cs.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_cs.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_cs.ts index 8d58b752..702dbf0d 100644 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_cs.ts +++ b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_cs.ts @@ -26,12 +26,12 @@ Too Many Failures - Příliš mnoho selhání + Příliš mnoho nezdařilých pokusů Wait %1 Minutes - Počkat %1 minut + Čekejte %1 minut -- cgit From 8ce98bafdb1dd9e2ac511429ac62e0d0665bd4bf Mon Sep 17 00:00:00 2001 From: Pavel Borecki Date: Sun, 2 Jul 2017 19:04:57 +0000 Subject: Translated using Weblate (Czech) Currently translated at 100.0% (18 of 18 strings) --- src-qt5/core/lumina-info/i18n/lumina-info_cs.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_cs.ts b/src-qt5/core/lumina-info/i18n/lumina-info_cs.ts index 8153cee7..302d5c8c 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_cs.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_cs.ts @@ -21,7 +21,7 @@ Lumina Website - Stránky Lumina + Stránky projektu Lumina @@ -41,12 +41,12 @@ Qt Version: - Verze Qt: + Verze Qt knihoven: Ask the Community - Zeptat se společenství + Zeptat se ostatních @@ -70,8 +70,8 @@ - <a href="https://github.com/beanpole135">Ken Moore</a> - <a href="https://github.com/beanpole135">Ken Moore</a> + <a href="https://github.com/beanpole135">Ken Moore</a> + <a href="https://github.com/beanpole135">Ken Moore</a> @@ -85,8 +85,8 @@ - <a href="https://github.com/pcbsd/lumina/graphs/contributors">Open in web browser<a> - <a href="https://github.com/pcbsd/lumina/graphs/contributors">Otevřít v prohlížeči<a> + <a href="https://github.com/pcbsd/lumina/graphs/contributors">Open in web browser<a> + <a href="https://github.com/pcbsd/lumina/graphs/contributors">Otevřít v prohlížeči<a> -- cgit From 069a035954b620fd9430105b9e751910a12773dd Mon Sep 17 00:00:00 2001 From: Pavel Borecki Date: Sun, 2 Jul 2017 19:03:29 +0000 Subject: Translated using Weblate (Czech) Currently translated at 100.0% (40 of 40 strings) --- src-qt5/core/lumina-open/i18n/lumina-open_cs.ts | 28 ++++++++++++------------- 1 file changed, 14 insertions(+), 14 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_cs.ts b/src-qt5/core/lumina-open/i18n/lumina-open_cs.ts index a08b5965..1b682b8e 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_cs.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_cs.ts @@ -6,12 +6,12 @@ Open With... - Otevřít pomocí... + Otevřít pomocí… Preferred - Preferované + Upřednostňované @@ -26,7 +26,7 @@ Binary Location - Místo v binárním kódu + Umístění spustitelného souboru @@ -46,7 +46,7 @@ Cancel - Zrušit + Storno @@ -121,7 +121,7 @@ Utilities - Pomůcky + Nástroje @@ -136,7 +136,7 @@ Find Application Binary - Najít soubor aplikace + Najít spustitelný soubor aplikace @@ -161,27 +161,27 @@ Invalid file or URL: %1 - Neplatný soubor nebo URL: %1 + Neplatný soubor nebo URL adresa: %1 Application entry is invalid: %1 - Záznam programu je neplatný: %1 + Záznam pro aplikaci není platný: %1 Application shortcut is missing the launching information (malformed shortcut): %1 - Zástupci aplikace chybí informace o zahájení (chybné zkratky):% 1 + V zástupci aplikace chybí informace pro spouštění (chybná zkratka):% 1 URL shortcut is missing the URL: %1 - URL zástupci chybí URL: %1 + V zástupci URL adresy chybí URL: %1 Directory shortcut is missing the path to the directory: %1 - Zástupci složky chybí cesta do adresáře: %1 + V zástupci složky chybí popis jejího umístění: %1 @@ -195,8 +195,8 @@ - Could not find "%1". Please ensure it is installed first. - Nepodařilo se najít "%1". Nejprve, prosím, zajistěte, aby byl nainstalován. + Could not find "%1". Please ensure it is installed first. + Nepodařilo se najít „%1“. Nejprve zajistěte, aby bylo nainstalované. @@ -206,7 +206,7 @@ The following application experienced an error and needed to close: - Následující aplikace ohlašují chybu a musí být ukončeny: + V následující aplikaci došlo k chyba a bude proto ukončena: -- cgit From 7d421d047bd3a305951d6668b93cea8ca77b5d69 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Wed, 5 Jul 2017 09:55:03 -0400 Subject: Add a README.md to the "core" project for Lumina --- src-qt5/core/README.md | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 src-qt5/core/README.md (limited to 'src-qt5/core') diff --git a/src-qt5/core/README.md b/src-qt5/core/README.md new file mode 100644 index 00000000..83d98c6d --- /dev/null +++ b/src-qt5/core/README.md @@ -0,0 +1,90 @@ +## Core Components of the Lumina Desktop + +It is **strongly-encouraged** that the "core" of Lumina is built and distributed as a single package. Each of the utilities listed here will explicitly require/use each other for essential functionality. + +Binaries: + * `start-lumina-desktop`: (lumina-session directory) Use this to start the desktop session + * `lumina-desktop`: (lumina-desktop directory): Use this to communicate with the currently-running session + * `lumina-open`: (lumina-open directory: Use this to launch external applications. Complement to the `xdg-open` utility. + * `lumina-info`: (lumina-info directory: View basic information about the desktop itself such as version, license, etc. + +Other Files that get installed if "core" is built directly: + * PREFIX/share/icons/material-design-[light/dark]: Basic SVG icon theme. + * PREFIX/share/lumina-desktop/themes/*: Built-in themes for the Lumina desktop + * PREFIX/share/lumina-desktop/colors/*: Built-in color schemes for the Lumina desktop + * PREFIX/share/lumina-desktop/menu-scripts/*: Built-in scripts for creating menu entries on-demand. + * PREFIX/share/lumina-desktop/globs2: Fallback XDG mimetype database (in case the system does not have one available) + +### Library Dependencies + +1. Qt 5.2+ (specific modules listed below) + * concurrent + * core + * gui + * network + * multimedia + * multimediawidgets + * svg + * widgets + * x11extras +2. X11 Libraries + * libXdamage +3. XCB Libraries + * libxcb + * libxcb-ewmh + * libxcb-image + * libxcb-composite + * libxcb-damage + * libxcb-randr + * libxcb-util +4. Other Libraries + * libc + +### Runtime Dependencies (utilities) +1. Required Utilities + * `xinit`: Used by `start-lumina-desktop` for launching an X11 session if needed. + * `fluxbox`: Used for window management within the desktop session + * `xscreensaver`: Screensaver/locker for the desktop session +2. Optional (but recommended) Utilities + * `numlockx`: Used to toggle the numlock key on session start + * `compton` *or* `xcompmgr`: Compositor to provide cross-application transparency effects and graphical smoothing + * `xterm`, `qterminal` or some other graphical terminal: XDG standards require the availability of a graphical terminal to launch particular types of applications. +3. OS-specific utilities (optional, but allow for better OS integration) + 1. FreeBSD/TrueOS + * AppCafe (graphical package manager) + * SysAdm (system control panel) + * `pc-sysconfig`, `intel_backlight`, `xbrightness` : screen brightness control utilities + * `pc-mixer`: graphical front-end to `mixer` + * `pc-sysconfig`: Allow system into be put into suspend mode (if supported by hardware) + 2. DragonFlyBSD + * `xbrightness`: screen brightness control (fake brightness - will not change power consumption) + 3. OpenBSD + * `xbacklight`: screen brightness control + 4. NetBSD + * [No OS Integrations committed yet] + 5. Generic "Linux" + * `xbacklight`: screen brightness control + * `amixer`: Audio mixer control + * `pavucontrol`: Graphical audio mixer utility + * `acpi`: Battery detection/status + 6. Slackware Linux + * `xbacklight`: screen brightness control + * `amixer`: Audio mixer control + * `pavucontrol`: Graphical audio mixer utility + * `acpi`: Battery detection/status + * `dbus-send`: System shutdown/restart + 7. Debian GNU/kFreeBSD + * `xbacklight`: screen brightness control + * `pavucontrol`: Graphical audio mixer utility + 8. Gentoo Linux + * `xbacklight`: screen brightness control + * `amixer`: Audio mixer control + * `pavucontrol`: Graphical audio mixer utility + * `acpi`: Battery detection/status + * `dbus-send`: System shutdown/restart + 9. Debian GNU/Linux + * `xbacklight`: screen brightness control + * `amixer`: Audio mixer control + * `pavucontrol`: Graphical audio mixer utility + * `acpi`: Battery detection/status + * `dbus-send`: System shutdown/restart -- cgit From 06aed60928fa0da6a296ae62af1c9e6471e3d143 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Wed, 5 Jul 2017 09:59:24 -0400 Subject: Update README.md Fix some syntax issues so GitHub will properly display the file --- src-qt5/core/README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/README.md b/src-qt5/core/README.md index 83d98c6d..b5ef01b8 100644 --- a/src-qt5/core/README.md +++ b/src-qt5/core/README.md @@ -4,15 +4,15 @@ It is **strongly-encouraged** that the "core" of Lumina is built and distributed Binaries: * `start-lumina-desktop`: (lumina-session directory) Use this to start the desktop session - * `lumina-desktop`: (lumina-desktop directory): Use this to communicate with the currently-running session - * `lumina-open`: (lumina-open directory: Use this to launch external applications. Complement to the `xdg-open` utility. - * `lumina-info`: (lumina-info directory: View basic information about the desktop itself such as version, license, etc. + * `lumina-desktop`: (lumina-desktop directory) Use this to communicate with the currently-running session + * `lumina-open`: (lumina-open directory) Use this to launch external applications. Complement to the `xdg-open` utility. + * `lumina-info`: (lumina-info directory) View basic information about the desktop itself such as version, license, etc. Other Files that get installed if "core" is built directly: * PREFIX/share/icons/material-design-[light/dark]: Basic SVG icon theme. - * PREFIX/share/lumina-desktop/themes/*: Built-in themes for the Lumina desktop - * PREFIX/share/lumina-desktop/colors/*: Built-in color schemes for the Lumina desktop - * PREFIX/share/lumina-desktop/menu-scripts/*: Built-in scripts for creating menu entries on-demand. + * PREFIX/share/lumina-desktop/themes: Built-in themes for the Lumina desktop + * PREFIX/share/lumina-desktop/colors: Built-in color schemes for the Lumina desktop + * PREFIX/share/lumina-desktop/menu-scripts: Built-in scripts for creating menu entries on-demand. * PREFIX/share/lumina-desktop/globs2: Fallback XDG mimetype database (in case the system does not have one available) ### Library Dependencies @@ -50,7 +50,7 @@ Other Files that get installed if "core" is built directly: * `compton` *or* `xcompmgr`: Compositor to provide cross-application transparency effects and graphical smoothing * `xterm`, `qterminal` or some other graphical terminal: XDG standards require the availability of a graphical terminal to launch particular types of applications. 3. OS-specific utilities (optional, but allow for better OS integration) - 1. FreeBSD/TrueOS + 1. FreeBSD/TrueOS * AppCafe (graphical package manager) * SysAdm (system control panel) * `pc-sysconfig`, `intel_backlight`, `xbrightness` : screen brightness control utilities -- cgit From 7474238cc4b845ed7c59a377f1f0e4ab456ed5f4 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Wed, 5 Jul 2017 10:00:48 -0400 Subject: Update README.md Another minor syntax change --- src-qt5/core/README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/README.md b/src-qt5/core/README.md index b5ef01b8..6a17d900 100644 --- a/src-qt5/core/README.md +++ b/src-qt5/core/README.md @@ -83,8 +83,8 @@ Other Files that get installed if "core" is built directly: * `acpi`: Battery detection/status * `dbus-send`: System shutdown/restart 9. Debian GNU/Linux - * `xbacklight`: screen brightness control - * `amixer`: Audio mixer control - * `pavucontrol`: Graphical audio mixer utility - * `acpi`: Battery detection/status - * `dbus-send`: System shutdown/restart + * `xbacklight`: screen brightness control + * `amixer`: Audio mixer control + * `pavucontrol`: Graphical audio mixer utility + * `acpi`: Battery detection/status + * `dbus-send`: System shutdown/restart -- cgit From c350293e4a3bccfbc255dec8e1eea35fe36c2b2d Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Wed, 5 Jul 2017 13:23:25 -0400 Subject: Add the ability to use a static "instance()" of the DesktopSettings class within a project --- src-qt5/core/libLumina/DesktopSettings.cpp | 14 ++++++++++++-- src-qt5/core/libLumina/DesktopSettings.h | 2 ++ 2 files changed, 14 insertions(+), 2 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/DesktopSettings.cpp b/src-qt5/core/libLumina/DesktopSettings.cpp index 30bd5bc2..bd0325ec 100644 --- a/src-qt5/core/libLumina/DesktopSettings.cpp +++ b/src-qt5/core/libLumina/DesktopSettings.cpp @@ -9,7 +9,7 @@ #include #include -#include +#include #include #include @@ -25,6 +25,16 @@ DesktopSettings::~DesktopSettings(){ if(!files.isEmpty()){ stop(); } } +DesktopSettings* DesktopSettings::instance(){ + static DesktopSettings *set = 0; + if(set==0){ + //First-time init + set = new DesktopSettings(); + set->start(); + } + return set; +} + //Start/stop routines void DesktopSettings::start(){ files.clear(); settings.clear(); //clear the internal hashes (just in case) @@ -35,7 +45,7 @@ void DesktopSettings::start(){ } parseSystemSettings(); //set the runmode appropriately locateFiles(); // - + } void DesktopSettings::stop(){ diff --git a/src-qt5/core/libLumina/DesktopSettings.h b/src-qt5/core/libLumina/DesktopSettings.h index 57eede9d..57a85791 100644 --- a/src-qt5/core/libLumina/DesktopSettings.h +++ b/src-qt5/core/libLumina/DesktopSettings.h @@ -30,6 +30,8 @@ public: DesktopSettings(QObject *parent = 0); ~DesktopSettings(); + static DesktopSettings* instance(); + //Start/stop routines void start(); void stop(); -- cgit From 9c0db82810e95763a34e703a2209fdda7d1ab883 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Wed, 5 Jul 2017 13:30:10 -0400 Subject: Move Lumina2 over to using the static instance of the DesktopSettings class rather than a global object (lets us use the DesktopSettings within the standalone classes in libLumina as well). --- src-qt5/core/lumina-desktop-unified/LSession.cpp | 22 +++++++++++----------- .../core/lumina-desktop-unified/global-objects.h | 2 +- .../src-desktop/ContextMenu.cpp | 4 ++-- .../src-events/LShortcutEvents.cpp | 8 ++++---- 4 files changed, 18 insertions(+), 18 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-desktop-unified/LSession.cpp b/src-qt5/core/lumina-desktop-unified/LSession.cpp index 5aaf99c7..8b4d352f 100644 --- a/src-qt5/core/lumina-desktop-unified/LSession.cpp +++ b/src-qt5/core/lumina-desktop-unified/LSession.cpp @@ -18,7 +18,7 @@ NativeWindowSystem* Lumina::NWS = 0; NativeEventFilter* Lumina::NEF = 0; LScreenSaver* Lumina::SS = 0; -DesktopSettings* Lumina::SETTINGS = 0; +//DesktopSettings* Lumina::SETTINGS = 0; //Lumina::WM = 0; QThread* Lumina::EVThread = 0; RootWindow* Lumina::ROOTWIN = 0; @@ -45,11 +45,11 @@ LSession::LSession(int &argc, char ** argv) : LSingleApplication(argc, argv, "lu //Now initialize the global objects (but do not start them yet) Lumina::NEF = new NativeEventFilter(); Lumina::NWS = new NativeWindowSystem(); - Lumina::SETTINGS = new DesktopSettings(); + //Lumina::SETTINGS = new DesktopSettings(); Lumina::SS = new LScreenSaver(); - //Now put the Event Filter into it's own thread to keep things snappy + //Now put the Native Window System into it's own thread to keep things snappy Lumina::EVThread = new QThread(); - Lumina::NEF->moveToThread(Lumina::EVThread); + Lumina::NWS->moveToThread(Lumina::EVThread); Lumina::EVThread->start(); Lumina::ROOTWIN = new RootWindow(); Lumina::APPLIST = new XDGDesktopList(0, true); //keep this list up to date @@ -69,7 +69,7 @@ LSession::~LSession(){ if(Lumina::EVThread->isRunning()){ Lumina::EVThread->quit(); } Lumina::EVThread->deleteLater(); } - if(Lumina::SETTINGS!=0){ Lumina::SETTINGS->deleteLater(); } + if(DesktopSettings::instance()!=0){ DesktopSettings::instance()->deleteLater(); } if(Lumina::ROOTWIN!=0){ Lumina::ROOTWIN->deleteLater(); } if(Lumina::APPLIST!=0){ Lumina::APPLIST->deleteLater(); } } @@ -88,7 +88,7 @@ void LSession::setupSession(){ //Setup the QSettings default paths splash.showScreen("settings"); if(DEBUG){ qDebug() << " - Init QSettings:" << timer->elapsed();} - Lumina::SETTINGS->start(); + DesktopSettings::instance()->start(); /*sessionsettings = new QSettings("lumina-desktop", "sessionsettings"); DPlugSettings = new QSettings("lumina-desktop","pluginsettings/desktopsettings"); //Load the proper translation files @@ -201,7 +201,7 @@ void LSession::CleanupSession(){ LUtils::writeFile("/tmp/.luminastopping",QStringList() << "yes", true); //Start the logout chimes (if necessary) LOS::setAudioVolume( LOS::audioVolume() ); //make sure the audio volume is saved in the backend for the next login - bool playaudio = Lumina::SETTINGS->value(DesktopSettings::Session,"PlayLogoutAudio",true).toBool(); + bool playaudio = DesktopSettings::instance()->value(DesktopSettings::Session,"PlayLogoutAudio",true).toBool(); if( playaudio ){ playAudioFile(LOS::LuminaShare()+"Logout.ogg"); } //Now perform any other cleanup //Lumina::NEF->stop(); @@ -329,7 +329,7 @@ void LSession::launchStartupApps(){ //Enable Numlock if(LUtils::isValidBinary("numlockx")){ //make sure numlockx is installed - if(Lumina::SETTINGS->value(DesktopSettings::System,"EnableNumlock",false).toBool()){ + if(DesktopSettings::instance()->value(DesktopSettings::System,"EnableNumlock",false).toBool()){ QProcess::startDetached("numlockx on"); }else{ QProcess::startDetached("numlockx off"); @@ -350,7 +350,7 @@ void LSession::launchStartupApps(){ qDebug() << " - - Audio Volume:" << QString::number(tmp)+"%"; */ //Now play the login music since we are finished - if(Lumina::SETTINGS->value(DesktopSettings::System,"PlayStartupAudio",true).toBool()){ + if(DesktopSettings::instance()->value(DesktopSettings::System,"PlayStartupAudio",true).toBool()){ //Make sure to re-set the system volume to the last-used value at outset /*int vol = LOS::audioVolume(); if(vol>=0){ LOS::setAudioVolume(vol); }*/ @@ -362,11 +362,11 @@ void LSession::launchStartupApps(){ void LSession::checkUserFiles(){ //internal version conversion examples: // [1.0.0 -> 1000000], [1.2.3 -> 1002003], [0.6.1 -> 6001] - QString OVS = Lumina::SETTINGS->value(DesktopSettings::System,"DesktopVersion","0").toString(); //Old Version String + QString OVS = DesktopSettings::instance()->value(DesktopSettings::System,"DesktopVersion","0").toString(); //Old Version String bool changed = LDesktopUtils::checkUserFiles(OVS); if(changed){ //Save the current version of the session to the settings file (for next time) - Lumina::SETTINGS->setValue(DesktopSettings::System,"DesktopVersion", this->applicationVersion()); + DesktopSettings::instance()->setValue(DesktopSettings::System,"DesktopVersion", this->applicationVersion()); } } diff --git a/src-qt5/core/lumina-desktop-unified/global-objects.h b/src-qt5/core/lumina-desktop-unified/global-objects.h index 8d76772e..474412eb 100644 --- a/src-qt5/core/lumina-desktop-unified/global-objects.h +++ b/src-qt5/core/lumina-desktop-unified/global-objects.h @@ -38,7 +38,7 @@ namespace Lumina{ //extern EventFilter *EFILTER; //Native Event Watcher extern LShortcutEvents *SHORTCUTS; //Keyboard/mouse shortcut events - extern DesktopSettings *SETTINGS; //All Settings files + //extern DesktopSettings *SETTINGS; //All Settings files //ScreenSaver extern LScreenSaver *SS; //Root Window 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 0a78fb25..c3e9a1db 100644 --- a/src-qt5/core/lumina-desktop-unified/src-desktop/ContextMenu.cpp +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/ContextMenu.cpp @@ -19,7 +19,7 @@ void DesktopContextMenu::UpdateMenu(){ this->addAction(wkspaceact); this->addSeparator(); //Now load the user's menu setup and fill the menu - QStringList items = Lumina::SETTINGS->value(DesktopSettings::ContextMenu, "itemlist", QStringList()<< "terminal" << "filemanager" << "line" << "settings" <<"lockdesktop").toStringList(); + QStringList items = DesktopSettings::instance()->value(DesktopSettings::ContextMenu, "itemlist", QStringList()<< "terminal" << "filemanager" << "line" << "settings" <<"lockdesktop").toStringList(); //usewinmenu=false; for(int i=0; iaddAction(LXDG::findIcon("utilities-terminal",""), tr("Terminal"))->setWhatsThis("lumina-open -terminal"); } @@ -76,7 +76,7 @@ DesktopContextMenu::~DesktopContextMenu(){ } void DesktopContextMenu::start(){ - connect(Lumina::SETTINGS, SIGNAL(FileModified(DesktopSettings::File)), this, SLOT(SettingsChanged(DesktopSettings::File)) ); + connect(DesktopSettings::instance(), SIGNAL(FileModified(DesktopSettings::File)), this, SLOT(SettingsChanged(DesktopSettings::File)) ); connect(this, SIGNAL(LockSession()), Lumina::SS, SLOT(LockScreenNow()) ); //Still need to connect to some "workspaceChanged(int)" signal diff --git a/src-qt5/core/lumina-desktop-unified/src-events/LShortcutEvents.cpp b/src-qt5/core/lumina-desktop-unified/src-events/LShortcutEvents.cpp index eb448f02..f8bb20d3 100644 --- a/src-qt5/core/lumina-desktop-unified/src-events/LShortcutEvents.cpp +++ b/src-qt5/core/lumina-desktop-unified/src-events/LShortcutEvents.cpp @@ -37,11 +37,11 @@ void LShortcutEvents::CheckKeySequence(WId win){ QString shortcut = keylistToString(); //Now see if there is a match for this shortcut // "strict" actions (operate even if a non-desktop window is active/focused) - QString action = Lumina::SETTINGS->value(DesktopSettings::Keys, "strict/"+shortcut, "").toString(); + QString action = DesktopSettings::instance()->value(DesktopSettings::Keys, "strict/"+shortcut, "").toString(); qDebug() << "Strict Action:" << "strict/"+shortcut << action; if(action.isEmpty() && win==0){ //"loose" actions (operating on the desktop or root window itself) - action = Lumina::SETTINGS->value(DesktopSettings::Keys, "desktop/"+shortcut, "").toString(); + action = DesktopSettings::instance()->value(DesktopSettings::Keys, "desktop/"+shortcut, "").toString(); qDebug() << "Desktop Action:" << "desktop/"+shortcut << action; } if(!action.isEmpty()){ @@ -94,10 +94,10 @@ void LShortcutEvents::CheckMouseSequence(WId win, NativeWindowSystem::MouseButto if(shortcut.isEmpty()){ return; } //Now see if there is a match for this shortcut // "strict" actions (operate even if a non-desktop window is active/focused) - QString action = Lumina::SETTINGS->value(DesktopSettings::Keys, "strict/"+shortcut, "").toString(); + QString action = DesktopSettings::instance()->value(DesktopSettings::Keys, "strict/"+shortcut, "").toString(); if(action.isEmpty() && win==0){ //"loose" actions (operating on the desktop or root window itself) - action = Lumina::SETTINGS->value(DesktopSettings::Keys, "desktop/"+shortcut, "").toString(); + action = DesktopSettings::instance()->value(DesktopSettings::Keys, "desktop/"+shortcut, "").toString(); } if(!action.isEmpty()){ //Found a valid action - go ahead and evaluate it -- cgit From f0089302fa3f3cf4ce8a1157215576aec0be1644 Mon Sep 17 00:00:00 2001 From: ZackaryWelch Date: Mon, 26 Jun 2017 14:50:11 -0400 Subject: Added Grav screensaver and removed whitespace --- .../src-screensaver/animations/BaseAnimGroup.cpp | 12 ++-- .../src-screensaver/animations/Fireflies.h | 4 +- .../src-screensaver/animations/Grav.h | 84 ++++++++++++++++++++++ .../src-screensaver/animations/SampleAnimation.h | 2 +- .../src-screensaver/animations/animations.pri | 6 +- 5 files changed, 98 insertions(+), 10 deletions(-) create mode 100644 src-qt5/core/lumina-desktop-unified/src-screensaver/animations/Grav.h (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/BaseAnimGroup.cpp b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/BaseAnimGroup.cpp index 2abd1f90..1e86d489 100644 --- a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/BaseAnimGroup.cpp +++ b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/BaseAnimGroup.cpp @@ -9,6 +9,8 @@ //Include all the known subclasses here, then add a unique ID for it to the functions at the bottom //#include "SampleAnimation.h" #include "Fireflies.h" +#include "Grav.h" +#include "SampleAnimation.h" //============================== // PLUGIN LOADING/LISTING @@ -17,14 +19,16 @@ BaseAnimGroup* BaseAnimGroup::NewAnimation(QString type, QWidget *parent, QSetti //This is where we place all the known plugin ID's, and load the associated subclass if(type=="fireflies"){ return (new FirefliesAnimation(parent,set)); - /*}else if(type == "sample"){ - return (new SampleAnimation(parent, set));*/ - }else{ + }else if(type == "sample"){ + return (new SampleAnimation(parent, set)); + }else if(type == "grav") { + return (new GravAnimation(parent, set)); + }else { //Unknown screensaver, return a blank animation group return (new BaseAnimGroup(parent, set)); } } QStringList BaseAnimGroup::KnownAnimations(){ - return (QStringList() << "fireflies" << "none"); + return (QStringList() << "grav" /*<< "sample" << "fireflies"*/ << "none"); } diff --git a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/Fireflies.h b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/Fireflies.h index f1ef5fa3..a54b6cfd 100644 --- a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/Fireflies.h +++ b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/Fireflies.h @@ -79,8 +79,8 @@ private: public: FirefliesAnimation(QWidget *parent, QSettings *set) : BaseAnimGroup(parent, set){} - ~FirefliesAnimation(){ - this->stop(); + ~FirefliesAnimation(){ + this->stop(); //while(fireflies.length()>0){ fireflies.takeAt(0)->deleteLater(); } } diff --git a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/Grav.h b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/Grav.h new file mode 100644 index 00000000..9e5a580c --- /dev/null +++ b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/Grav.h @@ -0,0 +1,84 @@ +//=========================================== +// Lumina-DE source code +// Copyright (c) 2015, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +#ifndef _LUMINA_DESKTOP_SCREEN_SAVER_GRAV_ANIMATION_H +#define _LUMINA_DESKTOP_SCREEN_SAVER_GRAV_ANIMATION_H + +#define PI 3.1416 + +#include "global-includes.h" +#include "BaseAnimGroup.h" +#include +#include + +class Grav: public QSequentialAnimationGroup{ + Q_OBJECT +private: + QWidget *planet; + QPropertyAnimation *movement; + QSize range; +private slots: + void LoopChanged(){ + static double time = 0; + //Adjust the movement animation a bit + movement->setStartValue(movement->endValue()); //start at the previous end point + QPoint pt = movement->startValue().toPoint(); + QPoint diff((cos(pt.x()) - cos(pt.x()+time)), (sin(pt.y()) - sin(pt.y() +time)) ); + pt.setX( pt.x() + diff.x() ); + pt.setY( pt.y() + diff.y() ); + movement->setEndValue(pt); + movement->setDuration(2); + time+=0.01; + planet->show(); + } + void stopped(){planet->hide(); } + +public: + Grav(QWidget *parent) : QSequentialAnimationGroup(parent){ + planet = new QWidget(parent); + range = parent->size(); + planet->setStyleSheet("background-color: qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.5, fx:0.5, fy:0.5, stop:0 rgba(215, 215, 143, 255), stop:0.83871 rgba(221, 235, 64, 140), stop:1 rgba(0, 0, 0, 255));"); + //setup the movement animation + movement = new QPropertyAnimation(planet); + movement->setTargetObject(planet); + movement->setPropertyName("pos"); + movement->setEndValue( QPoint( qrand() % range.width(), qrand()%range.height()) ); //on anim start, this will become the starting point + this->addAnimation(movement); + LoopChanged(); //load initial values + planet->setGeometry( QRect(movement->startValue().toPoint(), QSize(15, 15))); + connect(this, SIGNAL(currentLoopChanged(int)), this, SLOT(LoopChanged()) ); + connect(this, SIGNAL(finished()), this, SLOT(stopped()) ); + } + ~Grav(){} + +}; + +class GravAnimation : public BaseAnimGroup{ + Q_OBJECT +private: + QList planets; + +public: + GravAnimation(QWidget *parent, QSettings *set) : BaseAnimGroup(parent, set){} + ~GravAnimation(){ + this->stop(); + } + + void LoadAnimations(){ + while(planets.length()>0){ planets.takeAt(0)->deleteLater(); } + canvas->setStyleSheet("background: black;"); + int number = settings->value("planets/number",10).toInt(); + for(int i=0; inumber){ continue; } + Grav *tmp = new Grav(canvas); + this->addAnimation(tmp); + planets << tmp; + } + while(planets.length()>number){planets.takeAt(number)->deleteLater(); } + } + +}; +#endif diff --git a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/SampleAnimation.h b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/SampleAnimation.h index 972a5109..c2bb0c96 100644 --- a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/SampleAnimation.h +++ b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/SampleAnimation.h @@ -20,7 +20,7 @@ private: public: SampleAnimation(QWidget *parent, QSettings *set) : BaseAnimGroup(parent, set){} ~SampleAnimation(){ this->stop(); delete ball; } - + void LoadAnimations(){ //qDebug() << "Loading Sample Animation"; ball = new QWidget(canvas); diff --git a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/animations.pri b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/animations.pri index 919ec4e0..06f2b38f 100644 --- a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/animations.pri +++ b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/animations.pri @@ -1,7 +1,7 @@ SOURCES += $$PWD/BaseAnimGroup.cpp HEADERS += $$PWD/BaseAnimGroup.h \ -# $$PWD/SampleAnimation.h \ - $${PWD}/Fireflies.h - + $$PWD/SampleAnimation.h \ + $${PWD}/Fireflies.h \ + $${PWD}/Grav.h #FORMS += -- cgit From ecb602f6ed2f97f8e5bb3d2ecc9e44708d48a3f0 Mon Sep 17 00:00:00 2001 From: ZackaryWelch Date: Thu, 6 Jul 2017 09:50:12 -0400 Subject: Prototype screensavers for Lumina 2.0 --- .../core/lumina-desktop-unified/global-includes.h | 1 + .../src-screensaver/animations/BaseAnimGroup.cpp | 9 +- .../src-screensaver/animations/Fireflies.h | 2 +- .../src-screensaver/animations/Grav.h | 161 +++++++++++++++++---- .../src-screensaver/animations/Text.h | 93 ++++++++++++ .../src-screensaver/animations/animations.pri | 3 +- 6 files changed, 233 insertions(+), 36 deletions(-) create mode 100644 src-qt5/core/lumina-desktop-unified/src-screensaver/animations/Text.h (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-desktop-unified/global-includes.h b/src-qt5/core/lumina-desktop-unified/global-includes.h index 94b1a364..1d0ab068 100644 --- a/src-qt5/core/lumina-desktop-unified/global-includes.h +++ b/src-qt5/core/lumina-desktop-unified/global-includes.h @@ -33,6 +33,7 @@ #include #include #include +#include #include #include #include diff --git a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/BaseAnimGroup.cpp b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/BaseAnimGroup.cpp index 1e86d489..cda9797b 100644 --- a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/BaseAnimGroup.cpp +++ b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/BaseAnimGroup.cpp @@ -11,6 +11,7 @@ #include "Fireflies.h" #include "Grav.h" #include "SampleAnimation.h" +#include "Text.h" //============================== // PLUGIN LOADING/LISTING @@ -19,16 +20,16 @@ BaseAnimGroup* BaseAnimGroup::NewAnimation(QString type, QWidget *parent, QSetti //This is where we place all the known plugin ID's, and load the associated subclass if(type=="fireflies"){ return (new FirefliesAnimation(parent,set)); - }else if(type == "sample"){ - return (new SampleAnimation(parent, set)); }else if(type == "grav") { return (new GravAnimation(parent, set)); + }else if(type == "text") { + return (new TextAnimation(parent, set)); }else { //Unknown screensaver, return a blank animation group return (new BaseAnimGroup(parent, set)); } } - + QStringList BaseAnimGroup::KnownAnimations(){ - return (QStringList() << "grav" /*<< "sample" << "fireflies"*/ << "none"); + return (QStringList() << "text"); } diff --git a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/Fireflies.h b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/Fireflies.h index a54b6cfd..75dfb1ae 100644 --- a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/Fireflies.h +++ b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/Fireflies.h @@ -46,7 +46,7 @@ public: fly = new QWidget(parent); range = parent->size(); maxX = range.width()/4; maxY = range.height()/4; - fly->setStyleSheet("background-color: qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.5, fx:0.5, fy:0.5, stop:0 rgba(215, 215, 143, 255), stop:0.83871 rgba(221, 235, 64, 140), stop:1 rgba(0, 0, 0, 255));"); + fly->setStyleSheet("background-color: qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.5, fx:0.5, fy:0.5, stop:0 rgba(215, 215, 143, 255), stop:0.83871 rgba(221, 235, 64, 140), stop:0.99 rgba(0, 0, 0, 255), stop:1 transparent);"); //setup the movement animation movement = new QPropertyAnimation(fly); movement->setTargetObject(fly); diff --git a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/Grav.h b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/Grav.h index 9e5a580c..9e5d52dc 100644 --- a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/Grav.h +++ b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/Grav.h @@ -7,49 +7,110 @@ #ifndef _LUMINA_DESKTOP_SCREEN_SAVER_GRAV_ANIMATION_H #define _LUMINA_DESKTOP_SCREEN_SAVER_GRAV_ANIMATION_H -#define PI 3.1416 +//PI is equal to 2*pi +#define PI 6.2832 #include "global-includes.h" #include "BaseAnimGroup.h" -#include -#include +#include +#include -class Grav: public QSequentialAnimationGroup{ +class Grav: public QParallelAnimationGroup{ Q_OBJECT private: QWidget *planet; - QPropertyAnimation *movement; + QPropertyAnimation *orbit; QSize range; + QList path; + double radius; + + void setupLoop(QPoint start, QPoint *ref){ + orbit->setStartValue(start); + + //Used to find overall speed. Distance from the planet to the sun + radius = qSqrt( (qPow(start.x()-ref->x(),2) + qPow(start.y()-ref->y(),2) )); + + //Number of frames in animation. Increase for smother motion + double step = 1000.0; + + //Random values that give the eliptical pattern to the orbit. Between 0.4 and 2.3 + double xrand = (qrand()%20+4)/10.0; + double yrand = (qrand()%20+4)/10.0; + + QPoint firstP = QPoint(ref->x() + xrand*start.x()*(qCos(0/step) -qSin(0/step)), ref->y() + yrand*start.y()*(qCos(0/step) -qSin(0/step))); + QPoint lastP = QPoint(ref->x() + xrand*start.x()*(qCos(PI/step) -qSin(PI/step)), ref->y() + yrand*start.y()*(qCos(PI/step) -qSin(PI/step))); + //orbit->setKeyValueAt(0, firstP); + //orbit->setKeyValueAt(1, lastP); + path.push_back(firstP); + + //Loops through all steps and creates all the points of the orbit + for(int i=1; ix() + xrand*start.x()*(qCos((PI*i)/step) -qSin((PI*i)/step)); + double newY = ref->y() + yrand*start.y()*(qSin((PI*i)/step) + qCos((PI*i)/step)); + + //Calculates the radius from the sun as the distance between the points + radius = (qSqrt( (qPow(newX-ref->x(),2) + qPow(newY-ref->y(),2) ))); + + //Creates a new point and creates a key as part of the animation + QPoint newLoc = QPoint(newX, newY); + //orbit->setKeyValueAt(i/step, newLoc); + path.push_back(newLoc); + } + + //Sets the time for a full orbit. Increasing makes the orbit slower. + path.push_back(lastP); + } private slots: - void LoopChanged(){ - static double time = 0; - //Adjust the movement animation a bit - movement->setStartValue(movement->endValue()); //start at the previous end point - QPoint pt = movement->startValue().toPoint(); - QPoint diff((cos(pt.x()) - cos(pt.x()+time)), (sin(pt.y()) - sin(pt.y() +time)) ); - pt.setX( pt.x() + diff.x() ); - pt.setY( pt.y() + diff.y() ); - movement->setEndValue(pt); - movement->setDuration(2); - time+=0.01; - planet->show(); + void LoopChanged(int loop){ + //Adjust the orbit animation a bit + if(loop >= 0) { + orbit->setStartValue(orbit->endValue()); //start at the previous end point + orbit->setEndValue(path.at(loop%1000)); + orbit->setDuration(10); + } } - void stopped(){planet->hide(); } + void stopped(){ qDebug() << "Planet stopped"; planet->hide();} public: - Grav(QWidget *parent) : QSequentialAnimationGroup(parent){ + Grav(QWidget *parent) : QParallelAnimationGroup(parent){ planet = new QWidget(parent); range = parent->size(); - planet->setStyleSheet("background-color: qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.5, fx:0.5, fy:0.5, stop:0 rgba(215, 215, 143, 255), stop:0.83871 rgba(221, 235, 64, 140), stop:1 rgba(0, 0, 0, 255));"); - //setup the movement animation - movement = new QPropertyAnimation(planet); - movement->setTargetObject(planet); - movement->setPropertyName("pos"); - movement->setEndValue( QPoint( qrand() % range.width(), qrand()%range.height()) ); //on anim start, this will become the starting point - this->addAnimation(movement); - LoopChanged(); //load initial values - planet->setGeometry( QRect(movement->startValue().toPoint(), QSize(15, 15))); - connect(this, SIGNAL(currentLoopChanged(int)), this, SLOT(LoopChanged()) ); + QPoint center = parent->geometry().center(); + + //Creates a random planet size. Between 12 and 45 pixels + double planet_radius = 1.75* ((qrand()%20)+7); + + //Creates a random color in RGB, then creates a circular gradient + QString color = "rgba(" + QString::number(qrand() % 256) + ", " + QString::number(qrand() % 256) + ", " + QString::number(qrand() % 256); + QString style = "background-color: qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.5, fx:0.5, fy:0.5, stop:0 " + color+ + ", 255)" + " , stop:0.83871 " + color + ", 140)" + " , stop:0.99 rgba(0, 0, 0, 255), stop:1 transparent);"; + planet->setStyleSheet(style); + + //setup the orbit animation + orbit = new QPropertyAnimation(planet); + orbit->setPropertyName("pos"); + orbit->setTargetObject(planet); + + //Creates the random position of the planet, making sure it isn't too close to the sun + int randwidth = qrand()%(range.width()/2); + if(randwidth < range.width() + 100 and randwidth > range.width() - 100) randwidth = 100; + int randheight= qrand()%(range.height()/2); + if(randheight < range.height() + 100 and randheight > range.height() - 100) randheight = 100; + + //Creates all frames for the animation + setupLoop(QPoint(randwidth, randheight), ¢er); + this->addAnimation(orbit); + planet->show(); + + //Ensures the screensaver will not stop until the user wishes to login or it times out + this->setLoopCount(2000); //number of orbits + orbit->setEndValue(path.at(0)); + LoopChanged(0); //load initial values + + //Sets the initial size and location of the planet + planet->setGeometry(QRect(orbit->startValue().toPoint(), QSize(planet_radius, planet_radius))); + connect(this, SIGNAL(currentLoopChanged(int)), this, SLOT(LoopChanged(int)) ); connect(this, SIGNAL(finished()), this, SLOT(stopped()) ); } ~Grav(){} @@ -60,6 +121,17 @@ class GravAnimation : public BaseAnimGroup{ Q_OBJECT private: QList planets; + QWidget *sun; + QPropertyAnimation *wobble; + +private slots: + void checkFinished(){ + int running = 0; + for(int i=0; ianimationCount(); i++){ + if(this->animationAt(i)->state()==QAbstractAnimation::Running){ running++; } + } + if(running<=1){ wobble->stop(); emit wobble->finished();} + } public: GravAnimation(QWidget *parent, QSettings *set) : BaseAnimGroup(parent, set){} @@ -68,16 +140,45 @@ public: } void LoadAnimations(){ + //Creates the sun, which is a thin shell with a gradient from green to yellow + sun = new QWidget(canvas); + QPoint center = canvas->geometry().center(); + QString sunstyle = QStringLiteral("background-color:qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.5, fx:0.5, fy:0.5, ") + + QStringLiteral("stop:0 rgba(0, 0, 0, 0), stop:0.38 rgba(0, 0, 0, 0), stop:0.4 rgba(82, 121, 76, 33), stop:0.5 rgba(159, 235, 148, 64), ") + + QStringLiteral("stop:0.6 rgba(255, 238, 150, 129), stop:0.7 rgba(0, 0, 0, 0));"); + sun->setStyleSheet(sunstyle); + + //Creates the sun's pulsing animation + wobble = new QPropertyAnimation(sun); + wobble->setPropertyName("geometry"); + wobble->setTargetObject(sun); + QRect initgeom = QRect(center-QPoint(12,12), QSize(60, 60)); + wobble->setStartValue(initgeom); + wobble->setKeyValueAt(0, initgeom ); //starting point + wobble->setKeyValueAt(1, initgeom ); //starting point + wobble->setKeyValueAt(0.5, QRect(center-QPoint(18,18), QSize(90, 90))); //starting point + wobble->setDuration(2000); + wobble->setLoopCount(-1); + this->addAnimation(wobble); + sun->show(); + sun->setGeometry(initgeom); while(planets.length()>0){ planets.takeAt(0)->deleteLater(); } + + //Gives the screensaver a black background canvas->setStyleSheet("background: black;"); + + //Pulls number of planets from settings, with 10 as default int number = settings->value("planets/number",10).toInt(); + + //Loops through all planets and sets up the animations, then adds them to the base group and vector, which for(int i=0; inumber){ continue; } Grav *tmp = new Grav(canvas); this->addAnimation(tmp); + connect(tmp, SIGNAL(finished()), this, SLOT(checkFinished())); planets << tmp; } - while(planets.length()>number){planets.takeAt(number)->deleteLater(); } + while(planets.length()>number){planets.takeAt(number)->deleteLater(); sun->deleteLater(); } } }; diff --git a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/Text.h b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/Text.h new file mode 100644 index 00000000..a4c49692 --- /dev/null +++ b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/Text.h @@ -0,0 +1,93 @@ +//=========================================== +// Lumina-DE source code +// Copyright (c) 2015, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +#ifndef _LUMINA_DESKTOP_SCREEN_SAVER_Text_ANIMATION_H +#define _LUMINA_DESKTOP_SCREEN_SAVER_Text_ANIMATION_H + +//PI is equal to 2*pi +#define PI 6.2832 + +#include "global-includes.h" +#include "BaseAnimGroup.h" +#include +#include + +class Text: public QParallelAnimationGroup{ + Q_OBJECT +private: + QLabel *text; + QPropertyAnimation *movement; + QSize range; + QPoint v; + bool bounce; + +private slots: + void LoopChanged(){ + movement->setStartValue(movement->endValue()); + QPoint currLoc = movement->startValue().toPoint(); + bounce = !(currLoc.y() < 100 or currLoc.y() > range.height()-100 or currLoc.x() > range.width()-100 or currLoc.x() < 100); + if((currLoc.y() < 10 or currLoc.y() > range.height()-40) and !bounce) { + v.setY((v.y() * -1) + (qrand() % 20 - 10)); + }else if((currLoc.x() > range.width()-10 or currLoc.x() < 10) and !bounce) { + v.setX((v.x() * -1) + (qrand() % 20 - 10)); + } + currLoc.setX(currLoc.x() + v.x()); + currLoc.setY(currLoc.y() + v.y()); + movement->setEndValue(currLoc); + } + void stopped(){ qDebug() << "text stopped"; text->hide();} + +public: + Text(QWidget *parent) : QParallelAnimationGroup(parent){ + text = new QLabel(parent); + range = parent->size(); + QPoint center = parent->geometry().center(); + + QString color = "rgba(" + QString::number(qrand() % 206 + 50) + ", " + QString::number(qrand() % 206 + 50) + ", " + QString::number(qrand() % 206 + 50); + text->setStyleSheet("QLabel {background-color: rgba(255, 255, 255, 10); color: " + color + "); }"); + text->setFont(QFont("Courier", 24, QFont::Bold)); + text->setText("test"); + QFontMetrics metrics(text->font()); + text->setMinimumSize(QSize( metrics.width(text->text())+10, metrics.height()*text->text().count("\n") +10)); + + movement = new QPropertyAnimation(text); + movement->setPropertyName("pos"); + movement->setTargetObject(text); + + this->addAnimation(movement); + text->show(); + v.setX((qrand() % 100 + 50) * qPow(-1, qrand() % 2)); + v.setY((qrand() % 100 + 50) * qPow(-1, qrand() % 2)); + movement->setStartValue(center); + //Ensures the screensaver will not stop until the user wishes to login or it times out + this->setLoopCount(2000); //number of movements + movement->setDuration(200); + movement->setEndValue(QPoint(qrand() % (int)range.height(), qrand() % range.width())); + LoopChanged(); //load initial values + + connect(this, SIGNAL(currentLoopChanged(int)), this, SLOT(LoopChanged()) ); + connect(this, SIGNAL(finished()), this, SLOT(stopped()) ); + } + ~Text(){} + +}; + +class TextAnimation : public BaseAnimGroup{ + Q_OBJECT +public: + TextAnimation(QWidget *parent, QSettings *set) : BaseAnimGroup(parent, set){} + ~TextAnimation(){ + this->stop(); + } + + void LoadAnimations(){ + canvas->setStyleSheet("background: black;"); + Text *tmp = new Text(canvas); + this->addAnimation(tmp); + } + +}; +#endif diff --git a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/animations.pri b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/animations.pri index 06f2b38f..35141a0e 100644 --- a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/animations.pri +++ b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/animations.pri @@ -3,5 +3,6 @@ SOURCES += $$PWD/BaseAnimGroup.cpp HEADERS += $$PWD/BaseAnimGroup.h \ $$PWD/SampleAnimation.h \ $${PWD}/Fireflies.h \ - $${PWD}/Grav.h + $${PWD}/Grav.h \ + $${PWD}/Text.h #FORMS += -- cgit From 0c406639a823f4cad097c8e5a98606658d44bbf4 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Fri, 7 Jul 2017 14:59:20 -0400 Subject: Commit a work-in-progress for converting an X11 keycode into a Qt::Key definition --- src-qt5/core/libLumina/NativeWindow.pri | 2 +- src-qt5/core/libLumina/NativeWindowSystem.cpp | 10 +++++++++- src-qt5/core/lumina-desktop-unified/LSession.cpp | 15 +-------------- 3 files changed, 11 insertions(+), 16 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/NativeWindow.pri b/src-qt5/core/libLumina/NativeWindow.pri index b10e472c..fef9c736 100644 --- a/src-qt5/core/libLumina/NativeWindow.pri +++ b/src-qt5/core/libLumina/NativeWindow.pri @@ -1,7 +1,7 @@ # Files QT *= x11extras -LIBS *= -lc -lxcb -lxcb-ewmh -lxcb-icccm -lxcb-image -lxcb-composite -lxcb-damage -lxcb-util -lXdamage +LIBS *= -lc -lxcb -lxcb-ewmh -lxcb-icccm -lxcb-image -lxcb-composite -lxcb-damage -lxcb-util -lxcb-keysyms -lXdamage SOURCES *= $${PWD}/NativeWindow.cpp \ $${PWD}/NativeWindowSystem.cpp \ diff --git a/src-qt5/core/libLumina/NativeWindowSystem.cpp b/src-qt5/core/libLumina/NativeWindowSystem.cpp index a8fb550e..6f737b27 100644 --- a/src-qt5/core/libLumina/NativeWindowSystem.cpp +++ b/src-qt5/core/libLumina/NativeWindowSystem.cpp @@ -27,6 +27,7 @@ #include #include #include +#include //XLib includes (XCB Damage lib does not appear to register for damage events properly) #include @@ -250,7 +251,13 @@ void NativeWindowSystem::stop(){ //Small simplification functions Qt::Key NativeWindowSystem::KeycodeToQt(int keycode){ - qDebug() << "Try to convert keycode to Qt::Key:" << keycode; + static xcb_key_symbols_t *SYM = 0; + if(SYM==0){ SYM = xcb_key_symbols_alloc(QX11Info::connection()); } + xcb_keysym_t symbol = xcb_key_symbols_get_keysym(SYM, keycode,0); + //not sure about the "column" input - we want raw keys though so ignore the "modified" key states (columns) for now + qDebug() << "Try to convert keycode to Qt::Key:" << keycode << symbol; + //Now map this symbol to the appropriate Qt::Key enumeration + qDebug() << " -- Simple Qt Map:" << (Qt::Key)(symbol); qDebug() << " - Not implemented yet"; return Qt::Key_unknown; } @@ -802,6 +809,7 @@ void NativeWindowSystem::GotPong(WId id){ void NativeWindowSystem::NewKeyPress(int keycode, WId win){ emit NewInputEvent(); if(screenLocked){ return; } + KeycodeToQt(keycode); emit KeyPressDetected(win, keycode); } diff --git a/src-qt5/core/lumina-desktop-unified/LSession.cpp b/src-qt5/core/lumina-desktop-unified/LSession.cpp index 8b4d352f..584c60a8 100644 --- a/src-qt5/core/lumina-desktop-unified/LSession.cpp +++ b/src-qt5/core/lumina-desktop-unified/LSession.cpp @@ -88,20 +88,7 @@ void LSession::setupSession(){ //Setup the QSettings default paths splash.showScreen("settings"); if(DEBUG){ qDebug() << " - Init QSettings:" << timer->elapsed();} - DesktopSettings::instance()->start(); - /*sessionsettings = new QSettings("lumina-desktop", "sessionsettings"); - DPlugSettings = new QSettings("lumina-desktop","pluginsettings/desktopsettings"); - //Load the proper translation files - if(sessionsettings->value("ForceInitialLocale",false).toBool()){ - //Some system locale override it in place - change the env first - LUtils::setLocaleEnv( sessionsettings->value("InitLocale/LANG","").toString(), \ - sessionsettings->value("InitLocale/LC_MESSAGES","").toString(), \ - sessionsettings->value("InitLocale/LC_TIME","").toString(), \ - sessionsettings->value("InitLocale/LC_NUMERIC","").toString(), \ - sessionsettings->value("InitLocale/LC_MONETARY","").toString(), \ - sessionsettings->value("InitLocale/LC_COLLATE","").toString(), \ - sessionsettings->value("InitLocale/LC_CTYPE","").toString() ); - }*/ + DesktopSettings::instance(); //don't do anything other than init/start the static object here if(DEBUG){ qDebug() << " - Load Localization Files:" << timer->elapsed();} currTranslator = LUtils::LoadTranslation(this, "lumina-desktop"); if(DEBUG){ qDebug() << " - Start Event Filter:" << timer->elapsed(); } -- cgit From 70cf0e8b4ef74d35f798c92634ecc129298a1d3b Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Fri, 7 Jul 2017 15:11:22 -0400 Subject: A bit more keyboard mapping debugging/parsing --- src-qt5/core/libLumina/NativeWindowSystem.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/NativeWindowSystem.cpp b/src-qt5/core/libLumina/NativeWindowSystem.cpp index 6f737b27..ab264db5 100644 --- a/src-qt5/core/libLumina/NativeWindowSystem.cpp +++ b/src-qt5/core/libLumina/NativeWindowSystem.cpp @@ -256,6 +256,13 @@ Qt::Key NativeWindowSystem::KeycodeToQt(int keycode){ xcb_keysym_t symbol = xcb_key_symbols_get_keysym(SYM, keycode,0); //not sure about the "column" input - we want raw keys though so ignore the "modified" key states (columns) for now qDebug() << "Try to convert keycode to Qt::Key:" << keycode << symbol; + if(xcb_is_keypad_key(symbol)){ qDebug() << "Keypad Key"; } + else if(xcb_is_private_keypad_key(symbol)){ qDebug() << "Private Keypad Key"; } + else if(xcb_is_cursor_key(symbol)){ qDebug() << "Cursor Key"; } + else if(xcb_is_pf_key(symbol)){ qDebug() << "PF Key"; } + else if(xcb_is_function_key(symbol)){ qDebug() << "Function Key"; } + else if(xcb_is_misc_function_key(symbol)){ qDebug() << "Misc Function Key"; } + else if(xcb_is_modifier_key(symbol)){ qDebug() << "Modifier Key"; } //Now map this symbol to the appropriate Qt::Key enumeration qDebug() << " -- Simple Qt Map:" << (Qt::Key)(symbol); qDebug() << " - Not implemented yet"; -- cgit From a5bb959045ed8dac47e1c6fa3e13b1cae4b5285b Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Fri, 7 Jul 2017 15:18:05 -0400 Subject: Try a more complicated QKeySequence for the mapping protocols --- src-qt5/core/libLumina/NativeWindowSystem.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/NativeWindowSystem.cpp b/src-qt5/core/libLumina/NativeWindowSystem.cpp index ab264db5..93616832 100644 --- a/src-qt5/core/libLumina/NativeWindowSystem.cpp +++ b/src-qt5/core/libLumina/NativeWindowSystem.cpp @@ -265,6 +265,7 @@ Qt::Key NativeWindowSystem::KeycodeToQt(int keycode){ else if(xcb_is_modifier_key(symbol)){ qDebug() << "Modifier Key"; } //Now map this symbol to the appropriate Qt::Key enumeration qDebug() << " -- Simple Qt Map:" << (Qt::Key)(symbol); + qDebug() << " -- Key Sequence Map:" << QKeySequence(symbol); qDebug() << " - Not implemented yet"; return Qt::Key_unknown; } -- cgit From 3fb6466ec6b3327725c2e887dadf64e529a97d41 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Fri, 7 Jul 2017 15:19:19 -0400 Subject: Oops - forgot to add an include. --- src-qt5/core/libLumina/NativeWindowSystem.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/NativeWindowSystem.cpp b/src-qt5/core/libLumina/NativeWindowSystem.cpp index 93616832..17e90d3f 100644 --- a/src-qt5/core/libLumina/NativeWindowSystem.cpp +++ b/src-qt5/core/libLumina/NativeWindowSystem.cpp @@ -16,6 +16,7 @@ #include #include #include +#include //XCB Library includes #include -- cgit From d54b6b09d5af0914551c8319138b2ee83b170362 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Fri, 7 Jul 2017 15:28:07 -0400 Subject: Get the numbers/letters conversion working from X11->Qt --- src-qt5/core/libLumina/NativeWindowSystem.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/NativeWindowSystem.cpp b/src-qt5/core/libLumina/NativeWindowSystem.cpp index 17e90d3f..79d0e1fc 100644 --- a/src-qt5/core/libLumina/NativeWindowSystem.cpp +++ b/src-qt5/core/libLumina/NativeWindowSystem.cpp @@ -264,6 +264,11 @@ Qt::Key NativeWindowSystem::KeycodeToQt(int keycode){ else if(xcb_is_function_key(symbol)){ qDebug() << "Function Key"; } else if(xcb_is_misc_function_key(symbol)){ qDebug() << "Misc Function Key"; } else if(xcb_is_modifier_key(symbol)){ qDebug() << "Modifier Key"; } + else if(!QKeySequence(symbol).isEmpty()){ + //One of the standard keys, go ahead and do a direct map + qDebug() << " -- [GOT MATCH]" << QKeySequence(symbol)[0]; + return Qt::Key_unknown; //QKeySequence(symbol)[0]; //only ever one key in this method + } //Now map this symbol to the appropriate Qt::Key enumeration qDebug() << " -- Simple Qt Map:" << (Qt::Key)(symbol); qDebug() << " -- Key Sequence Map:" << QKeySequence(symbol); -- cgit From 186b10b9cc833897ee0bbb33534837165cf4bdea Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Fri, 7 Jul 2017 15:37:19 -0400 Subject: A few more updates in the X11->Qt button mapping --- src-qt5/core/libLumina/NativeWindowSystem.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/NativeWindowSystem.cpp b/src-qt5/core/libLumina/NativeWindowSystem.cpp index 79d0e1fc..4a66f621 100644 --- a/src-qt5/core/libLumina/NativeWindowSystem.cpp +++ b/src-qt5/core/libLumina/NativeWindowSystem.cpp @@ -257,22 +257,25 @@ Qt::Key NativeWindowSystem::KeycodeToQt(int keycode){ xcb_keysym_t symbol = xcb_key_symbols_get_keysym(SYM, keycode,0); //not sure about the "column" input - we want raw keys though so ignore the "modified" key states (columns) for now qDebug() << "Try to convert keycode to Qt::Key:" << keycode << symbol; + //Now map this symbol to the appropriate Qt::Key enumeration if(xcb_is_keypad_key(symbol)){ qDebug() << "Keypad Key"; } else if(xcb_is_private_keypad_key(symbol)){ qDebug() << "Private Keypad Key"; } else if(xcb_is_cursor_key(symbol)){ qDebug() << "Cursor Key"; } else if(xcb_is_pf_key(symbol)){ qDebug() << "PF Key"; } else if(xcb_is_function_key(symbol)){ qDebug() << "Function Key"; } else if(xcb_is_misc_function_key(symbol)){ qDebug() << "Misc Function Key"; } - else if(xcb_is_modifier_key(symbol)){ qDebug() << "Modifier Key"; } - else if(!QKeySequence(symbol).isEmpty()){ + else if(xcb_is_modifier_key(symbol)){ + qDebug() << "Modifier Key"; + + }else if(!QKeySequence(symbol).isEmpty()){ //One of the standard keys, go ahead and do a direct map - qDebug() << " -- [GOT MATCH]" << QKeySequence(symbol)[0]; + qDebug() << " -- [GOT MATCH]" << QKeySequence(symbol); return Qt::Key_unknown; //QKeySequence(symbol)[0]; //only ever one key in this method + }else{ + qDebug() << " -- Simple Qt Map:" << (Qt::Key)(symbol); + qDebug() << " -- Key Sequence Map:" << QKeySequence(symbol); + qDebug() << " - Not implemented yet"; } - //Now map this symbol to the appropriate Qt::Key enumeration - qDebug() << " -- Simple Qt Map:" << (Qt::Key)(symbol); - qDebug() << " -- Key Sequence Map:" << QKeySequence(symbol); - qDebug() << " - Not implemented yet"; return Qt::Key_unknown; } -- cgit From 091d2cd5fa15a9ffc442892bf6f4a6ea72a62d55 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Fri, 7 Jul 2017 16:25:20 -0400 Subject: Get the F1-F35 keys all detected/mapped appropriately to Qt keys --- src-qt5/core/libLumina/NativeWindowSystem.cpp | 57 +++++++++++++++++++++++++-- 1 file changed, 54 insertions(+), 3 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/NativeWindowSystem.cpp b/src-qt5/core/libLumina/NativeWindowSystem.cpp index 4a66f621..73bba1a9 100644 --- a/src-qt5/core/libLumina/NativeWindowSystem.cpp +++ b/src-qt5/core/libLumina/NativeWindowSystem.cpp @@ -18,6 +18,16 @@ #include #include + +#define XK_MISCELLANY +#define XK_XKB_KEYS +#define XK_LATIN1 +#define XK_LATIN2 +#define XK_LATIN3 +#define XK_LATIN4 +//NOTE: Look at the keysymdef.h file for additional define/characters which we may need later +#include + //XCB Library includes #include #include @@ -262,11 +272,52 @@ Qt::Key NativeWindowSystem::KeycodeToQt(int keycode){ else if(xcb_is_private_keypad_key(symbol)){ qDebug() << "Private Keypad Key"; } else if(xcb_is_cursor_key(symbol)){ qDebug() << "Cursor Key"; } else if(xcb_is_pf_key(symbol)){ qDebug() << "PF Key"; } - else if(xcb_is_function_key(symbol)){ qDebug() << "Function Key"; } - else if(xcb_is_misc_function_key(symbol)){ qDebug() << "Misc Function Key"; } + else if(xcb_is_function_key(symbol)){ + switch(symbol){ + case XK_F1: return Qt::Key_F1; + case XK_F2: return Qt::Key_F2; + case XK_F3: return Qt::Key_F3; + case XK_F4: return Qt::Key_F4; + case XK_F5: return Qt::Key_F5; + case XK_F6: return Qt::Key_F6; + case XK_F7: return Qt::Key_F7; + case XK_F8: return Qt::Key_F8; + case XK_F9: return Qt::Key_F9; + case XK_F10: return Qt::Key_F10; + case XK_F11: return Qt::Key_F11; + case XK_F12: return Qt::Key_F12; + case XK_F13: return Qt::Key_F13; + case XK_F14: return Qt::Key_F14; + case XK_F15: return Qt::Key_F15; + case XK_F16: return Qt::Key_F16; + case XK_F17: return Qt::Key_F17; + case XK_F18: return Qt::Key_F18; + case XK_F19: return Qt::Key_F19; + case XK_F20: return Qt::Key_F20; + case XK_F21: return Qt::Key_F21; + case XK_F22: return Qt::Key_F22; + case XK_F23: return Qt::Key_F23; + case XK_F24: return Qt::Key_F24; + case XK_F25: return Qt::Key_F25; + case XK_F26: return Qt::Key_F26; + case XK_F27: return Qt::Key_F27; + case XK_F28: return Qt::Key_F28; + case XK_F29: return Qt::Key_F29; + case XK_F30: return Qt::Key_F30; + case XK_F31: return Qt::Key_F31; + case XK_F32: return Qt::Key_F32; + case XK_F33: return Qt::Key_F33; + case XK_F34: return Qt::Key_F34; + case XK_F35: return Qt::Key_F35; + default: + qDebug() << "Unknown Function Key"; + } + }else if(xcb_is_misc_function_key(symbol)){ qDebug() << "Misc Function Key"; } else if(xcb_is_modifier_key(symbol)){ qDebug() << "Modifier Key"; - + /*switch(symbol){ + case: XK_ + }*/ }else if(!QKeySequence(symbol).isEmpty()){ //One of the standard keys, go ahead and do a direct map qDebug() << " -- [GOT MATCH]" << QKeySequence(symbol); -- cgit From ac3fa9168954faabc3acd37dde82479340b78283 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Sat, 8 Jul 2017 09:59:59 -0400 Subject: Clean up the LShortcutEvents class so it uses Qt::Key values now instead of raw keycodes. --- src-qt5/core/lumina-desktop-unified/LSession.cpp | 4 +- .../src-events/LShortcutEvents.cpp | 46 +++++++++++++++++----- .../src-events/LShortcutEvents.h | 7 ++-- 3 files changed, 43 insertions(+), 14 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-desktop-unified/LSession.cpp b/src-qt5/core/lumina-desktop-unified/LSession.cpp index 584c60a8..88660ed8 100644 --- a/src-qt5/core/lumina-desktop-unified/LSession.cpp +++ b/src-qt5/core/lumina-desktop-unified/LSession.cpp @@ -253,8 +253,8 @@ void LSession::setupGlobalConnections(){ connect(Lumina::SS, SIGNAL(LockStatusChanged(bool)), Lumina::NWS, SLOT(ScreenLockChanged(bool)) ); //Mouse/Keyboard Shortcut Events (Make sure to connect to the NWS - the raw events need to be ignored sometimes) - connect(Lumina::NWS, SIGNAL(KeyPressDetected(WId, int)), Lumina::SHORTCUTS, SLOT(KeyPress(WId, int)) ); - connect(Lumina::NWS, SIGNAL(KeyReleaseDetected(WId, int)), Lumina::SHORTCUTS, SLOT(KeyRelease(WId, int)) ); + connect(Lumina::NWS, SIGNAL(KeyPressDetected(WId, int)), Lumina::SHORTCUTS, SLOT(KeyPress(WId, Qt::Key)) ); + connect(Lumina::NWS, SIGNAL(KeyReleaseDetected(WId, int)), Lumina::SHORTCUTS, SLOT(KeyRelease(WId, Qt::Key)) ); connect(Lumina::NWS, SIGNAL(MousePressDetected(WId, NativeWindowSystem::MouseButton)), Lumina::SHORTCUTS, SLOT(MousePress(WId, NativeWindowSystem::MouseButton)) ); connect(Lumina::NWS, SIGNAL(MouseReleaseDetected(WId, NativeWindowSystem::MouseButton)), Lumina::SHORTCUTS, SLOT(MouseRelease(WId, NativeWindowSystem::MouseButton)) ); diff --git a/src-qt5/core/lumina-desktop-unified/src-events/LShortcutEvents.cpp b/src-qt5/core/lumina-desktop-unified/src-events/LShortcutEvents.cpp index f8bb20d3..1b78da21 100644 --- a/src-qt5/core/lumina-desktop-unified/src-events/LShortcutEvents.cpp +++ b/src-qt5/core/lumina-desktop-unified/src-events/LShortcutEvents.cpp @@ -106,15 +106,34 @@ void LShortcutEvents::CheckMouseSequence(WId win, NativeWindowSystem::MouseButto } QString LShortcutEvents::keylistToString(){ + if(keylist.isEmpty()){ return ""; } QString shortcut; + QList keys; int ckey = 0; for(int i=0; i0){ shortcut.append("+"); } - shortcut.append( QString::number(keylist[i]) ); + if(i == keylist.length()-1){ ckey+=keylist[i]; } //always treat the last key as a non-modifier + else if(keylist[i] == Qt::Key_Control){ ckey+=Qt::CTRL; } //use the modifier form of the key + else if(keylist[i] == Qt::Key_Alt){ ckey += Qt::ALT; } + else if(keylist[i] == Qt::Key_Shift){ ckey += Qt::SHIFT; } + else if(keylist[i] == Qt::Key_Meta){ ckey += Qt::META; } + else{ ckey+= keylist[i]; keys << ckey; ckey = 0; } //non-modifier - need to finish current mod+key combo and start a new one + } + if(ckey!=0){ keys << ckey; } //add in the last one as well + if(keys.length() < 1){ return ""; } + QKeySequence seq; + switch(keys.length()){ + case 1: + seq = QKeySequence(keys[0]); break; + case 2: + seq = QKeySequence(keys[0], keys[1]); break; + case 3: + seq = QKeySequence(keys[0], keys[1], keys[2]); break; + default: + seq = QKeySequence(keys[0],keys[1], keys[2], keys[3]); break; } /*qDebug() << "KeyList to String:"; - qDebug() << " keys:" << keylist; - qDebug() << " string:" << shortcut;*/ - return shortcut; + qDebug() << " keys:" << seq; + qDebug() << " string:" << seq.toString();*/ + return seq.toString(); } void LShortcutEvents::evaluateShortcutAction(QString action){ @@ -123,6 +142,8 @@ void LShortcutEvents::evaluateShortcutAction(QString action){ if(action.startsWith("Exec=")){ emit LaunchApplication(action.section("=",1,-1)); return; + }else if(action.startsWith("Launch=")){ + emit LaunchStandardApplication(action.section("=",1,-1)); } //Specific Internal actions action = action.toLower(); @@ -135,9 +156,9 @@ void LShortcutEvents::evaluateShortcutAction(QString action){ } // === PUBLIC SLOTS === -void LShortcutEvents::KeyPress(WId window, int key){ +void LShortcutEvents::KeyPress(WId window, Qt::Key key){ if(window!=WIN){ keylist.clear(); WIN = window; } - if(!keylist.contains(key)){ + /*if(!keylist.contains(key)){ //Put it in the list in ascending order bool found = false; for(int i=0; istart(); //will "restart" if already running } -void LShortcutEvents::KeyRelease(WId window, int key){ +void LShortcutEvents::KeyRelease(WId window, Qt::Key key){ if(window!=WIN){ keylist.clear(); return; } if(!evaluated){ CheckKeySequence(WIN); } //run this "before" removing the key from the list - keylist.removeAll(key); + for(int i=keylist.length()-1; i>=0; i--){ + if(keylist[i] == key){ keylist.removeAt(i); break; } + } clearTimer->start(); //will "restart" if already running } diff --git a/src-qt5/core/lumina-desktop-unified/src-events/LShortcutEvents.h b/src-qt5/core/lumina-desktop-unified/src-events/LShortcutEvents.h index a8ab4b38..4560cb1f 100644 --- a/src-qt5/core/lumina-desktop-unified/src-events/LShortcutEvents.h +++ b/src-qt5/core/lumina-desktop-unified/src-events/LShortcutEvents.h @@ -22,7 +22,7 @@ public: void stop(); private: - QList keylist; //keys currently held down (NOTE: QKeySequence has a max of 4 keys for combinations) + QList< Qt::Key > keylist; //keys currently held down WId WIN; //current window being acted on by the keys QTimer *clearTimer; //used to clear the internal keylist every once in a while if no events come in. bool evaluated; @@ -34,8 +34,8 @@ private: void evaluateShortcutAction(QString action); public slots: - void KeyPress(WId window, int key); - void KeyRelease(WId window, int key); + void KeyPress(WId window, Qt::Key key); + void KeyRelease(WId window, Qt::Key key); void MousePress(WId window, NativeWindowSystem::MouseButton); void MouseRelease(WId window, NativeWindowSystem::MouseButton); void clearKeys(); @@ -66,6 +66,7 @@ signals: //General Utility Launch void LaunchApplication(QString exec); + void LaunchStandardApplication(QString app); //standard app like "terminal", "browser", "email", "settings", etc.. }; -- cgit From 6f1d3946d52feceaa5d875a079a148c775140d5f Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Sat, 8 Jul 2017 11:46:00 -0400 Subject: Split out the X11->Qt conversion function into it's own file (getting too long to be mixed in with the rest of the class). Also finish up a lot more of the conversions. Should be ready for testing now. --- src-qt5/core/libLumina/NativeKeyToQt.cpp | 528 +++++++++++++++++++++++ src-qt5/core/libLumina/NativeWindow.pri | 1 + src-qt5/core/libLumina/NativeWindowSystem.cpp | 112 +---- src-qt5/core/libLumina/NativeWindowSystem.h | 4 +- src-qt5/core/lumina-desktop-unified/LSession.cpp | 4 +- 5 files changed, 537 insertions(+), 112 deletions(-) create mode 100644 src-qt5/core/libLumina/NativeKeyToQt.cpp (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/NativeKeyToQt.cpp b/src-qt5/core/libLumina/NativeKeyToQt.cpp new file mode 100644 index 00000000..b6af9b6c --- /dev/null +++ b/src-qt5/core/libLumina/NativeKeyToQt.cpp @@ -0,0 +1,528 @@ + +#include + +#include +#include + +// XCB/X11 Includes +#define XK_MISCELLANY +#define XK_XKB_KEYS +#define XK_LATIN1 +#define XK_LATIN2 +#define XK_LATIN3 +#define XK_LATIN4 +#define XK_LATIN8 +#define XK_LATIN9 +//NOTE: Look at the keysymdef.h file for additional define/characters which we may need later +#include +#include + + +//Small simplification functions +Qt::Key NativeWindowSystem::KeycodeToQt(int keycode){ + static xcb_key_symbols_t *SYM = 0; + if(SYM==0){ SYM = xcb_key_symbols_alloc(QX11Info::connection()); } + xcb_keysym_t symbol = xcb_key_symbols_get_keysym(SYM, keycode,0); + //not sure about the "column" input - we want raw keys though so ignore the "modified" key states (columns) for now + //qDebug() << "Try to convert keycode to Qt::Key:" << keycode << symbol; + //Now map this symbol to the appropriate Qt::Key enumeration + switch(symbol){ + //FUNCTION KEYS + case XK_F1: return Qt::Key_F1; + case XK_F2: return Qt::Key_F2; + case XK_F3: return Qt::Key_F3; + case XK_F4: return Qt::Key_F4; + case XK_F5: return Qt::Key_F5; + case XK_F6: return Qt::Key_F6; + case XK_F7: return Qt::Key_F7; + case XK_F8: return Qt::Key_F8; + case XK_F9: return Qt::Key_F9; + case XK_F10: return Qt::Key_F10; + case XK_F11: return Qt::Key_F11; + case XK_F12: return Qt::Key_F12; + case XK_F13: return Qt::Key_F13; + case XK_F14: return Qt::Key_F14; + case XK_F15: return Qt::Key_F15; + case XK_F16: return Qt::Key_F16; + case XK_F17: return Qt::Key_F17; + case XK_F18: return Qt::Key_F18; + case XK_F19: return Qt::Key_F19; + case XK_F20: return Qt::Key_F20; + case XK_F21: return Qt::Key_F21; + case XK_F22: return Qt::Key_F22; + case XK_F23: return Qt::Key_F23; + case XK_F24: return Qt::Key_F24; + case XK_F25: return Qt::Key_F25; + case XK_F26: return Qt::Key_F26; + case XK_F27: return Qt::Key_F27; + case XK_F28: return Qt::Key_F28; + case XK_F29: return Qt::Key_F29; + case XK_F30: return Qt::Key_F30; + case XK_F31: return Qt::Key_F31; + case XK_F32: return Qt::Key_F32; + case XK_F33: return Qt::Key_F33; + case XK_F34: return Qt::Key_F34; + case XK_F35: return Qt::Key_F35; + //Miscellaneous Keys + case XK_BackSpace: return Qt::Key_Backspace; + case XK_Delete: return Qt::Key_Delete; + //case XK_LineFeed: return Qt::Key_Backspace; + case XK_Clear: return Qt::Key_Clear; + case XK_Return: return Qt::Key_Return; + case XK_Pause: return Qt::Key_Pause; + case XK_Scroll_Lock: return Qt::Key_ScrollLock; + case XK_Sys_Req: return Qt::Key_SysReq; + case XK_Escape: return Qt::Key_Escape; + case XK_Select: return Qt::Key_Select; + case XK_Print: return Qt::Key_Print; + //case XK_Execute: return Qt::Key_Execute; + case XK_Insert: return Qt::Key_Insert; + case XK_Undo: return Qt::Key_Undo; + case XK_Redo: return Qt::Key_Redo; + case XK_Menu: return Qt::Key_Menu; + case XK_Find: return Qt::Key_Find; + case XK_Cancel: return Qt::Key_Cancel; + case XK_Help: return Qt::Key_Help; + //case XK_Break: return Qt::Key_Break; + //case XK_Mode_switch: return Qt::Key_Backspace; + //case XK_script_switch: return Qt::Key_Backspace; + case XK_Num_Lock: return Qt::Key_NumLock; + //Cursor Controls + case XK_Home: return Qt::Key_Home; + case XK_Left: return Qt::Key_Left; + case XK_Up: return Qt::Key_Up; + case XK_Right: return Qt::Key_Right; + case XK_Down: return Qt::Key_Down; + //case XK_Prior: return Qt::Key_Backspace; + case XK_Page_Up: return Qt::Key_PageUp; + case XK_Page_Down: return Qt::Key_PageDown; + //case XK_Next: return Qt::Key_Backspace; + case XK_End: return Qt::Key_End; + //case XK_Begin: return Qt::Key_Backspace; + // Keypad Functions and numbers + case XK_KP_Space: return Qt::Key_Space; + case XK_KP_Tab: return Qt::Key_Tab; + case XK_KP_Enter: return Qt::Key_Enter; + case XK_KP_F1: return Qt::Key_F1; + case XK_KP_F2: return Qt::Key_F2; + case XK_KP_F3: return Qt::Key_F3; + case XK_KP_F4: return Qt::Key_F4; + case XK_KP_Home: return Qt::Key_Home; + case XK_KP_Left: return Qt::Key_Left; + case XK_KP_Up: return Qt::Key_Up; + case XK_KP_Right: return Qt::Key_Right; + case XK_KP_Down: return Qt::Key_Down; + //case XK_KP_Prior: return Qt::Key_ + case XK_KP_Page_Up: return Qt::Key_PageUp; + //case XK_KP_Next: return Qt::Key_ + case XK_KP_Page_Down: return Qt::Key_PageDown; + case XK_KP_End: return Qt::Key_End; + //case XK_KP_Begin: return Qt::Key_ + case XK_KP_Insert: return Qt::Key_Insert; + case XK_KP_Delete: return Qt::Key_Delete; + case XK_KP_Equal: return Qt::Key_Equal; + case XK_KP_Multiply: return Qt::Key_Asterisk; + case XK_KP_Add: return Qt::Key_Plus; + case XK_KP_Separator: return Qt::Key_Comma; //X11 definitions say this is often comma + case XK_KP_Subtract: return Qt::Key_Minus; + case XK_KP_Decimal: return Qt::Key_Period; + case XK_KP_Divide: return Qt::Key_Slash; + case XK_KP_0: return Qt::Key_0; + case XK_KP_1: return Qt::Key_1; + case XK_KP_2: return Qt::Key_2; + case XK_KP_3: return Qt::Key_3; + case XK_KP_4: return Qt::Key_4; + case XK_KP_5: return Qt::Key_5; + case XK_KP_6: return Qt::Key_6; + case XK_KP_7: return Qt::Key_7; + case XK_KP_8: return Qt::Key_8; + case XK_KP_9: return Qt::Key_9; + // Modifier Keys + case XK_Shift_L: return Qt::Key_Shift; + case XK_Shift_R: return Qt::Key_Shift; + case XK_Control_L: return Qt::Key_Control; + case XK_Control_R: return Qt::Key_Control; + case XK_Caps_Lock: return Qt::Key_CapsLock; + //case XK_Shift_Lock: return Qt::Key_ShiftLock; + case XK_Meta_L: return Qt::Key_Meta; + case XK_Meta_R: return Qt::Key_Meta; + case XK_Alt_L: return Qt::Key_Alt; + case XK_Alt_R: return Qt::Key_Alt; + case XK_Super_L: return Qt::Key_Super_L; + case XK_Super_R: return Qt::Key_Super_R; + case XK_Hyper_L: return Qt::Key_Hyper_L; + case XK_Hyper_R: return Qt::Key_Hyper_R; + case XK_space: return Qt::Key_Space; + case XK_exclam: return Qt::Key_Exclam; + case XK_quotedbl: return Qt::Key_QuoteDbl; + case XK_numbersign: return Qt::Key_NumberSign; + case XK_dollar: return Qt::Key_Dollar; + case XK_percent: return Qt::Key_Percent; + case XK_ampersand: return Qt::Key_Ampersand; + case XK_apostrophe: return Qt::Key_Apostrophe; + case XK_parenleft: return Qt::Key_ParenLeft; + case XK_parenright: return Qt::Key_ParenRight; + case XK_asterisk: return Qt::Key_Asterisk; + case XK_plus: return Qt::Key_Plus; + case XK_comma: return Qt::Key_Comma; + case XK_minus: return Qt::Key_Minus; + case XK_period: return Qt::Key_Period; + case XK_slash: return Qt::Key_Slash; + case XK_0: return Qt::Key_0; + case XK_1: return Qt::Key_1; + case XK_2: return Qt::Key_2; + case XK_3: return Qt::Key_3; + case XK_4: return Qt::Key_4; + case XK_5: return Qt::Key_5; + case XK_6: return Qt::Key_6; + case XK_7: return Qt::Key_7; + case XK_8: return Qt::Key_8; + case XK_9: return Qt::Key_9; + case XK_colon: return Qt::Key_Colon; + case XK_semicolon: return Qt::Key_Semicolon; + case XK_less: return Qt::Key_Less; + case XK_equal: return Qt::Key_Equal; + case XK_greater: return Qt::Key_Greater; + case XK_question: return Qt::Key_Question; + case XK_at: return Qt::Key_At; + case XK_A: return Qt::Key_A; + case XK_B: return Qt::Key_B; + case XK_C: return Qt::Key_C; + case XK_D: return Qt::Key_D; + case XK_E: return Qt::Key_E; + case XK_F: return Qt::Key_F; + case XK_G: return Qt::Key_G; + case XK_H: return Qt::Key_H; + case XK_I: return Qt::Key_I; + case XK_J: return Qt::Key_J; + case XK_K: return Qt::Key_K; + case XK_L: return Qt::Key_L; + case XK_M: return Qt::Key_M; + case XK_N: return Qt::Key_N; + case XK_O: return Qt::Key_O; + case XK_P: return Qt::Key_P; + case XK_Q: return Qt::Key_Q; + case XK_R: return Qt::Key_R; + case XK_S: return Qt::Key_S; + case XK_T: return Qt::Key_T; + case XK_U: return Qt::Key_U; + case XK_V: return Qt::Key_V; + case XK_W: return Qt::Key_W; + case XK_X: return Qt::Key_X; + case XK_Y : return Qt::Key_Y; + case XK_Z: return Qt::Key_Z; + case XK_bracketleft: return Qt::Key_BracketLeft; + case XK_backslash: return Qt::Key_Backslash; + case XK_bracketright: return Qt::Key_BracketRight; + case XK_asciicircum: return Qt::Key_AsciiCircum; + case XK_underscore: return Qt::Key_Underscore; + case XK_grave: return Qt::Key_Agrave; + case XK_a: return Qt::Key_A; + case XK_b: return Qt::Key_B; + case XK_c: return Qt::Key_C; + case XK_d: return Qt::Key_D; + case XK_e: return Qt::Key_E; + case XK_f : return Qt::Key_F; + case XK_g: return Qt::Key_G; + case XK_h: return Qt::Key_H; + case XK_i: return Qt::Key_I; + case XK_j: return Qt::Key_J; + case XK_k: return Qt::Key_K; + case XK_l: return Qt::Key_L; + case XK_m: return Qt::Key_M; + case XK_n: return Qt::Key_N; + case XK_o: return Qt::Key_O; + case XK_p: return Qt::Key_P; + case XK_q: return Qt::Key_Q; + case XK_r: return Qt::Key_R; + case XK_s: return Qt::Key_S; + case XK_t : return Qt::Key_T; + case XK_u: return Qt::Key_U; + case XK_v: return Qt::Key_V; + case XK_w: return Qt::Key_W; + case XK_x: return Qt::Key_X; + case XK_y: return Qt::Key_Y; + case XK_z: return Qt::Key_Z; + case XK_braceleft: return Qt::Key_BraceLeft; + case XK_bar: return Qt::Key_Bar; + case XK_braceright: return Qt::Key_BraceRight; + case XK_asciitilde: return Qt::Key_AsciiTilde; + + //case XK_nobreakspace 0x00a0 /* U+00A0 NO-BREAK SPACE */ + //case XK_exclamdown 0x00a1 /* U+00A1 INVERTED EXCLAMATION MARK */ + //case XK_cent 0x00a2 /* U+00A2 CENT SIGN */ + //case XK_sterling 0x00a3 /* U+00A3 POUND SIGN */ + //case XK_currency 0x00a4 /* U+00A4 CURRENCY SIGN */ + //case XK_yen 0x00a5 /* U+00A5 YEN SIGN */ + //case XK_brokenbar 0x00a6 /* U+00A6 BROKEN BAR */ + //case XK_section 0x00a7 /* U+00A7 SECTION SIGN */ + //case XK_diaeresis 0x00a8 /* U+00A8 DIAERESIS */ + //case XK_copyright 0x00a9 /* U+00A9 COPYRIGHT SIGN */ + //case XK_ordfeminine 0x00aa /* U+00AA FEMININE ORDINAL INDICATOR */ + //case XK_guillemotleft 0x00ab /* U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ + //case XK_notsign 0x00ac /* U+00AC NOT SIGN */ + //case XK_hyphen 0x00ad /* U+00AD SOFT HYPHEN */ + //case XK_registered 0x00ae /* U+00AE REGISTERED SIGN */ + //case XK_macron 0x00af /* U+00AF MACRON */ + //case XK_degree 0x00b0 /* U+00B0 DEGREE SIGN */ + //case XK_plusminus 0x00b1 /* U+00B1 PLUS-MINUS SIGN */ + //case XK_twosuperior 0x00b2 /* U+00B2 SUPERSCRIPT TWO */ + //case XK_threesuperior 0x00b3 /* U+00B3 SUPERSCRIPT THREE */ + //case XK_acute 0x00b4 /* U+00B4 ACUTE ACCENT */ + //case XK_mu 0x00b5 /* U+00B5 MICRO SIGN */ + //case XK_paragraph 0x00b6 /* U+00B6 PILCROW SIGN */ + //case XK_periodcentered 0x00b7 /* U+00B7 MIDDLE DOT */ + //case XK_cedilla 0x00b8 /* U+00B8 CEDILLA */ + //case XK_onesuperior 0x00b9 /* U+00B9 SUPERSCRIPT ONE */ + //case XK_masculine 0x00ba /* U+00BA MASCULINE ORDINAL INDICATOR */ + //case XK_guillemotright 0x00bb /* U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ + //case XK_onequarter 0x00bc /* U+00BC VULGAR FRACTION ONE QUARTER */ + //case XK_onehalf 0x00bd /* U+00BD VULGAR FRACTION ONE HALF */ + //case XK_threequarters 0x00be /* U+00BE VULGAR FRACTION THREE QUARTERS */ + //case XK_questiondown 0x00bf /* U+00BF INVERTED QUESTION MARK */ + //case XK_Agrave 0x00c0 /* U+00C0 LATIN CAPITAL LETTER A WITH GRAVE */ + //case XK_Aacute 0x00c1 /* U+00C1 LATIN CAPITAL LETTER A WITH ACUTE */ + //case XK_Acircumflex 0x00c2 /* U+00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ + //case XK_Atilde 0x00c3 /* U+00C3 LATIN CAPITAL LETTER A WITH TILDE */ + //case XK_Adiaeresis 0x00c4 /* U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS */ + //case XK_Aring 0x00c5 /* U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE */ + //case XK_AE 0x00c6 /* U+00C6 LATIN CAPITAL LETTER AE */ + //case XK_Ccedilla 0x00c7 /* U+00C7 LATIN CAPITAL LETTER C WITH CEDILLA */ + //case XK_Egrave 0x00c8 /* U+00C8 LATIN CAPITAL LETTER E WITH GRAVE */ + //case XK_Eacute 0x00c9 /* U+00C9 LATIN CAPITAL LETTER E WITH ACUTE */ + //case XK_Ecircumflex 0x00ca /* U+00CA LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ + //case XK_Ediaeresis 0x00cb /* U+00CB LATIN CAPITAL LETTER E WITH DIAERESIS */ + //case XK_Igrave 0x00cc /* U+00CC LATIN CAPITAL LETTER I WITH GRAVE */ + //case XK_Iacute 0x00cd /* U+00CD LATIN CAPITAL LETTER I WITH ACUTE */ + //case XK_Icircumflex 0x00ce /* U+00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ + //case XK_Idiaeresis 0x00cf /* U+00CF LATIN CAPITAL LETTER I WITH DIAERESIS */ + //case XK_ETH 0x00d0 /* U+00D0 LATIN CAPITAL LETTER ETH */ + //case XK_Eth 0x00d0 /* deprecated */ + //case XK_Ntilde 0x00d1 /* U+00D1 LATIN CAPITAL LETTER N WITH TILDE */ + //case XK_Ograve 0x00d2 /* U+00D2 LATIN CAPITAL LETTER O WITH GRAVE */ + //case XK_Oacute 0x00d3 /* U+00D3 LATIN CAPITAL LETTER O WITH ACUTE */ + //case XK_Ocircumflex 0x00d4 /* U+00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ + //case XK_Otilde 0x00d5 /* U+00D5 LATIN CAPITAL LETTER O WITH TILDE */ + //case XK_Odiaeresis 0x00d6 /* U+00D6 LATIN CAPITAL LETTER O WITH DIAERESIS */ + //case XK_multiply 0x00d7 /* U+00D7 MULTIPLICATION SIGN */ + //case XK_Oslash 0x00d8 /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */ + //case XK_Ooblique 0x00d8 /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */ + //case XK_Ugrave 0x00d9 /* U+00D9 LATIN CAPITAL LETTER U WITH GRAVE */ + //case XK_Uacute 0x00da /* U+00DA LATIN CAPITAL LETTER U WITH ACUTE */ + //case XK_Ucircumflex 0x00db /* U+00DB LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ + //case XK_Udiaeresis 0x00dc /* U+00DC LATIN CAPITAL LETTER U WITH DIAERESIS */ + //case XK_Yacute 0x00dd /* U+00DD LATIN CAPITAL LETTER Y WITH ACUTE */ + //case XK_THORN 0x00de /* U+00DE LATIN CAPITAL LETTER THORN */ + //case XK_Thorn 0x00de /* deprecated */ + //case XK_ssharp 0x00df /* U+00DF LATIN SMALL LETTER SHARP S */ + //case XK_agrave 0x00e0 /* U+00E0 LATIN SMALL LETTER A WITH GRAVE */ + //case XK_aacute 0x00e1 /* U+00E1 LATIN SMALL LETTER A WITH ACUTE */ + //case XK_acircumflex 0x00e2 /* U+00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX */ + //case XK_atilde 0x00e3 /* U+00E3 LATIN SMALL LETTER A WITH TILDE */ + //case XK_adiaeresis 0x00e4 /* U+00E4 LATIN SMALL LETTER A WITH DIAERESIS */ + //case XK_aring 0x00e5 /* U+00E5 LATIN SMALL LETTER A WITH RING ABOVE */ + //case XK_ae 0x00e6 /* U+00E6 LATIN SMALL LETTER AE */ + //case XK_ccedilla 0x00e7 /* U+00E7 LATIN SMALL LETTER C WITH CEDILLA */ + //case XK_egrave 0x00e8 /* U+00E8 LATIN SMALL LETTER E WITH GRAVE */ + //case XK_eacute 0x00e9 /* U+00E9 LATIN SMALL LETTER E WITH ACUTE */ + //case XK_ecircumflex 0x00ea /* U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX */ + //case XK_ediaeresis 0x00eb /* U+00EB LATIN SMALL LETTER E WITH DIAERESIS */ + //case XK_igrave 0x00ec /* U+00EC LATIN SMALL LETTER I WITH GRAVE */ + //case XK_iacute 0x00ed /* U+00ED LATIN SMALL LETTER I WITH ACUTE */ + //case XK_icircumflex 0x00ee /* U+00EE LATIN SMALL LETTER I WITH CIRCUMFLEX */ + //case XK_idiaeresis 0x00ef /* U+00EF LATIN SMALL LETTER I WITH DIAERESIS */ + //case XK_eth 0x00f0 /* U+00F0 LATIN SMALL LETTER ETH */ + //case XK_ntilde 0x00f1 /* U+00F1 LATIN SMALL LETTER N WITH TILDE */ + //case XK_ograve 0x00f2 /* U+00F2 LATIN SMALL LETTER O WITH GRAVE */ + //case XK_oacute 0x00f3 /* U+00F3 LATIN SMALL LETTER O WITH ACUTE */ + //case XK_ocircumflex 0x00f4 /* U+00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX */ + //case XK_otilde 0x00f5 /* U+00F5 LATIN SMALL LETTER O WITH TILDE */ + //case XK_odiaeresis 0x00f6 /* U+00F6 LATIN SMALL LETTER O WITH DIAERESIS */ + //case XK_division 0x00f7 /* U+00F7 DIVISION SIGN */ + //case XK_oslash 0x00f8 /* U+00F8 LATIN SMALL LETTER O WITH STROKE */ + //case XK_ooblique 0x00f8 /* U+00F8 LATIN SMALL LETTER O WITH STROKE */ + //case XK_ugrave 0x00f9 /* U+00F9 LATIN SMALL LETTER U WITH GRAVE */ + //case XK_uacute 0x00fa /* U+00FA LATIN SMALL LETTER U WITH ACUTE */ + //case XK_ucircumflex 0x00fb /* U+00FB LATIN SMALL LETTER U WITH CIRCUMFLEX */ + //case XK_udiaeresis 0x00fc /* U+00FC LATIN SMALL LETTER U WITH DIAERESIS */ + //case XK_yacute 0x00fd /* U+00FD LATIN SMALL LETTER Y WITH ACUTE */ + //case XK_thorn 0x00fe /* U+00FE LATIN SMALL LETTER THORN */ + //case XK_ydiaeresis 0x00ff /* U+00FF LATIN SMALL LETTER Y WITH DIAERESIS */ + + //case XK_Aogonek 0x01a1 /* U+0104 LATIN CAPITAL LETTER A WITH OGONEK */ + //case XK_breve 0x01a2 /* U+02D8 BREVE */ + //case XK_Lstroke 0x01a3 /* U+0141 LATIN CAPITAL LETTER L WITH STROKE */ + //case XK_Lcaron 0x01a5 /* U+013D LATIN CAPITAL LETTER L WITH CARON */ + //case XK_Sacute 0x01a6 /* U+015A LATIN CAPITAL LETTER S WITH ACUTE */ + //case XK_Scaron 0x01a9 /* U+0160 LATIN CAPITAL LETTER S WITH CARON */ + //case XK_Scedilla 0x01aa /* U+015E LATIN CAPITAL LETTER S WITH CEDILLA */ + //case XK_Tcaron 0x01ab /* U+0164 LATIN CAPITAL LETTER T WITH CARON */ + //case XK_Zacute 0x01ac /* U+0179 LATIN CAPITAL LETTER Z WITH ACUTE */ + //case XK_Zcaron 0x01ae /* U+017D LATIN CAPITAL LETTER Z WITH CARON */ + //case XK_Zabovedot 0x01af /* U+017B LATIN CAPITAL LETTER Z WITH DOT ABOVE */ + //case XK_aogonek 0x01b1 /* U+0105 LATIN SMALL LETTER A WITH OGONEK */ + //case XK_ogonek 0x01b2 /* U+02DB OGONEK */ + //case XK_lstroke 0x01b3 /* U+0142 LATIN SMALL LETTER L WITH STROKE */ + //case XK_lcaron 0x01b5 /* U+013E LATIN SMALL LETTER L WITH CARON */ + //case XK_sacute 0x01b6 /* U+015B LATIN SMALL LETTER S WITH ACUTE */ + //case XK_caron 0x01b7 /* U+02C7 CARON */ + //case XK_scaron 0x01b9 /* U+0161 LATIN SMALL LETTER S WITH CARON */ + //case XK_scedilla 0x01ba /* U+015F LATIN SMALL LETTER S WITH CEDILLA */ + //case XK_tcaron 0x01bb /* U+0165 LATIN SMALL LETTER T WITH CARON */ + //case XK_zacute 0x01bc /* U+017A LATIN SMALL LETTER Z WITH ACUTE */ + //case XK_doubleacute 0x01bd /* U+02DD DOUBLE ACUTE ACCENT */ + //case XK_zcaron 0x01be /* U+017E LATIN SMALL LETTER Z WITH CARON */ + //case XK_zabovedot 0x01bf /* U+017C LATIN SMALL LETTER Z WITH DOT ABOVE */ + //case XK_Racute 0x01c0 /* U+0154 LATIN CAPITAL LETTER R WITH ACUTE */ + //case XK_Abreve 0x01c3 /* U+0102 LATIN CAPITAL LETTER A WITH BREVE */ + //case XK_Lacute 0x01c5 /* U+0139 LATIN CAPITAL LETTER L WITH ACUTE */ + //case XK_Cacute 0x01c6 /* U+0106 LATIN CAPITAL LETTER C WITH ACUTE */ + //case XK_Ccaron 0x01c8 /* U+010C LATIN CAPITAL LETTER C WITH CARON */ + //case XK_Eogonek 0x01ca /* U+0118 LATIN CAPITAL LETTER E WITH OGONEK */ + //case XK_Ecaron 0x01cc /* U+011A LATIN CAPITAL LETTER E WITH CARON */ + //case XK_Dcaron 0x01cf /* U+010E LATIN CAPITAL LETTER D WITH CARON */ + //case XK_Dstroke 0x01d0 /* U+0110 LATIN CAPITAL LETTER D WITH STROKE */ + //case XK_Nacute 0x01d1 /* U+0143 LATIN CAPITAL LETTER N WITH ACUTE */ + //case XK_Ncaron 0x01d2 /* U+0147 LATIN CAPITAL LETTER N WITH CARON */ + //case XK_Odoubleacute 0x01d5 /* U+0150 LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */ + //case XK_Rcaron 0x01d8 /* U+0158 LATIN CAPITAL LETTER R WITH CARON */ + //case XK_Uring 0x01d9 /* U+016E LATIN CAPITAL LETTER U WITH RING ABOVE */ + //case XK_Udoubleacute 0x01db /* U+0170 LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */ + //case XK_Tcedilla 0x01de /* U+0162 LATIN CAPITAL LETTER T WITH CEDILLA */ + //case XK_racute 0x01e0 /* U+0155 LATIN SMALL LETTER R WITH ACUTE */ + //case XK_abreve 0x01e3 /* U+0103 LATIN SMALL LETTER A WITH BREVE */ + //case XK_lacute 0x01e5 /* U+013A LATIN SMALL LETTER L WITH ACUTE */ + //case XK_cacute 0x01e6 /* U+0107 LATIN SMALL LETTER C WITH ACUTE */ + //case XK_ccaron 0x01e8 /* U+010D LATIN SMALL LETTER C WITH CARON */ + //case XK_eogonek 0x01ea /* U+0119 LATIN SMALL LETTER E WITH OGONEK */ + //case XK_ecaron 0x01ec /* U+011B LATIN SMALL LETTER E WITH CARON */ + //case XK_dcaron 0x01ef /* U+010F LATIN SMALL LETTER D WITH CARON */ + //case XK_dstroke 0x01f0 /* U+0111 LATIN SMALL LETTER D WITH STROKE */ + //case XK_nacute 0x01f1 /* U+0144 LATIN SMALL LETTER N WITH ACUTE */ + //case XK_ncaron 0x01f2 /* U+0148 LATIN SMALL LETTER N WITH CARON */ + //case XK_odoubleacute 0x01f5 /* U+0151 LATIN SMALL LETTER O WITH DOUBLE ACUTE */ + //case XK_rcaron 0x01f8 /* U+0159 LATIN SMALL LETTER R WITH CARON */ + //case XK_uring 0x01f9 /* U+016F LATIN SMALL LETTER U WITH RING ABOVE */ + //case XK_udoubleacute 0x01fb /* U+0171 LATIN SMALL LETTER U WITH DOUBLE ACUTE */ + //case XK_tcedilla 0x01fe /* U+0163 LATIN SMALL LETTER T WITH CEDILLA */ + //case XK_abovedot 0x01ff /* U+02D9 DOT ABOVE */ + //case XK_Hstroke 0x02a1 /* U+0126 LATIN CAPITAL LETTER H WITH STROKE */ + //case XK_Hcircumflex 0x02a6 /* U+0124 LATIN CAPITAL LETTER H WITH CIRCUMFLEX */ + //case XK_Iabovedot 0x02a9 /* U+0130 LATIN CAPITAL LETTER I WITH DOT ABOVE */ + //case XK_Gbreve 0x02ab /* U+011E LATIN CAPITAL LETTER G WITH BREVE */ + //case XK_Jcircumflex 0x02ac /* U+0134 LATIN CAPITAL LETTER J WITH CIRCUMFLEX */ + //case XK_hstroke 0x02b1 /* U+0127 LATIN SMALL LETTER H WITH STROKE */ + //case XK_hcircumflex 0x02b6 /* U+0125 LATIN SMALL LETTER H WITH CIRCUMFLEX */ + //case XK_idotless 0x02b9 /* U+0131 LATIN SMALL LETTER DOTLESS I */ + //case XK_gbreve 0x02bb /* U+011F LATIN SMALL LETTER G WITH BREVE */ + //case XK_jcircumflex 0x02bc /* U+0135 LATIN SMALL LETTER J WITH CIRCUMFLEX */ + //case XK_Cabovedot 0x02c5 /* U+010A LATIN CAPITAL LETTER C WITH DOT ABOVE */ + //case XK_Ccircumflex 0x02c6 /* U+0108 LATIN CAPITAL LETTER C WITH CIRCUMFLEX */ + //case XK_Gabovedot 0x02d5 /* U+0120 LATIN CAPITAL LETTER G WITH DOT ABOVE */ + //case XK_Gcircumflex 0x02d8 /* U+011C LATIN CAPITAL LETTER G WITH CIRCUMFLEX */ + //case XK_Ubreve 0x02dd /* U+016C LATIN CAPITAL LETTER U WITH BREVE */ + //case XK_Scircumflex 0x02de /* U+015C LATIN CAPITAL LETTER S WITH CIRCUMFLEX */ + //case XK_cabovedot 0x02e5 /* U+010B LATIN SMALL LETTER C WITH DOT ABOVE */ + //case XK_ccircumflex 0x02e6 /* U+0109 LATIN SMALL LETTER C WITH CIRCUMFLEX */ + //case XK_gabovedot 0x02f5 /* U+0121 LATIN SMALL LETTER G WITH DOT ABOVE */ + //case XK_gcircumflex 0x02f8 /* U+011D LATIN SMALL LETTER G WITH CIRCUMFLEX */ + //case XK_ubreve 0x02fd /* U+016D LATIN SMALL LETTER U WITH BREVE */ + //case XK_scircumflex 0x02fe /* U+015D LATIN SMALL LETTER S WITH CIRCUMFLEX */ + //case XK_kra 0x03a2 /* U+0138 LATIN SMALL LETTER KRA */ + //case XK_kappa 0x03a2 /* deprecated */ + //case XK_Rcedilla 0x03a3 /* U+0156 LATIN CAPITAL LETTER R WITH CEDILLA */ + //case XK_Itilde 0x03a5 /* U+0128 LATIN CAPITAL LETTER I WITH TILDE */ + //case XK_Lcedilla 0x03a6 /* U+013B LATIN CAPITAL LETTER L WITH CEDILLA */ + //case XK_Emacron 0x03aa /* U+0112 LATIN CAPITAL LETTER E WITH MACRON */ + //case XK_Gcedilla 0x03ab /* U+0122 LATIN CAPITAL LETTER G WITH CEDILLA */ + //case XK_Tslash 0x03ac /* U+0166 LATIN CAPITAL LETTER T WITH STROKE */ + //case XK_rcedilla 0x03b3 /* U+0157 LATIN SMALL LETTER R WITH CEDILLA */ + //case XK_itilde 0x03b5 /* U+0129 LATIN SMALL LETTER I WITH TILDE */ + //case XK_lcedilla 0x03b6 /* U+013C LATIN SMALL LETTER L WITH CEDILLA */ + //case XK_emacron 0x03ba /* U+0113 LATIN SMALL LETTER E WITH MACRON */ + //case XK_gcedilla 0x03bb /* U+0123 LATIN SMALL LETTER G WITH CEDILLA */ + //case XK_tslash 0x03bc /* U+0167 LATIN SMALL LETTER T WITH STROKE */ + //case XK_ENG 0x03bd /* U+014A LATIN CAPITAL LETTER ENG */ + //case XK_eng 0x03bf /* U+014B LATIN SMALL LETTER ENG */ + //case XK_Amacron 0x03c0 /* U+0100 LATIN CAPITAL LETTER A WITH MACRON */ + //case XK_Iogonek 0x03c7 /* U+012E LATIN CAPITAL LETTER I WITH OGONEK */ + //case XK_Eabovedot 0x03cc /* U+0116 LATIN CAPITAL LETTER E WITH DOT ABOVE */ + //case XK_Imacron 0x03cf /* U+012A LATIN CAPITAL LETTER I WITH MACRON */ + //case XK_Ncedilla 0x03d1 /* U+0145 LATIN CAPITAL LETTER N WITH CEDILLA */ + //case XK_Omacron 0x03d2 /* U+014C LATIN CAPITAL LETTER O WITH MACRON */ + //case XK_Kcedilla 0x03d3 /* U+0136 LATIN CAPITAL LETTER K WITH CEDILLA */ + //case XK_Uogonek 0x03d9 /* U+0172 LATIN CAPITAL LETTER U WITH OGONEK */ + //case XK_Utilde 0x03dd /* U+0168 LATIN CAPITAL LETTER U WITH TILDE */ + //case XK_Umacron 0x03de /* U+016A LATIN CAPITAL LETTER U WITH MACRON */ + //case XK_amacron 0x03e0 /* U+0101 LATIN SMALL LETTER A WITH MACRON */ + //case XK_iogonek 0x03e7 /* U+012F LATIN SMALL LETTER I WITH OGONEK */ + //case XK_eabovedot 0x03ec /* U+0117 LATIN SMALL LETTER E WITH DOT ABOVE */ + //case XK_imacron 0x03ef /* U+012B LATIN SMALL LETTER I WITH MACRON */ + //case XK_ncedilla 0x03f1 /* U+0146 LATIN SMALL LETTER N WITH CEDILLA */ + //case XK_omacron 0x03f2 /* U+014D LATIN SMALL LETTER O WITH MACRON */ + //case XK_kcedilla 0x03f3 /* U+0137 LATIN SMALL LETTER K WITH CEDILLA */ + //case XK_uogonek 0x03f9 /* U+0173 LATIN SMALL LETTER U WITH OGONEK */ + //case XK_utilde 0x03fd /* U+0169 LATIN SMALL LETTER U WITH TILDE */ + //case XK_umacron 0x03fe /* U+016B LATIN SMALL LETTER U WITH MACRON */ + //case XK_Wcircumflex 0x1000174 /* U+0174 LATIN CAPITAL LETTER W WITH CIRCUMFLEX */ + //case XK_wcircumflex 0x1000175 /* U+0175 LATIN SMALL LETTER W WITH CIRCUMFLEX */ + //case XK_Ycircumflex 0x1000176 /* U+0176 LATIN CAPITAL LETTER Y WITH CIRCUMFLEX */ + //case XK_ycircumflex 0x1000177 /* U+0177 LATIN SMALL LETTER Y WITH CIRCUMFLEX */ + //case XK_Babovedot 0x1001e02 /* U+1E02 LATIN CAPITAL LETTER B WITH DOT ABOVE */ + //case XK_babovedot 0x1001e03 /* U+1E03 LATIN SMALL LETTER B WITH DOT ABOVE */ + //case XK_Dabovedot 0x1001e0a /* U+1E0A LATIN CAPITAL LETTER D WITH DOT ABOVE */ + //case XK_dabovedot 0x1001e0b /* U+1E0B LATIN SMALL LETTER D WITH DOT ABOVE */ + //case XK_Fabovedot 0x1001e1e /* U+1E1E LATIN CAPITAL LETTER F WITH DOT ABOVE */ + //case XK_fabovedot 0x1001e1f /* U+1E1F LATIN SMALL LETTER F WITH DOT ABOVE */ + //case XK_Mabovedot 0x1001e40 /* U+1E40 LATIN CAPITAL LETTER M WITH DOT ABOVE */ + //case XK_mabovedot 0x1001e41 /* U+1E41 LATIN SMALL LETTER M WITH DOT ABOVE */ + //case XK_Pabovedot 0x1001e56 /* U+1E56 LATIN CAPITAL LETTER P WITH DOT ABOVE */ + //case XK_pabovedot 0x1001e57 /* U+1E57 LATIN SMALL LETTER P WITH DOT ABOVE */ + //case XK_Sabovedot 0x1001e60 /* U+1E60 LATIN CAPITAL LETTER S WITH DOT ABOVE */ + //case XK_sabovedot 0x1001e61 /* U+1E61 LATIN SMALL LETTER S WITH DOT ABOVE */ + //case XK_Tabovedot 0x1001e6a /* U+1E6A LATIN CAPITAL LETTER T WITH DOT ABOVE */ + //case XK_tabovedot 0x1001e6b /* U+1E6B LATIN SMALL LETTER T WITH DOT ABOVE */ + //case XK_Wgrave 0x1001e80 /* U+1E80 LATIN CAPITAL LETTER W WITH GRAVE */ + //case XK_wgrave 0x1001e81 /* U+1E81 LATIN SMALL LETTER W WITH GRAVE */ + //case XK_Wacute 0x1001e82 /* U+1E82 LATIN CAPITAL LETTER W WITH ACUTE */ + //case XK_wacute 0x1001e83 /* U+1E83 LATIN SMALL LETTER W WITH ACUTE */ + //case XK_Wdiaeresis 0x1001e84 /* U+1E84 LATIN CAPITAL LETTER W WITH DIAERESIS */ + //case XK_wdiaeresis 0x1001e85 /* U+1E85 LATIN SMALL LETTER W WITH DIAERESIS */ + //case XK_Ygrave 0x1001ef2 /* U+1EF2 LATIN CAPITAL LETTER Y WITH GRAVE */ + //case XK_ygrave 0x1001ef3 /* U+1EF3 LATIN SMALL LETTER Y WITH GRAVE */ + //case XK_OE 0x13bc /* U+0152 LATIN CAPITAL LIGATURE OE */ + //case XK_oe 0x13bd /* U+0153 LATIN SMALL LIGATURE OE */ + //case XK_Ydiaeresis 0x13be /* U+0178 LATIN CAPITAL LETTER Y WITH DIAERESIS */ + default: + qDebug() << "Unknown Key"; + } + qDebug() << " -- Simple Qt Map:" << (Qt::Key)(symbol); + qDebug() << " -- Key Sequence Map:" << QKeySequence(symbol); + qDebug() << " - Not implemented yet"; + return Qt::Key_unknown; +} + +NativeWindowSystem::MouseButton NativeWindowSystem::MouseToQt(int keycode){ + switch(keycode){ + case 1: + return NativeWindowSystem::LeftButton; + case 3: + return NativeWindowSystem::RightButton; + case 2: + return NativeWindowSystem::MidButton; + case 4: + return NativeWindowSystem::WheelUp; + case 5: + return NativeWindowSystem::WheelDown; + case 6: + return NativeWindowSystem::WheelLeft; + case 7: + return NativeWindowSystem::WheelRight; + case 8: + return NativeWindowSystem::BackButton; //Not sure if this is correct yet (1/27/17) + case 9: + return NativeWindowSystem::ForwardButton; //Not sure if this is correct yet (1/27/17) + default: + return NativeWindowSystem::NoButton; + } +} diff --git a/src-qt5/core/libLumina/NativeWindow.pri b/src-qt5/core/libLumina/NativeWindow.pri index fef9c736..013291ff 100644 --- a/src-qt5/core/libLumina/NativeWindow.pri +++ b/src-qt5/core/libLumina/NativeWindow.pri @@ -5,6 +5,7 @@ LIBS *= -lc -lxcb -lxcb-ewmh -lxcb-icccm -lxcb-image -lxcb-composite -lxcb-damag SOURCES *= $${PWD}/NativeWindow.cpp \ $${PWD}/NativeWindowSystem.cpp \ + $${PWD}/NativeKeyToQt.cpp \ $${PWD}/NativeEventFilter.cpp HEADERS *= $${PWD}/NativeWindow.h \ diff --git a/src-qt5/core/libLumina/NativeWindowSystem.cpp b/src-qt5/core/libLumina/NativeWindowSystem.cpp index 73bba1a9..f208cbf1 100644 --- a/src-qt5/core/libLumina/NativeWindowSystem.cpp +++ b/src-qt5/core/libLumina/NativeWindowSystem.cpp @@ -19,15 +19,6 @@ #include -#define XK_MISCELLANY -#define XK_XKB_KEYS -#define XK_LATIN1 -#define XK_LATIN2 -#define XK_LATIN3 -#define XK_LATIN4 -//NOTE: Look at the keysymdef.h file for additional define/characters which we may need later -#include - //XCB Library includes #include #include @@ -38,7 +29,6 @@ #include #include #include -#include //XLib includes (XCB Damage lib does not appear to register for damage events properly) #include @@ -260,101 +250,6 @@ void NativeWindowSystem::stop(){ } -//Small simplification functions -Qt::Key NativeWindowSystem::KeycodeToQt(int keycode){ - static xcb_key_symbols_t *SYM = 0; - if(SYM==0){ SYM = xcb_key_symbols_alloc(QX11Info::connection()); } - xcb_keysym_t symbol = xcb_key_symbols_get_keysym(SYM, keycode,0); - //not sure about the "column" input - we want raw keys though so ignore the "modified" key states (columns) for now - qDebug() << "Try to convert keycode to Qt::Key:" << keycode << symbol; - //Now map this symbol to the appropriate Qt::Key enumeration - if(xcb_is_keypad_key(symbol)){ qDebug() << "Keypad Key"; } - else if(xcb_is_private_keypad_key(symbol)){ qDebug() << "Private Keypad Key"; } - else if(xcb_is_cursor_key(symbol)){ qDebug() << "Cursor Key"; } - else if(xcb_is_pf_key(symbol)){ qDebug() << "PF Key"; } - else if(xcb_is_function_key(symbol)){ - switch(symbol){ - case XK_F1: return Qt::Key_F1; - case XK_F2: return Qt::Key_F2; - case XK_F3: return Qt::Key_F3; - case XK_F4: return Qt::Key_F4; - case XK_F5: return Qt::Key_F5; - case XK_F6: return Qt::Key_F6; - case XK_F7: return Qt::Key_F7; - case XK_F8: return Qt::Key_F8; - case XK_F9: return Qt::Key_F9; - case XK_F10: return Qt::Key_F10; - case XK_F11: return Qt::Key_F11; - case XK_F12: return Qt::Key_F12; - case XK_F13: return Qt::Key_F13; - case XK_F14: return Qt::Key_F14; - case XK_F15: return Qt::Key_F15; - case XK_F16: return Qt::Key_F16; - case XK_F17: return Qt::Key_F17; - case XK_F18: return Qt::Key_F18; - case XK_F19: return Qt::Key_F19; - case XK_F20: return Qt::Key_F20; - case XK_F21: return Qt::Key_F21; - case XK_F22: return Qt::Key_F22; - case XK_F23: return Qt::Key_F23; - case XK_F24: return Qt::Key_F24; - case XK_F25: return Qt::Key_F25; - case XK_F26: return Qt::Key_F26; - case XK_F27: return Qt::Key_F27; - case XK_F28: return Qt::Key_F28; - case XK_F29: return Qt::Key_F29; - case XK_F30: return Qt::Key_F30; - case XK_F31: return Qt::Key_F31; - case XK_F32: return Qt::Key_F32; - case XK_F33: return Qt::Key_F33; - case XK_F34: return Qt::Key_F34; - case XK_F35: return Qt::Key_F35; - default: - qDebug() << "Unknown Function Key"; - } - }else if(xcb_is_misc_function_key(symbol)){ qDebug() << "Misc Function Key"; } - else if(xcb_is_modifier_key(symbol)){ - qDebug() << "Modifier Key"; - /*switch(symbol){ - case: XK_ - }*/ - }else if(!QKeySequence(symbol).isEmpty()){ - //One of the standard keys, go ahead and do a direct map - qDebug() << " -- [GOT MATCH]" << QKeySequence(symbol); - return Qt::Key_unknown; //QKeySequence(symbol)[0]; //only ever one key in this method - }else{ - qDebug() << " -- Simple Qt Map:" << (Qt::Key)(symbol); - qDebug() << " -- Key Sequence Map:" << QKeySequence(symbol); - qDebug() << " - Not implemented yet"; - } - return Qt::Key_unknown; -} - -NativeWindowSystem::MouseButton NativeWindowSystem::MouseToQt(int keycode){ - switch(keycode){ - case 1: - return NativeWindowSystem::LeftButton; - case 3: - return NativeWindowSystem::RightButton; - case 2: - return NativeWindowSystem::MidButton; - case 4: - return NativeWindowSystem::WheelUp; - case 5: - return NativeWindowSystem::WheelDown; - case 6: - return NativeWindowSystem::WheelLeft; - case 7: - return NativeWindowSystem::WheelRight; - case 8: - return NativeWindowSystem::BackButton; //Not sure if this is correct yet (1/27/17) - case 9: - return NativeWindowSystem::ForwardButton; //Not sure if this is correct yet (1/27/17) - default: - return NativeWindowSystem::NoButton; - } -} - // === PRIVATE === NativeWindow* NativeWindowSystem::findWindow(WId id, bool checkRelated){ //qDebug() << "Find Window:" << id; @@ -877,14 +772,15 @@ void NativeWindowSystem::GotPong(WId id){ void NativeWindowSystem::NewKeyPress(int keycode, WId win){ emit NewInputEvent(); if(screenLocked){ return; } - KeycodeToQt(keycode); - emit KeyPressDetected(win, keycode); + Qt::Key key = KeycodeToQt(keycode); + if(key!=Qt::Key_unknown){ emit KeyPressDetected(win, key); } } void NativeWindowSystem::NewKeyRelease(int keycode, WId win){ emit NewInputEvent(); if(screenLocked){ return; } - emit KeyReleaseDetected(win, keycode); + Qt::Key key = KeycodeToQt(keycode); + if(key!=Qt::Key_unknown){ emit KeyReleaseDetected(win, key); } } void NativeWindowSystem::NewMousePress(int buttoncode, WId win){ diff --git a/src-qt5/core/libLumina/NativeWindowSystem.h b/src-qt5/core/libLumina/NativeWindowSystem.h index 008a204f..97208c2f 100644 --- a/src-qt5/core/libLumina/NativeWindowSystem.h +++ b/src-qt5/core/libLumina/NativeWindowSystem.h @@ -128,8 +128,8 @@ signals: void NewWindowAvailable(NativeWindow*); void NewTrayWindowAvailable(NativeWindow*); void NewInputEvent(); //a mouse or keypress was detected (lock-state independent); - void KeyPressDetected(WId, int); //only emitted if lockstate = false - void KeyReleaseDetected(WId, int); //only emitted if lockstate = false + void KeyPressDetected(WId, Qt::Key); //only emitted if lockstate = false + void KeyReleaseDetected(WId, Qt::Key); //only emitted if lockstate = false void MousePressDetected(WId, NativeWindowSystem::MouseButton); //only emitted if lockstate = false void MouseReleaseDetected(WId, NativeWindowSystem::MouseButton); //only emitted if lockstate = false diff --git a/src-qt5/core/lumina-desktop-unified/LSession.cpp b/src-qt5/core/lumina-desktop-unified/LSession.cpp index 88660ed8..9c45b12c 100644 --- a/src-qt5/core/lumina-desktop-unified/LSession.cpp +++ b/src-qt5/core/lumina-desktop-unified/LSession.cpp @@ -253,8 +253,8 @@ void LSession::setupGlobalConnections(){ connect(Lumina::SS, SIGNAL(LockStatusChanged(bool)), Lumina::NWS, SLOT(ScreenLockChanged(bool)) ); //Mouse/Keyboard Shortcut Events (Make sure to connect to the NWS - the raw events need to be ignored sometimes) - connect(Lumina::NWS, SIGNAL(KeyPressDetected(WId, int)), Lumina::SHORTCUTS, SLOT(KeyPress(WId, Qt::Key)) ); - connect(Lumina::NWS, SIGNAL(KeyReleaseDetected(WId, int)), Lumina::SHORTCUTS, SLOT(KeyRelease(WId, Qt::Key)) ); + connect(Lumina::NWS, SIGNAL(KeyPressDetected(WId, Qt::Key)), Lumina::SHORTCUTS, SLOT(KeyPress(WId, Qt::Key)) ); + connect(Lumina::NWS, SIGNAL(KeyReleaseDetected(WId, Qt::Key)), Lumina::SHORTCUTS, SLOT(KeyRelease(WId, Qt::Key)) ); connect(Lumina::NWS, SIGNAL(MousePressDetected(WId, NativeWindowSystem::MouseButton)), Lumina::SHORTCUTS, SLOT(MousePress(WId, NativeWindowSystem::MouseButton)) ); connect(Lumina::NWS, SIGNAL(MouseReleaseDetected(WId, NativeWindowSystem::MouseButton)), Lumina::SHORTCUTS, SLOT(MouseRelease(WId, NativeWindowSystem::MouseButton)) ); -- cgit From 2d871ef9a9b5a5b6db5a6b51a64380a27aa2461f Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Sat, 8 Jul 2017 12:12:00 -0400 Subject: De-activate the volume reset on logout, and remove an old class/files from the Lumina2 project. --- src-qt5/core/lumina-desktop-unified/LSession.cpp | 5 +- .../src-events/LXcbEventFilter.cpp | 500 --------------------- .../src-events/LXcbEventFilter.h | 151 ------- 3 files changed, 4 insertions(+), 652 deletions(-) delete mode 100644 src-qt5/core/lumina-desktop-unified/src-events/LXcbEventFilter.cpp delete mode 100644 src-qt5/core/lumina-desktop-unified/src-events/LXcbEventFilter.h (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-desktop-unified/LSession.cpp b/src-qt5/core/lumina-desktop-unified/LSession.cpp index 9c45b12c..2155a8b7 100644 --- a/src-qt5/core/lumina-desktop-unified/LSession.cpp +++ b/src-qt5/core/lumina-desktop-unified/LSession.cpp @@ -27,6 +27,9 @@ LShortcutEvents* Lumina::SHORTCUTS = 0; LSession::LSession(int &argc, char ** argv) : LSingleApplication(argc, argv, "lumina-desktop-unified"){ //Initialize the global objects to null pointers + qRegisterMetaType< Qt::Key >("Qt::Key"); + qRegisterMetaType< NativeWindow::Property >("NativeWindow::Property"); + mediaObj = 0; //private object used for playing login/logout chimes if(this->isPrimaryProcess()){ //Setup the global registrations @@ -187,7 +190,7 @@ void LSession::CleanupSession(){ //Create a temporary flag to prevent crash dialogs from opening during cleanup LUtils::writeFile("/tmp/.luminastopping",QStringList() << "yes", true); //Start the logout chimes (if necessary) - LOS::setAudioVolume( LOS::audioVolume() ); //make sure the audio volume is saved in the backend for the next login + //LOS::setAudioVolume( LOS::audioVolume() ); //make sure the audio volume is saved in the backend for the next login bool playaudio = DesktopSettings::instance()->value(DesktopSettings::Session,"PlayLogoutAudio",true).toBool(); if( playaudio ){ playAudioFile(LOS::LuminaShare()+"Logout.ogg"); } //Now perform any other cleanup diff --git a/src-qt5/core/lumina-desktop-unified/src-events/LXcbEventFilter.cpp b/src-qt5/core/lumina-desktop-unified/src-events/LXcbEventFilter.cpp deleted file mode 100644 index 7031f3df..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-events/LXcbEventFilter.cpp +++ /dev/null @@ -1,500 +0,0 @@ -//=========================================== -// Lumina-desktop source code -// Copyright (c) 2015-2017, Ken Moore -// Available under the 3-clause BSD license -// See the LICENSE file for full details -//=========================================== -#include "LXcbEventFilter.h" - -#include -#include - -//================================================== -// NOTE: All the XCB interactions and atoms are accessed via: -// obj->XCB->EWMH.(atom name) -// obj->XCB->(do something) -//================================================== -#include "global-objects.h" - -//SYSTEM TRAY STANDARD DEFINITIONS -#define SYSTEM_TRAY_REQUEST_DOCK 0 -#define SYSTEM_TRAY_BEGIN_MESSAGE 1 -#define SYSTEM_TRAY_CANCEL_MESSAGE 2 - -#include - -#define DEBUG 0 - -// Also keep the root window/screen around for use in the filters -namespace L_XCB{ - xcb_screen_t *root_screen; - xcb_window_t root; -} - -//Constructor for the Event Filter wrapper -EventFilter::EventFilter() : QObject(){ - XCB = new LXCB(); - EF = new XCBEventFilter(this); - L_XCB::root_screen = xcb_aux_get_screen(QX11Info::connection(), QX11Info::appScreen()); - L_XCB::root = L_XCB::root_screen->root; - WMFlag = 0; -} - -void EventFilter::start(){ - if(DEBUG){ qDebug() << " - Install event filter..."; } - QCoreApplication::instance()->installNativeEventFilter(EF); - if(DEBUG){ qDebug() << " - Run request check..."; } - if(!XCB->setupEventsForRoot()){ - qCritical() << "[ERROR] Unable to setup WM event retrieval. Is another WM running?"; - exit(1); - } - if(DEBUG){ qDebug() << " - Create WM ID Window"; } - WMFlag = XCB->WM_CreateWindow(); - 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(EF)->startSystemTray(); - - QCoreApplication::instance()->flush(); -} - -void EventFilter::stop(){ - static_cast(EF)->stopSystemTray(); -} - -//Session Interaction/Information -QList EventFilter::currentTrayApps(){ - return static_cast(EF)->trayApps(); -} - -unsigned int EventFilter::currentWorkspace(){ -return XCB->CurrentWorkspace(); -} - -QList EventFilter::currentWindows(){ - return static_cast(EF)->windowList(); -} - -// === PUBLIC SLOTS === -void EventFilter::RegisterVirtualRoot(WId id){ - XCB->WM_Set_Virtual_Roots( QList() << 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 -//============================= - -//Constructor for the XCB event filter -XCBEventFilter::XCBEventFilter(EventFilter *parent) : QAbstractNativeEventFilter(){ - obj = parent; - SystemTrayID = 0; - TrayDmgID = 0; - InitAtoms(); -} - -void XCBEventFilter::InitAtoms(){ - //Initialize any special atoms that we need to save/use regularly - //NOTE: All the EWMH atoms are already saved globally in obj->XCB->EWMH - WinNotifyAtoms.clear(); - WinNotifyAtoms << obj->XCB->EWMH._NET_WM_NAME \ - << obj->XCB->EWMH._NET_WM_VISIBLE_NAME \ - << obj->XCB->EWMH._NET_WM_ICON_NAME \ - << obj->XCB->EWMH._NET_WM_VISIBLE_ICON_NAME \ - << obj->XCB->EWMH._NET_WM_ICON \ - << obj->XCB->EWMH._NET_WM_ICON_GEOMETRY; - - SysNotifyAtoms.clear(); - SysNotifyAtoms << obj->XCB->EWMH._NET_CLIENT_LIST \ - << obj->XCB->EWMH._NET_CLIENT_LIST_STACKING \ - << obj->XCB->EWMH._NET_CURRENT_DESKTOP \ - << obj->XCB->EWMH._NET_WM_STATE \ - << obj->XCB->EWMH._NET_ACTIVE_WINDOW \ - << obj->XCB->EWMH._NET_WM_ICON \ - << obj->XCB->EWMH._NET_WM_ICON_GEOMETRY; - - //_NET_SYSTEM_TRAY_OPCODE - xcb_intern_atom_cookie_t cookie = xcb_intern_atom(QX11Info::connection(), 0, 23,"_NET_SYSTEM_TRAY_OPCODE"); - xcb_intern_atom_reply_t *r = xcb_intern_atom_reply(QX11Info::connection(), cookie, NULL); - if(r){ - _NET_SYSTEM_TRAY_OPCODE = r->atom; - free(r); - } -} - -//This function format taken directly from the Qt5.3 documentation -bool XCBEventFilter::nativeEventFilter(const QByteArray &eventType, void *message, long *){ - //if(stopping){ return false; } //don't do any parsing - //qDebug() << "New Event"; - bool stopevent = false; - if(eventType=="xcb_generic_event_t"){ - //Convert to known event type (for X11 systems) - xcb_generic_event_t *ev = static_cast(message); - //Now parse the event and emit signals as necessary - switch( ev->response_type & ~0x80){ -//============================== -// INTERACTIVITY EVENTS -//============================== - case XCB_KEY_PRESS: - //This is a keyboard key press - //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"; - 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; - case XCB_BUTTON_PRESS: - //This is a mouse button press - qDebug() << "Button Press Event"; - stopevent = BlockInputEvent( ((xcb_button_press_event_t *) ev)->root ); //use the main "root" window - not the child widget - if(!stopevent){ - //Activate the window right now if needed - obj->emit MousePressed( InputWindow(((xcb_button_press_event_t *) ev)->root), MouseKey(((xcb_key_press_event_t *) ev)->detail) ); - if(obj->XCB->WM_Get_Active_Window()!=((xcb_button_press_event_t *) ev)->root){ - obj->XCB->WM_Set_Active_Window( ((xcb_button_press_event_t *) ev)->root); - } - } - break; - case XCB_BUTTON_RELEASE: - //This is a mouse button release - qDebug() << "Button Release Event"; - //xcb_button_release_event_t *tmp = (xcb_button_release_event_t *)ev; - stopevent = BlockInputEvent( ((xcb_button_release_event_t *) ev)->root ); //use the main "root" window - not the child widget - if(!stopevent){ obj->emit MouseReleased( InputWindow(((xcb_button_release_event_t *) ev)->root), MouseKey(((xcb_key_press_event_t *) ev)->detail) ); } - break; - case XCB_MOTION_NOTIFY: - //This is a mouse movement event - //qDebug() << "Motion Notify Event"; - stopevent = BlockInputEvent( ((xcb_motion_notify_event_t *) ev)->root ); //use the main "root" window - not the child widget); - break; - case XCB_ENTER_NOTIFY: - //This is a mouse movement event when mouse goes over a new window - //qDebug() << "Enter Notify Event"; - stopevent = BlockInputEvent( ((xcb_enter_notify_event_t *) ev)->root ); - break; - case XCB_LEAVE_NOTIFY: - //This is a mouse movement event when mouse goes leaves a window - //qDebug() << "Leave Notify Event"; - stopevent = BlockInputEvent(); - break; -//============================== - case XCB_EXPOSE: - //qDebug() << "Expose Notify Event:"; - //qDebug() << " - Given Window:" << ((xcb_property_notify_event_t*)ev)->window; - 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; iid() == ((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"; - SetupNewWindow( ((xcb_map_request_event_t *) ev) ); - break; -//============================== - case XCB_CREATE_NOTIFY: - //qDebug() << "Window Create Event"; - break; -//============================== - case XCB_UNMAP_NOTIFY: - //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; iid() == ((xcb_unmap_notify_event_t *)ev)->window){ windows[i]->setProperty(NativeWindow::Visible, false); break; } - } - break; -//============================== - case XCB_DESTROY_NOTIFY: - //qDebug() << "Window Closed Event:" << ((xcb_destroy_notify_event_t *)ev)->window; - if( !rmTrayApp( ((xcb_destroy_notify_event_t *) ev)->window ) ){ - //qDebug() <<" - Non-tray window"; - for(int i=0; iid() == ((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; -//============================== - case XCB_FOCUS_IN: - //qDebug() << "Focus In Event:"; - break; -//============================== - case XCB_FOCUS_OUT: - //qDebug() << "Focus Out Event:"; - break; -//============================== - case XCB_PROPERTY_NOTIFY: - //qDebug() << "Property Notify Event:"; - ParsePropertyEvent((xcb_property_notify_event_t*)ev); - break; -//============================== - case XCB_CLIENT_MESSAGE: - //qDebug() << "Client Message Event"; - //qDebug() << " - Given Window:" << ((xcb_client_message_event_t*)ev)->window; - if( ((xcb_client_message_event_t*)ev)->type == _NET_SYSTEM_TRAY_OPCODE && ((xcb_client_message_event_t*)ev)->format == 32){ - //data32[0] is timestamp, [1] is opcode, [2] is window handle - if(SYSTEM_TRAY_REQUEST_DOCK == ((xcb_client_message_event_t*)ev)->data.data32[1]){ - addTrayApp( ((xcb_client_message_event_t*)ev)->data.data32[2] ); - } - //Ignore the System Tray messages at the moment - - } - break; -//============================== - case XCB_CONFIGURE_NOTIFY: - //qDebug() << "Configure Notify Event"; - break; -//============================== - case XCB_CONFIGURE_REQUEST: - //qDebug() << "Configure Request Event"; - break; -//============================== - case XCB_SELECTION_CLEAR: - //qDebug() << "Selection Clear Event"; - break; -//============================== - case 85: //not sure what event this is - but it seems to come up very often (just hide the notice) - case 0: - case XCB_GE_GENERIC: - break; //generic event - don't do anything special - default: - //if( (ev->response_type & ~0x80)==TrayDmgID){ - checkDamageID( ((xcb_damage_notify_event_t*)ev)->drawable ); - //}else{ - qDebug() << "Default Event:" << (ev->response_type & ~0x80); - //} -//============================== - } - } - return false; - //never stop event handling (this will not impact the X events themselves - just the internal screensaver/WM/widgets) -} - -//System Tray Functions -QList XCBEventFilter::trayApps(){ - //return the list of all current tray apps - //Check the validity of all the current tray apps (make sure nothing closed erratically) - for(int i=0; iXCB->WindowClass(RunningTrayApps[i]).isEmpty()){ - obj->emit Tray_AppClosed(RunningTrayApps.takeAt(i) ); - i--; - } - } - return RunningTrayApps; -} - -bool XCBEventFilter::startSystemTray(){ - if(SystemTrayID != 0){ return true; } //already started - RunningTrayApps.clear(); //nothing running yet - SystemTrayID = obj->XCB->startSystemTray(0); - if(SystemTrayID!=0){ - obj->XCB->SelectInput(SystemTrayID); //make sure TrayID events get forwarded here - TrayDmgID = obj->XCB->GenerateDamageID(SystemTrayID); - qDebug() << "System Tray Started Successfully"; - if(DEBUG){ qDebug() << " - System Tray Flags:" << TrayDmgID; } - } - return (SystemTrayID!=0); -} - -bool XCBEventFilter::stopSystemTray(){ - if(SystemTrayID==0){ return true; } //already stopped - qDebug() << "Stopping system tray..."; - //Close all the running Tray Apps - QList tmpApps = RunningTrayApps; - //RunningTrayApps.clear(); //clear this ahead of time so tray's do not attempt to re-access the apps - //Close all the running tray apps - for(int i=0; iXCB->WindowClass(tmpApps[i]); - //Tray apps are special and closing the window does not close the app - obj->XCB->KillClient(tmpApps[i]); - } - //Now close down the tray backend - obj->XCB->closeSystemTray(SystemTrayID); - SystemTrayID = 0; - TrayDmgID = 0; - return true; -} - -QList XCBEventFilter::windowList(){ - return windows; -} - -//========= -// PRIVATE -//========= -bool XCBEventFilter::BlockInputEvent(WId){ - //Checks the current state of the WM and sets the stop flag as needed - // - Always let the screensaver know about the event first (need to reset timers and such) - obj->emit NewInputEvent(); - // - Check the state of the screensaver - if(Lumina::SS->isLocked()){ qDebug() << "SS Locked"; return true; } - // - Check the state of any fullscreen apps - /*else if( win!=0 && !obj->FS_WINS.isEmpty()){ - if(!obj->FS_WINS.contains(win) ){ - //If this event is for an app underneath a fullscreen window - stop it - if(obj->FS_WINS.length() == QApplication::desktop()->screenCount()){ qDebug() << "Screens Covered"; return true; } //all screens covered right now - } - }*/ - return false; -} - -WId XCBEventFilter::InputWindow(WId win){ - //check window and see if it is a desktop/root window (return 0) or an external app window - if(win == L_XCB::root){ return 0; } - QString cl = obj->XCB->WindowClass(win); - qDebug() << "Got Input Event on window:" << cl; - if(cl.toLower()=="lumina-desktop"){ return 0; } - return win; //external app window -} - -Lumina::MouseButton XCBEventFilter::MouseKey(int keycode){ - switch(keycode){ - case 1: - return Lumina::LeftButton; - case 3: - return Lumina::RightButton; - case 2: - return Lumina::MidButton; - case 4: - return Lumina::WheelUp; - case 5: - return Lumina::WheelDown; - case 6: - return Lumina::WheelLeft; - case 7: - return Lumina::WheelRight; - case 8: - return Lumina::BackButton; //Not sure if this is correct yet (1/27/17) - case 9: - return Lumina::ForwardButton; //Not sure if this is correct yet (1/27/17) - default: - return Lumina::NoButton; - } -} - -//System Tray functions -void XCBEventFilter::addTrayApp(WId win){ - if(SystemTrayID==0){ return; } - if(RunningTrayApps.contains(win)){ return; } //already managed - qDebug() << "Session Tray: Window Added" << obj->XCB->WindowClass(win); - RunningTrayApps << win; - if(DEBUG){ qDebug() << "Tray List Changed"; } - obj->emit Tray_AppAdded(win); -} - -bool XCBEventFilter::rmTrayApp(WId win){ - //returns "true" if the tray app was found and removed - if(SystemTrayID==0){ return false; } - for(int i=0; iemit Tray_AppClosed(win); - return true; - } - } - return false; -} - -void XCBEventFilter::checkDamageID(WId id){ - if(RunningTrayApps.contains(id)){ - obj->emit Tray_AppUpdated(id); - }else{ - //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; iid() == 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 deleted file mode 100644 index 9f2530e8..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-events/LXcbEventFilter.h +++ /dev/null @@ -1,151 +0,0 @@ -//=========================================== -// Lumina-DE source code -// Copyright (c) 2012-2017, Ken Moore -// Available under the 3-clause BSD license -// See the LICENSE file for full details -//=========================================== -// This class provides the XCB event handling/registrations that are needed -//=========================================== -#ifndef _LUMINA_DESKTOP_XCB_FILTER_H -#define _LUMINA_DESKTOP_XCB_FILTER_H - -#include "global-includes.h" - - -/* -List of XCB response types (since almost impossible to find good docs on XCB) -switch (xcb_generic_event_t*->response_type & ~0x80) -case values: -XCB_KEY_[PRESS | RELEASE] -XCB_BUTTON_[PRESS | RELEASE] -XCB_MOTION_NOTIFY -XCB_ENTER_NOTIFY -XCB_LEAVE_NOTIFY -XCB_FOCUS_[IN | OUT] -XCB_KEYMAP_NOTIFY -XCB_EXPOSE -XCB_GRAPHICS_EXPOSURE -XCB_VISIBILITY_NOTIFY -XCB_CREATE_NOTIFY -XCB_DESTROY_NOTIFY -XCB_UNMAP_NOTIFY -XCB_MAP_[NOTIFY | REQUEST] -XCB_REPARENT_NOTIFY -XCB_CONFIGURE_[NOTIFY | REQUEST] -XCB_GRAVITY_NOTIFY -XCB_RESIZE_REQUEST -XCB_CIRCULATE_[NOTIFY | REQUEST] -XCB_PROPERTY_NOTIFY -XCB_SELECTION_[CLEAR | REQUEST | NOTIFY] -XCB_COLORMAP_NOTIFY -XCB_CLIENT_MESSAGE -*/ - - -class EventFilter : public QObject{ - Q_OBJECT -private: - QAbstractNativeEventFilter* EF; - WId WMFlag; //used to flag a running WM process - -public: - EventFilter(); - ~EventFilter(){} - - void start(); - void stop(); - - //Public System Tray Functions - QList currentTrayApps(); - - //Public Session Interaction Functions - unsigned int currentWorkspace(); - - //Public Window Management Lists - QList 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 WindowCreated(NativeWindow*); - - // Session Signals - void WorkspaceChanged(unsigned int); - - // System Tray Signals - void Tray_AppAdded(WId); //new tray app registered - void Tray_AppClosed(WId); //tray app de-registered - void Tray_AppUpdated(WId); //tray app appearance changed (damage event) - // Shortcut Signals - void KeyPressed(WId, int); - void KeyReleased(WId, int); - void MousePressed(WId, Lumina::MouseButton); - void MouseReleased(WId, Lumina::MouseButton); -}; - -class XCBEventFilter : public QAbstractNativeEventFilter{ -public: - XCBEventFilter(EventFilter *parent); - ~XCBEventFilter(){} - - virtual bool nativeEventFilter(const QByteArray &eventType, void *message, long *); - - //System Tray Functions - QList trayApps(); //return the list of all current tray apps - bool startSystemTray(); - bool stopSystemTray(); - - //Window List Functions - QList windowList(); - -private: - EventFilter *obj; - QList WinNotifyAtoms, SysNotifyAtoms; - xcb_atom_t _NET_SYSTEM_TRAY_OPCODE; - void InitAtoms(); - - bool BlockInputEvent(WId win = 0); //Checks the current state of the system to see if the event should be stopped - WId InputWindow(WId win = 0); //Checks the window ID and determines if this is an external window or returns 0 (for desktop/root windows) - Lumina::MouseButton MouseKey(int keycode); //convert the keycode into the mouse button code - - - //System Tray Variables - WId SystemTrayID; - int TrayDmgID; - QList RunningTrayApps; - //System Tray functions - void addTrayApp(WId); - bool rmTrayApp(WId); //returns "true" if the tray app was found and removed - void checkDamageID(WId); - - //Window List Variables - QList windows; - QList waitingToShow; - - //Longer Event handling functions - void SetupNewWindow(xcb_map_request_event_t *ev); - - //bool ParseKeyPressEvent(); - //bool ParseKeyReleaseEvent(); - //bool ParseButtonPressEvent(); - //bool ParseButtonReleaseEvent(); - //bool ParseMotionEvent(); - void ParsePropertyEvent(xcb_property_notify_event_t *ev); - //bool ParseClientMessageEvent(); - //bool ParseDestroyEvent(); - //bool ParseConfigureEvent(); - //bool ParseKeySelectionClearEvent(); - - - - -}; - -#endif -- cgit From 39950f212465aad276ca3a650896a9aedfd78d75 Mon Sep 17 00:00:00 2001 From: Pavel Borecki Date: Tue, 11 Jul 2017 05:29:55 +0000 Subject: Translated using Weblate (Czech) Currently translated at 100.0% (18 of 18 strings) --- src-qt5/core/lumina-info/i18n/lumina-info_cs.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_cs.ts b/src-qt5/core/lumina-info/i18n/lumina-info_cs.ts index 302d5c8c..923e27a1 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_cs.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_cs.ts @@ -16,12 +16,12 @@ Source Repository - Zdrojový repozitář + Repozitář se zdrojovými kódy Lumina Website - Stránky projektu Lumina + Webové stránky projektu Lumina @@ -36,7 +36,7 @@ OS Build: - Sestavení OS: + Sestavení operačního systému: -- cgit From 3d85c77496cade7e9792e3624ad3fdbd4eb21146 Mon Sep 17 00:00:00 2001 From: Pavel Borecki Date: Mon, 10 Jul 2017 17:51:25 +0000 Subject: Translated using Weblate (Czech) Currently translated at 100.0% (7 of 7 strings) --- src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_cs.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_cs.ts b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_cs.ts index 702dbf0d..d776e7fd 100644 --- a/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_cs.ts +++ b/src-qt5/core/lumina-wm-INCOMPLETE/i18n/lumina-wm_cs.ts @@ -21,7 +21,7 @@ Locked by: %1 - Zamknuto: %1 + Zamknuto uživatelem: %1 -- cgit From 95f2e1beb71381d9404ee4a99c190a6d3516fa54 Mon Sep 17 00:00:00 2001 From: Pavel Borecki Date: Sun, 9 Jul 2017 20:04:03 +0000 Subject: Translated using Weblate (Czech) Currently translated at 100.0% (325 of 325 strings) --- .../core/lumina-desktop/i18n/lumina-desktop_cs.ts | 120 ++++++++++----------- 1 file changed, 60 insertions(+), 60 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_cs.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_cs.ts index dba12979..8b266457 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_cs.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_cs.ts @@ -6,7 +6,7 @@ Click to assign an application - Klepnutím vyberte aplikaci + Klepnutím přiřaďte aplikaci @@ -26,7 +26,7 @@ Name: - Jméno: + Název: @@ -35,7 +35,7 @@ Click to Set - Klepnutím nastavit + Nastavte kliknutím @@ -196,7 +196,7 @@ Starting the Lumina Desktop... - Spouští se prostředí Lumina... + Spouští se prostředí Lumina… @@ -206,17 +206,17 @@ This desktop is powered by coffee, coffee, and more coffee. - Toto prostředí pohání cukr, káva a další káva. + Toto prostředí je poháněno kávou, kávou a ještě další kávou. Keep up with desktop news! - Posílejte nám zprávy o prostředí! + Dostávat zprávy novinkách v prostředí! There is a full handbook of information about the desktop available online. - Na internetu je úplná příručka se spoustou údajů o prostředí. + Na webových stránkách projektu je k dispozici podrobná příručka se spoustou informací o prostředí. @@ -231,7 +231,7 @@ This desktop is generously sponsored by iXsystems - Toto prostředí je laskavě podporováno a penězi zaštiťováno podnikem iXsystems + Toto prostředí je laskavě podporováno a penězi zaštiťováno společností iXsystems @@ -251,12 +251,12 @@ Before God we are all equally wise - and equally foolish. - Před Bohem jsme všichni rozumní stejně - a stejně nerozumní. + Před Bohem jsme všichni rozumní stejně – a stejně nerozumní. We cannot do everything at once, but we can do something at once. - Nemůžeme všechno udělat zaráz, něco však můžeme provést najednou. + Nemůžeme udělat všechno najednou, najednou však můžeme něco udělat. @@ -266,7 +266,7 @@ Don't expect to build up the weak by pulling down the strong. - Neočekávej, že povzbudíš slabé, tím že dolů stáhneš silné. + Neočekávej že povzbudíš slabé tím že dolů stáhneš silné. @@ -286,22 +286,22 @@ Never trust a computer you can’t throw out a window. - Počítačníku, nikdy nevěř počítači, který nemůžeš vyhodit z okna. + Nikdy nevěř počítači, který nemůžeš vyhodit z okna. Study the past if you would define the future. - Uč se z minulosti, jestli chceš určit, jak bude vypadat budoucnost. + Uč se z minulosti, pokud chceš určovat jak bude vypadat budoucnost. The way to get started is to quit talking and begin doing. - Cestou, jak začít, je přestat mluvit a začít dělat. + Cestou jak začít je přestat mluvit a začít dělat. Ask and it will be given to you; search, and you will find; knock and the door will be opened for you. - Požádej a bude ti dáno; hledej a nalezneš; klepej a dveře ti budou otevřeny. + Požádej a bude ti dáno; hledej a nalezneš; zaklepej a dveře ti budou otevřeny. @@ -316,7 +316,7 @@ It does not matter how slowly you go as long as you do not stop. - Nezáleží na tom, jak pomalu jdeš, dokud nezastavíš. + Nezáleží na tom jak pomalu jdeš – důležité je, že nezastavíš. @@ -346,12 +346,12 @@ Political correctness is tyranny with manners. - Politická správnost je útlak, který si našel své způsoby. + Politická korektnost je útlak honosící se vybranými způsoby. Only two things are infinite, the universe and human stupidity, and I'm not sure about the former. - Jen dvě věci jsou nekonečné, vesmír a lidská hloupost. A nejsem si jist, jak si mám vykládat to první. + Jen dvě věci jsou nekonečné – vesmír a lidská hloupost. Tím prvním si vlastně nejsem tak úplně jistý. @@ -386,7 +386,7 @@ Knowledge speaks, but wisdom listens. - Vědomost hovoří, ale moudrost poslouchá. + Vědomost hovoří, ale moudrost naslouchá. @@ -406,7 +406,7 @@ I have never let my schooling interfere with my education. - Nikdy jsem nenechal vzdělávání plést se do mého vzdělání. + Nikdy jsem nenechal školy plést se do mého vzdělání. @@ -436,52 +436,52 @@ Initializing Session … - Spouští se sezení… + Spouštění sezení… Loading System Settings … - Nahrává se nastavení systému… + Načítání nastavení systému… Loading User Preferences … - Nahrává se uživatelské nastavení… + Načítání nastavení uživatele… Preparing System Tray … - Připravuje se oznamovací oblast panelu… + Příprava oznamovací oblasti systémového panelu… Starting Window Manager … - Spouští se správce oken… + Spouštění správce oken… Detecting Applications … - Zjišťují se aplikace… + Zjišťování aplikací… Preparing Menus … - Připravují se nabídky… + Příprava nabídek… Preparing Workspace … - Připravuje se pracovní plocha… + Příprava pracovní plochy… Finalizing … - Dokončuje se… + Dokončování… Starting App: %1 - Spouští se aplikace: %1 + Spouštění aplikace: %1 @@ -547,12 +547,12 @@ Remove from Quicklaunch - Odebrat z rychlého spuštění + Odebrat z rychlého spouštění Add to Quicklaunch - Přidat do rychlého spuštění + Přidat do rychlého spouštění @@ -861,7 +861,7 @@ System Dashboard - Palubní deska systému + Přehled o systému @@ -879,7 +879,7 @@ Launch Audio Mixer - Spustit Audio Mixer + Spustit směšovač zvuku @@ -889,7 +889,7 @@ Battery Status - Stav baterie + Stav akumulátoru @@ -899,7 +899,7 @@ Locale - Místní nastavení + Místní a jazyková nastavení @@ -985,22 +985,22 @@ CPU Temp: - Teplota CPU: + Teplota procesoru: CPU Usage: - Využití CPU: + Využití procesoru: Mem Usage: - Využití paměti: + Využití operační paměti: Disk I/O - Diskové I/O + Vst./výst. datového úložiště @@ -1023,17 +1023,17 @@ Name: - Jméno: + Název: Invalid Note Name: Try Again - Neplatný název poznámky: Zkuste znovu + Neplatný název poznámky: Zkuste to znovu Select a Note Name - Vyberte jméno poznámky + Vyberte název poznámky @@ -1081,12 +1081,12 @@ Add Directory - Přidat adresář + Přidat složku Add URL - Přidat adresu (URL) + Přidat URL adresu @@ -1101,17 +1101,17 @@ Select Multimedia Directory - Vyberte adresář s multimediálními soubory + Vyberte složku s multimediálními soubory Enter a valid URL for a multimedia file or stream: - Zadejte platnou adresu (URL) pro multimediální soubor nebo proud: + Zadejte platnou URL adresu multimediálního souboru nebo proudu: Multimedia URL - Adresa (URL) multimédia + URL adresa multimédia @@ -1139,12 +1139,12 @@ Add Directory - Přidat adresář + Přidat složku Add URL - Přidat adresu (URL) + Přidat URL adresu @@ -1159,17 +1159,17 @@ Select Multimedia Directory - Zvolte adresář s multimédii + Zvolte složku s multimédii Enter a valid URL for a multimedia file or stream: - Zadejte platnou adresu (URL) pro multimediální soubor nebo proud: + Zadejte platnou URL adresu multimediálního souboru nebo proudu: Multimedia URL - Adresa (URL) multimédia + URL adresa multimédia @@ -1187,7 +1187,7 @@ Open Website - Otevřít internetovou stránku + Otevřít webovou stránku @@ -1239,7 +1239,7 @@ Manual Sync Only - Pouze ruční seřízení + Pouze ruční synchronizace @@ -1249,7 +1249,7 @@ Default Sync Interval - Výchozí seřizovací interval + Výchozí interval synchronizace @@ -1320,12 +1320,12 @@ Last Sync: %1 - Poslední seřízení: %1 + Poslední synchronizace: %1 Next Sync: %1 - Další seřízení: %1 + Příští synchronizace: %1 @@ -1441,7 +1441,7 @@ (System Performing Updates) - (aktualizace výkonu systému) + (systém instaluje aktualizace) @@ -1451,7 +1451,7 @@ Apply Updates? - Použít aktualizace? + Nainstalovat aktualizace? -- cgit From b24a038c5219853dd11a764e487b76a2bf9361b1 Mon Sep 17 00:00:00 2001 From: Pavel Borecki Date: Mon, 10 Jul 2017 19:11:18 +0000 Subject: Translated using Weblate (Czech) Currently translated at 100.0% (40 of 40 strings) --- src-qt5/core/lumina-open/i18n/lumina-open_cs.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_cs.ts b/src-qt5/core/lumina-open/i18n/lumina-open_cs.ts index 1b682b8e..6a32e742 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_cs.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_cs.ts @@ -51,7 +51,7 @@ (Email Link) - (Odkaz na e-mail) + (Poslat odkaz e-mailem) -- cgit From aec75b23b1471993287b2209d756d8b84efe22fa Mon Sep 17 00:00:00 2001 From: ZackaryWelch Date: Tue, 11 Jul 2017 11:33:44 -0400 Subject: Added more key support for Lumina 2.0 --- src-qt5/core/libLumina/NativeKeyToQt.cpp | 488 +++++++++++++++---------------- 1 file changed, 244 insertions(+), 244 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/NativeKeyToQt.cpp b/src-qt5/core/libLumina/NativeKeyToQt.cpp index b6af9b6c..06056be7 100644 --- a/src-qt5/core/libLumina/NativeKeyToQt.cpp +++ b/src-qt5/core/libLumina/NativeKeyToQt.cpp @@ -248,251 +248,251 @@ Qt::Key NativeWindowSystem::KeycodeToQt(int keycode){ case XK_braceright: return Qt::Key_BraceRight; case XK_asciitilde: return Qt::Key_AsciiTilde; - //case XK_nobreakspace 0x00a0 /* U+00A0 NO-BREAK SPACE */ - //case XK_exclamdown 0x00a1 /* U+00A1 INVERTED EXCLAMATION MARK */ - //case XK_cent 0x00a2 /* U+00A2 CENT SIGN */ - //case XK_sterling 0x00a3 /* U+00A3 POUND SIGN */ - //case XK_currency 0x00a4 /* U+00A4 CURRENCY SIGN */ - //case XK_yen 0x00a5 /* U+00A5 YEN SIGN */ - //case XK_brokenbar 0x00a6 /* U+00A6 BROKEN BAR */ - //case XK_section 0x00a7 /* U+00A7 SECTION SIGN */ - //case XK_diaeresis 0x00a8 /* U+00A8 DIAERESIS */ - //case XK_copyright 0x00a9 /* U+00A9 COPYRIGHT SIGN */ - //case XK_ordfeminine 0x00aa /* U+00AA FEMININE ORDINAL INDICATOR */ - //case XK_guillemotleft 0x00ab /* U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */ - //case XK_notsign 0x00ac /* U+00AC NOT SIGN */ - //case XK_hyphen 0x00ad /* U+00AD SOFT HYPHEN */ - //case XK_registered 0x00ae /* U+00AE REGISTERED SIGN */ - //case XK_macron 0x00af /* U+00AF MACRON */ - //case XK_degree 0x00b0 /* U+00B0 DEGREE SIGN */ - //case XK_plusminus 0x00b1 /* U+00B1 PLUS-MINUS SIGN */ - //case XK_twosuperior 0x00b2 /* U+00B2 SUPERSCRIPT TWO */ - //case XK_threesuperior 0x00b3 /* U+00B3 SUPERSCRIPT THREE */ - //case XK_acute 0x00b4 /* U+00B4 ACUTE ACCENT */ - //case XK_mu 0x00b5 /* U+00B5 MICRO SIGN */ - //case XK_paragraph 0x00b6 /* U+00B6 PILCROW SIGN */ - //case XK_periodcentered 0x00b7 /* U+00B7 MIDDLE DOT */ - //case XK_cedilla 0x00b8 /* U+00B8 CEDILLA */ - //case XK_onesuperior 0x00b9 /* U+00B9 SUPERSCRIPT ONE */ - //case XK_masculine 0x00ba /* U+00BA MASCULINE ORDINAL INDICATOR */ - //case XK_guillemotright 0x00bb /* U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */ - //case XK_onequarter 0x00bc /* U+00BC VULGAR FRACTION ONE QUARTER */ - //case XK_onehalf 0x00bd /* U+00BD VULGAR FRACTION ONE HALF */ - //case XK_threequarters 0x00be /* U+00BE VULGAR FRACTION THREE QUARTERS */ - //case XK_questiondown 0x00bf /* U+00BF INVERTED QUESTION MARK */ - //case XK_Agrave 0x00c0 /* U+00C0 LATIN CAPITAL LETTER A WITH GRAVE */ - //case XK_Aacute 0x00c1 /* U+00C1 LATIN CAPITAL LETTER A WITH ACUTE */ - //case XK_Acircumflex 0x00c2 /* U+00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX */ - //case XK_Atilde 0x00c3 /* U+00C3 LATIN CAPITAL LETTER A WITH TILDE */ - //case XK_Adiaeresis 0x00c4 /* U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS */ - //case XK_Aring 0x00c5 /* U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE */ - //case XK_AE 0x00c6 /* U+00C6 LATIN CAPITAL LETTER AE */ - //case XK_Ccedilla 0x00c7 /* U+00C7 LATIN CAPITAL LETTER C WITH CEDILLA */ - //case XK_Egrave 0x00c8 /* U+00C8 LATIN CAPITAL LETTER E WITH GRAVE */ - //case XK_Eacute 0x00c9 /* U+00C9 LATIN CAPITAL LETTER E WITH ACUTE */ - //case XK_Ecircumflex 0x00ca /* U+00CA LATIN CAPITAL LETTER E WITH CIRCUMFLEX */ - //case XK_Ediaeresis 0x00cb /* U+00CB LATIN CAPITAL LETTER E WITH DIAERESIS */ - //case XK_Igrave 0x00cc /* U+00CC LATIN CAPITAL LETTER I WITH GRAVE */ - //case XK_Iacute 0x00cd /* U+00CD LATIN CAPITAL LETTER I WITH ACUTE */ - //case XK_Icircumflex 0x00ce /* U+00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX */ - //case XK_Idiaeresis 0x00cf /* U+00CF LATIN CAPITAL LETTER I WITH DIAERESIS */ - //case XK_ETH 0x00d0 /* U+00D0 LATIN CAPITAL LETTER ETH */ - //case XK_Eth 0x00d0 /* deprecated */ - //case XK_Ntilde 0x00d1 /* U+00D1 LATIN CAPITAL LETTER N WITH TILDE */ - //case XK_Ograve 0x00d2 /* U+00D2 LATIN CAPITAL LETTER O WITH GRAVE */ - //case XK_Oacute 0x00d3 /* U+00D3 LATIN CAPITAL LETTER O WITH ACUTE */ - //case XK_Ocircumflex 0x00d4 /* U+00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX */ - //case XK_Otilde 0x00d5 /* U+00D5 LATIN CAPITAL LETTER O WITH TILDE */ - //case XK_Odiaeresis 0x00d6 /* U+00D6 LATIN CAPITAL LETTER O WITH DIAERESIS */ - //case XK_multiply 0x00d7 /* U+00D7 MULTIPLICATION SIGN */ - //case XK_Oslash 0x00d8 /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */ - //case XK_Ooblique 0x00d8 /* U+00D8 LATIN CAPITAL LETTER O WITH STROKE */ - //case XK_Ugrave 0x00d9 /* U+00D9 LATIN CAPITAL LETTER U WITH GRAVE */ - //case XK_Uacute 0x00da /* U+00DA LATIN CAPITAL LETTER U WITH ACUTE */ - //case XK_Ucircumflex 0x00db /* U+00DB LATIN CAPITAL LETTER U WITH CIRCUMFLEX */ - //case XK_Udiaeresis 0x00dc /* U+00DC LATIN CAPITAL LETTER U WITH DIAERESIS */ - //case XK_Yacute 0x00dd /* U+00DD LATIN CAPITAL LETTER Y WITH ACUTE */ - //case XK_THORN 0x00de /* U+00DE LATIN CAPITAL LETTER THORN */ - //case XK_Thorn 0x00de /* deprecated */ - //case XK_ssharp 0x00df /* U+00DF LATIN SMALL LETTER SHARP S */ - //case XK_agrave 0x00e0 /* U+00E0 LATIN SMALL LETTER A WITH GRAVE */ - //case XK_aacute 0x00e1 /* U+00E1 LATIN SMALL LETTER A WITH ACUTE */ - //case XK_acircumflex 0x00e2 /* U+00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX */ - //case XK_atilde 0x00e3 /* U+00E3 LATIN SMALL LETTER A WITH TILDE */ - //case XK_adiaeresis 0x00e4 /* U+00E4 LATIN SMALL LETTER A WITH DIAERESIS */ - //case XK_aring 0x00e5 /* U+00E5 LATIN SMALL LETTER A WITH RING ABOVE */ - //case XK_ae 0x00e6 /* U+00E6 LATIN SMALL LETTER AE */ - //case XK_ccedilla 0x00e7 /* U+00E7 LATIN SMALL LETTER C WITH CEDILLA */ - //case XK_egrave 0x00e8 /* U+00E8 LATIN SMALL LETTER E WITH GRAVE */ - //case XK_eacute 0x00e9 /* U+00E9 LATIN SMALL LETTER E WITH ACUTE */ - //case XK_ecircumflex 0x00ea /* U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX */ - //case XK_ediaeresis 0x00eb /* U+00EB LATIN SMALL LETTER E WITH DIAERESIS */ - //case XK_igrave 0x00ec /* U+00EC LATIN SMALL LETTER I WITH GRAVE */ - //case XK_iacute 0x00ed /* U+00ED LATIN SMALL LETTER I WITH ACUTE */ - //case XK_icircumflex 0x00ee /* U+00EE LATIN SMALL LETTER I WITH CIRCUMFLEX */ - //case XK_idiaeresis 0x00ef /* U+00EF LATIN SMALL LETTER I WITH DIAERESIS */ - //case XK_eth 0x00f0 /* U+00F0 LATIN SMALL LETTER ETH */ - //case XK_ntilde 0x00f1 /* U+00F1 LATIN SMALL LETTER N WITH TILDE */ - //case XK_ograve 0x00f2 /* U+00F2 LATIN SMALL LETTER O WITH GRAVE */ - //case XK_oacute 0x00f3 /* U+00F3 LATIN SMALL LETTER O WITH ACUTE */ - //case XK_ocircumflex 0x00f4 /* U+00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX */ - //case XK_otilde 0x00f5 /* U+00F5 LATIN SMALL LETTER O WITH TILDE */ - //case XK_odiaeresis 0x00f6 /* U+00F6 LATIN SMALL LETTER O WITH DIAERESIS */ - //case XK_division 0x00f7 /* U+00F7 DIVISION SIGN */ - //case XK_oslash 0x00f8 /* U+00F8 LATIN SMALL LETTER O WITH STROKE */ - //case XK_ooblique 0x00f8 /* U+00F8 LATIN SMALL LETTER O WITH STROKE */ - //case XK_ugrave 0x00f9 /* U+00F9 LATIN SMALL LETTER U WITH GRAVE */ - //case XK_uacute 0x00fa /* U+00FA LATIN SMALL LETTER U WITH ACUTE */ - //case XK_ucircumflex 0x00fb /* U+00FB LATIN SMALL LETTER U WITH CIRCUMFLEX */ - //case XK_udiaeresis 0x00fc /* U+00FC LATIN SMALL LETTER U WITH DIAERESIS */ - //case XK_yacute 0x00fd /* U+00FD LATIN SMALL LETTER Y WITH ACUTE */ - //case XK_thorn 0x00fe /* U+00FE LATIN SMALL LETTER THORN */ - //case XK_ydiaeresis 0x00ff /* U+00FF LATIN SMALL LETTER Y WITH DIAERESIS */ + case XK_nobreakspace: return Qt::Key_nobreakspace; + case XK_exclamdown: return Qt::Key_exclamdown; + case XK_cent: return Qt::Key_cent; + case XK_sterling: return Qt::Key_sterling; + case XK_currency: return Qt::Key_currency; + case XK_yen: return Qt::Key_yen; + case XK_brokenbar: return Qt::Key_brokenbar; + case XK_section: return Qt::Key_section; + case XK_diaeresis: return Qt::Key_diaeresis; + case XK_copyright: return Qt::Key_copyright; + case XK_ordfeminine: return Qt::Key_ordfeminine; + case XK_guillemotleft: return Qt::Key_guillemotleft; + case XK_notsign: return Qt::Key_notsign; + case XK_hyphen: return Qt::Key_hyphen; + case XK_registered: return Qt::Key_registered; + case XK_macron: return Qt::Key_macron; + case XK_degree: return Qt::Key_degree; + case XK_plusminus: return Qt::Key_plusminus; + case XK_twosuperior: return Qt::Key_twosuperior; + case XK_threesuperior: return Qt::Key_threesuperior; + case XK_acute: return Qt::Key_acute; + case XK_mu: return Qt::Key_mu; + case XK_paragraph: return Qt::Key_paragraph; + case XK_periodcentered: return Qt::Key_periodcentered; + case XK_cedilla: return Qt::Key_cedilla; + case XK_onesuperior: return Qt::Key_onesuperior; + case XK_masculine: return Qt::Key_masculine; + case XK_guillemotright: return Qt::Key_guillemotright; + case XK_onequarter: return Qt::Key_onequarter; + case XK_onehalf: return Qt::Key_onehalf; + case XK_threequarters: return Qt::Key_threequarters; + case XK_questiondown: return Qt::Key_questiondown; + case XK_Agrave: return Qt::Key_Agrave; + case XK_Aacute: return Qt::Key_Aacute; + case XK_Acircumflex: return Qt::Key_Acircumflex; + case XK_Atilde: return Qt::Key_Atilde; + case XK_Adiaeresis: return Qt::Key_Adiaeresis; + case XK_Aring: return Qt::Key_Aring; + case XK_AE: return Qt::Key_AE; + case XK_Ccedilla: return Qt::Key_Ccedilla; + case XK_Egrave: return Qt::Key_Egrave; + case XK_Eacute: return Qt::Key_Eacute; + case XK_Ecircumflex: return Qt::Key_Ecircumflex; + case XK_Ediaeresis: return Qt::Key_Ediaeresis; + case XK_Igrave: return Qt::Key_Igrave; + case XK_Iacute: return Qt::Key_Iacute; + case XK_Icircumflex: return Qt::Key_Icircumflex; + case XK_Idiaeresis: return Qt::Key_Idiaeresis; + case XK_ETH: return Qt::Key_ETH; + //case XK_Eth: return Qt::Key_Eth; + case XK_Ntilde: return Qt::Key_Ntilde; + case XK_Ograve: return Qt::Key_Ograve; + case XK_Oacute: return Qt::Key_Oacute; + case XK_Ocircumflex: return Qt::Key_Ocircumflex; + case XK_Otilde: return Qt::Key_Otilde; + case XK_Odiaeresis: return Qt::Key_Odiaeresis; + case XK_multiply: return Qt::Key_multiply; + //case XK_Oslash: return Qt::Key_AsciiTilde; + case XK_Ooblique: return Qt::Key_Ooblique; + case XK_Ugrave: return Qt::Key_Ugrave; + case XK_Uacute: return Qt::Key_Uacute; + case XK_Ucircumflex: return Qt::Key_Ucircumflex; + case XK_Udiaeresis: return Qt::Key_Udiaeresis; + case XK_Yacute: return Qt::Key_Yacute; + case XK_THORN: return Qt::Key_THORN; + //case XK_Thorn: return Qt::Key_AsciiTilde; + case XK_ssharp: return Qt::Key_ssharp; + /*case XK_agrave: return Qt::Key_AsciiTilde; + case XK_aacute: return Qt::Key_AsciiTilde; + case XK_acircumflex: return Qt::Key_AsciiTilde; + case XK_atilde: return Qt::Key_AsciiTilde; + case XK_adiaeresis: return Qt::Key_AsciiTilde; + case XK_aring: return Qt::Key_AsciiTilde; + case XK_ae: return Qt::Key_AsciiTilde; + case XK_ccedilla: return Qt::Key_AsciiTilde; + case XK_egrave: return Qt::Key_AsciiTilde; + case XK_eacute: return Qt::Key_AsciiTilde; + case XK_ecircumflex: return Qt::Key_AsciiTilde; + case XK_ediaeresis: return Qt::Key_AsciiTilde; + case XK_igrave: return Qt::Key_AsciiTilde; + case XK_iacute: return Qt::Key_AsciiTilde; + case XK_icircumflex: return Qt::Key_AsciiTilde; + case XK_idiaeresis: return Qt::Key_AsciiTilde; + case XK_eth: return Qt::Key_AsciiTilde; + case XK_ntilde: return Qt::Key_AsciiTilde; + case XK_ograve: return Qt::Key_AsciiTilde; + case XK_oacute: return Qt::Key_AsciiTilde; + case XK_ocircumflex: return Qt::Key_AsciiTilde; + case XK_otilde: return Qt::Key_AsciiTilde; + case XK_odiaeresis: return Qt::Key_AsciiTilde; + case XK_division: return Qt::Key_AsciiTilde; + case XK_oslash: return Qt::Key_AsciiTilde; + case XK_ooblique: return Qt::Key_AsciiTilde; + case XK_ugrave: return Qt::Key_AsciiTilde; + case XK_uacute: return Qt::Key_AsciiTilde; + case XK_ucircumflex: return Qt::Key_AsciiTilde; + case XK_udiaeresis: return Qt::Key_AsciiTilde; + case XK_yacute: return Qt::Key_AsciiTilde; + case XK_thorn: return Qt::Key_AsciiTilde; + case XK_ydiaeresis: return Qt::Key_AsciiTilde; - //case XK_Aogonek 0x01a1 /* U+0104 LATIN CAPITAL LETTER A WITH OGONEK */ - //case XK_breve 0x01a2 /* U+02D8 BREVE */ - //case XK_Lstroke 0x01a3 /* U+0141 LATIN CAPITAL LETTER L WITH STROKE */ - //case XK_Lcaron 0x01a5 /* U+013D LATIN CAPITAL LETTER L WITH CARON */ - //case XK_Sacute 0x01a6 /* U+015A LATIN CAPITAL LETTER S WITH ACUTE */ - //case XK_Scaron 0x01a9 /* U+0160 LATIN CAPITAL LETTER S WITH CARON */ - //case XK_Scedilla 0x01aa /* U+015E LATIN CAPITAL LETTER S WITH CEDILLA */ - //case XK_Tcaron 0x01ab /* U+0164 LATIN CAPITAL LETTER T WITH CARON */ - //case XK_Zacute 0x01ac /* U+0179 LATIN CAPITAL LETTER Z WITH ACUTE */ - //case XK_Zcaron 0x01ae /* U+017D LATIN CAPITAL LETTER Z WITH CARON */ - //case XK_Zabovedot 0x01af /* U+017B LATIN CAPITAL LETTER Z WITH DOT ABOVE */ - //case XK_aogonek 0x01b1 /* U+0105 LATIN SMALL LETTER A WITH OGONEK */ - //case XK_ogonek 0x01b2 /* U+02DB OGONEK */ - //case XK_lstroke 0x01b3 /* U+0142 LATIN SMALL LETTER L WITH STROKE */ - //case XK_lcaron 0x01b5 /* U+013E LATIN SMALL LETTER L WITH CARON */ - //case XK_sacute 0x01b6 /* U+015B LATIN SMALL LETTER S WITH ACUTE */ - //case XK_caron 0x01b7 /* U+02C7 CARON */ - //case XK_scaron 0x01b9 /* U+0161 LATIN SMALL LETTER S WITH CARON */ - //case XK_scedilla 0x01ba /* U+015F LATIN SMALL LETTER S WITH CEDILLA */ - //case XK_tcaron 0x01bb /* U+0165 LATIN SMALL LETTER T WITH CARON */ - //case XK_zacute 0x01bc /* U+017A LATIN SMALL LETTER Z WITH ACUTE */ - //case XK_doubleacute 0x01bd /* U+02DD DOUBLE ACUTE ACCENT */ - //case XK_zcaron 0x01be /* U+017E LATIN SMALL LETTER Z WITH CARON */ - //case XK_zabovedot 0x01bf /* U+017C LATIN SMALL LETTER Z WITH DOT ABOVE */ - //case XK_Racute 0x01c0 /* U+0154 LATIN CAPITAL LETTER R WITH ACUTE */ - //case XK_Abreve 0x01c3 /* U+0102 LATIN CAPITAL LETTER A WITH BREVE */ - //case XK_Lacute 0x01c5 /* U+0139 LATIN CAPITAL LETTER L WITH ACUTE */ - //case XK_Cacute 0x01c6 /* U+0106 LATIN CAPITAL LETTER C WITH ACUTE */ - //case XK_Ccaron 0x01c8 /* U+010C LATIN CAPITAL LETTER C WITH CARON */ - //case XK_Eogonek 0x01ca /* U+0118 LATIN CAPITAL LETTER E WITH OGONEK */ - //case XK_Ecaron 0x01cc /* U+011A LATIN CAPITAL LETTER E WITH CARON */ - //case XK_Dcaron 0x01cf /* U+010E LATIN CAPITAL LETTER D WITH CARON */ - //case XK_Dstroke 0x01d0 /* U+0110 LATIN CAPITAL LETTER D WITH STROKE */ - //case XK_Nacute 0x01d1 /* U+0143 LATIN CAPITAL LETTER N WITH ACUTE */ - //case XK_Ncaron 0x01d2 /* U+0147 LATIN CAPITAL LETTER N WITH CARON */ - //case XK_Odoubleacute 0x01d5 /* U+0150 LATIN CAPITAL LETTER O WITH DOUBLE ACUTE */ - //case XK_Rcaron 0x01d8 /* U+0158 LATIN CAPITAL LETTER R WITH CARON */ - //case XK_Uring 0x01d9 /* U+016E LATIN CAPITAL LETTER U WITH RING ABOVE */ - //case XK_Udoubleacute 0x01db /* U+0170 LATIN CAPITAL LETTER U WITH DOUBLE ACUTE */ - //case XK_Tcedilla 0x01de /* U+0162 LATIN CAPITAL LETTER T WITH CEDILLA */ - //case XK_racute 0x01e0 /* U+0155 LATIN SMALL LETTER R WITH ACUTE */ - //case XK_abreve 0x01e3 /* U+0103 LATIN SMALL LETTER A WITH BREVE */ - //case XK_lacute 0x01e5 /* U+013A LATIN SMALL LETTER L WITH ACUTE */ - //case XK_cacute 0x01e6 /* U+0107 LATIN SMALL LETTER C WITH ACUTE */ - //case XK_ccaron 0x01e8 /* U+010D LATIN SMALL LETTER C WITH CARON */ - //case XK_eogonek 0x01ea /* U+0119 LATIN SMALL LETTER E WITH OGONEK */ - //case XK_ecaron 0x01ec /* U+011B LATIN SMALL LETTER E WITH CARON */ - //case XK_dcaron 0x01ef /* U+010F LATIN SMALL LETTER D WITH CARON */ - //case XK_dstroke 0x01f0 /* U+0111 LATIN SMALL LETTER D WITH STROKE */ - //case XK_nacute 0x01f1 /* U+0144 LATIN SMALL LETTER N WITH ACUTE */ - //case XK_ncaron 0x01f2 /* U+0148 LATIN SMALL LETTER N WITH CARON */ - //case XK_odoubleacute 0x01f5 /* U+0151 LATIN SMALL LETTER O WITH DOUBLE ACUTE */ - //case XK_rcaron 0x01f8 /* U+0159 LATIN SMALL LETTER R WITH CARON */ - //case XK_uring 0x01f9 /* U+016F LATIN SMALL LETTER U WITH RING ABOVE */ - //case XK_udoubleacute 0x01fb /* U+0171 LATIN SMALL LETTER U WITH DOUBLE ACUTE */ - //case XK_tcedilla 0x01fe /* U+0163 LATIN SMALL LETTER T WITH CEDILLA */ - //case XK_abovedot 0x01ff /* U+02D9 DOT ABOVE */ - //case XK_Hstroke 0x02a1 /* U+0126 LATIN CAPITAL LETTER H WITH STROKE */ - //case XK_Hcircumflex 0x02a6 /* U+0124 LATIN CAPITAL LETTER H WITH CIRCUMFLEX */ - //case XK_Iabovedot 0x02a9 /* U+0130 LATIN CAPITAL LETTER I WITH DOT ABOVE */ - //case XK_Gbreve 0x02ab /* U+011E LATIN CAPITAL LETTER G WITH BREVE */ - //case XK_Jcircumflex 0x02ac /* U+0134 LATIN CAPITAL LETTER J WITH CIRCUMFLEX */ - //case XK_hstroke 0x02b1 /* U+0127 LATIN SMALL LETTER H WITH STROKE */ - //case XK_hcircumflex 0x02b6 /* U+0125 LATIN SMALL LETTER H WITH CIRCUMFLEX */ - //case XK_idotless 0x02b9 /* U+0131 LATIN SMALL LETTER DOTLESS I */ - //case XK_gbreve 0x02bb /* U+011F LATIN SMALL LETTER G WITH BREVE */ - //case XK_jcircumflex 0x02bc /* U+0135 LATIN SMALL LETTER J WITH CIRCUMFLEX */ - //case XK_Cabovedot 0x02c5 /* U+010A LATIN CAPITAL LETTER C WITH DOT ABOVE */ - //case XK_Ccircumflex 0x02c6 /* U+0108 LATIN CAPITAL LETTER C WITH CIRCUMFLEX */ - //case XK_Gabovedot 0x02d5 /* U+0120 LATIN CAPITAL LETTER G WITH DOT ABOVE */ - //case XK_Gcircumflex 0x02d8 /* U+011C LATIN CAPITAL LETTER G WITH CIRCUMFLEX */ - //case XK_Ubreve 0x02dd /* U+016C LATIN CAPITAL LETTER U WITH BREVE */ - //case XK_Scircumflex 0x02de /* U+015C LATIN CAPITAL LETTER S WITH CIRCUMFLEX */ - //case XK_cabovedot 0x02e5 /* U+010B LATIN SMALL LETTER C WITH DOT ABOVE */ - //case XK_ccircumflex 0x02e6 /* U+0109 LATIN SMALL LETTER C WITH CIRCUMFLEX */ - //case XK_gabovedot 0x02f5 /* U+0121 LATIN SMALL LETTER G WITH DOT ABOVE */ - //case XK_gcircumflex 0x02f8 /* U+011D LATIN SMALL LETTER G WITH CIRCUMFLEX */ - //case XK_ubreve 0x02fd /* U+016D LATIN SMALL LETTER U WITH BREVE */ - //case XK_scircumflex 0x02fe /* U+015D LATIN SMALL LETTER S WITH CIRCUMFLEX */ - //case XK_kra 0x03a2 /* U+0138 LATIN SMALL LETTER KRA */ - //case XK_kappa 0x03a2 /* deprecated */ - //case XK_Rcedilla 0x03a3 /* U+0156 LATIN CAPITAL LETTER R WITH CEDILLA */ - //case XK_Itilde 0x03a5 /* U+0128 LATIN CAPITAL LETTER I WITH TILDE */ - //case XK_Lcedilla 0x03a6 /* U+013B LATIN CAPITAL LETTER L WITH CEDILLA */ - //case XK_Emacron 0x03aa /* U+0112 LATIN CAPITAL LETTER E WITH MACRON */ - //case XK_Gcedilla 0x03ab /* U+0122 LATIN CAPITAL LETTER G WITH CEDILLA */ - //case XK_Tslash 0x03ac /* U+0166 LATIN CAPITAL LETTER T WITH STROKE */ - //case XK_rcedilla 0x03b3 /* U+0157 LATIN SMALL LETTER R WITH CEDILLA */ - //case XK_itilde 0x03b5 /* U+0129 LATIN SMALL LETTER I WITH TILDE */ - //case XK_lcedilla 0x03b6 /* U+013C LATIN SMALL LETTER L WITH CEDILLA */ - //case XK_emacron 0x03ba /* U+0113 LATIN SMALL LETTER E WITH MACRON */ - //case XK_gcedilla 0x03bb /* U+0123 LATIN SMALL LETTER G WITH CEDILLA */ - //case XK_tslash 0x03bc /* U+0167 LATIN SMALL LETTER T WITH STROKE */ - //case XK_ENG 0x03bd /* U+014A LATIN CAPITAL LETTER ENG */ - //case XK_eng 0x03bf /* U+014B LATIN SMALL LETTER ENG */ - //case XK_Amacron 0x03c0 /* U+0100 LATIN CAPITAL LETTER A WITH MACRON */ - //case XK_Iogonek 0x03c7 /* U+012E LATIN CAPITAL LETTER I WITH OGONEK */ - //case XK_Eabovedot 0x03cc /* U+0116 LATIN CAPITAL LETTER E WITH DOT ABOVE */ - //case XK_Imacron 0x03cf /* U+012A LATIN CAPITAL LETTER I WITH MACRON */ - //case XK_Ncedilla 0x03d1 /* U+0145 LATIN CAPITAL LETTER N WITH CEDILLA */ - //case XK_Omacron 0x03d2 /* U+014C LATIN CAPITAL LETTER O WITH MACRON */ - //case XK_Kcedilla 0x03d3 /* U+0136 LATIN CAPITAL LETTER K WITH CEDILLA */ - //case XK_Uogonek 0x03d9 /* U+0172 LATIN CAPITAL LETTER U WITH OGONEK */ - //case XK_Utilde 0x03dd /* U+0168 LATIN CAPITAL LETTER U WITH TILDE */ - //case XK_Umacron 0x03de /* U+016A LATIN CAPITAL LETTER U WITH MACRON */ - //case XK_amacron 0x03e0 /* U+0101 LATIN SMALL LETTER A WITH MACRON */ - //case XK_iogonek 0x03e7 /* U+012F LATIN SMALL LETTER I WITH OGONEK */ - //case XK_eabovedot 0x03ec /* U+0117 LATIN SMALL LETTER E WITH DOT ABOVE */ - //case XK_imacron 0x03ef /* U+012B LATIN SMALL LETTER I WITH MACRON */ - //case XK_ncedilla 0x03f1 /* U+0146 LATIN SMALL LETTER N WITH CEDILLA */ - //case XK_omacron 0x03f2 /* U+014D LATIN SMALL LETTER O WITH MACRON */ - //case XK_kcedilla 0x03f3 /* U+0137 LATIN SMALL LETTER K WITH CEDILLA */ - //case XK_uogonek 0x03f9 /* U+0173 LATIN SMALL LETTER U WITH OGONEK */ - //case XK_utilde 0x03fd /* U+0169 LATIN SMALL LETTER U WITH TILDE */ - //case XK_umacron 0x03fe /* U+016B LATIN SMALL LETTER U WITH MACRON */ - //case XK_Wcircumflex 0x1000174 /* U+0174 LATIN CAPITAL LETTER W WITH CIRCUMFLEX */ - //case XK_wcircumflex 0x1000175 /* U+0175 LATIN SMALL LETTER W WITH CIRCUMFLEX */ - //case XK_Ycircumflex 0x1000176 /* U+0176 LATIN CAPITAL LETTER Y WITH CIRCUMFLEX */ - //case XK_ycircumflex 0x1000177 /* U+0177 LATIN SMALL LETTER Y WITH CIRCUMFLEX */ - //case XK_Babovedot 0x1001e02 /* U+1E02 LATIN CAPITAL LETTER B WITH DOT ABOVE */ - //case XK_babovedot 0x1001e03 /* U+1E03 LATIN SMALL LETTER B WITH DOT ABOVE */ - //case XK_Dabovedot 0x1001e0a /* U+1E0A LATIN CAPITAL LETTER D WITH DOT ABOVE */ - //case XK_dabovedot 0x1001e0b /* U+1E0B LATIN SMALL LETTER D WITH DOT ABOVE */ - //case XK_Fabovedot 0x1001e1e /* U+1E1E LATIN CAPITAL LETTER F WITH DOT ABOVE */ - //case XK_fabovedot 0x1001e1f /* U+1E1F LATIN SMALL LETTER F WITH DOT ABOVE */ - //case XK_Mabovedot 0x1001e40 /* U+1E40 LATIN CAPITAL LETTER M WITH DOT ABOVE */ - //case XK_mabovedot 0x1001e41 /* U+1E41 LATIN SMALL LETTER M WITH DOT ABOVE */ - //case XK_Pabovedot 0x1001e56 /* U+1E56 LATIN CAPITAL LETTER P WITH DOT ABOVE */ - //case XK_pabovedot 0x1001e57 /* U+1E57 LATIN SMALL LETTER P WITH DOT ABOVE */ - //case XK_Sabovedot 0x1001e60 /* U+1E60 LATIN CAPITAL LETTER S WITH DOT ABOVE */ - //case XK_sabovedot 0x1001e61 /* U+1E61 LATIN SMALL LETTER S WITH DOT ABOVE */ - //case XK_Tabovedot 0x1001e6a /* U+1E6A LATIN CAPITAL LETTER T WITH DOT ABOVE */ - //case XK_tabovedot 0x1001e6b /* U+1E6B LATIN SMALL LETTER T WITH DOT ABOVE */ - //case XK_Wgrave 0x1001e80 /* U+1E80 LATIN CAPITAL LETTER W WITH GRAVE */ - //case XK_wgrave 0x1001e81 /* U+1E81 LATIN SMALL LETTER W WITH GRAVE */ - //case XK_Wacute 0x1001e82 /* U+1E82 LATIN CAPITAL LETTER W WITH ACUTE */ - //case XK_wacute 0x1001e83 /* U+1E83 LATIN SMALL LETTER W WITH ACUTE */ - //case XK_Wdiaeresis 0x1001e84 /* U+1E84 LATIN CAPITAL LETTER W WITH DIAERESIS */ - //case XK_wdiaeresis 0x1001e85 /* U+1E85 LATIN SMALL LETTER W WITH DIAERESIS */ - //case XK_Ygrave 0x1001ef2 /* U+1EF2 LATIN CAPITAL LETTER Y WITH GRAVE */ - //case XK_ygrave 0x1001ef3 /* U+1EF3 LATIN SMALL LETTER Y WITH GRAVE */ - //case XK_OE 0x13bc /* U+0152 LATIN CAPITAL LIGATURE OE */ - //case XK_oe 0x13bd /* U+0153 LATIN SMALL LIGATURE OE */ - //case XK_Ydiaeresis 0x13be /* U+0178 LATIN CAPITAL LETTER Y WITH DIAERESIS */ + case: XK_Agonek: return Qt::Key_AsciiTilde; + case XK_breve: return Qt::Key_AsciiTilde; + case XK_Lstroke: return Qt::Key_AsciiTilde; + case XK_Lcaron: return Qt::Key_AsciiTilde; + case XK_Sacute: return Qt::Key_AsciiTilde; + case XK_Scaron: return Qt::Key_AsciiTilde; + case XK_Scedilla: return Qt::Key_AsciiTilde; + case XK_Tcaron: return Qt::Key_AsciiTilde; + case XK_Zacute: return Qt::Key_AsciiTilde; + case XK_Zcaron: return Qt::Key_AsciiTilde; + case XK_Zabovedot: return Qt::Key_AsciiTilde; + case XK_aogonek: return Qt::Key_AsciiTilde; + case XK_ogonek: return Qt::Key_AsciiTilde; + case XK_lstroke: return Qt::Key_AsciiTilde; + case XK_lcaron: return Qt::Key_AsciiTilde; + case XK_sacute: return Qt::Key_AsciiTilde; + case XK_caron: return Qt::Key_AsciiTilde; + case XK_scaron: return Qt::Key_AsciiTilde; + case XK_scedilla: return Qt::Key_AsciiTilde; + case XK_tcaron: return Qt::Key_AsciiTilde; + case XK_zacute: return Qt::Key_AsciiTilde; + case XK_doubleacute: return Qt::Key_AsciiTilde; + case XK_zcaron: return Qt::Key_AsciiTilde; + case XK_zabovedot: return Qt::Key_AsciiTilde; + case XK_Racute: return Qt::Key_AsciiTilde; + case XK_Abreve: return Qt::Key_AsciiTilde; + case XK_Lacute: return Qt::Key_AsciiTilde; + case XK_Cacute: return Qt::Key_AsciiTilde; + case XK_Ccaron: return Qt::Key_AsciiTilde; + case XK_Eogonek: return Qt::Key_AsciiTilde; + case XK_Ecaron: return Qt::Key_AsciiTilde; + case XK_Dcaron: return Qt::Key_AsciiTilde; + case XK_Dstroke: return Qt::Key_AsciiTilde; + case XK_Nacute: return Qt::Key_AsciiTilde; + case XK_Ncaron: return Qt::Key_AsciiTilde; + case XK_Odoubleacute: return Qt::Key_AsciiTilde; + case XK_Rcaron: return Qt::Key_AsciiTilde; + case XK_Uring: return Qt::Key_AsciiTilde; + case XK_Udoubleacute: return Qt::Key_AsciiTilde; + case XK_Tcedilla: return Qt::Key_AsciiTilde; + case XK_racute: return Qt::Key_AsciiTilde; + case XK_abreve: return Qt::Key_AsciiTilde; + case XK_lacute: return Qt::Key_AsciiTilde; + case XK_cacute: return Qt::Key_AsciiTilde; + case XK_ccaron: return Qt::Key_AsciiTilde; + case XK_eogonek: return Qt::Key_AsciiTilde; + case XK_ecaron: return Qt::Key_AsciiTilde; + case XK_dcaron: return Qt::Key_AsciiTilde; + case XK_dstroke: return Qt::Key_AsciiTilde; + case XK_nacute: return Qt::Key_AsciiTilde; + case XK_ncaron: return Qt::Key_AsciiTilde; + case XK_odoubleacute: return Qt::Key_AsciiTilde; + case XK_rcaron: return Qt::Key_AsciiTilde; + case XK_uring: return Qt::Key_AsciiTilde; + case XK_udoubleacute: return Qt::Key_AsciiTilde; + case XK_tcedilla: return Qt::Key_AsciiTilde; + case XK_abovedot: return Qt::Key_AsciiTilde; + case XK_Hstroke: return Qt::Key_AsciiTilde; + case XK_Hcircumflex: return Qt::Key_AsciiTilde; + case XK_Iabovedot: return Qt::Key_AsciiTilde; + case XK_Gbreve: return Qt::Key_AsciiTilde; + case XK_Jcircumflex: return Qt::Key_AsciiTilde; + case XK_hstroke: return Qt::Key_AsciiTilde; + case XK_hcircumflex: return Qt::Key_AsciiTilde; + case XK_idotless: return Qt::Key_AsciiTilde; + case XK_gbreve: return Qt::Key_AsciiTilde; + case XK_jcircumflex: return Qt::Key_AsciiTilde; + case XK_Cabovedot: return Qt::Key_AsciiTilde; + case XK_Ccircumflex: return Qt::Key_AsciiTilde; + case XK_Gabovedot: return Qt::Key_AsciiTilde; + case XK_Gcircumflex: return Qt::Key_AsciiTilde; + case XK_Ubreve: return Qt::Key_AsciiTilde; + case XK_Scircumflex: return Qt::Key_AsciiTilde; + case XK_cabovedot: return Qt::Key_AsciiTilde; + case XK_ccircumflex: return Qt::Key_AsciiTilde; + case XK_gabovedot: return Qt::Key_AsciiTilde; + case XK_gcircumflex: return Qt::Key_AsciiTilde; + case XK_ubreve: return Qt::Key_AsciiTilde; + case XK_scircumflex: return Qt::Key_AsciiTilde; + case XK_kra: return Qt::Key_AsciiTilde; + case XK_kappa: return Qt::Key_AsciiTilde; + case XK_Rcedilla: return Qt::Key_AsciiTilde; + case XK_Itilde: return Qt::Key_AsciiTilde; + case XK_Lcedilla: return Qt::Key_AsciiTilde; + case XK_Emacron: return Qt::Key_AsciiTilde; + case XK_Gcedilla: return Qt::Key_AsciiTilde; + case XK_Tslash: return Qt::Key_AsciiTilde; + case XK_rcedilla: return Qt::Key_AsciiTilde; + case XK_itilde: return Qt::Key_AsciiTilde; + case XK_lcedilla: return Qt::Key_AsciiTilde; + case XK_emacron: return Qt::Key_AsciiTilde; + case XK_gcedilla: return Qt::Key_AsciiTilde; + case XK_tslash: return Qt::Key_AsciiTilde; + case XK_ENG: return Qt::Key_AsciiTilde; + case XK_eng: return Qt::Key_AsciiTilde; + case XK_Amacron: return Qt::Key_AsciiTilde; + case XK_Iogonek: return Qt::Key_AsciiTilde; + case XK_Eabovedot: return Qt::Key_AsciiTilde; + case XK_Imacron: return Qt::Key_AsciiTilde; + case XK_Ncedilla: return Qt::Key_AsciiTilde; + case XK_Omacron: return Qt::Key_AsciiTilde; + case XK_Kcedilla: return Qt::Key_AsciiTilde; + case XK_Uogonek: return Qt::Key_AsciiTilde; + case XK_Utilde: return Qt::Key_AsciiTilde; + case XK_Umacron: return Qt::Key_AsciiTilde; + case XK_amacron: return Qt::Key_AsciiTilde; + case XK_iogonek: return Qt::Key_AsciiTilde; + case XK_eabovedot: return Qt::Key_AsciiTilde; + case XK_imacron: return Qt::Key_AsciiTilde; + case XK_ncedilla: return Qt::Key_AsciiTilde; + case XK_omacron: return Qt::Key_AsciiTilde; + case XK_kcedilla: return Qt::Key_AsciiTilde; + case XK_uogonek: return Qt::Key_AsciiTilde; + case XK_utilde: return Qt::Key_AsciiTilde; + case XK_umacron: return Qt::Key_AsciiTilde; + case XK_Wcircumflex: return Qt::Key_AsciiTilde; + case XK_wcircumflex: return Qt::Key_AsciiTilde; + case XK_Ycircumflex: return Qt::Key_AsciiTilde; + case XK_ycircumflex: return Qt::Key_AsciiTilde; + case XK_Babovedot: return Qt::Key_AsciiTilde; + case XK_babovedot: return Qt::Key_AsciiTilde; + case XK_Dabovedot: return Qt::Key_AsciiTilde; + case XK_dabovedot: return Qt::Key_AsciiTilde; + case XK_Fabovedot: return Qt::Key_AsciiTilde; + case XK_fabovedot: return Qt::Key_AsciiTilde; + case XK_Mabovedot: return Qt::Key_AsciiTilde; + case XK_mabovedot: return Qt::Key_AsciiTilde; + case XK_Pabovedot: return Qt::Key_AsciiTilde; + case XK_pabovedot: return Qt::Key_AsciiTilde; + case XK_Sabovedot: return Qt::Key_AsciiTilde; + case XK_sabovedot: return Qt::Key_AsciiTilde; + case XK_Tabovedot: return Qt::Key_AsciiTilde; + case XK_tabovedot: return Qt::Key_AsciiTilde; + case XK_Wgrave: return Qt::Key_AsciiTilde; + case XK_wgrave: return Qt::Key_AsciiTilde; + case XK_Wacute: return Qt::Key_AsciiTilde; + case XK_wacute: return Qt::Key_AsciiTilde; + case XK_Wdiaeresis: return Qt::Key_AsciiTilde; + case XK_wdiaeresis: return Qt::Key_AsciiTilde; + case XK_Ygrave: return Qt::Key_AsciiTilde; + case XK_ygrave: return Qt::Key_AsciiTilde; + case XK_OE: return Qt::Key_AsciiTilde; + case XK_oe: return Qt::Key_AsciiTilde; + case XK_Ydiaeresis: return Qt::Key_AsciiTilde;*/ default: qDebug() << "Unknown Key"; } -- cgit From fc7146bbf3e067fc58ae9d5d21fa7403e1db5326 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Tue, 11 Jul 2017 14:06:50 -0400 Subject: Start adding some default keyboard shortcuts/files to Lumina 2. --- src-qt5/core/libLumina/DesktopSettings.cpp | 18 +++++++++--------- src-qt5/core/lumina-desktop-unified/LSession.cpp | 12 +++++++++++- src-qt5/core/lumina-desktop-unified/LSession.h | 3 +++ .../defaults/desktop/desktop.conf | 0 .../defaults/desktop/environment.conf | 0 .../defaults/desktop/favorites.conf | 0 .../lumina-desktop-unified/defaults/desktop/keys.conf | 8 ++++++++ .../defaults/desktop/session.conf | 0 .../lumina-desktop-unified/defaults/desktop/theme.conf | 0 src-qt5/core/lumina-desktop-unified/lumina-desktop.pro | 6 ++++-- .../src-events/LShortcutEvents.cpp | 9 +++++---- .../src-screensaver/animations/BaseAnimGroup.h | 4 ++-- 12 files changed, 42 insertions(+), 18 deletions(-) create mode 100644 src-qt5/core/lumina-desktop-unified/defaults/desktop/desktop.conf create mode 100644 src-qt5/core/lumina-desktop-unified/defaults/desktop/environment.conf create mode 100644 src-qt5/core/lumina-desktop-unified/defaults/desktop/favorites.conf create mode 100644 src-qt5/core/lumina-desktop-unified/defaults/desktop/keys.conf create mode 100644 src-qt5/core/lumina-desktop-unified/defaults/desktop/session.conf create mode 100644 src-qt5/core/lumina-desktop-unified/defaults/desktop/theme.conf (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/DesktopSettings.cpp b/src-qt5/core/libLumina/DesktopSettings.cpp index bd0325ec..47dc29de 100644 --- a/src-qt5/core/libLumina/DesktopSettings.cpp +++ b/src-qt5/core/libLumina/DesktopSettings.cpp @@ -121,7 +121,7 @@ void DesktopSettings::parseSystemSettings(){ //Now determine the runmode for this user struct passwd *pw = getpwuid(getuid()); - if(pw!=0){ + if(pw!=0){ QString cuser = QString(pw->pw_name); free(pw); //done with this structure if( settings[path]->value("fulluser_users", QStringList()).toStringList().contains(cuser) ){ runmode = DesktopSettings::UserFull; } @@ -133,10 +133,10 @@ void DesktopSettings::parseSystemSettings(){ gid_t grpList[100]; int grpSize = 100; if( getgrouplist(cuser.toLocal8Bit(), getgid(), grpList, &grpSize) > 0 ){ - QStringList groups; - for(int i=0; igr_name); free(g); } @@ -146,18 +146,18 @@ void DesktopSettings::parseSystemSettings(){ if( (fromfile+groups).removeDuplicates() > 0 ){ runmode = DesktopSettings::UserFull; } else{ fromfile = settings[path]->value("fullsystem_groups", QStringList()).toStringList(); - fromfile.removeDuplicates(); + fromfile.removeDuplicates(); if((fromfile+groups).removeDuplicates() > 0 ){ runmode = DesktopSettings::SystemFull; } else{ fromfile = settings[path]->value("staticinterface_groups", QStringList()).toStringList(); - fromfile.removeDuplicates(); + fromfile.removeDuplicates(); if((fromfile+groups).removeDuplicates() > 0 ){ runmode = DesktopSettings::SystemInterface; } } } - } //end group list read + } //end group list read } }else{ - runmode = DesktopSettings::SystemFull; //could not read user name - assume system files only + runmode = DesktopSettings::SystemFull; //could not read user name - assume system files only } break; //found this file - go ahead and stop now (no hierarchy for this special file) @@ -256,7 +256,7 @@ void DesktopSettings::fileChanged(QString file){ QList< DesktopSettings::File > types = files.keys(); for(int i=0; isetCursor( QCursor(Qt::BlankCursor) ); } ~BaseAnimGroup(){} - + //============================== // PLUGIN LOADING/LISTING (Change in the .cpp file) //============================== static BaseAnimGroup* NewAnimation(QString type, QWidget *parent, QSettings *set); static QStringList KnownAnimations(); - + }; #endif -- cgit From 575533f902657faa7f2a3b8b889b1da90458a57f Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Tue, 11 Jul 2017 16:30:45 -0400 Subject: Get the keyboard shortcut for "LockScreen" (case-insensitive) working, and fix some connection warnings. --- src-qt5/core/lumina-desktop-unified/LSession.cpp | 2 ++ .../lumina-desktop-unified/src-events/LShortcutEvents.cpp | 9 +++++---- .../src-screensaver/LScreenSaver.cpp | 2 +- .../src-screensaver/SSBaseWidget.cpp | 14 +++++++------- .../src-screensaver/animations/BaseAnimGroup.cpp | 2 +- 5 files changed, 16 insertions(+), 13 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-desktop-unified/LSession.cpp b/src-qt5/core/lumina-desktop-unified/LSession.cpp index 2155a8b7..8ab1b303 100644 --- a/src-qt5/core/lumina-desktop-unified/LSession.cpp +++ b/src-qt5/core/lumina-desktop-unified/LSession.cpp @@ -29,6 +29,7 @@ LSession::LSession(int &argc, char ** argv) : LSingleApplication(argc, argv, "lu //Initialize the global objects to null pointers qRegisterMetaType< Qt::Key >("Qt::Key"); qRegisterMetaType< NativeWindow::Property >("NativeWindow::Property"); + qRegisterMetaType< QList< NativeWindow::Property > >("QList"); mediaObj = 0; //private object used for playing login/logout chimes if(this->isPrimaryProcess()){ @@ -222,6 +223,7 @@ void LSession::setupGlobalConnections(){ connect(Lumina::SHORTCUTS, SIGNAL(StartLogout()), this, SLOT(StartLogout()) ); connect(Lumina::SHORTCUTS, SIGNAL(StartReboot()), this, SLOT(StartReboot()) ); connect(Lumina::SHORTCUTS, SIGNAL(StartShutdown()), this, SLOT(StartShutdown()) ); + connect(Lumina::SHORTCUTS, SIGNAL(LockSession()), Lumina::SS, SLOT(LockScreenNow()) ); //Root window connections connect(Lumina::ROOTWIN, SIGNAL(RegisterVirtualRoot(WId)), Lumina::NWS, SLOT(RegisterVirtualRoot(WId)) ); diff --git a/src-qt5/core/lumina-desktop-unified/src-events/LShortcutEvents.cpp b/src-qt5/core/lumina-desktop-unified/src-events/LShortcutEvents.cpp index 1b78da21..3d50112c 100644 --- a/src-qt5/core/lumina-desktop-unified/src-events/LShortcutEvents.cpp +++ b/src-qt5/core/lumina-desktop-unified/src-events/LShortcutEvents.cpp @@ -139,11 +139,11 @@ QString LShortcutEvents::keylistToString(){ void LShortcutEvents::evaluateShortcutAction(QString action){ qDebug() << "Found Shortcut Action:" << action; evaluated = true; - if(action.startsWith("Exec=")){ - emit LaunchApplication(action.section("=",1,-1)); + if(action.startsWith("Exec:")){ + emit LaunchApplication(action.section(":",1,-1)); return; - }else if(action.startsWith("Launch=")){ - emit LaunchStandardApplication(action.section("=",1,-1)); + }else if(action.startsWith("Launch:")){ + emit LaunchStandardApplication(action.section(":",1,-1)); } //Specific Internal actions action = action.toLower(); @@ -152,6 +152,7 @@ void LShortcutEvents::evaluateShortcutAction(QString action){ else if(action=="reboot"){ emit StartReboot(); } else if(action=="shutdown"){ emit StartShutdown(); } else if(action=="show_leave_options"){ emit OpenLeaveDialog(); } + else if(action=="lockscreen"){ emit LockSession(); } } diff --git a/src-qt5/core/lumina-desktop-unified/src-screensaver/LScreenSaver.cpp b/src-qt5/core/lumina-desktop-unified/src-screensaver/LScreenSaver.cpp index 9f280a47..bfcfa54d 100644 --- a/src-qt5/core/lumina-desktop-unified/src-screensaver/LScreenSaver.cpp +++ b/src-qt5/core/lumina-desktop-unified/src-screensaver/LScreenSaver.cpp @@ -8,7 +8,7 @@ #include #include -#define DEBUG 1 +#define DEBUG 0 LScreenSaver::LScreenSaver() : QWidget(0,Qt::BypassWindowManagerHint | Qt::WindowStaysOnTopHint){ starttimer = new QTimer(this); 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 943fe0a1..b31ef793 100644 --- a/src-qt5/core/lumina-desktop-unified/src-screensaver/SSBaseWidget.cpp +++ b/src-qt5/core/lumina-desktop-unified/src-screensaver/SSBaseWidget.cpp @@ -25,7 +25,7 @@ SSBaseWidget::SSBaseWidget(QWidget *parent, QSettings *set) : QWidget(parent){ SSBaseWidget::~SSBaseWidget(){ if(ANIM!=0){ this->stopPainting(); } } - + void SSBaseWidget::setPlugin(QString plug){ plug = plug.toLower(); if(validPlugs.contains(plug) || plug=="random"){ plugType = plug; } @@ -38,12 +38,12 @@ void SSBaseWidget::setPlugin(QString plug){ void SSBaseWidget::startPainting(){ cplug = plugType; //free up any old animation instance - if(ANIM!=0){ + if(ANIM!=0){ ANIM->stop(); ANIM->clear(); - delete ANIM; ANIM = 0; - } + delete ANIM; ANIM = 0; + } //If a random plugin - grab one of the known plugins - if(cplug=="random"){ + if(cplug=="random"){ QStringList valid = BaseAnimGroup::KnownAnimations(); valid.removeAll("none"); //they want a screensaver - remove the "none" option from the valid list if(valid.isEmpty()){ cplug = "none"; } //no known plugins @@ -67,9 +67,9 @@ void SSBaseWidget::startPainting(){ } //Now start the animation(s) if(ANIM!=0){ - if(ANIM->animationCount()>0){ + if(ANIM->animationCount()>0){ if(DEBUG){ qDebug() << " - Starting SS Plugin:" << cplug << ANIM->animationCount() << ANIM->duration() << ANIM->loopCount(); } - ANIM->start(); + ANIM->start(); } } } diff --git a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/BaseAnimGroup.cpp b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/BaseAnimGroup.cpp index cda9797b..017eaf9f 100644 --- a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/BaseAnimGroup.cpp +++ b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/BaseAnimGroup.cpp @@ -31,5 +31,5 @@ BaseAnimGroup* BaseAnimGroup::NewAnimation(QString type, QWidget *parent, QSetti } QStringList BaseAnimGroup::KnownAnimations(){ - return (QStringList() << "text"); + return (QStringList() << "fireflies" << "grav" << "text"); } -- cgit From 31f117788d47ea31bbb8ae0a9babaf5382d56fb1 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Wed, 12 Jul 2017 09:04:58 -0400 Subject: Update the "open-with" menu for lumina-fm so that is shows recommendations directly in the menu. --- src-qt5/core/libLumina/LuminaXDG.h | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/LuminaXDG.h b/src-qt5/core/libLumina/LuminaXDG.h index d159ef43..cc250c7e 100644 --- a/src-qt5/core/libLumina/LuminaXDG.h +++ b/src-qt5/core/libLumina/LuminaXDG.h @@ -12,8 +12,6 @@ // *.desktop Exec Compliance Updated: 9/9/2014 // Mime Application Version Compliance: 1.0.1 (11/14/14) (Skips random *.desktop parsing: ~80% compliant) //=========================================== - - #ifndef _LUMINA_LIBRARY_XDG_H #define _LUMINA_LIBRARY_XDG_H @@ -83,7 +81,7 @@ public: bool saveDesktopFile(bool merge = true); //This will use the "filePath" variable for where to save the file - bool setAutoStarted(bool autostart = true); + bool setAutoStarted(bool autostart = true); }; // ======================== @@ -127,29 +125,29 @@ private: XDGDesktop *desk; void loadExtraInfo(); - + public: //Couple overloaded contructors LFileInfo(); LFileInfo(QString filepath); LFileInfo(QFileInfo info); - ~LFileInfo(){ - desk->deleteLater(); + ~LFileInfo(){ + desk->deleteLater(); } - + //Functions for accessing the extra information // -- Return the mimetype for the file QString mimetype(); - + // -- Return the icon file to use for this file QString iconfile(); //Note: This string is auto-formatted for use in the LXDG::findIcon() routine. - + // -- Check if this is an XDG desktop file bool isDesktopFile(); - + // -- Allow access to the internal XDG desktop data structure XDGDesktop* XDG(); - + //Other file type identification routines bool isImage(); //Is a readable image file (for thumbnail support) bool isAVFile(); //Is an audio/video file @@ -165,7 +163,7 @@ public: //static XDGDesktop* loadDesktopFile(QString filepath, bool&ok, QObject *parent = 0); //static bool saveDesktopFile(XDGDesktop *dFile, bool merge = true); //Check a *.desktop file for validity (showAll skips the DE-exclusivity checks) - //static bool checkValidity(XDGDesktop *dFile, bool showAll = true); + //static bool checkValidity(XDGDesktop *dFile, bool showAll = true); //Check for a valid executable static bool checkExec(QString exec); //Get a list of all the directories where *.desktop files exist @@ -210,7 +208,7 @@ public: static QStringList findAVFileExtensions(); //Load all the "globs2" mime database files static QStringList loadMimeFileGlobs2(); - + //Find all the autostart *.desktop files static QList findAutoStartFiles(bool includeInvalid = false); //static bool setAutoStarted(bool autostart, XDGDesktop *app); -- cgit From c7a44d46d9186fc243f9b66ba28260d424f9b1cb Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Wed, 12 Jul 2017 12:43:15 -0400 Subject: Fix a few random issues with Lumina2. --- src-qt5/core/libLumina/RootWindow.cpp | 1 + src-qt5/core/lumina-desktop-unified/LSession.cpp | 4 ++-- src-qt5/core/lumina-desktop-unified/src-screensaver/animations/Grav.h | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/RootWindow.cpp b/src-qt5/core/libLumina/RootWindow.cpp index 2fee5d96..31faaf50 100644 --- a/src-qt5/core/libLumina/RootWindow.cpp +++ b/src-qt5/core/libLumina/RootWindow.cpp @@ -14,6 +14,7 @@ RootWindow::RootWindow() : QWidget(0, Qt::Window | Qt::BypassWindowManagerHint | Qt::WindowStaysOnBottomHint){ qRegisterMetaType("WId"); autoResizeTimer = 0; + this->setMouseTracking(true); } RootWindow::~RootWindow(){ diff --git a/src-qt5/core/lumina-desktop-unified/LSession.cpp b/src-qt5/core/lumina-desktop-unified/LSession.cpp index df70b22e..0b9a9b35 100644 --- a/src-qt5/core/lumina-desktop-unified/LSession.cpp +++ b/src-qt5/core/lumina-desktop-unified/LSession.cpp @@ -11,7 +11,7 @@ #include "BootSplash.h" #ifndef DEBUG -#define DEBUG 1 +#define DEBUG 0 #endif //Initialize all the global objects to null pointers @@ -223,7 +223,7 @@ void LSession::setupGlobalConnections(){ connect(Lumina::SHORTCUTS, SIGNAL(StartLogout()), this, SLOT(StartLogout()) ); connect(Lumina::SHORTCUTS, SIGNAL(StartReboot()), this, SLOT(StartReboot()) ); connect(Lumina::SHORTCUTS, SIGNAL(StartShutdown()), this, SLOT(StartShutdown()) ); - connect(Lumina::SHORTCUTS, SIGNAL(LaunchApplication(QString), this, SLOT(LaunchApplication(QString)) ); + connect(Lumina::SHORTCUTS, SIGNAL(LaunchApplication(QString)), this, SLOT(LaunchApplication(QString)) ); connect(Lumina::SHORTCUTS, SIGNAL(LaunchStandardApplication(QString)), this, SLOT(LaunchStandardApplication(QString)) ); connect(Lumina::SHORTCUTS, SIGNAL(LockSession()), Lumina::SS, SLOT(LockScreenNow()) ); diff --git a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/Grav.h b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/Grav.h index 9e5d52dc..ad1b1122 100644 --- a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/Grav.h +++ b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/Grav.h @@ -136,7 +136,7 @@ private slots: public: GravAnimation(QWidget *parent, QSettings *set) : BaseAnimGroup(parent, set){} ~GravAnimation(){ - this->stop(); + //this->stop(); } void LoadAnimations(){ @@ -178,7 +178,7 @@ public: connect(tmp, SIGNAL(finished()), this, SLOT(checkFinished())); planets << tmp; } - while(planets.length()>number){planets.takeAt(number)->deleteLater(); sun->deleteLater(); } + while(planets.length()>number){planets.takeAt(number)->deleteLater(); } } }; -- cgit From a852d14c4c2383363254a8629d2257a229c6c95b Mon Sep 17 00:00:00 2001 From: q5sys Date: Thu, 13 Jul 2017 11:13:24 -0400 Subject: inital commit of the lumina-theme-engine --- src-qt5/core/lumina-theme-engine/README.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 src-qt5/core/lumina-theme-engine/README.md (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-theme-engine/README.md b/src-qt5/core/lumina-theme-engine/README.md new file mode 100644 index 00000000..54858198 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/README.md @@ -0,0 +1,12 @@ +## Lumina Theme Engine + +This is a theme engine for the Lumina Desktop + +### Dependencies + +1. Qt 5.4+ + - qtbase >= 5.4.0 + - qtsvg >= 5.4.0 + - qttools >= 5.4.0 + +2. Lumina Desktop -- cgit From 6a2af03c68033a9683de619b4ae6493a4f7254b7 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Thu, 13 Jul 2017 14:02:59 -0400 Subject: Large update to the window embedding systems - almost have the compositing up and running. --- src-qt5/core/libLumina/NativeEmbedWidget.cpp | 185 ++++++++++++++++++++++++++ src-qt5/core/libLumina/NativeEmbedWidget.h | 47 +++++++ src-qt5/core/libLumina/NativeWindow.cpp | 8 +- src-qt5/core/libLumina/NativeWindow.h | 1 + src-qt5/core/libLumina/NativeWindow.pri | 6 +- src-qt5/core/libLumina/NativeWindowSystem.cpp | 27 +--- src-qt5/core/libLumina/RootSubWindow.cpp | 33 +++-- src-qt5/core/libLumina/RootSubWindow.h | 4 +- 8 files changed, 263 insertions(+), 48 deletions(-) create mode 100644 src-qt5/core/libLumina/NativeEmbedWidget.cpp create mode 100644 src-qt5/core/libLumina/NativeEmbedWidget.h (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/NativeEmbedWidget.cpp b/src-qt5/core/libLumina/NativeEmbedWidget.cpp new file mode 100644 index 00000000..fd5939dd --- /dev/null +++ b/src-qt5/core/libLumina/NativeEmbedWidget.cpp @@ -0,0 +1,185 @@ +//=========================================== +// Lumina-DE source code +// Copyright (c) 2017, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +#include "NativeEmbedWidget.h" + +#include +#include +#include + +#include +#include +#include +#include +#include + +//xcb_pixmap_t PIXBACK; //backend pixmap that compositing redirects to + +#define NORMAL_WIN_EVENT_MASK (XCB_EVENT_MASK_BUTTON_PRESS | \ + XCB_EVENT_MASK_BUTTON_RELEASE | \ + XCB_EVENT_MASK_POINTER_MOTION | \ + XCB_EVENT_MASK_BUTTON_MOTION | \ + XCB_EVENT_MASK_EXPOSURE | \ + XCB_EVENT_MASK_STRUCTURE_NOTIFY | \ + XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT | \ + XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY | \ + XCB_EVENT_MASK_ENTER_WINDOW| \ + XCB_EVENT_MASK_PROPERTY_CHANGE) + +inline void registerClientEvents(WId id){ + uint32_t value_list[1] = {NORMAL_WIN_EVENT_MASK}; + xcb_change_window_attributes(QX11Info::connection(), id, XCB_CW_EVENT_MASK, value_list); +} + +// ============ +// PRIVATE +// ============ +//Simplification functions for the XCB/XLib interactions +void NativeEmbedWidget::syncWinSize(QSize sz){ + if(WIN==0){ return; } + qDebug() << "Sync Window Size:" << sz; + xcb_configure_window_value_list_t valList; + valList.x = 0; + valList.y = 0; + valList.width = sz.width(); + valList.height = sz.height(); + uint16_t mask = 0; + mask = mask | XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT; + mask = mask | XCB_CONFIG_WINDOW_X | XCB_CONFIG_WINDOW_Y; + xcb_configure_window_aux(QX11Info::connection(), WIN->id(), mask, &valList); +} + +void NativeEmbedWidget::syncWidgetSize(QSize sz){ + this->resize(sz); +} + +void NativeEmbedWidget::hideWindow(){ + xcb_unmap_window(QX11Info::connection(), WIN->id()); +} + +void NativeEmbedWidget::showWindow(){ + xcb_map_window(QX11Info::connection(), WIN->id()); +} + +QImage NativeEmbedWidget::windowImage(QRect geom){ + //Need the graphics context of the window + /*xcb_gcontext_t gc = xcb_generate_id(QX11Info::connection()); + xcb_screen_t *screen = xcb_setup_roots_iterator(xcb_get_setup(QX11Info::connection())).data; + uint32_t values[1]; + values[0] = screen->black_pixel; + xcb_create_gc(QX11Info::connection(), + gc, + this->winId(), + XCB_GC_BACKGROUND, + values ); + xcb_pixmap_t pix = xcb_generate_id(QX11Info::connection()); + xcb_composite_name_window_pixmap(QX11Info::connection(), WIN->id(), pix); + //Now copy this pixmap onto widget + xcb_copy_area(QX11Info::connection(), pix, this->winId(), gc, geom.x(),geom.y(),geom.x(),geom.y(),geom.width(), geom.height()); + xcb_free_pixmap(QX11Info::connection(), pix); + return QImage();*/ + + /*xcb_put_image(QX11Info::connection(), XCB_IMAGE_FORMAT_Z_PIXMAP, pix, gc, sz.width(), sz.height(), 0, 0, */ + /*xcb_image_t *img = xcb_image_get(QX11Info::connection(), WIN->id(), geom.x(), geom.y(), geom.width(), geom.height(), 1, XCB_IMAGE_FORMAT_Z_PIXMAP); + if(img==0){ return QImage(); } + QImage image(geom.size(), QImage::Format_ARGB32); + image.loadFromData(img->data, img->size); + return image;*/ + +} + +// ============ +// PUBLIC +// ============ +NativeEmbedWidget::NativeEmbedWidget(QWidget *parent) : QWidget(parent){ + WIN = 0; //nothing embedded yet + this->setStyleSheet("background: transparent;"); //this widget should be fully-transparent to Qt itself (will paint on top of that) +} + +bool NativeEmbedWidget::embedWindow(NativeWindow *window){ + WIN = window; + //PIXBACK = xcb_generate_id(QX11Info::connection()); + xcb_reparent_window(QX11Info::connection(), WIN->id(), this->winId(), 0, 0); + //Now send the embed event to the app + //qDebug() << " - send _XEMBED event"; + /*xcb_client_message_event_t event; + event.response_type = XCB_CLIENT_MESSAGE; + event.format = 32; + event.window = WIN->id(); + event.type = obj->ATOMS["_XEMBED"]; //_XEMBED + event.data.data32[0] = XCB_TIME_CURRENT_TIME; //CurrentTime; + event.data.data32[1] = 0; //XEMBED_EMBEDDED_NOTIFY + event.data.data32[2] = 0; + event.data.data32[3] = this->winId(); //WID of the container + event.data.data32[4] = 0; + + xcb_send_event(QX11Info::connection(), 0, WIN->id(), XCB_EVENT_MASK_STRUCTURE_NOTIFY | XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT, (const char *) &event); + */ + //Now setup any redirects and return + //this->SelectInput(WIN->id(), true); //Notify of structure changes + //xcb_composite_redirect_window(QX11Info::connection(), WIN->id(), XCB_COMPOSITE_REDIRECT_MANUAL); //XCB_COMPOSITE_REDIRECT_[MANUAL/AUTOMATIC]); + + //xcb_composite_name_window_pixmap(QX11Info::connection(), WIN->id(), PIXBACK); + //Now map the window (will be a transparent child of the container) + //xcb_map_window(QX11Info::connection(), WIN->id()); + //xcb_map_window(QX11Info::connection(), this->winId()); + //Now create/register the damage handler + // -- XCB (Note: The XCB damage registration is completely broken at the moment - 9/15/15, Ken Moore) + // -- Retested 6/29/17 (no change) Ken Moore + //xcb_damage_damage_t dmgID = xcb_generate_id(QX11Info::connection()); //This is a typedef for a 32-bit unsigned integer + //xcb_damage_create(QX11Info::connection(), dmgID, WIN->id(), XCB_DAMAGE_REPORT_LEVEL_RAW_RECTANGLES); + // -- XLib (Note: This is only used because the XCB routine above does not work - needs to be fixed upstream in XCB itself). + Damage dmgID = XDamageCreate(QX11Info::display(), WIN->id(), XDamageReportRawRectangles); + WIN->addDamageID( (uint) dmgID); //save this for later + WIN->addFrameWinID(this->winId()); + connect(WIN, SIGNAL(VisualChanged()), this, SLOT(update()) ); //make sure we repaint the widget on visual change + + registerClientEvents(WIN->id()); + registerClientEvents(this->winId()); + return true; +} + +bool NativeEmbedWidget::detachWindow(){ + xcb_reparent_window(QX11Info::connection(), WIN->id(), QX11Info::appRootWindow(), -1, -1); + WIN = 0; +} + +bool NativeEmbedWidget::isEmbedded(){ + return (WIN!=0); +} + +// ============== +// PROTECTED +// ============== +void NativeEmbedWidget::resizeEvent(QResizeEvent *ev){ + if(WIN!=0){ syncWinSize(ev->size()); } //syncronize the window with the new widget size + QWidget::resizeEvent(ev); +} + +void NativeEmbedWidget::showEvent(QShowEvent *ev){ + if(WIN!=0){ showWindow(); } + QWidget::showEvent(ev); +} + +void NativeEmbedWidget::hideEvent(QHideEvent *ev){ + if(WIN!=0){ hideWindow(); } + QWidget::hideEvent(ev); +} + +void NativeEmbedWidget::paintEvent(QPaintEvent *ev){ + //QWidget::paintEvent(ev); //ensure all the Qt-compositing is done first + if(WIN==0){ QWidget::paintEvent(ev); return; } + //Need to paint the image from the window onto the widget as an overlay + QImage img = windowImage(ev->rect()); + if(!img.isNull()){ + QPainter P(this); + P.drawImage( ev->rect() , img, ev->rect(), Qt::NoOpaqueDetection); //1-to-1 mapping + //Note: Qt::NoOpaqueDetection Speeds up the paint by bypassing the checks to see if there are [semi-]transparent pixels + // Since this is an embedded image - we fully expect there to be transparency most of the time. + }else{ + QWidget::paintEvent(ev); + } +} diff --git a/src-qt5/core/libLumina/NativeEmbedWidget.h b/src-qt5/core/libLumina/NativeEmbedWidget.h new file mode 100644 index 00000000..6919249b --- /dev/null +++ b/src-qt5/core/libLumina/NativeEmbedWidget.h @@ -0,0 +1,47 @@ +//=========================================== +// 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 embedding a native window into a QWidget +// and maintaining a 1-to-1 mapping of sizing and other properties +// while also providing compositing effects between the two windows +//=========================================== +#ifndef _LUMINA_NATIVE_EMBED_WIDGET_H +#define _LUMINA_NATIVE_EMBED_WIDGET_H + +#include "NativeWindow.h" +#include +#include +#include +#include +#include + +class NativeEmbedWidget : public QWidget{ + Q_OBJECT +private: + NativeWindow *WIN; + + //Simplification functions + void syncWinSize(QSize); + void syncWidgetSize(QSize); + void hideWindow(); + void showWindow(); + QImage windowImage(QRect geom); + +public: + NativeEmbedWidget(QWidget *parent); + + bool embedWindow(NativeWindow *window); + bool detachWindow(); + bool isEmbedded(); //status of the embed + +protected: + void resizeEvent(QResizeEvent *ev); + void showEvent(QShowEvent *ev); + void hideEvent(QHideEvent *ev); + void paintEvent(QPaintEvent *ev); +}; + +#endif diff --git a/src-qt5/core/libLumina/NativeWindow.cpp b/src-qt5/core/libLumina/NativeWindow.cpp index 819661d5..ff7322f6 100644 --- a/src-qt5/core/libLumina/NativeWindow.cpp +++ b/src-qt5/core/libLumina/NativeWindow.cpp @@ -11,12 +11,10 @@ NativeWindow::NativeWindow(WId id) : QObject(){ winid = id; frameid = 0; dmgID = 0; - //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 } void NativeWindow::addFrameWinID(WId fid){ @@ -43,10 +41,6 @@ unsigned int NativeWindow::damageId(){ return dmgID; } -/*QWindow* NativeWindow::window(){ - return WIN; -}*/ - QVariant NativeWindow::property(NativeWindow::Property prop){ if(hash.contains(prop)){ return hash.value(prop); } else if(prop == NativeWindow::RelatedWindows){ return QVariant::fromValue(relatedTo); } @@ -93,9 +87,11 @@ QRect NativeWindow::geometry(){ QRect geom( hash.value(NativeWindow::GlobalPos).toPoint(), hash.value(NativeWindow::Size).toSize() ); //Now adjust the window geom by the frame margins QList frame = hash.value(NativeWindow::FrameExtents).value< QList >(); //Left,Right,Top,Bottom + qDebug() << "Calculate Geometry:" << geom << frame; if(frame.length()==4){ geom = geom.adjusted( -frame[0], -frame[2], frame[1], frame[3] ); } + qDebug() << " - Total:" << geom; return geom; } // ==== PUBLIC SLOTS === diff --git a/src-qt5/core/libLumina/NativeWindow.h b/src-qt5/core/libLumina/NativeWindow.h index 62bb74b5..5fa194c9 100644 --- a/src-qt5/core/libLumina/NativeWindow.h +++ b/src-qt5/core/libLumina/NativeWindow.h @@ -95,6 +95,7 @@ signals: void RequestPropertiesChange(WId, QList, QList); void WindowClosed(WId); void WindowNotResponding(WId); //will be sent out if a window does not respond to a ping request + void VisualChanged(); //Action Requests (not automatically emitted - typically used to ask the WM to do something) //Note: "WId" should be the NativeWindow id() diff --git a/src-qt5/core/libLumina/NativeWindow.pri b/src-qt5/core/libLumina/NativeWindow.pri index 013291ff..c2ac0137 100644 --- a/src-qt5/core/libLumina/NativeWindow.pri +++ b/src-qt5/core/libLumina/NativeWindow.pri @@ -6,10 +6,12 @@ LIBS *= -lc -lxcb -lxcb-ewmh -lxcb-icccm -lxcb-image -lxcb-composite -lxcb-damag SOURCES *= $${PWD}/NativeWindow.cpp \ $${PWD}/NativeWindowSystem.cpp \ $${PWD}/NativeKeyToQt.cpp \ - $${PWD}/NativeEventFilter.cpp + $${PWD}/NativeEventFilter.cpp \ + $${PWD}/NativeEmbedWidget.cpp HEADERS *= $${PWD}/NativeWindow.h \ $${PWD}/NativeWindowSystem.h \ - $${PWD}/NativeEventFilter.h + $${PWD}/NativeEventFilter.h \ + $${PWD}/NativeEmbedWidget.h INCLUDEPATH *= $${PWD} diff --git a/src-qt5/core/libLumina/NativeWindowSystem.cpp b/src-qt5/core/libLumina/NativeWindowSystem.cpp index f208cbf1..bf827a1b 100644 --- a/src-qt5/core/libLumina/NativeWindowSystem.cpp +++ b/src-qt5/core/libLumina/NativeWindowSystem.cpp @@ -254,8 +254,9 @@ void NativeWindowSystem::stop(){ NativeWindow* NativeWindowSystem::findWindow(WId id, bool checkRelated){ //qDebug() << "Find Window:" << id; for(int i=0; iisRelatedTo(id)){ return NWindows[i]; } - else if(!checkRelated && id==NWindows[i]->id()){ return NWindows[i]; } + if(id==NWindows[i]->id() || id==NWindows[i]->frameId() ){ return NWindows[i]; } + //if(checkRelated && NWindows[i]->isRelatedTo(id)){ return NWindows[i]; } + //else if(!checkRelated && id==NWindows[i]->id()){ return NWindows[i]; } } //Check to see if this is a transient for some other window if(checkRelated){ @@ -703,13 +704,13 @@ void NativeWindowSystem::NewTrayWindowDetected(WId id){ void NativeWindowSystem::WindowCloseDetected(WId id){ NativeWindow *win = findWindow(id, false); - //qDebug() << "Got Window Closed" << id << win; + qDebug() << "Got Window Closed" << id << win; //qDebug() << "Old Window List:" << NWindows.length(); if(win!=0){ NWindows.removeAll(win); //RequestReparent(id, QX11Info::appRootWindow(), QPoint(0,0)); win->emit WindowClosed(id); - //qDebug() << "Visible Window Closed!!!"; + qDebug() << "Visible Window Closed!!!"; //win->deleteLater(); }else{ win = findTrayWindow(id); @@ -798,24 +799,8 @@ void NativeWindowSystem::NewMouseRelease(int buttoncode, WId win){ void NativeWindowSystem::CheckDamageID(WId win){ for(int i=0; idamageId() == win || NWindows[i]->id() == win || NWindows[i]->frameId()==win){ + NWindows[i]->emit VisualChanged(); //qDebug() << "Got DAMAGE Event"; - /*NativeWindow *WIN = NWindows[i]; - QSize sz = WIN->property(NativeWindow::Size).toSize(); - //Need the graphics context of the window - xcb_gcontext_t gc = xcb_generate_id(QX11Info::connection()); - xcb_screen_t *screen = xcb_setup_roots_iterator(xcb_get_setup(QX11Info::connection())).data; - uint32_t values[1]; - values[0] = screen->black_pixel; - xcb_create_gc(QX11Info::connection(), - gc, - WIN->frameId(), - XCB_GC_BACKGROUND, - values ); - xcb_pixmap_t pix = xcb_generate_id(QX11Info::connection()); - xcb_composite_name_window_pixmap(QX11Info::connection(), WIN->id(), pix); - //Now put this pixmap onto the frame window - xcb_copy_area(QX11Info::connection(), pix, WIN->frameId(), gc, 0,0,0,0,sz.width(), sz.height());*/ - /*xcb_put_image(QX11Info::connection(), XCB_IMAGE_FORMAT_Z_PIXMAP, pix, gc, sz.width(), sz.height(), 0, 0, */ return; } } diff --git a/src-qt5/core/libLumina/RootSubWindow.cpp b/src-qt5/core/libLumina/RootSubWindow.cpp index 92a85291..5ce3d149 100644 --- a/src-qt5/core/libLumina/RootSubWindow.cpp +++ b/src-qt5/core/libLumina/RootSubWindow.cpp @@ -26,10 +26,10 @@ RootSubWindow::RootSubWindow(QWidget *root, NativeWindow *win) : QFrame(root){ initWindowFrame(); //Hookup the signals/slots connect(WIN, SIGNAL(PropertiesChanged(QList, QList)), this, SLOT(propertiesChanged(QList, QList))); - WIN->addFrameWinID(WinWidget->winId()); - WIN->emit RequestReparent(WIN->id(), WinWidget->winId(), QPoint(0,0)); + WinWidget->embedWindow(WIN); qDebug() << "[NEW WINDOW]" << WIN->id() << WinWidget->winId() << this->winId(); LoadAllProperties(); + //this->show(); } RootSubWindow::~RootSubWindow(){ @@ -147,7 +147,7 @@ void RootSubWindow::initWindowFrame(){ otherB->setMenu(otherM); otherB->setPopupMode(QToolButton::InstantPopup); otherB->setAutoRaise(true); - WinWidget = new QWidget(this); + WinWidget = new NativeEmbedWidget(this); connect(closeB, SIGNAL(clicked()), this, SLOT(triggerClose()) ); connect(maxB, SIGNAL(clicked()), this, SLOT(toggleMaximize()) ); connect(minB, SIGNAL(clicked()), this, SLOT(toggleMinimize()) ); @@ -267,13 +267,13 @@ void RootSubWindow::propertiesChanged(QList props, QList //qDebug() << "RootSubWindow: Property Changed:" << props[i] << vals[i]; switch(props[i]){ case NativeWindow::Visible: - //qDebug() << "Got Visibility Change:" << vals[i]; + qDebug() << "Got Visibility Change:" << vals[i] << this->geometry(); if(vals[i].toBool()){ - WinWidget->setVisible(true); - animResetProp = WIN->geometry(); //show event - might not have the right geom yet + animResetProp = WIN->geometry(); //this->geometry(); anim->setPropertyName("geometry"); - anim->setStartValue( QRect(WIN->geometry().center(), QSize(0,0)) ); - anim->setEndValue(WIN->geometry()); + anim->setStartValue( QRect(animResetProp.toRect().center(), QSize(0,0)) ); + anim->setEndValue(animResetProp); + this->setGeometry( anim->startValue().toRect() ); //ensure the window is the initial geom before it becomes visible anim->start(); this->show(); }else{ @@ -283,7 +283,6 @@ void RootSubWindow::propertiesChanged(QList props, QList anim->setEndValue( QRect(this->geometry().center(), QSize(0,0) ) ); anim->start(); QTimer::singleShot(anim->duration(), this, SLOT(hide()) ); - //this->hide(); } break; case NativeWindow::Title: @@ -295,16 +294,16 @@ void RootSubWindow::propertiesChanged(QList props, QList else{ otherB->setIcon(vals[i].value()); } break; case NativeWindow::GlobalPos: - //qDebug() << "Got Global Pos:" << this->pos() << WinWidget->mapToGlobal(QPoint(0,0)) << WIN->geometry().topLeft() << vals[i].toPoint(); + qDebug() << "Got Global Pos:" << this->pos() << WinWidget->mapToGlobal(QPoint(0,0)) << WIN->geometry().topLeft() << vals[i].toPoint(); this->move( vals[i].toPoint() - (WinWidget->mapToGlobal(QPoint(0,0)) - this->pos()) ); //WIN->geometry().topLeft() ); break; case NativeWindow::Size: - if(WinWidget->size() != vals[i].toSize()){ + //if(WinWidget->size() != vals[i].toSize()){ qDebug() << "Got Widget Size Change:" << vals[i].toSize(); - WinWidget->resize(vals[i].toSize()); + //WinWidget->resize(vals[i].toSize()); this->resize( WIN->geometry().size() ); qDebug() << " - Size after change:" << WinWidget->size() << this->size() << WIN->geometry(); - } + //} break; case NativeWindow::MinSize: WinWidget->setMinimumSize(vals[i].toSize()); @@ -331,13 +330,13 @@ void RootSubWindow::animFinished(){ if(closing){ this->close(); return;} else if(anim->propertyName()=="geometry"){ if(!animResetProp.isNull()){ - qDebug() << "Animation Finished, Reset Geometry:" << animResetProp; + /*qDebug() << "Animation Finished, Reset Geometry:" << animResetProp; qDebug() << " - Starting Value:" << anim->startValue(); qDebug() << " - Ending Value:" << anim->endValue(); - qDebug() << " - Current Value:" << this->geometry(); + qDebug() << " - Current Value:" << this->geometry();*/ this->setGeometry( animResetProp.toRect() ); - WIN->requestProperty(NativeWindow::Size, WinWidget->size(), true); - WIN->setProperty(NativeWindow::GlobalPos, WinWidget->mapToGlobal(QPoint(0,0)),true ); + //WIN->requestProperty(NativeWindow::Size, WinWidget->size(), true); + //WIN->requestProperty(NativeWindow::GlobalPos, WinWidget->mapToGlobal(QPoint(0,0)),true ); } } animResetProp = QVariant(); //clear the variable diff --git a/src-qt5/core/libLumina/RootSubWindow.h b/src-qt5/core/libLumina/RootSubWindow.h index bd20291e..cef6f2ff 100644 --- a/src-qt5/core/libLumina/RootSubWindow.h +++ b/src-qt5/core/libLumina/RootSubWindow.h @@ -20,7 +20,7 @@ #include #include #include - +#include class RootSubWindow : public QFrame{ Q_OBJECT @@ -41,7 +41,7 @@ private: void setMouseCursor(ModState, bool override = false); //Update the mouse cursor based on state //Native window embed objects NativeWindow *WIN; - QWidget *WinWidget; + NativeEmbedWidget *WinWidget; bool closing; //Title bar objects QBoxLayout *titleBar, *mainLayout; -- cgit From c6cf1c1799aa3e6f095cae0aa579e0ea2971340e Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Thu, 13 Jul 2017 15:49:07 -0400 Subject: Start working on getting the frame extents set/used properly. Still off on the geom calculations right now. --- src-qt5/core/libLumina/NativeEmbedWidget.cpp | 2 ++ src-qt5/core/libLumina/NativeWindow.cpp | 2 ++ src-qt5/core/libLumina/RootSubWindow.cpp | 40 ++++++++++++++++++++-------- 3 files changed, 33 insertions(+), 11 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/NativeEmbedWidget.cpp b/src-qt5/core/libLumina/NativeEmbedWidget.cpp index fd5939dd..194652f0 100644 --- a/src-qt5/core/libLumina/NativeEmbedWidget.cpp +++ b/src-qt5/core/libLumina/NativeEmbedWidget.cpp @@ -89,6 +89,7 @@ QImage NativeEmbedWidget::windowImage(QRect geom){ image.loadFromData(img->data, img->size); return image;*/ + return QImage(); } // ============ @@ -145,6 +146,7 @@ bool NativeEmbedWidget::embedWindow(NativeWindow *window){ bool NativeEmbedWidget::detachWindow(){ xcb_reparent_window(QX11Info::connection(), WIN->id(), QX11Info::appRootWindow(), -1, -1); WIN = 0; + return true; } bool NativeEmbedWidget::isEmbedded(){ diff --git a/src-qt5/core/libLumina/NativeWindow.cpp b/src-qt5/core/libLumina/NativeWindow.cpp index ff7322f6..94d39cb7 100644 --- a/src-qt5/core/libLumina/NativeWindow.cpp +++ b/src-qt5/core/libLumina/NativeWindow.cpp @@ -6,6 +6,8 @@ //=========================================== #include "NativeWindow.h" +#include + // === PUBLIC === NativeWindow::NativeWindow(WId id) : QObject(){ winid = id; diff --git a/src-qt5/core/libLumina/RootSubWindow.cpp b/src-qt5/core/libLumina/RootSubWindow.cpp index 5ce3d149..11bfde29 100644 --- a/src-qt5/core/libLumina/RootSubWindow.cpp +++ b/src-qt5/core/libLumina/RootSubWindow.cpp @@ -173,6 +173,9 @@ void RootSubWindow::initWindowFrame(){ mainLayout->setSpacing(0); titleBar->setSpacing(1); titleBar->setContentsMargins(0,0,0,0); + this->setFrameRect(QRect(0,0,0,0)); + this->setFrameShape(QFrame::NoFrame); + this->setContentsMargins(0,0,0,0); //Now load the icons for the button LIconCache::instance()->loadIcon(closeB, "window-close"); @@ -186,15 +189,18 @@ void RootSubWindow::LoadProperties( QList< NativeWindow::Property> list){ for(int i=0; iproperty(list[i]); - if(list[i] == NativeWindow::FrameExtents){ + /*if(list[i] == NativeWindow::FrameExtents){ + qDebug() << "Check Frame Extents:" << vals[i]; if(vals[i].isNull()){ - QList frame; frame << WIN_BORDER << WIN_BORDER << WIN_BORDER+titleLabel->height() << WIN_BORDER; + qDebug() << " - supply default frame extents"; + QList frame; frame << WinWidget->geometry().x() << this->width()-WinWidget->geometry().x()-WinWidget->geometry().width() << WinWidget->y() << this->height() - WinWidget->y() - WinWidget->geometry().height(); vals[i] = QVariant::fromValue< QList >(frame); //use this by default WIN->requestProperty(NativeWindow::FrameExtents, QVariant::fromValue< QList >(frame)); //make sure these values get saved permanently WIN->setProperty(NativeWindow::FrameExtents, QVariant::fromValue< QList >(frame)); + qDebug() << " - Default values:" << frame; } - } - qDebug() << "Property:" << list[i] << vals[i]; + }*/ + //qDebug() << "Property:" << list[i] << vals[i]; } propertiesChanged(list, vals); WIN->requestProperty(NativeWindow::Visible, true); @@ -215,6 +221,7 @@ void RootSubWindow::clientClosed(){ void RootSubWindow::LoadAllProperties(){ QList< NativeWindow::Property> list = WIN->allProperties(); + list << NativeWindow::FrameExtents; LoadProperties(list); } @@ -264,10 +271,10 @@ void RootSubWindow::startResizing(){ void RootSubWindow::propertiesChanged(QList props, QList vals){ for(int i=0; igeometry(); + qDebug() << "Got Visibility Change:" << vals[i] << this->geometry() << WIN->geometry(); if(vals[i].toBool()){ animResetProp = WIN->geometry(); //this->geometry(); anim->setPropertyName("geometry"); @@ -294,16 +301,21 @@ void RootSubWindow::propertiesChanged(QList props, QList else{ otherB->setIcon(vals[i].value()); } break; case NativeWindow::GlobalPos: - qDebug() << "Got Global Pos:" << this->pos() << WinWidget->mapToGlobal(QPoint(0,0)) << WIN->geometry().topLeft() << vals[i].toPoint(); + //qDebug() << "Got Global Pos:" << this->pos() << WinWidget->mapToGlobal(QPoint(0,0)) << WIN->geometry().topLeft() << vals[i].toPoint(); this->move( vals[i].toPoint() - (WinWidget->mapToGlobal(QPoint(0,0)) - this->pos()) ); //WIN->geometry().topLeft() ); break; case NativeWindow::Size: - //if(WinWidget->size() != vals[i].toSize()){ - qDebug() << "Got Widget Size Change:" << vals[i].toSize(); - //WinWidget->resize(vals[i].toSize()); + qDebug() << " - SIZE CHANGE"; + if(WIN->property(NativeWindow::FrameExtents).isNull() && (istate() != QPropertyAnimation::Running){ + qDebug() << "Got Widget Size Change:" << vals[i].toSize() << WinWidget->size(); this->resize( WIN->geometry().size() ); qDebug() << " - Size after change:" << WinWidget->size() << this->size() << WIN->geometry(); - //} + } break; case NativeWindow::MinSize: WinWidget->setMinimumSize(vals[i].toSize()); @@ -315,6 +327,12 @@ void RootSubWindow::propertiesChanged(QList props, QList //if(vals[i].toBool()){ WinWidget->setFocus(); } break; case NativeWindow::FrameExtents: + qDebug() << " - FRAME CHANGE"; + if(vals[i].isNull()){ + vals[i] = QVariant::fromValue >( QList() << WinWidget->geometry().x() << this->width()-WinWidget->geometry().x()-WinWidget->geometry().width() << WinWidget->y() << this->height() - WinWidget->y() - WinWidget->geometry().height() ); + WIN->setProperty(NativeWindow::FrameExtents, vals[i]); + } + qDebug() << "Setting Frame Extents:" << vals[i].value >(); mainLayout->setContentsMargins( vals[i].value< QList >().at(0),vals[i].value< QList >().at(2) - titleLabel->height(),vals[i].value< QList >().at(1),vals[i].value< QList >().at(3)); break; /*case NativeWindow::WindowFlags: -- cgit From 74b586a36fbb145c0d9ff7013c9a265a048cbef0 Mon Sep 17 00:00:00 2001 From: ZackaryWelch Date: Mon, 17 Jul 2017 10:34:47 -0400 Subject: Changed brightness icon --- .../lumina-desktop/panel-plugins/systemdashboard/SysMenuQuick.cpp | 4 ++-- src-qt5/core/lumina-desktop/panel-plugins/systemstart/StartMenu.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-desktop/panel-plugins/systemdashboard/SysMenuQuick.cpp b/src-qt5/core/lumina-desktop/panel-plugins/systemdashboard/SysMenuQuick.cpp index 1d699ea9..e6602dd6 100644 --- a/src-qt5/core/lumina-desktop/panel-plugins/systemdashboard/SysMenuQuick.cpp +++ b/src-qt5/core/lumina-desktop/panel-plugins/systemdashboard/SysMenuQuick.cpp @@ -29,7 +29,7 @@ LSysMenuQuick::LSysMenuQuick(QWidget *parent) : QWidget(parent), ui(new Ui::LSys connect(brighttimer, SIGNAL(timeout()), this, SLOT(setCurrentBrightness()) ); connect(ui->combo_locale, SIGNAL(currentIndexChanged(int)), this, SLOT(changeLocale()) ); //And setup the default icons - ui->label_bright_icon->setPixmap( LXDG::findIcon("preferences-system-power-management","").pixmap(ui->label_bright_icon->maximumSize()) ); + ui->label_bright_icon->setPixmap( LXDG::findIcon("preferences-desktop-brightness","").pixmap(ui->label_bright_icon->maximumSize()) ); ui->tool_wk_prev->setIcon( LXDG::findIcon("go-previous-view","")); ui->tool_wk_next->setIcon( LXDG::findIcon("go-next-view","") ); ui->tool_logout->setIcon( LXDG::findIcon("system-log-out","") ); @@ -208,4 +208,4 @@ void LSysMenuQuick::changeLocale(){ QString locale = ui->combo_locale->currentData().toString(); emit CloseMenu(); LSession::handle()->switchLocale(locale); -} \ No newline at end of file +} diff --git a/src-qt5/core/lumina-desktop/panel-plugins/systemstart/StartMenu.cpp b/src-qt5/core/lumina-desktop/panel-plugins/systemstart/StartMenu.cpp index 4e6055d6..6557dbee 100644 --- a/src-qt5/core/lumina-desktop/panel-plugins/systemstart/StartMenu.cpp +++ b/src-qt5/core/lumina-desktop/panel-plugins/systemstart/StartMenu.cpp @@ -57,7 +57,7 @@ void StartMenu::UpdateAll(){ ui->tool_launch_deskinfo->setIcon(LXDG::findIcon("system-help","")); ui->tool_launch_mixer->setIcon( LXDG::findIcon("preferences-desktop-sound","") ); - ui->label_bright_icon->setPixmap( LXDG::findIcon("preferences-system-power-management","").pixmap(ui->tool_goto_apps->iconSize()) ); + ui->label_bright_icon->setPixmap( LXDG::findIcon("preferences-desktop-brightness","").pixmap(ui->tool_goto_apps->iconSize()) ); ui->label_locale_icon->setPixmap( LXDG::findIcon("preferences-desktop-locale","").pixmap(ui->tool_goto_apps->iconSize()) ); ui->tool_set_nextwkspace->setIcon(LXDG::findIcon("go-next-view","")); ui->tool_set_prevwkspace->setIcon(LXDG::findIcon("go-previous-view","")); -- cgit From e24e03c8a63e6fb79f512395a0dddabde9056957 Mon Sep 17 00:00:00 2001 From: ZackaryWelch Date: Mon, 17 Jul 2017 12:59:21 -0400 Subject: Added more missing icons --- .../src-DE/panel-plugins/systemdashboard/LSysDashboard.cpp | 2 +- .../core/lumina-desktop/panel-plugins/systemdashboard/LSysDashboard.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemdashboard/LSysDashboard.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemdashboard/LSysDashboard.cpp index 267a7cb0..b9d70e97 100644 --- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemdashboard/LSysDashboard.cpp +++ b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemdashboard/LSysDashboard.cpp @@ -77,7 +77,7 @@ void LSysDashboard::updateIcon(bool force){ } void LSysDashboard::resetIcon(){ - button->setIcon( LXDG::findIcon("dashboard-show","")); + button->setIcon( LXDG::findIcon("arrow-down-drop-circle","")); } void LSysDashboard::openMenu(){ diff --git a/src-qt5/core/lumina-desktop/panel-plugins/systemdashboard/LSysDashboard.cpp b/src-qt5/core/lumina-desktop/panel-plugins/systemdashboard/LSysDashboard.cpp index 267a7cb0..b9d70e97 100644 --- a/src-qt5/core/lumina-desktop/panel-plugins/systemdashboard/LSysDashboard.cpp +++ b/src-qt5/core/lumina-desktop/panel-plugins/systemdashboard/LSysDashboard.cpp @@ -77,7 +77,7 @@ void LSysDashboard::updateIcon(bool force){ } void LSysDashboard::resetIcon(){ - button->setIcon( LXDG::findIcon("dashboard-show","")); + button->setIcon( LXDG::findIcon("arrow-down-drop-circle","")); } void LSysDashboard::openMenu(){ -- cgit From c2ae980ffa96dc8982e5c87f346f2763fcf38d4f Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Tue, 18 Jul 2017 14:26:38 -0400 Subject: Get a lot more of the geometry calculations/movements working. Almost ready to start adding additional window property support --- src-qt5/core/libLumina/NativeEmbedWidget.cpp | 3 +- src-qt5/core/libLumina/NativeEmbedWidget.h | 3 + src-qt5/core/libLumina/NativeEventFilter.cpp | 55 +---------- src-qt5/core/libLumina/NativeWindow.h | 7 ++ src-qt5/core/libLumina/NativeWindowSystem.cpp | 43 +++++---- src-qt5/core/libLumina/RootSubWindow.cpp | 126 ++++++++++++++++---------- src-qt5/core/libLumina/RootSubWindow.h | 5 +- 7 files changed, 118 insertions(+), 124 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/NativeEmbedWidget.cpp b/src-qt5/core/libLumina/NativeEmbedWidget.cpp index 194652f0..2f3691ae 100644 --- a/src-qt5/core/libLumina/NativeEmbedWidget.cpp +++ b/src-qt5/core/libLumina/NativeEmbedWidget.cpp @@ -40,7 +40,7 @@ inline void registerClientEvents(WId id){ //Simplification functions for the XCB/XLib interactions void NativeEmbedWidget::syncWinSize(QSize sz){ if(WIN==0){ return; } - qDebug() << "Sync Window Size:" << sz; + //qDebug() << "Sync Window Size:" << sz; xcb_configure_window_value_list_t valList; valList.x = 0; valList.y = 0; @@ -53,6 +53,7 @@ void NativeEmbedWidget::syncWinSize(QSize sz){ } void NativeEmbedWidget::syncWidgetSize(QSize sz){ + //qDebug() << "Sync Widget Size:" << sz; this->resize(sz); } diff --git a/src-qt5/core/libLumina/NativeEmbedWidget.h b/src-qt5/core/libLumina/NativeEmbedWidget.h index 6919249b..55d655f2 100644 --- a/src-qt5/core/libLumina/NativeEmbedWidget.h +++ b/src-qt5/core/libLumina/NativeEmbedWidget.h @@ -37,6 +37,9 @@ public: bool detachWindow(); bool isEmbedded(); //status of the embed +public slots: + void resyncWindow(){ syncWinSize(this->size()); } + protected: void resizeEvent(QResizeEvent *ev); void showEvent(QShowEvent *ev); diff --git a/src-qt5/core/libLumina/NativeEventFilter.cpp b/src-qt5/core/libLumina/NativeEventFilter.cpp index b85965ef..d6c2da50 100644 --- a/src-qt5/core/libLumina/NativeEventFilter.cpp +++ b/src-qt5/core/libLumina/NativeEventFilter.cpp @@ -76,7 +76,7 @@ inline void ParsePropertyEvent(xcb_property_notify_event_t *ev, NativeEventFilte else if( ev->atom == EWMH._NET_WM_STATE){ prop = NativeWindow::States; } //Send out the signal if necessary if(prop!=NativeWindow::None){ - qDebug() << "Detected Property Change:" << ev->window << prop; + if(DEBUG){ qDebug() << "Detected Property Change:" << ev->window << prop; } obj->emit WindowPropertyChanged(ev->window, prop); }else{ //qDebug() << "Unknown Property Change:" << ev->window << ev->atom; @@ -157,7 +157,7 @@ bool EventFilter::nativeEventFilter(const QByteArray &eventType, void *message, break; case XCB_MOTION_NOTIFY: //This is a mouse movement event - qDebug() << "Motion Notify Event"; + if(DEBUG){ qDebug() << "Motion Notify Event"; } obj->emit MouseMovement(); break; case XCB_ENTER_NOTIFY: @@ -270,54 +270,3 @@ bool EventFilter::nativeEventFilter(const QByteArray &eventType, void *message, return false; //never stop event handling (this will not impact the X events themselves - just the internal Qt application) } - - -//========= -// PRIVATE -//========= - - -// WINDOW HANDLING FUNCTIONS -/*void EventFilter::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); -}*/ diff --git a/src-qt5/core/libLumina/NativeWindow.h b/src-qt5/core/libLumina/NativeWindow.h index 5fa194c9..47359b7d 100644 --- a/src-qt5/core/libLumina/NativeWindow.h +++ b/src-qt5/core/libLumina/NativeWindow.h @@ -107,4 +107,11 @@ signals: //void RequestEmbed(WId, QWidget*); //void RequestUnEmbed(WId, QWidget*); }; + +// Declare the enumerations as Qt MetaTypes +Q_DECLARE_METATYPE(NativeWindow::Type); +Q_DECLARE_METATYPE(NativeWindow::Action); +Q_DECLARE_METATYPE(NativeWindow::State); +Q_DECLARE_METATYPE(NativeWindow::Property); + #endif diff --git a/src-qt5/core/libLumina/NativeWindowSystem.cpp b/src-qt5/core/libLumina/NativeWindowSystem.cpp index bf827a1b..e0f3fe91 100644 --- a/src-qt5/core/libLumina/NativeWindowSystem.cpp +++ b/src-qt5/core/libLumina/NativeWindowSystem.cpp @@ -260,8 +260,8 @@ NativeWindow* NativeWindowSystem::findWindow(WId id, bool checkRelated){ } //Check to see if this is a transient for some other window if(checkRelated){ - WId tid = obj->getTransientFor(id); - if(tid!=id){ return findWindow(tid, checkRelated); } //call it recursively as needed + //WId tid = obj->getTransientFor(id); + //if(tid!=id){ return findWindow(tid, checkRelated); } //call it recursively as needed //qDebug() << " -- Could not find Window!"; } return 0; @@ -438,7 +438,7 @@ void NativeWindowSystem::UpdateWindowProperties(NativeWindow* win, QList< Native } if(props.contains(NativeWindow::FrameExtents)){ //Just assign default values to this - need to automate it later - win->setProperty(NativeWindow::FrameExtents, QVariant::fromValue >(QList() << 5 << 5 << 5+QFontMetrics(QFont()).height() << 5) ); + //win->setProperty(NativeWindow::FrameExtents, QVariant::fromValue >(QList() << 5 << 5 << 5+QFontMetrics(QFont()).height() << 5) ); } if(props.contains(NativeWindow::RelatedWindows)){ WId orig = win->id(); @@ -458,6 +458,11 @@ void NativeWindowSystem::UpdateWindowProperties(NativeWindow* win, QList< Native free(attr); } } + if(props.contains(NativeWindow::WinTypes)){ + QList< NativeWindow::Type> types; + types << NativeWindow::T_NORMAL; //make this load appropriately later + win->setProperty(NativeWindow::WinTypes, QVariant::fromValue< QList >(types) ); + } } void NativeWindowSystem::ChangeWindowProperties(NativeWindow* win, QList< NativeWindow::Property > props, QList vals){ @@ -472,29 +477,27 @@ void NativeWindowSystem::ChangeWindowProperties(NativeWindow* win, QList< Native if(props.contains(NativeWindow::Icon)){ } - if(props.contains(NativeWindow::Size) ){//|| props.contains(NativeWindow::GlobalPos) ){ + if(props.contains(NativeWindow::Size) || props.contains(NativeWindow::GlobalPos) ){ xcb_configure_window_value_list_t valList; - valList.x = 0; + valList.x = 0; //Note that this is the relative position - should always be 0,0 relative to the embed widget valList.y = 0; - uint16_t mask = 0; - //if(props.contains(NativeWindow::Size)){ - QSize sz = vals[ props.indexOf(NativeWindow::Size) ] .toSize(); - valList.width = sz.width(); - valList.height = sz.height(); - mask = mask | XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT; - /*}else{ - valList.width = win->property(NativeWindow::Size).toSize().width(); - valList.height = win->property(NativeWindow::Size).toSize().height(); - }*/ + QSize sz = win->property(NativeWindow::Size).toSize(); + if(props.contains(NativeWindow::Size)){ + sz = vals[ props.indexOf(NativeWindow::Size) ] .toSize(); + } + valList.width = sz.width(); + valList.height = sz.height(); /*if(props.contains(NativeWindow::GlobalPos)){ QPoint pt = vals[ props.indexOf(NativeWindow::GlobalPos) ] .toPoint(); valList.x = pt.x(); - valList.y = pt.y();*/ - mask = mask | XCB_CONFIG_WINDOW_X | XCB_CONFIG_WINDOW_Y; - /*}else{ + valList.y = pt.y(); + }else{ valList.x = win->property(NativeWindow::GlobalPos).toPoint().x(); valList.y = win->property(NativeWindow::GlobalPos).toPoint().y(); }*/ + uint16_t mask = 0; + mask = mask | XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT | XCB_CONFIG_WINDOW_X | XCB_CONFIG_WINDOW_Y; + qDebug() << "Configure window Geometry:" << sz; xcb_configure_window_aux(QX11Info::connection(), win->id(), mask, &valList); } if(props.contains(NativeWindow::Name)){ @@ -725,7 +728,7 @@ void NativeWindowSystem::WindowCloseDetected(WId id){ void NativeWindowSystem::WindowPropertyChanged(WId id, NativeWindow::Property prop){ //NOTE: This is triggered by the NativeEventFilter - not by changes to the NativeWindow objects themselves - NativeWindow *win = findWindow(id); + NativeWindow *win = findWindow(id, prop!=NativeWindow::Visible); if(win==0){ win = findTrayWindow(id); } if(win!=0){ UpdateWindowProperties(win, QList() << prop); @@ -733,7 +736,7 @@ void NativeWindowSystem::WindowPropertyChanged(WId id, NativeWindow::Property pr } void NativeWindowSystem::WindowPropertyChanged(WId id, NativeWindow::Property prop, QVariant val){ - NativeWindow *win = findWindow(id); + NativeWindow *win = findWindow(id,prop!=NativeWindow::Visible); if(win==0){ win = findTrayWindow(id); } if(win!=0){ win->setProperty(prop, val); diff --git a/src-qt5/core/libLumina/RootSubWindow.cpp b/src-qt5/core/libLumina/RootSubWindow.cpp index 11bfde29..8c7c9b1a 100644 --- a/src-qt5/core/libLumina/RootSubWindow.cpp +++ b/src-qt5/core/libLumina/RootSubWindow.cpp @@ -22,14 +22,12 @@ RootSubWindow::RootSubWindow(QWidget *root, NativeWindow *win) : QFrame(root){ //Create the QWindow and QWidget containers for the window WIN = win; closing = false; - //WinWidget = QWidget::createWindowContainer( WIN->window(), this); initWindowFrame(); //Hookup the signals/slots connect(WIN, SIGNAL(PropertiesChanged(QList, QList)), this, SLOT(propertiesChanged(QList, QList))); WinWidget->embedWindow(WIN); qDebug() << "[NEW WINDOW]" << WIN->id() << WinWidget->winId() << this->winId(); LoadAllProperties(); - //this->show(); } RootSubWindow::~RootSubWindow(){ @@ -48,10 +46,10 @@ RootSubWindow::ModState RootSubWindow::getStateAtPoint(QPoint pt, bool setoffset //above the frame itself - need to figure out which quadrant it is in (8-directions) if(pt.y() < WIN_BORDER){ //One of the top options - if(pt.x() < WIN_BORDER){ + if(pt.x() < this->width()/5){ if(setoffset){ offset.setX(pt.x()); offset.setY(pt.y()); } //difference from top-left corner return ResizeTopLeft; - }else if(pt.x() > (this->width()-WIN_BORDER)){ + }else if(pt.x() > (this->width()*4.0/5.0)){ if(setoffset){ offset.setX(this->width()-pt.x()); offset.setY(pt.y()); } //difference from top-right corner return ResizeTopRight; }else{ @@ -60,10 +58,10 @@ RootSubWindow::ModState RootSubWindow::getStateAtPoint(QPoint pt, bool setoffset } }else if(pt.y() > (this->height()-WIN_BORDER) ){ //One of the bottom options - if(pt.x() < WIN_BORDER){ + if(pt.x() < this->width()/5){ if(setoffset){ offset.setX(pt.x()); offset.setY(this->height()-pt.y()); } //difference from bottom-left corner return ResizeBottomLeft; - }else if(pt.x() > (this->width()-WIN_BORDER)){ + }else if(pt.x() > (this->width()*4.0/5.0)){ if(setoffset){ offset.setX(this->width()-pt.x()); offset.setY(this->height()-pt.y()); } //difference from bottom-right corner return ResizeBottomRight; }else{ @@ -131,8 +129,13 @@ void RootSubWindow::setMouseCursor(ModState state, bool override){ void RootSubWindow::initWindowFrame(){ //qDebug() << "Create RootSubWindow Frame"; + this->setContentsMargins(0,0,0,0); mainLayout = new QVBoxLayout(this); - titleBar = new QHBoxLayout(); + mainLayout->setContentsMargins(0,0,0,0); + titleBar = new QWidget(this); + titleBar->setContentsMargins(0,0,0,0); + titleBarL = new QHBoxLayout(titleBar); + titleBarL->setContentsMargins(0,0,0,0); closeB = new QToolButton(this); maxB = new QToolButton(this); minB = new QToolButton(this); @@ -152,13 +155,14 @@ void RootSubWindow::initWindowFrame(){ connect(maxB, SIGNAL(clicked()), this, SLOT(toggleMaximize()) ); connect(minB, SIGNAL(clicked()), this, SLOT(toggleMinimize()) ); //Now assemble the frame layout based on the current settings - titleBar->addWidget(otherB); - titleBar->addWidget(titleLabel); - titleBar->addWidget(minB); - titleBar->addWidget(maxB); - titleBar->addWidget(closeB); + titleBarL->addWidget(otherB); + titleBarL->addWidget(titleLabel); + titleBarL->addWidget(minB); + titleBarL->addWidget(maxB); + titleBarL->addWidget(closeB); WinWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - mainLayout->addLayout(titleBar); + titleBar->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); + mainLayout->addWidget(titleBar); mainLayout->addWidget(WinWidget); //Now all the stylesheet options this->setObjectName("WindowFrame"); @@ -167,15 +171,20 @@ void RootSubWindow::initWindowFrame(){ maxB->setObjectName("Button_Maximize"); otherM->setObjectName("Menu_Actions"); titleLabel->setObjectName("Label_Title"); - this->setStyleSheet("QWidget#WindowFrame{background-color: rgba(0,0,0,125);} QWidget#Label_Title{background-color: transparent; color: white; } QToolButton{background-color: transparent; border: 1px solid transparent; border-radius: 3px; } QToolButton::hover{background-color: rgba(255,255,255,150); } QToolButton::pressed{ background-color: white; } QToolButton::menu-arrow{ image: none; }"); + this->setStyleSheet("QFrame#WindowFrame{background-color: rgba(0,0,0,125)} QWidget#Label_Title{background-color: transparent; color: white; } QToolButton{background-color: transparent; border: 1px solid transparent; border-radius: 3px; } QToolButton::hover{background-color: rgba(255,255,255,150); } QToolButton::pressed{ background-color: white; } QToolButton::menu-arrow{ image: none; }"); //And adjust the margins - mainLayout->setContentsMargins(WIN_BORDER,WIN_BORDER,WIN_BORDER,WIN_BORDER); //default border mainLayout->setSpacing(0); - titleBar->setSpacing(1); - titleBar->setContentsMargins(0,0,0,0); + titleBarL->setSpacing(1); + this->setFrameStyle(QFrame::NoFrame); + this->setLineWidth(0); + this->setMidLineWidth(0); this->setFrameRect(QRect(0,0,0,0)); - this->setFrameShape(QFrame::NoFrame); - this->setContentsMargins(0,0,0,0); + + //Setup the timer object to syncronize info + moveTimer = new QTimer(this); + moveTimer->setSingleShot(true); + moveTimer->setInterval(100); //1/10 second + connect(moveTimer, SIGNAL(timeout()), WinWidget, SLOT(resyncWindow()) ); //Now load the icons for the button LIconCache::instance()->loadIcon(closeB, "window-close"); @@ -184,26 +193,34 @@ void RootSubWindow::initWindowFrame(){ LIconCache::instance()->loadIcon(otherB, "list"); } +void RootSubWindow::enableFrame(bool on){ + //Make the individual frame elements visible as needed + if(on){ this->setContentsMargins(WIN_BORDER,WIN_BORDER,WIN_BORDER,WIN_BORDER); }//default border + else{ this->setContentsMargins(0, 0, 0, 0); } + titleBar->setVisible(on); + //And now calculate/save the frame extents + QList extents; extents << 0 << 0 << 0 << 0; //left, right, top, bottom + if(on){ + extents[0] = WIN_BORDER; + extents[1] = WIN_BORDER; + extents[2] = WIN_BORDER + titleBar->height(); + extents[3] = WIN_BORDER; + } + qDebug() << "SET FRAME EXTENTS:" << extents; + WIN->requestProperty(NativeWindow::FrameExtents, QVariant::fromValue< QList >(extents) ); //save on raw window itself + WIN->setProperty(NativeWindow::FrameExtents, QVariant::fromValue< QList >(extents) ); //save to structure now +} + void RootSubWindow::LoadProperties( QList< NativeWindow::Property> list){ QList vals; + //Always ensure that visibility changes are evaluated last + bool addvisible = false; for(int i=0; iproperty(list[i]); - /*if(list[i] == NativeWindow::FrameExtents){ - qDebug() << "Check Frame Extents:" << vals[i]; - if(vals[i].isNull()){ - qDebug() << " - supply default frame extents"; - QList frame; frame << WinWidget->geometry().x() << this->width()-WinWidget->geometry().x()-WinWidget->geometry().width() << WinWidget->y() << this->height() - WinWidget->y() - WinWidget->geometry().height(); - vals[i] = QVariant::fromValue< QList >(frame); //use this by default - WIN->requestProperty(NativeWindow::FrameExtents, QVariant::fromValue< QList >(frame)); //make sure these values get saved permanently - WIN->setProperty(NativeWindow::FrameExtents, QVariant::fromValue< QList >(frame)); - qDebug() << " - Default values:" << frame; - } - }*/ - //qDebug() << "Property:" << list[i] << vals[i]; } + //if(addvisible){ list << NativeWindow::Visible; vals << WIN->property(NativeWindow::Visible); } propertiesChanged(list, vals); - WIN->requestProperty(NativeWindow::Visible, true); } // === PUBLIC SLOTS === @@ -220,9 +237,12 @@ void RootSubWindow::clientClosed(){ } void RootSubWindow::LoadAllProperties(){ - QList< NativeWindow::Property> list = WIN->allProperties(); - list << NativeWindow::FrameExtents; + QList< NativeWindow::Property> list; + list << NativeWindow::WinTypes << NativeWindow::WinActions << NativeWindow::States + << NativeWindow::MinSize << NativeWindow::MaxSize << NativeWindow::Title << NativeWindow::ShortTitle + << NativeWindow::Icon << NativeWindow::Size << NativeWindow::GlobalPos << NativeWindow::Visible << NativeWindow::Active; LoadProperties(list); + WIN->requestProperty(NativeWindow::Visible, true); } //Button Actions - public so they can be tied to key shortcuts and stuff as well @@ -271,10 +291,10 @@ void RootSubWindow::startResizing(){ void RootSubWindow::propertiesChanged(QList props, QList vals){ for(int i=0; igeometry() << WIN->geometry(); + //qDebug() << "Got Visibility Change:" << vals[i] << this->geometry() << WIN->geometry(); if(vals[i].toBool()){ animResetProp = WIN->geometry(); //this->geometry(); anim->setPropertyName("geometry"); @@ -312,9 +332,12 @@ void RootSubWindow::propertiesChanged(QList props, QList vals << vals.takeAt(i); i--; }else if(anim->state() != QPropertyAnimation::Running){ - qDebug() << "Got Widget Size Change:" << vals[i].toSize() << WinWidget->size(); - this->resize( WIN->geometry().size() ); - qDebug() << " - Size after change:" << WinWidget->size() << this->size() << WIN->geometry(); + if(vals[i].toSize() != WinWidget->size()){ + qDebug() << "Got Widget Size Change:" << vals[i].toSize() << WinWidget->size(); + WinWidget->resize(vals[i].toSize()); + this->resize( WIN->geometry().size() ); + qDebug() << " - Size after change:" << WinWidget->size() << this->size() << WIN->geometry(); + } } break; case NativeWindow::MinSize: @@ -326,7 +349,7 @@ void RootSubWindow::propertiesChanged(QList props, QList case NativeWindow::Active: //if(vals[i].toBool()){ WinWidget->setFocus(); } break; - case NativeWindow::FrameExtents: + /*case NativeWindow::FrameExtents: qDebug() << " - FRAME CHANGE"; if(vals[i].isNull()){ vals[i] = QVariant::fromValue >( QList() << WinWidget->geometry().x() << this->width()-WinWidget->geometry().x()-WinWidget->geometry().width() << WinWidget->y() << this->height() - WinWidget->y() - WinWidget->geometry().height() ); @@ -334,10 +357,10 @@ void RootSubWindow::propertiesChanged(QList props, QList } qDebug() << "Setting Frame Extents:" << vals[i].value >(); mainLayout->setContentsMargins( vals[i].value< QList >().at(0),vals[i].value< QList >().at(2) - titleLabel->height(),vals[i].value< QList >().at(1),vals[i].value< QList >().at(3)); - break; - /*case NativeWindow::WindowFlags: - this->setWindowFlags( val.value< Qt::WindowFlags >() ); break;*/ + case NativeWindow::WinTypes: + enableFrame(vals[i].value< QList >().contains(NativeWindow::T_NORMAL) ); + break; default: qDebug() << "Window Property Unused:" << props[i] << vals[i]; } @@ -473,7 +496,7 @@ void RootSubWindow::mouseReleaseEvent(QMouseEvent *ev){ activeState = Normal; QApplication::restoreOverrideCursor(); setMouseCursor( getStateAtPoint(ev->pos()) ); - if(QWidget::mouseGrabber() == this){ this->releaseMouse(); } + if(QFrame::mouseGrabber() == this){ this->releaseMouse(); } } void RootSubWindow::leaveEvent(QEvent *ev){ @@ -490,9 +513,9 @@ void RootSubWindow::leaveEvent(QEvent *ev){ void RootSubWindow::resizeEvent(QResizeEvent *ev){ //qDebug() << "Got Resize Event:" << ev->size(); - if(WinWidget->size() != WIN->property(NativeWindow::Size).toSize() && anim->state()!=QAbstractAnimation::Running){ + /*if(WinWidget->size() != WIN->property(NativeWindow::Size).toSize() && anim->state()!=QAbstractAnimation::Running){ WIN->requestProperty(NativeWindow::Size, WinWidget->size()); - } + }*/ QFrame::resizeEvent(ev); } @@ -502,7 +525,12 @@ void RootSubWindow::resizeEvent(QResizeEvent *ev){ }*/ void RootSubWindow::moveEvent(QMoveEvent *ev){ - //qDebug() << "Got Move Event:" << ev->pos() << WinWidget->mapToGlobal(QPoint(0,0)); - if(!closing && anim->state()!=QAbstractAnimation::Running){ WIN->setProperty(NativeWindow::GlobalPos, WinWidget->mapToGlobal(QPoint(0,0)) ); } + qDebug() << "Got Move Event:" << ev->pos() << WinWidget->geometry(); QFrame::moveEvent(ev); + if(!closing && anim->state()!=QAbstractAnimation::Running){ + moveTimer->start(); + //WinWidget->resyncWindow(); + //WIN->requestProperty(NativeWindow::GlobalPos, ev->pos() ); + } + } diff --git a/src-qt5/core/libLumina/RootSubWindow.h b/src-qt5/core/libLumina/RootSubWindow.h index cef6f2ff..804dcc9d 100644 --- a/src-qt5/core/libLumina/RootSubWindow.h +++ b/src-qt5/core/libLumina/RootSubWindow.h @@ -44,14 +44,17 @@ private: NativeEmbedWidget *WinWidget; bool closing; //Title bar objects - QBoxLayout *titleBar, *mainLayout; + QBoxLayout *titleBarL, *mainLayout; QToolButton *closeB, *maxB, *minB, *otherB; QLabel *titleLabel; QMenu *otherM; //menu of other actions + QWidget *titleBar; //Other random objects (animations,etc) QPropertyAnimation *anim; QVariant animResetProp; + QTimer *moveTimer; void initWindowFrame(); + void enableFrame(bool); void LoadProperties( QList< NativeWindow::Property> list); -- cgit From e4ec849945d035909187149a2b36e5b5d3ba4c27 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Tue, 18 Jul 2017 14:41:24 -0400 Subject: Add some better edge-detection systems for the window borders on the left/right sides. --- src-qt5/core/libLumina/RootSubWindow.cpp | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/RootSubWindow.cpp b/src-qt5/core/libLumina/RootSubWindow.cpp index 8c7c9b1a..d4c0ceeb 100644 --- a/src-qt5/core/libLumina/RootSubWindow.cpp +++ b/src-qt5/core/libLumina/RootSubWindow.cpp @@ -68,17 +68,32 @@ RootSubWindow::ModState RootSubWindow::getStateAtPoint(QPoint pt, bool setoffset if(setoffset){ offset.setX(0); offset.setY(this->height() - pt.y()); } //difference from bottom edge (X does not matter) return ResizeBottom; } - }else{ - //One of the side options - if(pt.x() < WIN_BORDER){ + }else if(pt.x() < WIN_BORDER){ + //Left side options + if(pt.y() < this->height()/5){ + if(setoffset){ offset.setX(pt.x()); offset.setY(pt.y()); } //difference from top-left corner + return ResizeTopLeft; + }else if(pt.y() > (this->height()*4.0/5.0)){ + if(setoffset){ offset.setX(pt.x()); offset.setY(this->height()-pt.y()); } //difference from bottom-left corner + return ResizeBottomLeft; + }else{ if(setoffset){ offset.setX(pt.x()); offset.setY(0); } //difference from left edge (Y does not matter) return ResizeLeft; - }else if(pt.x() > (this->width()-WIN_BORDER) ){ + } + }else if(pt.x() > (this->width()-WIN_BORDER) ){ + //Right side options + if(pt.y() < this->height()/5){ + if(setoffset){ offset.setX(this->width()-pt.x()); offset.setY(pt.y()); } //difference from top-right corner + return ResizeTopRight; + }else if(pt.y() > (this->height()*4.0/5.0)){ + if(setoffset){ offset.setX(this->width()-pt.x()); offset.setY(this->height()-pt.y()); } //difference from bottom-right corner + return ResizeBottomRight; + }else{ if(setoffset){ offset.setX(this->width()-pt.x()); offset.setY(0); } //difference from right edge (Y does not matter) return ResizeRight; - }else{ - return Normal; } + }else{ + return Normal; } } return Normal; @@ -525,7 +540,7 @@ void RootSubWindow::resizeEvent(QResizeEvent *ev){ }*/ void RootSubWindow::moveEvent(QMoveEvent *ev){ - qDebug() << "Got Move Event:" << ev->pos() << WinWidget->geometry(); + //qDebug() << "Got Move Event:" << ev->pos() << WinWidget->geometry(); QFrame::moveEvent(ev); if(!closing && anim->state()!=QAbstractAnimation::Running){ moveTimer->start(); -- cgit From 2e9f29c3fc01d52a2b832f91a2c1ffcc458b0725 Mon Sep 17 00:00:00 2001 From: q5sys Date: Tue, 18 Jul 2017 16:01:46 -0400 Subject: commit of qt5ct source tree --- src-qt5/core/lumina-theme-engine/AUTHORS | 23 + src-qt5/core/lumina-theme-engine/COPYING | 26 + src-qt5/core/lumina-theme-engine/ChangeLog | 221 +++ src-qt5/core/lumina-theme-engine/ChangeLog.svn | 1618 ++++++++++++++++++++ src-qt5/core/lumina-theme-engine/LICENSE | 37 + src-qt5/core/lumina-theme-engine/README | 55 + src-qt5/core/lumina-theme-engine/qt5ct.pri | 33 + src-qt5/core/lumina-theme-engine/qt5ct.pro | 37 + .../src/qt5ct-qtplugin/main.cpp | 52 + .../src/qt5ct-qtplugin/qt5ct-qtplugin.pro | 35 + .../src/qt5ct-qtplugin/qt5ct.json | 3 + .../src/qt5ct-qtplugin/qt5ctplatformtheme.cpp | 366 +++++ .../src/qt5ct-qtplugin/qt5ctplatformtheme.h | 122 ++ .../lumina-theme-engine/src/qt5ct-style/plugin.cpp | 57 + .../src/qt5ct-style/qt5ct-style.pro | 26 + .../lumina-theme-engine/src/qt5ct-style/qt5ct.json | 3 + .../src/qt5ct-style/qt5ctproxystyle.cpp | 63 + .../src/qt5ct-style/qt5ctproxystyle.h | 50 + .../src/qt5ct/appearancepage.cpp | 418 +++++ .../lumina-theme-engine/src/qt5ct/appearancepage.h | 79 + .../src/qt5ct/appearancepage.ui | 243 +++ .../qt5ct/desktop-translations/qt5ct_ar.desktop.in | 33 + .../qt5ct/desktop-translations/qt5ct_bg.desktop.in | 33 + .../qt5ct/desktop-translations/qt5ct_cs.desktop.in | 33 + .../qt5ct/desktop-translations/qt5ct_de.desktop.in | 33 + .../qt5ct/desktop-translations/qt5ct_el.desktop.in | 33 + .../desktop-translations/qt5ct_es_ES.desktop.in | 29 + .../qt5ct/desktop-translations/qt5ct_fr.desktop.in | 33 + .../qt5ct/desktop-translations/qt5ct_he.desktop.in | 33 + .../desktop-translations/qt5ct_it_IT.desktop.in | 32 + .../desktop-translations/qt5ct_nl_NL.desktop.in | 33 + .../qt5ct/desktop-translations/qt5ct_pl.desktop.in | 32 + .../qt5ct/desktop-translations/qt5ct_ru.desktop.in | 19 + .../qt5ct/desktop-translations/qt5ct_sk.desktop.in | 30 + .../qt5ct/desktop-translations/qt5ct_sr.desktop.in | 33 + .../desktop-translations/qt5ct_zh_CN.desktop.in | 29 + .../desktop-translations/qt5ct_zh_TW.desktop.in | 33 + .../src/qt5ct/fontconfigdialog.cpp | 138 ++ .../src/qt5ct/fontconfigdialog.h | 56 + .../src/qt5ct/fontconfigdialog.ui | 160 ++ .../lumina-theme-engine/src/qt5ct/fontspage.cpp | 126 ++ .../core/lumina-theme-engine/src/qt5ct/fontspage.h | 62 + .../lumina-theme-engine/src/qt5ct/fontspage.ui | 134 ++ .../src/qt5ct/iconthemepage.cpp | 214 +++ .../lumina-theme-engine/src/qt5ct/iconthemepage.h | 57 + .../lumina-theme-engine/src/qt5ct/iconthemepage.ui | 51 + .../src/qt5ct/interfacepage.cpp | 140 ++ .../lumina-theme-engine/src/qt5ct/interfacepage.h | 54 + .../lumina-theme-engine/src/qt5ct/interfacepage.ui | 327 ++++ .../core/lumina-theme-engine/src/qt5ct/main.cpp | 84 + .../lumina-theme-engine/src/qt5ct/mainwindow.cpp | 90 ++ .../lumina-theme-engine/src/qt5ct/mainwindow.h | 57 + .../lumina-theme-engine/src/qt5ct/mainwindow.ui | 47 + .../src/qt5ct/paletteeditdialog.cpp | 146 ++ .../src/qt5ct/paletteeditdialog.h | 68 + .../src/qt5ct/paletteeditdialog.ui | 120 ++ .../lumina-theme-engine/src/qt5ct/previewform.ui | 76 + .../src/qt5ct/qsseditordialog.cpp | 85 + .../src/qt5ct/qsseditordialog.h | 59 + .../src/qt5ct/qsseditordialog.ui | 47 + .../core/lumina-theme-engine/src/qt5ct/qsspage.cpp | 232 +++ .../core/lumina-theme-engine/src/qt5ct/qsspage.h | 66 + .../core/lumina-theme-engine/src/qt5ct/qsspage.ui | 84 + .../core/lumina-theme-engine/src/qt5ct/qt5ct.cpp | 115 ++ .../lumina-theme-engine/src/qt5ct/qt5ct.desktop | 60 + src-qt5/core/lumina-theme-engine/src/qt5ct/qt5ct.h | 60 + .../core/lumina-theme-engine/src/qt5ct/qt5ct.pro | 57 + .../core/lumina-theme-engine/src/qt5ct/tabpage.cpp | 33 + .../core/lumina-theme-engine/src/qt5ct/tabpage.h | 43 + .../src/qt5ct/translations/qt5ct_ar.ts | 709 +++++++++ .../src/qt5ct/translations/qt5ct_bg.ts | 709 +++++++++ .../src/qt5ct/translations/qt5ct_ca.ts | 709 +++++++++ .../src/qt5ct/translations/qt5ct_cs.ts | 709 +++++++++ .../src/qt5ct/translations/qt5ct_de.ts | 709 +++++++++ .../src/qt5ct/translations/qt5ct_el.ts | 710 +++++++++ .../src/qt5ct/translations/qt5ct_en.ts | 709 +++++++++ .../src/qt5ct/translations/qt5ct_es.ts | 709 +++++++++ .../src/qt5ct/translations/qt5ct_es_ES.ts | 709 +++++++++ .../src/qt5ct/translations/qt5ct_fr.ts | 709 +++++++++ .../src/qt5ct/translations/qt5ct_gl_ES.ts | 709 +++++++++ .../src/qt5ct/translations/qt5ct_he.ts | 709 +++++++++ .../src/qt5ct/translations/qt5ct_hu.ts | 709 +++++++++ .../src/qt5ct/translations/qt5ct_it.ts | 709 +++++++++ .../src/qt5ct/translations/qt5ct_it_IT.ts | 709 +++++++++ .../src/qt5ct/translations/qt5ct_ja.ts | 709 +++++++++ .../src/qt5ct/translations/qt5ct_kk.ts | 709 +++++++++ .../src/qt5ct/translations/qt5ct_lt.ts | 709 +++++++++ .../src/qt5ct/translations/qt5ct_nl.ts | 709 +++++++++ .../src/qt5ct/translations/qt5ct_nl_NL.ts | 709 +++++++++ .../src/qt5ct/translations/qt5ct_pl.ts | 709 +++++++++ .../src/qt5ct/translations/qt5ct_pt.ts | 709 +++++++++ .../src/qt5ct/translations/qt5ct_pt_BR.ts | 709 +++++++++ .../src/qt5ct/translations/qt5ct_ru.ts | 709 +++++++++ .../src/qt5ct/translations/qt5ct_sk.ts | 709 +++++++++ .../src/qt5ct/translations/qt5ct_sr.ts | 709 +++++++++ .../src/qt5ct/translations/qt5ct_sr_BA.ts | 709 +++++++++ .../src/qt5ct/translations/qt5ct_sr_RS.ts | 709 +++++++++ .../src/qt5ct/translations/qt5ct_tr.ts | 709 +++++++++ .../src/qt5ct/translations/qt5ct_uk_UA.ts | 709 +++++++++ .../src/qt5ct/translations/qt5ct_zh_CN.ts | 709 +++++++++ .../src/qt5ct/translations/qt5ct_zh_TW.ts | 709 +++++++++ .../src/qt5ct/translations/translations.qrc | 36 + src-qt5/core/lumina-theme-engine/test.sh | 11 + .../core/lumina-theme-engine/utils/update_ts.sh | 40 + .../core/lumina-theme-engine/utils/update_tx.sh | 37 + 105 files changed, 30029 insertions(+) create mode 100644 src-qt5/core/lumina-theme-engine/AUTHORS create mode 100644 src-qt5/core/lumina-theme-engine/COPYING create mode 100644 src-qt5/core/lumina-theme-engine/ChangeLog create mode 100644 src-qt5/core/lumina-theme-engine/ChangeLog.svn create mode 100644 src-qt5/core/lumina-theme-engine/LICENSE create mode 100644 src-qt5/core/lumina-theme-engine/README create mode 100644 src-qt5/core/lumina-theme-engine/qt5ct.pri create mode 100644 src-qt5/core/lumina-theme-engine/qt5ct.pro create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct-qtplugin/main.cpp create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct-qtplugin/qt5ct-qtplugin.pro create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct-qtplugin/qt5ct.json create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct-qtplugin/qt5ctplatformtheme.cpp create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct-qtplugin/qt5ctplatformtheme.h create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct-style/plugin.cpp create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct-style/qt5ct-style.pro create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct-style/qt5ct.json create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct-style/qt5ctproxystyle.cpp create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct-style/qt5ctproxystyle.h create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/appearancepage.cpp create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/appearancepage.h create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/appearancepage.ui create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_ar.desktop.in create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_bg.desktop.in create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_cs.desktop.in create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_de.desktop.in create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_el.desktop.in create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_es_ES.desktop.in create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_fr.desktop.in create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_he.desktop.in create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_it_IT.desktop.in create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_nl_NL.desktop.in create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_pl.desktop.in create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_ru.desktop.in create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_sk.desktop.in create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_sr.desktop.in create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_zh_CN.desktop.in create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_zh_TW.desktop.in create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/fontconfigdialog.cpp create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/fontconfigdialog.h create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/fontconfigdialog.ui create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/fontspage.cpp create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/fontspage.h create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/fontspage.ui create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/iconthemepage.cpp create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/iconthemepage.h create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/iconthemepage.ui create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/interfacepage.cpp create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/interfacepage.h create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/interfacepage.ui create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/main.cpp create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/mainwindow.cpp create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/mainwindow.h create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/mainwindow.ui create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/paletteeditdialog.cpp create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/paletteeditdialog.h create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/paletteeditdialog.ui create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/previewform.ui create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/qsseditordialog.cpp create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/qsseditordialog.h create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/qsseditordialog.ui create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/qsspage.cpp create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/qsspage.h create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/qsspage.ui create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/qt5ct.cpp create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/qt5ct.desktop create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/qt5ct.h create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/qt5ct.pro create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/tabpage.cpp create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/tabpage.h create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_ar.ts create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_bg.ts create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_ca.ts create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_cs.ts create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_de.ts create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_el.ts create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_en.ts create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_es.ts create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_es_ES.ts create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_fr.ts create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_gl_ES.ts create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_he.ts create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_hu.ts create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_it.ts create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_it_IT.ts create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_ja.ts create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_kk.ts create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_lt.ts create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_nl.ts create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_nl_NL.ts create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_pl.ts create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_pt.ts create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_pt_BR.ts create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_ru.ts create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_sk.ts create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_sr.ts create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_sr_BA.ts create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_sr_RS.ts create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_tr.ts create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_uk_UA.ts create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_zh_CN.ts create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_zh_TW.ts create mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/translations.qrc create mode 100755 src-qt5/core/lumina-theme-engine/test.sh create mode 100755 src-qt5/core/lumina-theme-engine/utils/update_ts.sh create mode 100755 src-qt5/core/lumina-theme-engine/utils/update_tx.sh (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-theme-engine/AUTHORS b/src-qt5/core/lumina-theme-engine/AUTHORS new file mode 100644 index 00000000..d88b0ce9 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/AUTHORS @@ -0,0 +1,23 @@ +Developers: + + Ilya Kotov , + +Translators: + + Arabic - abouzakaria kov + Bulgarian - Kiril Kirilov + Chinese (Simplified) - Cary Tian + Chinese (Taiwan) - Jeff Huang + Czech - fri + French - David GEIGER , Adrien DAUGABEL , + papoteur + Greek - Dimitrios Glentadakis + Hebrew - Genghis Khan, Elkana Birdugo + Dutch (Netherlands) - Heimen Stoffels + German - Ettore Atalan, Mario Blättermann + Italian - Luigi Baldoni + Polish - Tomasz Przybył (FadeMind) + Russian - Ilya Kotov + Serbian - markosm + Slovak - Ján Ďanovský + Spanish - jcn363 diff --git a/src-qt5/core/lumina-theme-engine/COPYING b/src-qt5/core/lumina-theme-engine/COPYING new file mode 100644 index 00000000..19d541a3 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/COPYING @@ -0,0 +1,26 @@ +Copyright (c) 2014-2017, Ilya Kotov +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/src-qt5/core/lumina-theme-engine/ChangeLog b/src-qt5/core/lumina-theme-engine/ChangeLog new file mode 100644 index 00000000..0c285c37 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/ChangeLog @@ -0,0 +1,221 @@ +Changelog of the Qt5 Configuration Tool + +----------- +Version 0.1 +* first test release + +Version 0.2 +* fixed palette preview +* fixed preview window +* fixed some widget positions +* fixed Russian translation + +Version 0.3 +* added gui settings + +Version 0.4 +* added font config generation +* fixed segmentation fault in the preview window +* updated Russian translation + +Version 0.5 +* added dialog buttons layout setting +* added feature to change install prefix +* updated Russian translation + +Version 0.6 +* added style sheet settings +* added transifex integration +* updated Russian translation + +Version 0.7 +* added feature to rename style sheet +* added context menu to the style sheet list +* added feature to apply theme for running applications +* added Chinese (Taiwan) translation (Jeff Huang) +* added Czech translation (fri) +* added German translation (Mario Blättermann) +* updated Russian translation + +Version 0.8 +* improved icon theme parsing +* added Bulgarian translation (Kiril Kirilov) +* fixed plugin metadata +* fixed font updating issue +* fixed Russian translation + +Version 0.9 +* added more user friendly color roles +* added feature to disable qss support +* added Dutch (Netherlands) translation (Heimen Stoffels) +* updated Chinese (Taiwan) translation (Jeff Huang) +* updated Czech translation (fri) +* updated Bulgarian translation (Kiril Kirilov) +* updated German translation (Mario Blättermann) +* updated Russian translation + +Version 0.10 +* added more debug messages +* added Greek translation (Dimitrios Glentadakis) +* moved home page to sf.net +* fixed qss path + +Version 0.11 +* added Polish translation (FadeMind) +* removed private headers usage +* improved build scripts +* fixed settings updating issue +* fixed font setting +* fixed fonts.conf generation +* fixed segmentation fault on "widget-less" applications +* updated German translation (Ettore Atalan) + +Version 0.12 +* added Chinese Simplified translation (Cary Tian) +* fixed infinite loop in the icon theme parser (Sergey A. Sukiyazov) + +Version 0.13 +* added $XDG_DATA_HOME support +* added Italian translation (Luigi Baldoni) + +Version 0.14 +* added option "Dialog buttons have icons" +* added option "Menus have icons" +* fixed style and palette initialization +* updated Russian translation +* updated German translation (Ettore Atalan) +* updated Dutch (Netherlands) translation (Heimen Stoffels) +* updated Chinese (Taiwan) translation (Jeff Huang) + +Version 0.15 +* fixed problem with qtcurve style +* updated Czech translation (fri) + +Version 0.16 +* added feature to save palette editor geometry +* changed palette editor layout +* updated Chinese Simplified translation (Cary Tian) + +Version 0.17 +* fixed crash in qupzilla +* updated Greek translation (Dimitrios Glentadakis) + +Version 0.18 +* added color schemes support +* updated Dutch (Netherlands) translation (Heimen Stoffels) +* updated German translation (Ettore Atalan) +* updated Polish translation (FadeMind) +* updated Chinese (Taiwan) translation (Jeff Huang) +* updated Russian translation + +Version 0.19 +* added feature to save geometry of the style sheet editor +* fixed qt5ct.desktop +* updated Greek translation (Dimitrios Glentadakis) +* updated Czech translation (fri) +* updated Chinese Simplified translation (Cary Tian) + +Version 0.20 +* fixed widget spacing +* fixed typo +* updated Bulgarian translation (Kiril Kirilov) +* updated Italian translation (Luigi Baldoni) + +Version 0.21 +* added option "Activate item on signle-click" +* added Spanish translation (jcn363) +* added Slovak translation (Ján Ďanovský) +* updated Polish translation (FadeMind) +* updated Dutch (Netherlands) translation (Heimen Stoffels) +* updated Czech translation (fri) +* updated Chinese (Taiwan) translation (Jeff Huang) + +Version 0.22 +* disabled html mode in the qss editor +* fixed issue with overriding style sheets +* added Hebrew translation (Genghis Khan) +* updated Italian translation (Luigi Baldoni) +* updated documentation + +Version 0.23 +* added support for single line comments in the style sheets +* fixed issue with overriding application palette +* updated Bulgarian translation (Kiril Kirilov) + +Version 0.24 +* added feature to preview color scheme on edit +* added icons for some actions +* fixed palette editor +* fixed documentation +* fixed infinite recursion in the icon theme parser (patch by Sergey A. Sukiyazov) +* updated Greek translation (Dimitrios Glentadakis) + +Version 0.25 +* added environment variables verification +* added French translation (Geiger David) +* updated Slovak translation (Ján Ďanovský) +* updated Russian translation +* updated Czech translation (fri) +* updated German translation (Ettore Atalan) +* updated Dutch (Netherlands) translation (Heimen Stoffels) +* updated Polish translation (Tomasz Przybył) +* updated Chinese (Taiwan) translation (Jeff Huang) + +Version 0.26 +* fixed stellarium compatibility +* updated French translation (Geiger David) +* updated Greek translation (Dimitrios Glentadakis) + +Version 0.27 +* added D-Bus tray support +* added feature to disable debug output +* updated documentation + +Version 0.28 +* added Qt 5.8 support +* added qt5ct proxy-style plugin +* added Serbian translation (markosm) +* updated Bulgarian translation (Kiril Kirilov) +* updated Italian translation (Luigi Baldoni) +* updated Russian translation +* updated Dutch (Netherlands) translation (Heimen Stoffels) +* updated Czech translation (fri) +* updated German translation (Atalanttore) +* updated Chinese (Taiwan) translation (Jeff Huang) + +Version 0.29 +* fixed libqt5ct-style.so installation path (Philip Müller) +* updated Greek translation (Dimitrios Glentadakis) + +Version 0.30 +* fixed crash on nonexistent style in qt5ct.conf +* fixed issue with KDE color themes +* updated documentation +* updated Bulgarian translation (Kiril Kirilov) +* updated French translation (Geiger David) + +Version 0.31 +* added option "Toolbar button style" +* added option "Mouse wheel scroll lines" +* added test for minimal Qt version +* added Arabic translation (abouzakaria kov) +* using c++11 for source code +* fixed Qt 5.4 support +* updated Russian translation +* updated Bulgarian translation (Kiril Kirilov) +* updated Dutch (Netherlands) translation (Heimen Stoffels) +* updated Chinese (Taiwan) translation (Jeff Huang) +* updated German translation (Ettore Atalan) +* updated Serbian translation (markosm) +* updated Czech translation (fri) + +Version 0.32 +* added global menu support +* updated Czech translation (fri) +* updated Greek translation (Dimitrios Glentadakis) +* updated Russian translation + +Version 0.33 +* fixed build without dbus support (coacher) +* fixed Qt 5.6 support (coacher) +* updated Hebrew translation (Elkana Birdugo) diff --git a/src-qt5/core/lumina-theme-engine/ChangeLog.svn b/src-qt5/core/lumina-theme-engine/ChangeLog.svn new file mode 100644 index 00000000..62890517 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/ChangeLog.svn @@ -0,0 +1,1618 @@ +------------------------------------------------------------------------ +r414 | trialuser02 | 2017-05-29 21:52:01 +0300 (Пн., 29 мая 2017) | 1 line + +updated changelog +------------------------------------------------------------------------ +r413 | trialuser02 | 2017-05-29 21:49:43 +0300 (Пн., 29 мая 2017) | 1 line + +updated Hebrew translation (Elkana Birdugo) +------------------------------------------------------------------------ +r412 | trialuser02 | 2017-05-24 13:06:35 +0300 (Ср., 24 мая 2017) | 1 line + +updated changelog +------------------------------------------------------------------------ +r411 | trialuser02 | 2017-05-24 12:29:20 +0300 (Ср., 24 мая 2017) | 2 lines + +fixed Qt 5.6 support (#37) + +------------------------------------------------------------------------ +r409 | trialuser02 | 2017-05-17 08:12:59 +0300 (Ср., 17 мая 2017) | 1 line + +fixed build without dbus support (coacher, #36) +------------------------------------------------------------------------ +r408 | trialuser02 | 2017-05-14 13:51:09 +0300 (Вс., 14 мая 2017) | 1 line + +version bump +------------------------------------------------------------------------ +r406 | trialuser02 | 2017-05-12 23:10:11 +0300 (Пт., 12 мая 2017) | 1 line + +updated changelog +------------------------------------------------------------------------ +r405 | trialuser02 | 2017-05-12 23:05:35 +0300 (Пт., 12 мая 2017) | 1 line + +fixed Russian translation +------------------------------------------------------------------------ +r404 | trialuser02 | 2017-05-12 22:44:16 +0300 (Пт., 12 мая 2017) | 1 line + +fixed distclean target +------------------------------------------------------------------------ +r403 | trialuser02 | 2017-05-12 22:40:53 +0300 (Пт., 12 мая 2017) | 2 lines + +coding style fixes + +------------------------------------------------------------------------ +r402 | trialuser02 | 2017-05-12 22:32:23 +0300 (Пт., 12 мая 2017) | 2 lines + +added global menu support (#34) + +------------------------------------------------------------------------ +r401 | trialuser02 | 2017-03-31 22:42:24 +0300 (Пт., 31 марта 2017) | 1 line + +updated Greek translation (Dimitrios Glentadakis) +------------------------------------------------------------------------ +r400 | trialuser02 | 2017-03-31 22:39:05 +0300 (Пт., 31 марта 2017) | 1 line + +updated Czech translation (fri) +------------------------------------------------------------------------ +r399 | trialuser02 | 2017-03-28 11:49:16 +0300 (Вт., 28 марта 2017) | 1 line + +version bump +------------------------------------------------------------------------ +r397 | trialuser02 | 2017-03-28 11:12:51 +0300 (Вт., 28 марта 2017) | 1 line + +updated changelog +------------------------------------------------------------------------ +r396 | trialuser02 | 2017-03-28 11:03:27 +0300 (Вт., 28 марта 2017) | 1 line + +updated Czech translation (fri) +------------------------------------------------------------------------ +r395 | trialuser02 | 2017-03-27 08:35:12 +0300 (Пн., 27 марта 2017) | 1 line + +updated changelog +------------------------------------------------------------------------ +r394 | trialuser02 | 2017-03-26 19:22:13 +0300 (Вс., 26 марта 2017) | 1 line + +updated qt5ct.desktop +------------------------------------------------------------------------ +r393 | trialuser02 | 2017-03-26 19:20:45 +0300 (Вс., 26 марта 2017) | 1 line + +updated Serbian translation (markosm) +------------------------------------------------------------------------ +r392 | trialuser02 | 2017-03-26 19:19:01 +0300 (Вс., 26 марта 2017) | 1 line + +added Arabic translation (abouzakaria kov) +------------------------------------------------------------------------ +r391 | trialuser02 | 2017-03-23 14:47:22 +0300 (Чт., 23 марта 2017) | 1 line + +updated German translation (Ettore Atalan) +------------------------------------------------------------------------ +r390 | trialuser02 | 2017-03-15 08:10:51 +0300 (Ср., 15 марта 2017) | 1 line + +updated Chinese (Taiwan) translation (Jeff Huang) +------------------------------------------------------------------------ +r389 | trialuser02 | 2017-03-15 08:09:33 +0300 (Ср., 15 марта 2017) | 1 line + +updated Dutch (Netherlands) translation (Heimen Stoffels) +------------------------------------------------------------------------ +r388 | trialuser02 | 2017-03-15 08:07:09 +0300 (Ср., 15 марта 2017) | 1 line + +updated Bulgarian translation (Kiril Kirilov) +------------------------------------------------------------------------ +r387 | trialuser02 | 2017-03-14 21:09:55 +0300 (Вт., 14 марта 2017) | 1 line + +fixed typo +------------------------------------------------------------------------ +r386 | trialuser02 | 2017-03-14 21:09:08 +0300 (Вт., 14 марта 2017) | 1 line + +updated changelog +------------------------------------------------------------------------ +r385 | trialuser02 | 2017-03-14 20:59:40 +0300 (Вт., 14 марта 2017) | 1 line + +updated .ts files +------------------------------------------------------------------------ +r384 | trialuser02 | 2017-03-14 20:58:54 +0300 (Вт., 14 марта 2017) | 1 line + +fixed Qt 5.4 support +------------------------------------------------------------------------ +r383 | trialuser02 | 2017-03-14 20:33:39 +0300 (Вт., 14 марта 2017) | 1 line + +added test for minimal Qt version +------------------------------------------------------------------------ +r382 | trialuser02 | 2017-03-14 20:01:46 +0300 (Вт., 14 марта 2017) | 2 lines + +using c++11 + +------------------------------------------------------------------------ +r381 | trialuser02 | 2017-03-14 19:55:14 +0300 (Вт., 14 марта 2017) | 2 lines + +updated .ts files, updated Russian translation + +------------------------------------------------------------------------ +r380 | trialuser02 | 2017-03-14 19:54:36 +0300 (Вт., 14 марта 2017) | 2 lines + +added option 'wheel scroll lines' + +------------------------------------------------------------------------ +r379 | trialuser02 | 2017-03-14 16:11:00 +0300 (Вт., 14 марта 2017) | 1 line + +updated Russian translation +------------------------------------------------------------------------ +r378 | trialuser02 | 2017-03-14 16:02:59 +0300 (Вт., 14 марта 2017) | 1 line + +updated .ts files +------------------------------------------------------------------------ +r377 | trialuser02 | 2017-03-14 16:02:06 +0300 (Вт., 14 марта 2017) | 2 lines + +added option 'toolbar button style' + +------------------------------------------------------------------------ +r376 | trialuser02 | 2017-02-04 15:55:17 +0300 (Сб., 04 февр. 2017) | 1 line + +version bump +------------------------------------------------------------------------ +r374 | trialuser02 | 2017-02-04 15:52:12 +0300 (Сб., 04 февр. 2017) | 1 line + +fixed changelog +------------------------------------------------------------------------ +r373 | trialuser02 | 2017-01-30 15:23:31 +0300 (Пн., 30 янв. 2017) | 1 line + +updated changelog +------------------------------------------------------------------------ +r372 | trialuser02 | 2017-01-30 09:24:32 +0300 (Пн., 30 янв. 2017) | 1 line + +updated changelog +------------------------------------------------------------------------ +r371 | trialuser02 | 2017-01-29 21:44:26 +0300 (Вс., 29 янв. 2017) | 1 line + +fixed segmentation fault with nonexistent style in the qt5ct.conf +------------------------------------------------------------------------ +r370 | trialuser02 | 2017-01-27 10:09:35 +0300 (Пт., 27 янв. 2017) | 1 line + +updated changelog +------------------------------------------------------------------------ +r369 | trialuser02 | 2017-01-26 20:40:33 +0300 (Чт., 26 янв. 2017) | 2 lines + +fixed issue with KDE styles (#32) + +------------------------------------------------------------------------ +r368 | trialuser02 | 2017-01-26 08:18:41 +0300 (Чт., 26 янв. 2017) | 1 line + +updated French translation (Geiger David) +------------------------------------------------------------------------ +r367 | trialuser02 | 2017-01-25 16:15:17 +0300 (Ср., 25 янв. 2017) | 1 line + +updated Bulgarian translation (Kiril Kirilov) +------------------------------------------------------------------------ +r366 | trialuser02 | 2017-01-25 12:15:20 +0300 (Ср., 25 янв. 2017) | 1 line + +fixed documentation +------------------------------------------------------------------------ +r365 | trialuser02 | 2017-01-25 08:18:36 +0300 (Ср., 25 янв. 2017) | 1 line + +version bump +------------------------------------------------------------------------ +r363 | trialuser02 | 2017-01-25 08:14:51 +0300 (Ср., 25 янв. 2017) | 1 line + +fixed changelog +------------------------------------------------------------------------ +r362 | trialuser02 | 2017-01-25 08:07:52 +0300 (Ср., 25 янв. 2017) | 2 lines + +fixed libqt5ct-style.so installation path (Philip Müller, #30) + +------------------------------------------------------------------------ +r361 | trialuser02 | 2017-01-25 08:03:06 +0300 (Ср., 25 янв. 2017) | 1 line + +updated Greek translation (Dimitrios Glentadakis) +------------------------------------------------------------------------ +r360 | trialuser02 | 2017-01-24 20:25:38 +0300 (Вт., 24 янв. 2017) | 1 line + +version bump +------------------------------------------------------------------------ +r358 | trialuser02 | 2017-01-24 08:44:01 +0300 (Вт., 24 янв. 2017) | 1 line + +fixed typo +------------------------------------------------------------------------ +r357 | trialuser02 | 2017-01-22 19:06:29 +0300 (Вс., 22 янв. 2017) | 1 line + +updated changelog +------------------------------------------------------------------------ +r356 | trialuser02 | 2017-01-22 14:49:33 +0300 (Вс., 22 янв. 2017) | 1 line + +updated Chinese (Taiwan) translation (Jeff Huang) +------------------------------------------------------------------------ +r355 | trialuser02 | 2017-01-22 14:35:58 +0300 (Вс., 22 янв. 2017) | 1 line + +added .ts files for Catalan +------------------------------------------------------------------------ +r354 | trialuser02 | 2017-01-22 14:33:00 +0300 (Вс., 22 янв. 2017) | 1 line + +updated German translation (Atalanttore) +------------------------------------------------------------------------ +r353 | trialuser02 | 2017-01-22 14:31:06 +0300 (Вс., 22 янв. 2017) | 1 line + +fixed palette configuration regression +------------------------------------------------------------------------ +r352 | trialuser02 | 2017-01-20 23:46:45 +0300 (Пт., 20 янв. 2017) | 1 line + +cleanup +------------------------------------------------------------------------ +r351 | trialuser02 | 2017-01-20 23:37:54 +0300 (Пт., 20 янв. 2017) | 1 line + +updated test.sh +------------------------------------------------------------------------ +r350 | trialuser02 | 2017-01-20 23:15:02 +0300 (Пт., 20 янв. 2017) | 1 line + +updated Czech translation (fri) +------------------------------------------------------------------------ +r349 | trialuser02 | 2017-01-20 23:13:53 +0300 (Пт., 20 янв. 2017) | 1 line + +updated Dutch (Netherlands) translation (Heimen Stoffels) +------------------------------------------------------------------------ +r348 | trialuser02 | 2017-01-20 11:53:43 +0300 (Пт., 20 янв. 2017) | 1 line + +updated copyright +------------------------------------------------------------------------ +r347 | trialuser02 | 2017-01-20 11:48:19 +0300 (Пт., 20 янв. 2017) | 1 line + +updated Russian translation +------------------------------------------------------------------------ +r346 | trialuser02 | 2017-01-20 11:47:06 +0300 (Пт., 20 янв. 2017) | 1 line + +updated .ts files +------------------------------------------------------------------------ +r345 | trialuser02 | 2017-01-20 11:46:01 +0300 (Пт., 20 янв. 2017) | 1 line + +updated documentation +------------------------------------------------------------------------ +r344 | trialuser02 | 2017-01-20 11:39:35 +0300 (Пт., 20 янв. 2017) | 1 line + +added warning about missing libqt5ct-style.so +------------------------------------------------------------------------ +r343 | trialuser02 | 2017-01-20 11:32:13 +0300 (Пт., 20 янв. 2017) | 2 lines + +do not show qt5ct proxy style in the settings dialog + +------------------------------------------------------------------------ +r342 | trialuser02 | 2017-01-20 11:25:45 +0300 (Пт., 20 янв. 2017) | 2 lines + +moved qt5ct proxy style to separate plugin + +------------------------------------------------------------------------ +r341 | trialuser02 | 2016-12-30 10:30:52 +0300 (Пт., 30 дек. 2016) | 1 line + +updated copyrights +------------------------------------------------------------------------ +r340 | trialuser02 | 2016-12-28 10:35:54 +0300 (Ср., 28 дек. 2016) | 1 line + +added Qt 5.8 support +------------------------------------------------------------------------ +r339 | trialuser02 | 2016-12-27 13:40:14 +0300 (Вт., 27 дек. 2016) | 1 line + +updated Italian translation (Luigi Baldoni) +------------------------------------------------------------------------ +r338 | trialuser02 | 2016-12-21 19:22:17 +0300 (Ср., 21 дек. 2016) | 1 line + +added Serbian translation (markosm) +------------------------------------------------------------------------ +r337 | trialuser02 | 2016-12-12 08:09:19 +0300 (Пн., 12 дек. 2016) | 1 line + +updated Bulgarian translation (Kiril Kirilov) +------------------------------------------------------------------------ +r336 | trialuser02 | 2016-09-20 09:19:11 +0300 (Вт., 20 сент. 2016) | 1 line + +version bump +------------------------------------------------------------------------ +r334 | trialuser02 | 2016-09-12 13:58:35 +0300 (Пн., 12 сент. 2016) | 1 line + +updated changelog +------------------------------------------------------------------------ +r333 | trialuser02 | 2016-09-12 13:50:49 +0300 (Пн., 12 сент. 2016) | 2 lines + +updated documentation + +------------------------------------------------------------------------ +r332 | trialuser02 | 2016-09-12 13:00:49 +0300 (Пн., 12 сент. 2016) | 1 line + +fixed previous commit +------------------------------------------------------------------------ +r331 | trialuser02 | 2016-09-12 12:08:18 +0300 (Пн., 12 сент. 2016) | 2 lines + +using QLoggingCategory class for logging + +------------------------------------------------------------------------ +r329 | trialuser02 | 2016-09-12 09:39:34 +0300 (Пн., 12 сент. 2016) | 2 lines + +fixed build without D-Bus support + +------------------------------------------------------------------------ +r328 | trialuser02 | 2016-09-12 09:38:08 +0300 (Пн., 12 сент. 2016) | 2 lines + +added D-Bus tray support + +------------------------------------------------------------------------ +r327 | trialuser02 | 2016-09-05 09:45:09 +0300 (Пн., 05 сент. 2016) | 1 line + +version bump +------------------------------------------------------------------------ +r325 | trialuser02 | 2016-09-01 15:14:35 +0300 (Чт., 01 сент. 2016) | 1 line + +updated changelog +------------------------------------------------------------------------ +r324 | trialuser02 | 2016-09-01 15:08:45 +0300 (Чт., 01 сент. 2016) | 1 line + +updated .ts files +------------------------------------------------------------------------ +r323 | trialuser02 | 2016-09-01 15:07:39 +0300 (Чт., 01 сент. 2016) | 1 line + +updated Greek translation (Dimitrios Glentadakis) +------------------------------------------------------------------------ +r322 | trialuser02 | 2016-09-01 14:55:45 +0300 (Чт., 01 сент. 2016) | 1 line + +updated French translation (Geiger David) +------------------------------------------------------------------------ +r321 | trialuser02 | 2016-09-01 14:49:53 +0300 (Чт., 01 сент. 2016) | 1 line + +fixed stellarium compatibility (#25) +------------------------------------------------------------------------ +r320 | trialuser02 | 2016-08-10 15:49:39 +0300 (Ср., 10 авг. 2016) | 1 line + +version bump +------------------------------------------------------------------------ +r318 | trialuser02 | 2016-08-10 15:13:46 +0300 (Ср., 10 авг. 2016) | 1 line + +fixed changelog and documentation +------------------------------------------------------------------------ +r317 | trialuser02 | 2016-08-10 14:55:49 +0300 (Ср., 10 авг. 2016) | 1 line + +updated changelogs +------------------------------------------------------------------------ +r316 | trialuser02 | 2016-08-10 08:08:56 +0300 (Ср., 10 авг. 2016) | 1 line + +updated Chinese (Taiwan) translation (Jeff Huang) +------------------------------------------------------------------------ +r315 | trialuser02 | 2016-08-10 08:07:12 +0300 (Ср., 10 авг. 2016) | 1 line + +updated AUTHORS +------------------------------------------------------------------------ +r314 | trialuser02 | 2016-08-10 08:06:22 +0300 (Ср., 10 авг. 2016) | 1 line + +updated Polish translation (Tomasz Przybył) +------------------------------------------------------------------------ +r313 | trialuser02 | 2016-08-08 14:56:52 +0300 (Пн., 08 авг. 2016) | 1 line + +updated changelogs +------------------------------------------------------------------------ +r312 | trialuser02 | 2016-08-08 14:52:01 +0300 (Пн., 08 авг. 2016) | 1 line + +updated .ts files +------------------------------------------------------------------------ +r311 | trialuser02 | 2016-08-08 14:51:25 +0300 (Пн., 08 авг. 2016) | 1 line + +updated Dutch (Netherlands) translation (Heimen Stoffels) +------------------------------------------------------------------------ +r310 | trialuser02 | 2016-08-08 14:49:47 +0300 (Пн., 08 авг. 2016) | 1 line + +updated German translation (Ettore Atalan) +------------------------------------------------------------------------ +r309 | trialuser02 | 2016-08-08 14:48:35 +0300 (Пн., 08 авг. 2016) | 1 line + +updated Czech translation (fri) +------------------------------------------------------------------------ +r308 | trialuser02 | 2016-08-08 13:14:58 +0300 (Пн., 08 авг. 2016) | 1 line + +updated Russian translation +------------------------------------------------------------------------ +r307 | trialuser02 | 2016-08-08 12:23:00 +0300 (Пн., 08 авг. 2016) | 1 line + +updated .ts files +------------------------------------------------------------------------ +r306 | trialuser02 | 2016-08-08 12:21:32 +0300 (Пн., 08 авг. 2016) | 2 lines + +added tests for environment variables + +------------------------------------------------------------------------ +r305 | trialuser02 | 2016-07-05 10:27:44 +0300 (Вт., 05 июля 2016) | 1 line + +removed TODO +------------------------------------------------------------------------ +r304 | trialuser02 | 2016-07-05 10:23:29 +0300 (Вт., 05 июля 2016) | 1 line + +updated Slovak translation (Ján Ďanovský) +------------------------------------------------------------------------ +r303 | trialuser02 | 2016-06-05 10:21:59 +0300 (Вс., 05 июня 2016) | 1 line + +updated AUTHORS +------------------------------------------------------------------------ +r302 | trialuser02 | 2016-06-05 10:15:45 +0300 (Вс., 05 июня 2016) | 2 lines + +added French translation (Geiger David) + +------------------------------------------------------------------------ +r301 | trialuser02 | 2016-06-02 08:20:14 +0300 (Чт., 02 июня 2016) | 1 line + +version bump +------------------------------------------------------------------------ +r299 | trialuser02 | 2016-06-01 16:11:40 +0300 (Ср., 01 июня 2016) | 1 line + +updated copyright +------------------------------------------------------------------------ +r298 | trialuser02 | 2016-06-01 16:08:23 +0300 (Ср., 01 июня 2016) | 1 line + +updated changelog +------------------------------------------------------------------------ +r297 | trialuser02 | 2016-06-01 16:07:38 +0300 (Ср., 01 июня 2016) | 1 line + +added icons for actions +------------------------------------------------------------------------ +r296 | trialuser02 | 2016-06-01 15:38:12 +0300 (Ср., 01 июня 2016) | 1 line + +updated changelogs +------------------------------------------------------------------------ +r295 | trialuser02 | 2016-06-01 15:32:10 +0300 (Ср., 01 июня 2016) | 1 line + +disabled table items selection in the palette editor +------------------------------------------------------------------------ +r294 | trialuser02 | 2016-06-01 15:20:25 +0300 (Ср., 01 июня 2016) | 1 line + +updating palette preview simultaneously with palette editor +------------------------------------------------------------------------ +r293 | trialuser02 | 2016-05-18 16:16:57 +0300 (Ср., 18 мая 2016) | 1 line + +fixed infinite recursion in the icon theme parser (patch by Sergey A. Sukiyazov) (#20) +------------------------------------------------------------------------ +r292 | trialuser02 | 2016-05-01 00:13:59 +0300 (Вс., 01 мая 2016) | 1 line + +fixed documentation +------------------------------------------------------------------------ +r291 | trialuser02 | 2016-05-01 00:04:11 +0300 (Вс., 01 мая 2016) | 1 line + +updated Greek translation (Dimitrios Glentadakis) +------------------------------------------------------------------------ +r290 | trialuser02 | 2016-04-26 10:03:38 +0300 (Вт., 26 апр. 2016) | 1 line + +version bump +------------------------------------------------------------------------ +r288 | trialuser02 | 2016-04-26 09:51:10 +0300 (Вт., 26 апр. 2016) | 1 line + +updated changelog +------------------------------------------------------------------------ +r287 | trialuser02 | 2016-04-26 09:46:17 +0300 (Вт., 26 апр. 2016) | 1 line + +updated copyright +------------------------------------------------------------------------ +r286 | trialuser02 | 2016-04-26 09:44:03 +0300 (Вт., 26 апр. 2016) | 1 line + +qss: added support for single line comments +------------------------------------------------------------------------ +r285 | trialuser02 | 2016-04-24 14:47:23 +0300 (Вс., 24 апр. 2016) | 2 lines + +updated .ts files, fixed script + +------------------------------------------------------------------------ +r284 | trialuser02 | 2016-04-24 14:46:27 +0300 (Вс., 24 апр. 2016) | 2 lines + +updated Bulgarian translation (Kiril Kirilov) + +------------------------------------------------------------------------ +r282 | trialuser02 | 2016-04-24 14:37:14 +0300 (Вс., 24 апр. 2016) | 2 lines + +do not override application palette (#18) + +------------------------------------------------------------------------ +r281 | trialuser02 | 2016-03-06 13:58:51 +0300 (Вс., 06 марта 2016) | 1 line + +version bump +------------------------------------------------------------------------ +r279 | trialuser02 | 2016-03-06 12:40:44 +0300 (Вс., 06 марта 2016) | 1 line + +updated changelog +------------------------------------------------------------------------ +r278 | trialuser02 | 2016-03-05 14:06:30 +0300 (Сб., 05 марта 2016) | 1 line + +added Hebrew translation (Genghis Khan) +------------------------------------------------------------------------ +r277 | trialuser02 | 2016-03-05 13:30:24 +0300 (Сб., 05 марта 2016) | 2 lines + +qss editor: disabled html mode + +------------------------------------------------------------------------ +r276 | trialuser02 | 2016-03-05 13:25:20 +0300 (Сб., 05 марта 2016) | 2 lines + +fixed issue with qupzilla style sheets (#15) + +------------------------------------------------------------------------ +r275 | trialuser02 | 2016-01-18 09:39:42 +0300 (Пн., 18 янв. 2016) | 1 line + +updated README +------------------------------------------------------------------------ +r274 | trialuser02 | 2016-01-09 13:15:57 +0300 (Сб., 09 янв. 2016) | 1 line + +updated Italian translation (Luigi Baldoni) +------------------------------------------------------------------------ +r273 | trialuser02 | 2016-01-08 23:15:57 +0300 (Пт., 08 янв. 2016) | 1 line + +version bump +------------------------------------------------------------------------ +r271 | trialuser02 | 2016-01-07 12:24:53 +0300 (Чт., 07 янв. 2016) | 1 line + +updated Chinese (Taiwan) translation (Jeff Huang) +------------------------------------------------------------------------ +r270 | trialuser02 | 2016-01-07 00:45:37 +0300 (Чт., 07 янв. 2016) | 1 line + +updated changelog +------------------------------------------------------------------------ +r269 | trialuser02 | 2016-01-07 00:44:29 +0300 (Чт., 07 янв. 2016) | 1 line + +updated Czech translation +------------------------------------------------------------------------ +r268 | trialuser02 | 2016-01-05 11:29:05 +0300 (Вт., 05 янв. 2016) | 1 line + +updated changelog +------------------------------------------------------------------------ +r267 | trialuser02 | 2016-01-05 11:22:29 +0300 (Вт., 05 янв. 2016) | 1 line + +updated Dutch (Netherlands) translation (Heimen Stoffels) +------------------------------------------------------------------------ +r266 | trialuser02 | 2016-01-04 19:09:56 +0300 (Пн., 04 янв. 2016) | 1 line + +updated Polish translation (FadeMind) +------------------------------------------------------------------------ +r265 | trialuser02 | 2016-01-04 18:25:32 +0300 (Пн., 04 янв. 2016) | 1 line + +added Slovak translation (Ján Ďanovský) +------------------------------------------------------------------------ +r264 | trialuser02 | 2016-01-04 18:22:17 +0300 (Пн., 04 янв. 2016) | 1 line + +updated changelog +------------------------------------------------------------------------ +r263 | trialuser02 | 2016-01-04 17:43:56 +0300 (Пн., 04 янв. 2016) | 1 line + +updated .ts files +------------------------------------------------------------------------ +r262 | trialuser02 | 2016-01-04 17:38:44 +0300 (Пн., 04 янв. 2016) | 2 lines + +fixed typo + +------------------------------------------------------------------------ +r261 | trialuser02 | 2016-01-04 14:22:51 +0300 (Пн., 04 янв. 2016) | 1 line + +updated Russian translation +------------------------------------------------------------------------ +r260 | trialuser02 | 2016-01-04 14:21:15 +0300 (Пн., 04 янв. 2016) | 1 line + +updated .ts files +------------------------------------------------------------------------ +r259 | trialuser02 | 2016-01-04 14:20:13 +0300 (Пн., 04 янв. 2016) | 2 lines + +added option "Activate item on signle-click" (#12) + +------------------------------------------------------------------------ +r258 | trialuser02 | 2015-11-19 22:56:50 +0300 (Чт., 19 нояб. 2015) | 1 line + +added Spanish translation (jcn363) +------------------------------------------------------------------------ +r257 | trialuser02 | 2015-11-15 22:47:10 +0300 (Вс., 15 нояб. 2015) | 1 line + +prepare for Spain translation +------------------------------------------------------------------------ +r255 | trialuser02 | 2015-10-18 12:47:55 +0300 (Вс., 18 окт. 2015) | 1 line + +version bump +------------------------------------------------------------------------ +r253 | trialuser02 | 2015-10-18 12:45:40 +0300 (Вс., 18 окт. 2015) | 1 line + +updated changelog +------------------------------------------------------------------------ +r252 | trialuser02 | 2015-10-18 12:40:37 +0300 (Вс., 18 окт. 2015) | 2 lines + +fixed typo + +------------------------------------------------------------------------ +r251 | trialuser02 | 2015-10-18 11:23:26 +0300 (Вс., 18 окт. 2015) | 2 lines + +fixed initial widget spacing + +------------------------------------------------------------------------ +r250 | trialuser02 | 2015-10-18 09:53:02 +0300 (Вс., 18 окт. 2015) | 1 line + +updated changelog +------------------------------------------------------------------------ +r249 | trialuser02 | 2015-10-16 19:06:53 +0300 (Пт., 16 окт. 2015) | 1 line + +updated Italian translation (Luigi Baldoni) +------------------------------------------------------------------------ +r248 | trialuser02 | 2015-10-04 22:35:00 +0300 (Вс., 04 окт. 2015) | 1 line + +updated .ts files +------------------------------------------------------------------------ +r247 | trialuser02 | 2015-10-04 22:33:58 +0300 (Вс., 04 окт. 2015) | 1 line + +updated Bulgarian translation (Kiril Kirilov) +------------------------------------------------------------------------ +r246 | trialuser02 | 2015-09-24 14:11:31 +0300 (Чт., 24 сент. 2015) | 1 line + +version bump +------------------------------------------------------------------------ +r244 | trialuser02 | 2015-09-24 14:04:08 +0300 (Чт., 24 сент. 2015) | 2 lines + +updated changelog + +------------------------------------------------------------------------ +r243 | trialuser02 | 2015-09-24 14:02:29 +0300 (Чт., 24 сент. 2015) | 2 lines + +added feature to save geometry of the style sheet editor + +------------------------------------------------------------------------ +r242 | trialuser02 | 2015-09-23 18:51:05 +0300 (Ср., 23 сент. 2015) | 1 line + +updated changelog +------------------------------------------------------------------------ +r241 | trialuser02 | 2015-09-23 18:47:56 +0300 (Ср., 23 сент. 2015) | 1 line + +updated Chinese (China) translation (Cary Tian) +------------------------------------------------------------------------ +r240 | trialuser02 | 2015-09-23 18:46:30 +0300 (Ср., 23 сент. 2015) | 1 line + +updated Czech translation (fri) +------------------------------------------------------------------------ +r239 | trialuser02 | 2015-09-23 18:42:43 +0300 (Ср., 23 сент. 2015) | 1 line + +updated Greek translation (Dimitrios Glentadakis) +------------------------------------------------------------------------ +r238 | trialuser02 | 2015-09-22 22:02:00 +0300 (Вт., 22 сент. 2015) | 1 line + +fixed qt5ct.desktop (#8) +------------------------------------------------------------------------ +r237 | trialuser02 | 2015-09-21 15:09:18 +0300 (Пн., 21 сент. 2015) | 1 line + +version bump +------------------------------------------------------------------------ +r235 | trialuser02 | 2015-09-19 20:36:29 +0300 (Сб., 19 сент. 2015) | 1 line + +updated changelog +------------------------------------------------------------------------ +r234 | trialuser02 | 2015-09-19 20:35:18 +0300 (Сб., 19 сент. 2015) | 1 line + +updated Chinese (Taiwan) translation (Jeff Huang) +------------------------------------------------------------------------ +r233 | trialuser02 | 2015-09-19 14:08:43 +0300 (Сб., 19 сент. 2015) | 1 line + +updated TODO list +------------------------------------------------------------------------ +r232 | trialuser02 | 2015-09-19 11:46:47 +0300 (Сб., 19 сент. 2015) | 1 line + +updated changelog +------------------------------------------------------------------------ +r231 | trialuser02 | 2015-09-19 11:43:06 +0300 (Сб., 19 сент. 2015) | 1 line + +updated .ts files +------------------------------------------------------------------------ +r230 | trialuser02 | 2015-09-19 11:42:24 +0300 (Сб., 19 сент. 2015) | 1 line + +updated Polish translation (FadeMind) +------------------------------------------------------------------------ +r229 | trialuser02 | 2015-09-19 11:41:10 +0300 (Сб., 19 сент. 2015) | 1 line + +updated German translation (Ettore Atalan) +------------------------------------------------------------------------ +r228 | trialuser02 | 2015-09-19 11:40:08 +0300 (Сб., 19 сент. 2015) | 1 line + +updated Dutch (Netherlands) translation (Heimen Stoffels) +------------------------------------------------------------------------ +r227 | trialuser02 | 2015-09-19 11:38:46 +0300 (Сб., 19 сент. 2015) | 1 line + +updated .ts files +------------------------------------------------------------------------ +r226 | trialuser02 | 2015-09-18 22:53:28 +0300 (Пт., 18 сент. 2015) | 1 line + +fixed Russian translation +------------------------------------------------------------------------ +r225 | trialuser02 | 2015-09-18 22:50:56 +0300 (Пт., 18 сент. 2015) | 1 line + +updated .ts files +------------------------------------------------------------------------ +r224 | trialuser02 | 2015-09-18 22:50:10 +0300 (Пт., 18 сент. 2015) | 1 line + +fixed typos +------------------------------------------------------------------------ +r223 | trialuser02 | 2015-09-18 18:21:35 +0300 (Пт., 18 сент. 2015) | 1 line + +updated Polish translation (FadeMind) +------------------------------------------------------------------------ +r222 | trialuser02 | 2015-09-18 16:04:24 +0300 (Пт., 18 сент. 2015) | 2 lines + +updated .ts files, updated Russian translation + +------------------------------------------------------------------------ +r221 | trialuser02 | 2015-09-18 16:03:39 +0300 (Пт., 18 сент. 2015) | 2 lines + +fixed typos + +------------------------------------------------------------------------ +r220 | trialuser02 | 2015-09-18 15:59:06 +0300 (Пт., 18 сент. 2015) | 2 lines + +fixed typo + +------------------------------------------------------------------------ +r219 | trialuser02 | 2015-09-18 15:56:07 +0300 (Пт., 18 сент. 2015) | 2 lines + +fixed typo + +------------------------------------------------------------------------ +r218 | trialuser02 | 2015-09-18 15:53:40 +0300 (Пт., 18 сент. 2015) | 2 lines + +updated .ts files + +------------------------------------------------------------------------ +r217 | trialuser02 | 2015-09-18 15:52:54 +0300 (Пт., 18 сент. 2015) | 2 lines + +updated platform plugin, fixed key name + +------------------------------------------------------------------------ +r216 | trialuser02 | 2015-09-18 15:42:19 +0300 (Пт., 18 сент. 2015) | 2 lines + +fixed remainig bugs + +------------------------------------------------------------------------ +r215 | trialuser02 | 2015-09-18 14:53:25 +0300 (Пт., 18 сент. 2015) | 2 lines + +changed setings form + +------------------------------------------------------------------------ +r214 | trialuser02 | 2015-09-18 14:05:33 +0300 (Пт., 18 сент. 2015) | 2 lines + +updated .ts files + +------------------------------------------------------------------------ +r213 | trialuser02 | 2015-09-18 14:03:23 +0300 (Пт., 18 сент. 2015) | 2 lines + +implemented color scheme settings + +------------------------------------------------------------------------ +r212 | trialuser02 | 2015-09-16 13:40:01 +0300 (Ср., 16 сент. 2015) | 1 line + +updated .ts files +------------------------------------------------------------------------ +r211 | trialuser02 | 2015-09-15 16:02:37 +0300 (Вт., 15 сент. 2015) | 2 lines + +added color scheme buttons + +------------------------------------------------------------------------ +r210 | trialuser02 | 2015-09-15 10:27:45 +0300 (Вт., 15 сент. 2015) | 1 line + +version bump +------------------------------------------------------------------------ +r208 | trialuser02 | 2015-09-14 22:30:22 +0300 (Пн., 14 сент. 2015) | 1 line + +updated changelog +------------------------------------------------------------------------ +r207 | trialuser02 | 2015-09-14 22:16:47 +0300 (Пн., 14 сент. 2015) | 2 lines + +fixed crash in qupzilla + +------------------------------------------------------------------------ +r206 | trialuser02 | 2015-09-13 12:00:25 +0300 (Вс., 13 сент. 2015) | 1 line + +updated Greek translation (Dimitrios Glentadakis) +------------------------------------------------------------------------ +r205 | trialuser02 | 2015-09-12 23:23:41 +0300 (Сб., 12 сент. 2015) | 1 line + +version bump +------------------------------------------------------------------------ +r203 | trialuser02 | 2015-09-12 22:10:44 +0300 (Сб., 12 сент. 2015) | 1 line + +updated changelog +------------------------------------------------------------------------ +r202 | trialuser02 | 2015-09-12 22:07:42 +0300 (Сб., 12 сент. 2015) | 1 line + +updated .ts files +------------------------------------------------------------------------ +r201 | trialuser02 | 2015-09-12 22:07:09 +0300 (Сб., 12 сент. 2015) | 1 line + +updated Chinese (China) translation (Cary Tian) +------------------------------------------------------------------------ +r200 | trialuser02 | 2015-09-12 18:50:18 +0300 (Сб., 12 сент. 2015) | 2 lines + +added feature to save palette editor geometry + +------------------------------------------------------------------------ +r199 | trialuser02 | 2015-09-12 18:40:47 +0300 (Сб., 12 сент. 2015) | 2 lines + +changed palette editor layout + +------------------------------------------------------------------------ +r198 | trialuser02 | 2015-09-05 22:35:45 +0300 (Сб., 05 сент. 2015) | 1 line + +version bump +------------------------------------------------------------------------ +r196 | trialuser02 | 2015-09-05 22:32:11 +0300 (Сб., 05 сент. 2015) | 1 line + +fixed changelog +------------------------------------------------------------------------ +r195 | trialuser02 | 2015-09-05 22:29:34 +0300 (Сб., 05 сент. 2015) | 2 lines + +added comment + +------------------------------------------------------------------------ +r194 | trialuser02 | 2015-09-05 22:16:36 +0300 (Сб., 05 сент. 2015) | 1 line + +updated Czech translation (Fri) +------------------------------------------------------------------------ +r193 | trialuser02 | 2015-09-05 22:15:19 +0300 (Сб., 05 сент. 2015) | 2 lines + +fixed qtcurve style support + +------------------------------------------------------------------------ +r192 | trialuser02 | 2015-09-04 14:02:04 +0300 (Пт., 04 сент. 2015) | 1 line + +version bump +------------------------------------------------------------------------ +r190 | trialuser02 | 2015-09-02 00:42:51 +0300 (Ср., 02 сент. 2015) | 1 line + +updated changelog +------------------------------------------------------------------------ +r189 | trialuser02 | 2015-09-02 00:38:46 +0300 (Ср., 02 сент. 2015) | 1 line + +updated .ts files +------------------------------------------------------------------------ +r188 | trialuser02 | 2015-09-02 00:38:11 +0300 (Ср., 02 сент. 2015) | 1 line + +updated Chinese (Taiwan) translation (Jeff Huang) +------------------------------------------------------------------------ +r187 | trialuser02 | 2015-09-02 00:36:10 +0300 (Ср., 02 сент. 2015) | 1 line + +updated Dutch (Netherlands) translation (Heimen Stoffels) +------------------------------------------------------------------------ +r186 | trialuser02 | 2015-09-02 00:33:29 +0300 (Ср., 02 сент. 2015) | 1 line + +updated German translation (Ettore Atalan) +------------------------------------------------------------------------ +r185 | trialuser02 | 2015-09-02 00:28:46 +0300 (Ср., 02 сент. 2015) | 1 line + +updated Russian translation +------------------------------------------------------------------------ +r184 | trialuser02 | 2015-09-02 00:25:20 +0300 (Ср., 02 сент. 2015) | 2 lines + +fixed feature to hide dialog buttons icons + +------------------------------------------------------------------------ +r183 | trialuser02 | 2015-09-01 00:21:15 +0300 (Вт., 01 сент. 2015) | 1 line + +updated .ts files +------------------------------------------------------------------------ +r182 | trialuser02 | 2015-09-01 00:20:10 +0300 (Вт., 01 сент. 2015) | 2 lines + +added options "Dialog buttons have icons" and "Menus have icons" + +------------------------------------------------------------------------ +r181 | trialuser02 | 2015-08-31 23:32:06 +0300 (Пн., 31 авг. 2015) | 2 lines + +added proxy style + +------------------------------------------------------------------------ +r180 | trialuser02 | 2015-08-31 19:58:26 +0300 (Пн., 31 авг. 2015) | 2 lines + +fixed style & palette initialization + +------------------------------------------------------------------------ +r179 | trialuser02 | 2015-08-27 21:34:22 +0300 (Чт., 27 авг. 2015) | 2 lines + +fixed typo + +------------------------------------------------------------------------ +r178 | trialuser02 | 2015-08-22 19:00:57 +0300 (Сб., 22 авг. 2015) | 1 line + +version bump +------------------------------------------------------------------------ +r177 | trialuser02 | 2015-08-22 18:57:21 +0300 (Сб., 22 авг. 2015) | 1 line + +fixed desktop file +------------------------------------------------------------------------ +r175 | trialuser02 | 2015-08-22 14:14:49 +0300 (Сб., 22 авг. 2015) | 1 line + +updated changelog +------------------------------------------------------------------------ +r174 | trialuser02 | 2015-08-22 14:12:01 +0300 (Сб., 22 авг. 2015) | 1 line + +updated AUTHORS +------------------------------------------------------------------------ +r173 | trialuser02 | 2015-08-22 14:10:07 +0300 (Сб., 22 авг. 2015) | 1 line + +added Italian translation (Luigi Baldoni) +------------------------------------------------------------------------ +r172 | trialuser02 | 2015-07-14 08:29:00 +0300 (Вт., 14 июля 2015) | 1 line + +fixed update_ts.sh +------------------------------------------------------------------------ +r171 | trialuser02 | 2015-05-22 22:58:43 +0300 (Пт., 22 мая 2015) | 2 lines + +added XDG_DATA_HOME support + +------------------------------------------------------------------------ +r170 | trialuser02 | 2015-05-21 11:03:49 +0300 (Чт., 21 мая 2015) | 1 line + +version bump +------------------------------------------------------------------------ +r168 | trialuser02 | 2015-05-21 10:58:21 +0300 (Чт., 21 мая 2015) | 1 line + +updated .ts files +------------------------------------------------------------------------ +r167 | trialuser02 | 2015-05-21 10:56:51 +0300 (Чт., 21 мая 2015) | 1 line + +fixed changelog +------------------------------------------------------------------------ +r166 | trialuser02 | 2015-05-20 23:02:25 +0300 (Ср., 20 мая 2015) | 1 line + +fixed qt5ct.desktop +------------------------------------------------------------------------ +r165 | trialuser02 | 2015-05-20 22:59:32 +0300 (Ср., 20 мая 2015) | 1 line + +updated AUTHORS +------------------------------------------------------------------------ +r164 | trialuser02 | 2015-05-20 22:56:29 +0300 (Ср., 20 мая 2015) | 1 line + +added Chinese Simplified translation (Cary Tian) +------------------------------------------------------------------------ +r163 | trialuser02 | 2015-05-16 21:18:08 +0300 (Сб., 16 мая 2015) | 2 lines + +fixed regression + +------------------------------------------------------------------------ +r162 | trialuser02 | 2015-05-16 10:33:58 +0300 (Сб., 16 мая 2015) | 2 lines + +fixed problem in the IconThemePage::findIcon(..) method (patch by Sergey A. Sukiyazov) (#3) + +------------------------------------------------------------------------ +r161 | trialuser02 | 2015-05-12 21:15:43 +0300 (Вт., 12 мая 2015) | 1 line + +version bump +------------------------------------------------------------------------ +r157 | trialuser02 | 2015-05-12 21:03:34 +0300 (Вт., 12 мая 2015) | 1 line + +fixed typo +------------------------------------------------------------------------ +r156 | trialuser02 | 2015-05-12 20:52:48 +0300 (Вт., 12 мая 2015) | 1 line + +updated qt5ct.desktop +------------------------------------------------------------------------ +r155 | trialuser02 | 2015-05-12 20:50:23 +0300 (Вт., 12 мая 2015) | 1 line + +updated AUTHORS and ChangeLog +------------------------------------------------------------------------ +r154 | trialuser02 | 2015-05-12 20:48:29 +0300 (Вт., 12 мая 2015) | 1 line + +added Polish translation (FadeMind) +------------------------------------------------------------------------ +r153 | trialuser02 | 2015-05-12 20:45:28 +0300 (Вт., 12 мая 2015) | 1 line + +updated .ts files +------------------------------------------------------------------------ +r152 | trialuser02 | 2015-05-12 20:39:21 +0300 (Вт., 12 мая 2015) | 1 line + +updated changelog +------------------------------------------------------------------------ +r151 | trialuser02 | 2015-05-12 20:29:29 +0300 (Вт., 12 мая 2015) | 1 line + +updated documentation +------------------------------------------------------------------------ +r149 | trialuser02 | 2015-05-12 20:25:09 +0300 (Вт., 12 мая 2015) | 2 lines + +fixed previous commit + +------------------------------------------------------------------------ +r148 | trialuser02 | 2015-05-12 20:12:24 +0300 (Вт., 12 мая 2015) | 2 lines + +renamed USE_QSS to USE_WIDGETS + +------------------------------------------------------------------------ +r147 | trialuser02 | 2015-05-12 20:04:17 +0300 (Вт., 12 мая 2015) | 3 lines + +fixed segmentation fault on "widget-less" applications; replaced USE_QSS +by QT_WIDGETS_LIB + +------------------------------------------------------------------------ +r146 | trialuser02 | 2015-05-12 18:30:28 +0300 (Вт., 12 мая 2015) | 2 lines + +fixed regression + +------------------------------------------------------------------------ +r145 | trialuser02 | 2015-05-12 17:59:01 +0300 (Вт., 12 мая 2015) | 2 lines + +fixed default palette + +------------------------------------------------------------------------ +r144 | trialuser02 | 2015-05-12 17:48:41 +0300 (Вт., 12 мая 2015) | 2 lines + +removed useless code + +------------------------------------------------------------------------ +r143 | trialuser02 | 2015-05-12 12:34:32 +0300 (Вт., 12 мая 2015) | 2 lines + +removed private headers usage + +------------------------------------------------------------------------ +r142 | trialuser02 | 2015-05-12 11:38:36 +0300 (Вт., 12 мая 2015) | 2 lines + +removed private headers from qt5ct application + +------------------------------------------------------------------------ +r141 | trialuser02 | 2015-05-11 17:45:02 +0300 (Пн., 11 мая 2015) | 2 lines + +updated TODO list + +------------------------------------------------------------------------ +r140 | trialuser02 | 2015-04-29 10:52:08 +0300 (Ср., 29 апр. 2015) | 1 line + +updated German translation (Ettore Atalan) +------------------------------------------------------------------------ +r139 | trialuser02 | 2015-04-02 23:15:22 +0300 (Чт., 02 апр. 2015) | 1 line + +fixed clear_qmake.sh script +------------------------------------------------------------------------ +r138 | trialuser02 | 2015-03-29 22:46:03 +0300 (Вс., 29 марта 2015) | 2 lines + +fixed fonts.conf generation + +------------------------------------------------------------------------ +r137 | trialuser02 | 2015-03-29 11:53:40 +0300 (Вс., 29 марта 2015) | 1 line + +version bump +------------------------------------------------------------------------ +r135 | trialuser02 | 2015-03-29 11:47:04 +0300 (Вс., 29 марта 2015) | 1 line + +updated changelog +------------------------------------------------------------------------ +r134 | trialuser02 | 2015-03-29 11:25:56 +0300 (Вс., 29 марта 2015) | 1 line + +fixed shared qss path +------------------------------------------------------------------------ +r133 | trialuser02 | 2015-03-29 11:14:35 +0300 (Вс., 29 марта 2015) | 2 lines + +fixed build + +------------------------------------------------------------------------ +r132 | trialuser02 | 2015-03-29 11:13:56 +0300 (Вс., 29 марта 2015) | 2 lines + +added more debug info + +------------------------------------------------------------------------ +r131 | trialuser02 | 2015-03-29 11:03:16 +0300 (Вс., 29 марта 2015) | 1 line + +updated .desktop file +------------------------------------------------------------------------ +r130 | trialuser02 | 2015-03-29 10:59:46 +0300 (Вс., 29 марта 2015) | 1 line + +updated .ts files +------------------------------------------------------------------------ +r129 | trialuser02 | 2015-03-29 10:53:23 +0300 (Вс., 29 марта 2015) | 1 line + +added Greek translation (Dimitrios Glentadakis), updated AUTHORS +------------------------------------------------------------------------ +r128 | trialuser02 | 2015-03-29 10:51:40 +0300 (Вс., 29 марта 2015) | 1 line + +added Greek translation (Dimitrios Glentadakis) +------------------------------------------------------------------------ +r125 | trialuser02 | 2015-03-24 20:20:09 +0300 (Вт., 24 марта 2015) | 1 line + +updated homepage +------------------------------------------------------------------------ +r124 | trialuser02 | 2015-03-09 16:14:38 +0300 (Пн., 09 марта 2015) | 1 line + +fixed typo +------------------------------------------------------------------------ +r123 | trialuser02 | 2015-03-09 14:19:37 +0300 (Пн., 09 марта 2015) | 1 line + +version bump +------------------------------------------------------------------------ +r121 | trialuser02 | 2015-03-09 14:10:24 +0300 (Пн., 09 марта 2015) | 1 line + +updated .ts/.qrc/.desktop files +------------------------------------------------------------------------ +r120 | trialuser02 | 2015-03-09 14:06:32 +0300 (Пн., 09 марта 2015) | 1 line + +updated changelog and authors files +------------------------------------------------------------------------ +r119 | trialuser02 | 2015-03-09 14:01:40 +0300 (Пн., 09 марта 2015) | 1 line + +updated German translation (Mario Blättermann) +------------------------------------------------------------------------ +r118 | trialuser02 | 2015-03-09 14:00:11 +0300 (Пн., 09 марта 2015) | 1 line + +added Dutch (Netherlands) translation (Heimen Stoffels) +------------------------------------------------------------------------ +r117 | trialuser02 | 2015-03-09 13:54:20 +0300 (Пн., 09 марта 2015) | 1 line + +updated Chinese (Taiwan) translation (Jeff Huang) +------------------------------------------------------------------------ +r116 | trialuser02 | 2015-03-09 13:51:56 +0300 (Пн., 09 марта 2015) | 1 line + +updated Bulgarian translation (Kiril Kirilov) +------------------------------------------------------------------------ +r115 | trialuser02 | 2015-03-09 13:42:29 +0300 (Пн., 09 марта 2015) | 1 line + +added feature to disable qss support +------------------------------------------------------------------------ +r114 | trialuser02 | 2015-02-11 22:00:47 +0300 (Ср., 11 февр. 2015) | 1 line + +updated Czech translation (fri) +------------------------------------------------------------------------ +r113 | trialuser02 | 2015-02-11 21:59:27 +0300 (Ср., 11 февр. 2015) | 1 line + +updated Chinese (Taiwan) translation (Jeff Huang) +------------------------------------------------------------------------ +r112 | trialuser02 | 2015-02-09 22:40:17 +0300 (Пн., 09 февр. 2015) | 2 lines + +fixed color scheme editor, updated Russian translation + +------------------------------------------------------------------------ +r111 | trialuser02 | 2015-02-09 19:59:21 +0300 (Пн., 09 февр. 2015) | 2 lines + +updated .ts files + +------------------------------------------------------------------------ +r110 | trialuser02 | 2015-02-09 19:58:25 +0300 (Пн., 09 февр. 2015) | 2 lines + +added more user frendly color roles + +------------------------------------------------------------------------ +r109 | trialuser02 | 2015-02-09 13:11:44 +0300 (Пн., 09 февр. 2015) | 1 line + +fixed README +------------------------------------------------------------------------ +r108 | trialuser02 | 2015-02-09 12:28:33 +0300 (Пн., 09 февр. 2015) | 1 line + +version bump +------------------------------------------------------------------------ +r106 | trialuser02 | 2015-02-09 10:30:37 +0300 (Пн., 09 февр. 2015) | 1 line + +updated .desktop file +------------------------------------------------------------------------ +r105 | trialuser02 | 2015-02-09 10:25:26 +0300 (Пн., 09 февр. 2015) | 1 line + +updated changelog +------------------------------------------------------------------------ +r104 | trialuser02 | 2015-02-09 10:16:28 +0300 (Пн., 09 февр. 2015) | 2 lines + +fixed font updating issue + +------------------------------------------------------------------------ +r103 | trialuser02 | 2015-02-09 09:16:14 +0300 (Пн., 09 февр. 2015) | 1 line + +fixed plugin metadata +------------------------------------------------------------------------ +r102 | trialuser02 | 2015-02-08 17:54:00 +0300 (Вс., 08 февр. 2015) | 2 lines + +fixed Russian translation + +------------------------------------------------------------------------ +r101 | trialuser02 | 2015-02-08 17:37:15 +0300 (Вс., 08 февр. 2015) | 1 line + +added Bulgarian translation (Kiril Kirilov) +------------------------------------------------------------------------ +r100 | trialuser02 | 2015-02-08 17:22:20 +0300 (Вс., 08 февр. 2015) | 2 lines + +removed empty line + +------------------------------------------------------------------------ +r99 | trialuser02 | 2015-02-08 17:10:08 +0300 (Вс., 08 февр. 2015) | 2 lines + +improved icon theme parsing + +------------------------------------------------------------------------ +r98 | trialuser02 | 2015-02-07 19:09:37 +0300 (Сб., 07 февр. 2015) | 1 line + +version bump +------------------------------------------------------------------------ +r96 | trialuser02 | 2015-02-07 19:07:58 +0300 (Сб., 07 февр. 2015) | 1 line + +updated .desktop file +------------------------------------------------------------------------ +r93 | trialuser02 | 2015-02-07 18:23:36 +0300 (Сб., 07 февр. 2015) | 2 lines + +fixed palette update + +------------------------------------------------------------------------ +r92 | trialuser02 | 2015-02-07 17:40:38 +0300 (Сб., 07 февр. 2015) | 1 line + +updated AUTHORS +------------------------------------------------------------------------ +r91 | trialuser02 | 2015-02-07 17:32:33 +0300 (Сб., 07 февр. 2015) | 1 line + +updated changelog +------------------------------------------------------------------------ +r90 | trialuser02 | 2015-02-07 17:26:28 +0300 (Сб., 07 февр. 2015) | 2 lines + +added feature to apply theme for running applications + +------------------------------------------------------------------------ +r89 | trialuser02 | 2015-02-07 15:40:58 +0300 (Сб., 07 февр. 2015) | 2 lines + +added 'apply' button + +------------------------------------------------------------------------ +r88 | trialuser02 | 2015-02-07 15:15:08 +0300 (Сб., 07 февр. 2015) | 1 line + +added German translation (Mario Blättermann) +------------------------------------------------------------------------ +r87 | trialuser02 | 2015-01-31 23:51:33 +0300 (Сб., 31 янв. 2015) | 1 line + +added Czech translation (fri) +------------------------------------------------------------------------ +r86 | trialuser02 | 2015-01-31 23:39:09 +0300 (Сб., 31 янв. 2015) | 1 line + +updated Chinese (Taiwan) translation (Jeff Huang) +------------------------------------------------------------------------ +r85 | trialuser02 | 2015-01-24 23:09:10 +0300 (Сб., 24 янв. 2015) | 1 line + +updated Russian translation +------------------------------------------------------------------------ +r84 | trialuser02 | 2015-01-24 23:00:25 +0300 (Сб., 24 янв. 2015) | 2 lines + +updated Russian translation + +------------------------------------------------------------------------ +r83 | trialuser02 | 2015-01-24 22:57:08 +0300 (Сб., 24 янв. 2015) | 2 lines + +updated .ts files + +------------------------------------------------------------------------ +r82 | trialuser02 | 2015-01-24 22:53:16 +0300 (Сб., 24 янв. 2015) | 2 lines + +fixed TODO + +------------------------------------------------------------------------ +r81 | trialuser02 | 2015-01-24 22:52:34 +0300 (Сб., 24 янв. 2015) | 2 lines + +added context menu to style sheet list + +------------------------------------------------------------------------ +r80 | trialuser02 | 2015-01-24 22:42:58 +0300 (Сб., 24 янв. 2015) | 2 lines + +added feature to rename style sheet + +------------------------------------------------------------------------ +r79 | trialuser02 | 2015-01-18 10:33:18 +0300 (Вс., 18 янв. 2015) | 1 line + +added Chinese (Taiwan) translation (Jeff Huang) +------------------------------------------------------------------------ +r78 | trialuser02 | 2015-01-17 15:50:43 +0300 (Сб., 17 янв. 2015) | 1 line + +updated TODO list +------------------------------------------------------------------------ +r77 | trialuser02 | 2015-01-17 15:47:50 +0300 (Сб., 17 янв. 2015) | 1 line + +updated TODO list +------------------------------------------------------------------------ +r76 | trialuser02 | 2015-01-17 15:08:34 +0300 (Сб., 17 янв. 2015) | 1 line + +version bump +------------------------------------------------------------------------ +r74 | trialuser02 | 2015-01-17 15:05:25 +0300 (Сб., 17 янв. 2015) | 1 line + +updated changelog +------------------------------------------------------------------------ +r73 | trialuser02 | 2015-01-17 15:01:55 +0300 (Сб., 17 янв. 2015) | 1 line + +enabled transifex integration +------------------------------------------------------------------------ +r72 | trialuser02 | 2015-01-17 14:47:14 +0300 (Сб., 17 янв. 2015) | 1 line + +prepare for transifex integration +------------------------------------------------------------------------ +r71 | trialuser02 | 2015-01-17 14:34:23 +0300 (Сб., 17 янв. 2015) | 2 lines + +updated .ts files, updated Russian translation + +------------------------------------------------------------------------ +r70 | trialuser02 | 2015-01-17 14:30:23 +0300 (Сб., 17 янв. 2015) | 2 lines + +fixed typo + +------------------------------------------------------------------------ +r69 | trialuser02 | 2015-01-17 14:28:45 +0300 (Сб., 17 янв. 2015) | 2 lines + +updated README + +------------------------------------------------------------------------ +r68 | trialuser02 | 2015-01-17 14:28:19 +0300 (Сб., 17 янв. 2015) | 2 lines + +fixed typo + +------------------------------------------------------------------------ +r67 | trialuser02 | 2015-01-17 14:19:32 +0300 (Сб., 17 янв. 2015) | 1 line + +updated .ts files +------------------------------------------------------------------------ +r66 | trialuser02 | 2015-01-17 14:18:48 +0300 (Сб., 17 янв. 2015) | 2 lines + +added qss editor + +------------------------------------------------------------------------ +r65 | trialuser02 | 2015-01-17 13:50:35 +0300 (Сб., 17 янв. 2015) | 2 lines + +added feature to create/remove stylesheets + +------------------------------------------------------------------------ +r64 | trialuser02 | 2015-01-17 12:57:01 +0300 (Сб., 17 янв. 2015) | 2 lines + +added stylesheets loader + +------------------------------------------------------------------------ +r63 | trialuser02 | 2015-01-15 21:43:07 +0300 (Чт., 15 янв. 2015) | 2 lines + +added stylesheet config implementation, updated .ts files + +------------------------------------------------------------------------ +r62 | trialuser02 | 2015-01-15 20:12:04 +0300 (Чт., 15 янв. 2015) | 2 lines + +enabled qss tab, updated .ts files + +------------------------------------------------------------------------ +r61 | trialuser02 | 2015-01-15 20:03:27 +0300 (Чт., 15 янв. 2015) | 2 lines + +cleanup + +------------------------------------------------------------------------ +r60 | trialuser02 | 2015-01-15 20:02:27 +0300 (Чт., 15 янв. 2015) | 2 lines + +prepare for style sheets support implementation + +------------------------------------------------------------------------ +r59 | trialuser02 | 2014-12-28 19:34:49 +0300 (Вс., 28 дек. 2014) | 2 lines + +updated copyright + +------------------------------------------------------------------------ +r58 | trialuser02 | 2014-12-26 15:44:18 +0300 (Пт., 26 дек. 2014) | 1 line + +version bump +------------------------------------------------------------------------ +r56 | trialuser02 | 2014-12-26 15:16:08 +0300 (Пт., 26 дек. 2014) | 1 line + +updated changelog +------------------------------------------------------------------------ +r55 | trialuser02 | 2014-12-26 15:12:53 +0300 (Пт., 26 дек. 2014) | 2 lines + +added feature to change install prefix + +------------------------------------------------------------------------ +r54 | trialuser02 | 2014-12-26 09:57:40 +0300 (Пт., 26 дек. 2014) | 2 lines + +fixed typo + +------------------------------------------------------------------------ +r53 | trialuser02 | 2014-12-26 09:55:19 +0300 (Пт., 26 дек. 2014) | 2 lines + +added dialog buttons layout setting + +------------------------------------------------------------------------ +r52 | trialuser02 | 2014-12-22 11:11:03 +0300 (Пн., 22 дек. 2014) | 1 line + +version bump +------------------------------------------------------------------------ +r50 | trialuser02 | 2014-12-22 11:04:59 +0300 (Пн., 22 дек. 2014) | 2 lines + +updated changelog + +------------------------------------------------------------------------ +r49 | trialuser02 | 2014-12-22 10:56:20 +0300 (Пн., 22 дек. 2014) | 2 lines + +updated Russian translation + +------------------------------------------------------------------------ +r48 | trialuser02 | 2014-12-22 10:50:10 +0300 (Пн., 22 дек. 2014) | 2 lines + +removed close button from preview window + +------------------------------------------------------------------------ +r47 | trialuser02 | 2014-12-12 14:46:21 +0300 (Пт., 12 дек. 2014) | 2 lines + +fixed lcdfilter option + +------------------------------------------------------------------------ +r46 | trialuser02 | 2014-12-12 14:41:14 +0300 (Пт., 12 дек. 2014) | 2 lines + +updated documentation + +------------------------------------------------------------------------ +r45 | trialuser02 | 2014-12-12 14:37:07 +0300 (Пт., 12 дек. 2014) | 2 lines + +fixed typo, updated Russian translation + +------------------------------------------------------------------------ +r44 | trialuser02 | 2014-12-12 14:31:51 +0300 (Пт., 12 дек. 2014) | 2 lines + +fixed typo + +------------------------------------------------------------------------ +r43 | trialuser02 | 2014-12-12 14:20:13 +0300 (Пт., 12 дек. 2014) | 2 lines + +added fonts.conf generation + +------------------------------------------------------------------------ +r42 | trialuser02 | 2014-12-12 13:04:46 +0300 (Пт., 12 дек. 2014) | 2 lines + +added fontconfig dialog + +------------------------------------------------------------------------ +r41 | trialuser02 | 2014-12-11 15:40:32 +0300 (Чт., 11 дек. 2014) | 2 lines + +fixed README + +------------------------------------------------------------------------ +r40 | trialuser02 | 2014-12-11 15:35:56 +0300 (Чт., 11 дек. 2014) | 2 lines + +version bump + +------------------------------------------------------------------------ +r38 | trialuser02 | 2014-12-11 15:29:40 +0300 (Чт., 11 дек. 2014) | 2 lines + +updated changelog + +------------------------------------------------------------------------ +r37 | trialuser02 | 2014-12-11 15:26:37 +0300 (Чт., 11 дек. 2014) | 2 lines + +updated Russian translation + +------------------------------------------------------------------------ +r36 | trialuser02 | 2014-12-11 15:21:52 +0300 (Чт., 11 дек. 2014) | 2 lines + +added ui settings implementation + +------------------------------------------------------------------------ +r35 | trialuser02 | 2014-12-10 21:29:18 +0300 (Ср., 10 дек. 2014) | 2 lines + +added interface settings page (not implemented yet) + +------------------------------------------------------------------------ +r34 | trialuser02 | 2014-12-07 00:41:32 +0300 (Вс., 07 дек. 2014) | 2 lines + +added TODO file + +------------------------------------------------------------------------ +r33 | trialuser02 | 2014-12-07 00:33:58 +0300 (Вс., 07 дек. 2014) | 2 lines + +version bump + +------------------------------------------------------------------------ +r31 | trialuser02 | 2014-12-07 00:27:24 +0300 (Вс., 07 дек. 2014) | 2 lines + +updated changelog, updated .ts files + +------------------------------------------------------------------------ +r30 | trialuser02 | 2014-12-07 00:19:19 +0300 (Вс., 07 дек. 2014) | 2 lines + +fixed preview updating + +------------------------------------------------------------------------ +r29 | trialuser02 | 2014-12-07 00:12:27 +0300 (Вс., 07 дек. 2014) | 2 lines + +fixed layout + +------------------------------------------------------------------------ +r28 | trialuser02 | 2014-12-06 19:47:46 +0300 (Сб., 06 дек. 2014) | 2 lines + +version bump + +------------------------------------------------------------------------ +r27 | trialuser02 | 2014-12-06 19:47:14 +0300 (Сб., 06 дек. 2014) | 2 lines + +fixed Russian translation, fixed preview window + +------------------------------------------------------------------------ +r26 | trialuser02 | 2014-12-06 19:41:25 +0300 (Сб., 06 дек. 2014) | 2 lines + +some ui changes + +------------------------------------------------------------------------ +r24 | trialuser02 | 2014-12-02 09:57:31 +0300 (Вт., 02 дек. 2014) | 2 lines + +added changelog and build script + +------------------------------------------------------------------------ +r23 | trialuser02 | 2014-12-02 09:43:23 +0300 (Вт., 02 дек. 2014) | 2 lines + +updated Russian translation + +------------------------------------------------------------------------ +r22 | trialuser02 | 2014-12-02 09:41:44 +0300 (Вт., 02 дек. 2014) | 2 lines + +added version output, fixed layout + +------------------------------------------------------------------------ +r21 | trialuser02 | 2014-12-02 09:32:36 +0300 (Вт., 02 дек. 2014) | 2 lines + +fixed README + +------------------------------------------------------------------------ +r20 | trialuser02 | 2014-12-01 23:01:49 +0300 (Пн., 01 дек. 2014) | 2 lines + +added documentation + +------------------------------------------------------------------------ +r19 | trialuser02 | 2014-12-01 22:03:24 +0300 (Пн., 01 дек. 2014) | 2 lines + +added installation support + +------------------------------------------------------------------------ +r18 | trialuser02 | 2014-12-01 21:25:45 +0300 (Пн., 01 дек. 2014) | 2 lines + +added Russian translation + +------------------------------------------------------------------------ +r17 | trialuser02 | 2014-12-01 20:59:14 +0300 (Пн., 01 дек. 2014) | 2 lines + +added desktop file + +------------------------------------------------------------------------ +r16 | trialuser02 | 2014-12-01 20:42:05 +0300 (Пн., 01 дек. 2014) | 2 lines + +removed useless files + +------------------------------------------------------------------------ +r15 | trialuser02 | 2014-12-01 20:23:57 +0300 (Пн., 01 дек. 2014) | 2 lines + +fixed oxygen theme support + +------------------------------------------------------------------------ +r14 | trialuser02 | 2014-12-01 16:26:20 +0300 (Пн., 01 дек. 2014) | 2 lines + +added empty icons + +------------------------------------------------------------------------ +r13 | trialuser02 | 2014-12-01 15:56:32 +0300 (Пн., 01 дек. 2014) | 2 lines + +added directories for images + +------------------------------------------------------------------------ +r12 | trialuser02 | 2014-12-01 15:39:45 +0300 (Пн., 01 дек. 2014) | 2 lines + +removed useless debug message + +------------------------------------------------------------------------ +r11 | trialuser02 | 2014-12-01 15:39:17 +0300 (Пн., 01 дек. 2014) | 2 lines + +added translations support + +------------------------------------------------------------------------ +r10 | trialuser02 | 2014-12-01 15:22:09 +0300 (Пн., 01 дек. 2014) | 2 lines + +fixed some ui bugs + +------------------------------------------------------------------------ +r9 | trialuser02 | 2014-12-01 15:15:59 +0300 (Пн., 01 дек. 2014) | 2 lines + +added empty translations + +------------------------------------------------------------------------ +r8 | trialuser02 | 2014-12-01 14:54:46 +0300 (Пн., 01 дек. 2014) | 2 lines + +added qt5ct.pri + +------------------------------------------------------------------------ +r7 | trialuser02 | 2014-12-01 14:48:51 +0300 (Пн., 01 дек. 2014) | 1 line + +fixed icon theme setting +------------------------------------------------------------------------ +r6 | trialuser02 | 2014-12-01 14:31:48 +0300 (Пн., 01 дек. 2014) | 1 line + +added icon theme setting +------------------------------------------------------------------------ +r5 | trialuser02 | 2014-11-28 16:19:53 +0300 (Пт., 28 нояб. 2014) | 2 lines + +added empty icon page + +------------------------------------------------------------------------ +r4 | trialuser02 | 2014-11-28 14:19:56 +0300 (Пт., 28 нояб. 2014) | 2 lines + +added feature to save window geometry + +------------------------------------------------------------------------ +r3 | trialuser02 | 2014-11-28 14:05:28 +0300 (Пт., 28 нояб. 2014) | 1 line + +fixed test script +------------------------------------------------------------------------ +r2 | trialuser02 | 2014-11-28 13:59:13 +0300 (Пт., 28 нояб. 2014) | 1 line + +project import +------------------------------------------------------------------------ diff --git a/src-qt5/core/lumina-theme-engine/LICENSE b/src-qt5/core/lumina-theme-engine/LICENSE new file mode 100644 index 00000000..6d38d881 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/LICENSE @@ -0,0 +1,37 @@ +Copyright for original source of project (prior to commit a852d14 of: +https://github.com/trueos/lumina/tree/master/src-qt5/core/lumina-theme-engine +held by Ilya Kotov https://sourceforge.net/projects/qt5ct/ +under an MIT License. + +All further commits are Copyright of q5sys under MIT License. + + +Original Project Copyright: + + +Copyright (c) 2014-2017, Ilya Kotov +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/src-qt5/core/lumina-theme-engine/README b/src-qt5/core/lumina-theme-engine/README new file mode 100644 index 00000000..7cbcab98 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/README @@ -0,0 +1,55 @@ +qt5ct - Qt5 Configuration Tool + +This program allows users to configure Qt5 settings (theme, font, icons, etc.) +under DE/WM without Qt integration. + +Official home page: https://sourceforge.net/projects/qt5ct/ + +Requirements: + +- GNU Linux or FreeBSD +- qtbase >= 5.4.0 +- qtsvg >= 5.4.0 (For svg icons) +- qttools >= 5.4.0 (For build only) + + +Installation: + +qmake PREFIX= +make +make install (under root) + +Add line 'export QT_QPA_PLATFORMTHEME=qt5ct' to ~/.profile and re-login. +Alternatively, create the file /etc/X11/Xsession.d/100-qt5ct with +the following line: + +export QT_QPA_PLATFORMTHEME=qt5ct + +Now restart X11 server to take the changes effect. + +Extra build options (for advanced users only): +qmake DISABLE_WIDGETS=1 - compiles platform plugin without QtWidgets (useful for QML applications only) +qmake PLUGINDIR= - changes the default installation path of the plugins (libqt5ct.so and libqt5ct-style.so) + +Debug Messages: + +By default, platform plugin prints debug information to stderr. To disable this behaviour, you should +export the following environment variable: + +export QT_LOGGIN_RULES="qt5ct.debug=false" + +Another way is to change qtlogging.ini file. See Qt documentation for details: +http://doc.qt.io/qt-5/qloggingcategory.html (paragraph "Configuring Categories") + +Files and Directories: + +qt5ct - Qt5 configuration tool +libqt5ct.so - qt5ct platform plugin +libqt5ct-style.so - qt5ct proxy style plugin +~/.config/qt5ct/qt5ct.conf - configuration file +~/.config/qt5ct/qss/ - style sheets + + +Translation: + +Use Transifex service: https://www.transifex.com/projects/p/qt5ct/ diff --git a/src-qt5/core/lumina-theme-engine/qt5ct.pri b/src-qt5/core/lumina-theme-engine/qt5ct.pri new file mode 100644 index 00000000..c9fe0cb7 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/qt5ct.pri @@ -0,0 +1,33 @@ +#Some conf to redirect intermediate stuff in separate dirs +UI_DIR=./.build/ui/ +MOC_DIR=./.build/moc/ +OBJECTS_DIR=./.build/obj +RCC_DIR=./.build/rcc + +QMAKE_DISTCLEAN += -r .build +QMAKE_DISTCLEAN += translations/*.qm + +CONFIG += c++11 + +!isEqual (QT_MAJOR_VERSION, 5) { + error("Use Qt 5.4.0 or higher.") +} + +!greaterThan(QT_MINOR_VERSION, 3) { + error("Use Qt 5.4.0 or higher.") +} + +#Install paths +unix { + isEmpty(PREFIX) { + PREFIX = /usr + } + isEmpty(PLUGINDIR) { + PLUGINDIR = $$[QT_INSTALL_PLUGINS] + } + + BINDIR = $$PREFIX/bin + DATADIR = $$PREFIX/share + + DEFINES += QT5CT_DATADIR=\\\"$$DATADIR\\\" +} diff --git a/src-qt5/core/lumina-theme-engine/qt5ct.pro b/src-qt5/core/lumina-theme-engine/qt5ct.pro new file mode 100644 index 00000000..427f9512 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/qt5ct.pro @@ -0,0 +1,37 @@ +TEMPLATE = subdirs + +SUBDIRS += src/qt5ct-qtplugin src/qt5ct-style src/qt5ct + + +unix:exists($$[QT_INSTALL_BINS]/lrelease){ +LRELEASE_EXECUTABLE = $$[QT_INSTALL_BINS]/lrelease +} + +unix:exists($$[QT_INSTALL_BINS]/lrelease-qt5){ +LRELEASE_EXECUTABLE = $$[QT_INSTALL_BINS]/lrelease-qt5 +} + + +win32:exists($$[QT_INSTALL_BINS]/lrelease.exe){ +LRELEASE_EXECUTABLE = $$[QT_INSTALL_BINS]/lrelease.exe +} + + +isEmpty(LRELEASE_EXECUTABLE){ +error(Could not find lrelease executable) +} +else { +message(Found lrelease executable: $$LRELEASE_EXECUTABLE) +} + +message(generating translations) +unix:system(find . -name *.ts | xargs $$LRELEASE_EXECUTABLE) +win32:system(for /r %B in (*.ts) do $$LRELEASE_EXECUTABLE %B) + +include(qt5ct.pri) + +message (PREFIX=$$PREFIX) +message (BINDIR=$$BINDIR) +message (DATADIR=$$DATADIR) +message (PLUGINDIR=$$PLUGINDIR) +equals (DISABLE_WIDGETS,1):message ("QtWidgets are disabled!") diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct-qtplugin/main.cpp b/src-qt5/core/lumina-theme-engine/src/qt5ct-qtplugin/main.cpp new file mode 100644 index 00000000..e49004d8 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct-qtplugin/main.cpp @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include "qt5ctplatformtheme.h" + +QT_BEGIN_NAMESPACE + +class Qt5CTPlatformThemePlugin: public QPlatformThemePlugin +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QPA.QPlatformThemeFactoryInterface.5.1" FILE "qt5ct.json") +public: + QPlatformTheme *create(const QString &key, const QStringList ¶ms); +}; + +QPlatformTheme *Qt5CTPlatformThemePlugin::create(const QString &key, const QStringList ¶ms) +{ + Q_UNUSED(params); + if (key.toLower() == "qt5ct") + return new Qt5CTPlatformTheme(); + return NULL; +} + +QT_END_NAMESPACE + +#include "main.moc" diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct-qtplugin/qt5ct-qtplugin.pro b/src-qt5/core/lumina-theme-engine/src/qt5ct-qtplugin/qt5ct-qtplugin.pro new file mode 100644 index 00000000..9dd3eae4 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct-qtplugin/qt5ct-qtplugin.pro @@ -0,0 +1,35 @@ +include(../../qt5ct.pri) + +TEMPLATE = lib +TARGET = qt5ct +CONFIG += plugin + +greaterThan(QT_MINOR_VERSION, 7) { + QT += gui-private theme_support-private +} else { + QT += gui-private platformsupport-private +} + +!contains(DEFINES, QT_NO_DBUS):greaterThan(QT_MINOR_VERSION, 5) { + QT += dbus +} + +SOURCES += \ + main.cpp \ + qt5ctplatformtheme.cpp \ + ../qt5ct/qt5ct.cpp + +!equals (DISABLE_WIDGETS,1) { + QT += widgets +} + +OTHER_FILES += qt5ct.json + +INCLUDEPATH += ../ + +HEADERS += \ + qt5ctplatformtheme.h \ + ../qt5ct/qt5ct.h + +target.path = $$PLUGINDIR/platformthemes +INSTALLS += target diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct-qtplugin/qt5ct.json b/src-qt5/core/lumina-theme-engine/src/qt5ct-qtplugin/qt5ct.json new file mode 100644 index 00000000..55466151 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct-qtplugin/qt5ct.json @@ -0,0 +1,3 @@ +{ + "Keys": [ "qt5ct" ] +} diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct-qtplugin/qt5ctplatformtheme.cpp b/src-qt5/core/lumina-theme-engine/src/qt5ct-qtplugin/qt5ctplatformtheme.cpp new file mode 100644 index 00000000..4c20d68f --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct-qtplugin/qt5ctplatformtheme.cpp @@ -0,0 +1,366 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifdef QT_WIDGETS_LIB +#include +#include +#include +#include +#endif +#include +#include + +#include +#include "qt5ctplatformtheme.h" +#if (QT_VERSION >= QT_VERSION_CHECK(5, 7, 0)) && !defined(QT_NO_DBUS) +#include +#endif +#if !defined(QT_NO_DBUS) && !defined(QT_NO_SYSTEMTRAYICON) +#include +#include +#endif + + + +Q_LOGGING_CATEGORY(lqt5ct, "qt5ct") + +//QT_QPA_PLATFORMTHEME=qt5ct + +Qt5CTPlatformTheme::Qt5CTPlatformTheme() +{ + if(QGuiApplication::desktopSettingsAware()) + { + readSettings(); + QMetaObject::invokeMethod(this, "applySettings", Qt::QueuedConnection); +#ifdef QT_WIDGETS_LIB + QMetaObject::invokeMethod(this, "createFSWatcher", Qt::QueuedConnection); +#endif + QGuiApplication::setFont(m_generalFont); + } + qCDebug(lqt5ct) << "using qt5ct plugin"; +#ifdef QT_WIDGETS_LIB + if(!QStyleFactory::keys().contains("qt5ct-style")) + qCCritical(lqt5ct) << "unable to find qt5ct proxy style"; +#endif +} + +Qt5CTPlatformTheme::~Qt5CTPlatformTheme() +{ + if(m_customPalette) + delete m_customPalette; +} + +#if (QT_VERSION >= QT_VERSION_CHECK(5, 7, 0)) && !defined(QT_NO_DBUS) +QPlatformMenuBar *Qt5CTPlatformTheme::createPlatformMenuBar() const +{ + if(m_checkDBusGlobalMenu) + { + QDBusConnection conn = QDBusConnection::sessionBus(); + m_dbusGlobalMenuAvailable = conn.interface()->isServiceRegistered("com.canonical.AppMenu.Registrar"); + qCDebug(lqt5ct) << "D-Bus global menu:" << (m_dbusGlobalMenuAvailable ? "yes" : "no"); + } + return (m_dbusGlobalMenuAvailable ? new QDBusMenuBar() : nullptr); +} +#endif + +#if !defined(QT_NO_DBUS) && !defined(QT_NO_SYSTEMTRAYICON) +QPlatformSystemTrayIcon *Qt5CTPlatformTheme::createPlatformSystemTrayIcon() const +{ + if(m_checkDBusTray) + { + QDBusMenuConnection conn; + m_dbusTrayAvailable = conn.isStatusNotifierHostRegistered(); + m_checkDBusTray = false; + qCDebug(lqt5ct) << "D-Bus system tray:" << (m_dbusTrayAvailable ? "yes" : "no"); + } + return (m_dbusTrayAvailable ? new QDBusTrayIcon() : nullptr); +} +#endif + +const QPalette *Qt5CTPlatformTheme::palette(QPlatformTheme::Palette type) const +{ + Q_UNUSED(type); + return (m_usePalette ? m_customPalette : nullptr); +} + +const QFont *Qt5CTPlatformTheme::font(QPlatformTheme::Font type) const +{ + if(type == QPlatformTheme::FixedFont) + return &m_fixedFont; + return &m_generalFont; +} + +QVariant Qt5CTPlatformTheme::themeHint(QPlatformTheme::ThemeHint hint) const +{ + switch (hint) + { + case QPlatformTheme::CursorFlashTime: + return m_cursorFlashTime; + case MouseDoubleClickInterval: + return m_doubleClickInterval; + case QPlatformTheme::ToolButtonStyle: + return m_toolButtonStyle; + case QPlatformTheme::SystemIconThemeName: + return m_iconTheme; + case QPlatformTheme::StyleNames: + return QStringList() << "qt5ct-style"; + case QPlatformTheme::IconThemeSearchPaths: + return Qt5CT::iconPaths(); + case DialogButtonBoxLayout: + return m_buttonBoxLayout; + case QPlatformTheme::UiEffects: + return m_uiEffects; +#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) + case QPlatformTheme::WheelScrollLines: + return m_wheelScrollLines; +#endif + default: + return QPlatformTheme::themeHint(hint); + } +} + +void Qt5CTPlatformTheme::applySettings() +{ + if(!QGuiApplication::desktopSettingsAware()) + return; + +#if (QT_VERSION >= QT_VERSION_CHECK(5, 5, 0)) + if(!m_update) + { + //do not override application palette + if(QCoreApplication::testAttribute(Qt::AA_SetPalette)) + { + m_usePalette = false; + qCDebug(lqt5ct) << "palette support is disabled"; + } + } +#endif + +#ifdef QT_WIDGETS_LIB + if(hasWidgets()) + { + qApp->setFont(m_generalFont); + + //Qt 5.6 or higher should be use themeHint function on application startup. + //So, there is no need to call this function first time. +#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) + if(m_update) + qApp->setWheelScrollLines(m_wheelScrollLines); +#else + qApp->setWheelScrollLines(m_wheelScrollLines); +#endif + + if(m_update && qApp->style()->objectName() == "qt5ct-style") //ignore application style + qApp->setStyle("qt5ct-style"); //recreate style object + + if(m_update && m_usePalette) + { + if(m_customPalette) + qApp->setPalette(*m_customPalette); + else + qApp->setPalette(qApp->style()->standardPalette()); + } + + //do not override application style + if(m_prevStyleSheet == qApp->styleSheet()) + qApp->setStyleSheet(m_userStyleSheet); + else + qCDebug(lqt5ct) << "custom style sheet is disabled"; + m_prevStyleSheet = m_userStyleSheet; + } +#endif + QGuiApplication::setFont(m_generalFont); //apply font + QIcon::setThemeName(m_iconTheme); //apply icons + if(m_customPalette && m_usePalette) + QGuiApplication::setPalette(*m_customPalette); //apply palette + +#ifdef QT_WIDGETS_LIB + if(hasWidgets()) + { + foreach (QWidget *w, qApp->allWidgets()) + { + QEvent e(QEvent::ThemeChange); + QApplication::sendEvent(w, &e); + } + } +#endif + + if(!m_update) + m_update = true; +} + +#ifdef QT_WIDGETS_LIB +void Qt5CTPlatformTheme::createFSWatcher() +{ + QFileSystemWatcher *watcher = new QFileSystemWatcher(this); + watcher->addPath(Qt5CT::configPath()); + + QTimer *timer = new QTimer(this); + timer->setSingleShot(true); + timer->setInterval(3000); + connect(watcher, SIGNAL(directoryChanged(QString)), timer, SLOT(start())); + connect(timer, SIGNAL(timeout()), SLOT(updateSettings())); +} + +void Qt5CTPlatformTheme::updateSettings() +{ + qCDebug(lqt5ct) << "updating settings.."; + readSettings(); + applySettings(); +} +#endif + +void Qt5CTPlatformTheme::readSettings() +{ + if(m_customPalette) + { + delete m_customPalette; + m_customPalette = 0; + } + + QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + + settings.beginGroup("Appearance"); + m_style = settings.value("style", "Fusion").toString(); + if(settings.value("custom_palette", false).toBool()) + { + QString schemePath = settings.value("color_scheme_path").toString(); + m_customPalette = new QPalette(loadColorScheme(schemePath)); + } + m_iconTheme = settings.value("icon_theme").toString(); + settings.endGroup(); + + settings.beginGroup("Fonts"); + m_generalFont = settings.value("general", QPlatformTheme::font(QPlatformTheme::SystemFont)).value(); + m_fixedFont = settings.value("fixed", QPlatformTheme::font(QPlatformTheme::FixedFont)).value(); + settings.endGroup(); + + settings.beginGroup("Interface"); + m_doubleClickInterval = QPlatformTheme::themeHint(QPlatformTheme::MouseDoubleClickInterval).toInt(); + m_doubleClickInterval = settings.value("double_click_interval", m_doubleClickInterval).toInt(); + m_cursorFlashTime = QPlatformTheme::themeHint(QPlatformTheme::CursorFlashTime).toInt(); + m_cursorFlashTime = settings.value("cursor_flash_time", m_cursorFlashTime).toInt(); + m_buttonBoxLayout = QPlatformTheme::themeHint(QPlatformTheme::DialogButtonBoxLayout).toInt(); + m_buttonBoxLayout = settings.value("buttonbox_layout", m_buttonBoxLayout).toInt(); + QCoreApplication::setAttribute(Qt::AA_DontShowIconsInMenus, !settings.value("menus_have_icons", true).toBool()); + m_toolButtonStyle = settings.value("toolbutton_style", Qt::ToolButtonFollowStyle).toInt(); + m_wheelScrollLines = settings.value("wheel_scroll_lines", 3).toInt(); + + //load effects + m_uiEffects = QPlatformTheme::themeHint(QPlatformTheme::UiEffects).toInt(); + if(settings.childKeys().contains("gui_effects")) + { + QStringList effectList = settings.value("gui_effects").toStringList(); + m_uiEffects = 0; + if(effectList.contains("General")) + m_uiEffects |= QPlatformTheme::GeneralUiEffect; + if(effectList.contains("AnimateMenu")) + m_uiEffects |= QPlatformTheme::AnimateMenuUiEffect; + if(effectList.contains("FadeMenu")) + m_uiEffects |= QPlatformTheme::FadeMenuUiEffect; + if(effectList.contains("AnimateCombo")) + m_uiEffects |= QPlatformTheme::AnimateComboUiEffect; + if(effectList.contains("AnimateTooltip")) + m_uiEffects |= QPlatformTheme::AnimateTooltipUiEffect; + if(effectList.contains("FadeTooltip")) + m_uiEffects |= QPlatformTheme::FadeTooltipUiEffect; + if(effectList.contains("AnimateToolBox")) + m_uiEffects |= QPlatformTheme::AnimateToolBoxUiEffect; + } + + //load style sheets +#ifdef QT_WIDGETS_LIB + QStringList qssPaths = settings.value("stylesheets").toStringList(); + m_userStyleSheet = loadStyleSheets(qssPaths); +#endif + settings.endGroup(); +} + +#ifdef QT_WIDGETS_LIB +bool Qt5CTPlatformTheme::hasWidgets() +{ + return qobject_cast (qApp) != nullptr; +} +#endif + +QString Qt5CTPlatformTheme::loadStyleSheets(const QStringList &paths) +{ + QString content; + foreach (QString path, paths) + { + if(!QFile::exists(path)) + continue; + + QFile file(path); + file.open(QIODevice::ReadOnly); + content.append(file.readAll()); + } + QRegExp regExp("//.*(\\n|$)"); + regExp.setMinimal(true); + content.remove(regExp); + return content; +} + +QPalette Qt5CTPlatformTheme::loadColorScheme(const QString &filePath) +{ + QPalette customPalette; + QSettings settings(filePath, QSettings::IniFormat); + settings.beginGroup("ColorScheme"); + QStringList activeColors = settings.value("active_colors").toStringList(); + QStringList inactiveColors = settings.value("inactive_colors").toStringList(); + QStringList disabledColors = settings.value("disabled_colors").toStringList(); + settings.endGroup(); + + if(activeColors.count() == QPalette::NColorRoles && + inactiveColors.count() == QPalette::NColorRoles && + disabledColors.count() == QPalette::NColorRoles) + { + for (int i = 0; i < QPalette::NColorRoles; i++) + { + QPalette::ColorRole role = QPalette::ColorRole(i); + customPalette.setColor(QPalette::Active, role, QColor(activeColors.at(i))); + customPalette.setColor(QPalette::Inactive, role, QColor(inactiveColors.at(i))); + customPalette.setColor(QPalette::Disabled, role, QColor(disabledColors.at(i))); + } + } + else + { + customPalette = *QPlatformTheme::palette(SystemPalette); //load fallback palette + } + + return customPalette; +} diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct-qtplugin/qt5ctplatformtheme.h b/src-qt5/core/lumina-theme-engine/src/qt5ct-qtplugin/qt5ctplatformtheme.h new file mode 100644 index 00000000..8eb3cf6a --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct-qtplugin/qt5ctplatformtheme.h @@ -0,0 +1,122 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef QT5CTPLATFORMTHEME_H +#define QT5CTPLATFORMTHEME_H + +#include +#include +#include +#include +#include + +#if (QT_VERSION < QT_VERSION_CHECK(5, 5, 0)) +#ifndef QT_NO_SYSTEMTRAYICON +#define QT_NO_SYSTEMTRAYICON +#endif +#endif + +class QPalette; +#if !defined(QT_NO_DBUS) && !defined(QT_NO_SYSTEMTRAYICON) +class QPlatformSystemTrayIcon; +#endif + +#if (QT_VERSION >= QT_VERSION_CHECK(5, 7, 0)) && !defined(QT_NO_DBUS) +class QPlatformMenuBar; +#endif + +class Qt5CTPlatformTheme : public QObject, public QPlatformTheme +{ + Q_OBJECT +public: + Qt5CTPlatformTheme(); + + virtual ~Qt5CTPlatformTheme(); + + + //virtual QPlatformMenuItem* createPlatformMenuItem() const; + //virtual QPlatformMenu* createPlatformMenu() const; +#if (QT_VERSION >= QT_VERSION_CHECK(5, 7, 0)) && !defined(QT_NO_DBUS) + virtual QPlatformMenuBar* createPlatformMenuBar() const; +#endif + //virtual void showPlatformMenuBar() {} + //virtual bool usePlatformNativeDialog(DialogType type) const; + //virtual QPlatformDialogHelper *createPlatformDialogHelper(DialogType type) const; +#if !defined(QT_NO_DBUS) && !defined(QT_NO_SYSTEMTRAYICON) + virtual QPlatformSystemTrayIcon *createPlatformSystemTrayIcon() const; +#endif + virtual const QPalette *palette(Palette type = SystemPalette) const; + virtual const QFont *font(Font type = SystemFont) const; + virtual QVariant themeHint(ThemeHint hint) const; + //virtual QPixmap standardPixmap(StandardPixmap sp, const QSizeF &size) const; + //virtual QPixmap fileIconPixmap(const QFileInfo &fileInfo, const QSizeF &size, + // QPlatformTheme::IconOptions iconOptions = 0) const; + + //virtual QIconEngine *createIconEngine(const QString &iconName) const; + //virtual QList keyBindings(QKeySequence::StandardKey key) const; + //virtual QString standardButtonText(int button) const; + +private slots: + void applySettings(); +#ifdef QT_WIDGETS_LIB + void createFSWatcher(); + void updateSettings(); +#endif + +private: + void readSettings(); +#ifdef QT_WIDGETS_LIB + bool hasWidgets(); +#endif + QString loadStyleSheets(const QStringList &paths); + QPalette loadColorScheme(const QString &filePath); + QString m_style, m_iconTheme, m_userStyleSheet, m_prevStyleSheet; + QPalette *m_customPalette = nullptr; + QFont m_generalFont, m_fixedFont; + int m_doubleClickInterval; + int m_cursorFlashTime; + int m_uiEffects; + int m_buttonBoxLayout; + bool m_update = false; + bool m_usePalette = true; + int m_toolButtonStyle = Qt::ToolButtonFollowStyle; + int m_wheelScrollLines = 3; +#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) && !defined(QT_NO_DBUS) + mutable bool m_dbusGlobalMenuAvailable = false; + mutable bool m_checkDBusGlobalMenu = true; +#endif +#if !defined(QT_NO_DBUS) && !defined(QT_NO_SYSTEMTRAYICON) + mutable bool m_dbusTrayAvailable = false; + mutable bool m_checkDBusTray = true; +#endif + +}; + +Q_DECLARE_LOGGING_CATEGORY(lqt5ct) + +#endif // QT5CTPLATFORMTHEME_H diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct-style/plugin.cpp b/src-qt5/core/lumina-theme-engine/src/qt5ct-style/plugin.cpp new file mode 100644 index 00000000..345746f3 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct-style/plugin.cpp @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include "qt5ctproxystyle.h" + +class Qt5CTStylePlugin : public QStylePlugin +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QStyleFactoryInterface" FILE "qt5ct.json") + +public: + QStyle *create(const QString &key); +}; + +QStyle *Qt5CTStylePlugin::create(const QString &key) +{ + if (key == "qt5ct-style") + { + QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + QString style = settings.value("Appearance/style", "Fusion").toString(); + if(key == style || !QStyleFactory::keys().contains(style)) + style = "Fusion"; + return new Qt5CTProxyStyle(style); + } + return 0; +} + +#include "plugin.moc" diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct-style/qt5ct-style.pro b/src-qt5/core/lumina-theme-engine/src/qt5ct-style/qt5ct-style.pro new file mode 100644 index 00000000..e6f6dc1c --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct-style/qt5ct-style.pro @@ -0,0 +1,26 @@ +include(../../qt5ct.pri) + +TEMPLATE = lib +TARGET = qt5ct-style +QT += widgets + +# Input + +CONFIG += plugin + +target.path = $$PLUGINDIR/styles +INSTALLS += target + +INCLUDEPATH += ../ + +HEADERS += \ + qt5ctproxystyle.h \ + ../qt5ct/qt5ct.h + +SOURCES += \ + plugin.cpp \ + qt5ctproxystyle.cpp \ + ../qt5ct/qt5ct.cpp + +OTHER_FILES += \ + qt5ct.json diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct-style/qt5ct.json b/src-qt5/core/lumina-theme-engine/src/qt5ct-style/qt5ct.json new file mode 100644 index 00000000..3c42f2d3 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct-style/qt5ct.json @@ -0,0 +1,3 @@ +{ + "Keys": [ "qt5ct-style" ] +} diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct-style/qt5ctproxystyle.cpp b/src-qt5/core/lumina-theme-engine/src/qt5ct-style/qt5ctproxystyle.cpp new file mode 100644 index 00000000..f3b33d5e --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct-style/qt5ctproxystyle.cpp @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include "qt5ctproxystyle.h" + +Qt5CTProxyStyle::Qt5CTProxyStyle(const QString &key) : + QProxyStyle(key) +{ + QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + m_dialogButtonsHaveIcons = settings.value("Interface/dialog_buttons_have_icons", Qt::PartiallyChecked).toInt(); + m_activateItemOnSingleClick = settings.value("Interface/activate_item_on_single_click", Qt::PartiallyChecked).toInt(); +} + +Qt5CTProxyStyle::~Qt5CTProxyStyle() +{ + //qDebug("%s", Q_FUNC_INFO); +} + +int Qt5CTProxyStyle::styleHint(QStyle::StyleHint hint, const QStyleOption *option, const QWidget *widget, QStyleHintReturn *returnData) const +{ + if(hint == QStyle::SH_DialogButtonBox_ButtonsHaveIcons) + { + if(m_dialogButtonsHaveIcons == Qt::Unchecked) + return 0; + else if(m_dialogButtonsHaveIcons == Qt::Checked) + return 1; + } + else if(hint == QStyle::QStyle::SH_ItemView_ActivateItemOnSingleClick) + { + if(m_activateItemOnSingleClick == Qt::Unchecked) + return 0; + else if(m_activateItemOnSingleClick == Qt::Checked) + return 1; + } + return QProxyStyle::styleHint(hint, option, widget, returnData); +} diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct-style/qt5ctproxystyle.h b/src-qt5/core/lumina-theme-engine/src/qt5ct-style/qt5ctproxystyle.h new file mode 100644 index 00000000..842247cf --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct-style/qt5ctproxystyle.h @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef QT5CTPROXYSTYLE_H +#define QT5CTPROXYSTYLE_H + +#include + +class Qt5CTProxyStyle : public QProxyStyle +{ + Q_OBJECT +public: + explicit Qt5CTProxyStyle(const QString &key); + + virtual ~Qt5CTProxyStyle(); + + int styleHint(StyleHint hint, const QStyleOption *option, const QWidget *widget, QStyleHintReturn *returnData) const; + +private: + int m_dialogButtonsHaveIcons; + int m_activateItemOnSingleClick; + +}; + +#endif // QT5CTPROXYSTYLE_H diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/appearancepage.cpp b/src-qt5/core/lumina-theme-engine/src/qt5ct/appearancepage.cpp new file mode 100644 index 00000000..4183dec1 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/appearancepage.cpp @@ -0,0 +1,418 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include "qt5ct.h" +#include "appearancepage.h" +#include "paletteeditdialog.h" +#include "ui_appearancepage.h" +#include "ui_previewform.h" + +AppearancePage::AppearancePage(QWidget *parent) : + TabPage(parent), + m_ui(new Ui::AppearancePage) +{ + m_ui->setupUi(this); + QStringList keys = QStyleFactory::keys(); + keys.removeAll("qt5ct-style"); //hide qt5ct proxy style + m_ui->styleComboBox->addItems(keys); + + connect(m_ui->paletteComboBox, SIGNAL(activated(int)), SLOT(updatePalette())); + connect(m_ui->customPaletteButton, SIGNAL(clicked()), SLOT(updatePalette())); + connect(m_ui->defaultPaletteButton, SIGNAL(clicked()), SLOT(updatePalette())); + + m_previewWidget = new QWidget(this); + m_previewUi = new Ui::PreviewForm(); + m_previewUi->setupUi(m_previewWidget); + QMdiSubWindow *w = m_ui->mdiArea->addSubWindow(m_previewWidget, Qt::CustomizeWindowHint + | Qt::WindowMinMaxButtonsHint + | Qt::WindowTitleHint); + w->move(10, 10); + + QMenu *menu = new QMenu(this); + menu->addAction(QIcon::fromTheme("list-add"), tr("Create"), this, SLOT(createColorScheme())); + m_changeColorSchemeAction = menu->addAction(tr("Edit"), this, SLOT(changeColorScheme())); + menu->addAction(tr("Create a Copy"), this, SLOT(copyColorScheme())); + m_renameColorSchemeAction = menu->addAction(tr("Rename"), this, SLOT(renameColorScheme())); + menu->addSeparator(); + m_removeColorSchemeAction = menu->addAction(tr("Remove"), this, SLOT(removeColorScheme())); + m_ui->colorSchemeButton->setMenu(menu); + + m_changeColorSchemeAction->setIcon(QIcon::fromTheme("accessories-text-editor")); + m_removeColorSchemeAction->setIcon(QIcon::fromTheme("list-remove")); + connect(menu, SIGNAL(aboutToShow()), SLOT(updateActions())); + + readSettings(); +} + +AppearancePage::~AppearancePage() +{ + if(m_selectedStyle) + delete m_selectedStyle; + delete m_ui; + delete m_previewUi; +} + +void AppearancePage::writeSettings() +{ + QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + settings.beginGroup("Appearance"); + settings.setValue("style", m_ui->styleComboBox->currentText()); + settings.setValue("custom_palette", m_ui->customPaletteButton->isChecked()); + settings.setValue("color_scheme_path", m_ui->colorSchemeComboBox->currentData().toString()); + settings.endGroup(); +} + +void AppearancePage::on_styleComboBox_activated(const QString &text) +{ + QStyle *style = QStyleFactory::create(text); + if(!style) + return; + setStyle(m_previewWidget, style); + + if(m_selectedStyle) + delete m_selectedStyle; + m_selectedStyle = style; + + updatePalette(); +} + +void AppearancePage::on_colorSchemeComboBox_activated(int) +{ + m_customPalette = loadColorScheme(m_ui->colorSchemeComboBox->currentData().toString()); + updatePalette(); +} + +void AppearancePage::createColorScheme() +{ + QString name = QInputDialog::getText(this, tr("Enter Color Scheme Name"), tr("File name:")); + if(name.isEmpty()) + return; + + if(!name.endsWith(".conf", Qt::CaseInsensitive)) + name.append(".conf"); + + if(m_ui->colorSchemeComboBox->findText(name.section('.',0,0)) != -1) + { + QMessageBox::warning(this, tr("Error"), tr("The color scheme \"%1\" already exists") + .arg(name.section('.',0,0))); + return; + } + + QString schemePath = Qt5CT::userColorSchemePath() + "/" + name; + + createColorScheme(schemePath, palette()); + m_ui->colorSchemeComboBox->addItem(name.section('.',0,0), schemePath); +} + +void AppearancePage::changeColorScheme() +{ + if(m_ui->colorSchemeComboBox->currentIndex() < 0) + return; + + if(!QFileInfo(m_ui->colorSchemeComboBox->currentData().toString()).isWritable()) + { + QMessageBox::information(this, tr("Warning"), tr("The color scheme \"%1\" is read only") + .arg(m_ui->colorSchemeComboBox->currentText())); + return; + } + + PaletteEditDialog d(m_customPalette, m_selectedStyle, this); + connect(&d, SIGNAL(paletteChanged(QPalette)), SLOT(setPreviewPalette(QPalette))); + if(d.exec() == QDialog::Accepted) + { + m_customPalette = d.selectedPalette(); + createColorScheme(m_ui->colorSchemeComboBox->currentData().toString(), m_customPalette); + } + updatePalette(); +} + +void AppearancePage::removeColorScheme() +{ + int index = m_ui->colorSchemeComboBox->currentIndex(); + if(index < 0 || m_ui->colorSchemeComboBox->count() <= 1) + return; + + if(!QFileInfo(m_ui->colorSchemeComboBox->currentData().toString()).isWritable()) + { + QMessageBox::information(this, tr("Warning"), tr("The color scheme \"%1\" is read only") + .arg(m_ui->colorSchemeComboBox->currentText())); + return; + } + + int button = QMessageBox::question(this, tr("Confirm Remove"), + tr("Are you sure you want to remove color scheme \"%1\"?") + .arg(m_ui->colorSchemeComboBox->currentText()), + QMessageBox::Yes | QMessageBox::No); + if(button != QMessageBox::Yes) + return; + + if(QFile::remove(m_ui->colorSchemeComboBox->currentData().toString())) + { + m_ui->colorSchemeComboBox->removeItem(index); + on_colorSchemeComboBox_activated(0); + } +} + +void AppearancePage::copyColorScheme() +{ + if(m_ui->colorSchemeComboBox->currentIndex() < 0) + return; + + QString name = QInputDialog::getText(this, tr("Enter Color Scheme Name"), tr("File name:"), + QLineEdit::Normal, + tr("%1 (copy)").arg(m_ui->colorSchemeComboBox->currentText())); + if(name.isEmpty() || name == m_ui->colorSchemeComboBox->currentText()) + return; + + if(!name.endsWith(".conf", Qt::CaseInsensitive)) + name.append(".conf"); + + if(m_ui->colorSchemeComboBox->findText(name.section('.',0,0)) != -1) + { + QMessageBox::warning(this, tr("Error"), tr("The color scheme \"%1\" already exists") + .arg(name.section('.',0,0))); + return; + } + + QString newPath = Qt5CT::userColorSchemePath() + "/" + name; + QFile::copy(m_ui->colorSchemeComboBox->currentData().toString(), newPath); + m_ui->colorSchemeComboBox->addItem(name.section('.',0,0), newPath); +} + +void AppearancePage::renameColorScheme() +{ + int index = m_ui->colorSchemeComboBox->currentIndex(); + + if(index < 0) + return; + + if(!QFileInfo(m_ui->colorSchemeComboBox->currentData().toString()).isWritable()) + { + QMessageBox::information(this, tr("Warning"), tr("The color scheme \"%1\" is read only") + .arg(m_ui->colorSchemeComboBox->currentText())); + return; + } + + QString name = QInputDialog::getText(this, tr("Enter Color Scheme Name"), tr("File name:"), + QLineEdit::Normal, m_ui->colorSchemeComboBox->currentText()); + if(name.isEmpty() || name == m_ui->colorSchemeComboBox->currentText()) + return; + + if(!name.endsWith(".conf", Qt::CaseInsensitive)) + name.append(".conf"); + + if(m_ui->colorSchemeComboBox->findText(name.section('.',0,0)) != -1) + { + QMessageBox::warning(this, tr("Error"), tr("The color scheme \"%1\" already exists") + .arg(name.section('.',0,0))); + return; + } + + QString newPath = Qt5CT::userColorSchemePath() + "/" + name; + QFile::rename(m_ui->colorSchemeComboBox->currentData().toString(), newPath); + m_ui->colorSchemeComboBox->setItemText(index, name.section('.',0,0)); + m_ui->colorSchemeComboBox->setItemData(index, newPath); +} + +void AppearancePage::updatePalette() +{ + if(!m_selectedStyle) + return; + + setPreviewPalette(m_ui->customPaletteButton->isChecked() ? + m_customPalette : m_selectedStyle->standardPalette()); +} + +void AppearancePage::setPreviewPalette(const QPalette &p) +{ + QPalette previewPalette = palette(); + + QPalette::ColorGroup colorGroup = QPalette::Disabled; + + if(m_ui->paletteComboBox->currentIndex() == 0) + { + colorGroup = QPalette::Active; + } + else if(m_ui->paletteComboBox->currentIndex() == 1) + { + colorGroup = QPalette::Inactive; + } + + for (int i = 0; i < QPalette::NColorRoles; i++) + { + QPalette::ColorRole role = QPalette::ColorRole(i); + previewPalette.setColor(QPalette::Active, role, p.color(colorGroup, role)); + previewPalette.setColor(QPalette::Inactive, role, p.color(colorGroup, role)); + } + + setPalette(m_ui->mdiArea, previewPalette); +} + +void AppearancePage::updateActions() +{ + if(m_ui->colorSchemeComboBox->count() == 0 || + !QFileInfo(m_ui->colorSchemeComboBox->currentData().toString()).isWritable()) + { + m_changeColorSchemeAction->setVisible(false); + m_renameColorSchemeAction->setVisible(false); + m_removeColorSchemeAction->setVisible(false); + } + else + { + m_changeColorSchemeAction->setVisible(true); + m_renameColorSchemeAction->setVisible(true); + m_removeColorSchemeAction->setVisible(m_ui->colorSchemeComboBox->count() > 1); + } +} + +void AppearancePage::readSettings() +{ + QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + settings.beginGroup("Appearance"); + QString style = settings.value("style", "Fusion").toString(); + m_ui->styleComboBox->setCurrentText(style); + + m_ui->customPaletteButton->setChecked(settings.value("custom_palette", false).toBool()); + QString colorSchemePath = settings.value("color_scheme_path").toString(); + + QDir("/").mkpath(Qt5CT::userColorSchemePath()); + findColorSchemes(Qt5CT::userColorSchemePath()); + findColorSchemes(Qt5CT::sharedColorSchemePath()); + + if(m_ui->colorSchemeComboBox->count() == 0) + { + m_customPalette = palette(); //load fallback palette + } + else + { + int index = m_ui->colorSchemeComboBox->findData(colorSchemePath); + if(index >= 0) + m_ui->colorSchemeComboBox->setCurrentIndex(index); + m_customPalette = loadColorScheme(m_ui->colorSchemeComboBox->currentData().toString()); + } + + on_styleComboBox_activated(m_ui->styleComboBox->currentText()); + + settings.endGroup(); +} + +void AppearancePage::setStyle(QWidget *w, QStyle *s) +{ + foreach (QObject *o, w->children()) + { + if(o->isWidgetType()) + { + setStyle(qobject_cast(o), s); + } + } + w->setStyle(s); +} + +void AppearancePage::setPalette(QWidget *w, QPalette p) +{ + foreach (QObject *o, w->children()) + { + if(o->isWidgetType()) + { + setPalette(qobject_cast(o), p); + } + } + w->setPalette(p); +} + +void AppearancePage::findColorSchemes(const QString &path) +{ + QDir dir(path); + dir.setFilter(QDir::Files); + dir.setNameFilters(QStringList() << "*.conf"); + + foreach (QFileInfo info, dir.entryInfoList()) + { + m_ui->colorSchemeComboBox->addItem(info.baseName(), info.filePath()); + } +} + +QPalette AppearancePage::loadColorScheme(const QString &filePath) +{ + QPalette customPalette; + QSettings settings(filePath, QSettings::IniFormat); + settings.beginGroup("ColorScheme"); + QStringList activeColors = settings.value("active_colors").toStringList(); + QStringList inactiveColors = settings.value("inactive_colors").toStringList(); + QStringList disabledColors = settings.value("disabled_colors").toStringList(); + settings.endGroup(); + + if(activeColors.count() == QPalette::NColorRoles && + inactiveColors.count() == QPalette::NColorRoles && + disabledColors.count() == QPalette::NColorRoles) + { + for (int i = 0; i < QPalette::NColorRoles; i++) + { + QPalette::ColorRole role = QPalette::ColorRole(i); + customPalette.setColor(QPalette::Active, role, QColor(activeColors.at(i))); + customPalette.setColor(QPalette::Inactive, role, QColor(inactiveColors.at(i))); + customPalette.setColor(QPalette::Disabled, role, QColor(disabledColors.at(i))); + } + } + else + { + customPalette = palette(); //load fallback palette + } + + return customPalette; +} + +void AppearancePage::createColorScheme(const QString &name, const QPalette &palette) +{ + QSettings settings(name, QSettings::IniFormat); + settings.beginGroup("ColorScheme"); + + QStringList activeColors, inactiveColors, disabledColors; + for (int i = 0; i < QPalette::NColorRoles; i++) + { + QPalette::ColorRole role = QPalette::ColorRole(i); + activeColors << palette.color(QPalette::Active, role).name(); + inactiveColors << palette.color(QPalette::Inactive, role).name(); + disabledColors << palette.color(QPalette::Disabled, role).name(); + } + + settings.setValue("active_colors",activeColors); + settings.setValue("inactive_colors",inactiveColors); + settings.setValue("disabled_colors",disabledColors); + + settings.endGroup(); + +} diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/appearancepage.h b/src-qt5/core/lumina-theme-engine/src/qt5ct/appearancepage.h new file mode 100644 index 00000000..3a7752c7 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/appearancepage.h @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef APPEARANCEPAGE_H +#define APPEARANCEPAGE_H + +#include "tabpage.h" + +namespace Ui { +class AppearancePage; +class PreviewForm; +} + +class QStyle; +class QAction; + +class AppearancePage : public TabPage +{ + Q_OBJECT + +public: + explicit AppearancePage(QWidget *parent = 0); + ~AppearancePage(); + + void writeSettings(); + +private slots: + void on_styleComboBox_activated(const QString &text); + void on_colorSchemeComboBox_activated(int); + void createColorScheme(); + void changeColorScheme(); + void removeColorScheme(); + void copyColorScheme(); + void renameColorScheme(); + void updatePalette(); + void setPreviewPalette(const QPalette &p); + void updateActions(); + +private: + void readSettings(); + void setStyle(QWidget *w, QStyle *s); + void setPalette(QWidget *w, QPalette p); + void findColorSchemes(const QString &path); + QPalette loadColorScheme(const QString &filePath); + void createColorScheme(const QString &name, const QPalette &palette); + Ui::AppearancePage *m_ui; + QStyle *m_selectedStyle = nullptr; + QPalette m_customPalette; + QWidget *m_previewWidget; + QAction *m_changeColorSchemeAction, *m_renameColorSchemeAction, *m_removeColorSchemeAction; + Ui::PreviewForm *m_previewUi; +}; + +#endif // APPEARANCEPAGE_H diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/appearancepage.ui b/src-qt5/core/lumina-theme-engine/src/qt5ct/appearancepage.ui new file mode 100644 index 00000000..cd442930 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/appearancepage.ui @@ -0,0 +1,243 @@ + + + AppearancePage + + + + 0 + 0 + 596 + 470 + + + + Form + + + + + + Style: + + + + + + + Preview + + + + + + + Active palette + + + + + Inactive palette + + + + + Disabled palette + + + + + + + + Qt::Horizontal + + + + 82 + 20 + + + + + + + + false + + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Palette + + + + + + 6 + + + + + Default + + + true + + + + + + + Custom + + + + + + + Qt::Horizontal + + + + 230 + 20 + + + + + + + + + + + + false + + + Color scheme: + + + + + + + false + + + + 150 + 0 + + + + + + + + false + + + ... + + + QToolButton::InstantPopup + + + Qt::NoArrow + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + + customPaletteButton + toggled(bool) + colorScheeLabel + setEnabled(bool) + + + 160 + 79 + + + 77 + 104 + + + + + customPaletteButton + toggled(bool) + colorSchemeComboBox + setEnabled(bool) + + + 144 + 75 + + + 146 + 100 + + + + + customPaletteButton + toggled(bool) + colorSchemeButton + setEnabled(bool) + + + 177 + 78 + + + 288 + 116 + + + + + diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_ar.desktop.in b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_ar.desktop.in new file mode 100644 index 00000000..084c5d7e --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_ar.desktop.in @@ -0,0 +1,33 @@ +[Desktop Entry] +X-Desktop-File-Install-Version=0.11 +Name=Qt5 Settings + +Comment=Qt5 Configuration Tool + + + + + + + + + + + + + + + + + +Exec=qt5ct +Icon=preferences-desktop-theme +Terminal=false +Type=Application +Categories=Settings;DesktopSettings;Qt; + + +# Translations +Comment[ar]= أداة اعداد Qt5 +Name[ar]=إعدادات Qt5 +Icon[ar]=preferences-desktop-theme diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_bg.desktop.in b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_bg.desktop.in new file mode 100644 index 00000000..59010466 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_bg.desktop.in @@ -0,0 +1,33 @@ +[Desktop Entry] +X-Desktop-File-Install-Version=0.11 +Name=Qt5 Settings + +Comment=Qt5 Configuration Tool + + + + + + + + + + + + + + + + + +Exec=qt5ct +Icon=preferences-desktop-theme +Terminal=false +Type=Application +Categories=Settings;DesktopSettings;Qt; + + +# Translations +Comment[bg]=Инструмент за настройка на Qt5 +Name[bg]=Настройки на Qt5 +Icon[bg]=настройки-десктоп-тема diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_cs.desktop.in b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_cs.desktop.in new file mode 100644 index 00000000..9884c7c9 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_cs.desktop.in @@ -0,0 +1,33 @@ +[Desktop Entry] +X-Desktop-File-Install-Version=0.11 +Name=Qt5 Settings + +Comment=Qt5 Configuration Tool + + + + + + + + + + + + + + + + + +Exec=qt5ct +Icon=preferences-desktop-theme +Terminal=false +Type=Application +Categories=Settings;DesktopSettings;Qt; + + +# Translations +Comment[cs]=Nástroj na nastavení Qt5 +Name[cs]=Nastavení Qt5 +Icon[cs]=nastavení-prostředí-téma diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_de.desktop.in b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_de.desktop.in new file mode 100644 index 00000000..abfd2a2a --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_de.desktop.in @@ -0,0 +1,33 @@ +[Desktop Entry] +X-Desktop-File-Install-Version=0.11 +Name=Qt5 Settings + +Comment=Qt5 Configuration Tool + + + + + + + + + + + + + + + + + +Exec=qt5ct +Icon=preferences-desktop-theme +Terminal=false +Type=Application +Categories=Settings;DesktopSettings;Qt; + + +# Translations +Comment[de]=Qt5-Konfigurationswerkzeug +Name[de]=Qt5-Einstellungen +Icon[de]=preferences-desktop-theme diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_el.desktop.in b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_el.desktop.in new file mode 100644 index 00000000..76f5f7bc --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_el.desktop.in @@ -0,0 +1,33 @@ +[Desktop Entry] +X-Desktop-File-Install-Version=0.11 +Name=Qt5 Settings + +Comment=Qt5 Configuration Tool + + + + + + + + + + + + + + + + + +Exec=qt5ct +Icon=preferences-desktop-theme +Terminal=false +Type=Application +Categories=Settings;DesktopSettings;Qt; + + +# Translations +Comment[el]=Εργαλείο διαμόρφωσης της Qt5 +Name[el]=Ρυθμίσεις Qt5 +Icon[el]=preferences-desktop-theme diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_es_ES.desktop.in b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_es_ES.desktop.in new file mode 100644 index 00000000..06ebaa8b --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_es_ES.desktop.in @@ -0,0 +1,29 @@ +[Desktop Entry] +X-Desktop-File-Install-Version=0.11 +Name=Qt5 Settings + +Comment=Qt5 Configuration Tool + + + + + + + + + + + + + +Exec=qt5ct +Icon=preferences-desktop-theme +Terminal=false +Type=Application +Categories=Settings;DesktopSettings;Qt; + + +# Translations +Comment[es_ES]=Herramienta de configuración de QT5 +Name[es_ES]=Ajustes QT5 +Icon[es_ES]=preferencias-tema-escritorio diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_fr.desktop.in b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_fr.desktop.in new file mode 100644 index 00000000..ca58174a --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_fr.desktop.in @@ -0,0 +1,33 @@ +[Desktop Entry] +X-Desktop-File-Install-Version=0.11 +Name=Qt5 Settings + +Comment=Qt5 Configuration Tool + + + + + + + + + + + + + + + + + +Exec=qt5ct +Icon=preferences-desktop-theme +Terminal=false +Type=Application +Categories=Settings;DesktopSettings;Qt; + + +# Translations +Comment[fr]=Un outil de configuration de Qt5 +Name[fr]=Paramètres de Qt5 +Icon[fr]=preferences-desktop-theme diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_he.desktop.in b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_he.desktop.in new file mode 100644 index 00000000..78c49195 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_he.desktop.in @@ -0,0 +1,33 @@ +[Desktop Entry] +X-Desktop-File-Install-Version=0.11 +Name=Qt5 Settings + +Comment=Qt5 Configuration Tool + + + + + + + + + + + + + + + + + +Exec=qt5ct +Icon=preferences-desktop-theme +Terminal=false +Type=Application +Categories=Settings;DesktopSettings;Qt; + + +# Translations +Comment[he]=כלי תצורה Qt5 +Name[he]=הגדרות Qt5 +Icon[he]=preferences-desktop-theme diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_it_IT.desktop.in b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_it_IT.desktop.in new file mode 100644 index 00000000..266f85fa --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_it_IT.desktop.in @@ -0,0 +1,32 @@ +[Desktop Entry] +X-Desktop-File-Install-Version=0.11 +Name=Qt5 Settings + +Comment=Qt5 Configuration Tool + + + + + + + + + + + + + + + + +Exec=qt5ct +Icon=preferences-desktop-theme +Terminal=false +Type=Application +Categories=Settings;DesktopSettings;Qt; + + +# Translations +Comment[it_IT]=Strumento di configurazione Qt5 +Name[it_IT]=Impostazioni Qt5 +Icon[it_IT]=preferences-desktop-theme diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_nl_NL.desktop.in b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_nl_NL.desktop.in new file mode 100644 index 00000000..c3ef6b16 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_nl_NL.desktop.in @@ -0,0 +1,33 @@ +[Desktop Entry] +X-Desktop-File-Install-Version=0.11 +Name=Qt5 Settings + +Comment=Qt5 Configuration Tool + + + + + + + + + + + + + + + + + +Exec=qt5ct +Icon=preferences-desktop-theme +Terminal=false +Type=Application +Categories=Settings;DesktopSettings;Qt; + + +# Translations +Comment[nl_NL]=Qt5-instellingengereedschap +Name[nl_NL]=Qt5-instellingen +Icon[nl_NL]=preferences-desktop-theme diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_pl.desktop.in b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_pl.desktop.in new file mode 100644 index 00000000..2c4f1af0 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_pl.desktop.in @@ -0,0 +1,32 @@ +[Desktop Entry] +X-Desktop-File-Install-Version=0.11 +Name=Qt5 Settings + +Comment=Qt5 Configuration Tool + + + + + + + + + + + + + + + + +Exec=qt5ct +Icon=preferences-desktop-theme +Terminal=false +Type=Application +Categories=Settings;DesktopSettings;Qt; + + +# Translations +Comment[pl]=Narzędzie konfiguracji Qt5 +Name[pl]=Ustawienia Qt5 +Icon[pl]=preferences-desktop-theme diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_ru.desktop.in b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_ru.desktop.in new file mode 100644 index 00000000..7e4e0076 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_ru.desktop.in @@ -0,0 +1,19 @@ +[Desktop Entry] +X-Desktop-File-Install-Version=0.11 +Name=Qt5 Settings + +Comment=Qt5 Configuration Tool + + + + + + +Exec=qt5ct +Icon=preferences-desktop-theme +Terminal=false +Type=Application +Categories=Settings;DesktopSettings;Qt; + + +# Translations diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_sk.desktop.in b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_sk.desktop.in new file mode 100644 index 00000000..d992aa9b --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_sk.desktop.in @@ -0,0 +1,30 @@ +[Desktop Entry] +X-Desktop-File-Install-Version=0.11 +Name=Qt5 Settings + +Comment=Qt5 Configuration Tool + + + + + + + + + + + + + + + +Exec=qt5ct +Icon=preferences-desktop-theme +Terminal=false +Type=Application +Categories=Settings;DesktopSettings;Qt; + + +# Translations +Comment[sk]=Qt5 konfiguračný nástroj +Name[sk]=Qt5 nastavenia diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_sr.desktop.in b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_sr.desktop.in new file mode 100644 index 00000000..19abdb5a --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_sr.desktop.in @@ -0,0 +1,33 @@ +[Desktop Entry] +X-Desktop-File-Install-Version=0.11 +Name=Qt5 Settings + +Comment=Qt5 Configuration Tool + + + + + + + + + + + + + + + + + +Exec=qt5ct +Icon=preferences-desktop-theme +Terminal=false +Type=Application +Categories=Settings;DesktopSettings;Qt; + + +# Translations +Comment[sr]=Qt5 конфигурациони алат +Name[sr]=Qt5 поставке +Icon[sr]=preferences-desktop-theme diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_zh_CN.desktop.in b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_zh_CN.desktop.in new file mode 100644 index 00000000..921ee36a --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_zh_CN.desktop.in @@ -0,0 +1,29 @@ +[Desktop Entry] +X-Desktop-File-Install-Version=0.11 +Name=Qt5 Settings + +Comment=Qt5 Configuration Tool + + + + + + + + + + + + + +Exec=qt5ct +Icon=preferences-desktop-theme +Terminal=false +Type=Application +Categories=Settings;DesktopSettings;Qt; + + +# Translations +Comment[zh_CN]=Qt5 配置工具 +Name[zh_CN]=Qt5 设置 +Icon[zh_CN]=偏好的桌面主题 diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_zh_TW.desktop.in b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_zh_TW.desktop.in new file mode 100644 index 00000000..af01caf8 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_zh_TW.desktop.in @@ -0,0 +1,33 @@ +[Desktop Entry] +X-Desktop-File-Install-Version=0.11 +Name=Qt5 Settings + +Comment=Qt5 Configuration Tool + + + + + + + + + + + + + + + + + +Exec=qt5ct +Icon=preferences-desktop-theme +Terminal=false +Type=Application +Categories=Settings;DesktopSettings;Qt; + + +# Translations +Comment[zh_TW]=Qt5 設定工具 +Name[zh_TW]=Qt5 設定 +Icon[zh_TW]=偏好的桌面主題 diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/fontconfigdialog.cpp b/src-qt5/core/lumina-theme-engine/src/qt5ct/fontconfigdialog.cpp new file mode 100644 index 00000000..398a2436 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/fontconfigdialog.cpp @@ -0,0 +1,138 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include "fontconfigdialog.h" +#include "ui_fontconfigdialog.h" + +FontConfigDialog::FontConfigDialog(QWidget *parent) : + QDialog(parent), + m_ui(new Ui::FontConfigDialog) +{ + m_ui->setupUi(this); + + m_ui->hintingStyleComboBox->addItem(tr("None"), "hintnone"); + m_ui->hintingStyleComboBox->addItem(tr("Slight"), "hintslight"); + m_ui->hintingStyleComboBox->addItem(tr("Medium"), "hintmedium"); + m_ui->hintingStyleComboBox->addItem(tr("Full"), "hintfull"); + + m_ui->rgbaComboBox->addItem(tr("None"), "none"); + m_ui->rgbaComboBox->addItem("rgb", "rgb"); + m_ui->rgbaComboBox->addItem("bgr", "bgr"); + m_ui->rgbaComboBox->addItem("vrgb", "vrgb"); + m_ui->rgbaComboBox->addItem("vbgr", "vbgr"); + + m_ui->lcdFilterComboBox->addItem("lcdnone"); + m_ui->lcdFilterComboBox->addItem("lcddefault"); + m_ui->lcdFilterComboBox->addItem("lcdlight"); + m_ui->lcdFilterComboBox->addItem("lcdlegacy"); +} + +FontConfigDialog::~FontConfigDialog() +{ + delete m_ui; +} + +void FontConfigDialog::accept() +{ + QDir::home().mkpath(".config/fontconfig/"); + QString path = QDir::homePath() + "/.config/fontconfig/fonts.conf"; + qDebug("FontConfigDialog: fontconfig path: %s", qPrintable(path)); + + + if(QFile::exists(path)) + { + if(QMessageBox::question(this, tr("Font Configuration"), + tr("%1 already exists. Do you want to replace it?").arg(path), + QMessageBox::Yes | QMessageBox::No) == QMessageBox::No) + { + QDialog::reject(); + return; + } + + QFile::remove(path + ".back"); + QFile::copy(path, path + ".back"); + } + + QFile file(path); + if(!file.open(QIODevice::WriteOnly)) + { + qWarning("FontConfigDialog: unable to open file: %s", qPrintable(file.errorString())); + return; + } + + QXmlStreamWriter stream(&file); + stream.setAutoFormatting(true); + + stream.writeStartDocument(); + stream.writeDTD(""); + stream.writeStartElement("fontconfig"); + + stream.writeStartElement("match"); + stream.writeAttribute("target", "font"); + writeOption(&stream, "antialias", "bool", m_ui->antialisingCheckBox->isChecked() ? "true" : "false"); + writeOption(&stream, "hinting", "bool", m_ui->hintingCheckBox->isChecked() ? "true" : "false"); + writeOption(&stream, "hintstyle", "const", m_ui->hintingStyleComboBox->currentData().toString()); + writeOption(&stream, "rgba", "const", m_ui->rgbaComboBox->currentData().toString()); + writeOption(&stream, "autohint", "bool", m_ui->autohinterCheckBox->isChecked() ? "true" : "false"); + writeOption(&stream, "lcdfilter", "const", m_ui->lcdFilterComboBox->currentText()); + writeOption(&stream, "dpi", "double", QString::number(m_ui->dpiSpinBox->value())); + stream.writeEndElement(); + + if(m_ui->disableBoldAutohintCheckBox->isChecked()) + { + stream.writeStartElement("match"); + stream.writeAttribute("target", "font"); + + stream.writeStartElement("test"); + stream.writeAttribute("name", "weight"); + stream.writeAttribute("compare", "more"); + stream.writeTextElement("const", "medium"); + stream.writeEndElement(); + + writeOption(&stream, "autohint", "bool", m_ui->autohinterCheckBox->isChecked() ? "true" : "false"); + + stream.writeEndElement(); + } + stream.writeEndElement(); + stream.writeEndDocument(); + + QDialog::accept(); +} + +void FontConfigDialog::writeOption(QXmlStreamWriter *stream, const QString &name, const QString &type, const QString &value) +{ + stream->writeStartElement("edit"); + stream->writeAttribute("name", name); + stream->writeAttribute("mode", "assign"); + stream->writeTextElement(type, value); + stream->writeEndElement(); +} diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/fontconfigdialog.h b/src-qt5/core/lumina-theme-engine/src/qt5ct/fontconfigdialog.h new file mode 100644 index 00000000..5b7e31a5 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/fontconfigdialog.h @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef FONTCONFIGDIALOG_H +#define FONTCONFIGDIALOG_H + +#include + +namespace Ui { +class FontConfigDialog; +} + +class QXmlStreamWriter; + +class FontConfigDialog : public QDialog +{ + Q_OBJECT + +public: + explicit FontConfigDialog(QWidget *parent = 0); + ~FontConfigDialog(); + +public slots: + void accept(); + void writeOption(QXmlStreamWriter *stream, const QString &name, const QString &type, const QString &value); + +private: + Ui::FontConfigDialog *m_ui; +}; + +#endif // FONTCONFIGDIALOG_H diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/fontconfigdialog.ui b/src-qt5/core/lumina-theme-engine/src/qt5ct/fontconfigdialog.ui new file mode 100644 index 00000000..a557695f --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/fontconfigdialog.ui @@ -0,0 +1,160 @@ + + + FontConfigDialog + + + + 0 + 0 + 349 + 286 + + + + Font Configuration + + + + 6 + + + 6 + + + 6 + + + + + Disable automatic hinting for bold fonts + + + + + + + LCD filter: + + + + + + + Automatic hinting + + + + + + + Hinting + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + Font resolution: + + + + + + + + + + + + + + + + Subpixel geometry: + + + + + + + Antialiasing + + + + + + + Hinting style: + + + + + + + + 0 + 0 + + + + dpi + + + 80 + + + 180 + + + 102 + + + + + + + + + buttonBox + accepted() + FontConfigDialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + FontConfigDialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/fontspage.cpp b/src-qt5/core/lumina-theme-engine/src/qt5ct/fontspage.cpp new file mode 100644 index 00000000..ac9fb164 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/fontspage.cpp @@ -0,0 +1,126 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include +#include +#include "qt5ct.h" +#include "fontspage.h" +#include "fontconfigdialog.h" +#include "ui_fontspage.h" + +FontsPage::FontsPage(QWidget *parent) : + TabPage(parent), + m_ui(new Ui::FontsPage) +{ + m_ui->setupUi(this); + + QSignalMapper *mapper = new QSignalMapper(this); + mapper->setMapping(m_ui->changeGeneralFontButton, m_ui->generalFontLabel); + mapper->setMapping(m_ui->changeFixedWidthFontButton, m_ui->fixedFontLabel); + connect(m_ui->changeGeneralFontButton, SIGNAL(clicked()), mapper, SLOT(map())); + connect(m_ui->changeFixedWidthFontButton, SIGNAL(clicked()), mapper, SLOT(map())); + connect(mapper, SIGNAL(mapped(QWidget*)), SLOT(onFontChangeRequested(QWidget*))); + + readSettings(); + + //icons + m_ui->createFontsConfButton->setIcon(QIcon::fromTheme("document-new")); + m_ui->removeFontsConfButton->setIcon(QIcon::fromTheme("edit-delete")); +} + +FontsPage::~FontsPage() +{ + delete m_ui; +} + +void FontsPage::writeSettings() +{ + QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + settings.beginGroup("Fonts"); + settings.setValue("general", m_ui->generalFontLabel->font()); + settings.setValue("fixed", m_ui->fixedFontLabel->font()); + settings.endGroup(); +} + +void FontsPage::onFontChangeRequested(QWidget *widget) +{ + bool ok = false; + QFont font = QFontDialog::getFont (&ok, widget->font(), this); + if(ok) + { + widget->setFont(font); + qobject_cast(widget)->setText(font.family () + " " + QString::number(font.pointSize ())); + } +} + +void FontsPage::readSettings() +{ + QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + settings.beginGroup("Fonts"); + loadFont(&settings, m_ui->generalFontLabel, "general"); + loadFont(&settings, m_ui->fixedFontLabel, "fixed"); + settings.endGroup(); +} + +void FontsPage::loadFont(QSettings *settings, QLabel *label, const QString &key) +{ + QFont font = settings->value(key, QApplication::font()).value(); + label->setText(font.family () + " " + QString::number(font.pointSize ())); + label->setFont(font); +} + +void FontsPage::on_createFontsConfButton_clicked() +{ + FontConfigDialog d(this); + d.exec(); +} + +void FontsPage::on_removeFontsConfButton_clicked() +{ + QString path = QDir::homePath() + "/.config/fontconfig/fonts.conf"; + + + if(QFile::exists(path)) + { + if(QMessageBox::question(this, tr("Remove Font Configuration"), + tr("Are you sure you want to delete %1?").arg(path), + QMessageBox::Yes | QMessageBox::No) == QMessageBox::No) + { + return; + } + + QFile::remove(path + ".back"); + QFile::copy(path, path + ".back"); + QFile::remove(path); + } +} diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/fontspage.h b/src-qt5/core/lumina-theme-engine/src/qt5ct/fontspage.h new file mode 100644 index 00000000..a9c5f1f6 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/fontspage.h @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef FONTSPAGE_H +#define FONTSPAGE_H + +#include "tabpage.h" + +namespace Ui { +class FontsPage; +} + +class QLabel; +class QSettings; + +class FontsPage : public TabPage +{ + Q_OBJECT + +public: + explicit FontsPage(QWidget *parent = 0); + ~FontsPage(); + + void writeSettings(); + +private slots: + void onFontChangeRequested(QWidget *widget); + void on_createFontsConfButton_clicked(); + void on_removeFontsConfButton_clicked(); + +private: + void readSettings(); + void loadFont(QSettings *settings, QLabel *label, const QString &key); + Ui::FontsPage *m_ui; +}; + +#endif // FONTSPAGE_H diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/fontspage.ui b/src-qt5/core/lumina-theme-engine/src/qt5ct/fontspage.ui new file mode 100644 index 00000000..b03b5fc0 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/fontspage.ui @@ -0,0 +1,134 @@ + + + FontsPage + + + + 0 + 0 + 517 + 320 + + + + Form + + + + + + Qt::Horizontal + + + + 342 + 20 + + + + + + + + + + + 0 + 0 + + + + QFrame::StyledPanel + + + ... + + + + + + + + 0 + 0 + + + + General: + + + + + + + ... + + + + + + + + 0 + 0 + + + + QFrame::StyledPanel + + + ... + + + + + + + ... + + + + + + + Fixed width: + + + + + + + + + Qt::Vertical + + + QSizePolicy::Expanding + + + + 0 + 280 + + + + + + + + Create fonts.conf + + + + + + + Remove fonts.conf + + + + + + + + diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/iconthemepage.cpp b/src-qt5/core/lumina-theme-engine/src/qt5ct/iconthemepage.cpp new file mode 100644 index 00000000..ee4d638d --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/iconthemepage.cpp @@ -0,0 +1,214 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include +#include +#include "qt5ct.h" +#include "iconthemepage.h" +#include "ui_iconthemepage.h" + +IconThemePage::IconThemePage(QWidget *parent) : + TabPage(parent), + m_ui(new Ui::IconThemePage) +{ + m_ui->setupUi(this); + loadThemes(); + readSettings(); +} + +IconThemePage::~IconThemePage() +{ + delete m_ui; +} + +void IconThemePage::writeSettings() +{ + QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + QTreeWidgetItem *item = m_ui->treeWidget->currentItem(); + if(item) + settings.setValue("Appearance/icon_theme", item->data(3, Qt::UserRole)); +} + +void IconThemePage::readSettings() +{ + QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + QString name = settings.value("Appearance/icon_theme").toString(); + + if(name.isEmpty()) + return; + + for(int i = 0; i < m_ui->treeWidget->topLevelItemCount(); ++i) + { + QTreeWidgetItem *item = m_ui->treeWidget->topLevelItem(i); + if(item->data(3, Qt::UserRole).toString() == name) + { + m_ui->treeWidget->setCurrentItem(item); + break; + } + } +} + +void IconThemePage::loadThemes() +{ + QFileInfoList themeFileList; + foreach(QString path, Qt5CT::iconPaths()) + { + QDir dir(path); + dir.setFilter(QDir::Dirs | QDir::NoDotDot | QDir::NoDot); + foreach (QFileInfo info, dir.entryInfoList()) + { + QDir themeDir(info.absoluteFilePath()); + themeDir.setFilter(QDir::Files); + themeFileList << themeDir.entryInfoList(QStringList() << "index.theme"); + } + } + + foreach(QFileInfo info, themeFileList) + { + loadTheme(info.canonicalFilePath()); + } +} + +void IconThemePage::loadTheme(const QString &path) +{ + QSettings config(path, QSettings::IniFormat); + config.setIniCodec("UTF-8"); + + config.beginGroup("Icon Theme"); + QStringList dirs = config.value("Directories").toStringList(); + if(dirs.isEmpty() || config.value("Hidden", false).toBool()) + return; + + QString name, comment; + QString lang = QLocale::system().name(); + + name = config.value(QString("Name[%1]").arg(lang)).toString(); + comment = config.value(QString("Comment[%1]").arg(lang)).toString(); + + if(lang.contains("_")) + lang = lang.split("_").first(); + + if(name.isEmpty()) + name = config.value(QString("Name[%1]").arg(lang)).toString(); + + if(comment.isEmpty()) + comment = config.value(QString("Comment[%1]").arg(lang)).toString(); + + if(name.isEmpty()) + name = config.value("Name").toString(); + + if(comment.isEmpty()) + comment = config.value("Comment").toString(); + + config.endGroup(); + + QIcon icon1 = findIcon(path, 24, "document-save"); + QIcon icon2 = findIcon(path, 24, "document-print"); + QIcon icon3 = findIcon(path, 24, "media-playback-stop"); + + QTreeWidgetItem *item = new QTreeWidgetItem(); + item->setIcon(0, icon1); + item->setIcon(1, icon2); + item->setIcon(2, icon3); + item->setText(3, name); + item->setData(3, Qt::UserRole, QFileInfo(path).path().section("/", -1)); + item->setToolTip(3, comment); + item->setSizeHint(0, QSize(24,24)); + m_ui->treeWidget->addTopLevelItem(item); + + m_ui->treeWidget->resizeColumnToContents(0); + m_ui->treeWidget->resizeColumnToContents(1); + m_ui->treeWidget->resizeColumnToContents(2); + m_ui->treeWidget->resizeColumnToContents(3); +} + +QIcon IconThemePage::findIcon(const QString &themePath, int size, const QString &name) +{ + QSettings config(themePath, QSettings::IniFormat); + config.beginGroup("Icon Theme"); + QStringList dirs = config.value("Directories").toStringList(); + QStringList parents = config.value("Inherits").toStringList(); + bool haveInherits = config.contains("Inherits"); + config.endGroup(); + + foreach (QString dir, dirs) + { + config.beginGroup(dir); + if(config.value("Size").toInt() == size) + { + QDir iconDir = QFileInfo(themePath).path() + "/" + dir; + iconDir.setFilter(QDir::Files); + iconDir.setNameFilters(QStringList () << name + ".*"); + if(iconDir.entryInfoList().isEmpty()) + continue; + return QIcon(iconDir.entryInfoList().first().absoluteFilePath()); + } + config.endGroup(); + } + + foreach (QString dir, dirs) + { + config.beginGroup(dir); + if(abs(config.value("Size").toInt() - size) < 4) + { + QDir iconDir = QFileInfo(themePath).path() + "/" + dir; + iconDir.setFilter(QDir::Files); + iconDir.setNameFilters(QStringList () << name + ".*"); + if(iconDir.entryInfoList().isEmpty()) + continue; + return QIcon(iconDir.entryInfoList().first().absoluteFilePath()); + } + config.endGroup(); + } + + if (!haveInherits) + return QIcon(); + + parents.append("hicolor"); //add fallback themes + parents.append("gnome"); + parents.removeDuplicates(); + + foreach (QString parent, parents) + { + QString parentThemePath = QDir(QFileInfo(themePath).path() + "/../" + parent).canonicalPath() + "/index.theme"; + + if(!QFile::exists(parentThemePath) || parentThemePath == themePath) + continue; + + QIcon icon = findIcon(parentThemePath, size, name); + if(!icon.isNull()) + return icon; + } + + return QIcon(); +} diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/iconthemepage.h b/src-qt5/core/lumina-theme-engine/src/qt5ct/iconthemepage.h new file mode 100644 index 00000000..0ccd64e0 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/iconthemepage.h @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef ICONTHEMEPAGE_H +#define ICONTHEMEPAGE_H + +#include +#include "tabpage.h" + +namespace Ui { +class IconThemePage; +} + +class IconThemePage : public TabPage +{ + Q_OBJECT + +public: + explicit IconThemePage(QWidget *parent = 0); + ~IconThemePage(); + + void writeSettings(); + +private: + void readSettings(); + void loadThemes(); + void loadTheme(const QString &path); + QIcon findIcon(const QString &themePath, int size, const QString &name); + Ui::IconThemePage *m_ui; +}; + +#endif // ICONTHEMEPAGE_H diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/iconthemepage.ui b/src-qt5/core/lumina-theme-engine/src/qt5ct/iconthemepage.ui new file mode 100644 index 00000000..a6385041 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/iconthemepage.ui @@ -0,0 +1,51 @@ + + + IconThemePage + + + + 0 + 0 + 400 + 300 + + + + Form + + + + + + 4 + + + false + + + + 1 + + + + + 2 + + + + + 3 + + + + + 4 + + + + + + + + + diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/interfacepage.cpp b/src-qt5/core/lumina-theme-engine/src/qt5ct/interfacepage.cpp new file mode 100644 index 00000000..fc5c0662 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/interfacepage.cpp @@ -0,0 +1,140 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include "qt5ct.h" +#include "interfacepage.h" +#include "ui_interfacepage.h" + +InterfacePage::InterfacePage(QWidget *parent) : + TabPage(parent), + m_ui(new Ui::InterfacePage) +{ + m_ui->setupUi(this); + + m_ui->buttonLayoutComboBox->addItem("Windows", QDialogButtonBox::WinLayout); + m_ui->buttonLayoutComboBox->addItem("Mac OS X", QDialogButtonBox::MacLayout); + m_ui->buttonLayoutComboBox->addItem("KDE", QDialogButtonBox::KdeLayout); + m_ui->buttonLayoutComboBox->addItem("GNOME", QDialogButtonBox::GnomeLayout); + + m_ui->toolButtonStyleComboBox->addItem(tr("Only display the icon"), Qt::ToolButtonIconOnly); + m_ui->toolButtonStyleComboBox->addItem(tr("Only display the text"), Qt::ToolButtonTextOnly); + m_ui->toolButtonStyleComboBox->addItem(tr("The text appears beside the icon"), Qt::ToolButtonTextBesideIcon); + m_ui->toolButtonStyleComboBox->addItem(tr("The text appears under the icon"), Qt::ToolButtonTextUnderIcon); + m_ui->toolButtonStyleComboBox->addItem(tr("Follow the application style"), Qt::ToolButtonFollowStyle); + + readSettings(); +} + +InterfacePage::~InterfacePage() +{ + delete m_ui; +} + +void InterfacePage::writeSettings() +{ + QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + settings.beginGroup("Interface"); + settings.setValue("double_click_interval", m_ui->doubleClickIntervalSpinBox->value()); + settings.setValue("cursor_flash_time", m_ui->cursorFlashTimeSpinBox->value()); + settings.setValue("buttonbox_layout", m_ui->buttonLayoutComboBox->currentData()); + settings.setValue("menus_have_icons", m_ui->menuIconsCheckBox->isChecked()); + settings.setValue("activate_item_on_single_click", m_ui->singleClickCheckBox->checkState()); + settings.setValue("dialog_buttons_have_icons", m_ui->dialogIconsCheckBox->checkState()); + settings.setValue("toolbutton_style", m_ui->toolButtonStyleComboBox->currentData()); + settings.setValue("wheel_scroll_lines", m_ui->wheelScrollLinesSpinBox->value()); + + QStringList effects; + if(m_ui->guiEffectsCheckBox->isChecked()) + effects << "General"; + + if(m_ui->menuEffectComboBox->currentIndex() == 1) + effects << "AnimateMenu"; + else if(m_ui->menuEffectComboBox->currentIndex() == 2) + effects << "FadeMenu"; + + if(m_ui->comboBoxEffectComboBox->currentIndex() == 1) + effects << "AnimateCombo"; + + if(m_ui->toolTipEffectComboBox->currentIndex() == 1) + effects << "AnimateTooltip"; + else if(m_ui->toolTipEffectComboBox->currentIndex() == 2) + effects << "FadeTooltip"; + + if(m_ui->toolBoxEffectComboBox->currentIndex() == 1) + effects << "AnimateToolBox"; + + settings.setValue("gui_effects", effects); + settings.endGroup(); +} + +void InterfacePage::readSettings() +{ + QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + settings.beginGroup("Interface"); + m_ui->doubleClickIntervalSpinBox->setValue(qApp->doubleClickInterval()); + m_ui->cursorFlashTimeSpinBox->setValue(qApp->cursorFlashTime()); + + m_ui->guiEffectsCheckBox->setChecked(qApp->isEffectEnabled(Qt::UI_General)); + + int layout = settings.value("buttonbox_layout", style()->styleHint(QStyle::SH_DialogButtonLayout)).toInt(); + int index = m_ui->buttonLayoutComboBox->findData(layout); + if(index >= 0) + m_ui->buttonLayoutComboBox->setCurrentIndex(index); + + if(qApp->isEffectEnabled(Qt::UI_AnimateMenu)) + m_ui->menuEffectComboBox->setCurrentIndex(1); + else if(qApp->isEffectEnabled(Qt::UI_FadeMenu)) + m_ui->menuEffectComboBox->setCurrentIndex(2); + + if(qApp->isEffectEnabled(Qt::UI_AnimateCombo)) + m_ui->comboBoxEffectComboBox->setCurrentIndex(1); + + if(qApp->isEffectEnabled(Qt::UI_AnimateTooltip)) + m_ui->toolTipEffectComboBox->setCurrentIndex(1); + else if(qApp->isEffectEnabled(Qt::UI_FadeTooltip)) + m_ui->toolTipEffectComboBox->setCurrentIndex(2); + + if(qApp->isEffectEnabled(Qt::UI_AnimateToolBox)) + m_ui->toolBoxEffectComboBox->setCurrentIndex(1); + + m_ui->singleClickCheckBox->setCheckState((Qt::CheckState)settings.value("activate_item_on_single_click", Qt::PartiallyChecked).toInt()); + m_ui->dialogIconsCheckBox->setCheckState((Qt::CheckState)settings.value("dialog_buttons_have_icons", Qt::PartiallyChecked).toInt()); + m_ui->menuIconsCheckBox->setChecked(!qApp->testAttribute(Qt::AA_DontShowIconsInMenus)); + + int toolbarStyle = settings.value("toolbutton_style", Qt::ToolButtonFollowStyle).toInt(); + index = m_ui->toolButtonStyleComboBox->findData(toolbarStyle); + if(index >= 0) + m_ui->toolButtonStyleComboBox->setCurrentIndex(index); + + m_ui->wheelScrollLinesSpinBox->setValue(settings.value("wheel_scroll_lines", 3).toInt()); + + settings.endGroup(); +} diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/interfacepage.h b/src-qt5/core/lumina-theme-engine/src/qt5ct/interfacepage.h new file mode 100644 index 00000000..637b6bf1 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/interfacepage.h @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef INTERFACEPAGE_H +#define INTERFACEPAGE_H + +#include "tabpage.h" + +namespace Ui { +class InterfacePage; +} + +class InterfacePage : public TabPage +{ + Q_OBJECT + +public: + explicit InterfacePage(QWidget *parent = 0); + ~InterfacePage(); + + void writeSettings(); + +private: + void readSettings(); + + Ui::InterfacePage *m_ui; +}; + +#endif // INTERFACEPAGE_H diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/interfacepage.ui b/src-qt5/core/lumina-theme-engine/src/qt5ct/interfacepage.ui new file mode 100644 index 00000000..ca9d0291 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/interfacepage.ui @@ -0,0 +1,327 @@ + + + InterfacePage + + + + 0 + 0 + 498 + 449 + + + + Form + + + + + + Qt::Vertical + + + + 20 + 259 + + + + + + + + + + Double click interval: + + + + + + + Cursor flash time: + + + + + + + ComboBox effect: + + + + + + + ToolTip effect: + + + + + + + ToolBox effect: + + + + + + + ms + + + 2000 + + + + + + + ms + + + 4000 + + + + + + + false + + + + Disable + + + + + Animate + + + + + + + + false + + + + Disable + + + + + Animate + + + + + Fade + + + + + + + + false + + + + Disable + + + + + Animate + + + + + + + + Menu effect: + + + + + + + false + + + + Disable + + + + + Animate + + + + + Fade + + + + + + + + Enable gui effects + + + + + + + Dialog buttons layout: + + + + + + + + + + Menus have icons + + + + + + + Dialog buttons have icons + + + true + + + + + + + Activate item on single-click + + + true + + + + + + + Toolbar button style: + + + + + + + + + + Mouse wheel scroll lines: + + + + + + + 1 + + + 20 + + + + + + + + + Qt::Horizontal + + + + 238 + 20 + + + + + + + + + + guiEffectsCheckBox + toggled(bool) + menuEffectComboBox + setEnabled(bool) + + + 126 + 86 + + + 201 + 114 + + + + + guiEffectsCheckBox + toggled(bool) + comboBoxEffectComboBox + setEnabled(bool) + + + 75 + 84 + + + 160 + 153 + + + + + guiEffectsCheckBox + toggled(bool) + toolTipEffectComboBox + setEnabled(bool) + + + 54 + 84 + + + 155 + 184 + + + + + guiEffectsCheckBox + toggled(bool) + toolBoxEffectComboBox + setEnabled(bool) + + + 36 + 91 + + + 156 + 216 + + + + + diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/main.cpp b/src-qt5/core/lumina-theme-engine/src/qt5ct/main.cpp new file mode 100644 index 00000000..d15c9c01 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/main.cpp @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include "qt5ct.h" +#include +#include +#include +#include +#include "mainwindow.h" + +int main(int argc, char **argv) +{ + QApplication app(argc, argv); + QTranslator translator; + QString locale = Qt5CT::systemLanguageID(); + translator.load(QString(":/qt5ct_") + locale); + app.installTranslator(&translator); + + QTranslator qt_translator; + qt_translator.load(QLibraryInfo::location (QLibraryInfo::TranslationsPath) + "/qtbase_" + locale); + app.installTranslator(&qt_translator); + + qDebug("Configuration path: %s", qPrintable(Qt5CT::configPath())); + qDebug("Shared QSS path: %s", qPrintable(Qt5CT::sharedStyleSheetPath())); + + //checking environment + QStringList errorMessages; + QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); + + if(env.contains("QT_STYLE_OVERRIDE")) + { + errorMessages << app.translate("main", "Please remove the QT_STYLE_OVERRIDE environment variable"); + } + + if(env.value("QT_QPA_PLATFORMTHEME") != "qt5ct") + { + errorMessages << app.translate("main", "The QT_QPA_PLATFORMTHEME environment " + "variable is not set correctly"); + } + + if(!QStyleFactory::keys().contains("qt5ct-style")) + { + errorMessages << app.translate("main", "Unable to find libqt5ct-style.so"); + } + + if(!errorMessages.isEmpty()) + { + QMessageBox::critical(0, app.translate("main", "Error"), errorMessages.join("

")); + return 0; + } + + MainWindow w; + w.show(); + + return app.exec(); +} diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/mainwindow.cpp b/src-qt5/core/lumina-theme-engine/src/qt5ct/mainwindow.cpp new file mode 100644 index 00000000..b120436f --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/mainwindow.cpp @@ -0,0 +1,90 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include "qt5ct.h" +#include "mainwindow.h" +#include "appearancepage.h" +#include "fontspage.h" +#include "iconthemepage.h" +#include "interfacepage.h" +#include "qsspage.h" +#include "ui_mainwindow.h" + +MainWindow::MainWindow(QWidget *parent) : + QWidget(parent), + m_ui(new Ui::MainWindow) +{ + m_ui->setupUi(this); + m_ui->tabWidget->addTab(new AppearancePage(this), tr("Appearance")); + m_ui->tabWidget->addTab(new FontsPage(this), tr("Fonts")); + m_ui->tabWidget->addTab(new IconThemePage(this), tr("Icon Theme")); + m_ui->tabWidget->addTab(new InterfacePage(this), tr("Interface")); +#ifdef USE_WIDGETS + m_ui->tabWidget->addTab(new QSSPage(this), tr("Style Sheets")); +#endif + + QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + restoreGeometry(settings.value("SettingsWindow/geometry").toByteArray()); + + setWindowIcon(QIcon::fromTheme("preferences-desktop-theme")); + + m_ui->versionLabel->setText(tr("Version: %1").arg(QT5CT_VERSION_STR)); +} + +MainWindow::~MainWindow() +{ + delete m_ui; +} + +void MainWindow::closeEvent(QCloseEvent *) +{ + QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + settings.setValue("SettingsWindow/geometry", saveGeometry()); +} + +void MainWindow::on_buttonBox_clicked(QAbstractButton *button) +{ + int id = m_ui->buttonBox->standardButton(button); + if(id == QDialogButtonBox::Ok || id == QDialogButtonBox::Apply) + { + for(int i = 0; i < m_ui->tabWidget->count(); ++i) + { + TabPage *p = qobject_cast(m_ui->tabWidget->widget(i)); + if(p) + p->writeSettings(); + } + } + + if(id == QDialogButtonBox::Ok || id == QDialogButtonBox::Cancel) + { + close(); + qApp->quit(); + } +} diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/mainwindow.h b/src-qt5/core/lumina-theme-engine/src/qt5ct/mainwindow.h new file mode 100644 index 00000000..f532141c --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/mainwindow.h @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include + +class QAbstractButton; + +namespace Ui { +class MainWindow; +} + +class MainWindow : public QWidget +{ + Q_OBJECT + +public: + explicit MainWindow(QWidget *parent = 0); + ~MainWindow(); + +private slots: + void on_buttonBox_clicked(QAbstractButton *button); + +private: + void closeEvent(QCloseEvent *); + + Ui::MainWindow *m_ui; +}; + +#endif // MAINWINDOW_H diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/mainwindow.ui b/src-qt5/core/lumina-theme-engine/src/qt5ct/mainwindow.ui new file mode 100644 index 00000000..5bdab6d7 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/mainwindow.ui @@ -0,0 +1,47 @@ + + + MainWindow + + + + 0 + 0 + 438 + 374 + + + + Qt5 Configuration Tool + + + + 6 + + + 6 + + + 6 + + + + + + + + ... + + + + + + + QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/paletteeditdialog.cpp b/src-qt5/core/lumina-theme-engine/src/qt5ct/paletteeditdialog.cpp new file mode 100644 index 00000000..31a3a2a9 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/paletteeditdialog.cpp @@ -0,0 +1,146 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include "qt5ct.h" +#include "paletteeditdialog.h" +#include "ui_paletteeditdialog.h" + +PaletteEditDialog::PaletteEditDialog(const QPalette &palette, QStyle *currentStyle, QWidget *parent) : + QDialog(parent), + m_ui(new Ui::PaletteEditDialog) +{ + m_currentStyle = currentStyle; + m_ui->setupUi(this); + m_ui->tableWidget->setColumnCount(3); + m_ui->tableWidget->setRowCount(QPalette::NColorRoles); + m_ui->tableWidget->verticalHeader()->setDefaultSectionSize(fontMetrics().lineSpacing() + 10); + m_ui->tableWidget->verticalHeader()->setSectionResizeMode(QHeaderView::Fixed); + m_ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); + + QStringList labels; + labels << tr("Active") << tr("Inactive") << tr("Disabled"); + m_ui->tableWidget->setHorizontalHeaderLabels(labels); + setPalette(palette); + + QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + restoreGeometry(settings.value("PaletteEditor/geometry").toByteArray()); +} + +PaletteEditDialog::~PaletteEditDialog() +{ + delete m_ui; +} + +QPalette PaletteEditDialog::selectedPalette() const +{ + QPalette palette; + for(int i = 0; i < QPalette::NColorRoles; i++) + { + palette.setBrush(QPalette::Active, QPalette::ColorRole(i), m_ui->tableWidget->item(i,0)->backgroundColor()); + palette.setBrush(QPalette::Inactive, QPalette::ColorRole(i), m_ui->tableWidget->item(i,1)->backgroundColor()); + palette.setBrush(QPalette::Disabled, QPalette::ColorRole(i), m_ui->tableWidget->item(i,2)->backgroundColor()); + } + return palette; +} + +void PaletteEditDialog::setPalette(const QPalette &palette) +{ + for(int i = 0; i < QPalette::NColorRoles; i++) + { + if(!m_ui->tableWidget->item(i,0)) + m_ui->tableWidget->setItem(i, 0, new QTableWidgetItem()); + if(!m_ui->tableWidget->item(i,1)) + m_ui->tableWidget->setItem(i, 1, new QTableWidgetItem()); + if(!m_ui->tableWidget->item(i,2)) + m_ui->tableWidget->setItem(i, 2, new QTableWidgetItem()); + + m_ui->tableWidget->item(i,0)->setBackgroundColor(palette.color(QPalette::Active, QPalette::ColorRole(i))); + m_ui->tableWidget->item(i,1)->setBackgroundColor(palette.color(QPalette::Inactive, QPalette::ColorRole(i))); + m_ui->tableWidget->item(i,2)->setBackgroundColor(palette.color(QPalette::Disabled, QPalette::ColorRole(i))); + } + + QStringList labels; + labels << tr("Window text") << tr("Button background") << tr("Bright") << tr("Less bright") << tr("Dark") << tr("Less dark") + << tr("Normal text") << tr("Bright text") << tr("Button text") << tr("Normal background") << tr("Window") << tr("Shadow") + << tr("Highlight") << tr("Highlighted text") << tr("Link") << tr("Visited link") + << tr("Alternate background") << tr("Default") << tr("Tooltip background") << tr("Tooltip text"); + m_ui->tableWidget->setVerticalHeaderLabels(labels); +} + +void PaletteEditDialog::hideEvent(QHideEvent *) +{ + QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + settings.setValue("PaletteEditor/geometry", saveGeometry()); +} + +void PaletteEditDialog::on_tableWidget_itemClicked(QTableWidgetItem *item) +{ + QColor color = QColorDialog::getColor(item->backgroundColor(), this, tr("Select Color")); + if(color.isValid()) + { + item->setBackgroundColor(color); + emit paletteChanged(selectedPalette()); + } +} + +void PaletteEditDialog::on_resetPaletteButton_clicked() +{ + setPalette(m_currentStyle->standardPalette()); + emit paletteChanged(selectedPalette()); +} + +void PaletteEditDialog::on_buildInactiveButton_clicked() +{ + QPalette palette = selectedPalette(); + for(int i = 0; i < QPalette::NColorRoles; i++) + { + palette.setColor(QPalette::Inactive, QPalette::ColorRole(i), + palette.color(QPalette::Active, QPalette::ColorRole(i))); + } + setPalette(palette); + emit paletteChanged(selectedPalette()); +} + +void PaletteEditDialog::on_buildDisabledButton_clicked() +{ + QPalette palette = selectedPalette(); + for(int i = 0; i < QPalette::NColorRoles; i++) + { + palette.setColor(QPalette::Disabled, QPalette::ColorRole(i), + palette.color(QPalette::Active, QPalette::ColorRole(i))); + } + palette.setColor(QPalette::Disabled, QPalette::ButtonText, Qt::darkGray); + palette.setColor(QPalette::Disabled, QPalette::WindowText, Qt::darkGray); + palette.setColor(QPalette::Disabled, QPalette::Text, Qt::darkGray); + palette.setColor(QPalette::Disabled, QPalette::HighlightedText, Qt::darkGray); + setPalette(palette); + emit paletteChanged(selectedPalette()); +} diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/paletteeditdialog.h b/src-qt5/core/lumina-theme-engine/src/qt5ct/paletteeditdialog.h new file mode 100644 index 00000000..c8691a3c --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/paletteeditdialog.h @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef PALETTEEDITDIALOG_H +#define PALETTEEDITDIALOG_H + +#include +#include + +class QTableWidgetItem; +class QStyle; + +namespace Ui { +class PaletteEditDialog; +} + +class PaletteEditDialog : public QDialog +{ + Q_OBJECT + +public: + explicit PaletteEditDialog(const QPalette &palette, QStyle *currentStyle, QWidget *parent = 0); + ~PaletteEditDialog(); + + QPalette selectedPalette() const; + +signals: + void paletteChanged(const QPalette &p); + +private slots: + void on_tableWidget_itemClicked(QTableWidgetItem *item); + void on_resetPaletteButton_clicked(); + void on_buildInactiveButton_clicked(); + void on_buildDisabledButton_clicked(); + +private: + void setPalette(const QPalette &palette); + void hideEvent(QHideEvent *); + Ui::PaletteEditDialog *m_ui; + QStyle *m_currentStyle; +}; + +#endif // PALETTEEDITDIALOG_H diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/paletteeditdialog.ui b/src-qt5/core/lumina-theme-engine/src/qt5ct/paletteeditdialog.ui new file mode 100644 index 00000000..6ca6350f --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/paletteeditdialog.ui @@ -0,0 +1,120 @@ + + + PaletteEditDialog + + + + 0 + 0 + 631 + 529 + + + + Palette Editor + + + + 6 + + + 6 + + + 6 + + + + + Build inactive palette + + + + + + + Build disabled palette + + + + + + + Qt::Horizontal + + + + 117 + 20 + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + QAbstractItemView::NoEditTriggers + + + QAbstractItemView::NoSelection + + + 0 + + + + + + + Reset palette + + + + + + + + + buttonBox + accepted() + PaletteEditDialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + PaletteEditDialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/previewform.ui b/src-qt5/core/lumina-theme-engine/src/qt5ct/previewform.ui new file mode 100644 index 00000000..508201db --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/previewform.ui @@ -0,0 +1,76 @@ + + + PreviewForm + + + + 0 + 0 + 281 + 130 + + + + Preview Window + + + + + + 0 + + + + Tab 1 + + + + + + PushButton + + + + + + + 24 + + + + + + + + + + + + + + Tab 2 + + + + + + RadioButton + + + + + + + CheckBox + + + + + + + + + + + + diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/qsseditordialog.cpp b/src-qt5/core/lumina-theme-engine/src/qt5ct/qsseditordialog.cpp new file mode 100644 index 00000000..7c6292ac --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/qsseditordialog.cpp @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include "qt5ct.h" +#include "qsseditordialog.h" +#include "ui_qsseditordialog.h" + +QSSEditorDialog::QSSEditorDialog(const QString &filePath, QWidget *parent) : + QDialog(parent), + m_ui(new Ui::QSSEditorDialog) +{ + m_ui->setupUi(this); + m_filePath = filePath; + + QFile file(filePath); + file.open(QIODevice::ReadOnly); + m_ui->textEdit->setPlainText(QString::fromUtf8(file.readAll())); + setWindowTitle(tr("%1 - Style Sheet Editor").arg(file.fileName())); + + QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + restoreGeometry(settings.value("QSSEditor/geometry").toByteArray()); +} + +QSSEditorDialog::~QSSEditorDialog() +{ + delete m_ui; +} + +void QSSEditorDialog::save() +{ + QFile file(m_filePath); + file.open(QIODevice::WriteOnly); + file.write(m_ui->textEdit->toPlainText().toUtf8()); +} + +void QSSEditorDialog::hideEvent(QHideEvent *) +{ + QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + settings.setValue("QSSEditor/geometry", saveGeometry()); +} + +void QSSEditorDialog::on_buttonBox_clicked(QAbstractButton *button) +{ + QDialogButtonBox::StandardButton id = m_ui->buttonBox->standardButton(button); + if(id == QDialogButtonBox::Ok) + { + save(); + accept(); + } + else if(id == QDialogButtonBox::Save) + { + save(); + } + else + { + reject(); + } +} diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/qsseditordialog.h b/src-qt5/core/lumina-theme-engine/src/qt5ct/qsseditordialog.h new file mode 100644 index 00000000..e2a6c773 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/qsseditordialog.h @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef QSSEDITORDIALOG_H +#define QSSEDITORDIALOG_H + +#include +#include + +namespace Ui { +class QSSEditorDialog; +} + +class QAbstractButton; + +class QSSEditorDialog : public QDialog +{ + Q_OBJECT + +public: + explicit QSSEditorDialog(const QString &filePath, QWidget *parent = 0); + ~QSSEditorDialog(); + +private slots: + void on_buttonBox_clicked(QAbstractButton *button); + +private: + void save(); + void hideEvent(QHideEvent *); + Ui::QSSEditorDialog *m_ui; + QString m_filePath; +}; + +#endif // QSSEDITORDIALOG_H diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/qsseditordialog.ui b/src-qt5/core/lumina-theme-engine/src/qt5ct/qsseditordialog.ui new file mode 100644 index 00000000..7627b4d4 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/qsseditordialog.ui @@ -0,0 +1,47 @@ + + + QSSEditorDialog + + + + 0 + 0 + 643 + 499 + + + + Style Sheet Editor + + + + 6 + + + 6 + + + 6 + + + + + false + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok|QDialogButtonBox::Save + + + + + + + + diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/qsspage.cpp b/src-qt5/core/lumina-theme-engine/src/qt5ct/qsspage.cpp new file mode 100644 index 00000000..784ff674 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/qsspage.cpp @@ -0,0 +1,232 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include +#include "qt5ct.h" +#include "qsseditordialog.h" +#include "qsspage.h" +#include "ui_qsspage.h" + +#define QSS_FULL_PATH_ROLE (Qt::ItemDataRole(Qt::UserRole)) +#define QSS_WRITABLE_ROLE (Qt::ItemDataRole(Qt::UserRole + 1)) + +QSSPage::QSSPage(QWidget *parent) : + TabPage(parent), + m_ui(new Ui::QSSPage) +{ + m_ui->setupUi(this); + QDir("/").mkpath(Qt5CT::userStyleSheetPath()); + + m_menu = new QMenu(this); + m_menu->addAction(QIcon::fromTheme("accessories-text-editor"), tr("Edit"), this, SLOT(on_editButton_clicked())); + m_menu->addAction(tr("Rename"), this, SLOT(on_renameButton_clicked())); + m_menu->addSeparator(); + m_menu->addAction(QIcon::fromTheme("edit-delete"), tr("Remove"), this, SLOT(on_removeButton_clicked())); + + readSettings(); + + //icons + m_ui->createButton->setIcon(QIcon::fromTheme("document-new")); + m_ui->editButton->setIcon(QIcon::fromTheme("accessories-text-editor")); + m_ui->removeButton->setIcon(QIcon::fromTheme("edit-delete")); +} + +QSSPage::~QSSPage() +{ + delete m_ui; +} + +void QSSPage::writeSettings() +{ + QStringList styleSheets; + QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + + for(int i = 0; i < m_ui->qssListWidget->count(); ++i) + { + QListWidgetItem *item = m_ui->qssListWidget->item(i); + if(item->checkState() == Qt::Checked) + styleSheets << item->data(QSS_FULL_PATH_ROLE).toString(); + } + + settings.setValue("Interface/stylesheets", styleSheets); +} + +void QSSPage::on_qssListWidget_currentItemChanged(QListWidgetItem *current, QListWidgetItem *) +{ + if(current) + { + m_ui->editButton->setEnabled(current->data(QSS_WRITABLE_ROLE).toBool()); + m_ui->removeButton->setEnabled(current->data(QSS_WRITABLE_ROLE).toBool()); + m_ui->renameButton->setEnabled(current->data(QSS_WRITABLE_ROLE).toBool()); + } + else + { + m_ui->editButton->setEnabled(false); + m_ui->removeButton->setEnabled(false); + m_ui->renameButton->setEnabled(false); + } +} + +void QSSPage::on_createButton_clicked() +{ + QString name = QInputDialog::getText(this, tr("Enter Style Sheet Name"), tr("File name:")); + if(name.isEmpty()) + return; + + if(!name.endsWith(".qss", Qt::CaseInsensitive)) + name.append(".qss"); + + QString filePath = Qt5CT::userStyleSheetPath() + name; + + if(QFile::exists(filePath)) + { + QMessageBox::warning(this, tr("Error"), tr("The file \"%1\" already exists").arg(filePath)); + return; + } + + //creating empty file + QFile file(filePath); + file.open(QIODevice::WriteOnly); + file.close(); + + //creating item + QFileInfo info(filePath); + QListWidgetItem *item = new QListWidgetItem(info.fileName(), m_ui->qssListWidget); + item->setToolTip(info.filePath()); + item->setData(QSS_FULL_PATH_ROLE, info.filePath()); + item->setData(QSS_WRITABLE_ROLE, info.isWritable()); + item->setCheckState(Qt::Unchecked); +} + +void QSSPage::on_editButton_clicked() +{ + QListWidgetItem *item = m_ui->qssListWidget->currentItem(); + if(item) + { + QSSEditorDialog dialog(item->data(QSS_FULL_PATH_ROLE).toString(), this); + dialog.exec(); + } +} + +void QSSPage::on_removeButton_clicked() +{ + QListWidgetItem *item = m_ui->qssListWidget->currentItem(); + if(!item) + return; + + int button = QMessageBox::question(this, tr("Confirm Remove"), + tr("Are you sure you want to remove style sheet \"%1\"?") + .arg(item->text()), + QMessageBox::Yes | QMessageBox::No); + if(button == QMessageBox::Yes) + { + QFile::remove(item->data(QSS_FULL_PATH_ROLE).toString()); + delete item; + } +} + +void QSSPage::readSettings() +{ + //load stylesheets + m_ui->qssListWidget->clear(); + findStyleSheets(Qt5CT::userStyleSheetPath()); + findStyleSheets(Qt5CT::sharedStyleSheetPath()); + + QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + QStringList styleSheets = settings.value("Interface/stylesheets").toStringList(); + for(int i = 0; i < m_ui->qssListWidget->count(); ++i) + { + QListWidgetItem *item = m_ui->qssListWidget->item(i); + if(styleSheets.contains(item->data(QSS_FULL_PATH_ROLE).toString())) + item->setCheckState(Qt::Checked); + else + item->setCheckState(Qt::Unchecked); + } +} + +void QSSPage::findStyleSheets(const QString &path) +{ + QDir dir(path); + dir.setFilter(QDir::Files); + dir.setNameFilters(QStringList() << "*.qss"); + + foreach (QFileInfo info, dir.entryInfoList()) + { + QListWidgetItem *item = new QListWidgetItem(info.fileName(), m_ui->qssListWidget); + item->setToolTip(info.filePath()); + item->setData(QSS_FULL_PATH_ROLE, info.filePath()); + item->setData(QSS_WRITABLE_ROLE, info.isWritable()); + } +} + +void QSSPage::on_renameButton_clicked() +{ + QListWidgetItem *item = m_ui->qssListWidget->currentItem(); + if(!item) + return; + + QString name = QInputDialog::getText(this, tr("Rename Style Sheet"), tr("Style sheet name:"), + QLineEdit::Normal, item->text(), 0); + if(name.isEmpty()) + return; + + if(!m_ui->qssListWidget->findItems(name, Qt::MatchExactly).isEmpty()) + { + QMessageBox::warning(this, tr("Error"), tr("The style sheet \"%1\" already exists").arg(name)); + return; + } + + if(!name.endsWith(".qss", Qt::CaseInsensitive)) + name.append(".qss"); + + QString newPath = Qt5CT::userStyleSheetPath() + name; + + if(!QFile::rename(item->data(QSS_FULL_PATH_ROLE).toString(), newPath)) + { + QMessageBox::warning(this, tr("Error"), tr("Unable to rename file")); + return; + } + + item->setText(name); + item->setData(QSS_FULL_PATH_ROLE, newPath); + item->setToolTip(newPath); +} + +void QSSPage::on_qssListWidget_customContextMenuRequested(const QPoint &pos) +{ + QListWidgetItem *item = m_ui->qssListWidget->currentItem(); + if(item && item->data(QSS_WRITABLE_ROLE).toBool()) + { + m_menu->exec(m_ui->qssListWidget->viewport()->mapToGlobal(pos)); + } +} diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/qsspage.h b/src-qt5/core/lumina-theme-engine/src/qt5ct/qsspage.h new file mode 100644 index 00000000..665f68c0 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/qsspage.h @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef QSSPAGE_H +#define QSSPAGE_H + +#include "tabpage.h" + +namespace Ui { +class QSSPage; +} + +class QListWidgetItem; +class QMenu; + +class QSSPage : public TabPage +{ + Q_OBJECT + +public: + explicit QSSPage(QWidget *parent = 0); + ~QSSPage(); + + void writeSettings(); + +private slots: + void on_qssListWidget_currentItemChanged(QListWidgetItem *current, QListWidgetItem *); + void on_createButton_clicked(); + void on_editButton_clicked(); + void on_removeButton_clicked(); + void on_renameButton_clicked(); + void on_qssListWidget_customContextMenuRequested(const QPoint &pos); + +private: + void readSettings(); + void findStyleSheets(const QString &path); + Ui::QSSPage *m_ui; + QMenu *m_menu; +}; + +#endif // QSSPAGE_H diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/qsspage.ui b/src-qt5/core/lumina-theme-engine/src/qt5ct/qsspage.ui new file mode 100644 index 00000000..124b4dc6 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/qsspage.ui @@ -0,0 +1,84 @@ + + + QSSPage + + + + 0 + 0 + 483 + 320 + + + + Style Sheet Editor + + + + + + true + + + Create + + + + + + + false + + + Remove + + + + + + + Qt::Horizontal + + + + 189 + 20 + + + + + + + + Qt::CustomContextMenu + + + true + + + + + + + false + + + Edit + + + + + + + false + + + Rename + + + + + + + + diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/qt5ct.cpp b/src-qt5/core/lumina-theme-engine/src/qt5ct/qt5ct.cpp new file mode 100644 index 00000000..b83f43df --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/qt5ct.cpp @@ -0,0 +1,115 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include "qt5ct.h" + +#ifndef QT5CT_DATADIR +#define QT5CT_DATADIR "/usr/share" +#endif + + +QString Qt5CT::configPath() +{ + return QDir::homePath() + "/.config/qt5ct/"; +} + +QString Qt5CT::configFile() +{ + return configPath() + "qt5ct.conf"; +} + +QStringList Qt5CT::iconPaths() +{ + QString xdgDataDirs = qgetenv("XDG_DATA_DIRS"); + QString xdgDataHome = qgetenv("XDG_DATA_HOME"); + + QStringList paths; + paths << QDir::homePath() + "/.icons/"; + + if(xdgDataDirs.isEmpty()) + { + paths << "/usr/share/icons"; + paths << "/usr/local/share/icons"; + } + else + { + foreach (QString p, xdgDataDirs.split(":")) + paths << QDir(p + "/icons/").absolutePath(); + } + + if(xdgDataHome.isEmpty()) + xdgDataHome = QDir::homePath() + "/.local/share"; + + paths << "/usr/share/pixmaps"; + paths << xdgDataHome + "/icons"; + paths.removeDuplicates(); + + //remove invalid + foreach (QString p, paths) + { + if(!QDir(p).exists()) + paths.removeAll(p); + } + return paths; +} + +QString Qt5CT::userStyleSheetPath() +{ + return configPath() + "qss/"; +} + +QString Qt5CT::sharedStyleSheetPath() +{ + return QT5CT_DATADIR"/qt5ct/qss/"; +} + +QString Qt5CT::userColorSchemePath() +{ + return configPath() + "colors/"; +} + +QString Qt5CT::sharedColorSchemePath() +{ + return QT5CT_DATADIR"/qt5ct/colors/"; +} + +QString Qt5CT::systemLanguageID() +{ +#ifdef Q_OS_UNIX + QByteArray v = qgetenv ("LC_ALL"); + if (v.isEmpty()) + v = qgetenv ("LC_MESSAGES"); + if (v.isEmpty()) + v = qgetenv ("LANG"); + if (!v.isEmpty()) + return QLocale (v).name(); +#endif + return QLocale::system().name(); +} diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/qt5ct.desktop b/src-qt5/core/lumina-theme-engine/src/qt5ct/qt5ct.desktop new file mode 100644 index 00000000..1c5f6560 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/qt5ct.desktop @@ -0,0 +1,60 @@ +[Desktop Entry] +X-Desktop-File-Install-Version=0.11 +Name=Qt5 Settings + +Comment=Qt5 Configuration Tool + +Comment[ar]= أداة اعداد Qt5 +Name[ar]=إعدادات Qt5 + +Comment[bg]=Инструмент за настройка на Qt5 +Name[bg]=Настройки на Qt5 + +Comment[de]=Qt5-Konfigurationswerkzeug +Name[de]=Qt5-Einstellungen + +Comment[el]=Εργαλείο διαμόρφωσης της Qt5 +Name[el]=Ρυθμίσεις Qt5 + +Comment[es_ES]=Herramienta de configuración de QT5 +Name[es_ES]=Ajustes QT5 + +Comment[fr]=Un outil de configuration de Qt5 +Name[fr]=Paramètres de Qt5 + +Comment[he]=כלי תצורה Qt5 +Name[he]=הגדרות Qt5 + +Comment[ru]=Программа для настройки Qt5 +Name[ru]=Настройки Qt5 + +Comment[cs]=Nástroj na nastavení Qt5 +Name[cs]=Nastavení Qt5 + +Comment[it_IT]=Strumento di configurazione Qt5 +Name[it_IT]=Impostazioni Qt5 + +Comment[nl_NL]=Qt5-instellingengereedschap +Name[nl_NL]=Qt5-instellingen + +Comment[pl]=Narzędzie konfiguracji Qt5 +Name[pl]=Ustawienia Qt5 + +Comment[sk]=Qt5 konfiguračný nástroj +Name[sk]=Qt5 nastavenia + +Comment[sr]=Qt5 конфигурациони алат +Name[sr]=Qt5 поставке + +Comment[zh_CN]=Qt5 配置工具 +Name[zh_CN]=Qt5 设置 + +Comment[zh_TW]=Qt5 設定工具 +Name[zh_TW]=Qt5 設定 + + +Exec=qt5ct +Icon=preferences-desktop-theme +Terminal=false +Type=Application +Categories=Settings;DesktopSettings;Qt; diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/qt5ct.h b/src-qt5/core/lumina-theme-engine/src/qt5ct/qt5ct.h new file mode 100644 index 00000000..1aecd741 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/qt5ct.h @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef QT5CT_H +#define QT5CT_H + +#define QT5CT_VERSION_MAJOR 0 +#define QT5CT_VERSION_MINOR 33 + +#define QT5CT_TOSTRING(s) #s +#define QT5CT_STRINGIFY(s) QT5CT_TOSTRING(s) + +#define QT5CT_VERSION_INT (QT5CT_VERSION_MAJOR<<8 | QT5CT_VERSION_MINOR) +#define QT5CT_VERSION_STR QT5CT_STRINGIFY(QT5CT_VERSION_MAJOR.QT5CT_VERSION_MINOR) + +#include +#include + +class Qt5CT +{ +public: + static QString configPath(); + static QString configFile(); + static QStringList iconPaths(); + static QString userStyleSheetPath(); + static QString sharedStyleSheetPath(); + static QString userColorSchemePath(); + static QString sharedColorSchemePath(); + static QString systemLanguageID(); + +private: + Qt5CT() {} +}; + +#endif // QT5CT_H diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/qt5ct.pro b/src-qt5/core/lumina-theme-engine/src/qt5ct/qt5ct.pro new file mode 100644 index 00000000..0f9724f1 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/qt5ct.pro @@ -0,0 +1,57 @@ +include(../../qt5ct.pri) + +TEMPLATE = app + +QT += widgets + +SOURCES += \ + main.cpp \ + mainwindow.cpp \ + tabpage.cpp \ + appearancepage.cpp \ + fontspage.cpp \ + qt5ct.cpp \ + paletteeditdialog.cpp \ + iconthemepage.cpp \ + interfacepage.cpp \ + fontconfigdialog.cpp \ + qsspage.cpp \ + qsseditordialog.cpp + +FORMS += \ + mainwindow.ui \ + appearancepage.ui \ + fontspage.ui \ + paletteeditdialog.ui \ + iconthemepage.ui \ + interfacepage.ui \ + fontconfigdialog.ui \ + previewform.ui \ + qsspage.ui \ + qsseditordialog.ui + +HEADERS += \ + mainwindow.h \ + tabpage.h \ + appearancepage.h \ + fontspage.h \ + qt5ct.h \ + paletteeditdialog.h \ + iconthemepage.h \ + interfacepage.h \ + fontconfigdialog.h \ + qsspage.h \ + qsseditordialog.h + +!equals (DISABLE_WIDGETS,1) { + DEFINES += USE_WIDGETS +} + +RESOURCES = translations/translations.qrc + +target.path = $$BINDIR + +desktop.files = qt5ct.desktop +desktop.path = $$DATADIR/applications + +INSTALLS += target desktop diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/tabpage.cpp b/src-qt5/core/lumina-theme-engine/src/qt5ct/tabpage.cpp new file mode 100644 index 00000000..251ce024 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/tabpage.cpp @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tabpage.h" + +TabPage::TabPage(QWidget *parent) : QWidget(parent) +{ +} diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/tabpage.h b/src-qt5/core/lumina-theme-engine/src/qt5ct/tabpage.h new file mode 100644 index 00000000..ac285054 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/tabpage.h @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef TABPAGE_H +#define TABPAGE_H + +#include + +class TabPage : public QWidget +{ + Q_OBJECT +public: + explicit TabPage(QWidget *parent = 0); + + virtual void writeSettings() = 0; +}; + +#endif // TABPAGE_H diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_ar.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_ar.ts new file mode 100644 index 00000000..35e0bfec --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_ar.ts @@ -0,0 +1,709 @@ + + + + + AppearancePage + + + Style: + أسلوب: + + + + Preview + مشاهدة + + + + Active palette + اللوحة النشطة + + + + Inactive palette + اللوحة الغير نشطة + + + + Disabled palette + اللوحة الغير مفعلة + + + + Palette + لوحة الالوان + + + + Default + افتراضي + + + + Custom + تخصيص + + + + Color scheme: + نظام الألوان: + + + + ... + ... + + + + Create + إنشاء + + + + Edit + تحرير + + + + Create a Copy + انشئ نسخة + + + + Rename + اعد التسمية + + + + Remove + حذف + + + + + + Enter Color Scheme Name + ادخل إسما لنظام الالوان + + + + + + File name: + اسم الملف + + + + + + Error + خطأ + + + + + + The color scheme "%1" already exists + نظام الالوان "%1" موجود أصلا + + + + + + Warning + تحذير + + + + + + The color scheme "%1" is read only + نظام الالوان "%1" للقراءة فقط + + + + Confirm Remove + تأكيد الحذف + + + + Are you sure you want to remove color scheme "%1"? + هل أنت متأكد أنك تريد إزالة نظام الألوان "%1"؟ + + + + %1 (copy) + %1 (نسخة) + + + + FontConfigDialog + + + + Font Configuration + تكوين الخط + + + + Disable automatic hinting for bold fonts + تعطيل تلقائي لتلمسحات الخطوط العريضة + + + + LCD filter: + مرشح ال سي دي: + + + + Automatic hinting + تلميح تلقائي + + + + Hinting + تلميح + + + + Font resolution: + ابعاد الخط: + + + + dpi + dpi + + + + Subpixel geometry: + هندسة البكسل الفرعي: + + + + Antialiasing + تنعيم الحواف + + + + Hinting style: + أسلوب التلميح + + + + + None + لا شيئ + + + + Slight + طفيف + + + + Medium + متوسط + + + + Full + كامل + + + + <i>%1</i> already exists. Do you want to replace it? + <i>%1</i> موجود بالفعل. هل تريد استبداله؟ + + + + FontsPage + + + + + + ... + ... + + + + General: + عام: + + + + Fixed width: + عرض ثابت: + + + + Create fonts.conf + انشاء fonts.conf + + + + Remove fonts.conf + حذف fonts.conf + + + + Remove Font Configuration + حذف اعدادات الخط + + + + Are you sure you want to delete <i>%1</i>? + هل انت متأكد من حذف <i>%1</i>؟ + + + + InterfacePage + + + Double click interval: + فترة النقر المزدوج: + + + + Cursor flash time: + زمن وميض المؤشر: + + + + ComboBox effect: + تأثير صندوق التحرير: + + + + ToolTip effect: + تأثير التلميح: + + + + ToolBox effect: + تأثير مربع الأدوات: + + + + + ms + م ث + + + + + + + Disable + تعطيل + + + + + + + Animate + تحريك + + + + + Fade + تلاشي + + + + Menu effect: + تأثير القائمة: + + + + Enable gui effects + تمكين تأثيرات واجهة المستخدم الرسومية + + + + Dialog buttons layout: + تخطيط أزرار الحوار : + + + + Menus have icons + ايقونات القوائم + + + + Dialog buttons have icons + ايقونات ازرار الحوار + + + + Activate item on single-click + تفعيل العنصر بنقرة واحدة + + + + Toolbar button style: + نمط زر شريط الأدوات: + + + + Mouse wheel scroll lines: + خطوط التمرير لعجلة الماوس : + + + + Only display the icon + عرض الرمز فقط + + + + Only display the text + عرض النص فقط + + + + The text appears beside the icon + اظهر النص بجوار الرمز + + + + The text appears under the icon + اظهر النص أسفل الرمز + + + + Follow the application style + اتبع نمط التطبيق + + + + MainWindow + + + Qt5 Configuration Tool + أداة اعداد Qt5 + + + + Appearance + المظهر + + + + Fonts + الخطوط + + + + Icon Theme + سمة الايقونات + + + + Interface + الواجهة + + + + Style Sheets + انماط الاوراق + + + + Version: %1 + النسخة: %1 + + + + PaletteEditDialog + + + Palette Editor + محرر لوحة الالوان + + + + Reset palette + اعادة تعيين لوحة الالوان + + + + Build inactive palette + توليد لوحة الالوان الغير نشطة + + + + Build disabled palette + توليد لوحة الالوان الغير مفعلة + + + + Active + نشط + + + + Inactive + غير نشط + + + + Disabled + غير مفعل + + + + Dark + داكن + + + + Window text + نص النافذة + + + + Button background + خلفية الزر + + + + Bright + مشرق + + + + Less bright + أقل سطوعا + + + + Less dark + أقل دكانة + + + + Window + النافذة + + + + Shadow + الظل + + + + Bright text + نص المشرق + + + + Button text + مص الزر + + + + Normal text + نص عادي + + + + Normal background + خلفية عادية + + + + Highlight + التحويم + + + + Highlighted text + نص التحويم + + + + Visited link + ربط تمت زيارته + + + + Default + افتراضي + + + + Tooltip background + خلفية التلميح + + + + Tooltip text + نص التلميح + + + + Link + الرابط + + + + Alternate background + خلفية بديلة + + + + Select Color + حدد لونا + + + + PreviewForm + + + Preview Window + معاينة النافذة + + + + Tab 1 + لسان 1 + + + + PushButton + زر + + + + Tab 2 + لسان 2 + + + + RadioButton + زر الاختيار + + + + CheckBox + زر التحديد + + + + QSSEditorDialog + + + %1 - Style Sheet Editor + %1 - محرر انماط الاوراق + + + + Style Sheet Editor + محرر انماط الاوراق + + + + QSSPage + + + Create + أنشىء + + + + + Edit + حرر + + + + + Rename + اعد التسمية + + + + + Remove + حذف + + + + File name: + اسم الملف + + + + Enter Style Sheet Name + ادخل اسما لنمط الورقة + + + + + + Error + خطأ + + + + The file "%1" already exists + هذا الملف "%1" موجود اصلا + + + + Confirm Remove + تأكيد الحذف + + + + Are you sure you want to remove style sheet "%1"? + هل أنت متأكد أنك تريد إزالة نمط الورقة "%1"؟ + + + + Rename Style Sheet + خذف نمط الورقة + + + + Style sheet name: + اسم نمط الورقة: + + + + The style sheet "%1" already exists + نمط الورقة "%1" موجود أصلا + + + + Unable to rename file + غير قادر على إعادة تسمية الملف + + + + main + + + Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable + الرجاء حذف <b>QT_STYLE_OVERRIDE</b> متغيرات البيئة + + + + The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly + <b>QT_QPA_PLATFORMTHEME</b> لم يتم تعيين متغير البيئة بشكل صحيح + + + + Unable to find <b>libqt5ct-style.so</b> + غير قادر على ايجاد <b>libqt5ct-style.so</b> + + + + Error + خطأ + + + diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_bg.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_bg.ts new file mode 100644 index 00000000..d4a9d759 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_bg.ts @@ -0,0 +1,709 @@ + + + + + AppearancePage + + + Style: + Стил: + + + + Preview + Преглед: + + + + Active palette + Активна палитра + + + + Inactive palette + Неактивна палитра + + + + Disabled palette + Изключена палитра + + + + Palette + Палитра + + + + Default + По подразбиране + + + + Custom + Потребителски + + + + Color scheme: + Цветова схема: + + + + ... + ... + + + + Create + Създаване + + + + Edit + Редактиране + + + + Create a Copy + Създаване на копие + + + + Rename + Преименуване + + + + Remove + Премахване + + + + + + Enter Color Scheme Name + Въведете име на цветовата схема + + + + + + File name: + Име на файл: + + + + + + Error + Грешка + + + + + + The color scheme "%1" already exists + Цветовата схема "%1" вече съществува + + + + + + Warning + Внимание + + + + + + The color scheme "%1" is read only + Цветовата схема "%1" е само за четене + + + + Confirm Remove + Потвърждаване на премахването + + + + Are you sure you want to remove color scheme "%1"? + Сигурен ли сте, че искате да премахнете цветова схема "%1"? + + + + %1 (copy) + %1 (копиране) + + + + FontConfigDialog + + + + Font Configuration + Конфигурация на шрифтовете + + + + Disable automatic hinting for bold fonts + Изключване на автоматичното подсказване за удебелените шрифтове + + + + LCD filter: + LCD филтър: + + + + Automatic hinting + Автоматично подсказване + + + + Hinting + Подсказване + + + + Font resolution: + Резолюция на шрифт: + + + + dpi + точки на инч + + + + Subpixel geometry: + Подпикселна подредба: + + + + Antialiasing + Заглаждане + + + + Hinting style: + Стил на подсказване: + + + + + None + Без + + + + Slight + Тънък + + + + Medium + Среден + + + + Full + Пълен + + + + <i>%1</i> already exists. Do you want to replace it? + <i>%1</i> вече съществува. Искате ли да го замените? + + + + FontsPage + + + + + + ... + ... + + + + General: + Общи: + + + + Fixed width: + Фиксирана ширина: + + + + Create fonts.conf + Създаване на fonts.conf + + + + Remove fonts.conf + Премахване на fonts.conf + + + + Remove Font Configuration + Премахване на конфигурацията на шрифта + + + + Are you sure you want to delete <i>%1</i>? + Наистина ли искате да изтриете <i>%1</i>? + + + + InterfacePage + + + Double click interval: + Интервал при двойно кликване: + + + + Cursor flash time: + Време за мигане на курсора: + + + + ComboBox effect: + ComboBox ефект: + + + + ToolTip effect: + ToolTip ефект: + + + + ToolBox effect: + ToolBox ефект: + + + + + ms + мс + + + + + + + Disable + Изключване + + + + + + + Animate + Анимиран + + + + + Fade + Избледняващ + + + + Menu effect: + Ефект на меню: + + + + Enable gui effects + Включи графичните ефекти + + + + Dialog buttons layout: + Подредба на диалоговите бутони: + + + + Menus have icons + Икони в менютата + + + + Dialog buttons have icons + Икони в диалоговите бутони + + + + Activate item on single-click + Активиране на елемент с еднократно кликване + + + + Toolbar button style: + Стил на бутоните в лентата с инструменти: + + + + Mouse wheel scroll lines: + Превъртане на позициите с колелцето на мишката: + + + + Only display the icon + Покажи само икони + + + + Only display the text + Покажи само текст + + + + The text appears beside the icon + Текстът да се вижда до иконите + + + + The text appears under the icon + Текстът да се вижда под иконите + + + + Follow the application style + Следвай стила на програмата + + + + MainWindow + + + Qt5 Configuration Tool + Инструмент за настройка на Qt5 + + + + Appearance + Външен вид + + + + Fonts + Шрифтове + + + + Icon Theme + Тема за икони + + + + Interface + Интерфейс + + + + Style Sheets + Стил на страниците + + + + Version: %1 + Версия: %1 + + + + PaletteEditDialog + + + Palette Editor + Редактор на палитрата + + + + Reset palette + Нулиране на палитрата + + + + Build inactive palette + Изграждане на неактивна палитра + + + + Build disabled palette + Изграждане на изключена палитра + + + + Active + Активна + + + + Inactive + Неактивна + + + + Disabled + Изключена + + + + Dark + Тъмен + + + + Window text + Текст на прозорец + + + + Button background + Фон на бутон + + + + Bright + Светъл + + + + Less bright + По- малко светъл + + + + Less dark + По- малко тъмен + + + + Window + Прозорец + + + + Shadow + Сянка + + + + Bright text + Светъл текст + + + + Button text + Текст на бутон + + + + Normal text + Нормален текст + + + + Normal background + Нормален фон + + + + Highlight + Подчертаване + + + + Highlighted text + Подчертан текст + + + + Visited link + Посетен адрес + + + + Default + По подтазбиране + + + + Tooltip background + Фон на подсказка + + + + Tooltip text + Текст на подсказка + + + + Link + Връзка + + + + Alternate background + Алтернативен фон + + + + Select Color + Избор на цвят + + + + PreviewForm + + + Preview Window + Прозорец за преглед + + + + Tab 1 + Раздел 1 + + + + PushButton + PushButton + + + + Tab 2 + Раздел 2 + + + + RadioButton + RadioButton + + + + CheckBox + CheckBox + + + + QSSEditorDialog + + + %1 - Style Sheet Editor + %1 - Редактор на стила на страница + + + + Style Sheet Editor + Редактор на стила на страница + + + + QSSPage + + + Create + Създаване + + + + + Edit + Редактиране + + + + + Rename + Преименуване + + + + + Remove + Премахване + + + + File name: + Име на файл: + + + + Enter Style Sheet Name + Въведете име на стила на страница + + + + + + Error + Грешка + + + + The file "%1" already exists + Файлът "%1" вече съществува + + + + Confirm Remove + Потвърждение на премахването + + + + Are you sure you want to remove style sheet "%1"? + Сигурен ли сте, че искате да премахнете стил на страница "%1"? + + + + Rename Style Sheet + Преименуване на стил на страница + + + + Style sheet name: + Име на стил на страница: + + + + The style sheet "%1" already exists + Стилът на страница "%1" вече съществува + + + + Unable to rename file + Файлът не може да бъде преименуван + + + + main + + + Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable + Моля, премахнете променливата <b>QT_STYLE_OVERRIDE</b> + + + + The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly + Променливата <b>QT_QPA_PLATFORMTHEME</b> не е зададена правилно + + + + Unable to find <b>libqt5ct-style.so</b> + Не може да бъде намерен <b>libqt5ct-style.so</b> + + + + Error + Грешка + + + diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_ca.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_ca.ts new file mode 100644 index 00000000..897d4e91 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_ca.ts @@ -0,0 +1,709 @@ + + + + + AppearancePage + + + Style: + + + + + Preview + + + + + Active palette + + + + + Inactive palette + + + + + Disabled palette + + + + + Palette + + + + + Default + + + + + Custom + + + + + Color scheme: + + + + + ... + + + + + Create + + + + + Edit + + + + + Create a Copy + + + + + Rename + + + + + Remove + + + + + + + Enter Color Scheme Name + + + + + + + File name: + + + + + + + Error + + + + + + + The color scheme "%1" already exists + + + + + + + Warning + + + + + + + The color scheme "%1" is read only + + + + + Confirm Remove + + + + + Are you sure you want to remove color scheme "%1"? + + + + + %1 (copy) + + + + + FontConfigDialog + + + + Font Configuration + + + + + Disable automatic hinting for bold fonts + + + + + LCD filter: + + + + + Automatic hinting + + + + + Hinting + + + + + Font resolution: + + + + + Subpixel geometry: + + + + + Antialiasing + + + + + Hinting style: + + + + + dpi + + + + + + None + + + + + Slight + + + + + Medium + + + + + Full + + + + + <i>%1</i> already exists. Do you want to replace it? + + + + + FontsPage + + + + + + ... + + + + + General: + + + + + Fixed width: + + + + + Create fonts.conf + + + + + Remove fonts.conf + + + + + Remove Font Configuration + + + + + Are you sure you want to delete <i>%1</i>? + + + + + InterfacePage + + + Double click interval: + + + + + Cursor flash time: + + + + + ComboBox effect: + + + + + ToolTip effect: + + + + + ToolBox effect: + + + + + + ms + + + + + + + + Disable + + + + + + + + Animate + + + + + + Fade + + + + + Menu effect: + + + + + Enable gui effects + + + + + Dialog buttons layout: + + + + + Menus have icons + + + + + Dialog buttons have icons + + + + + Activate item on single-click + + + + + Toolbar button style: + + + + + Mouse wheel scroll lines: + + + + + Only display the icon + + + + + Only display the text + + + + + The text appears beside the icon + + + + + The text appears under the icon + + + + + Follow the application style + + + + + MainWindow + + + Qt5 Configuration Tool + + + + + Appearance + + + + + Fonts + + + + + Icon Theme + + + + + Interface + + + + + Style Sheets + + + + + Version: %1 + + + + + PaletteEditDialog + + + Palette Editor + + + + + Build inactive palette + + + + + Build disabled palette + + + + + Reset palette + + + + + Active + + + + + Inactive + + + + + Disabled + + + + + Window text + + + + + Button background + + + + + Bright + + + + + Less bright + + + + + Dark + + + + + Less dark + + + + + Normal text + + + + + Bright text + + + + + Button text + + + + + Normal background + + + + + Window + + + + + Shadow + + + + + Highlight + + + + + Highlighted text + + + + + Link + + + + + Visited link + + + + + Alternate background + + + + + Default + + + + + Tooltip background + + + + + Tooltip text + + + + + Select Color + + + + + PreviewForm + + + Preview Window + + + + + Tab 1 + + + + + PushButton + + + + + Tab 2 + + + + + RadioButton + + + + + CheckBox + + + + + QSSEditorDialog + + + Style Sheet Editor + + + + + %1 - Style Sheet Editor + + + + + QSSPage + + + Create + + + + + + Remove + + + + + + Edit + + + + + + Rename + + + + + Enter Style Sheet Name + + + + + File name: + + + + + + + Error + + + + + The file "%1" already exists + + + + + Confirm Remove + + + + + Are you sure you want to remove style sheet "%1"? + + + + + Rename Style Sheet + + + + + Style sheet name: + + + + + The style sheet "%1" already exists + + + + + Unable to rename file + + + + + main + + + Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable + + + + + The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly + + + + + Unable to find <b>libqt5ct-style.so</b> + + + + + Error + + + + diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_cs.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_cs.ts new file mode 100644 index 00000000..acb28fd7 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_cs.ts @@ -0,0 +1,709 @@ + + + + + AppearancePage + + + Style: + Styl: + + + + Preview + Náhled + + + + Active palette + Činná paleta + + + + Inactive palette + Nečinná paleta + + + + Disabled palette + Zakázaná paleta + + + + Palette + Paleta + + + + Default + Výchozí + + + + Custom + Vlastní + + + + Color scheme: + Barevné schéma: + + + + ... + ... + + + + Create + Vytvořit + + + + Edit + Upravit + + + + Create a Copy + Vytvořit kopii + + + + Rename + Přejmenovat + + + + Remove + Odstranit + + + + + + Enter Color Scheme Name + Zadejte název barevného schématu + + + + + + File name: + Název souboru: + + + + + + Error + Chyba + + + + + + The color scheme "%1" already exists + Již je barevné schéma "%1" + + + + + + Warning + Varování + + + + + + The color scheme "%1" is read only + Barevné schéma "%1" je pouze pro čtení + + + + Confirm Remove + Potvrdit odstranění + + + + Are you sure you want to remove color scheme "%1"? + Jste si jistý, že chcete odstranit barevné schéma "%1"? + + + + %1 (copy) + %1 (kopie) + + + + FontConfigDialog + + + + Font Configuration + Nastavení písma + + + + Disable automatic hinting for bold fonts + Zakázat automatické podřezávání tučných písem + + + + LCD filter: + Filtr LCD: + + + + Automatic hinting + Automatické podřezávání + + + + Hinting + Podřezávání + + + + Font resolution: + Rozlišení písma: + + + + dpi + DPI + + + + Subpixel geometry: + Uspořádání subpixelů: + + + + Antialiasing + Vyhlazování + + + + Hinting style: + Styl podřezávání: + + + + + None + Žádný + + + + Slight + Menší + + + + Medium + Střední + + + + Full + Plné + + + + <i>%1</i> already exists. Do you want to replace it? + <i>%1</i> již existuje. Chcete jej nahradit? + + + + FontsPage + + + + + + ... + ... + + + + General: + Obecné: + + + + Fixed width: + Pevná šířka: + + + + Create fonts.conf + Vytvořit fonts.conf + + + + Remove fonts.conf + Odstranit fonts.conf + + + + Remove Font Configuration + Odstranit nastavení písma + + + + Are you sure you want to delete <i>%1</i>? + Opravdu chcete smazat <i>%1</i>? + + + + InterfacePage + + + Double click interval: + Interval pro dvojité klepnutí: + + + + Cursor flash time: + Doba blikání ukazovátka: + + + + ComboBox effect: + Efekt rozbalovacího seznamu: + + + + ToolTip effect: + Efekt bublinové nápovědy: + + + + ToolBox effect: + Efekt nástrojové sady: + + + + + ms + ms + + + + + + + Disable + Zakázat + + + + + + + Animate + Animovat + + + + + Fade + Blednutí + + + + Menu effect: + Efekt nabídky: + + + + Enable gui effects + Povolit efekty rozhraní + + + + Dialog buttons layout: + Rozvržení tlačítek dialogu: + + + + Menus have icons + Nabídky mají ikony + + + + Dialog buttons have icons + Dialogová tlačítka mají ikony + + + + Activate item on single-click + Zapnout položku jedním klepnutím + + + + Toolbar button style: + Styl tlačítka v nástrojovém pruhu: + + + + Mouse wheel scroll lines: + Kolečko myši projíždí řádky: + + + + Only display the icon + Zobrazit pouze ikonu + + + + Only display the text + Zobrazit pouze text + + + + The text appears beside the icon + Text se objeví vedle ikony + + + + The text appears under the icon + Text se objeví pod ikonou + + + + Follow the application style + Následovat styl programu + + + + MainWindow + + + Qt5 Configuration Tool + Nástroj na nastavení Qt5 + + + + Appearance + Vzhled + + + + Fonts + Písma + + + + Icon Theme + Podoba ikon + + + + Interface + Rozhraní + + + + Style Sheets + Stylové listy + + + + Version: %1 + Verze: %1 + + + + PaletteEditDialog + + + Palette Editor + Editor palety + + + + Reset palette + Nastavit paletu znovu + + + + Build inactive palette + Vytvořit nečinnou paletu + + + + Build disabled palette + Vytvořit zakázanou paletu + + + + Active + Činná + + + + Inactive + Nečinná + + + + Disabled + Zakázaná + + + + Dark + Tmavé + + + + Window text + Text okna + + + + Button background + Pozadí tlačítka + + + + Bright + Světlé + + + + Less bright + Méně světlé + + + + Less dark + Tmavé + + + + Window + Okno + + + + Shadow + Stín + + + + Bright text + Světlý text + + + + Button text + Text tlačítka + + + + Normal text + Běžný text + + + + Normal background + Běžné pozadí + + + + Highlight + Zvýrazněná oblast + + + + Highlighted text + Zvýrazněný text + + + + Visited link + Navštívený odkaz + + + + Default + Výchozí + + + + Tooltip background + Pozadí bublinové nápovědy + + + + Tooltip text + Text bublinové nápovědy + + + + Link + Odkaz + + + + Alternate background + Náhradní pozadí + + + + Select Color + Vybrat barvu + + + + PreviewForm + + + Preview Window + Náhledové okno + + + + Tab 1 + Karta 1 + + + + PushButton + Tlačítko + + + + Tab 2 + Karta 2 + + + + RadioButton + Přepínač + + + + CheckBox + Zaškrtávací okénko + + + + QSSEditorDialog + + + %1 - Style Sheet Editor + %1 - Editor stylových listů + + + + Style Sheet Editor + Editor stylového listu + + + + QSSPage + + + Create + Vytvořit + + + + + Edit + Upravit + + + + + Rename + Přejmenovat + + + + + Remove + Odstranit + + + + File name: + Název souboru: + + + + Enter Style Sheet Name + Zadejte název stylového listu + + + + + + Error + Chyba + + + + The file "%1" already exists + Již je soubor "%1" + + + + Confirm Remove + Potvrdit odstranění + + + + Are you sure you want to remove style sheet "%1"? + Jste si jistý, že chcete odstranit stylový list "%1"? + + + + Rename Style Sheet + Přejmenovat stylový list + + + + Style sheet name: + Název stylového listu: + + + + The style sheet "%1" already exists + Již je stylový list "%1" + + + + Unable to rename file + Nelze přejmenovat soubor + + + + main + + + Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable + Odstraňte, prosím, proměnnou prostředí <b>QT_STYLE_OVERRIDE</b> + + + + The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly + Proměnná prostředí <b>QT_QPA_PLATFORMTHEME</b> není nastavena správně + + + + Unable to find <b>libqt5ct-style.so</b> + Nelze najít <b>libqt5ct-style.so</b> + + + + Error + Chyba + + + diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_de.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_de.ts new file mode 100644 index 00000000..62a6e64a --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_de.ts @@ -0,0 +1,709 @@ + + + + + AppearancePage + + + Style: + Stil: + + + + Preview + Vorschau + + + + Active palette + Aktive Palette + + + + Inactive palette + Inaktive Palette + + + + Disabled palette + Deaktivierte Palette + + + + Palette + Palette + + + + Default + Standard + + + + Custom + Benutzerdefiniert + + + + Color scheme: + Farbschema: + + + + ... + ... + + + + Create + Erstellen + + + + Edit + Bearbeiten + + + + Create a Copy + Erstellen Sie eine Kopie + + + + Rename + Umbenennen + + + + Remove + Entfernen + + + + + + Enter Color Scheme Name + Farbschemaname eingeben + + + + + + File name: + Dateiname: + + + + + + Error + Fehler + + + + + + The color scheme "%1" already exists + Das Farbschema »%1« ist bereits vorhanden + + + + + + Warning + Warnung + + + + + + The color scheme "%1" is read only + Das Farbschema »%1« ist schreibgeschützt + + + + Confirm Remove + Entfernen bestätigen + + + + Are you sure you want to remove color scheme "%1"? + Sind Sie sicher, dass Sie das Farbschema »%1« entfernen möchten? + + + + %1 (copy) + %1 (kopieren) + + + + FontConfigDialog + + + + Font Configuration + Schriftkonfiguration + + + + Disable automatic hinting for bold fonts + Automatisches Hinting für Fettschriften deaktivieren + + + + LCD filter: + LCD-Filter: + + + + Automatic hinting + Automatisches Hinting + + + + Hinting + Hinting + + + + Font resolution: + Schriftauflösung: + + + + dpi + dpi + + + + Subpixel geometry: + Teilbildpunkt-Geometrie: + + + + Antialiasing + Antialiasing (Glättung) + + + + Hinting style: + Hinting-Stil: + + + + + None + Keiner + + + + Slight + Gering + + + + Medium + Mittel + + + + Full + Vollständig + + + + <i>%1</i> already exists. Do you want to replace it? + <i>%1</i> ist bereits vorhanden. Wollen Sie es ersetzen? + + + + FontsPage + + + + + + ... + ... + + + + General: + Allgemein: + + + + Fixed width: + Feste Breite: + + + + Create fonts.conf + fonts.conf erstellen + + + + Remove fonts.conf + fonts.conf löschen + + + + Remove Font Configuration + Schriftkonfiguration entfernen + + + + Are you sure you want to delete <i>%1</i>? + Sind Sie sicher, dass Sie <i>%1</i> löschen wollen? + + + + InterfacePage + + + Double click interval: + Doppelklickintervall: + + + + Cursor flash time: + Eingabezeiger-Blinkdauer: + + + + ComboBox effect: + ComboBox-Effekt: + + + + ToolTip effect: + Kurzinfo-Effekt: + + + + ToolBox effect: + Werkzeugkasten-Effekt: + + + + + ms + ms + + + + + + + Disable + Deaktivieren + + + + + + + Animate + Animieren + + + + + Fade + Ausblenden + + + + Menu effect: + Menü-Effekt: + + + + Enable gui effects + Grafische Effekte aktivieren + + + + Dialog buttons layout: + Anordnung der Dialogschaltflächen: + + + + Menus have icons + Menüs haben Symbole + + + + Dialog buttons have icons + Dialogschaltflächen haben Symbole + + + + Activate item on single-click + Eintrag mit einem Einfachklick aktivieren + + + + Toolbar button style: + Werkzeugleiste-Schaltflächenstil: + + + + Mouse wheel scroll lines: + Mausrad-Bildlaufzeilen: + + + + Only display the icon + Nur das Symbol anzeigen + + + + Only display the text + Nur den Text anzeigen + + + + The text appears beside the icon + Der Text erscheint neben dem Symbol + + + + The text appears under the icon + Der Text erscheint unter dem Symbol + + + + Follow the application style + Dem Anwendungsstil folgen + + + + MainWindow + + + Qt5 Configuration Tool + Qt5-Konfigurationswerkzeug + + + + Appearance + Erscheinungsbild + + + + Fonts + Schriftarten + + + + Icon Theme + Symbolthema + + + + Interface + Oberfläche + + + + Style Sheets + Stilvorlagen + + + + Version: %1 + Version: %1 + + + + PaletteEditDialog + + + Palette Editor + Paletteneditor + + + + Reset palette + Palette zurücksetzen + + + + Build inactive palette + Inaktive Palette erstellen + + + + Build disabled palette + Deaktivierte Palette erstellen + + + + Active + Aktiv + + + + Inactive + Inaktiv + + + + Disabled + Deaktiviert + + + + Dark + Dunkel + + + + Window text + Fenstertext + + + + Button background + Knopfhintergrund + + + + Bright + Hell + + + + Less bright + Weniger hell + + + + Less dark + Weniger dunkel + + + + Window + Fenster + + + + Shadow + Schatten + + + + Bright text + Heller Text + + + + Button text + Schaltflächentext + + + + Normal text + Normaler Text + + + + Normal background + Normaler Hintergrund + + + + Highlight + Hervorheben + + + + Highlighted text + Hervorgehobener Text + + + + Visited link + Besuchter Link + + + + Default + Standard + + + + Tooltip background + Kurzinfo-Hintergrund + + + + Tooltip text + Kurzinfo-Text + + + + Link + Link + + + + Alternate background + Alternativer Hintergrund + + + + Select Color + Farbe auswählen + + + + PreviewForm + + + Preview Window + Vorschaufenster + + + + Tab 1 + Reiter 1 + + + + PushButton + Schaltfläche drücken + + + + Tab 2 + Reiter 2 + + + + RadioButton + Radioschaltfläche + + + + CheckBox + Ankreuzfeld + + + + QSSEditorDialog + + + %1 - Style Sheet Editor + %1 - Stilvorlagen-Editor + + + + Style Sheet Editor + Stilvorlagen-Editor + + + + QSSPage + + + Create + Erstellen + + + + + Edit + Bearbeiten + + + + + Rename + Umbenennen + + + + + Remove + Entfernen + + + + File name: + Dateiname: + + + + Enter Style Sheet Name + Stilvorlagenname eingeben + + + + + + Error + Fehler + + + + The file "%1" already exists + Die Datei "%1" ist bereits vorhanden + + + + Confirm Remove + Entfernen bestätigen + + + + Are you sure you want to remove style sheet "%1"? + Sind Sie sicher, dass Sie die Stilvorlage »%1« entfernen möchten? + + + + Rename Style Sheet + Stilvorlage umbenennen + + + + Style sheet name: + Stilvorlagenname: + + + + The style sheet "%1" already exists + Die Stilvorlage »%1« ist bereits vorhanden + + + + Unable to rename file + Datei konnte nicht umbenannt werden + + + + main + + + Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable + Bitte entfernen Sie die Umgebungsvariable <b>QT_STYLE_OVERRIDE</b> + + + + The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly + Die Umgebungsvariable <b>QT_QPA_PLATFORMTHEME</b> ist nicht korrekt festgelegt + + + + Unable to find <b>libqt5ct-style.so</b> + <b>libqt5ct-style.so</b> kann nicht gefunden werden + + + + Error + Fehler + + + diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_el.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_el.ts new file mode 100644 index 00000000..72c87114 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_el.ts @@ -0,0 +1,710 @@ + + + + + AppearancePage + + + Style: + Ύφος: + + + + Preview + Προεπισκόπηση + + + + Active palette + Ενεργή χρωματοπυξίδα + + + + Inactive palette + Ανενεργή χρωματοπυξίδα + + + + Disabled palette + Απενεργοποιημένη χρωματοπυξίδα + + + + Palette + Χρωματοπυξίδα + + + + Default + Εξ ορισμού + + + + Custom + Προσαρμοσμένο + + + + Color scheme: + Χρωματικό σχήμα: + + + + ... + ... + + + + Create + Δημιουργία + + + + Edit + Επεξεργασία + + + + Create a Copy + Δημιουργία αντιγράφου + + + + Rename + Μετονομασία + + + + Remove + Αφαίρεση + + + + + + Enter Color Scheme Name + Εισαγάγετε το όνομα του χρωματικού σχήματος + + + + + + File name: + Όνομα αρχείου: + + + + + + Error + Σφάλμα + + + + + + The color scheme "%1" already exists + Το χρωματικό σχήμα «%1» υπάρχει ήδη + + + + + + Warning + Προειδοποίηση + + + + + + The color scheme "%1" is read only + Το χρωματικό σχήμα «%1» είναι μόνο για ανάγνωση + + + + Confirm Remove + Επικύρωση της αφαίρεσης + + + + Are you sure you want to remove color scheme "%1"? + Είστε σίγουρος-η ότι θέλετε να αφαιρέσετε το χρωματικό σχήμα «%1»; + + + + %1 (copy) + %1 (αντίγραφο) + + + + FontConfigDialog + + + + Font Configuration + Διαμόρφωση γραμματοσειράς + + + + Disable automatic hinting for bold fonts + Απενεργοποίηση αυτόματων υποδείξεων στις έντονες γραμματοσειρές + + + + LCD filter: + Φίλτρο LCD: + + + + Automatic hinting + Αυτόματες υποδείξεις + + + + Hinting + Υποδείξεις + + + + Font resolution: + Ανάλυση γραμματοσειράς: + + + + dpi + dpi + + + + Subpixel geometry: + Γεωμετρία υποεικονοστοιχείων: + + + + Antialiasing + Εξομάλυνση + + + + Hinting style: + Στυλ υπόδειξης: + + + + + None + Κανένα + + + + Slight + Ελαφρύ + + + + Medium + Μεσαίο + + + + Full + Πλήρες + + + + <i>%1</i> already exists. Do you want to replace it? + Το αρχείο <i>%1</i> υπάρχει ήδη. Θέλετε να το αντικαταστήσετε; + + + + FontsPage + + + + + + ... + ... + + + + General: + Γενικά: + + + + Fixed width: + Σταθερού πλάτους: + + + + Create fonts.conf + Δημιουργία του fonts.conf + + + + Remove fonts.conf + Αφαίρεση του fonts.conf + + + + Remove Font Configuration + Αφαίρεση διαμόρφωσης γραμματοσειράς + + + + + Are you sure you want to delete <i>%1</i>? + Επιθυμείτε σίγουρα την διαγραφή του <i>%1</i>; + + + + InterfacePage + + + Double click interval: + Χρονικό διάστημα διπλού κλικ: + + + + Cursor flash time: + Χρόνος αναβοσβήματος δρομέα: + + + + ComboBox effect: + Τέχνασμα εντυπωσιασμού σύνθετου πλαισίου: + + + + ToolTip effect: + Τέχνασμα εντυπωσιασμού υπόδειξης: + + + + ToolBox effect: + Τέχνασμα εντυπωσιασμού εργαλειοθήκης: + + + + + ms + ms + + + + + + + Disable + Απενεργοποίηση + + + + + + + Animate + Κίνηση + + + + + Fade + Σβήσιμο + + + + Menu effect: + Τέχνασμα εντυπωσιασμού μενού: + + + + Enable gui effects + Ενεργοποίηση τεχνασμάτων εντυπωσιασμού περιβάλλοντος + + + + Dialog buttons layout: + Διάταξη κουμπιών διαλόγου: + + + + Menus have icons + Τα μενού διαθέτουν εικονίδια + + + + Dialog buttons have icons + Τα κουμπιά των διαλόγων διαθέτουν εικονίδια + + + + Activate item on single-click + Ενεργοποίηση του αντικειμένου με μονό κλικ + + + + Toolbar button style: + Τεχνοτροπία των κουμπιών της γραμμής εργαλείων: + + + + Mouse wheel scroll lines: + Γραμμές κύλισης τροχού ποντικιού: + + + + Only display the icon + Εμφάνιση μόνον του εικονιδίου + + + + Only display the text + Εμφάνιση μόνον του κειμένου + + + + The text appears beside the icon + Το κείμενο εμφανίζεται δίπλα από το εικονίδιο + + + + The text appears under the icon + Το κείμενο εμφανίζεται κάτω από το εικονίδιο + + + + Follow the application style + Ακολούθηση της τεχνοτροπίας της εφαρμογής + + + + MainWindow + + + Qt5 Configuration Tool + Εργαλείο διαμόρφωσης της Qt5 + + + + Appearance + Εμφάνιση + + + + Fonts + Γραμματοσειρές + + + + Icon Theme + Θέματα εικονιδίων + + + + Interface + Περιβάλλον + + + + Style Sheets + Σελίδες αισθητικής επικάλυψης + + + + Version: %1 + Έκδοση: %1 + + + + PaletteEditDialog + + + Palette Editor + Επεξεργαστής χρωματοπυξίδας + + + + Reset palette + Επαναφορά χρωματοπυξίδας + + + + Build inactive palette + Δημιουργία ανενεργής χρωματοπυξίδας + + + + Build disabled palette + Δημιουργία απενεργοποιημένης χρωματοπυξίδας + + + + Active + Ενεργό + + + + Inactive + Ανενεργό + + + + Disabled + Απενεργοποιημένο + + + + Dark + Σκούρο + + + + Window text + Κείμενο παραθύρου + + + + Button background + Παρασκήνιο κουμπιού + + + + Bright + Φωτεινό + + + + Less bright + Σκοτεινότερο + + + + Less dark + Εξασθενισμένο + + + + Window + Παράθυρο + + + + Shadow + Σκιά + + + + Bright text + Φωτεινό κείμενο + + + + Button text + Κείμενο κουμπιού + + + + Normal text + Κανονικό κείμενο + + + + Normal background + Κανονικό παρασκήνιο + + + + Highlight + Τονισμός + + + + Highlighted text + Τονισμένο κείμενο + + + + Visited link + Επισκεφθείς δεσμός + + + + Default + Εξ ορισμού + + + + Tooltip background + Παρασκήνιο υπόδειξης + + + + Tooltip text + Κείμενο υπόδειξης + + + + Link + Δεσμός + + + + Alternate background + Εναλλάξ παρασκήνιο + + + + Select Color + Επιλογή Χρώματος + + + + PreviewForm + + + Preview Window + Προεπισκόπηση παραθύρου + + + + Tab 1 + Καρτέλα 1 + + + + PushButton + Κουμπί πίεσης + + + + Tab 2 + Καρτέλα 2 + + + + RadioButton + Κουμπί επιλογής + + + + CheckBox + Πλαίσιο ενεργοποίησης + + + + QSSEditorDialog + + + %1 - Style Sheet Editor + %1 - Επεξεργαστής φύλλου αισθητικής επικάλυψης + + + + Style Sheet Editor + Επεξεργαστής φύλλου αισθητικής επικάλυψης + + + + QSSPage + + + Create + Δημιουργία + + + + + Edit + Επεξεργασία + + + + + Rename + Μετονομασία + + + + + Remove + Αφαίρεση + + + + File name: + Όνομα αρχείου: + + + + Enter Style Sheet Name + Εισάγετε το όνομα του φύλλου αισθητικής επικάλυψης + + + + + + Error + Σφάλμα + + + + The file "%1" already exists + Το αρχείο «%1» υπάρχει ήδη + + + + Confirm Remove + Επικύρωση της αφαίρεσης + + + + Are you sure you want to remove style sheet "%1"? + Είστε σίγουρος-η ότι θέλετε να αφαιρέσετε το φύλλο αισθητικής επικάλυψης «%1»; + + + + Rename Style Sheet + Μετονομασία φύλλου αισθητικής επικάλυψης + + + + Style sheet name: + Όνομα του φύλλου αισθητικής επικάλυψης: + + + + The style sheet "%1" already exists + Το φύλλο αισθητικής επικάλυψης «%1» υπάρχει ήδη + + + + Unable to rename file + Αδυναμία μετονομασία του αρχείου + + + + main + + + Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable + Παρακαλώ αφαιρέστε την μεταβλητή περιβάλλοντος <b>QT_STYLE_OVERRIDE</b> + + + + The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly + Η μεταβλητή περιβάλλοντος <b>QT_QPA_PLATFORMTHEME</b> δεν έχει οριστεί σωστά + + + + Unable to find <b>libqt5ct-style.so</b> + Αδύνατη η εύρεση του <b>libqt5ct-style.so</b> + + + + Error + Σφάλμα + + + diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_en.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_en.ts new file mode 100644 index 00000000..b4fe7e17 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_en.ts @@ -0,0 +1,709 @@ + + + + + AppearancePage + + + Style: + + + + + Preview + + + + + Active palette + + + + + Inactive palette + + + + + Disabled palette + + + + + Palette + + + + + Default + + + + + Custom + + + + + Color scheme: + + + + + ... + + + + + Create + + + + + Edit + + + + + Create a Copy + + + + + Rename + + + + + Remove + + + + + + + Enter Color Scheme Name + + + + + + + File name: + + + + + + + Error + + + + + + + The color scheme "%1" already exists + + + + + + + Warning + + + + + + + The color scheme "%1" is read only + + + + + Confirm Remove + + + + + Are you sure you want to remove color scheme "%1"? + + + + + %1 (copy) + + + + + FontConfigDialog + + + + Font Configuration + + + + + Disable automatic hinting for bold fonts + + + + + LCD filter: + + + + + Automatic hinting + + + + + Hinting + + + + + Font resolution: + + + + + dpi + + + + + Subpixel geometry: + + + + + Antialiasing + + + + + Hinting style: + + + + + + None + + + + + Slight + + + + + Medium + + + + + Full + + + + + <i>%1</i> already exists. Do you want to replace it? + + + + + FontsPage + + + + + + ... + + + + + General: + + + + + Fixed width: + + + + + Create fonts.conf + + + + + Remove fonts.conf + + + + + Remove Font Configuration + + + + + Are you sure you want to delete <i>%1</i>? + + + + + InterfacePage + + + Double click interval: + + + + + Cursor flash time: + + + + + ComboBox effect: + + + + + ToolTip effect: + + + + + ToolBox effect: + + + + + + ms + + + + + + + + Disable + + + + + + + + Animate + + + + + + Fade + + + + + Menu effect: + + + + + Enable gui effects + + + + + Dialog buttons layout: + + + + + Menus have icons + + + + + Dialog buttons have icons + + + + + Activate item on single-click + + + + + Toolbar button style: + + + + + Mouse wheel scroll lines: + + + + + Only display the icon + + + + + Only display the text + + + + + The text appears beside the icon + + + + + The text appears under the icon + + + + + Follow the application style + + + + + MainWindow + + + Qt5 Configuration Tool + + + + + Appearance + + + + + Fonts + + + + + Icon Theme + + + + + Interface + + + + + Style Sheets + + + + + Version: %1 + + + + + PaletteEditDialog + + + Palette Editor + + + + + Reset palette + + + + + Build inactive palette + + + + + Build disabled palette + + + + + Active + + + + + Inactive + + + + + Disabled + + + + + Dark + + + + + Window text + + + + + Button background + + + + + Bright + + + + + Less bright + + + + + Less dark + + + + + Window + + + + + Shadow + + + + + Bright text + + + + + Button text + + + + + Normal text + + + + + Normal background + + + + + Highlight + + + + + Highlighted text + + + + + Visited link + + + + + Default + + + + + Tooltip background + + + + + Tooltip text + + + + + Link + + + + + Alternate background + + + + + Select Color + + + + + PreviewForm + + + Preview Window + + + + + Tab 1 + + + + + PushButton + + + + + Tab 2 + + + + + RadioButton + + + + + CheckBox + + + + + QSSEditorDialog + + + %1 - Style Sheet Editor + + + + + Style Sheet Editor + + + + + QSSPage + + + Create + + + + + + Edit + + + + + + Rename + + + + + + Remove + + + + + File name: + + + + + Enter Style Sheet Name + + + + + + + Error + + + + + The file "%1" already exists + + + + + Confirm Remove + + + + + Are you sure you want to remove style sheet "%1"? + + + + + Rename Style Sheet + + + + + Style sheet name: + + + + + The style sheet "%1" already exists + + + + + Unable to rename file + + + + + main + + + Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable + + + + + The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly + + + + + Unable to find <b>libqt5ct-style.so</b> + + + + + Error + + + + diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_es.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_es.ts new file mode 100644 index 00000000..fa897c4f --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_es.ts @@ -0,0 +1,709 @@ + + + + + AppearancePage + + + Style: + + + + + Preview + + + + + Active palette + + + + + Inactive palette + + + + + Disabled palette + + + + + Palette + + + + + Default + + + + + Custom + + + + + Color scheme: + + + + + ... + + + + + Create + + + + + Edit + + + + + Create a Copy + + + + + Rename + + + + + Remove + + + + + + + Enter Color Scheme Name + + + + + + + File name: + + + + + + + Error + + + + + + + The color scheme "%1" already exists + + + + + + + Warning + + + + + + + The color scheme "%1" is read only + + + + + Confirm Remove + + + + + Are you sure you want to remove color scheme "%1"? + + + + + %1 (copy) + + + + + FontConfigDialog + + + + Font Configuration + + + + + Disable automatic hinting for bold fonts + + + + + LCD filter: + + + + + Automatic hinting + + + + + Hinting + + + + + Font resolution: + + + + + dpi + + + + + Subpixel geometry: + + + + + Antialiasing + + + + + Hinting style: + + + + + + None + + + + + Slight + + + + + Medium + + + + + Full + + + + + <i>%1</i> already exists. Do you want to replace it? + + + + + FontsPage + + + + + + ... + + + + + General: + + + + + Fixed width: + + + + + Create fonts.conf + + + + + Remove fonts.conf + + + + + Remove Font Configuration + + + + + Are you sure you want to delete <i>%1</i>? + + + + + InterfacePage + + + Double click interval: + + + + + Cursor flash time: + + + + + ComboBox effect: + + + + + ToolTip effect: + + + + + ToolBox effect: + + + + + + ms + + + + + + + + Disable + + + + + + + + Animate + + + + + + Fade + + + + + Menu effect: + + + + + Enable gui effects + + + + + Dialog buttons layout: + + + + + Menus have icons + + + + + Dialog buttons have icons + + + + + Activate item on single-click + + + + + Toolbar button style: + + + + + Mouse wheel scroll lines: + + + + + Only display the icon + + + + + Only display the text + + + + + The text appears beside the icon + + + + + The text appears under the icon + + + + + Follow the application style + + + + + MainWindow + + + Qt5 Configuration Tool + + + + + Appearance + + + + + Fonts + + + + + Icon Theme + + + + + Interface + + + + + Style Sheets + + + + + Version: %1 + + + + + PaletteEditDialog + + + Palette Editor + + + + + Reset palette + + + + + Build inactive palette + + + + + Build disabled palette + + + + + Active + + + + + Inactive + + + + + Disabled + + + + + Dark + + + + + Window text + + + + + Button background + + + + + Bright + + + + + Less bright + + + + + Less dark + + + + + Window + + + + + Shadow + + + + + Bright text + + + + + Button text + + + + + Normal text + + + + + Normal background + + + + + Highlight + + + + + Highlighted text + + + + + Visited link + + + + + Default + + + + + Tooltip background + + + + + Tooltip text + + + + + Link + + + + + Alternate background + + + + + Select Color + + + + + PreviewForm + + + Preview Window + + + + + Tab 1 + + + + + PushButton + + + + + Tab 2 + + + + + RadioButton + + + + + CheckBox + + + + + QSSEditorDialog + + + %1 - Style Sheet Editor + + + + + Style Sheet Editor + + + + + QSSPage + + + Create + + + + + + Edit + + + + + + Rename + + + + + + Remove + + + + + File name: + + + + + Enter Style Sheet Name + + + + + + + Error + + + + + The file "%1" already exists + + + + + Confirm Remove + + + + + Are you sure you want to remove style sheet "%1"? + + + + + Rename Style Sheet + + + + + Style sheet name: + + + + + The style sheet "%1" already exists + + + + + Unable to rename file + + + + + main + + + Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable + + + + + The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly + + + + + Unable to find <b>libqt5ct-style.so</b> + + + + + Error + + + + diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_es_ES.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_es_ES.ts new file mode 100644 index 00000000..e9abee6f --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_es_ES.ts @@ -0,0 +1,709 @@ + + + + + AppearancePage + + + Style: + Estilo: + + + + Preview + Vista previa + + + + Active palette + Paleta activa + + + + Inactive palette + Paleta inactiva + + + + Disabled palette + Paleta desactivada + + + + Palette + Paleta + + + + Default + Predeterminado + + + + Custom + Personalizado + + + + Color scheme: + Combinación de colores : + + + + ... + ... + + + + Create + Crear + + + + Edit + Editar + + + + Create a Copy + Crear una copia + + + + Rename + Renombrar + + + + Remove + Borrar + + + + + + Enter Color Scheme Name + Introducir nombre de la combinación de colores + + + + + + File name: + Nombre del archivo: + + + + + + Error + Error + + + + + + The color scheme "%1" already exists + La combinación de colores "%1" ya existe + + + + + + Warning + Aviso + + + + + + The color scheme "%1" is read only + La combinación de colores "%1" es de sólo lectura + + + + Confirm Remove + Confirmar borrado + + + + Are you sure you want to remove color scheme "%1"? + ¿Seguro que quiere borrar la combinación de colores "%1"? + + + + %1 (copy) + %1 (copiar) + + + + FontConfigDialog + + + + Font Configuration + Configuración de fuente + + + + Disable automatic hinting for bold fonts + Desactivar consejo automático para fuentes en negrita + + + + LCD filter: + Filtro LCD: + + + + Automatic hinting + Consejo automático + + + + Hinting + Consejo + + + + Font resolution: + Resolución de fuente: + + + + dpi + ppp + + + + Subpixel geometry: + Geometría subpíxeles: + + + + Antialiasing + Suavizado de líneas + + + + Hinting style: + Estilo de consejo: + + + + + None + Ninguno + + + + Slight + Leve + + + + Medium + Medio + + + + Full + Completo + + + + <i>%1</i> already exists. Do you want to replace it? + <i>%1</i> ya existe. ¿Quieres reemplazarlo? + + + + FontsPage + + + + + + ... + ... + + + + General: + General: + + + + Fixed width: + Ancho fijo: + + + + Create fonts.conf + Crear fonts.conf + + + + Remove fonts.conf + Borrar fonts.conf + + + + Remove Font Configuration + Borrar configuración de fuentes + + + + Are you sure you want to delete <i>%1</i>? + ¿Seguro que quieres borrar <i>%1</i>? + + + + InterfacePage + + + Double click interval: + Intervalo de doble clic: + + + + Cursor flash time: + Tiempo de parpadeo del cursor: + + + + ComboBox effect: + Efecto ComboBox: + + + + ToolTip effect: + Efecto de información sobre herramientas: + + + + ToolBox effect: + Efecto de caja de herramientas: + + + + + ms + ms + + + + + + + Disable + Inhabilitar + + + + + + + Animate + Animado + + + + + Fade + Fundido + + + + Menu effect: + Menú de efectos: + + + + Enable gui effects + Activar efectos + + + + Dialog buttons layout: + Diseño de botones de diálogo: + + + + Menus have icons + Menús con iconos + + + + Dialog buttons have icons + Botones de diálogo con iconos + + + + Activate item on single-click + + + + + Toolbar button style: + + + + + Mouse wheel scroll lines: + + + + + Only display the icon + + + + + Only display the text + + + + + The text appears beside the icon + + + + + The text appears under the icon + + + + + Follow the application style + + + + + MainWindow + + + Qt5 Configuration Tool + Herramienta de configuración de QT5 + + + + Appearance + Apariencia + + + + Fonts + Fuentes + + + + Icon Theme + Tema de iconos + + + + Interface + Interfaz + + + + Style Sheets + Hojas de estilo + + + + Version: %1 + Versión: %1 + + + + PaletteEditDialog + + + Palette Editor + Editor de paleta + + + + Reset palette + Restablecer paleta + + + + Build inactive palette + Generar paleta inactiva + + + + Build disabled palette + Generar paleta desactivada + + + + Active + Activo + + + + Inactive + Inactivo + + + + Disabled + Desactivado + + + + Dark + Oscuro + + + + Window text + Ventana de texto + + + + Button background + Botón de fondo + + + + Bright + Brillante + + + + Less bright + Menos brillante + + + + Less dark + Menos oscuro + + + + Window + Ventana + + + + Shadow + Sombra + + + + Bright text + Texto brillante + + + + Button text + Botón de texto + + + + Normal text + Texto normal + + + + Normal background + Fondo habitual + + + + Highlight + Resaltar + + + + Highlighted text + Texto resaltado + + + + Visited link + Enlace visitado + + + + Default + Predeterminado + + + + Tooltip background + Fondo de información sobre herramientas + + + + Tooltip text + Texto de información sobre herramientas + + + + Link + Enlace + + + + Alternate background + Fondo alternativo + + + + Select Color + Elegir color + + + + PreviewForm + + + Preview Window + Ventana de previsualización + + + + Tab 1 + Pestaña 1 + + + + PushButton + Pulsador + + + + Tab 2 + Pestaña 2 + + + + RadioButton + Botón de opción + + + + CheckBox + Casilla de verificación + + + + QSSEditorDialog + + + %1 - Style Sheet Editor + %1 - Editor de hojas de estilo + + + + Style Sheet Editor + Editor de hojas de estilo + + + + QSSPage + + + Create + Crear + + + + + Edit + Editar + + + + + Rename + Renombrar + + + + + Remove + Borrar + + + + File name: + Nombre del archivo: + + + + Enter Style Sheet Name + Introducir nombre de la hoja de estilo + + + + + + Error + Error + + + + The file "%1" already exists + El archivo "%1" ya existe + + + + Confirm Remove + Confirmar borrado + + + + Are you sure you want to remove style sheet "%1"? + ¿Seguro que quiere borrar la hoja de estilo "%1"? + + + + Rename Style Sheet + Renombrar hoja de estilo + + + + Style sheet name: + Nombre de la hoja de estilo: + + + + The style sheet "%1" already exists + La hoja de estilo "%1" ya existe + + + + Unable to rename file + No es posible cambiar el nombre de archivo + + + + main + + + Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable + + + + + The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly + + + + + Unable to find <b>libqt5ct-style.so</b> + + + + + Error + Error + + + diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_fr.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_fr.ts new file mode 100644 index 00000000..4c0a6cc5 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_fr.ts @@ -0,0 +1,709 @@ + + + + + AppearancePage + + + Style: + Style : + + + + Preview + Aperçu + + + + Active palette + Palette Actif + + + + Inactive palette + Palette Inactif + + + + Disabled palette + Palette Désactivé + + + + Palette + Palette + + + + Default + Défaut + + + + Custom + Personnalisé + + + + Color scheme: + Jeu de couleurs : + + + + ... + ... + + + + Create + Créer + + + + Edit + Modifier + + + + Create a Copy + Créer une copie + + + + Rename + Renommer + + + + Remove + Supprimer + + + + + + Enter Color Scheme Name + Entrer le nom du jeu de couleurs + + + + + + File name: + Nom du fichier : + + + + + + Error + Erreur + + + + + + The color scheme "%1" already exists + Le jeu de couleurs "%1" existe déjà + + + + + + Warning + Avertissement + + + + + + The color scheme "%1" is read only + Le jeu de couleurs "%1" est en lecture seule + + + + Confirm Remove + Confirmer la suppression + + + + Are you sure you want to remove color scheme "%1"? + Êtes-vous sûr de vouloir supprimer le jeu de couleurs "%1" ? + + + + %1 (copy) + %1 (copie) + + + + FontConfigDialog + + + + Font Configuration + Configuration de la police + + + + Disable automatic hinting for bold fonts + Désactiver l'optimisation de rendu pour les polices en gras + + + + LCD filter: + Filtre LCD : + + + + Automatic hinting + Optimisation de rendu automatique + + + + Hinting + Optimisation de rendu + + + + Font resolution: + Résolution de la police : + + + + dpi + dpi + + + + Subpixel geometry: + Géométrie des sous-pixels : + + + + Antialiasing + Anticrénelage + + + + Hinting style: + Style d'optimisation de rendu : + + + + + None + Aucun + + + + Slight + Léger + + + + Medium + Moyen + + + + Full + Fort + + + + <i>%1</i> already exists. Do you want to replace it? + <i>%1</i> existe déjà. Voulez-vous le remplacer ? + + + + FontsPage + + + + + + ... + ... + + + + General: + Général : + + + + Fixed width: + Largeur fixe : + + + + Create fonts.conf + Créer fonts.conf + + + + Remove fonts.conf + Supprimer fonts.conf + + + + Remove Font Configuration + Supprimer la configuration de la police + + + + Are you sure you want to delete <i>%1</i>? + Êtes-vous sûr de vouloir supprimer <i>%1</i> ? + + + + InterfacePage + + + Double click interval: + Intervalle du double clic : + + + + Cursor flash time: + Temps de clignotement du curseur : + + + + ComboBox effect: + Effet liste déroulante : + + + + ToolTip effect: + Effet infobulle : + + + + ToolBox effect: + Effet barre d'outil : + + + + + ms + ms + + + + + + + Disable + Désactivé + + + + + + + Animate + Animé + + + + + Fade + Fondu + + + + Menu effect: + Effet menu : + + + + Enable gui effects + Activer les effets graphiques + + + + Dialog buttons layout: + Disposition des boutons : + + + + Menus have icons + Menus avec icônes + + + + Dialog buttons have icons + Boutons avec icônes + + + + Activate item on single-click + Activer avec un simple clic + + + + Toolbar button style: + + + + + Mouse wheel scroll lines: + + + + + Only display the icon + + + + + Only display the text + + + + + The text appears beside the icon + + + + + The text appears under the icon + + + + + Follow the application style + + + + + MainWindow + + + Qt5 Configuration Tool + Outil de configuration de Qt5 + + + + Appearance + Apparence + + + + Fonts + Polices + + + + Icon Theme + Théme des icônes + + + + Interface + Interface + + + + Style Sheets + Style des feuilles + + + + Version: %1 + Version : %1 + + + + PaletteEditDialog + + + Palette Editor + Éditeur de palette + + + + Reset palette + Réinitialiser la palette + + + + Build inactive palette + Construire la palette Inactif + + + + Build disabled palette + Construire la palette Désactivé + + + + Active + Actif + + + + Inactive + Inactif + + + + Disabled + Désactivé + + + + Dark + Sombre + + + + Window text + Texte de la fenêtre + + + + Button background + Arrière plan du bouton + + + + Bright + Luminosité + + + + Less bright + Moins lumineux + + + + Less dark + Moins sombre + + + + Window + Fenêtre + + + + Shadow + Ombre + + + + Bright text + Texte lumineux + + + + Button text + Texte du bouton + + + + Normal text + Texte normal + + + + Normal background + Arrière plan normal + + + + Highlight + Surbrillance + + + + Highlighted text + Texte en surbrillance + + + + Visited link + Lien visité + + + + Default + Défaut + + + + Tooltip background + Arrière plan des infobulles + + + + Tooltip text + Texte des infobulles + + + + Link + Lien + + + + Alternate background + Arrière plan alternatif + + + + Select Color + Sélectionner la couleur + + + + PreviewForm + + + Preview Window + Aperçu de la fenêtre + + + + Tab 1 + Onglet 1 + + + + PushButton + Bouton + + + + Tab 2 + Onglet 2 + + + + RadioButton + Bouton radio + + + + CheckBox + Case à cocher + + + + QSSEditorDialog + + + %1 - Style Sheet Editor + %1 - Éditeur de feuille de style + + + + Style Sheet Editor + Éditeur de feuille de style + + + + QSSPage + + + Create + Créer + + + + + Edit + Modifier + + + + + Rename + Renommer + + + + + Remove + Supprimer + + + + File name: + Nom du fichier : + + + + Enter Style Sheet Name + Entrer le nom de la feuille de style + + + + + + Error + Erreur + + + + The file "%1" already exists + Le fichier "%1" existe déjà + + + + Confirm Remove + Confirmer la suppression + + + + Are you sure you want to remove style sheet "%1"? + Êtes-vous sûr de vouloir supprimer la feuille de style "%1" ? + + + + Rename Style Sheet + Renommer la feuille de style + + + + Style sheet name: + Nom de la feuille de style : + + + + The style sheet "%1" already exists + La feuille de style "%1" existe déjà + + + + Unable to rename file + Impossible de renommer le fichier + + + + main + + + Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable + Merci de retirer la variable d'environement <b>QT_STYLE_OVERRIDE</b> + + + + The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly + La variable d'environnement <b>QT_QPA_PLATFORMTHEME</b> n'est pas définie correctement + + + + Unable to find <b>libqt5ct-style.so</b> + Impossible de trouver <b>libqt5ct-style.so</b> + + + + Error + Erreur + + + diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_gl_ES.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_gl_ES.ts new file mode 100644 index 00000000..cbd1b2ef --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_gl_ES.ts @@ -0,0 +1,709 @@ + + + + + AppearancePage + + + Style: + + + + + Preview + + + + + Active palette + + + + + Inactive palette + + + + + Disabled palette + + + + + Palette + + + + + Default + + + + + Custom + + + + + Color scheme: + + + + + ... + + + + + Create + + + + + Edit + + + + + Create a Copy + + + + + Rename + + + + + Remove + + + + + + + Enter Color Scheme Name + + + + + + + File name: + + + + + + + Error + + + + + + + The color scheme "%1" already exists + + + + + + + Warning + + + + + + + The color scheme "%1" is read only + + + + + Confirm Remove + + + + + Are you sure you want to remove color scheme "%1"? + + + + + %1 (copy) + + + + + FontConfigDialog + + + + Font Configuration + + + + + Disable automatic hinting for bold fonts + + + + + LCD filter: + + + + + Automatic hinting + + + + + Hinting + + + + + Font resolution: + + + + + dpi + + + + + Subpixel geometry: + + + + + Antialiasing + + + + + Hinting style: + + + + + + None + + + + + Slight + + + + + Medium + + + + + Full + + + + + <i>%1</i> already exists. Do you want to replace it? + + + + + FontsPage + + + + + + ... + + + + + General: + + + + + Fixed width: + + + + + Create fonts.conf + + + + + Remove fonts.conf + + + + + Remove Font Configuration + + + + + Are you sure you want to delete <i>%1</i>? + + + + + InterfacePage + + + Double click interval: + + + + + Cursor flash time: + + + + + ComboBox effect: + + + + + ToolTip effect: + + + + + ToolBox effect: + + + + + + ms + + + + + + + + Disable + + + + + + + + Animate + + + + + + Fade + + + + + Menu effect: + + + + + Enable gui effects + + + + + Dialog buttons layout: + + + + + Menus have icons + + + + + Dialog buttons have icons + + + + + Activate item on single-click + + + + + Toolbar button style: + + + + + Mouse wheel scroll lines: + + + + + Only display the icon + + + + + Only display the text + + + + + The text appears beside the icon + + + + + The text appears under the icon + + + + + Follow the application style + + + + + MainWindow + + + Qt5 Configuration Tool + + + + + Appearance + + + + + Fonts + + + + + Icon Theme + + + + + Interface + + + + + Style Sheets + + + + + Version: %1 + + + + + PaletteEditDialog + + + Palette Editor + + + + + Reset palette + + + + + Build inactive palette + + + + + Build disabled palette + + + + + Active + + + + + Inactive + + + + + Disabled + + + + + Dark + + + + + Window text + + + + + Button background + + + + + Bright + + + + + Less bright + + + + + Less dark + + + + + Window + + + + + Shadow + + + + + Bright text + + + + + Button text + + + + + Normal text + + + + + Normal background + + + + + Highlight + + + + + Highlighted text + + + + + Visited link + + + + + Default + + + + + Tooltip background + + + + + Tooltip text + + + + + Link + + + + + Alternate background + + + + + Select Color + + + + + PreviewForm + + + Preview Window + + + + + Tab 1 + + + + + PushButton + + + + + Tab 2 + + + + + RadioButton + + + + + CheckBox + + + + + QSSEditorDialog + + + %1 - Style Sheet Editor + + + + + Style Sheet Editor + + + + + QSSPage + + + Create + + + + + + Edit + + + + + + Rename + + + + + + Remove + + + + + File name: + + + + + Enter Style Sheet Name + + + + + + + Error + + + + + The file "%1" already exists + + + + + Confirm Remove + + + + + Are you sure you want to remove style sheet "%1"? + + + + + Rename Style Sheet + + + + + Style sheet name: + + + + + The style sheet "%1" already exists + + + + + Unable to rename file + + + + + main + + + Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable + + + + + The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly + + + + + Unable to find <b>libqt5ct-style.so</b> + + + + + Error + + + + diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_he.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_he.ts new file mode 100644 index 00000000..4f7d4caf --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_he.ts @@ -0,0 +1,709 @@ + + + + + AppearancePage + + + Style: + סגנון: + + + + Preview + תצוגה מקדימה + + + + Active palette + לוח צבעים פעיל + + + + Inactive palette + לוח צבעים לא פעיל + + + + Disabled palette + לוח צבעים מנוטרל + + + + Palette + לוח צבעים + + + + Default + שגרתי + + + + Custom + מותאם + + + + Color scheme: + ערכת צבעים: + + + + ... + ... + + + + Create + צור + + + + Edit + ערוך + + + + Create a Copy + צור העתק + + + + Rename + שנה שם + + + + Remove + הסר + + + + + + Enter Color Scheme Name + הזן שם של ערכת הצבעים + + + + + + File name: + שם קובץ: + + + + + + Error + שגיאה + + + + + + The color scheme "%1" already exists + ערכת הצבעים "%1" כבר קיימת + + + + + + Warning + אזהרה + + + + + + The color scheme "%1" is read only + ערכת הצבעים "%1" הינה לקריאה בלבד + + + + Confirm Remove + אימות הסרה + + + + Are you sure you want to remove color scheme "%1"? + להסיר את ערכת הצבעים "%1"? + + + + %1 (copy) + %1 (עותק) + + + + FontConfigDialog + + + + Font Configuration + תצורת גופן + + + + Disable automatic hinting for bold fonts + + + + + LCD filter: + + + + + Automatic hinting + רמיזה אוטומטית + + + + Hinting + רמיזה + + + + Font resolution: + רזולוציית גופן: + + + + dpi + dpi + + + + Subpixel geometry: + + + + + Antialiasing + החלקת קצוות + + + + Hinting style: + סגנון רמיזה: + + + + + None + ללא + + + + Slight + מועט + + + + Medium + בינוני + + + + Full + מלא + + + + <i>%1</i> already exists. Do you want to replace it? + <i>%1</i> כבר קיים. האם ברצונך להחליפו? + + + + FontsPage + + + + + + ... + ... + + + + General: + כללי: + + + + Fixed width: + רוחב מקובע: + + + + Create fonts.conf + צור fonts.conf + + + + Remove fonts.conf + הסר fonts.conf + + + + Remove Font Configuration + הסר תצרת גופן + + + + Are you sure you want to delete <i>%1</i>? + האם אתה בטוח כי ברצונך למחוק את <i>%1</i>? + + + + InterfacePage + + + Double click interval: + תדירות לחיצה כפולה: + + + + Cursor flash time: + + + + + ComboBox effect: + + + + + ToolTip effect: + אפקט תיבה צצה: + + + + ToolBox effect: + + + + + + ms + מילישניות + + + + + + + Disable + נטרל + + + + + + + Animate + הנפש + + + + + Fade + עמעם + + + + Menu effect: + אפקט תפריט: + + + + Enable gui effects + אפשר אפקטי ממשק + + + + Dialog buttons layout: + פריסת לחצני דו־שיח + + + + Menus have icons + תפריטים בעלי סמלים + + + + Dialog buttons have icons + לחצני דו שיח בעלי סמלים + + + + Activate item on single-click + הפעל פריטים בלחיצה יחידה + + + + Toolbar button style: + עיצוב לחצן סרגל כלים + + + + Mouse wheel scroll lines: + גלגלת העכבר גוללת (שורות): + + + + Only display the icon + הצג רק את הסמל + + + + Only display the text + הצג רק את הטקסט + + + + The text appears beside the icon + טקסט ליד הסמל + + + + The text appears under the icon + טקסט מתחת לסמל + + + + Follow the application style + לפי עיצוב היישום עצמו + + + + MainWindow + + + Qt5 Configuration Tool + כלי תצורה Qt5 + + + + Appearance + הופעה + + + + Fonts + גופנים + + + + Icon Theme + ערכת סמלים + + + + Interface + ממשק + + + + Style Sheets + + + + + Version: %1 + גרסא: %1 + + + + PaletteEditDialog + + + Palette Editor + עורך לוח צבעים + + + + Reset palette + אפס לוח צבעים + + + + Build inactive palette + בנה לוח צבעים לא פעיל + + + + Build disabled palette + בנה לוח צבעים מנוטרל + + + + Active + פעיל + + + + Inactive + לא פעיל + + + + Disabled + מנוטרל + + + + Dark + אפל + + + + Window text + טקסט חלון + + + + Button background + רקע לחצן + + + + Bright + בהיר + + + + Less bright + בהיר פחות + + + + Less dark + אפל פחות + + + + Window + חלון + + + + Shadow + צל + + + + Bright text + טקסט בהיר + + + + Button text + טקסט לחצן + + + + Normal text + טקסט רגיל + + + + Normal background + רקע רגיל + + + + Highlight + הבלט + + + + Highlighted text + הבלט טקסט + + + + Visited link + קישורים שנצפו + + + + Default + שגרתי + + + + Tooltip background + רקע תיבה צצה + + + + Tooltip text + טקסט תיבה צצה + + + + Link + קישור + + + + Alternate background + רקע חליפי + + + + Select Color + בחר צבע + + + + PreviewForm + + + Preview Window + חלון תצוגה מקדימה + + + + Tab 1 + כרטיסייה 1 + + + + PushButton + לחצן דחיפה + + + + Tab 2 + כרטיסייה 2 + + + + RadioButton + לחצן רדיו + + + + CheckBox + תיבת סימון + + + + QSSEditorDialog + + + %1 - Style Sheet Editor + + + + + Style Sheet Editor + + + + + QSSPage + + + Create + צור + + + + + Edit + ערוך + + + + + Rename + שנה שם + + + + + Remove + הסר + + + + File name: + שם קובץ: + + + + Enter Style Sheet Name + + + + + + + Error + שגיאה + + + + The file "%1" already exists + הקובץ "%1" כבר קיים + + + + Confirm Remove + אימות הסרה + + + + Are you sure you want to remove style sheet "%1"? + + + + + Rename Style Sheet + + + + + Style sheet name: + + + + + The style sheet "%1" already exists + + + + + Unable to rename file + לא מסוגל לשנות שם קובץ + + + + main + + + Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable + נא הסר את משתנה הסביבה <b>QT_STYLE_OVERRIDE</b> + + + + The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly + משתנה הסביבה <b>QT_QPA_PLATFORMTHEME</b> אינו מוגדר כראוי + + + + Unable to find <b>libqt5ct-style.so</b> + לא ניתן למצוא את <b>libqt5ct-style.so</b> + + + + Error + שגיאה + + + diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_hu.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_hu.ts new file mode 100644 index 00000000..cab84567 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_hu.ts @@ -0,0 +1,709 @@ + + + + + AppearancePage + + + Style: + + + + + Preview + + + + + Active palette + + + + + Inactive palette + + + + + Disabled palette + + + + + Palette + + + + + Default + + + + + Custom + + + + + Color scheme: + + + + + ... + + + + + Create + + + + + Edit + + + + + Create a Copy + + + + + Rename + + + + + Remove + + + + + + + Enter Color Scheme Name + + + + + + + File name: + + + + + + + Error + + + + + + + The color scheme "%1" already exists + + + + + + + Warning + + + + + + + The color scheme "%1" is read only + + + + + Confirm Remove + + + + + Are you sure you want to remove color scheme "%1"? + + + + + %1 (copy) + + + + + FontConfigDialog + + + + Font Configuration + + + + + Disable automatic hinting for bold fonts + + + + + LCD filter: + + + + + Automatic hinting + + + + + Hinting + + + + + Font resolution: + + + + + dpi + + + + + Subpixel geometry: + + + + + Antialiasing + + + + + Hinting style: + + + + + + None + + + + + Slight + + + + + Medium + + + + + Full + + + + + <i>%1</i> already exists. Do you want to replace it? + + + + + FontsPage + + + + + + ... + + + + + General: + + + + + Fixed width: + + + + + Create fonts.conf + + + + + Remove fonts.conf + + + + + Remove Font Configuration + + + + + Are you sure you want to delete <i>%1</i>? + + + + + InterfacePage + + + Double click interval: + + + + + Cursor flash time: + + + + + ComboBox effect: + + + + + ToolTip effect: + + + + + ToolBox effect: + + + + + + ms + + + + + + + + Disable + + + + + + + + Animate + + + + + + Fade + + + + + Menu effect: + + + + + Enable gui effects + + + + + Dialog buttons layout: + + + + + Menus have icons + + + + + Dialog buttons have icons + + + + + Activate item on single-click + + + + + Toolbar button style: + + + + + Mouse wheel scroll lines: + + + + + Only display the icon + + + + + Only display the text + + + + + The text appears beside the icon + + + + + The text appears under the icon + + + + + Follow the application style + + + + + MainWindow + + + Qt5 Configuration Tool + + + + + Appearance + + + + + Fonts + + + + + Icon Theme + + + + + Interface + + + + + Style Sheets + + + + + Version: %1 + + + + + PaletteEditDialog + + + Palette Editor + + + + + Reset palette + + + + + Build inactive palette + + + + + Build disabled palette + + + + + Active + + + + + Inactive + + + + + Disabled + + + + + Dark + + + + + Window text + + + + + Button background + + + + + Bright + + + + + Less bright + + + + + Less dark + + + + + Window + + + + + Shadow + + + + + Bright text + + + + + Button text + + + + + Normal text + + + + + Normal background + + + + + Highlight + + + + + Highlighted text + + + + + Visited link + + + + + Default + + + + + Tooltip background + + + + + Tooltip text + + + + + Link + + + + + Alternate background + + + + + Select Color + + + + + PreviewForm + + + Preview Window + + + + + Tab 1 + + + + + PushButton + + + + + Tab 2 + + + + + RadioButton + + + + + CheckBox + + + + + QSSEditorDialog + + + %1 - Style Sheet Editor + + + + + Style Sheet Editor + + + + + QSSPage + + + Create + + + + + + Edit + + + + + + Rename + + + + + + Remove + + + + + File name: + + + + + Enter Style Sheet Name + + + + + + + Error + + + + + The file "%1" already exists + + + + + Confirm Remove + + + + + Are you sure you want to remove style sheet "%1"? + + + + + Rename Style Sheet + + + + + Style sheet name: + + + + + The style sheet "%1" already exists + + + + + Unable to rename file + + + + + main + + + Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable + + + + + The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly + + + + + Unable to find <b>libqt5ct-style.so</b> + + + + + Error + + + + diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_it.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_it.ts new file mode 100644 index 00000000..4a02a9e5 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_it.ts @@ -0,0 +1,709 @@ + + + + + AppearancePage + + + Style: + + + + + Preview + + + + + Active palette + + + + + Inactive palette + + + + + Disabled palette + + + + + Palette + + + + + Default + + + + + Custom + + + + + Color scheme: + + + + + ... + + + + + Create + + + + + Edit + + + + + Create a Copy + + + + + Rename + + + + + Remove + + + + + + + Enter Color Scheme Name + + + + + + + File name: + + + + + + + Error + + + + + + + The color scheme "%1" already exists + + + + + + + Warning + + + + + + + The color scheme "%1" is read only + + + + + Confirm Remove + + + + + Are you sure you want to remove color scheme "%1"? + + + + + %1 (copy) + + + + + FontConfigDialog + + + + Font Configuration + + + + + Disable automatic hinting for bold fonts + + + + + LCD filter: + + + + + Automatic hinting + + + + + Hinting + + + + + Font resolution: + + + + + dpi + + + + + Subpixel geometry: + + + + + Antialiasing + + + + + Hinting style: + + + + + + None + + + + + Slight + + + + + Medium + + + + + Full + + + + + <i>%1</i> already exists. Do you want to replace it? + + + + + FontsPage + + + + + + ... + + + + + General: + + + + + Fixed width: + + + + + Create fonts.conf + + + + + Remove fonts.conf + + + + + Remove Font Configuration + + + + + Are you sure you want to delete <i>%1</i>? + + + + + InterfacePage + + + Double click interval: + + + + + Cursor flash time: + + + + + ComboBox effect: + + + + + ToolTip effect: + + + + + ToolBox effect: + + + + + + ms + + + + + + + + Disable + + + + + + + + Animate + + + + + + Fade + + + + + Menu effect: + + + + + Enable gui effects + + + + + Dialog buttons layout: + + + + + Menus have icons + + + + + Dialog buttons have icons + + + + + Activate item on single-click + + + + + Toolbar button style: + + + + + Mouse wheel scroll lines: + + + + + Only display the icon + + + + + Only display the text + + + + + The text appears beside the icon + + + + + The text appears under the icon + + + + + Follow the application style + + + + + MainWindow + + + Qt5 Configuration Tool + + + + + Appearance + + + + + Fonts + + + + + Icon Theme + + + + + Interface + + + + + Style Sheets + + + + + Version: %1 + + + + + PaletteEditDialog + + + Palette Editor + + + + + Reset palette + + + + + Build inactive palette + + + + + Build disabled palette + + + + + Active + + + + + Inactive + + + + + Disabled + + + + + Dark + + + + + Window text + + + + + Button background + + + + + Bright + + + + + Less bright + + + + + Less dark + + + + + Window + + + + + Shadow + + + + + Bright text + + + + + Button text + + + + + Normal text + + + + + Normal background + + + + + Highlight + + + + + Highlighted text + + + + + Visited link + + + + + Default + + + + + Tooltip background + + + + + Tooltip text + + + + + Link + + + + + Alternate background + + + + + Select Color + + + + + PreviewForm + + + Preview Window + + + + + Tab 1 + + + + + PushButton + + + + + Tab 2 + + + + + RadioButton + + + + + CheckBox + + + + + QSSEditorDialog + + + %1 - Style Sheet Editor + + + + + Style Sheet Editor + + + + + QSSPage + + + Create + + + + + + Edit + + + + + + Rename + + + + + + Remove + + + + + File name: + + + + + Enter Style Sheet Name + + + + + + + Error + + + + + The file "%1" already exists + + + + + Confirm Remove + + + + + Are you sure you want to remove style sheet "%1"? + + + + + Rename Style Sheet + + + + + Style sheet name: + + + + + The style sheet "%1" already exists + + + + + Unable to rename file + + + + + main + + + Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable + + + + + The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly + + + + + Unable to find <b>libqt5ct-style.so</b> + + + + + Error + + + + diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_it_IT.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_it_IT.ts new file mode 100644 index 00000000..34d5e222 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_it_IT.ts @@ -0,0 +1,709 @@ + + + + + AppearancePage + + + Style: + Stile: + + + + Preview + Anteprima + + + + Active palette + Colori attivi + + + + Inactive palette + Colori inattivi + + + + Disabled palette + Colori disabilitati + + + + Palette + Colori + + + + Default + Predefiniti + + + + Custom + Personalizzati + + + + Color scheme: + Schema colori: + + + + ... + ... + + + + Create + Crea + + + + Edit + Modifica + + + + Create a Copy + Crea una copia + + + + Rename + Rinomina + + + + Remove + Rimuovi + + + + + + Enter Color Scheme Name + Inserisci nome dello schema colori + + + + + + File name: + Nome file: + + + + + + Error + Errore + + + + + + The color scheme "%1" already exists + Lo schema colori "%1" è già esistente + + + + + + Warning + Attenzione + + + + + + The color scheme "%1" is read only + Lo schema colori "%1" è in sola lettura + + + + Confirm Remove + Conferma rimozione + + + + Are you sure you want to remove color scheme "%1"? + Sei sicuro di voler rimuovere lo schema colori "%1"? + + + + %1 (copy) + %1 (copia) + + + + FontConfigDialog + + + + Font Configuration + Configurazione caratteri + + + + Disable automatic hinting for bold fonts + Disabilita hinting automatico per grassetto + + + + LCD filter: + Filtro LCD: + + + + Automatic hinting + Hinting automatico + + + + Hinting + Hinting + + + + Font resolution: + Risoluzione font: + + + + dpi + dpi + + + + Subpixel geometry: + Geometria sub-pixel: + + + + Antialiasing + Anti-aliasing + + + + Hinting style: + Stile di hinting: + + + + + None + Nessuno + + + + Slight + Moderato + + + + Medium + Medio + + + + Full + Intero + + + + <i>%1</i> already exists. Do you want to replace it? + <i>%1</i> già esistente. Vuoi sostituirlo? + + + + FontsPage + + + + + + ... + ... + + + + General: + Generale: + + + + Fixed width: + Larghezza fissa: + + + + Create fonts.conf + Crea fonts.conf + + + + Remove fonts.conf + Elimina fonts.conf + + + + Remove Font Configuration + Elimina la configurazione dei font + + + + Are you sure you want to delete <i>%1</i>? + Sei sicuro di voler eliminare <i>%1</i>? + + + + InterfacePage + + + Double click interval: + Intervallo doppio clic: + + + + Cursor flash time: + Intervallo lampeggio cursore: + + + + ComboBox effect: + Effetto casella combinata: + + + + ToolTip effect: + Effetto suggerimento: + + + + ToolBox effect: + Effetto casella strumenti: + + + + + ms + ms + + + + + + + Disable + Disabilita + + + + + + + Animate + Animazione + + + + + Fade + Dissolvenza + + + + Menu effect: + Effetto menu: + + + + Enable gui effects + Abilita effetti interfaccia grafica + + + + Dialog buttons layout: + Disposizione pulsanti finestre dialogo: + + + + Menus have icons + Menu con icone + + + + Dialog buttons have icons + Pulsanti finestre dialogo con icone + + + + Activate item on single-click + Attiva oggetto con clic singolo + + + + Toolbar button style: + + + + + Mouse wheel scroll lines: + + + + + Only display the icon + + + + + Only display the text + + + + + The text appears beside the icon + + + + + The text appears under the icon + + + + + Follow the application style + + + + + MainWindow + + + Qt5 Configuration Tool + Strumento di configurazione Qt5 + + + + Appearance + Aspetto + + + + Fonts + Caratteri + + + + Icon Theme + Tema icone + + + + Interface + Interfaccia + + + + Style Sheets + Fogli di stile + + + + Version: %1 + Versione: %1 + + + + PaletteEditDialog + + + Palette Editor + Editor colori + + + + Reset palette + Azzera colori + + + + Build inactive palette + Crea colori inattivi + + + + Build disabled palette + Crea colori disabilitati + + + + Active + Attivo + + + + Inactive + Inattivo + + + + Disabled + Disabilitato + + + + Dark + Scuro + + + + Window text + Testo finestra + + + + Button background + Sfondo pulsante + + + + Bright + Chiaro + + + + Less bright + Meno chiaro + + + + Less dark + Meno scuro + + + + Window + Finestra + + + + Shadow + Ombreggiatura + + + + Bright text + Testo chiaro + + + + Button text + Testo pulsante + + + + Normal text + Testo normale + + + + Normal background + Sfondo normale + + + + Highlight + Evidenzia + + + + Highlighted text + Testo evidenziato + + + + Visited link + Collegamento visitato + + + + Default + Predefinito + + + + Tooltip background + Sfondo suggerimento + + + + Tooltip text + Testo suggerimento + + + + Link + Collegamento + + + + Alternate background + Sfondo alternativo + + + + Select Color + Seleziona colore + + + + PreviewForm + + + Preview Window + Finestra di anteprima + + + + Tab 1 + Linguetta 1 + + + + PushButton + Pulsante + + + + Tab 2 + Linguetta 2 + + + + RadioButton + Pulsante a scelta singola + + + + CheckBox + Casella di spunta + + + + QSSEditorDialog + + + %1 - Style Sheet Editor + %1 - Editor fogli di stile + + + + Style Sheet Editor + Editor fogli di stile + + + + QSSPage + + + Create + Crea + + + + + Edit + Modifica + + + + + Rename + Rinomina + + + + + Remove + Rimuovi + + + + File name: + Nome file: + + + + Enter Style Sheet Name + Inserisci nome del foglio di stile + + + + + + Error + Errore + + + + The file "%1" already exists + Il file "%1" è già esistente + + + + Confirm Remove + Conferma rimozione + + + + Are you sure you want to remove style sheet "%1"? + Sei sicuro di voler rimuovere il foglio di stile "%1"? + + + + Rename Style Sheet + Rinomina il foglio di stile + + + + Style sheet name: + Nome del foglio di stile: + + + + The style sheet "%1" already exists + Il foglio di stile "%1" è già esistente + + + + Unable to rename file + Impossibile rinominare file + + + + main + + + Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable + Rimuovi la variabile d'ambiente <b>QT_STYLE_OVERRIDE</b> + + + + The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly + La variabile d'ambiente <b>QT_QPA_PLATFORMTHEME</b> non è impostata correttamente + + + + Unable to find <b>libqt5ct-style.so</b> + + + + + Error + Errore + + + diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_ja.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_ja.ts new file mode 100644 index 00000000..16a2503a --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_ja.ts @@ -0,0 +1,709 @@ + + + + + AppearancePage + + + Style: + + + + + Preview + + + + + Active palette + + + + + Inactive palette + + + + + Disabled palette + + + + + Palette + + + + + Default + + + + + Custom + + + + + Color scheme: + + + + + ... + + + + + Create + + + + + Edit + + + + + Create a Copy + + + + + Rename + + + + + Remove + + + + + + + Enter Color Scheme Name + + + + + + + File name: + + + + + + + Error + + + + + + + The color scheme "%1" already exists + + + + + + + Warning + + + + + + + The color scheme "%1" is read only + + + + + Confirm Remove + + + + + Are you sure you want to remove color scheme "%1"? + + + + + %1 (copy) + + + + + FontConfigDialog + + + + Font Configuration + + + + + Disable automatic hinting for bold fonts + + + + + LCD filter: + + + + + Automatic hinting + + + + + Hinting + + + + + Font resolution: + + + + + dpi + + + + + Subpixel geometry: + + + + + Antialiasing + + + + + Hinting style: + + + + + + None + + + + + Slight + + + + + Medium + + + + + Full + + + + + <i>%1</i> already exists. Do you want to replace it? + + + + + FontsPage + + + + + + ... + + + + + General: + + + + + Fixed width: + + + + + Create fonts.conf + + + + + Remove fonts.conf + + + + + Remove Font Configuration + + + + + Are you sure you want to delete <i>%1</i>? + + + + + InterfacePage + + + Double click interval: + + + + + Cursor flash time: + + + + + ComboBox effect: + + + + + ToolTip effect: + + + + + ToolBox effect: + + + + + + ms + + + + + + + + Disable + + + + + + + + Animate + + + + + + Fade + + + + + Menu effect: + + + + + Enable gui effects + + + + + Dialog buttons layout: + + + + + Menus have icons + + + + + Dialog buttons have icons + + + + + Activate item on single-click + + + + + Toolbar button style: + + + + + Mouse wheel scroll lines: + + + + + Only display the icon + + + + + Only display the text + + + + + The text appears beside the icon + + + + + The text appears under the icon + + + + + Follow the application style + + + + + MainWindow + + + Qt5 Configuration Tool + + + + + Appearance + + + + + Fonts + + + + + Icon Theme + + + + + Interface + + + + + Style Sheets + + + + + Version: %1 + + + + + PaletteEditDialog + + + Palette Editor + + + + + Reset palette + + + + + Build inactive palette + + + + + Build disabled palette + + + + + Active + + + + + Inactive + + + + + Disabled + + + + + Dark + + + + + Window text + + + + + Button background + + + + + Bright + + + + + Less bright + + + + + Less dark + + + + + Window + + + + + Shadow + + + + + Bright text + + + + + Button text + + + + + Normal text + + + + + Normal background + + + + + Highlight + + + + + Highlighted text + + + + + Visited link + + + + + Default + + + + + Tooltip background + + + + + Tooltip text + + + + + Link + + + + + Alternate background + + + + + Select Color + + + + + PreviewForm + + + Preview Window + + + + + Tab 1 + + + + + PushButton + + + + + Tab 2 + + + + + RadioButton + + + + + CheckBox + + + + + QSSEditorDialog + + + %1 - Style Sheet Editor + + + + + Style Sheet Editor + + + + + QSSPage + + + Create + + + + + + Edit + + + + + + Rename + + + + + + Remove + + + + + File name: + + + + + Enter Style Sheet Name + + + + + + + Error + + + + + The file "%1" already exists + + + + + Confirm Remove + + + + + Are you sure you want to remove style sheet "%1"? + + + + + Rename Style Sheet + + + + + Style sheet name: + + + + + The style sheet "%1" already exists + + + + + Unable to rename file + + + + + main + + + Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable + + + + + The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly + + + + + Unable to find <b>libqt5ct-style.so</b> + + + + + Error + + + + diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_kk.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_kk.ts new file mode 100644 index 00000000..7ba66cda --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_kk.ts @@ -0,0 +1,709 @@ + + + + + AppearancePage + + + Style: + + + + + Preview + + + + + Active palette + + + + + Inactive palette + + + + + Disabled palette + + + + + Palette + + + + + Default + + + + + Custom + + + + + Color scheme: + + + + + ... + + + + + Create + + + + + Edit + + + + + Create a Copy + + + + + Rename + + + + + Remove + + + + + + + Enter Color Scheme Name + + + + + + + File name: + + + + + + + Error + + + + + + + The color scheme "%1" already exists + + + + + + + Warning + + + + + + + The color scheme "%1" is read only + + + + + Confirm Remove + + + + + Are you sure you want to remove color scheme "%1"? + + + + + %1 (copy) + + + + + FontConfigDialog + + + + Font Configuration + + + + + Disable automatic hinting for bold fonts + + + + + LCD filter: + + + + + Automatic hinting + + + + + Hinting + + + + + Font resolution: + + + + + dpi + + + + + Subpixel geometry: + + + + + Antialiasing + + + + + Hinting style: + + + + + + None + + + + + Slight + + + + + Medium + + + + + Full + + + + + <i>%1</i> already exists. Do you want to replace it? + + + + + FontsPage + + + + + + ... + + + + + General: + + + + + Fixed width: + + + + + Create fonts.conf + + + + + Remove fonts.conf + + + + + Remove Font Configuration + + + + + Are you sure you want to delete <i>%1</i>? + + + + + InterfacePage + + + Double click interval: + + + + + Cursor flash time: + + + + + ComboBox effect: + + + + + ToolTip effect: + + + + + ToolBox effect: + + + + + + ms + + + + + + + + Disable + + + + + + + + Animate + + + + + + Fade + + + + + Menu effect: + + + + + Enable gui effects + + + + + Dialog buttons layout: + + + + + Menus have icons + + + + + Dialog buttons have icons + + + + + Activate item on single-click + + + + + Toolbar button style: + + + + + Mouse wheel scroll lines: + + + + + Only display the icon + + + + + Only display the text + + + + + The text appears beside the icon + + + + + The text appears under the icon + + + + + Follow the application style + + + + + MainWindow + + + Qt5 Configuration Tool + + + + + Appearance + + + + + Fonts + + + + + Icon Theme + + + + + Interface + + + + + Style Sheets + + + + + Version: %1 + + + + + PaletteEditDialog + + + Palette Editor + + + + + Reset palette + + + + + Build inactive palette + + + + + Build disabled palette + + + + + Active + + + + + Inactive + + + + + Disabled + + + + + Dark + + + + + Window text + + + + + Button background + + + + + Bright + + + + + Less bright + + + + + Less dark + + + + + Window + + + + + Shadow + + + + + Bright text + + + + + Button text + + + + + Normal text + + + + + Normal background + + + + + Highlight + + + + + Highlighted text + + + + + Visited link + + + + + Default + + + + + Tooltip background + + + + + Tooltip text + + + + + Link + + + + + Alternate background + + + + + Select Color + + + + + PreviewForm + + + Preview Window + + + + + Tab 1 + + + + + PushButton + + + + + Tab 2 + + + + + RadioButton + + + + + CheckBox + + + + + QSSEditorDialog + + + %1 - Style Sheet Editor + + + + + Style Sheet Editor + + + + + QSSPage + + + Create + + + + + + Edit + + + + + + Rename + + + + + + Remove + + + + + File name: + + + + + Enter Style Sheet Name + + + + + + + Error + + + + + The file "%1" already exists + + + + + Confirm Remove + + + + + Are you sure you want to remove style sheet "%1"? + + + + + Rename Style Sheet + + + + + Style sheet name: + + + + + The style sheet "%1" already exists + + + + + Unable to rename file + + + + + main + + + Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable + + + + + The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly + + + + + Unable to find <b>libqt5ct-style.so</b> + + + + + Error + + + + diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_lt.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_lt.ts new file mode 100644 index 00000000..6cc78868 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_lt.ts @@ -0,0 +1,709 @@ + + + + + AppearancePage + + + Style: + + + + + Preview + + + + + Active palette + + + + + Inactive palette + + + + + Disabled palette + + + + + Palette + + + + + Default + + + + + Custom + + + + + Color scheme: + + + + + ... + + + + + Create + + + + + Edit + + + + + Create a Copy + + + + + Rename + + + + + Remove + + + + + + + Enter Color Scheme Name + + + + + + + File name: + + + + + + + Error + + + + + + + The color scheme "%1" already exists + + + + + + + Warning + + + + + + + The color scheme "%1" is read only + + + + + Confirm Remove + + + + + Are you sure you want to remove color scheme "%1"? + + + + + %1 (copy) + + + + + FontConfigDialog + + + + Font Configuration + + + + + Disable automatic hinting for bold fonts + + + + + LCD filter: + + + + + Automatic hinting + + + + + Hinting + + + + + Font resolution: + + + + + dpi + + + + + Subpixel geometry: + + + + + Antialiasing + + + + + Hinting style: + + + + + + None + + + + + Slight + + + + + Medium + + + + + Full + + + + + <i>%1</i> already exists. Do you want to replace it? + + + + + FontsPage + + + + + + ... + + + + + General: + + + + + Fixed width: + + + + + Create fonts.conf + + + + + Remove fonts.conf + + + + + Remove Font Configuration + + + + + Are you sure you want to delete <i>%1</i>? + + + + + InterfacePage + + + Double click interval: + + + + + Cursor flash time: + + + + + ComboBox effect: + + + + + ToolTip effect: + + + + + ToolBox effect: + + + + + + ms + + + + + + + + Disable + + + + + + + + Animate + + + + + + Fade + + + + + Menu effect: + + + + + Enable gui effects + + + + + Dialog buttons layout: + + + + + Menus have icons + + + + + Dialog buttons have icons + + + + + Activate item on single-click + + + + + Toolbar button style: + + + + + Mouse wheel scroll lines: + + + + + Only display the icon + + + + + Only display the text + + + + + The text appears beside the icon + + + + + The text appears under the icon + + + + + Follow the application style + + + + + MainWindow + + + Qt5 Configuration Tool + + + + + Appearance + + + + + Fonts + + + + + Icon Theme + + + + + Interface + + + + + Style Sheets + + + + + Version: %1 + + + + + PaletteEditDialog + + + Palette Editor + + + + + Reset palette + + + + + Build inactive palette + + + + + Build disabled palette + + + + + Active + + + + + Inactive + + + + + Disabled + + + + + Dark + + + + + Window text + + + + + Button background + + + + + Bright + + + + + Less bright + + + + + Less dark + + + + + Window + + + + + Shadow + + + + + Bright text + + + + + Button text + + + + + Normal text + + + + + Normal background + + + + + Highlight + + + + + Highlighted text + + + + + Visited link + + + + + Default + + + + + Tooltip background + + + + + Tooltip text + + + + + Link + + + + + Alternate background + + + + + Select Color + + + + + PreviewForm + + + Preview Window + + + + + Tab 1 + + + + + PushButton + + + + + Tab 2 + + + + + RadioButton + + + + + CheckBox + + + + + QSSEditorDialog + + + %1 - Style Sheet Editor + + + + + Style Sheet Editor + + + + + QSSPage + + + Create + + + + + + Edit + + + + + + Rename + + + + + + Remove + + + + + File name: + + + + + Enter Style Sheet Name + + + + + + + Error + + + + + The file "%1" already exists + + + + + Confirm Remove + + + + + Are you sure you want to remove style sheet "%1"? + + + + + Rename Style Sheet + + + + + Style sheet name: + + + + + The style sheet "%1" already exists + + + + + Unable to rename file + + + + + main + + + Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable + + + + + The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly + + + + + Unable to find <b>libqt5ct-style.so</b> + + + + + Error + + + + diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_nl.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_nl.ts new file mode 100644 index 00000000..8e2802b3 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_nl.ts @@ -0,0 +1,709 @@ + + + + + AppearancePage + + + Style: + + + + + Preview + + + + + Active palette + + + + + Inactive palette + + + + + Disabled palette + + + + + Palette + + + + + Default + + + + + Custom + + + + + Color scheme: + + + + + ... + + + + + Create + + + + + Edit + + + + + Create a Copy + + + + + Rename + + + + + Remove + + + + + + + Enter Color Scheme Name + + + + + + + File name: + + + + + + + Error + + + + + + + The color scheme "%1" already exists + + + + + + + Warning + + + + + + + The color scheme "%1" is read only + + + + + Confirm Remove + + + + + Are you sure you want to remove color scheme "%1"? + + + + + %1 (copy) + + + + + FontConfigDialog + + + + Font Configuration + + + + + Disable automatic hinting for bold fonts + + + + + LCD filter: + + + + + Automatic hinting + + + + + Hinting + + + + + Font resolution: + + + + + dpi + + + + + Subpixel geometry: + + + + + Antialiasing + + + + + Hinting style: + + + + + + None + + + + + Slight + + + + + Medium + + + + + Full + + + + + <i>%1</i> already exists. Do you want to replace it? + + + + + FontsPage + + + + + + ... + + + + + General: + + + + + Fixed width: + + + + + Create fonts.conf + + + + + Remove fonts.conf + + + + + Remove Font Configuration + + + + + Are you sure you want to delete <i>%1</i>? + + + + + InterfacePage + + + Double click interval: + + + + + Cursor flash time: + + + + + ComboBox effect: + + + + + ToolTip effect: + + + + + ToolBox effect: + + + + + + ms + + + + + + + + Disable + + + + + + + + Animate + + + + + + Fade + + + + + Menu effect: + + + + + Enable gui effects + + + + + Dialog buttons layout: + + + + + Menus have icons + + + + + Dialog buttons have icons + + + + + Activate item on single-click + + + + + Toolbar button style: + + + + + Mouse wheel scroll lines: + + + + + Only display the icon + + + + + Only display the text + + + + + The text appears beside the icon + + + + + The text appears under the icon + + + + + Follow the application style + + + + + MainWindow + + + Qt5 Configuration Tool + + + + + Appearance + + + + + Fonts + + + + + Icon Theme + + + + + Interface + + + + + Style Sheets + + + + + Version: %1 + + + + + PaletteEditDialog + + + Palette Editor + + + + + Reset palette + + + + + Build inactive palette + + + + + Build disabled palette + + + + + Active + + + + + Inactive + + + + + Disabled + + + + + Dark + + + + + Window text + + + + + Button background + + + + + Bright + + + + + Less bright + + + + + Less dark + + + + + Window + + + + + Shadow + + + + + Bright text + + + + + Button text + + + + + Normal text + + + + + Normal background + + + + + Highlight + + + + + Highlighted text + + + + + Visited link + + + + + Default + + + + + Tooltip background + + + + + Tooltip text + + + + + Link + + + + + Alternate background + + + + + Select Color + + + + + PreviewForm + + + Preview Window + + + + + Tab 1 + + + + + PushButton + + + + + Tab 2 + + + + + RadioButton + + + + + CheckBox + + + + + QSSEditorDialog + + + %1 - Style Sheet Editor + + + + + Style Sheet Editor + + + + + QSSPage + + + Create + + + + + + Edit + + + + + + Rename + + + + + + Remove + + + + + File name: + + + + + Enter Style Sheet Name + + + + + + + Error + + + + + The file "%1" already exists + + + + + Confirm Remove + + + + + Are you sure you want to remove style sheet "%1"? + + + + + Rename Style Sheet + + + + + Style sheet name: + + + + + The style sheet "%1" already exists + + + + + Unable to rename file + + + + + main + + + Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable + + + + + The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly + + + + + Unable to find <b>libqt5ct-style.so</b> + + + + + Error + + + + diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_nl_NL.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_nl_NL.ts new file mode 100644 index 00000000..eeda4958 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_nl_NL.ts @@ -0,0 +1,709 @@ + + + + + AppearancePage + + + Style: + Stijl: + + + + Preview + Voorbeeld + + + + Active palette + Actief kleurenschema + + + + Inactive palette + Inactief kleurenschema + + + + Disabled palette + Uitgeschakeld kleurenschema + + + + Palette + Kleurenschema + + + + Default + Standaard + + + + Custom + Aangepast + + + + Color scheme: + Kleurenschema: + + + + ... + ... + + + + Create + Creëren + + + + Edit + Bewerken + + + + Create a Copy + Een kopie creëren + + + + Rename + Naam wijzigen + + + + Remove + Verwijderen + + + + + + Enter Color Scheme Name + Voer een naam in voor dit kleurenschema + + + + + + File name: + Bestandsnaam: + + + + + + Error + Fout + + + + + + The color scheme "%1" already exists + Het kleurenschema "%1" bestaat al + + + + + + Warning + Waarschuwing + + + + + + The color scheme "%1" is read only + Het kleurenschema "%1" is alleen-lezen + + + + Confirm Remove + Verwijderen bevestigen + + + + Are you sure you want to remove color scheme "%1"? + Weet u zeker dat u het kleurenschema "%1" wilt verwijderen? + + + + %1 (copy) + %1 (kopie) + + + + FontConfigDialog + + + + Font Configuration + Lettertype-instellingen + + + + Disable automatic hinting for bold fonts + Automatische subpixelweergave uitschakelen voor vetgedrukte lettertypen + + + + LCD filter: + LCD-filter: + + + + Automatic hinting + Automatische subpixelweergave + + + + Hinting + Subpixelweergave + + + + Font resolution: + Lettertyperesolutie: + + + + dpi + dpi + + + + Subpixel geometry: + Subpixelafmetingen: + + + + Antialiasing + Anti-kartelvorming + + + + Hinting style: + Stijl van subpixelweergave: + + + + + None + Geen + + + + Slight + Licht + + + + Medium + Gemiddeld + + + + Full + Volledig + + + + <i>%1</i> already exists. Do you want to replace it? + <i>%1</i> bestaat al. Wilt u deze vervangen? + + + + FontsPage + + + + + + ... + ... + + + + General: + Algemeen: + + + + Fixed width: + Vastgezette breedte: + + + + Create fonts.conf + fonts.conf creëren + + + + Remove fonts.conf + fonts.conf verwijderen + + + + Remove Font Configuration + Lettertypeconfiguatie verwijderen + + + + Are you sure you want to delete <i>%1</i>? + Weet u zeker dat u <i>%1</i> wilt verwijderen? + + + + InterfacePage + + + Double click interval: + Dubbelklik-tussenpose: + + + + Cursor flash time: + Cursor-knippertijd: + + + + ComboBox effect: + Uitrolmenu-effect: + + + + ToolTip effect: + Hulpballon-effect: + + + + ToolBox effect: + Gereedschapsvenster-effect: + + + + + ms + ms + + + + + + + Disable + Uitschakelen + + + + + + + Animate + Uitschuiven + + + + + Fade + Vervagen + + + + Menu effect: + Menu-effect: + + + + Enable gui effects + Applicatie-effecten inschakelen + + + + Dialog buttons layout: + Volgorde van dialoogvensterknoppen: + + + + Menus have icons + Menu's voorzien van pictogrammen + + + + Dialog buttons have icons + Dialoogvensterknoppen voorzien van pictogrammen + + + + Activate item on single-click + Item activeren met enkele klik + + + + Toolbar button style: + Werkbalkknop-stijl: + + + + Mouse wheel scroll lines: + Aantal te scrollen regels met muis: + + + + Only display the icon + Alleen pictogram weergeven + + + + Only display the text + Alleen tekst weergeven + + + + The text appears beside the icon + Tekst naast het pictogram weergeven + + + + The text appears under the icon + Tekst onder het pictogram weergeven + + + + Follow the application style + Applicatiestijl volgen + + + + MainWindow + + + Qt5 Configuration Tool + Qt5-instellingengereedschap + + + + Appearance + Uiterlijk + + + + Fonts + Lettertypen + + + + Icon Theme + Pictogramthema + + + + Interface + Uiterlijk + + + + Style Sheets + Stijlbladen + + + + Version: %1 + Versie: %1 + + + + PaletteEditDialog + + + Palette Editor + Kleurenschema-bewerker + + + + Reset palette + Standaardwaarden + + + + Build inactive palette + Inactief kleurenschema bouwen + + + + Build disabled palette + Uitgeschakeld kleurenschema bouwen + + + + Active + Actief + + + + Inactive + Inactief + + + + Disabled + Uitgeschakeld + + + + Dark + Donker + + + + Window text + Venstertekst + + + + Button background + Knopachtergrond + + + + Bright + Licht + + + + Less bright + Minder licht + + + + Less dark + Minder donker + + + + Window + Venster + + + + Shadow + Schaduw + + + + Bright text + Lichte tekst + + + + Button text + Knoptekst + + + + Normal text + Normale tekst + + + + Normal background + Normale achtergrond + + + + Highlight + Markeren + + + + Highlighted text + Gemarkeerde tekst + + + + Visited link + Bezochte link + + + + Default + Standaard + + + + Tooltip background + Hulpballon-achtergrond + + + + Tooltip text + Hulpballon-tekst + + + + Link + Link + + + + Alternate background + Alternatieve achtergrond + + + + Select Color + Kleur selecteren + + + + PreviewForm + + + Preview Window + Voorbeeldvenster + + + + Tab 1 + Tabblad 1 + + + + PushButton + Drukknop + + + + Tab 2 + Tabblad 2 + + + + RadioButton + Keuzerondje + + + + CheckBox + Selectievakje + + + + QSSEditorDialog + + + %1 - Style Sheet Editor + %1 - Stijlbladbewerker + + + + Style Sheet Editor + Stijlbladbewerker + + + + QSSPage + + + Create + Creëren + + + + + Edit + Bewerken + + + + + Rename + Naam wijzigen + + + + + Remove + Verwijderen + + + + File name: + Bestandsnaam: + + + + Enter Style Sheet Name + Voer een naam in voor dit stijlblad + + + + + + Error + Fout + + + + The file "%1" already exists + Het bestand "%1" bestaat al + + + + Confirm Remove + Verwijderen bevestigen + + + + Are you sure you want to remove style sheet "%1"? + Weet u zeker dat u het stijlblad "%1" wilt verwijderen? + + + + Rename Style Sheet + Stijlbladnaam wijzigen + + + + Style sheet name: + Stijlbladnaam: + + + + The style sheet "%1" already exists + Het stijlblad "%1" bestaat al + + + + Unable to rename file + Het wijzigen van de bestandsnaam is mislukt + + + + main + + + Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable + Verwijder de omgevingsvariabel <b>QT_STYLE_OVERRIDE</b> + + + + The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly + De omgevingsvariabel <b>QT_QPA_PLATFORMTHEME</b> is niet goed ingesteld + + + + Unable to find <b>libqt5ct-style.so</b> + <b>libqt5ct-style.so</b> kan niet worden gevonden. + + + + Error + Fout + + + diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_pl.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_pl.ts new file mode 100644 index 00000000..09d657c7 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_pl.ts @@ -0,0 +1,709 @@ + + + + + AppearancePage + + + Style: + Styl: + + + + Preview + Podgląd + + + + Active palette + Aktywna paleta + + + + Inactive palette + Nieakatywna paleta + + + + Disabled palette + Wyłączona paleta + + + + Palette + Paleta + + + + Default + Domyślnie + + + + Custom + Zaawansowany + + + + Color scheme: + Schemat kolorów: + + + + ... + ... + + + + Create + Stwórz + + + + Edit + Edycja + + + + Create a Copy + Stwórz kopię + + + + Rename + Zmień nazwę + + + + Remove + Usuń + + + + + + Enter Color Scheme Name + Wprowadź nazwę schematu kolorów + + + + + + File name: + Nazwa pliku: + + + + + + Error + Błąd + + + + + + The color scheme "%1" already exists + Schemat kolorów "%1" już istnieje + + + + + + Warning + Ostrzeżenie + + + + + + The color scheme "%1" is read only + Schemat kolorów "%1" jest tylko do odczytu + + + + Confirm Remove + Potwierdź usunięcie + + + + Are you sure you want to remove color scheme "%1"? + Czy na pewno chcesz usunąć schemat koloru "%1"? + + + + %1 (copy) + %1 (copy) + + + + FontConfigDialog + + + + Font Configuration + Ustawienia czcionki + + + + Disable automatic hinting for bold fonts + Wyłącz automatyczne wygładzanie pogrubionych czcionek + + + + LCD filter: + Filtr LCD: + + + + Automatic hinting + Automatyczne wygładzanie + + + + Hinting + Wygładzanie + + + + Font resolution: + Rozdzielczość czcionki: + + + + dpi + DPI + + + + Subpixel geometry: + Geometria subpixelów: + + + + Antialiasing + Antialiasing + + + + Hinting style: + Styl wygładzania: + + + + + None + żaden + + + + Slight + Delikatny + + + + Medium + Średni + + + + Full + Pełny + + + + <i>%1</i> already exists. Do you want to replace it? + <i>%1</i> już istnieje. Chcesz go zapisać w tej nazwie? + + + + FontsPage + + + + + + ... + ... + + + + General: + Główny: + + + + Fixed width: + Stała szerokość: + + + + Create fonts.conf + Stwórz fonts.conf + + + + Remove fonts.conf + Usuń fonts.conf + + + + Remove Font Configuration + Usuń konfigurację czcionek + + + + Are you sure you want to delete <i>%1</i>? + Czy chcesz usunąć <i>%1</i>? + + + + InterfacePage + + + Double click interval: + Częstotliwość dwukliku: + + + + Cursor flash time: + Czas mrugania kursora: + + + + ComboBox effect: + Efekt ComboBox: + + + + ToolTip effect: + Efekt ToolTip: + + + + ToolBox effect: + Efekt ToolBox: + + + + + ms + ms + + + + + + + Disable + Wyłączony + + + + + + + Animate + Animacja + + + + + Fade + Zanikanie + + + + Menu effect: + Efekt Menu: + + + + Enable gui effects + Włącz efekty interfejsu + + + + Dialog buttons layout: + Ułożenie przycisków okna dialogowego + + + + Menus have icons + Opcje menu mają ikony + + + + Dialog buttons have icons + Przyciski okien dialogowych mają ikony + + + + Activate item on single-click + Aktywuj elementy jednym kliknięciem + + + + Toolbar button style: + + + + + Mouse wheel scroll lines: + + + + + Only display the icon + + + + + Only display the text + + + + + The text appears beside the icon + + + + + The text appears under the icon + + + + + Follow the application style + + + + + MainWindow + + + Qt5 Configuration Tool + Narzędzie konfiguracji Qt5 + + + + Appearance + Wygląd + + + + Fonts + Czcionki + + + + Icon Theme + Temat ikon + + + + Interface + Interfejs + + + + Style Sheets + Arkusze stylów + + + + Version: %1 + Wersja: %1 + + + + PaletteEditDialog + + + Palette Editor + Edytor palety + + + + Reset palette + Resetuj paletę + + + + Build inactive palette + Buduj nieaktywną paletę + + + + Build disabled palette + Buduj wyłączoną paletę + + + + Active + Aktywna + + + + Inactive + Nieaktywna + + + + Disabled + Wyłączony + + + + Dark + Ciemny + + + + Window text + Tekst okna + + + + Button background + Tło przycisku + + + + Bright + Jasność + + + + Less bright + Zmniejsz jasność + + + + Less dark + Zmniejsz ciemność + + + + Window + Okno + + + + Shadow + Cień + + + + Bright text + Jasny tekst + + + + Button text + Tekst przycisku + + + + Normal text + Normalny tekst + + + + Normal background + Normalne tło + + + + Highlight + Podświetlenie + + + + Highlighted text + Podświetlony tekst + + + + Visited link + Odwiedzone linki + + + + Default + Domyślnie + + + + Tooltip background + Tło podpowiedzi + + + + Tooltip text + Tekst podpowiedzi + + + + Link + Link + + + + Alternate background + Alternatywne tło + + + + Select Color + Wybrany kolor + + + + PreviewForm + + + Preview Window + Podgląd okna + + + + Tab 1 + Tab 1 + + + + PushButton + PushButton + + + + Tab 2 + Tab 2 + + + + RadioButton + RadioButton + + + + CheckBox + CheckBox + + + + QSSEditorDialog + + + %1 - Style Sheet Editor + %1 - Edytor arkuszy stylów + + + + Style Sheet Editor + Edytor arkuszy stylów + + + + QSSPage + + + Create + Stwórz + + + + + Edit + Edycja + + + + + Rename + Zmień nazwę + + + + + Remove + Usuń + + + + File name: + Nazwa pliku: + + + + Enter Style Sheet Name + Wpisz nazwę arkusza stylów + + + + + + Error + Błąd + + + + The file "%1" already exists + Plik "%1" istnieje + + + + Confirm Remove + Potwierdź usunięcie + + + + Are you sure you want to remove style sheet "%1"? + Czy na pewno chcesz usunąć arkusz stylów "%1"? + + + + Rename Style Sheet + Zmień nazwę arkusza stylów + + + + Style sheet name: + Nazwa arkusza stylów: + + + + The style sheet "%1" already exists + Arkusz stylów "%1" już istnieje + + + + Unable to rename file + Nie można zmienić nazwy pliku + + + + main + + + Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable + Proszę usunąć zmienną środowiskową <b>QT_STYLE_OVERRIDE</b> + + + + The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly + Zmienna środowiskowa <b>QT_QPA_PLATFORMTHEME</b> ma nieprawidłową wartość + + + + Unable to find <b>libqt5ct-style.so</b> + + + + + Error + Błąd + + + diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_pt.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_pt.ts new file mode 100644 index 00000000..d680ea8c --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_pt.ts @@ -0,0 +1,709 @@ + + + + + AppearancePage + + + Style: + + + + + Preview + + + + + Active palette + + + + + Inactive palette + + + + + Disabled palette + + + + + Palette + + + + + Default + + + + + Custom + + + + + Color scheme: + + + + + ... + + + + + Create + + + + + Edit + + + + + Create a Copy + + + + + Rename + + + + + Remove + + + + + + + Enter Color Scheme Name + + + + + + + File name: + + + + + + + Error + + + + + + + The color scheme "%1" already exists + + + + + + + Warning + + + + + + + The color scheme "%1" is read only + + + + + Confirm Remove + + + + + Are you sure you want to remove color scheme "%1"? + + + + + %1 (copy) + + + + + FontConfigDialog + + + + Font Configuration + + + + + Disable automatic hinting for bold fonts + + + + + LCD filter: + + + + + Automatic hinting + + + + + Hinting + + + + + Font resolution: + + + + + dpi + + + + + Subpixel geometry: + + + + + Antialiasing + + + + + Hinting style: + + + + + + None + + + + + Slight + + + + + Medium + + + + + Full + + + + + <i>%1</i> already exists. Do you want to replace it? + + + + + FontsPage + + + + + + ... + + + + + General: + + + + + Fixed width: + + + + + Create fonts.conf + + + + + Remove fonts.conf + + + + + Remove Font Configuration + + + + + Are you sure you want to delete <i>%1</i>? + + + + + InterfacePage + + + Double click interval: + + + + + Cursor flash time: + + + + + ComboBox effect: + + + + + ToolTip effect: + + + + + ToolBox effect: + + + + + + ms + + + + + + + + Disable + + + + + + + + Animate + + + + + + Fade + + + + + Menu effect: + + + + + Enable gui effects + + + + + Dialog buttons layout: + + + + + Menus have icons + + + + + Dialog buttons have icons + + + + + Activate item on single-click + + + + + Toolbar button style: + + + + + Mouse wheel scroll lines: + + + + + Only display the icon + + + + + Only display the text + + + + + The text appears beside the icon + + + + + The text appears under the icon + + + + + Follow the application style + + + + + MainWindow + + + Qt5 Configuration Tool + + + + + Appearance + + + + + Fonts + + + + + Icon Theme + + + + + Interface + + + + + Style Sheets + + + + + Version: %1 + + + + + PaletteEditDialog + + + Palette Editor + + + + + Reset palette + + + + + Build inactive palette + + + + + Build disabled palette + + + + + Active + + + + + Inactive + + + + + Disabled + + + + + Dark + + + + + Window text + + + + + Button background + + + + + Bright + + + + + Less bright + + + + + Less dark + + + + + Window + + + + + Shadow + + + + + Bright text + + + + + Button text + + + + + Normal text + + + + + Normal background + + + + + Highlight + + + + + Highlighted text + + + + + Visited link + + + + + Default + + + + + Tooltip background + + + + + Tooltip text + + + + + Link + + + + + Alternate background + + + + + Select Color + + + + + PreviewForm + + + Preview Window + + + + + Tab 1 + + + + + PushButton + + + + + Tab 2 + + + + + RadioButton + + + + + CheckBox + + + + + QSSEditorDialog + + + %1 - Style Sheet Editor + + + + + Style Sheet Editor + + + + + QSSPage + + + Create + + + + + + Edit + + + + + + Rename + + + + + + Remove + + + + + File name: + + + + + Enter Style Sheet Name + + + + + + + Error + + + + + The file "%1" already exists + + + + + Confirm Remove + + + + + Are you sure you want to remove style sheet "%1"? + + + + + Rename Style Sheet + + + + + Style sheet name: + + + + + The style sheet "%1" already exists + + + + + Unable to rename file + + + + + main + + + Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable + + + + + The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly + + + + + Unable to find <b>libqt5ct-style.so</b> + + + + + Error + + + + diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_pt_BR.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_pt_BR.ts new file mode 100644 index 00000000..d680ea8c --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_pt_BR.ts @@ -0,0 +1,709 @@ + + + + + AppearancePage + + + Style: + + + + + Preview + + + + + Active palette + + + + + Inactive palette + + + + + Disabled palette + + + + + Palette + + + + + Default + + + + + Custom + + + + + Color scheme: + + + + + ... + + + + + Create + + + + + Edit + + + + + Create a Copy + + + + + Rename + + + + + Remove + + + + + + + Enter Color Scheme Name + + + + + + + File name: + + + + + + + Error + + + + + + + The color scheme "%1" already exists + + + + + + + Warning + + + + + + + The color scheme "%1" is read only + + + + + Confirm Remove + + + + + Are you sure you want to remove color scheme "%1"? + + + + + %1 (copy) + + + + + FontConfigDialog + + + + Font Configuration + + + + + Disable automatic hinting for bold fonts + + + + + LCD filter: + + + + + Automatic hinting + + + + + Hinting + + + + + Font resolution: + + + + + dpi + + + + + Subpixel geometry: + + + + + Antialiasing + + + + + Hinting style: + + + + + + None + + + + + Slight + + + + + Medium + + + + + Full + + + + + <i>%1</i> already exists. Do you want to replace it? + + + + + FontsPage + + + + + + ... + + + + + General: + + + + + Fixed width: + + + + + Create fonts.conf + + + + + Remove fonts.conf + + + + + Remove Font Configuration + + + + + Are you sure you want to delete <i>%1</i>? + + + + + InterfacePage + + + Double click interval: + + + + + Cursor flash time: + + + + + ComboBox effect: + + + + + ToolTip effect: + + + + + ToolBox effect: + + + + + + ms + + + + + + + + Disable + + + + + + + + Animate + + + + + + Fade + + + + + Menu effect: + + + + + Enable gui effects + + + + + Dialog buttons layout: + + + + + Menus have icons + + + + + Dialog buttons have icons + + + + + Activate item on single-click + + + + + Toolbar button style: + + + + + Mouse wheel scroll lines: + + + + + Only display the icon + + + + + Only display the text + + + + + The text appears beside the icon + + + + + The text appears under the icon + + + + + Follow the application style + + + + + MainWindow + + + Qt5 Configuration Tool + + + + + Appearance + + + + + Fonts + + + + + Icon Theme + + + + + Interface + + + + + Style Sheets + + + + + Version: %1 + + + + + PaletteEditDialog + + + Palette Editor + + + + + Reset palette + + + + + Build inactive palette + + + + + Build disabled palette + + + + + Active + + + + + Inactive + + + + + Disabled + + + + + Dark + + + + + Window text + + + + + Button background + + + + + Bright + + + + + Less bright + + + + + Less dark + + + + + Window + + + + + Shadow + + + + + Bright text + + + + + Button text + + + + + Normal text + + + + + Normal background + + + + + Highlight + + + + + Highlighted text + + + + + Visited link + + + + + Default + + + + + Tooltip background + + + + + Tooltip text + + + + + Link + + + + + Alternate background + + + + + Select Color + + + + + PreviewForm + + + Preview Window + + + + + Tab 1 + + + + + PushButton + + + + + Tab 2 + + + + + RadioButton + + + + + CheckBox + + + + + QSSEditorDialog + + + %1 - Style Sheet Editor + + + + + Style Sheet Editor + + + + + QSSPage + + + Create + + + + + + Edit + + + + + + Rename + + + + + + Remove + + + + + File name: + + + + + Enter Style Sheet Name + + + + + + + Error + + + + + The file "%1" already exists + + + + + Confirm Remove + + + + + Are you sure you want to remove style sheet "%1"? + + + + + Rename Style Sheet + + + + + Style sheet name: + + + + + The style sheet "%1" already exists + + + + + Unable to rename file + + + + + main + + + Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable + + + + + The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly + + + + + Unable to find <b>libqt5ct-style.so</b> + + + + + Error + + + + diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_ru.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_ru.ts new file mode 100644 index 00000000..df069adf --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_ru.ts @@ -0,0 +1,709 @@ + + + + + AppearancePage + + + Style: + Стиль: + + + + Preview + Предварительный просмотр + + + + Active palette + Активная палитра + + + + Inactive palette + Неактивная палитра + + + + Disabled palette + Палитра выключенных элеметнов + + + + Palette + Палитра + + + + Default + По умолчанию + + + + Custom + Изменённая + + + + Color scheme: + Цветовая схема: + + + + ... + ... + + + + Create + Создать + + + + Edit + Изменить + + + + Create a Copy + Создать копию + + + + Rename + Переименовать + + + + Remove + Удалить + + + + + + Enter Color Scheme Name + Введите имя цветовой схемы + + + + + + File name: + Имя файла: + + + + + + Error + Ошибка + + + + + + The color scheme "%1" already exists + Цветовая схема "%1" уже существует + + + + + + Warning + Предупреждение + + + + + + The color scheme "%1" is read only + Цветовая схема "%1" доступна только для чтения + + + + Confirm Remove + Подтвердите удаление + + + + Are you sure you want to remove color scheme "%1"? + Вы уверены, что хотите удалить цветовую схему "%1"? + + + + %1 (copy) + %1 (копия) + + + + FontConfigDialog + + + + Font Configuration + Настройка шрифтов + + + + Disable automatic hinting for bold fonts + Отключить автоуточнение для жирных шрифтов + + + + LCD filter: + Фильтр LCD: + + + + Automatic hinting + Автоматическое уточнение + + + + Hinting + Уточнение + + + + Font resolution: + Разрешение шрифтов: + + + + dpi + точек/дюйм + + + + Subpixel geometry: + Геометрия субпикселей: + + + + Antialiasing + Сглаживание + + + + Hinting style: + Стиль уточнения: + + + + + None + Выключен + + + + Slight + Слабое + + + + Medium + Среднее + + + + Full + Полное + + + + <i>%1</i> already exists. Do you want to replace it? + Файл <i>%1</i> уже существует. Хотите ли вы его заменить? + + + + FontsPage + + + + + + ... + ... + + + + General: + Общий: + + + + Fixed width: + Фиксированной ширины: + + + + Create fonts.conf + Создать fonts.conf + + + + Remove fonts.conf + Удалить fonts.conf + + + + Remove Font Configuration + Удалить настройку шрифтов + + + + Are you sure you want to delete <i>%1</i>? + Вы уверены, что хотите удалить <i>%1</i>? + + + + InterfacePage + + + Double click interval: + Интервал двойного щелчка: + + + + Cursor flash time: + Период мигания курсора: + + + + ComboBox effect: + Эффект выпадающего списка: + + + + ToolTip effect: + Эффект подсказки: + + + + ToolBox effect: + Эффект панели инструментов: + + + + + ms + мс + + + + + + + Disable + Выключен + + + + + + + Animate + Анимация + + + + + Fade + Затухание + + + + Menu effect: + Эффект меню: + + + + Enable gui effects + Включить эффекты интерфейса + + + + Dialog buttons layout: + Расположение кнопок диалога: + + + + Menus have icons + Показывать значки в меню + + + + Dialog buttons have icons + Показывать значки на кнопках диалогов + + + + Activate item on single-click + Активировать элементы списка одним щелчком + + + + Toolbar button style: + Стиль кнопок панелей инструментов: + + + + Mouse wheel scroll lines: + Шаг прокрутки колесом мыши, строк: + + + + Only display the icon + Отображать только значок + + + + Only display the text + Отображать только текст + + + + The text appears beside the icon + Отображать текст рядом со значком + + + + The text appears under the icon + Отображать текст под значком + + + + Follow the application style + Определяется стилем приложения + + + + MainWindow + + + Qt5 Configuration Tool + Средство настройки Qt5 + + + + Appearance + Внешний вид + + + + Fonts + Шрифты + + + + Icon Theme + Стиль значков + + + + Interface + Интерфейс + + + + Style Sheets + Таблицы стилей + + + + Version: %1 + Версия: %1 + + + + PaletteEditDialog + + + Palette Editor + Редактор палитры + + + + Reset palette + Сбросить палитру + + + + Build inactive palette + Создать неактивную политру + + + + Build disabled palette + Создать "выключенную" палитру + + + + Active + Активная + + + + Inactive + Неактивная + + + + Disabled + Отключенная + + + + Dark + Тёмный + + + + Window text + Текст окна + + + + Button background + Фон кнопки + + + + Bright + Яркий + + + + Less bright + Менее яркий + + + + Less dark + Менее тёмный + + + + Window + Окно + + + + Shadow + Тень + + + + Bright text + Яркий текст + + + + Button text + Текст кнопки + + + + Normal text + Обычный текст + + + + Normal background + Обычный фон + + + + Highlight + Выделенная область + + + + Highlighted text + Выделенный текст + + + + Visited link + Посещённая ссылка + + + + Default + По умолчанию + + + + Tooltip background + Фон подсказки + + + + Tooltip text + Текст подсказки + + + + Link + Ссылка + + + + Alternate background + Альтернативный фон + + + + Select Color + Выберите цвет + + + + PreviewForm + + + Preview Window + Окно предпросмотра + + + + Tab 1 + Вкладка 1 + + + + PushButton + Кнопка + + + + Tab 2 + Вкладка 2 + + + + RadioButton + Переключатель + + + + CheckBox + Выключатель + + + + QSSEditorDialog + + + %1 - Style Sheet Editor + %1 - Редактор Таблицы Стилей + + + + Style Sheet Editor + Редактор Таблицы Стилей + + + + QSSPage + + + Create + Создать + + + + + Edit + Изменить + + + + + Rename + Переименовать + + + + + Remove + Удалить + + + + File name: + Имя файла: + + + + Enter Style Sheet Name + Введите имя таблицы стилей + + + + + + Error + Ошибка + + + + The file "%1" already exists + Файл "%1" уже существует + + + + Confirm Remove + Подтвердите удаление + + + + Are you sure you want to remove style sheet "%1"? + Вы уверены, что хотите удалить таблицу стилей "%1"? + + + + Rename Style Sheet + Переименовать таблицу стилей + + + + Style sheet name: + Имя таблицы стилей: + + + + The style sheet "%1" already exists + Таблица стилей с именем "%1" уже существует + + + + Unable to rename file + Невозможно переименовать файл + + + + main + + + Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable + Пожалуйста, удалите переменную среды <b>QT_STYLE_OVERRIDE</b> + + + + The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly + Переменная среды <b>QT_QPA_PLATFORMTHEME</b> установлена неправильно + + + + Unable to find <b>libqt5ct-style.so</b> + Не найден <b>libqt5ct-style.so</b> + + + + Error + Ошибка + + + diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_sk.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_sk.ts new file mode 100644 index 00000000..e4251365 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_sk.ts @@ -0,0 +1,709 @@ + + + + + AppearancePage + + + Style: + Štýl: + + + + Preview + Náhľad + + + + Active palette + Aktívna paleta + + + + Inactive palette + Neaktívna paleta + + + + Disabled palette + Zakázaná paleta + + + + Palette + Paleta + + + + Default + Výchozia + + + + Custom + Vlastná + + + + Color scheme: + Farebná schéma: + + + + ... + ... + + + + Create + Vytvoriť + + + + Edit + Upraviť + + + + Create a Copy + Vytvoriť kópiu + + + + Rename + Premenovať + + + + Remove + Odstrániť + + + + + + Enter Color Scheme Name + Zadajte názov farebnej schémy + + + + + + File name: + Názov súboru: + + + + + + Error + Chyba + + + + + + The color scheme "%1" already exists + Farebná schéma "%1" už existuje + + + + + + Warning + Varovanie + + + + + + The color scheme "%1" is read only + Farebná schéma "%1" je len na čítanie + + + + Confirm Remove + Potvrdiť odstránenie + + + + Are you sure you want to remove color scheme "%1"? + Ste si istý, že chcete odstrániť farebnú schému "%1"? + + + + %1 (copy) + %1 (kópia) + + + + FontConfigDialog + + + + Font Configuration + Nastavenie písma + + + + Disable automatic hinting for bold fonts + Zakázať automatický hinting hrubých písiem + + + + LCD filter: + LCD filter: + + + + Automatic hinting + Automatický hinting + + + + Hinting + Hinting + + + + Font resolution: + Rozlíšenie písma: + + + + dpi + dpi + + + + Subpixel geometry: + Geometria subpixelov: + + + + Antialiasing + Vyhladzovanie + + + + Hinting style: + Štýl hintingu: + + + + + None + Žiadny + + + + Slight + Slabý + + + + Medium + Stredný + + + + Full + Plný + + + + <i>%1</i> already exists. Do you want to replace it? + <i>%1</i> už existuje. Chcete ho nahradiť? + + + + FontsPage + + + + + + ... + ... + + + + General: + Všeobecné: + + + + Fixed width: + S pevnou šírkou: + + + + Create fonts.conf + Vytvoriť fonts.conf + + + + Remove fonts.conf + Odstrániť fonts.conf + + + + Remove Font Configuration + Odstrániť nastavenie písma + + + + Are you sure you want to delete <i>%1</i>? + Naozaj chcete vymazať <i>%1</i>? + + + + InterfacePage + + + Double click interval: + Interval pre dvojklik: + + + + Cursor flash time: + Doba blikania kurzoru: + + + + ComboBox effect: + Efekt rozbaľovacieho zoznamu: + + + + ToolTip effect: + Efekt tooltipu: + + + + ToolBox effect: + Efekt toolboxu: + + + + + ms + ms + + + + + + + Disable + Zakázať + + + + + + + Animate + Animovať + + + + + Fade + Blednutie + + + + Menu effect: + Efekt menu: + + + + Enable gui effects + Povoliť efekty rozhrania + + + + Dialog buttons layout: + Rozmiestnenie tlačítok dialógu: + + + + Menus have icons + Menu majú ikonky + + + + Dialog buttons have icons + Dialógové tlačítka majú ikonky + + + + Activate item on single-click + Aktivovať položku jediným kliknutím + + + + Toolbar button style: + + + + + Mouse wheel scroll lines: + + + + + Only display the icon + + + + + Only display the text + + + + + The text appears beside the icon + + + + + The text appears under the icon + + + + + Follow the application style + + + + + MainWindow + + + Qt5 Configuration Tool + Qt5 konfiguračný nástroj + + + + Appearance + Vzhľad + + + + Fonts + Písma + + + + Icon Theme + Téma ikon + + + + Interface + Rozhranie + + + + Style Sheets + Štýly + + + + Version: %1 + Verzia: %1 + + + + PaletteEditDialog + + + Palette Editor + Editor palety + + + + Reset palette + Nastaviť paletu znovu + + + + Build inactive palette + Vytvoriť nečinnú paletu + + + + Build disabled palette + Vytvoriť zakázanú paletu + + + + Active + Aktívna + + + + Inactive + Neaktívna + + + + Disabled + Zakázaná + + + + Dark + Tmavé + + + + Window text + Text okna + + + + Button background + Pozadie tlačítka + + + + Bright + Svetlé + + + + Less bright + Menej svetlé + + + + Less dark + Tmavé + + + + Window + Okno + + + + Shadow + Tieň + + + + Bright text + Svetlý text + + + + Button text + Text tlačítka + + + + Normal text + Normálny text + + + + Normal background + Normálne pozadie + + + + Highlight + Zvýraznenie + + + + Highlighted text + Zvýraznený text + + + + Visited link + Navštívený odkaz + + + + Default + Výchozia + + + + Tooltip background + Pozadie tooltipu + + + + Tooltip text + Text tooltipu + + + + Link + Odkaz + + + + Alternate background + Striedajúce pozadie + + + + Select Color + Vybrať farbu + + + + PreviewForm + + + Preview Window + Okno náhľadu + + + + Tab 1 + Karta 1 + + + + PushButton + Tlačítko + + + + Tab 2 + Karta 2 + + + + RadioButton + Prepínač + + + + CheckBox + Zaškrtávacie políčko + + + + QSSEditorDialog + + + %1 - Style Sheet Editor + %1 - Editor štýlov + + + + Style Sheet Editor + Editor štýlu + + + + QSSPage + + + Create + Vytvoriť + + + + + Edit + Upraviť + + + + + Rename + Premenovať + + + + + Remove + Odstrániť + + + + File name: + Názov súboru: + + + + Enter Style Sheet Name + Zadajte názov štýlu + + + + + + Error + Chyba + + + + The file "%1" already exists + Súbor "%1" už existuje + + + + Confirm Remove + Potvrdiť odstránenie + + + + Are you sure you want to remove style sheet "%1"? + Ste si istý, že chcete odstrániť štýl "%1"? + + + + Rename Style Sheet + Premenovať štýl + + + + Style sheet name: + Názov štýlu: + + + + The style sheet "%1" already exists + Štýl "%1" už existuje + + + + Unable to rename file + Nedá sa premenovať súbor + + + + main + + + Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable + + + + + The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly + + + + + Unable to find <b>libqt5ct-style.so</b> + + + + + Error + Chyba + + + diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_sr.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_sr.ts new file mode 100644 index 00000000..7dd4939f --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_sr.ts @@ -0,0 +1,709 @@ + + + + + AppearancePage + + + Style: + Стил: + + + + Preview + Преглед + + + + Active palette + Активна палета + + + + Inactive palette + Неактивна палета + + + + Disabled palette + Искључена палета + + + + Palette + Палета + + + + Default + Подразумевано + + + + Custom + Прилагођено + + + + Color scheme: + Шема боја: + + + + ... + ... + + + + Create + Креирај + + + + Edit + Измени + + + + Create a Copy + Креирај копију + + + + Rename + Преименуј + + + + Remove + Обриши + + + + + + Enter Color Scheme Name + Унеси име шеме боја + + + + + + File name: + Име фајла: + + + + + + Error + Грешка + + + + + + The color scheme "%1" already exists + Шема боја "%1" већ постоји + + + + + + Warning + Упозорење + + + + + + The color scheme "%1" is read only + Шема боја је "%1" само за читање + + + + Confirm Remove + Потврди брисање + + + + Are you sure you want to remove color scheme "%1"? + Да ли сте сигурни да желите брисање шеме боја "%1"? + + + + %1 (copy) + %1 (копирај) + + + + FontConfigDialog + + + + Font Configuration + Поставке фонта + + + + Disable automatic hinting for bold fonts + Искључи аутоматски наговештај за подебљане фонтове + + + + LCD filter: + LCD филтер: + + + + Automatic hinting + Аутоматски наговештај + + + + Hinting + Наговештај + + + + Font resolution: + Резолуција фонта: + + + + dpi + dpi + + + + Subpixel geometry: + Субпиксел геометрија: + + + + Antialiasing + Антиалиас + + + + Hinting style: + Стил наговештаја: + + + + + None + Ништа + + + + Slight + Танак + + + + Medium + Средњи + + + + Full + Пун + + + + <i>%1</i> already exists. Do you want to replace it? + <i>%1</i> већ постоји. Да ли желите да замените? + + + + FontsPage + + + + + + ... + ... + + + + General: + Опште: + + + + Fixed width: + Одређена ширина: + + + + Create fonts.conf + Креирај fonts.conf + + + + Remove fonts.conf + Обриши fonts.conf + + + + Remove Font Configuration + Обриши поставке фонта + + + + Are you sure you want to delete <i>%1</i>? + Да ли сте сигурни да желите брисање <i>%1</i>? + + + + InterfacePage + + + Double click interval: + Интервал дуплог клика: + + + + Cursor flash time: + Време за курсор: + + + + ComboBox effect: + ComboBox ефекат: + + + + ToolTip effect: + ToolTip ефекат: + + + + ToolBox effect: + ToolBox ефекат: + + + + + ms + ms + + + + + + + Disable + Искључи + + + + + + + Animate + Анимирај + + + + + Fade + Избледи + + + + Menu effect: + Мени ефекат: + + + + Enable gui effects + Омогући ефекте сучеља + + + + Dialog buttons layout: + Изглед дијалога за дугмиће: + + + + Menus have icons + Мени са иконама + + + + Dialog buttons have icons + Дијалог дугмића са иконама + + + + Activate item on single-click + Активирај ставку на један клик + + + + Toolbar button style: + Изглед дугмета у траци алата: + + + + Mouse wheel scroll lines: + Линије точкића миша: + + + + Only display the icon + Прикажи само икону + + + + Only display the text + Прикажи само текст + + + + The text appears beside the icon + Текст изнад иконе + + + + The text appears under the icon + Текст испод иконе + + + + Follow the application style + Прати изглед апликације + + + + MainWindow + + + Qt5 Configuration Tool + Qt5 конфигурациони алат + + + + Appearance + Изглед + + + + Fonts + Фонтови + + + + Icon Theme + Тема икона + + + + Interface + Сучеље + + + + Style Sheets + Стил листова + + + + Version: %1 + Верзија: %1 + + + + PaletteEditDialog + + + Palette Editor + Едитор палете + + + + Reset palette + Ресетуј палету + + + + Build inactive palette + Оформи неактивну палету + + + + Build disabled palette + Оформи искључену палету + + + + Active + Активна + + + + Inactive + Неактивна + + + + Disabled + Искључена + + + + Dark + Тамно + + + + Window text + Текст прозора + + + + Button background + Позадина дугмића + + + + Bright + Светло + + + + Less bright + Мање светло + + + + Less dark + Мање тамно + + + + Window + Прозор + + + + Shadow + Сенка + + + + Bright text + Светли текст + + + + Button text + Текст дугмића + + + + Normal text + Нормалан текст + + + + Normal background + Нормална позадина + + + + Highlight + Истакнуто + + + + Highlighted text + Истакнут текст + + + + Visited link + Посећени линк + + + + Default + Подразумевано + + + + Tooltip background + Позадина искачућег прозора + + + + Tooltip text + Текст искачућег прозора + + + + Link + Линк + + + + Alternate background + Алтернативна позадина + + + + Select Color + Одабери боју + + + + PreviewForm + + + Preview Window + Прозор за преглед + + + + Tab 1 + Таб 1 + + + + PushButton + Дугме + + + + Tab 2 + Таб 2 + + + + RadioButton + Радио дугме + + + + CheckBox + Поље за ознаку + + + + QSSEditorDialog + + + %1 - Style Sheet Editor + %1 - Едитор стила + + + + Style Sheet Editor + Едитор стила + + + + QSSPage + + + Create + Креирај + + + + + Edit + Измени + + + + + Rename + Преименуј + + + + + Remove + Обриши + + + + File name: + Име фајла + + + + Enter Style Sheet Name + Унесите име за стил + + + + + + Error + Грешка + + + + The file "%1" already exists + Фајл "%1" већ постоји + + + + Confirm Remove + Потврди брисање + + + + Are you sure you want to remove style sheet "%1"? + Да ли сте сигурни да желите брисање стила "%1"? + + + + Rename Style Sheet + Преименуј стил + + + + Style sheet name: + Име стила: + + + + The style sheet "%1" already exists + Стил "%1" већ постоји + + + + Unable to rename file + Није могуће преименовати фајл + + + + main + + + Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable + Молим обришите <b>QT_STYLE_OVERRIDE</b> променљиву окружења + + + + The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly + Променљива<b>QT_QPA_PLATFORMTHEME</b> окружења није подешена исправно + + + + Unable to find <b>libqt5ct-style.so</b> + Није могуће пронаћи <b>libqt5ct-style.so</b> + + + + Error + Грешка + + + diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_sr_BA.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_sr_BA.ts new file mode 100644 index 00000000..ecd5e9d2 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_sr_BA.ts @@ -0,0 +1,709 @@ + + + + + AppearancePage + + + Style: + + + + + Preview + + + + + Active palette + + + + + Inactive palette + + + + + Disabled palette + + + + + Palette + + + + + Default + + + + + Custom + + + + + Color scheme: + + + + + ... + + + + + Create + + + + + Edit + + + + + Create a Copy + + + + + Rename + + + + + Remove + + + + + + + Enter Color Scheme Name + + + + + + + File name: + + + + + + + Error + + + + + + + The color scheme "%1" already exists + + + + + + + Warning + + + + + + + The color scheme "%1" is read only + + + + + Confirm Remove + + + + + Are you sure you want to remove color scheme "%1"? + + + + + %1 (copy) + + + + + FontConfigDialog + + + + Font Configuration + + + + + Disable automatic hinting for bold fonts + + + + + LCD filter: + + + + + Automatic hinting + + + + + Hinting + + + + + Font resolution: + + + + + dpi + + + + + Subpixel geometry: + + + + + Antialiasing + + + + + Hinting style: + + + + + + None + + + + + Slight + + + + + Medium + + + + + Full + + + + + <i>%1</i> already exists. Do you want to replace it? + + + + + FontsPage + + + + + + ... + + + + + General: + + + + + Fixed width: + + + + + Create fonts.conf + + + + + Remove fonts.conf + + + + + Remove Font Configuration + + + + + Are you sure you want to delete <i>%1</i>? + + + + + InterfacePage + + + Double click interval: + + + + + Cursor flash time: + + + + + ComboBox effect: + + + + + ToolTip effect: + + + + + ToolBox effect: + + + + + + ms + + + + + + + + Disable + + + + + + + + Animate + + + + + + Fade + + + + + Menu effect: + + + + + Enable gui effects + + + + + Dialog buttons layout: + + + + + Menus have icons + + + + + Dialog buttons have icons + + + + + Activate item on single-click + + + + + Toolbar button style: + + + + + Mouse wheel scroll lines: + + + + + Only display the icon + + + + + Only display the text + + + + + The text appears beside the icon + + + + + The text appears under the icon + + + + + Follow the application style + + + + + MainWindow + + + Qt5 Configuration Tool + + + + + Appearance + + + + + Fonts + + + + + Icon Theme + + + + + Interface + + + + + Style Sheets + + + + + Version: %1 + + + + + PaletteEditDialog + + + Palette Editor + + + + + Reset palette + + + + + Build inactive palette + + + + + Build disabled palette + + + + + Active + + + + + Inactive + + + + + Disabled + + + + + Dark + + + + + Window text + + + + + Button background + + + + + Bright + + + + + Less bright + + + + + Less dark + + + + + Window + + + + + Shadow + + + + + Bright text + + + + + Button text + + + + + Normal text + + + + + Normal background + + + + + Highlight + + + + + Highlighted text + + + + + Visited link + + + + + Default + + + + + Tooltip background + + + + + Tooltip text + + + + + Link + + + + + Alternate background + + + + + Select Color + + + + + PreviewForm + + + Preview Window + + + + + Tab 1 + + + + + PushButton + + + + + Tab 2 + + + + + RadioButton + + + + + CheckBox + + + + + QSSEditorDialog + + + %1 - Style Sheet Editor + + + + + Style Sheet Editor + + + + + QSSPage + + + Create + + + + + + Edit + + + + + + Rename + + + + + + Remove + + + + + File name: + + + + + Enter Style Sheet Name + + + + + + + Error + + + + + The file "%1" already exists + + + + + Confirm Remove + + + + + Are you sure you want to remove style sheet "%1"? + + + + + Rename Style Sheet + + + + + Style sheet name: + + + + + The style sheet "%1" already exists + + + + + Unable to rename file + + + + + main + + + Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable + + + + + The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly + + + + + Unable to find <b>libqt5ct-style.so</b> + + + + + Error + + + + diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_sr_RS.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_sr_RS.ts new file mode 100644 index 00000000..2d4c06fa --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_sr_RS.ts @@ -0,0 +1,709 @@ + + + + + AppearancePage + + + Style: + + + + + Preview + + + + + Active palette + + + + + Inactive palette + + + + + Disabled palette + + + + + Palette + + + + + Default + + + + + Custom + + + + + Color scheme: + + + + + ... + + + + + Create + + + + + Edit + + + + + Create a Copy + + + + + Rename + + + + + Remove + + + + + + + Enter Color Scheme Name + + + + + + + File name: + + + + + + + Error + + + + + + + The color scheme "%1" already exists + + + + + + + Warning + + + + + + + The color scheme "%1" is read only + + + + + Confirm Remove + + + + + Are you sure you want to remove color scheme "%1"? + + + + + %1 (copy) + + + + + FontConfigDialog + + + + Font Configuration + + + + + Disable automatic hinting for bold fonts + + + + + LCD filter: + + + + + Automatic hinting + + + + + Hinting + + + + + Font resolution: + + + + + dpi + + + + + Subpixel geometry: + + + + + Antialiasing + + + + + Hinting style: + + + + + + None + + + + + Slight + + + + + Medium + + + + + Full + + + + + <i>%1</i> already exists. Do you want to replace it? + + + + + FontsPage + + + + + + ... + + + + + General: + + + + + Fixed width: + + + + + Create fonts.conf + + + + + Remove fonts.conf + + + + + Remove Font Configuration + + + + + Are you sure you want to delete <i>%1</i>? + + + + + InterfacePage + + + Double click interval: + + + + + Cursor flash time: + + + + + ComboBox effect: + + + + + ToolTip effect: + + + + + ToolBox effect: + + + + + + ms + + + + + + + + Disable + + + + + + + + Animate + + + + + + Fade + + + + + Menu effect: + + + + + Enable gui effects + + + + + Dialog buttons layout: + + + + + Menus have icons + + + + + Dialog buttons have icons + + + + + Activate item on single-click + + + + + Toolbar button style: + + + + + Mouse wheel scroll lines: + + + + + Only display the icon + + + + + Only display the text + + + + + The text appears beside the icon + + + + + The text appears under the icon + + + + + Follow the application style + + + + + MainWindow + + + Qt5 Configuration Tool + + + + + Appearance + + + + + Fonts + + + + + Icon Theme + + + + + Interface + + + + + Style Sheets + + + + + Version: %1 + + + + + PaletteEditDialog + + + Palette Editor + + + + + Reset palette + + + + + Build inactive palette + + + + + Build disabled palette + + + + + Active + + + + + Inactive + + + + + Disabled + + + + + Dark + + + + + Window text + + + + + Button background + + + + + Bright + + + + + Less bright + + + + + Less dark + + + + + Window + + + + + Shadow + + + + + Bright text + + + + + Button text + + + + + Normal text + + + + + Normal background + + + + + Highlight + + + + + Highlighted text + + + + + Visited link + + + + + Default + + + + + Tooltip background + + + + + Tooltip text + + + + + Link + + + + + Alternate background + + + + + Select Color + + + + + PreviewForm + + + Preview Window + + + + + Tab 1 + + + + + PushButton + + + + + Tab 2 + + + + + RadioButton + + + + + CheckBox + + + + + QSSEditorDialog + + + %1 - Style Sheet Editor + + + + + Style Sheet Editor + + + + + QSSPage + + + Create + + + + + + Edit + + + + + + Rename + + + + + + Remove + + + + + File name: + + + + + Enter Style Sheet Name + + + + + + + Error + + + + + The file "%1" already exists + + + + + Confirm Remove + + + + + Are you sure you want to remove style sheet "%1"? + + + + + Rename Style Sheet + + + + + Style sheet name: + + + + + The style sheet "%1" already exists + + + + + Unable to rename file + + + + + main + + + Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable + + + + + The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly + + + + + Unable to find <b>libqt5ct-style.so</b> + + + + + Error + + + + diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_tr.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_tr.ts new file mode 100644 index 00000000..eba0fa90 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_tr.ts @@ -0,0 +1,709 @@ + + + + + AppearancePage + + + Style: + + + + + Preview + + + + + Active palette + + + + + Inactive palette + + + + + Disabled palette + + + + + Palette + + + + + Default + + + + + Custom + + + + + Color scheme: + + + + + ... + + + + + Create + + + + + Edit + + + + + Create a Copy + + + + + Rename + + + + + Remove + + + + + + + Enter Color Scheme Name + + + + + + + File name: + + + + + + + Error + + + + + + + The color scheme "%1" already exists + + + + + + + Warning + + + + + + + The color scheme "%1" is read only + + + + + Confirm Remove + + + + + Are you sure you want to remove color scheme "%1"? + + + + + %1 (copy) + + + + + FontConfigDialog + + + + Font Configuration + + + + + Disable automatic hinting for bold fonts + + + + + LCD filter: + + + + + Automatic hinting + + + + + Hinting + + + + + Font resolution: + + + + + dpi + + + + + Subpixel geometry: + + + + + Antialiasing + + + + + Hinting style: + + + + + + None + + + + + Slight + + + + + Medium + + + + + Full + + + + + <i>%1</i> already exists. Do you want to replace it? + + + + + FontsPage + + + + + + ... + + + + + General: + + + + + Fixed width: + + + + + Create fonts.conf + + + + + Remove fonts.conf + + + + + Remove Font Configuration + + + + + Are you sure you want to delete <i>%1</i>? + + + + + InterfacePage + + + Double click interval: + + + + + Cursor flash time: + + + + + ComboBox effect: + + + + + ToolTip effect: + + + + + ToolBox effect: + + + + + + ms + + + + + + + + Disable + + + + + + + + Animate + + + + + + Fade + + + + + Menu effect: + + + + + Enable gui effects + + + + + Dialog buttons layout: + + + + + Menus have icons + + + + + Dialog buttons have icons + + + + + Activate item on single-click + + + + + Toolbar button style: + + + + + Mouse wheel scroll lines: + + + + + Only display the icon + + + + + Only display the text + + + + + The text appears beside the icon + + + + + The text appears under the icon + + + + + Follow the application style + + + + + MainWindow + + + Qt5 Configuration Tool + + + + + Appearance + + + + + Fonts + + + + + Icon Theme + + + + + Interface + + + + + Style Sheets + + + + + Version: %1 + + + + + PaletteEditDialog + + + Palette Editor + + + + + Reset palette + + + + + Build inactive palette + + + + + Build disabled palette + + + + + Active + + + + + Inactive + + + + + Disabled + + + + + Dark + + + + + Window text + + + + + Button background + + + + + Bright + + + + + Less bright + + + + + Less dark + + + + + Window + + + + + Shadow + + + + + Bright text + + + + + Button text + + + + + Normal text + + + + + Normal background + + + + + Highlight + + + + + Highlighted text + + + + + Visited link + + + + + Default + + + + + Tooltip background + + + + + Tooltip text + + + + + Link + + + + + Alternate background + + + + + Select Color + + + + + PreviewForm + + + Preview Window + + + + + Tab 1 + + + + + PushButton + + + + + Tab 2 + + + + + RadioButton + + + + + CheckBox + + + + + QSSEditorDialog + + + %1 - Style Sheet Editor + + + + + Style Sheet Editor + + + + + QSSPage + + + Create + + + + + + Edit + + + + + + Rename + + + + + + Remove + + + + + File name: + + + + + Enter Style Sheet Name + + + + + + + Error + + + + + The file "%1" already exists + + + + + Confirm Remove + + + + + Are you sure you want to remove style sheet "%1"? + + + + + Rename Style Sheet + + + + + Style sheet name: + + + + + The style sheet "%1" already exists + + + + + Unable to rename file + + + + + main + + + Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable + + + + + The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly + + + + + Unable to find <b>libqt5ct-style.so</b> + + + + + Error + + + + diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_uk_UA.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_uk_UA.ts new file mode 100644 index 00000000..7788328b --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_uk_UA.ts @@ -0,0 +1,709 @@ + + + + + AppearancePage + + + Style: + + + + + Preview + + + + + Active palette + + + + + Inactive palette + + + + + Disabled palette + + + + + Palette + + + + + Default + + + + + Custom + + + + + Color scheme: + + + + + ... + + + + + Create + + + + + Edit + + + + + Create a Copy + + + + + Rename + + + + + Remove + + + + + + + Enter Color Scheme Name + + + + + + + File name: + + + + + + + Error + + + + + + + The color scheme "%1" already exists + + + + + + + Warning + + + + + + + The color scheme "%1" is read only + + + + + Confirm Remove + + + + + Are you sure you want to remove color scheme "%1"? + + + + + %1 (copy) + + + + + FontConfigDialog + + + + Font Configuration + + + + + Disable automatic hinting for bold fonts + + + + + LCD filter: + + + + + Automatic hinting + + + + + Hinting + + + + + Font resolution: + + + + + dpi + + + + + Subpixel geometry: + + + + + Antialiasing + + + + + Hinting style: + + + + + + None + + + + + Slight + + + + + Medium + + + + + Full + + + + + <i>%1</i> already exists. Do you want to replace it? + + + + + FontsPage + + + + + + ... + + + + + General: + + + + + Fixed width: + + + + + Create fonts.conf + + + + + Remove fonts.conf + + + + + Remove Font Configuration + + + + + Are you sure you want to delete <i>%1</i>? + + + + + InterfacePage + + + Double click interval: + + + + + Cursor flash time: + + + + + ComboBox effect: + + + + + ToolTip effect: + + + + + ToolBox effect: + + + + + + ms + + + + + + + + Disable + + + + + + + + Animate + + + + + + Fade + + + + + Menu effect: + + + + + Enable gui effects + + + + + Dialog buttons layout: + + + + + Menus have icons + + + + + Dialog buttons have icons + + + + + Activate item on single-click + + + + + Toolbar button style: + + + + + Mouse wheel scroll lines: + + + + + Only display the icon + + + + + Only display the text + + + + + The text appears beside the icon + + + + + The text appears under the icon + + + + + Follow the application style + + + + + MainWindow + + + Qt5 Configuration Tool + + + + + Appearance + + + + + Fonts + + + + + Icon Theme + + + + + Interface + + + + + Style Sheets + + + + + Version: %1 + + + + + PaletteEditDialog + + + Palette Editor + + + + + Reset palette + + + + + Build inactive palette + + + + + Build disabled palette + + + + + Active + + + + + Inactive + + + + + Disabled + + + + + Dark + + + + + Window text + + + + + Button background + + + + + Bright + + + + + Less bright + + + + + Less dark + + + + + Window + + + + + Shadow + + + + + Bright text + + + + + Button text + + + + + Normal text + + + + + Normal background + + + + + Highlight + + + + + Highlighted text + + + + + Visited link + + + + + Default + + + + + Tooltip background + + + + + Tooltip text + + + + + Link + + + + + Alternate background + + + + + Select Color + + + + + PreviewForm + + + Preview Window + + + + + Tab 1 + + + + + PushButton + + + + + Tab 2 + + + + + RadioButton + + + + + CheckBox + + + + + QSSEditorDialog + + + %1 - Style Sheet Editor + + + + + Style Sheet Editor + + + + + QSSPage + + + Create + + + + + + Edit + + + + + + Rename + + + + + + Remove + + + + + File name: + + + + + Enter Style Sheet Name + + + + + + + Error + + + + + The file "%1" already exists + + + + + Confirm Remove + + + + + Are you sure you want to remove style sheet "%1"? + + + + + Rename Style Sheet + + + + + Style sheet name: + + + + + The style sheet "%1" already exists + + + + + Unable to rename file + + + + + main + + + Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable + + + + + The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly + + + + + Unable to find <b>libqt5ct-style.so</b> + + + + + Error + + + + diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_zh_CN.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_zh_CN.ts new file mode 100644 index 00000000..c3c8d255 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_zh_CN.ts @@ -0,0 +1,709 @@ + + + + + AppearancePage + + + Style: + 风格: + + + + Preview + 预览 + + + + Active palette + 激活状态的调色板 + + + + Inactive palette + 非激活状态的调色板 + + + + Disabled palette + 失效状态的调色板 + + + + Palette + 调色板 + + + + Default + 缺省 + + + + Custom + 自定义 + + + + Color scheme: + 颜色方案: + + + + ... + ... + + + + Create + 创建 + + + + Edit + 编辑 + + + + Create a Copy + 创建副本 + + + + Rename + 重命名 + + + + Remove + 移除 + + + + + + Enter Color Scheme Name + 输入颜色方案名称 + + + + + + File name: + 文件名: + + + + + + Error + 错误 + + + + + + The color scheme "%1" already exists + 颜色方案 "%1" 已经存在 + + + + + + Warning + 警告 + + + + + + The color scheme "%1" is read only + 颜色方案 "%1" 是只读状态 + + + + Confirm Remove + 确认移除 + + + + Are you sure you want to remove color scheme "%1"? + 您确定要移除颜色方案 "%1" 吗? + + + + %1 (copy) + %1(拷贝) + + + + FontConfigDialog + + + + Font Configuration + 字体配置 + + + + Disable automatic hinting for bold fonts + 禁用粗体自动微调 + + + + LCD filter: + LCD 过滤器: + + + + Automatic hinting + 自动微调 + + + + Hinting + 微调 + + + + Font resolution: + 字体分辨率 + + + + dpi + dpi + + + + Subpixel geometry: + 子像素排列: + + + + Antialiasing + 抗锯齿 + + + + Hinting style: + 微调风格 + + + + + None + + + + + Slight + 轻微 + + + + Medium + 中等 + + + + Full + 全部 + + + + <i>%1</i> already exists. Do you want to replace it? + <i>%1</i> 已经存在。您想要取代它吗? + + + + FontsPage + + + + + + ... + ... + + + + General: + 一般: + + + + Fixed width: + 固定宽度: + + + + Create fonts.conf + 创建 fonts.conf + + + + Remove fonts.conf + 移除 fonts.conf + + + + Remove Font Configuration + 移除字体配置 + + + + Are you sure you want to delete <i>%1</i>? + 您确定要删除<i>%1</i>吗? + + + + InterfacePage + + + Double click interval: + 双击间隔: + + + + Cursor flash time: + 光标闪烁间隔: + + + + ComboBox effect: + 下拉框效果: + + + + ToolTip effect: + 提示效果: + + + + ToolBox effect: + 工具箱效果: + + + + + ms + 毫秒 + + + + + + + Disable + 禁用 + + + + + + + Animate + 动画 + + + + + Fade + 阴影 + + + + Menu effect: + 菜单效果: + + + + Enable gui effects + 启用GUI效果 + + + + Dialog buttons layout: + 对话框按钮布局: + + + + Menus have icons + 有图标的菜单 + + + + Dialog buttons have icons + 有图标的对话框按钮 + + + + Activate item on single-click + + + + + Toolbar button style: + + + + + Mouse wheel scroll lines: + + + + + Only display the icon + + + + + Only display the text + + + + + The text appears beside the icon + + + + + The text appears under the icon + + + + + Follow the application style + + + + + MainWindow + + + Qt5 Configuration Tool + Qt5 配置工具 + + + + Appearance + 外观 + + + + Fonts + 字体 + + + + Icon Theme + 图标主题 + + + + Interface + 界面 + + + + Style Sheets + 样式表 + + + + Version: %1 + 版本:%1 + + + + PaletteEditDialog + + + Palette Editor + 调色板编辑器 + + + + Reset palette + 重置调色板 + + + + Build inactive palette + 构建非激活的调色板 + + + + Build disabled palette + 构建禁用状态调色板 + + + + Active + 激活 + + + + Inactive + 非激活 + + + + Disabled + 已禁用 + + + + Dark + + + + + Window text + 窗口文字 + + + + Button background + 按钮背景 + + + + Bright + + + + + Less bright + 较不亮 + + + + Less dark + 较不暗 + + + + Window + 窗口 + + + + Shadow + 阴影 + + + + Bright text + 亮文字 + + + + Button text + 按钮文字 + + + + Normal text + 普通文字 + + + + Normal background + 普通背景 + + + + Highlight + 高亮 + + + + Highlighted text + 高亮文字 + + + + Visited link + 已访问的链接 + + + + Default + 缺省 + + + + Tooltip background + 提示语背景 + + + + Tooltip text + 提示语文字 + + + + Link + 链接 + + + + Alternate background + 备用背景 + + + + Select Color + 选择颜色 + + + + PreviewForm + + + Preview Window + 预览窗口 + + + + Tab 1 + 页面1 + + + + PushButton + 按钮 + + + + Tab 2 + 页面2 + + + + RadioButton + 单选按钮 + + + + CheckBox + 复选框 + + + + QSSEditorDialog + + + %1 - Style Sheet Editor + %1 - 样式表编辑器 + + + + Style Sheet Editor + 样式表编辑器 + + + + QSSPage + + + Create + 新建 + + + + + Edit + 编辑 + + + + + Rename + 重命名 + + + + + Remove + 删除 + + + + File name: + 文件名: + + + + Enter Style Sheet Name + 输入样式表名称 + + + + + + Error + 错误 + + + + The file "%1" already exists + 文件 “%1” 已经存在 + + + + Confirm Remove + 确定删除 + + + + Are you sure you want to remove style sheet "%1"? + 您确定要移除样式表 "%1" 吗? + + + + Rename Style Sheet + 重命名样式表 + + + + Style sheet name: + 样式表名称: + + + + The style sheet "%1" already exists + 样式表 “%1” 已经存在 + + + + Unable to rename file + 无法重命名文件 + + + + main + + + Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable + + + + + The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly + + + + + Unable to find <b>libqt5ct-style.so</b> + + + + + Error + 错误 + + + diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_zh_TW.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_zh_TW.ts new file mode 100644 index 00000000..ff9a4b7f --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_zh_TW.ts @@ -0,0 +1,709 @@ + + + + + AppearancePage + + + Style: + 風格: + + + + Preview + 預覽 + + + + Active palette + 作用中色彩 + + + + Inactive palette + 非作用中色彩 + + + + Disabled palette + 已停用的色彩 + + + + Palette + 色彩 + + + + Default + 預設 + + + + Custom + 自訂 + + + + Color scheme: + 顏色方案: + + + + ... + ... + + + + Create + 建立 + + + + Edit + 編輯 + + + + Create a Copy + 建立一份拷貝 + + + + Rename + 重新命名 + + + + Remove + 移除 + + + + + + Enter Color Scheme Name + 輸入顏色方案名稱 + + + + + + File name: + 檔案名稱: + + + + + + Error + 錯誤 + + + + + + The color scheme "%1" already exists + 顏色方案「%1」已經存在 + + + + + + Warning + 警告 + + + + + + The color scheme "%1" is read only + 顏色方案「%1」為唯讀狀態 + + + + Confirm Remove + 確認移除 + + + + Are you sure you want to remove color scheme "%1"? + 您是否確定要移除顏色方案「%1」? + + + + %1 (copy) + %1(拷貝) + + + + FontConfigDialog + + + + Font Configuration + 字型設定 + + + + Disable automatic hinting for bold fonts + 停用粗體字的自動微調 + + + + LCD filter: + LCD 過濾器: + + + + Automatic hinting + 自動微調 + + + + Hinting + 微調 + + + + Font resolution: + 字型解析度: + + + + dpi + dpi + + + + Subpixel geometry: + 子像素排列方式: + + + + Antialiasing + 反鉅齒 + + + + Hinting style: + 微調風格: + + + + + None + + + + + Slight + 輕微 + + + + Medium + 中等 + + + + Full + 完整 + + + + <i>%1</i> already exists. Do you want to replace it? + <i>%1</i> 已經存在。您想要取代它嗎? + + + + FontsPage + + + + + + ... + ... + + + + General: + 一般: + + + + Fixed width: + 固定寬度: + + + + Create fonts.conf + 建立 fonts.conf + + + + Remove fonts.conf + 移除 fonts.conf + + + + Remove Font Configuration + 移除字型設定 + + + + Are you sure you want to delete <i>%1</i>? + 您確定真的要刪除 <i>%1</i> 嗎? + + + + InterfacePage + + + Double click interval: + 雙敲擊間隔: + + + + Cursor flash time: + 游標閃爍時間: + + + + ComboBox effect: + 下拉式選單效果: + + + + ToolTip effect: + 工具提示效果: + + + + ToolBox effect: + 工具箱效果: + + + + + ms + 毫秒 + + + + + + + Disable + 停用 + + + + + + + Animate + 動畫 + + + + + Fade + 陰影 + + + + Menu effect: + 選單效果: + + + + Enable gui effects + 啟用圖形使用者介面效果 + + + + Dialog buttons layout: + 對話框按鈕佈局: + + + + Menus have icons + 有圖示的選單 + + + + Dialog buttons have icons + 有圖示的對話框按鈕 + + + + Activate item on single-click + 單擊啟用項目 + + + + Toolbar button style: + 工具列按鈕風格: + + + + Mouse wheel scroll lines: + 滑鼠滾輪捲動軸: + + + + Only display the icon + 僅顯示圖示 + + + + Only display the text + 僅顯示文字 + + + + The text appears beside the icon + 文字在圖示旁 + + + + The text appears under the icon + 文字在圖示下 + + + + Follow the application style + 跟隨應用程式風格 + + + + MainWindow + + + Qt5 Configuration Tool + Qt5 設定工具 + + + + Appearance + 外觀 + + + + Fonts + 字型 + + + + Icon Theme + 圖示主題 + + + + Interface + 介面 + + + + Style Sheets + 風格樣式表 + + + + Version: %1 + 版本: %1 + + + + PaletteEditDialog + + + Palette Editor + 色彩編輯器 + + + + Reset palette + 重置色彩 + + + + Build inactive palette + 構建非作用中的色彩 + + + + Build disabled palette + 構建已停用的色彩 + + + + Active + 作用中 + + + + Inactive + 非作用中 + + + + Disabled + 已停用 + + + + Dark + 黑暗 + + + + Window text + 視窗文字 + + + + Button background + 按鈕背景 + + + + Bright + + + + + Less bright + 較不亮 + + + + Less dark + 較不黑暗 + + + + Window + 視窗 + + + + Shadow + 陰影 + + + + Bright text + 亮文字 + + + + Button text + 按鈕文字 + + + + Normal text + 一般文字 + + + + Normal background + 一般背景 + + + + Highlight + 突顯 + + + + Highlighted text + 突顯的文字 + + + + Visited link + 已造訪的連結 + + + + Default + 預設 + + + + Tooltip background + 工具提示背景 + + + + Tooltip text + 工具提示文字 + + + + Link + 連結 + + + + Alternate background + 備用背景 + + + + Select Color + 選取顏色 + + + + PreviewForm + + + Preview Window + 預覽視窗 + + + + Tab 1 + 分頁 1 + + + + PushButton + 突出按鈕 + + + + Tab 2 + 分頁 2 + + + + RadioButton + 無線電按鈕 + + + + CheckBox + 核取方塊 + + + + QSSEditorDialog + + + %1 - Style Sheet Editor + %1 - 風格樣式表編輯器 + + + + Style Sheet Editor + 風格樣式表編輯器 + + + + QSSPage + + + Create + 建立 + + + + + Edit + 編輯 + + + + + Rename + 重新命名 + + + + + Remove + 移除 + + + + File name: + 檔案名稱: + + + + Enter Style Sheet Name + 輸入風格樣式表名稱 + + + + + + Error + 錯誤 + + + + The file "%1" already exists + 檔案 "%1" 已經存在 + + + + Confirm Remove + 確認移除 + + + + Are you sure you want to remove style sheet "%1"? + 您是否確定要移除風格樣式表「%1」? + + + + Rename Style Sheet + 重新命名風格樣式表 + + + + Style sheet name: + 風格樣式表名稱: + + + + The style sheet "%1" already exists + 風格樣式表 "%1" 已經存在 + + + + Unable to rename file + 無法重新命名檔案 + + + + main + + + Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable + 請移除 <b>QT_STYLE_OVERRIDE</b> 環境變數 + + + + The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly + <b>QT_QPA_PLATFORMTHEME</b> 環境變數未正確設定 + + + + Unable to find <b>libqt5ct-style.so</b> + 找不到 <b>libqt5ct-style.so</b> + + + + Error + 錯誤 + + + diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/translations.qrc b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/translations.qrc new file mode 100644 index 00000000..2cf79b6b --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/translations.qrc @@ -0,0 +1,36 @@ + + + + qt5ct_ru.qm + qt5ct_uk_UA.qm + qt5ct_zh_CN.qm + qt5ct_zh_TW.qm + qt5ct_tr.qm + qt5ct_cs.qm + qt5ct_pt_BR.qm + qt5ct_pt.qm + qt5ct_de.qm + qt5ct_pl.qm + qt5ct_fr.qm + qt5ct_it.qm + qt5ct_it_IT.qm + qt5ct_kk.qm + qt5ct_lt.qm + qt5ct_hu.qm + qt5ct_nl.qm + qt5ct_ja.qm + qt5ct_sk.qm + qt5ct_es_ES.qm + qt5ct_es.qm + qt5ct_he.qm + qt5ct_gl_ES.qm + qt5ct_sr_BA.qm + qt5ct_sr_RS.qm + qt5ct_bg.qm + qt5ct_nl_NL.qm + qt5ct_el.qm + qt5ct_sr.qm + qt5ct_ca.qm + qt5ct_ar.qm + + diff --git a/src-qt5/core/lumina-theme-engine/test.sh b/src-qt5/core/lumina-theme-engine/test.sh new file mode 100755 index 00000000..d4e55d5d --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/test.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +MYDIR=$(dirname $0) + +mkdir -p ${MYDIR}/src/qt5ct/styles +ln -s "../../qt5ct-style/libqt5ct-style.so" "${MYDIR}/src/qt5ct/styles/" +export QT_DEBUG_PLUGINS=1 +export QT_QPA_PLATFORMTHEME=qt5ct +export QT_QPA_PLATFORM_PLUGIN_PATH=${MYDIR}/src/qt5ct-qtplugin +${MYDIR}/src/qt5ct/qt5ct +rm -rf ${MYDIR}/src/qt5ct/styles/ diff --git a/src-qt5/core/lumina-theme-engine/utils/update_ts.sh b/src-qt5/core/lumina-theme-engine/utils/update_ts.sh new file mode 100755 index 00000000..a19a955a --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/utils/update_ts.sh @@ -0,0 +1,40 @@ +#!/bin/sh + +LOCALES='en ru uk_UA zh_CN zh_TW tr cs pt_BR pt de pl fr it it_IT kk lt hu nl ja sk es_ES es he gl_ES sr_BA sr_RS bg nl_NL el sr ca ar' + +echo "Locales: ${LOCALES}" + +for tr_dir in `find ../src/ -type d -name "translations"` +do + + plug_name=`echo $tr_dir | cut -d '/' -f 3` + + echo "Updating ${plug_name}" + + ts_files='' + qm_files='' + + for code in $LOCALES + do + ts_files="${ts_files} ${tr_dir}/${plug_name}_${code}.ts" + if [ "${code}" != "en" ]; then + qm_files="${qm_files} ${plug_name}_${code}.qm" + fi + done + qrc_file="${tr_dir}/translations.qrc" + + + /opt/qt56/bin/lupdate -no-obsolete -silent -extensions "cpp,ui" ${tr_dir}/../ -ts ${ts_files} + + + + echo "" > $qrc_file + echo "" >> $qrc_file + echo " " >> $qrc_file + for qm_file in $qm_files + do + echo " ${qm_file}" >> $qrc_file; + done + echo " " >> $qrc_file + echo "" >> $qrc_file +done diff --git a/src-qt5/core/lumina-theme-engine/utils/update_tx.sh b/src-qt5/core/lumina-theme-engine/utils/update_tx.sh new file mode 100755 index 00000000..82f36743 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/utils/update_tx.sh @@ -0,0 +1,37 @@ +#!/bin/sh + +PROJECT_NAME=qt5ct +TX_CONFIG="../.tx/config" + +echo "[main]" > ${TX_CONFIG} +echo "host = https://www.transifex.com" >> ${TX_CONFIG} +echo "" >> ${TX_CONFIG} + +for tr_dir in `find ../src/ -type d -name "translations"` +do + + plug_name=`echo $tr_dir | cut -d '/' -f 3` + + echo "Updating ${plug_name}" + + + file_filter=`echo ${tr_dir} | sed 's/..\///'` + echo "[${PROJECT_NAME}.${plug_name}]" >> ${TX_CONFIG} + echo "file_filter = ${file_filter}/${plug_name}_.ts" >> ${TX_CONFIG} + echo "source_lang = en" >> ${TX_CONFIG} + echo "source_file = ${file_filter}/${plug_name}_en.ts" >> ${TX_CONFIG} + echo "type = QT" >> ${TX_CONFIG} + echo "" >> ${TX_CONFIG} + +done + + +for RESOURCE_NAME in qt5ct +do + echo "[${PROJECT_NAME}.${RESOURCE_NAME}-desktop]" >> ${TX_CONFIG} + echo "file_filter = src/qt5ct/desktop-translations/${RESOURCE_NAME}_.desktop.in" >> ${TX_CONFIG} + echo "source_lang = en" >> ${TX_CONFIG} + echo "source_file = src/qt5ct/${RESOURCE_NAME}.desktop" >> ${TX_CONFIG} + echo "type = DESKTOP" >> ${TX_CONFIG} + echo "" >> ${TX_CONFIG} +done -- cgit From ff091d9984fa5bd70dab07ed3b59aea9d753beb4 Mon Sep 17 00:00:00 2001 From: q5sys Date: Tue, 18 Jul 2017 16:03:16 -0400 Subject: removal of qt5ct utils --- .../core/lumina-theme-engine/utils/update_ts.sh | 40 ---------------------- .../core/lumina-theme-engine/utils/update_tx.sh | 37 -------------------- 2 files changed, 77 deletions(-) delete mode 100755 src-qt5/core/lumina-theme-engine/utils/update_ts.sh delete mode 100755 src-qt5/core/lumina-theme-engine/utils/update_tx.sh (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-theme-engine/utils/update_ts.sh b/src-qt5/core/lumina-theme-engine/utils/update_ts.sh deleted file mode 100755 index a19a955a..00000000 --- a/src-qt5/core/lumina-theme-engine/utils/update_ts.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/sh - -LOCALES='en ru uk_UA zh_CN zh_TW tr cs pt_BR pt de pl fr it it_IT kk lt hu nl ja sk es_ES es he gl_ES sr_BA sr_RS bg nl_NL el sr ca ar' - -echo "Locales: ${LOCALES}" - -for tr_dir in `find ../src/ -type d -name "translations"` -do - - plug_name=`echo $tr_dir | cut -d '/' -f 3` - - echo "Updating ${plug_name}" - - ts_files='' - qm_files='' - - for code in $LOCALES - do - ts_files="${ts_files} ${tr_dir}/${plug_name}_${code}.ts" - if [ "${code}" != "en" ]; then - qm_files="${qm_files} ${plug_name}_${code}.qm" - fi - done - qrc_file="${tr_dir}/translations.qrc" - - - /opt/qt56/bin/lupdate -no-obsolete -silent -extensions "cpp,ui" ${tr_dir}/../ -ts ${ts_files} - - - - echo "" > $qrc_file - echo "" >> $qrc_file - echo " " >> $qrc_file - for qm_file in $qm_files - do - echo " ${qm_file}" >> $qrc_file; - done - echo " " >> $qrc_file - echo "" >> $qrc_file -done diff --git a/src-qt5/core/lumina-theme-engine/utils/update_tx.sh b/src-qt5/core/lumina-theme-engine/utils/update_tx.sh deleted file mode 100755 index 82f36743..00000000 --- a/src-qt5/core/lumina-theme-engine/utils/update_tx.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/sh - -PROJECT_NAME=qt5ct -TX_CONFIG="../.tx/config" - -echo "[main]" > ${TX_CONFIG} -echo "host = https://www.transifex.com" >> ${TX_CONFIG} -echo "" >> ${TX_CONFIG} - -for tr_dir in `find ../src/ -type d -name "translations"` -do - - plug_name=`echo $tr_dir | cut -d '/' -f 3` - - echo "Updating ${plug_name}" - - - file_filter=`echo ${tr_dir} | sed 's/..\///'` - echo "[${PROJECT_NAME}.${plug_name}]" >> ${TX_CONFIG} - echo "file_filter = ${file_filter}/${plug_name}_.ts" >> ${TX_CONFIG} - echo "source_lang = en" >> ${TX_CONFIG} - echo "source_file = ${file_filter}/${plug_name}_en.ts" >> ${TX_CONFIG} - echo "type = QT" >> ${TX_CONFIG} - echo "" >> ${TX_CONFIG} - -done - - -for RESOURCE_NAME in qt5ct -do - echo "[${PROJECT_NAME}.${RESOURCE_NAME}-desktop]" >> ${TX_CONFIG} - echo "file_filter = src/qt5ct/desktop-translations/${RESOURCE_NAME}_.desktop.in" >> ${TX_CONFIG} - echo "source_lang = en" >> ${TX_CONFIG} - echo "source_file = src/qt5ct/${RESOURCE_NAME}.desktop" >> ${TX_CONFIG} - echo "type = DESKTOP" >> ${TX_CONFIG} - echo "" >> ${TX_CONFIG} -done -- cgit From b87de7411202543105ecf1751e22236e9e1f7a8b Mon Sep 17 00:00:00 2001 From: q5sys Date: Tue, 18 Jul 2017 16:03:37 -0400 Subject: removal of qt5ct test.sh --- src-qt5/core/lumina-theme-engine/test.sh | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100755 src-qt5/core/lumina-theme-engine/test.sh (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-theme-engine/test.sh b/src-qt5/core/lumina-theme-engine/test.sh deleted file mode 100755 index d4e55d5d..00000000 --- a/src-qt5/core/lumina-theme-engine/test.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -MYDIR=$(dirname $0) - -mkdir -p ${MYDIR}/src/qt5ct/styles -ln -s "../../qt5ct-style/libqt5ct-style.so" "${MYDIR}/src/qt5ct/styles/" -export QT_DEBUG_PLUGINS=1 -export QT_QPA_PLATFORMTHEME=qt5ct -export QT_QPA_PLATFORM_PLUGIN_PATH=${MYDIR}/src/qt5ct-qtplugin -${MYDIR}/src/qt5ct/qt5ct -rm -rf ${MYDIR}/src/qt5ct/styles/ -- cgit From 169d16b0afcbb144ee6125c0314e714f6478eace Mon Sep 17 00:00:00 2001 From: q5sys Date: Tue, 18 Jul 2017 16:04:17 -0400 Subject: removal of ChangeLog.svn --- src-qt5/core/lumina-theme-engine/ChangeLog.svn | 1618 ------------------------ 1 file changed, 1618 deletions(-) delete mode 100644 src-qt5/core/lumina-theme-engine/ChangeLog.svn (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-theme-engine/ChangeLog.svn b/src-qt5/core/lumina-theme-engine/ChangeLog.svn deleted file mode 100644 index 62890517..00000000 --- a/src-qt5/core/lumina-theme-engine/ChangeLog.svn +++ /dev/null @@ -1,1618 +0,0 @@ ------------------------------------------------------------------------- -r414 | trialuser02 | 2017-05-29 21:52:01 +0300 (Пн., 29 мая 2017) | 1 line - -updated changelog ------------------------------------------------------------------------- -r413 | trialuser02 | 2017-05-29 21:49:43 +0300 (Пн., 29 мая 2017) | 1 line - -updated Hebrew translation (Elkana Birdugo) ------------------------------------------------------------------------- -r412 | trialuser02 | 2017-05-24 13:06:35 +0300 (Ср., 24 мая 2017) | 1 line - -updated changelog ------------------------------------------------------------------------- -r411 | trialuser02 | 2017-05-24 12:29:20 +0300 (Ср., 24 мая 2017) | 2 lines - -fixed Qt 5.6 support (#37) - ------------------------------------------------------------------------- -r409 | trialuser02 | 2017-05-17 08:12:59 +0300 (Ср., 17 мая 2017) | 1 line - -fixed build without dbus support (coacher, #36) ------------------------------------------------------------------------- -r408 | trialuser02 | 2017-05-14 13:51:09 +0300 (Вс., 14 мая 2017) | 1 line - -version bump ------------------------------------------------------------------------- -r406 | trialuser02 | 2017-05-12 23:10:11 +0300 (Пт., 12 мая 2017) | 1 line - -updated changelog ------------------------------------------------------------------------- -r405 | trialuser02 | 2017-05-12 23:05:35 +0300 (Пт., 12 мая 2017) | 1 line - -fixed Russian translation ------------------------------------------------------------------------- -r404 | trialuser02 | 2017-05-12 22:44:16 +0300 (Пт., 12 мая 2017) | 1 line - -fixed distclean target ------------------------------------------------------------------------- -r403 | trialuser02 | 2017-05-12 22:40:53 +0300 (Пт., 12 мая 2017) | 2 lines - -coding style fixes - ------------------------------------------------------------------------- -r402 | trialuser02 | 2017-05-12 22:32:23 +0300 (Пт., 12 мая 2017) | 2 lines - -added global menu support (#34) - ------------------------------------------------------------------------- -r401 | trialuser02 | 2017-03-31 22:42:24 +0300 (Пт., 31 марта 2017) | 1 line - -updated Greek translation (Dimitrios Glentadakis) ------------------------------------------------------------------------- -r400 | trialuser02 | 2017-03-31 22:39:05 +0300 (Пт., 31 марта 2017) | 1 line - -updated Czech translation (fri) ------------------------------------------------------------------------- -r399 | trialuser02 | 2017-03-28 11:49:16 +0300 (Вт., 28 марта 2017) | 1 line - -version bump ------------------------------------------------------------------------- -r397 | trialuser02 | 2017-03-28 11:12:51 +0300 (Вт., 28 марта 2017) | 1 line - -updated changelog ------------------------------------------------------------------------- -r396 | trialuser02 | 2017-03-28 11:03:27 +0300 (Вт., 28 марта 2017) | 1 line - -updated Czech translation (fri) ------------------------------------------------------------------------- -r395 | trialuser02 | 2017-03-27 08:35:12 +0300 (Пн., 27 марта 2017) | 1 line - -updated changelog ------------------------------------------------------------------------- -r394 | trialuser02 | 2017-03-26 19:22:13 +0300 (Вс., 26 марта 2017) | 1 line - -updated qt5ct.desktop ------------------------------------------------------------------------- -r393 | trialuser02 | 2017-03-26 19:20:45 +0300 (Вс., 26 марта 2017) | 1 line - -updated Serbian translation (markosm) ------------------------------------------------------------------------- -r392 | trialuser02 | 2017-03-26 19:19:01 +0300 (Вс., 26 марта 2017) | 1 line - -added Arabic translation (abouzakaria kov) ------------------------------------------------------------------------- -r391 | trialuser02 | 2017-03-23 14:47:22 +0300 (Чт., 23 марта 2017) | 1 line - -updated German translation (Ettore Atalan) ------------------------------------------------------------------------- -r390 | trialuser02 | 2017-03-15 08:10:51 +0300 (Ср., 15 марта 2017) | 1 line - -updated Chinese (Taiwan) translation (Jeff Huang) ------------------------------------------------------------------------- -r389 | trialuser02 | 2017-03-15 08:09:33 +0300 (Ср., 15 марта 2017) | 1 line - -updated Dutch (Netherlands) translation (Heimen Stoffels) ------------------------------------------------------------------------- -r388 | trialuser02 | 2017-03-15 08:07:09 +0300 (Ср., 15 марта 2017) | 1 line - -updated Bulgarian translation (Kiril Kirilov) ------------------------------------------------------------------------- -r387 | trialuser02 | 2017-03-14 21:09:55 +0300 (Вт., 14 марта 2017) | 1 line - -fixed typo ------------------------------------------------------------------------- -r386 | trialuser02 | 2017-03-14 21:09:08 +0300 (Вт., 14 марта 2017) | 1 line - -updated changelog ------------------------------------------------------------------------- -r385 | trialuser02 | 2017-03-14 20:59:40 +0300 (Вт., 14 марта 2017) | 1 line - -updated .ts files ------------------------------------------------------------------------- -r384 | trialuser02 | 2017-03-14 20:58:54 +0300 (Вт., 14 марта 2017) | 1 line - -fixed Qt 5.4 support ------------------------------------------------------------------------- -r383 | trialuser02 | 2017-03-14 20:33:39 +0300 (Вт., 14 марта 2017) | 1 line - -added test for minimal Qt version ------------------------------------------------------------------------- -r382 | trialuser02 | 2017-03-14 20:01:46 +0300 (Вт., 14 марта 2017) | 2 lines - -using c++11 - ------------------------------------------------------------------------- -r381 | trialuser02 | 2017-03-14 19:55:14 +0300 (Вт., 14 марта 2017) | 2 lines - -updated .ts files, updated Russian translation - ------------------------------------------------------------------------- -r380 | trialuser02 | 2017-03-14 19:54:36 +0300 (Вт., 14 марта 2017) | 2 lines - -added option 'wheel scroll lines' - ------------------------------------------------------------------------- -r379 | trialuser02 | 2017-03-14 16:11:00 +0300 (Вт., 14 марта 2017) | 1 line - -updated Russian translation ------------------------------------------------------------------------- -r378 | trialuser02 | 2017-03-14 16:02:59 +0300 (Вт., 14 марта 2017) | 1 line - -updated .ts files ------------------------------------------------------------------------- -r377 | trialuser02 | 2017-03-14 16:02:06 +0300 (Вт., 14 марта 2017) | 2 lines - -added option 'toolbar button style' - ------------------------------------------------------------------------- -r376 | trialuser02 | 2017-02-04 15:55:17 +0300 (Сб., 04 февр. 2017) | 1 line - -version bump ------------------------------------------------------------------------- -r374 | trialuser02 | 2017-02-04 15:52:12 +0300 (Сб., 04 февр. 2017) | 1 line - -fixed changelog ------------------------------------------------------------------------- -r373 | trialuser02 | 2017-01-30 15:23:31 +0300 (Пн., 30 янв. 2017) | 1 line - -updated changelog ------------------------------------------------------------------------- -r372 | trialuser02 | 2017-01-30 09:24:32 +0300 (Пн., 30 янв. 2017) | 1 line - -updated changelog ------------------------------------------------------------------------- -r371 | trialuser02 | 2017-01-29 21:44:26 +0300 (Вс., 29 янв. 2017) | 1 line - -fixed segmentation fault with nonexistent style in the qt5ct.conf ------------------------------------------------------------------------- -r370 | trialuser02 | 2017-01-27 10:09:35 +0300 (Пт., 27 янв. 2017) | 1 line - -updated changelog ------------------------------------------------------------------------- -r369 | trialuser02 | 2017-01-26 20:40:33 +0300 (Чт., 26 янв. 2017) | 2 lines - -fixed issue with KDE styles (#32) - ------------------------------------------------------------------------- -r368 | trialuser02 | 2017-01-26 08:18:41 +0300 (Чт., 26 янв. 2017) | 1 line - -updated French translation (Geiger David) ------------------------------------------------------------------------- -r367 | trialuser02 | 2017-01-25 16:15:17 +0300 (Ср., 25 янв. 2017) | 1 line - -updated Bulgarian translation (Kiril Kirilov) ------------------------------------------------------------------------- -r366 | trialuser02 | 2017-01-25 12:15:20 +0300 (Ср., 25 янв. 2017) | 1 line - -fixed documentation ------------------------------------------------------------------------- -r365 | trialuser02 | 2017-01-25 08:18:36 +0300 (Ср., 25 янв. 2017) | 1 line - -version bump ------------------------------------------------------------------------- -r363 | trialuser02 | 2017-01-25 08:14:51 +0300 (Ср., 25 янв. 2017) | 1 line - -fixed changelog ------------------------------------------------------------------------- -r362 | trialuser02 | 2017-01-25 08:07:52 +0300 (Ср., 25 янв. 2017) | 2 lines - -fixed libqt5ct-style.so installation path (Philip Müller, #30) - ------------------------------------------------------------------------- -r361 | trialuser02 | 2017-01-25 08:03:06 +0300 (Ср., 25 янв. 2017) | 1 line - -updated Greek translation (Dimitrios Glentadakis) ------------------------------------------------------------------------- -r360 | trialuser02 | 2017-01-24 20:25:38 +0300 (Вт., 24 янв. 2017) | 1 line - -version bump ------------------------------------------------------------------------- -r358 | trialuser02 | 2017-01-24 08:44:01 +0300 (Вт., 24 янв. 2017) | 1 line - -fixed typo ------------------------------------------------------------------------- -r357 | trialuser02 | 2017-01-22 19:06:29 +0300 (Вс., 22 янв. 2017) | 1 line - -updated changelog ------------------------------------------------------------------------- -r356 | trialuser02 | 2017-01-22 14:49:33 +0300 (Вс., 22 янв. 2017) | 1 line - -updated Chinese (Taiwan) translation (Jeff Huang) ------------------------------------------------------------------------- -r355 | trialuser02 | 2017-01-22 14:35:58 +0300 (Вс., 22 янв. 2017) | 1 line - -added .ts files for Catalan ------------------------------------------------------------------------- -r354 | trialuser02 | 2017-01-22 14:33:00 +0300 (Вс., 22 янв. 2017) | 1 line - -updated German translation (Atalanttore) ------------------------------------------------------------------------- -r353 | trialuser02 | 2017-01-22 14:31:06 +0300 (Вс., 22 янв. 2017) | 1 line - -fixed palette configuration regression ------------------------------------------------------------------------- -r352 | trialuser02 | 2017-01-20 23:46:45 +0300 (Пт., 20 янв. 2017) | 1 line - -cleanup ------------------------------------------------------------------------- -r351 | trialuser02 | 2017-01-20 23:37:54 +0300 (Пт., 20 янв. 2017) | 1 line - -updated test.sh ------------------------------------------------------------------------- -r350 | trialuser02 | 2017-01-20 23:15:02 +0300 (Пт., 20 янв. 2017) | 1 line - -updated Czech translation (fri) ------------------------------------------------------------------------- -r349 | trialuser02 | 2017-01-20 23:13:53 +0300 (Пт., 20 янв. 2017) | 1 line - -updated Dutch (Netherlands) translation (Heimen Stoffels) ------------------------------------------------------------------------- -r348 | trialuser02 | 2017-01-20 11:53:43 +0300 (Пт., 20 янв. 2017) | 1 line - -updated copyright ------------------------------------------------------------------------- -r347 | trialuser02 | 2017-01-20 11:48:19 +0300 (Пт., 20 янв. 2017) | 1 line - -updated Russian translation ------------------------------------------------------------------------- -r346 | trialuser02 | 2017-01-20 11:47:06 +0300 (Пт., 20 янв. 2017) | 1 line - -updated .ts files ------------------------------------------------------------------------- -r345 | trialuser02 | 2017-01-20 11:46:01 +0300 (Пт., 20 янв. 2017) | 1 line - -updated documentation ------------------------------------------------------------------------- -r344 | trialuser02 | 2017-01-20 11:39:35 +0300 (Пт., 20 янв. 2017) | 1 line - -added warning about missing libqt5ct-style.so ------------------------------------------------------------------------- -r343 | trialuser02 | 2017-01-20 11:32:13 +0300 (Пт., 20 янв. 2017) | 2 lines - -do not show qt5ct proxy style in the settings dialog - ------------------------------------------------------------------------- -r342 | trialuser02 | 2017-01-20 11:25:45 +0300 (Пт., 20 янв. 2017) | 2 lines - -moved qt5ct proxy style to separate plugin - ------------------------------------------------------------------------- -r341 | trialuser02 | 2016-12-30 10:30:52 +0300 (Пт., 30 дек. 2016) | 1 line - -updated copyrights ------------------------------------------------------------------------- -r340 | trialuser02 | 2016-12-28 10:35:54 +0300 (Ср., 28 дек. 2016) | 1 line - -added Qt 5.8 support ------------------------------------------------------------------------- -r339 | trialuser02 | 2016-12-27 13:40:14 +0300 (Вт., 27 дек. 2016) | 1 line - -updated Italian translation (Luigi Baldoni) ------------------------------------------------------------------------- -r338 | trialuser02 | 2016-12-21 19:22:17 +0300 (Ср., 21 дек. 2016) | 1 line - -added Serbian translation (markosm) ------------------------------------------------------------------------- -r337 | trialuser02 | 2016-12-12 08:09:19 +0300 (Пн., 12 дек. 2016) | 1 line - -updated Bulgarian translation (Kiril Kirilov) ------------------------------------------------------------------------- -r336 | trialuser02 | 2016-09-20 09:19:11 +0300 (Вт., 20 сент. 2016) | 1 line - -version bump ------------------------------------------------------------------------- -r334 | trialuser02 | 2016-09-12 13:58:35 +0300 (Пн., 12 сент. 2016) | 1 line - -updated changelog ------------------------------------------------------------------------- -r333 | trialuser02 | 2016-09-12 13:50:49 +0300 (Пн., 12 сент. 2016) | 2 lines - -updated documentation - ------------------------------------------------------------------------- -r332 | trialuser02 | 2016-09-12 13:00:49 +0300 (Пн., 12 сент. 2016) | 1 line - -fixed previous commit ------------------------------------------------------------------------- -r331 | trialuser02 | 2016-09-12 12:08:18 +0300 (Пн., 12 сент. 2016) | 2 lines - -using QLoggingCategory class for logging - ------------------------------------------------------------------------- -r329 | trialuser02 | 2016-09-12 09:39:34 +0300 (Пн., 12 сент. 2016) | 2 lines - -fixed build without D-Bus support - ------------------------------------------------------------------------- -r328 | trialuser02 | 2016-09-12 09:38:08 +0300 (Пн., 12 сент. 2016) | 2 lines - -added D-Bus tray support - ------------------------------------------------------------------------- -r327 | trialuser02 | 2016-09-05 09:45:09 +0300 (Пн., 05 сент. 2016) | 1 line - -version bump ------------------------------------------------------------------------- -r325 | trialuser02 | 2016-09-01 15:14:35 +0300 (Чт., 01 сент. 2016) | 1 line - -updated changelog ------------------------------------------------------------------------- -r324 | trialuser02 | 2016-09-01 15:08:45 +0300 (Чт., 01 сент. 2016) | 1 line - -updated .ts files ------------------------------------------------------------------------- -r323 | trialuser02 | 2016-09-01 15:07:39 +0300 (Чт., 01 сент. 2016) | 1 line - -updated Greek translation (Dimitrios Glentadakis) ------------------------------------------------------------------------- -r322 | trialuser02 | 2016-09-01 14:55:45 +0300 (Чт., 01 сент. 2016) | 1 line - -updated French translation (Geiger David) ------------------------------------------------------------------------- -r321 | trialuser02 | 2016-09-01 14:49:53 +0300 (Чт., 01 сент. 2016) | 1 line - -fixed stellarium compatibility (#25) ------------------------------------------------------------------------- -r320 | trialuser02 | 2016-08-10 15:49:39 +0300 (Ср., 10 авг. 2016) | 1 line - -version bump ------------------------------------------------------------------------- -r318 | trialuser02 | 2016-08-10 15:13:46 +0300 (Ср., 10 авг. 2016) | 1 line - -fixed changelog and documentation ------------------------------------------------------------------------- -r317 | trialuser02 | 2016-08-10 14:55:49 +0300 (Ср., 10 авг. 2016) | 1 line - -updated changelogs ------------------------------------------------------------------------- -r316 | trialuser02 | 2016-08-10 08:08:56 +0300 (Ср., 10 авг. 2016) | 1 line - -updated Chinese (Taiwan) translation (Jeff Huang) ------------------------------------------------------------------------- -r315 | trialuser02 | 2016-08-10 08:07:12 +0300 (Ср., 10 авг. 2016) | 1 line - -updated AUTHORS ------------------------------------------------------------------------- -r314 | trialuser02 | 2016-08-10 08:06:22 +0300 (Ср., 10 авг. 2016) | 1 line - -updated Polish translation (Tomasz Przybył) ------------------------------------------------------------------------- -r313 | trialuser02 | 2016-08-08 14:56:52 +0300 (Пн., 08 авг. 2016) | 1 line - -updated changelogs ------------------------------------------------------------------------- -r312 | trialuser02 | 2016-08-08 14:52:01 +0300 (Пн., 08 авг. 2016) | 1 line - -updated .ts files ------------------------------------------------------------------------- -r311 | trialuser02 | 2016-08-08 14:51:25 +0300 (Пн., 08 авг. 2016) | 1 line - -updated Dutch (Netherlands) translation (Heimen Stoffels) ------------------------------------------------------------------------- -r310 | trialuser02 | 2016-08-08 14:49:47 +0300 (Пн., 08 авг. 2016) | 1 line - -updated German translation (Ettore Atalan) ------------------------------------------------------------------------- -r309 | trialuser02 | 2016-08-08 14:48:35 +0300 (Пн., 08 авг. 2016) | 1 line - -updated Czech translation (fri) ------------------------------------------------------------------------- -r308 | trialuser02 | 2016-08-08 13:14:58 +0300 (Пн., 08 авг. 2016) | 1 line - -updated Russian translation ------------------------------------------------------------------------- -r307 | trialuser02 | 2016-08-08 12:23:00 +0300 (Пн., 08 авг. 2016) | 1 line - -updated .ts files ------------------------------------------------------------------------- -r306 | trialuser02 | 2016-08-08 12:21:32 +0300 (Пн., 08 авг. 2016) | 2 lines - -added tests for environment variables - ------------------------------------------------------------------------- -r305 | trialuser02 | 2016-07-05 10:27:44 +0300 (Вт., 05 июля 2016) | 1 line - -removed TODO ------------------------------------------------------------------------- -r304 | trialuser02 | 2016-07-05 10:23:29 +0300 (Вт., 05 июля 2016) | 1 line - -updated Slovak translation (Ján Ďanovský) ------------------------------------------------------------------------- -r303 | trialuser02 | 2016-06-05 10:21:59 +0300 (Вс., 05 июня 2016) | 1 line - -updated AUTHORS ------------------------------------------------------------------------- -r302 | trialuser02 | 2016-06-05 10:15:45 +0300 (Вс., 05 июня 2016) | 2 lines - -added French translation (Geiger David) - ------------------------------------------------------------------------- -r301 | trialuser02 | 2016-06-02 08:20:14 +0300 (Чт., 02 июня 2016) | 1 line - -version bump ------------------------------------------------------------------------- -r299 | trialuser02 | 2016-06-01 16:11:40 +0300 (Ср., 01 июня 2016) | 1 line - -updated copyright ------------------------------------------------------------------------- -r298 | trialuser02 | 2016-06-01 16:08:23 +0300 (Ср., 01 июня 2016) | 1 line - -updated changelog ------------------------------------------------------------------------- -r297 | trialuser02 | 2016-06-01 16:07:38 +0300 (Ср., 01 июня 2016) | 1 line - -added icons for actions ------------------------------------------------------------------------- -r296 | trialuser02 | 2016-06-01 15:38:12 +0300 (Ср., 01 июня 2016) | 1 line - -updated changelogs ------------------------------------------------------------------------- -r295 | trialuser02 | 2016-06-01 15:32:10 +0300 (Ср., 01 июня 2016) | 1 line - -disabled table items selection in the palette editor ------------------------------------------------------------------------- -r294 | trialuser02 | 2016-06-01 15:20:25 +0300 (Ср., 01 июня 2016) | 1 line - -updating palette preview simultaneously with palette editor ------------------------------------------------------------------------- -r293 | trialuser02 | 2016-05-18 16:16:57 +0300 (Ср., 18 мая 2016) | 1 line - -fixed infinite recursion in the icon theme parser (patch by Sergey A. Sukiyazov) (#20) ------------------------------------------------------------------------- -r292 | trialuser02 | 2016-05-01 00:13:59 +0300 (Вс., 01 мая 2016) | 1 line - -fixed documentation ------------------------------------------------------------------------- -r291 | trialuser02 | 2016-05-01 00:04:11 +0300 (Вс., 01 мая 2016) | 1 line - -updated Greek translation (Dimitrios Glentadakis) ------------------------------------------------------------------------- -r290 | trialuser02 | 2016-04-26 10:03:38 +0300 (Вт., 26 апр. 2016) | 1 line - -version bump ------------------------------------------------------------------------- -r288 | trialuser02 | 2016-04-26 09:51:10 +0300 (Вт., 26 апр. 2016) | 1 line - -updated changelog ------------------------------------------------------------------------- -r287 | trialuser02 | 2016-04-26 09:46:17 +0300 (Вт., 26 апр. 2016) | 1 line - -updated copyright ------------------------------------------------------------------------- -r286 | trialuser02 | 2016-04-26 09:44:03 +0300 (Вт., 26 апр. 2016) | 1 line - -qss: added support for single line comments ------------------------------------------------------------------------- -r285 | trialuser02 | 2016-04-24 14:47:23 +0300 (Вс., 24 апр. 2016) | 2 lines - -updated .ts files, fixed script - ------------------------------------------------------------------------- -r284 | trialuser02 | 2016-04-24 14:46:27 +0300 (Вс., 24 апр. 2016) | 2 lines - -updated Bulgarian translation (Kiril Kirilov) - ------------------------------------------------------------------------- -r282 | trialuser02 | 2016-04-24 14:37:14 +0300 (Вс., 24 апр. 2016) | 2 lines - -do not override application palette (#18) - ------------------------------------------------------------------------- -r281 | trialuser02 | 2016-03-06 13:58:51 +0300 (Вс., 06 марта 2016) | 1 line - -version bump ------------------------------------------------------------------------- -r279 | trialuser02 | 2016-03-06 12:40:44 +0300 (Вс., 06 марта 2016) | 1 line - -updated changelog ------------------------------------------------------------------------- -r278 | trialuser02 | 2016-03-05 14:06:30 +0300 (Сб., 05 марта 2016) | 1 line - -added Hebrew translation (Genghis Khan) ------------------------------------------------------------------------- -r277 | trialuser02 | 2016-03-05 13:30:24 +0300 (Сб., 05 марта 2016) | 2 lines - -qss editor: disabled html mode - ------------------------------------------------------------------------- -r276 | trialuser02 | 2016-03-05 13:25:20 +0300 (Сб., 05 марта 2016) | 2 lines - -fixed issue with qupzilla style sheets (#15) - ------------------------------------------------------------------------- -r275 | trialuser02 | 2016-01-18 09:39:42 +0300 (Пн., 18 янв. 2016) | 1 line - -updated README ------------------------------------------------------------------------- -r274 | trialuser02 | 2016-01-09 13:15:57 +0300 (Сб., 09 янв. 2016) | 1 line - -updated Italian translation (Luigi Baldoni) ------------------------------------------------------------------------- -r273 | trialuser02 | 2016-01-08 23:15:57 +0300 (Пт., 08 янв. 2016) | 1 line - -version bump ------------------------------------------------------------------------- -r271 | trialuser02 | 2016-01-07 12:24:53 +0300 (Чт., 07 янв. 2016) | 1 line - -updated Chinese (Taiwan) translation (Jeff Huang) ------------------------------------------------------------------------- -r270 | trialuser02 | 2016-01-07 00:45:37 +0300 (Чт., 07 янв. 2016) | 1 line - -updated changelog ------------------------------------------------------------------------- -r269 | trialuser02 | 2016-01-07 00:44:29 +0300 (Чт., 07 янв. 2016) | 1 line - -updated Czech translation ------------------------------------------------------------------------- -r268 | trialuser02 | 2016-01-05 11:29:05 +0300 (Вт., 05 янв. 2016) | 1 line - -updated changelog ------------------------------------------------------------------------- -r267 | trialuser02 | 2016-01-05 11:22:29 +0300 (Вт., 05 янв. 2016) | 1 line - -updated Dutch (Netherlands) translation (Heimen Stoffels) ------------------------------------------------------------------------- -r266 | trialuser02 | 2016-01-04 19:09:56 +0300 (Пн., 04 янв. 2016) | 1 line - -updated Polish translation (FadeMind) ------------------------------------------------------------------------- -r265 | trialuser02 | 2016-01-04 18:25:32 +0300 (Пн., 04 янв. 2016) | 1 line - -added Slovak translation (Ján Ďanovský) ------------------------------------------------------------------------- -r264 | trialuser02 | 2016-01-04 18:22:17 +0300 (Пн., 04 янв. 2016) | 1 line - -updated changelog ------------------------------------------------------------------------- -r263 | trialuser02 | 2016-01-04 17:43:56 +0300 (Пн., 04 янв. 2016) | 1 line - -updated .ts files ------------------------------------------------------------------------- -r262 | trialuser02 | 2016-01-04 17:38:44 +0300 (Пн., 04 янв. 2016) | 2 lines - -fixed typo - ------------------------------------------------------------------------- -r261 | trialuser02 | 2016-01-04 14:22:51 +0300 (Пн., 04 янв. 2016) | 1 line - -updated Russian translation ------------------------------------------------------------------------- -r260 | trialuser02 | 2016-01-04 14:21:15 +0300 (Пн., 04 янв. 2016) | 1 line - -updated .ts files ------------------------------------------------------------------------- -r259 | trialuser02 | 2016-01-04 14:20:13 +0300 (Пн., 04 янв. 2016) | 2 lines - -added option "Activate item on signle-click" (#12) - ------------------------------------------------------------------------- -r258 | trialuser02 | 2015-11-19 22:56:50 +0300 (Чт., 19 нояб. 2015) | 1 line - -added Spanish translation (jcn363) ------------------------------------------------------------------------- -r257 | trialuser02 | 2015-11-15 22:47:10 +0300 (Вс., 15 нояб. 2015) | 1 line - -prepare for Spain translation ------------------------------------------------------------------------- -r255 | trialuser02 | 2015-10-18 12:47:55 +0300 (Вс., 18 окт. 2015) | 1 line - -version bump ------------------------------------------------------------------------- -r253 | trialuser02 | 2015-10-18 12:45:40 +0300 (Вс., 18 окт. 2015) | 1 line - -updated changelog ------------------------------------------------------------------------- -r252 | trialuser02 | 2015-10-18 12:40:37 +0300 (Вс., 18 окт. 2015) | 2 lines - -fixed typo - ------------------------------------------------------------------------- -r251 | trialuser02 | 2015-10-18 11:23:26 +0300 (Вс., 18 окт. 2015) | 2 lines - -fixed initial widget spacing - ------------------------------------------------------------------------- -r250 | trialuser02 | 2015-10-18 09:53:02 +0300 (Вс., 18 окт. 2015) | 1 line - -updated changelog ------------------------------------------------------------------------- -r249 | trialuser02 | 2015-10-16 19:06:53 +0300 (Пт., 16 окт. 2015) | 1 line - -updated Italian translation (Luigi Baldoni) ------------------------------------------------------------------------- -r248 | trialuser02 | 2015-10-04 22:35:00 +0300 (Вс., 04 окт. 2015) | 1 line - -updated .ts files ------------------------------------------------------------------------- -r247 | trialuser02 | 2015-10-04 22:33:58 +0300 (Вс., 04 окт. 2015) | 1 line - -updated Bulgarian translation (Kiril Kirilov) ------------------------------------------------------------------------- -r246 | trialuser02 | 2015-09-24 14:11:31 +0300 (Чт., 24 сент. 2015) | 1 line - -version bump ------------------------------------------------------------------------- -r244 | trialuser02 | 2015-09-24 14:04:08 +0300 (Чт., 24 сент. 2015) | 2 lines - -updated changelog - ------------------------------------------------------------------------- -r243 | trialuser02 | 2015-09-24 14:02:29 +0300 (Чт., 24 сент. 2015) | 2 lines - -added feature to save geometry of the style sheet editor - ------------------------------------------------------------------------- -r242 | trialuser02 | 2015-09-23 18:51:05 +0300 (Ср., 23 сент. 2015) | 1 line - -updated changelog ------------------------------------------------------------------------- -r241 | trialuser02 | 2015-09-23 18:47:56 +0300 (Ср., 23 сент. 2015) | 1 line - -updated Chinese (China) translation (Cary Tian) ------------------------------------------------------------------------- -r240 | trialuser02 | 2015-09-23 18:46:30 +0300 (Ср., 23 сент. 2015) | 1 line - -updated Czech translation (fri) ------------------------------------------------------------------------- -r239 | trialuser02 | 2015-09-23 18:42:43 +0300 (Ср., 23 сент. 2015) | 1 line - -updated Greek translation (Dimitrios Glentadakis) ------------------------------------------------------------------------- -r238 | trialuser02 | 2015-09-22 22:02:00 +0300 (Вт., 22 сент. 2015) | 1 line - -fixed qt5ct.desktop (#8) ------------------------------------------------------------------------- -r237 | trialuser02 | 2015-09-21 15:09:18 +0300 (Пн., 21 сент. 2015) | 1 line - -version bump ------------------------------------------------------------------------- -r235 | trialuser02 | 2015-09-19 20:36:29 +0300 (Сб., 19 сент. 2015) | 1 line - -updated changelog ------------------------------------------------------------------------- -r234 | trialuser02 | 2015-09-19 20:35:18 +0300 (Сб., 19 сент. 2015) | 1 line - -updated Chinese (Taiwan) translation (Jeff Huang) ------------------------------------------------------------------------- -r233 | trialuser02 | 2015-09-19 14:08:43 +0300 (Сб., 19 сент. 2015) | 1 line - -updated TODO list ------------------------------------------------------------------------- -r232 | trialuser02 | 2015-09-19 11:46:47 +0300 (Сб., 19 сент. 2015) | 1 line - -updated changelog ------------------------------------------------------------------------- -r231 | trialuser02 | 2015-09-19 11:43:06 +0300 (Сб., 19 сент. 2015) | 1 line - -updated .ts files ------------------------------------------------------------------------- -r230 | trialuser02 | 2015-09-19 11:42:24 +0300 (Сб., 19 сент. 2015) | 1 line - -updated Polish translation (FadeMind) ------------------------------------------------------------------------- -r229 | trialuser02 | 2015-09-19 11:41:10 +0300 (Сб., 19 сент. 2015) | 1 line - -updated German translation (Ettore Atalan) ------------------------------------------------------------------------- -r228 | trialuser02 | 2015-09-19 11:40:08 +0300 (Сб., 19 сент. 2015) | 1 line - -updated Dutch (Netherlands) translation (Heimen Stoffels) ------------------------------------------------------------------------- -r227 | trialuser02 | 2015-09-19 11:38:46 +0300 (Сб., 19 сент. 2015) | 1 line - -updated .ts files ------------------------------------------------------------------------- -r226 | trialuser02 | 2015-09-18 22:53:28 +0300 (Пт., 18 сент. 2015) | 1 line - -fixed Russian translation ------------------------------------------------------------------------- -r225 | trialuser02 | 2015-09-18 22:50:56 +0300 (Пт., 18 сент. 2015) | 1 line - -updated .ts files ------------------------------------------------------------------------- -r224 | trialuser02 | 2015-09-18 22:50:10 +0300 (Пт., 18 сент. 2015) | 1 line - -fixed typos ------------------------------------------------------------------------- -r223 | trialuser02 | 2015-09-18 18:21:35 +0300 (Пт., 18 сент. 2015) | 1 line - -updated Polish translation (FadeMind) ------------------------------------------------------------------------- -r222 | trialuser02 | 2015-09-18 16:04:24 +0300 (Пт., 18 сент. 2015) | 2 lines - -updated .ts files, updated Russian translation - ------------------------------------------------------------------------- -r221 | trialuser02 | 2015-09-18 16:03:39 +0300 (Пт., 18 сент. 2015) | 2 lines - -fixed typos - ------------------------------------------------------------------------- -r220 | trialuser02 | 2015-09-18 15:59:06 +0300 (Пт., 18 сент. 2015) | 2 lines - -fixed typo - ------------------------------------------------------------------------- -r219 | trialuser02 | 2015-09-18 15:56:07 +0300 (Пт., 18 сент. 2015) | 2 lines - -fixed typo - ------------------------------------------------------------------------- -r218 | trialuser02 | 2015-09-18 15:53:40 +0300 (Пт., 18 сент. 2015) | 2 lines - -updated .ts files - ------------------------------------------------------------------------- -r217 | trialuser02 | 2015-09-18 15:52:54 +0300 (Пт., 18 сент. 2015) | 2 lines - -updated platform plugin, fixed key name - ------------------------------------------------------------------------- -r216 | trialuser02 | 2015-09-18 15:42:19 +0300 (Пт., 18 сент. 2015) | 2 lines - -fixed remainig bugs - ------------------------------------------------------------------------- -r215 | trialuser02 | 2015-09-18 14:53:25 +0300 (Пт., 18 сент. 2015) | 2 lines - -changed setings form - ------------------------------------------------------------------------- -r214 | trialuser02 | 2015-09-18 14:05:33 +0300 (Пт., 18 сент. 2015) | 2 lines - -updated .ts files - ------------------------------------------------------------------------- -r213 | trialuser02 | 2015-09-18 14:03:23 +0300 (Пт., 18 сент. 2015) | 2 lines - -implemented color scheme settings - ------------------------------------------------------------------------- -r212 | trialuser02 | 2015-09-16 13:40:01 +0300 (Ср., 16 сент. 2015) | 1 line - -updated .ts files ------------------------------------------------------------------------- -r211 | trialuser02 | 2015-09-15 16:02:37 +0300 (Вт., 15 сент. 2015) | 2 lines - -added color scheme buttons - ------------------------------------------------------------------------- -r210 | trialuser02 | 2015-09-15 10:27:45 +0300 (Вт., 15 сент. 2015) | 1 line - -version bump ------------------------------------------------------------------------- -r208 | trialuser02 | 2015-09-14 22:30:22 +0300 (Пн., 14 сент. 2015) | 1 line - -updated changelog ------------------------------------------------------------------------- -r207 | trialuser02 | 2015-09-14 22:16:47 +0300 (Пн., 14 сент. 2015) | 2 lines - -fixed crash in qupzilla - ------------------------------------------------------------------------- -r206 | trialuser02 | 2015-09-13 12:00:25 +0300 (Вс., 13 сент. 2015) | 1 line - -updated Greek translation (Dimitrios Glentadakis) ------------------------------------------------------------------------- -r205 | trialuser02 | 2015-09-12 23:23:41 +0300 (Сб., 12 сент. 2015) | 1 line - -version bump ------------------------------------------------------------------------- -r203 | trialuser02 | 2015-09-12 22:10:44 +0300 (Сб., 12 сент. 2015) | 1 line - -updated changelog ------------------------------------------------------------------------- -r202 | trialuser02 | 2015-09-12 22:07:42 +0300 (Сб., 12 сент. 2015) | 1 line - -updated .ts files ------------------------------------------------------------------------- -r201 | trialuser02 | 2015-09-12 22:07:09 +0300 (Сб., 12 сент. 2015) | 1 line - -updated Chinese (China) translation (Cary Tian) ------------------------------------------------------------------------- -r200 | trialuser02 | 2015-09-12 18:50:18 +0300 (Сб., 12 сент. 2015) | 2 lines - -added feature to save palette editor geometry - ------------------------------------------------------------------------- -r199 | trialuser02 | 2015-09-12 18:40:47 +0300 (Сб., 12 сент. 2015) | 2 lines - -changed palette editor layout - ------------------------------------------------------------------------- -r198 | trialuser02 | 2015-09-05 22:35:45 +0300 (Сб., 05 сент. 2015) | 1 line - -version bump ------------------------------------------------------------------------- -r196 | trialuser02 | 2015-09-05 22:32:11 +0300 (Сб., 05 сент. 2015) | 1 line - -fixed changelog ------------------------------------------------------------------------- -r195 | trialuser02 | 2015-09-05 22:29:34 +0300 (Сб., 05 сент. 2015) | 2 lines - -added comment - ------------------------------------------------------------------------- -r194 | trialuser02 | 2015-09-05 22:16:36 +0300 (Сб., 05 сент. 2015) | 1 line - -updated Czech translation (Fri) ------------------------------------------------------------------------- -r193 | trialuser02 | 2015-09-05 22:15:19 +0300 (Сб., 05 сент. 2015) | 2 lines - -fixed qtcurve style support - ------------------------------------------------------------------------- -r192 | trialuser02 | 2015-09-04 14:02:04 +0300 (Пт., 04 сент. 2015) | 1 line - -version bump ------------------------------------------------------------------------- -r190 | trialuser02 | 2015-09-02 00:42:51 +0300 (Ср., 02 сент. 2015) | 1 line - -updated changelog ------------------------------------------------------------------------- -r189 | trialuser02 | 2015-09-02 00:38:46 +0300 (Ср., 02 сент. 2015) | 1 line - -updated .ts files ------------------------------------------------------------------------- -r188 | trialuser02 | 2015-09-02 00:38:11 +0300 (Ср., 02 сент. 2015) | 1 line - -updated Chinese (Taiwan) translation (Jeff Huang) ------------------------------------------------------------------------- -r187 | trialuser02 | 2015-09-02 00:36:10 +0300 (Ср., 02 сент. 2015) | 1 line - -updated Dutch (Netherlands) translation (Heimen Stoffels) ------------------------------------------------------------------------- -r186 | trialuser02 | 2015-09-02 00:33:29 +0300 (Ср., 02 сент. 2015) | 1 line - -updated German translation (Ettore Atalan) ------------------------------------------------------------------------- -r185 | trialuser02 | 2015-09-02 00:28:46 +0300 (Ср., 02 сент. 2015) | 1 line - -updated Russian translation ------------------------------------------------------------------------- -r184 | trialuser02 | 2015-09-02 00:25:20 +0300 (Ср., 02 сент. 2015) | 2 lines - -fixed feature to hide dialog buttons icons - ------------------------------------------------------------------------- -r183 | trialuser02 | 2015-09-01 00:21:15 +0300 (Вт., 01 сент. 2015) | 1 line - -updated .ts files ------------------------------------------------------------------------- -r182 | trialuser02 | 2015-09-01 00:20:10 +0300 (Вт., 01 сент. 2015) | 2 lines - -added options "Dialog buttons have icons" and "Menus have icons" - ------------------------------------------------------------------------- -r181 | trialuser02 | 2015-08-31 23:32:06 +0300 (Пн., 31 авг. 2015) | 2 lines - -added proxy style - ------------------------------------------------------------------------- -r180 | trialuser02 | 2015-08-31 19:58:26 +0300 (Пн., 31 авг. 2015) | 2 lines - -fixed style & palette initialization - ------------------------------------------------------------------------- -r179 | trialuser02 | 2015-08-27 21:34:22 +0300 (Чт., 27 авг. 2015) | 2 lines - -fixed typo - ------------------------------------------------------------------------- -r178 | trialuser02 | 2015-08-22 19:00:57 +0300 (Сб., 22 авг. 2015) | 1 line - -version bump ------------------------------------------------------------------------- -r177 | trialuser02 | 2015-08-22 18:57:21 +0300 (Сб., 22 авг. 2015) | 1 line - -fixed desktop file ------------------------------------------------------------------------- -r175 | trialuser02 | 2015-08-22 14:14:49 +0300 (Сб., 22 авг. 2015) | 1 line - -updated changelog ------------------------------------------------------------------------- -r174 | trialuser02 | 2015-08-22 14:12:01 +0300 (Сб., 22 авг. 2015) | 1 line - -updated AUTHORS ------------------------------------------------------------------------- -r173 | trialuser02 | 2015-08-22 14:10:07 +0300 (Сб., 22 авг. 2015) | 1 line - -added Italian translation (Luigi Baldoni) ------------------------------------------------------------------------- -r172 | trialuser02 | 2015-07-14 08:29:00 +0300 (Вт., 14 июля 2015) | 1 line - -fixed update_ts.sh ------------------------------------------------------------------------- -r171 | trialuser02 | 2015-05-22 22:58:43 +0300 (Пт., 22 мая 2015) | 2 lines - -added XDG_DATA_HOME support - ------------------------------------------------------------------------- -r170 | trialuser02 | 2015-05-21 11:03:49 +0300 (Чт., 21 мая 2015) | 1 line - -version bump ------------------------------------------------------------------------- -r168 | trialuser02 | 2015-05-21 10:58:21 +0300 (Чт., 21 мая 2015) | 1 line - -updated .ts files ------------------------------------------------------------------------- -r167 | trialuser02 | 2015-05-21 10:56:51 +0300 (Чт., 21 мая 2015) | 1 line - -fixed changelog ------------------------------------------------------------------------- -r166 | trialuser02 | 2015-05-20 23:02:25 +0300 (Ср., 20 мая 2015) | 1 line - -fixed qt5ct.desktop ------------------------------------------------------------------------- -r165 | trialuser02 | 2015-05-20 22:59:32 +0300 (Ср., 20 мая 2015) | 1 line - -updated AUTHORS ------------------------------------------------------------------------- -r164 | trialuser02 | 2015-05-20 22:56:29 +0300 (Ср., 20 мая 2015) | 1 line - -added Chinese Simplified translation (Cary Tian) ------------------------------------------------------------------------- -r163 | trialuser02 | 2015-05-16 21:18:08 +0300 (Сб., 16 мая 2015) | 2 lines - -fixed regression - ------------------------------------------------------------------------- -r162 | trialuser02 | 2015-05-16 10:33:58 +0300 (Сб., 16 мая 2015) | 2 lines - -fixed problem in the IconThemePage::findIcon(..) method (patch by Sergey A. Sukiyazov) (#3) - ------------------------------------------------------------------------- -r161 | trialuser02 | 2015-05-12 21:15:43 +0300 (Вт., 12 мая 2015) | 1 line - -version bump ------------------------------------------------------------------------- -r157 | trialuser02 | 2015-05-12 21:03:34 +0300 (Вт., 12 мая 2015) | 1 line - -fixed typo ------------------------------------------------------------------------- -r156 | trialuser02 | 2015-05-12 20:52:48 +0300 (Вт., 12 мая 2015) | 1 line - -updated qt5ct.desktop ------------------------------------------------------------------------- -r155 | trialuser02 | 2015-05-12 20:50:23 +0300 (Вт., 12 мая 2015) | 1 line - -updated AUTHORS and ChangeLog ------------------------------------------------------------------------- -r154 | trialuser02 | 2015-05-12 20:48:29 +0300 (Вт., 12 мая 2015) | 1 line - -added Polish translation (FadeMind) ------------------------------------------------------------------------- -r153 | trialuser02 | 2015-05-12 20:45:28 +0300 (Вт., 12 мая 2015) | 1 line - -updated .ts files ------------------------------------------------------------------------- -r152 | trialuser02 | 2015-05-12 20:39:21 +0300 (Вт., 12 мая 2015) | 1 line - -updated changelog ------------------------------------------------------------------------- -r151 | trialuser02 | 2015-05-12 20:29:29 +0300 (Вт., 12 мая 2015) | 1 line - -updated documentation ------------------------------------------------------------------------- -r149 | trialuser02 | 2015-05-12 20:25:09 +0300 (Вт., 12 мая 2015) | 2 lines - -fixed previous commit - ------------------------------------------------------------------------- -r148 | trialuser02 | 2015-05-12 20:12:24 +0300 (Вт., 12 мая 2015) | 2 lines - -renamed USE_QSS to USE_WIDGETS - ------------------------------------------------------------------------- -r147 | trialuser02 | 2015-05-12 20:04:17 +0300 (Вт., 12 мая 2015) | 3 lines - -fixed segmentation fault on "widget-less" applications; replaced USE_QSS -by QT_WIDGETS_LIB - ------------------------------------------------------------------------- -r146 | trialuser02 | 2015-05-12 18:30:28 +0300 (Вт., 12 мая 2015) | 2 lines - -fixed regression - ------------------------------------------------------------------------- -r145 | trialuser02 | 2015-05-12 17:59:01 +0300 (Вт., 12 мая 2015) | 2 lines - -fixed default palette - ------------------------------------------------------------------------- -r144 | trialuser02 | 2015-05-12 17:48:41 +0300 (Вт., 12 мая 2015) | 2 lines - -removed useless code - ------------------------------------------------------------------------- -r143 | trialuser02 | 2015-05-12 12:34:32 +0300 (Вт., 12 мая 2015) | 2 lines - -removed private headers usage - ------------------------------------------------------------------------- -r142 | trialuser02 | 2015-05-12 11:38:36 +0300 (Вт., 12 мая 2015) | 2 lines - -removed private headers from qt5ct application - ------------------------------------------------------------------------- -r141 | trialuser02 | 2015-05-11 17:45:02 +0300 (Пн., 11 мая 2015) | 2 lines - -updated TODO list - ------------------------------------------------------------------------- -r140 | trialuser02 | 2015-04-29 10:52:08 +0300 (Ср., 29 апр. 2015) | 1 line - -updated German translation (Ettore Atalan) ------------------------------------------------------------------------- -r139 | trialuser02 | 2015-04-02 23:15:22 +0300 (Чт., 02 апр. 2015) | 1 line - -fixed clear_qmake.sh script ------------------------------------------------------------------------- -r138 | trialuser02 | 2015-03-29 22:46:03 +0300 (Вс., 29 марта 2015) | 2 lines - -fixed fonts.conf generation - ------------------------------------------------------------------------- -r137 | trialuser02 | 2015-03-29 11:53:40 +0300 (Вс., 29 марта 2015) | 1 line - -version bump ------------------------------------------------------------------------- -r135 | trialuser02 | 2015-03-29 11:47:04 +0300 (Вс., 29 марта 2015) | 1 line - -updated changelog ------------------------------------------------------------------------- -r134 | trialuser02 | 2015-03-29 11:25:56 +0300 (Вс., 29 марта 2015) | 1 line - -fixed shared qss path ------------------------------------------------------------------------- -r133 | trialuser02 | 2015-03-29 11:14:35 +0300 (Вс., 29 марта 2015) | 2 lines - -fixed build - ------------------------------------------------------------------------- -r132 | trialuser02 | 2015-03-29 11:13:56 +0300 (Вс., 29 марта 2015) | 2 lines - -added more debug info - ------------------------------------------------------------------------- -r131 | trialuser02 | 2015-03-29 11:03:16 +0300 (Вс., 29 марта 2015) | 1 line - -updated .desktop file ------------------------------------------------------------------------- -r130 | trialuser02 | 2015-03-29 10:59:46 +0300 (Вс., 29 марта 2015) | 1 line - -updated .ts files ------------------------------------------------------------------------- -r129 | trialuser02 | 2015-03-29 10:53:23 +0300 (Вс., 29 марта 2015) | 1 line - -added Greek translation (Dimitrios Glentadakis), updated AUTHORS ------------------------------------------------------------------------- -r128 | trialuser02 | 2015-03-29 10:51:40 +0300 (Вс., 29 марта 2015) | 1 line - -added Greek translation (Dimitrios Glentadakis) ------------------------------------------------------------------------- -r125 | trialuser02 | 2015-03-24 20:20:09 +0300 (Вт., 24 марта 2015) | 1 line - -updated homepage ------------------------------------------------------------------------- -r124 | trialuser02 | 2015-03-09 16:14:38 +0300 (Пн., 09 марта 2015) | 1 line - -fixed typo ------------------------------------------------------------------------- -r123 | trialuser02 | 2015-03-09 14:19:37 +0300 (Пн., 09 марта 2015) | 1 line - -version bump ------------------------------------------------------------------------- -r121 | trialuser02 | 2015-03-09 14:10:24 +0300 (Пн., 09 марта 2015) | 1 line - -updated .ts/.qrc/.desktop files ------------------------------------------------------------------------- -r120 | trialuser02 | 2015-03-09 14:06:32 +0300 (Пн., 09 марта 2015) | 1 line - -updated changelog and authors files ------------------------------------------------------------------------- -r119 | trialuser02 | 2015-03-09 14:01:40 +0300 (Пн., 09 марта 2015) | 1 line - -updated German translation (Mario Blättermann) ------------------------------------------------------------------------- -r118 | trialuser02 | 2015-03-09 14:00:11 +0300 (Пн., 09 марта 2015) | 1 line - -added Dutch (Netherlands) translation (Heimen Stoffels) ------------------------------------------------------------------------- -r117 | trialuser02 | 2015-03-09 13:54:20 +0300 (Пн., 09 марта 2015) | 1 line - -updated Chinese (Taiwan) translation (Jeff Huang) ------------------------------------------------------------------------- -r116 | trialuser02 | 2015-03-09 13:51:56 +0300 (Пн., 09 марта 2015) | 1 line - -updated Bulgarian translation (Kiril Kirilov) ------------------------------------------------------------------------- -r115 | trialuser02 | 2015-03-09 13:42:29 +0300 (Пн., 09 марта 2015) | 1 line - -added feature to disable qss support ------------------------------------------------------------------------- -r114 | trialuser02 | 2015-02-11 22:00:47 +0300 (Ср., 11 февр. 2015) | 1 line - -updated Czech translation (fri) ------------------------------------------------------------------------- -r113 | trialuser02 | 2015-02-11 21:59:27 +0300 (Ср., 11 февр. 2015) | 1 line - -updated Chinese (Taiwan) translation (Jeff Huang) ------------------------------------------------------------------------- -r112 | trialuser02 | 2015-02-09 22:40:17 +0300 (Пн., 09 февр. 2015) | 2 lines - -fixed color scheme editor, updated Russian translation - ------------------------------------------------------------------------- -r111 | trialuser02 | 2015-02-09 19:59:21 +0300 (Пн., 09 февр. 2015) | 2 lines - -updated .ts files - ------------------------------------------------------------------------- -r110 | trialuser02 | 2015-02-09 19:58:25 +0300 (Пн., 09 февр. 2015) | 2 lines - -added more user frendly color roles - ------------------------------------------------------------------------- -r109 | trialuser02 | 2015-02-09 13:11:44 +0300 (Пн., 09 февр. 2015) | 1 line - -fixed README ------------------------------------------------------------------------- -r108 | trialuser02 | 2015-02-09 12:28:33 +0300 (Пн., 09 февр. 2015) | 1 line - -version bump ------------------------------------------------------------------------- -r106 | trialuser02 | 2015-02-09 10:30:37 +0300 (Пн., 09 февр. 2015) | 1 line - -updated .desktop file ------------------------------------------------------------------------- -r105 | trialuser02 | 2015-02-09 10:25:26 +0300 (Пн., 09 февр. 2015) | 1 line - -updated changelog ------------------------------------------------------------------------- -r104 | trialuser02 | 2015-02-09 10:16:28 +0300 (Пн., 09 февр. 2015) | 2 lines - -fixed font updating issue - ------------------------------------------------------------------------- -r103 | trialuser02 | 2015-02-09 09:16:14 +0300 (Пн., 09 февр. 2015) | 1 line - -fixed plugin metadata ------------------------------------------------------------------------- -r102 | trialuser02 | 2015-02-08 17:54:00 +0300 (Вс., 08 февр. 2015) | 2 lines - -fixed Russian translation - ------------------------------------------------------------------------- -r101 | trialuser02 | 2015-02-08 17:37:15 +0300 (Вс., 08 февр. 2015) | 1 line - -added Bulgarian translation (Kiril Kirilov) ------------------------------------------------------------------------- -r100 | trialuser02 | 2015-02-08 17:22:20 +0300 (Вс., 08 февр. 2015) | 2 lines - -removed empty line - ------------------------------------------------------------------------- -r99 | trialuser02 | 2015-02-08 17:10:08 +0300 (Вс., 08 февр. 2015) | 2 lines - -improved icon theme parsing - ------------------------------------------------------------------------- -r98 | trialuser02 | 2015-02-07 19:09:37 +0300 (Сб., 07 февр. 2015) | 1 line - -version bump ------------------------------------------------------------------------- -r96 | trialuser02 | 2015-02-07 19:07:58 +0300 (Сб., 07 февр. 2015) | 1 line - -updated .desktop file ------------------------------------------------------------------------- -r93 | trialuser02 | 2015-02-07 18:23:36 +0300 (Сб., 07 февр. 2015) | 2 lines - -fixed palette update - ------------------------------------------------------------------------- -r92 | trialuser02 | 2015-02-07 17:40:38 +0300 (Сб., 07 февр. 2015) | 1 line - -updated AUTHORS ------------------------------------------------------------------------- -r91 | trialuser02 | 2015-02-07 17:32:33 +0300 (Сб., 07 февр. 2015) | 1 line - -updated changelog ------------------------------------------------------------------------- -r90 | trialuser02 | 2015-02-07 17:26:28 +0300 (Сб., 07 февр. 2015) | 2 lines - -added feature to apply theme for running applications - ------------------------------------------------------------------------- -r89 | trialuser02 | 2015-02-07 15:40:58 +0300 (Сб., 07 февр. 2015) | 2 lines - -added 'apply' button - ------------------------------------------------------------------------- -r88 | trialuser02 | 2015-02-07 15:15:08 +0300 (Сб., 07 февр. 2015) | 1 line - -added German translation (Mario Blättermann) ------------------------------------------------------------------------- -r87 | trialuser02 | 2015-01-31 23:51:33 +0300 (Сб., 31 янв. 2015) | 1 line - -added Czech translation (fri) ------------------------------------------------------------------------- -r86 | trialuser02 | 2015-01-31 23:39:09 +0300 (Сб., 31 янв. 2015) | 1 line - -updated Chinese (Taiwan) translation (Jeff Huang) ------------------------------------------------------------------------- -r85 | trialuser02 | 2015-01-24 23:09:10 +0300 (Сб., 24 янв. 2015) | 1 line - -updated Russian translation ------------------------------------------------------------------------- -r84 | trialuser02 | 2015-01-24 23:00:25 +0300 (Сб., 24 янв. 2015) | 2 lines - -updated Russian translation - ------------------------------------------------------------------------- -r83 | trialuser02 | 2015-01-24 22:57:08 +0300 (Сб., 24 янв. 2015) | 2 lines - -updated .ts files - ------------------------------------------------------------------------- -r82 | trialuser02 | 2015-01-24 22:53:16 +0300 (Сб., 24 янв. 2015) | 2 lines - -fixed TODO - ------------------------------------------------------------------------- -r81 | trialuser02 | 2015-01-24 22:52:34 +0300 (Сб., 24 янв. 2015) | 2 lines - -added context menu to style sheet list - ------------------------------------------------------------------------- -r80 | trialuser02 | 2015-01-24 22:42:58 +0300 (Сб., 24 янв. 2015) | 2 lines - -added feature to rename style sheet - ------------------------------------------------------------------------- -r79 | trialuser02 | 2015-01-18 10:33:18 +0300 (Вс., 18 янв. 2015) | 1 line - -added Chinese (Taiwan) translation (Jeff Huang) ------------------------------------------------------------------------- -r78 | trialuser02 | 2015-01-17 15:50:43 +0300 (Сб., 17 янв. 2015) | 1 line - -updated TODO list ------------------------------------------------------------------------- -r77 | trialuser02 | 2015-01-17 15:47:50 +0300 (Сб., 17 янв. 2015) | 1 line - -updated TODO list ------------------------------------------------------------------------- -r76 | trialuser02 | 2015-01-17 15:08:34 +0300 (Сб., 17 янв. 2015) | 1 line - -version bump ------------------------------------------------------------------------- -r74 | trialuser02 | 2015-01-17 15:05:25 +0300 (Сб., 17 янв. 2015) | 1 line - -updated changelog ------------------------------------------------------------------------- -r73 | trialuser02 | 2015-01-17 15:01:55 +0300 (Сб., 17 янв. 2015) | 1 line - -enabled transifex integration ------------------------------------------------------------------------- -r72 | trialuser02 | 2015-01-17 14:47:14 +0300 (Сб., 17 янв. 2015) | 1 line - -prepare for transifex integration ------------------------------------------------------------------------- -r71 | trialuser02 | 2015-01-17 14:34:23 +0300 (Сб., 17 янв. 2015) | 2 lines - -updated .ts files, updated Russian translation - ------------------------------------------------------------------------- -r70 | trialuser02 | 2015-01-17 14:30:23 +0300 (Сб., 17 янв. 2015) | 2 lines - -fixed typo - ------------------------------------------------------------------------- -r69 | trialuser02 | 2015-01-17 14:28:45 +0300 (Сб., 17 янв. 2015) | 2 lines - -updated README - ------------------------------------------------------------------------- -r68 | trialuser02 | 2015-01-17 14:28:19 +0300 (Сб., 17 янв. 2015) | 2 lines - -fixed typo - ------------------------------------------------------------------------- -r67 | trialuser02 | 2015-01-17 14:19:32 +0300 (Сб., 17 янв. 2015) | 1 line - -updated .ts files ------------------------------------------------------------------------- -r66 | trialuser02 | 2015-01-17 14:18:48 +0300 (Сб., 17 янв. 2015) | 2 lines - -added qss editor - ------------------------------------------------------------------------- -r65 | trialuser02 | 2015-01-17 13:50:35 +0300 (Сб., 17 янв. 2015) | 2 lines - -added feature to create/remove stylesheets - ------------------------------------------------------------------------- -r64 | trialuser02 | 2015-01-17 12:57:01 +0300 (Сб., 17 янв. 2015) | 2 lines - -added stylesheets loader - ------------------------------------------------------------------------- -r63 | trialuser02 | 2015-01-15 21:43:07 +0300 (Чт., 15 янв. 2015) | 2 lines - -added stylesheet config implementation, updated .ts files - ------------------------------------------------------------------------- -r62 | trialuser02 | 2015-01-15 20:12:04 +0300 (Чт., 15 янв. 2015) | 2 lines - -enabled qss tab, updated .ts files - ------------------------------------------------------------------------- -r61 | trialuser02 | 2015-01-15 20:03:27 +0300 (Чт., 15 янв. 2015) | 2 lines - -cleanup - ------------------------------------------------------------------------- -r60 | trialuser02 | 2015-01-15 20:02:27 +0300 (Чт., 15 янв. 2015) | 2 lines - -prepare for style sheets support implementation - ------------------------------------------------------------------------- -r59 | trialuser02 | 2014-12-28 19:34:49 +0300 (Вс., 28 дек. 2014) | 2 lines - -updated copyright - ------------------------------------------------------------------------- -r58 | trialuser02 | 2014-12-26 15:44:18 +0300 (Пт., 26 дек. 2014) | 1 line - -version bump ------------------------------------------------------------------------- -r56 | trialuser02 | 2014-12-26 15:16:08 +0300 (Пт., 26 дек. 2014) | 1 line - -updated changelog ------------------------------------------------------------------------- -r55 | trialuser02 | 2014-12-26 15:12:53 +0300 (Пт., 26 дек. 2014) | 2 lines - -added feature to change install prefix - ------------------------------------------------------------------------- -r54 | trialuser02 | 2014-12-26 09:57:40 +0300 (Пт., 26 дек. 2014) | 2 lines - -fixed typo - ------------------------------------------------------------------------- -r53 | trialuser02 | 2014-12-26 09:55:19 +0300 (Пт., 26 дек. 2014) | 2 lines - -added dialog buttons layout setting - ------------------------------------------------------------------------- -r52 | trialuser02 | 2014-12-22 11:11:03 +0300 (Пн., 22 дек. 2014) | 1 line - -version bump ------------------------------------------------------------------------- -r50 | trialuser02 | 2014-12-22 11:04:59 +0300 (Пн., 22 дек. 2014) | 2 lines - -updated changelog - ------------------------------------------------------------------------- -r49 | trialuser02 | 2014-12-22 10:56:20 +0300 (Пн., 22 дек. 2014) | 2 lines - -updated Russian translation - ------------------------------------------------------------------------- -r48 | trialuser02 | 2014-12-22 10:50:10 +0300 (Пн., 22 дек. 2014) | 2 lines - -removed close button from preview window - ------------------------------------------------------------------------- -r47 | trialuser02 | 2014-12-12 14:46:21 +0300 (Пт., 12 дек. 2014) | 2 lines - -fixed lcdfilter option - ------------------------------------------------------------------------- -r46 | trialuser02 | 2014-12-12 14:41:14 +0300 (Пт., 12 дек. 2014) | 2 lines - -updated documentation - ------------------------------------------------------------------------- -r45 | trialuser02 | 2014-12-12 14:37:07 +0300 (Пт., 12 дек. 2014) | 2 lines - -fixed typo, updated Russian translation - ------------------------------------------------------------------------- -r44 | trialuser02 | 2014-12-12 14:31:51 +0300 (Пт., 12 дек. 2014) | 2 lines - -fixed typo - ------------------------------------------------------------------------- -r43 | trialuser02 | 2014-12-12 14:20:13 +0300 (Пт., 12 дек. 2014) | 2 lines - -added fonts.conf generation - ------------------------------------------------------------------------- -r42 | trialuser02 | 2014-12-12 13:04:46 +0300 (Пт., 12 дек. 2014) | 2 lines - -added fontconfig dialog - ------------------------------------------------------------------------- -r41 | trialuser02 | 2014-12-11 15:40:32 +0300 (Чт., 11 дек. 2014) | 2 lines - -fixed README - ------------------------------------------------------------------------- -r40 | trialuser02 | 2014-12-11 15:35:56 +0300 (Чт., 11 дек. 2014) | 2 lines - -version bump - ------------------------------------------------------------------------- -r38 | trialuser02 | 2014-12-11 15:29:40 +0300 (Чт., 11 дек. 2014) | 2 lines - -updated changelog - ------------------------------------------------------------------------- -r37 | trialuser02 | 2014-12-11 15:26:37 +0300 (Чт., 11 дек. 2014) | 2 lines - -updated Russian translation - ------------------------------------------------------------------------- -r36 | trialuser02 | 2014-12-11 15:21:52 +0300 (Чт., 11 дек. 2014) | 2 lines - -added ui settings implementation - ------------------------------------------------------------------------- -r35 | trialuser02 | 2014-12-10 21:29:18 +0300 (Ср., 10 дек. 2014) | 2 lines - -added interface settings page (not implemented yet) - ------------------------------------------------------------------------- -r34 | trialuser02 | 2014-12-07 00:41:32 +0300 (Вс., 07 дек. 2014) | 2 lines - -added TODO file - ------------------------------------------------------------------------- -r33 | trialuser02 | 2014-12-07 00:33:58 +0300 (Вс., 07 дек. 2014) | 2 lines - -version bump - ------------------------------------------------------------------------- -r31 | trialuser02 | 2014-12-07 00:27:24 +0300 (Вс., 07 дек. 2014) | 2 lines - -updated changelog, updated .ts files - ------------------------------------------------------------------------- -r30 | trialuser02 | 2014-12-07 00:19:19 +0300 (Вс., 07 дек. 2014) | 2 lines - -fixed preview updating - ------------------------------------------------------------------------- -r29 | trialuser02 | 2014-12-07 00:12:27 +0300 (Вс., 07 дек. 2014) | 2 lines - -fixed layout - ------------------------------------------------------------------------- -r28 | trialuser02 | 2014-12-06 19:47:46 +0300 (Сб., 06 дек. 2014) | 2 lines - -version bump - ------------------------------------------------------------------------- -r27 | trialuser02 | 2014-12-06 19:47:14 +0300 (Сб., 06 дек. 2014) | 2 lines - -fixed Russian translation, fixed preview window - ------------------------------------------------------------------------- -r26 | trialuser02 | 2014-12-06 19:41:25 +0300 (Сб., 06 дек. 2014) | 2 lines - -some ui changes - ------------------------------------------------------------------------- -r24 | trialuser02 | 2014-12-02 09:57:31 +0300 (Вт., 02 дек. 2014) | 2 lines - -added changelog and build script - ------------------------------------------------------------------------- -r23 | trialuser02 | 2014-12-02 09:43:23 +0300 (Вт., 02 дек. 2014) | 2 lines - -updated Russian translation - ------------------------------------------------------------------------- -r22 | trialuser02 | 2014-12-02 09:41:44 +0300 (Вт., 02 дек. 2014) | 2 lines - -added version output, fixed layout - ------------------------------------------------------------------------- -r21 | trialuser02 | 2014-12-02 09:32:36 +0300 (Вт., 02 дек. 2014) | 2 lines - -fixed README - ------------------------------------------------------------------------- -r20 | trialuser02 | 2014-12-01 23:01:49 +0300 (Пн., 01 дек. 2014) | 2 lines - -added documentation - ------------------------------------------------------------------------- -r19 | trialuser02 | 2014-12-01 22:03:24 +0300 (Пн., 01 дек. 2014) | 2 lines - -added installation support - ------------------------------------------------------------------------- -r18 | trialuser02 | 2014-12-01 21:25:45 +0300 (Пн., 01 дек. 2014) | 2 lines - -added Russian translation - ------------------------------------------------------------------------- -r17 | trialuser02 | 2014-12-01 20:59:14 +0300 (Пн., 01 дек. 2014) | 2 lines - -added desktop file - ------------------------------------------------------------------------- -r16 | trialuser02 | 2014-12-01 20:42:05 +0300 (Пн., 01 дек. 2014) | 2 lines - -removed useless files - ------------------------------------------------------------------------- -r15 | trialuser02 | 2014-12-01 20:23:57 +0300 (Пн., 01 дек. 2014) | 2 lines - -fixed oxygen theme support - ------------------------------------------------------------------------- -r14 | trialuser02 | 2014-12-01 16:26:20 +0300 (Пн., 01 дек. 2014) | 2 lines - -added empty icons - ------------------------------------------------------------------------- -r13 | trialuser02 | 2014-12-01 15:56:32 +0300 (Пн., 01 дек. 2014) | 2 lines - -added directories for images - ------------------------------------------------------------------------- -r12 | trialuser02 | 2014-12-01 15:39:45 +0300 (Пн., 01 дек. 2014) | 2 lines - -removed useless debug message - ------------------------------------------------------------------------- -r11 | trialuser02 | 2014-12-01 15:39:17 +0300 (Пн., 01 дек. 2014) | 2 lines - -added translations support - ------------------------------------------------------------------------- -r10 | trialuser02 | 2014-12-01 15:22:09 +0300 (Пн., 01 дек. 2014) | 2 lines - -fixed some ui bugs - ------------------------------------------------------------------------- -r9 | trialuser02 | 2014-12-01 15:15:59 +0300 (Пн., 01 дек. 2014) | 2 lines - -added empty translations - ------------------------------------------------------------------------- -r8 | trialuser02 | 2014-12-01 14:54:46 +0300 (Пн., 01 дек. 2014) | 2 lines - -added qt5ct.pri - ------------------------------------------------------------------------- -r7 | trialuser02 | 2014-12-01 14:48:51 +0300 (Пн., 01 дек. 2014) | 1 line - -fixed icon theme setting ------------------------------------------------------------------------- -r6 | trialuser02 | 2014-12-01 14:31:48 +0300 (Пн., 01 дек. 2014) | 1 line - -added icon theme setting ------------------------------------------------------------------------- -r5 | trialuser02 | 2014-11-28 16:19:53 +0300 (Пт., 28 нояб. 2014) | 2 lines - -added empty icon page - ------------------------------------------------------------------------- -r4 | trialuser02 | 2014-11-28 14:19:56 +0300 (Пт., 28 нояб. 2014) | 2 lines - -added feature to save window geometry - ------------------------------------------------------------------------- -r3 | trialuser02 | 2014-11-28 14:05:28 +0300 (Пт., 28 нояб. 2014) | 1 line - -fixed test script ------------------------------------------------------------------------- -r2 | trialuser02 | 2014-11-28 13:59:13 +0300 (Пт., 28 нояб. 2014) | 1 line - -project import ------------------------------------------------------------------------- -- cgit From e4d16a2f3dfde59eeb70e86de1f98832cee0b143 Mon Sep 17 00:00:00 2001 From: q5sys Date: Tue, 18 Jul 2017 16:05:32 -0400 Subject: removing COPYING as its a duplicate of LICENSE --- src-qt5/core/lumina-theme-engine/COPYING | 26 -------------------------- 1 file changed, 26 deletions(-) delete mode 100644 src-qt5/core/lumina-theme-engine/COPYING (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-theme-engine/COPYING b/src-qt5/core/lumina-theme-engine/COPYING deleted file mode 100644 index 19d541a3..00000000 --- a/src-qt5/core/lumina-theme-engine/COPYING +++ /dev/null @@ -1,26 +0,0 @@ -Copyright (c) 2014-2017, Ilya Kotov -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- cgit From ae78e6afe5ce5e2939032e83f77b360aa94f2b7e Mon Sep 17 00:00:00 2001 From: q5sys Date: Tue, 18 Jul 2017 16:07:20 -0400 Subject: add to LICENSE file --- src-qt5/core/lumina-theme-engine/LICENSE | 1 + 1 file changed, 1 insertion(+) (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-theme-engine/LICENSE b/src-qt5/core/lumina-theme-engine/LICENSE index 6d38d881..2179b01c 100644 --- a/src-qt5/core/lumina-theme-engine/LICENSE +++ b/src-qt5/core/lumina-theme-engine/LICENSE @@ -2,6 +2,7 @@ Copyright for original source of project (prior to commit a852d14 of: https://github.com/trueos/lumina/tree/master/src-qt5/core/lumina-theme-engine held by Ilya Kotov https://sourceforge.net/projects/qt5ct/ under an MIT License. +Original AUTHORS : https://sourceforge.net/p/qt5ct/code/HEAD/tree/trunk/qt5ct/AUTHORS All further commits are Copyright of q5sys under MIT License. -- cgit From 5d7a6b82004eae879c5b0ca5f45ff5fc18f4bd27 Mon Sep 17 00:00:00 2001 From: q5sys Date: Tue, 18 Jul 2017 16:07:50 -0400 Subject: removal of AUTHORS as a duplicate of LICENSE --- src-qt5/core/lumina-theme-engine/AUTHORS | 23 ----------------------- 1 file changed, 23 deletions(-) delete mode 100644 src-qt5/core/lumina-theme-engine/AUTHORS (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-theme-engine/AUTHORS b/src-qt5/core/lumina-theme-engine/AUTHORS deleted file mode 100644 index d88b0ce9..00000000 --- a/src-qt5/core/lumina-theme-engine/AUTHORS +++ /dev/null @@ -1,23 +0,0 @@ -Developers: - - Ilya Kotov , - -Translators: - - Arabic - abouzakaria kov - Bulgarian - Kiril Kirilov - Chinese (Simplified) - Cary Tian - Chinese (Taiwan) - Jeff Huang - Czech - fri - French - David GEIGER , Adrien DAUGABEL , - papoteur - Greek - Dimitrios Glentadakis - Hebrew - Genghis Khan, Elkana Birdugo - Dutch (Netherlands) - Heimen Stoffels - German - Ettore Atalan, Mario Blättermann - Italian - Luigi Baldoni - Polish - Tomasz Przybył (FadeMind) - Russian - Ilya Kotov - Serbian - markosm - Slovak - Ján Ďanovský - Spanish - jcn363 -- cgit From 6860fcf1d967fe8fc57007f9119f4cd70e673897 Mon Sep 17 00:00:00 2001 From: q5sys Date: Tue, 18 Jul 2017 16:08:29 -0400 Subject: removal of Changelog --- src-qt5/core/lumina-theme-engine/ChangeLog | 221 ----------------------------- 1 file changed, 221 deletions(-) delete mode 100644 src-qt5/core/lumina-theme-engine/ChangeLog (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-theme-engine/ChangeLog b/src-qt5/core/lumina-theme-engine/ChangeLog deleted file mode 100644 index 0c285c37..00000000 --- a/src-qt5/core/lumina-theme-engine/ChangeLog +++ /dev/null @@ -1,221 +0,0 @@ -Changelog of the Qt5 Configuration Tool - ------------ -Version 0.1 -* first test release - -Version 0.2 -* fixed palette preview -* fixed preview window -* fixed some widget positions -* fixed Russian translation - -Version 0.3 -* added gui settings - -Version 0.4 -* added font config generation -* fixed segmentation fault in the preview window -* updated Russian translation - -Version 0.5 -* added dialog buttons layout setting -* added feature to change install prefix -* updated Russian translation - -Version 0.6 -* added style sheet settings -* added transifex integration -* updated Russian translation - -Version 0.7 -* added feature to rename style sheet -* added context menu to the style sheet list -* added feature to apply theme for running applications -* added Chinese (Taiwan) translation (Jeff Huang) -* added Czech translation (fri) -* added German translation (Mario Blättermann) -* updated Russian translation - -Version 0.8 -* improved icon theme parsing -* added Bulgarian translation (Kiril Kirilov) -* fixed plugin metadata -* fixed font updating issue -* fixed Russian translation - -Version 0.9 -* added more user friendly color roles -* added feature to disable qss support -* added Dutch (Netherlands) translation (Heimen Stoffels) -* updated Chinese (Taiwan) translation (Jeff Huang) -* updated Czech translation (fri) -* updated Bulgarian translation (Kiril Kirilov) -* updated German translation (Mario Blättermann) -* updated Russian translation - -Version 0.10 -* added more debug messages -* added Greek translation (Dimitrios Glentadakis) -* moved home page to sf.net -* fixed qss path - -Version 0.11 -* added Polish translation (FadeMind) -* removed private headers usage -* improved build scripts -* fixed settings updating issue -* fixed font setting -* fixed fonts.conf generation -* fixed segmentation fault on "widget-less" applications -* updated German translation (Ettore Atalan) - -Version 0.12 -* added Chinese Simplified translation (Cary Tian) -* fixed infinite loop in the icon theme parser (Sergey A. Sukiyazov) - -Version 0.13 -* added $XDG_DATA_HOME support -* added Italian translation (Luigi Baldoni) - -Version 0.14 -* added option "Dialog buttons have icons" -* added option "Menus have icons" -* fixed style and palette initialization -* updated Russian translation -* updated German translation (Ettore Atalan) -* updated Dutch (Netherlands) translation (Heimen Stoffels) -* updated Chinese (Taiwan) translation (Jeff Huang) - -Version 0.15 -* fixed problem with qtcurve style -* updated Czech translation (fri) - -Version 0.16 -* added feature to save palette editor geometry -* changed palette editor layout -* updated Chinese Simplified translation (Cary Tian) - -Version 0.17 -* fixed crash in qupzilla -* updated Greek translation (Dimitrios Glentadakis) - -Version 0.18 -* added color schemes support -* updated Dutch (Netherlands) translation (Heimen Stoffels) -* updated German translation (Ettore Atalan) -* updated Polish translation (FadeMind) -* updated Chinese (Taiwan) translation (Jeff Huang) -* updated Russian translation - -Version 0.19 -* added feature to save geometry of the style sheet editor -* fixed qt5ct.desktop -* updated Greek translation (Dimitrios Glentadakis) -* updated Czech translation (fri) -* updated Chinese Simplified translation (Cary Tian) - -Version 0.20 -* fixed widget spacing -* fixed typo -* updated Bulgarian translation (Kiril Kirilov) -* updated Italian translation (Luigi Baldoni) - -Version 0.21 -* added option "Activate item on signle-click" -* added Spanish translation (jcn363) -* added Slovak translation (Ján Ďanovský) -* updated Polish translation (FadeMind) -* updated Dutch (Netherlands) translation (Heimen Stoffels) -* updated Czech translation (fri) -* updated Chinese (Taiwan) translation (Jeff Huang) - -Version 0.22 -* disabled html mode in the qss editor -* fixed issue with overriding style sheets -* added Hebrew translation (Genghis Khan) -* updated Italian translation (Luigi Baldoni) -* updated documentation - -Version 0.23 -* added support for single line comments in the style sheets -* fixed issue with overriding application palette -* updated Bulgarian translation (Kiril Kirilov) - -Version 0.24 -* added feature to preview color scheme on edit -* added icons for some actions -* fixed palette editor -* fixed documentation -* fixed infinite recursion in the icon theme parser (patch by Sergey A. Sukiyazov) -* updated Greek translation (Dimitrios Glentadakis) - -Version 0.25 -* added environment variables verification -* added French translation (Geiger David) -* updated Slovak translation (Ján Ďanovský) -* updated Russian translation -* updated Czech translation (fri) -* updated German translation (Ettore Atalan) -* updated Dutch (Netherlands) translation (Heimen Stoffels) -* updated Polish translation (Tomasz Przybył) -* updated Chinese (Taiwan) translation (Jeff Huang) - -Version 0.26 -* fixed stellarium compatibility -* updated French translation (Geiger David) -* updated Greek translation (Dimitrios Glentadakis) - -Version 0.27 -* added D-Bus tray support -* added feature to disable debug output -* updated documentation - -Version 0.28 -* added Qt 5.8 support -* added qt5ct proxy-style plugin -* added Serbian translation (markosm) -* updated Bulgarian translation (Kiril Kirilov) -* updated Italian translation (Luigi Baldoni) -* updated Russian translation -* updated Dutch (Netherlands) translation (Heimen Stoffels) -* updated Czech translation (fri) -* updated German translation (Atalanttore) -* updated Chinese (Taiwan) translation (Jeff Huang) - -Version 0.29 -* fixed libqt5ct-style.so installation path (Philip Müller) -* updated Greek translation (Dimitrios Glentadakis) - -Version 0.30 -* fixed crash on nonexistent style in qt5ct.conf -* fixed issue with KDE color themes -* updated documentation -* updated Bulgarian translation (Kiril Kirilov) -* updated French translation (Geiger David) - -Version 0.31 -* added option "Toolbar button style" -* added option "Mouse wheel scroll lines" -* added test for minimal Qt version -* added Arabic translation (abouzakaria kov) -* using c++11 for source code -* fixed Qt 5.4 support -* updated Russian translation -* updated Bulgarian translation (Kiril Kirilov) -* updated Dutch (Netherlands) translation (Heimen Stoffels) -* updated Chinese (Taiwan) translation (Jeff Huang) -* updated German translation (Ettore Atalan) -* updated Serbian translation (markosm) -* updated Czech translation (fri) - -Version 0.32 -* added global menu support -* updated Czech translation (fri) -* updated Greek translation (Dimitrios Glentadakis) -* updated Russian translation - -Version 0.33 -* fixed build without dbus support (coacher) -* fixed Qt 5.6 support (coacher) -* updated Hebrew translation (Elkana Birdugo) -- cgit From 015a103eaad33b38780c43d49d7de01174cd71ab Mon Sep 17 00:00:00 2001 From: q5sys Date: Tue, 18 Jul 2017 16:10:02 -0400 Subject: removal of duplicate README --- src-qt5/core/lumina-theme-engine/README | 55 --------------------------------- 1 file changed, 55 deletions(-) delete mode 100644 src-qt5/core/lumina-theme-engine/README (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-theme-engine/README b/src-qt5/core/lumina-theme-engine/README deleted file mode 100644 index 7cbcab98..00000000 --- a/src-qt5/core/lumina-theme-engine/README +++ /dev/null @@ -1,55 +0,0 @@ -qt5ct - Qt5 Configuration Tool - -This program allows users to configure Qt5 settings (theme, font, icons, etc.) -under DE/WM without Qt integration. - -Official home page: https://sourceforge.net/projects/qt5ct/ - -Requirements: - -- GNU Linux or FreeBSD -- qtbase >= 5.4.0 -- qtsvg >= 5.4.0 (For svg icons) -- qttools >= 5.4.0 (For build only) - - -Installation: - -qmake PREFIX= -make -make install (under root) - -Add line 'export QT_QPA_PLATFORMTHEME=qt5ct' to ~/.profile and re-login. -Alternatively, create the file /etc/X11/Xsession.d/100-qt5ct with -the following line: - -export QT_QPA_PLATFORMTHEME=qt5ct - -Now restart X11 server to take the changes effect. - -Extra build options (for advanced users only): -qmake DISABLE_WIDGETS=1 - compiles platform plugin without QtWidgets (useful for QML applications only) -qmake PLUGINDIR= - changes the default installation path of the plugins (libqt5ct.so and libqt5ct-style.so) - -Debug Messages: - -By default, platform plugin prints debug information to stderr. To disable this behaviour, you should -export the following environment variable: - -export QT_LOGGIN_RULES="qt5ct.debug=false" - -Another way is to change qtlogging.ini file. See Qt documentation for details: -http://doc.qt.io/qt-5/qloggingcategory.html (paragraph "Configuring Categories") - -Files and Directories: - -qt5ct - Qt5 configuration tool -libqt5ct.so - qt5ct platform plugin -libqt5ct-style.so - qt5ct proxy style plugin -~/.config/qt5ct/qt5ct.conf - configuration file -~/.config/qt5ct/qss/ - style sheets - - -Translation: - -Use Transifex service: https://www.transifex.com/projects/p/qt5ct/ -- cgit From 022fe54ed7c30fc840ffd82cb9796f47ddfefb0e Mon Sep 17 00:00:00 2001 From: q5sys Date: Tue, 18 Jul 2017 16:15:05 -0400 Subject: rename .pro file --- .../lumina-theme-engine/lumina-theme-engine.pro | 31 ++++++++++++++++++++++ src-qt5/core/lumina-theme-engine/qt5ct.pro | 6 ----- 2 files changed, 31 insertions(+), 6 deletions(-) create mode 100644 src-qt5/core/lumina-theme-engine/lumina-theme-engine.pro (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-theme-engine/lumina-theme-engine.pro b/src-qt5/core/lumina-theme-engine/lumina-theme-engine.pro new file mode 100644 index 00000000..94391f8b --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/lumina-theme-engine.pro @@ -0,0 +1,31 @@ +TEMPLATE = subdirs + +SUBDIRS += src/qt5ct-qtplugin src/qt5ct-style src/qt5ct + +unix:exists($$[QT_INSTALL_BINS]/lrelease){ +LRELEASE_EXECUTABLE = $$[QT_INSTALL_BINS]/lrelease +} + +unix:exists($$[QT_INSTALL_BINS]/lrelease-qt5){ +LRELEASE_EXECUTABLE = $$[QT_INSTALL_BINS]/lrelease-qt5 +} + + + +isEmpty(LRELEASE_EXECUTABLE){ +error(Could not find lrelease executable) +} +else { +message(Found lrelease executable: $$LRELEASE_EXECUTABLE) +} + +message(generating translations) +unix:system(find . -name *.ts | xargs $$LRELEASE_EXECUTABLE) + +include(qt5ct.pri) + +message (PREFIX=$$PREFIX) +message (BINDIR=$$BINDIR) +message (DATADIR=$$DATADIR) +message (PLUGINDIR=$$PLUGINDIR) +equals (DISABLE_WIDGETS,1):message ("QtWidgets are disabled!") diff --git a/src-qt5/core/lumina-theme-engine/qt5ct.pro b/src-qt5/core/lumina-theme-engine/qt5ct.pro index 427f9512..94391f8b 100644 --- a/src-qt5/core/lumina-theme-engine/qt5ct.pro +++ b/src-qt5/core/lumina-theme-engine/qt5ct.pro @@ -2,7 +2,6 @@ TEMPLATE = subdirs SUBDIRS += src/qt5ct-qtplugin src/qt5ct-style src/qt5ct - unix:exists($$[QT_INSTALL_BINS]/lrelease){ LRELEASE_EXECUTABLE = $$[QT_INSTALL_BINS]/lrelease } @@ -12,10 +11,6 @@ LRELEASE_EXECUTABLE = $$[QT_INSTALL_BINS]/lrelease-qt5 } -win32:exists($$[QT_INSTALL_BINS]/lrelease.exe){ -LRELEASE_EXECUTABLE = $$[QT_INSTALL_BINS]/lrelease.exe -} - isEmpty(LRELEASE_EXECUTABLE){ error(Could not find lrelease executable) @@ -26,7 +21,6 @@ message(Found lrelease executable: $$LRELEASE_EXECUTABLE) message(generating translations) unix:system(find . -name *.ts | xargs $$LRELEASE_EXECUTABLE) -win32:system(for /r %B in (*.ts) do $$LRELEASE_EXECUTABLE %B) include(qt5ct.pri) -- cgit From e9222d80f2f1c0240f433516cdeac162e3c8717f Mon Sep 17 00:00:00 2001 From: q5sys Date: Tue, 18 Jul 2017 16:16:00 -0400 Subject: rename .pri file --- src-qt5/core/lumina-theme-engine/lumina-theme-engine.pro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-theme-engine/lumina-theme-engine.pro b/src-qt5/core/lumina-theme-engine/lumina-theme-engine.pro index 94391f8b..fd7d3af1 100644 --- a/src-qt5/core/lumina-theme-engine/lumina-theme-engine.pro +++ b/src-qt5/core/lumina-theme-engine/lumina-theme-engine.pro @@ -22,7 +22,7 @@ message(Found lrelease executable: $$LRELEASE_EXECUTABLE) message(generating translations) unix:system(find . -name *.ts | xargs $$LRELEASE_EXECUTABLE) -include(qt5ct.pri) +include(lumina-theme-engine.pri) message (PREFIX=$$PREFIX) message (BINDIR=$$BINDIR) -- cgit From bc0a61342b27de6b9c658f6190481178b5d514f4 Mon Sep 17 00:00:00 2001 From: q5sys Date: Tue, 18 Jul 2017 16:20:54 -0400 Subject: update to dir structure --- .../lumina-theme-engine/lumina-theme-engine.pro | 2 +- src-qt5/core/lumina-theme-engine/qt5ct.pri | 33 - src-qt5/core/lumina-theme-engine/qt5ct.pro | 31 - .../src/qt5ct-qtplugin/main.cpp | 52 -- .../src/qt5ct-qtplugin/qt5ct-qtplugin.pro | 35 - .../src/qt5ct-qtplugin/qt5ct.json | 3 - .../src/qt5ct-qtplugin/qt5ctplatformtheme.cpp | 366 ----------- .../src/qt5ct-qtplugin/qt5ctplatformtheme.h | 122 ---- .../lumina-theme-engine/src/qt5ct-style/plugin.cpp | 57 -- .../src/qt5ct-style/qt5ct-style.pro | 26 - .../lumina-theme-engine/src/qt5ct-style/qt5ct.json | 3 - .../src/qt5ct-style/qt5ctproxystyle.cpp | 63 -- .../src/qt5ct-style/qt5ctproxystyle.h | 50 -- .../src/qt5ct/appearancepage.cpp | 418 ------------ .../lumina-theme-engine/src/qt5ct/appearancepage.h | 79 --- .../src/qt5ct/appearancepage.ui | 243 ------- .../qt5ct/desktop-translations/qt5ct_ar.desktop.in | 33 - .../qt5ct/desktop-translations/qt5ct_bg.desktop.in | 33 - .../qt5ct/desktop-translations/qt5ct_cs.desktop.in | 33 - .../qt5ct/desktop-translations/qt5ct_de.desktop.in | 33 - .../qt5ct/desktop-translations/qt5ct_el.desktop.in | 33 - .../desktop-translations/qt5ct_es_ES.desktop.in | 29 - .../qt5ct/desktop-translations/qt5ct_fr.desktop.in | 33 - .../qt5ct/desktop-translations/qt5ct_he.desktop.in | 33 - .../desktop-translations/qt5ct_it_IT.desktop.in | 32 - .../desktop-translations/qt5ct_nl_NL.desktop.in | 33 - .../qt5ct/desktop-translations/qt5ct_pl.desktop.in | 32 - .../qt5ct/desktop-translations/qt5ct_ru.desktop.in | 19 - .../qt5ct/desktop-translations/qt5ct_sk.desktop.in | 30 - .../qt5ct/desktop-translations/qt5ct_sr.desktop.in | 33 - .../desktop-translations/qt5ct_zh_CN.desktop.in | 29 - .../desktop-translations/qt5ct_zh_TW.desktop.in | 33 - .../src/qt5ct/fontconfigdialog.cpp | 138 ---- .../src/qt5ct/fontconfigdialog.h | 56 -- .../src/qt5ct/fontconfigdialog.ui | 160 ----- .../lumina-theme-engine/src/qt5ct/fontspage.cpp | 126 ---- .../core/lumina-theme-engine/src/qt5ct/fontspage.h | 62 -- .../lumina-theme-engine/src/qt5ct/fontspage.ui | 134 ---- .../src/qt5ct/iconthemepage.cpp | 214 ------- .../lumina-theme-engine/src/qt5ct/iconthemepage.h | 57 -- .../lumina-theme-engine/src/qt5ct/iconthemepage.ui | 51 -- .../src/qt5ct/interfacepage.cpp | 140 ---- .../lumina-theme-engine/src/qt5ct/interfacepage.h | 54 -- .../lumina-theme-engine/src/qt5ct/interfacepage.ui | 327 ---------- .../core/lumina-theme-engine/src/qt5ct/main.cpp | 84 --- .../lumina-theme-engine/src/qt5ct/mainwindow.cpp | 90 --- .../lumina-theme-engine/src/qt5ct/mainwindow.h | 57 -- .../lumina-theme-engine/src/qt5ct/mainwindow.ui | 47 -- .../src/qt5ct/paletteeditdialog.cpp | 146 ----- .../src/qt5ct/paletteeditdialog.h | 68 -- .../src/qt5ct/paletteeditdialog.ui | 120 ---- .../lumina-theme-engine/src/qt5ct/previewform.ui | 76 --- .../src/qt5ct/qsseditordialog.cpp | 85 --- .../src/qt5ct/qsseditordialog.h | 59 -- .../src/qt5ct/qsseditordialog.ui | 47 -- .../core/lumina-theme-engine/src/qt5ct/qsspage.cpp | 232 ------- .../core/lumina-theme-engine/src/qt5ct/qsspage.h | 66 -- .../core/lumina-theme-engine/src/qt5ct/qsspage.ui | 84 --- .../core/lumina-theme-engine/src/qt5ct/qt5ct.cpp | 115 ---- .../lumina-theme-engine/src/qt5ct/qt5ct.desktop | 60 -- src-qt5/core/lumina-theme-engine/src/qt5ct/qt5ct.h | 60 -- .../core/lumina-theme-engine/src/qt5ct/qt5ct.pro | 57 -- .../core/lumina-theme-engine/src/qt5ct/tabpage.cpp | 33 - .../core/lumina-theme-engine/src/qt5ct/tabpage.h | 43 -- .../src/qt5ct/translations/qt5ct_ar.ts | 709 -------------------- .../src/qt5ct/translations/qt5ct_bg.ts | 709 -------------------- .../src/qt5ct/translations/qt5ct_ca.ts | 709 -------------------- .../src/qt5ct/translations/qt5ct_cs.ts | 709 -------------------- .../src/qt5ct/translations/qt5ct_de.ts | 709 -------------------- .../src/qt5ct/translations/qt5ct_el.ts | 710 --------------------- .../src/qt5ct/translations/qt5ct_en.ts | 709 -------------------- .../src/qt5ct/translations/qt5ct_es.ts | 709 -------------------- .../src/qt5ct/translations/qt5ct_es_ES.ts | 709 -------------------- .../src/qt5ct/translations/qt5ct_fr.ts | 709 -------------------- .../src/qt5ct/translations/qt5ct_gl_ES.ts | 709 -------------------- .../src/qt5ct/translations/qt5ct_he.ts | 709 -------------------- .../src/qt5ct/translations/qt5ct_hu.ts | 709 -------------------- .../src/qt5ct/translations/qt5ct_it.ts | 709 -------------------- .../src/qt5ct/translations/qt5ct_it_IT.ts | 709 -------------------- .../src/qt5ct/translations/qt5ct_ja.ts | 709 -------------------- .../src/qt5ct/translations/qt5ct_kk.ts | 709 -------------------- .../src/qt5ct/translations/qt5ct_lt.ts | 709 -------------------- .../src/qt5ct/translations/qt5ct_nl.ts | 709 -------------------- .../src/qt5ct/translations/qt5ct_nl_NL.ts | 709 -------------------- .../src/qt5ct/translations/qt5ct_pl.ts | 709 -------------------- .../src/qt5ct/translations/qt5ct_pt.ts | 709 -------------------- .../src/qt5ct/translations/qt5ct_pt_BR.ts | 709 -------------------- .../src/qt5ct/translations/qt5ct_ru.ts | 709 -------------------- .../src/qt5ct/translations/qt5ct_sk.ts | 709 -------------------- .../src/qt5ct/translations/qt5ct_sr.ts | 709 -------------------- .../src/qt5ct/translations/qt5ct_sr_BA.ts | 709 -------------------- .../src/qt5ct/translations/qt5ct_sr_RS.ts | 709 -------------------- .../src/qt5ct/translations/qt5ct_tr.ts | 709 -------------------- .../src/qt5ct/translations/qt5ct_uk_UA.ts | 709 -------------------- .../src/qt5ct/translations/qt5ct_zh_CN.ts | 709 -------------------- .../src/qt5ct/translations/qt5ct_zh_TW.ts | 709 -------------------- .../src/qt5ct/translations/translations.qrc | 36 -- 97 files changed, 1 insertion(+), 27956 deletions(-) delete mode 100644 src-qt5/core/lumina-theme-engine/qt5ct.pri delete mode 100644 src-qt5/core/lumina-theme-engine/qt5ct.pro delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct-qtplugin/main.cpp delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct-qtplugin/qt5ct-qtplugin.pro delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct-qtplugin/qt5ct.json delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct-qtplugin/qt5ctplatformtheme.cpp delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct-qtplugin/qt5ctplatformtheme.h delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct-style/plugin.cpp delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct-style/qt5ct-style.pro delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct-style/qt5ct.json delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct-style/qt5ctproxystyle.cpp delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct-style/qt5ctproxystyle.h delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/appearancepage.cpp delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/appearancepage.h delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/appearancepage.ui delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_ar.desktop.in delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_bg.desktop.in delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_cs.desktop.in delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_de.desktop.in delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_el.desktop.in delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_es_ES.desktop.in delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_fr.desktop.in delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_he.desktop.in delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_it_IT.desktop.in delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_nl_NL.desktop.in delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_pl.desktop.in delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_ru.desktop.in delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_sk.desktop.in delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_sr.desktop.in delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_zh_CN.desktop.in delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_zh_TW.desktop.in delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/fontconfigdialog.cpp delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/fontconfigdialog.h delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/fontconfigdialog.ui delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/fontspage.cpp delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/fontspage.h delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/fontspage.ui delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/iconthemepage.cpp delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/iconthemepage.h delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/iconthemepage.ui delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/interfacepage.cpp delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/interfacepage.h delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/interfacepage.ui delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/main.cpp delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/mainwindow.cpp delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/mainwindow.h delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/mainwindow.ui delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/paletteeditdialog.cpp delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/paletteeditdialog.h delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/paletteeditdialog.ui delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/previewform.ui delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/qsseditordialog.cpp delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/qsseditordialog.h delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/qsseditordialog.ui delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/qsspage.cpp delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/qsspage.h delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/qsspage.ui delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/qt5ct.cpp delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/qt5ct.desktop delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/qt5ct.h delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/qt5ct.pro delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/tabpage.cpp delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/tabpage.h delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_ar.ts delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_bg.ts delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_ca.ts delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_cs.ts delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_de.ts delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_el.ts delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_en.ts delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_es.ts delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_es_ES.ts delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_fr.ts delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_gl_ES.ts delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_he.ts delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_hu.ts delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_it.ts delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_it_IT.ts delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_ja.ts delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_kk.ts delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_lt.ts delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_nl.ts delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_nl_NL.ts delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_pl.ts delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_pt.ts delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_pt_BR.ts delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_ru.ts delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_sk.ts delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_sr.ts delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_sr_BA.ts delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_sr_RS.ts delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_tr.ts delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_uk_UA.ts delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_zh_CN.ts delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_zh_TW.ts delete mode 100644 src-qt5/core/lumina-theme-engine/src/qt5ct/translations/translations.qrc (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-theme-engine/lumina-theme-engine.pro b/src-qt5/core/lumina-theme-engine/lumina-theme-engine.pro index fd7d3af1..891d3a44 100644 --- a/src-qt5/core/lumina-theme-engine/lumina-theme-engine.pro +++ b/src-qt5/core/lumina-theme-engine/lumina-theme-engine.pro @@ -1,6 +1,6 @@ TEMPLATE = subdirs -SUBDIRS += src/qt5ct-qtplugin src/qt5ct-style src/qt5ct +SUBDIRS += src/lthemeengine-qtplugin src/lthemeengine-style src/lthemeengine unix:exists($$[QT_INSTALL_BINS]/lrelease){ LRELEASE_EXECUTABLE = $$[QT_INSTALL_BINS]/lrelease diff --git a/src-qt5/core/lumina-theme-engine/qt5ct.pri b/src-qt5/core/lumina-theme-engine/qt5ct.pri deleted file mode 100644 index c9fe0cb7..00000000 --- a/src-qt5/core/lumina-theme-engine/qt5ct.pri +++ /dev/null @@ -1,33 +0,0 @@ -#Some conf to redirect intermediate stuff in separate dirs -UI_DIR=./.build/ui/ -MOC_DIR=./.build/moc/ -OBJECTS_DIR=./.build/obj -RCC_DIR=./.build/rcc - -QMAKE_DISTCLEAN += -r .build -QMAKE_DISTCLEAN += translations/*.qm - -CONFIG += c++11 - -!isEqual (QT_MAJOR_VERSION, 5) { - error("Use Qt 5.4.0 or higher.") -} - -!greaterThan(QT_MINOR_VERSION, 3) { - error("Use Qt 5.4.0 or higher.") -} - -#Install paths -unix { - isEmpty(PREFIX) { - PREFIX = /usr - } - isEmpty(PLUGINDIR) { - PLUGINDIR = $$[QT_INSTALL_PLUGINS] - } - - BINDIR = $$PREFIX/bin - DATADIR = $$PREFIX/share - - DEFINES += QT5CT_DATADIR=\\\"$$DATADIR\\\" -} diff --git a/src-qt5/core/lumina-theme-engine/qt5ct.pro b/src-qt5/core/lumina-theme-engine/qt5ct.pro deleted file mode 100644 index 94391f8b..00000000 --- a/src-qt5/core/lumina-theme-engine/qt5ct.pro +++ /dev/null @@ -1,31 +0,0 @@ -TEMPLATE = subdirs - -SUBDIRS += src/qt5ct-qtplugin src/qt5ct-style src/qt5ct - -unix:exists($$[QT_INSTALL_BINS]/lrelease){ -LRELEASE_EXECUTABLE = $$[QT_INSTALL_BINS]/lrelease -} - -unix:exists($$[QT_INSTALL_BINS]/lrelease-qt5){ -LRELEASE_EXECUTABLE = $$[QT_INSTALL_BINS]/lrelease-qt5 -} - - - -isEmpty(LRELEASE_EXECUTABLE){ -error(Could not find lrelease executable) -} -else { -message(Found lrelease executable: $$LRELEASE_EXECUTABLE) -} - -message(generating translations) -unix:system(find . -name *.ts | xargs $$LRELEASE_EXECUTABLE) - -include(qt5ct.pri) - -message (PREFIX=$$PREFIX) -message (BINDIR=$$BINDIR) -message (DATADIR=$$DATADIR) -message (PLUGINDIR=$$PLUGINDIR) -equals (DISABLE_WIDGETS,1):message ("QtWidgets are disabled!") diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct-qtplugin/main.cpp b/src-qt5/core/lumina-theme-engine/src/qt5ct-qtplugin/main.cpp deleted file mode 100644 index e49004d8..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct-qtplugin/main.cpp +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (c) 2014-2017, Ilya Kotov - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include "qt5ctplatformtheme.h" - -QT_BEGIN_NAMESPACE - -class Qt5CTPlatformThemePlugin: public QPlatformThemePlugin -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QPA.QPlatformThemeFactoryInterface.5.1" FILE "qt5ct.json") -public: - QPlatformTheme *create(const QString &key, const QStringList ¶ms); -}; - -QPlatformTheme *Qt5CTPlatformThemePlugin::create(const QString &key, const QStringList ¶ms) -{ - Q_UNUSED(params); - if (key.toLower() == "qt5ct") - return new Qt5CTPlatformTheme(); - return NULL; -} - -QT_END_NAMESPACE - -#include "main.moc" diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct-qtplugin/qt5ct-qtplugin.pro b/src-qt5/core/lumina-theme-engine/src/qt5ct-qtplugin/qt5ct-qtplugin.pro deleted file mode 100644 index 9dd3eae4..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct-qtplugin/qt5ct-qtplugin.pro +++ /dev/null @@ -1,35 +0,0 @@ -include(../../qt5ct.pri) - -TEMPLATE = lib -TARGET = qt5ct -CONFIG += plugin - -greaterThan(QT_MINOR_VERSION, 7) { - QT += gui-private theme_support-private -} else { - QT += gui-private platformsupport-private -} - -!contains(DEFINES, QT_NO_DBUS):greaterThan(QT_MINOR_VERSION, 5) { - QT += dbus -} - -SOURCES += \ - main.cpp \ - qt5ctplatformtheme.cpp \ - ../qt5ct/qt5ct.cpp - -!equals (DISABLE_WIDGETS,1) { - QT += widgets -} - -OTHER_FILES += qt5ct.json - -INCLUDEPATH += ../ - -HEADERS += \ - qt5ctplatformtheme.h \ - ../qt5ct/qt5ct.h - -target.path = $$PLUGINDIR/platformthemes -INSTALLS += target diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct-qtplugin/qt5ct.json b/src-qt5/core/lumina-theme-engine/src/qt5ct-qtplugin/qt5ct.json deleted file mode 100644 index 55466151..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct-qtplugin/qt5ct.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "Keys": [ "qt5ct" ] -} diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct-qtplugin/qt5ctplatformtheme.cpp b/src-qt5/core/lumina-theme-engine/src/qt5ct-qtplugin/qt5ctplatformtheme.cpp deleted file mode 100644 index 4c20d68f..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct-qtplugin/qt5ctplatformtheme.cpp +++ /dev/null @@ -1,366 +0,0 @@ -/* - * Copyright (c) 2014-2017, Ilya Kotov - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#ifdef QT_WIDGETS_LIB -#include -#include -#include -#include -#endif -#include -#include - -#include -#include "qt5ctplatformtheme.h" -#if (QT_VERSION >= QT_VERSION_CHECK(5, 7, 0)) && !defined(QT_NO_DBUS) -#include -#endif -#if !defined(QT_NO_DBUS) && !defined(QT_NO_SYSTEMTRAYICON) -#include -#include -#endif - - - -Q_LOGGING_CATEGORY(lqt5ct, "qt5ct") - -//QT_QPA_PLATFORMTHEME=qt5ct - -Qt5CTPlatformTheme::Qt5CTPlatformTheme() -{ - if(QGuiApplication::desktopSettingsAware()) - { - readSettings(); - QMetaObject::invokeMethod(this, "applySettings", Qt::QueuedConnection); -#ifdef QT_WIDGETS_LIB - QMetaObject::invokeMethod(this, "createFSWatcher", Qt::QueuedConnection); -#endif - QGuiApplication::setFont(m_generalFont); - } - qCDebug(lqt5ct) << "using qt5ct plugin"; -#ifdef QT_WIDGETS_LIB - if(!QStyleFactory::keys().contains("qt5ct-style")) - qCCritical(lqt5ct) << "unable to find qt5ct proxy style"; -#endif -} - -Qt5CTPlatformTheme::~Qt5CTPlatformTheme() -{ - if(m_customPalette) - delete m_customPalette; -} - -#if (QT_VERSION >= QT_VERSION_CHECK(5, 7, 0)) && !defined(QT_NO_DBUS) -QPlatformMenuBar *Qt5CTPlatformTheme::createPlatformMenuBar() const -{ - if(m_checkDBusGlobalMenu) - { - QDBusConnection conn = QDBusConnection::sessionBus(); - m_dbusGlobalMenuAvailable = conn.interface()->isServiceRegistered("com.canonical.AppMenu.Registrar"); - qCDebug(lqt5ct) << "D-Bus global menu:" << (m_dbusGlobalMenuAvailable ? "yes" : "no"); - } - return (m_dbusGlobalMenuAvailable ? new QDBusMenuBar() : nullptr); -} -#endif - -#if !defined(QT_NO_DBUS) && !defined(QT_NO_SYSTEMTRAYICON) -QPlatformSystemTrayIcon *Qt5CTPlatformTheme::createPlatformSystemTrayIcon() const -{ - if(m_checkDBusTray) - { - QDBusMenuConnection conn; - m_dbusTrayAvailable = conn.isStatusNotifierHostRegistered(); - m_checkDBusTray = false; - qCDebug(lqt5ct) << "D-Bus system tray:" << (m_dbusTrayAvailable ? "yes" : "no"); - } - return (m_dbusTrayAvailable ? new QDBusTrayIcon() : nullptr); -} -#endif - -const QPalette *Qt5CTPlatformTheme::palette(QPlatformTheme::Palette type) const -{ - Q_UNUSED(type); - return (m_usePalette ? m_customPalette : nullptr); -} - -const QFont *Qt5CTPlatformTheme::font(QPlatformTheme::Font type) const -{ - if(type == QPlatformTheme::FixedFont) - return &m_fixedFont; - return &m_generalFont; -} - -QVariant Qt5CTPlatformTheme::themeHint(QPlatformTheme::ThemeHint hint) const -{ - switch (hint) - { - case QPlatformTheme::CursorFlashTime: - return m_cursorFlashTime; - case MouseDoubleClickInterval: - return m_doubleClickInterval; - case QPlatformTheme::ToolButtonStyle: - return m_toolButtonStyle; - case QPlatformTheme::SystemIconThemeName: - return m_iconTheme; - case QPlatformTheme::StyleNames: - return QStringList() << "qt5ct-style"; - case QPlatformTheme::IconThemeSearchPaths: - return Qt5CT::iconPaths(); - case DialogButtonBoxLayout: - return m_buttonBoxLayout; - case QPlatformTheme::UiEffects: - return m_uiEffects; -#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) - case QPlatformTheme::WheelScrollLines: - return m_wheelScrollLines; -#endif - default: - return QPlatformTheme::themeHint(hint); - } -} - -void Qt5CTPlatformTheme::applySettings() -{ - if(!QGuiApplication::desktopSettingsAware()) - return; - -#if (QT_VERSION >= QT_VERSION_CHECK(5, 5, 0)) - if(!m_update) - { - //do not override application palette - if(QCoreApplication::testAttribute(Qt::AA_SetPalette)) - { - m_usePalette = false; - qCDebug(lqt5ct) << "palette support is disabled"; - } - } -#endif - -#ifdef QT_WIDGETS_LIB - if(hasWidgets()) - { - qApp->setFont(m_generalFont); - - //Qt 5.6 or higher should be use themeHint function on application startup. - //So, there is no need to call this function first time. -#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) - if(m_update) - qApp->setWheelScrollLines(m_wheelScrollLines); -#else - qApp->setWheelScrollLines(m_wheelScrollLines); -#endif - - if(m_update && qApp->style()->objectName() == "qt5ct-style") //ignore application style - qApp->setStyle("qt5ct-style"); //recreate style object - - if(m_update && m_usePalette) - { - if(m_customPalette) - qApp->setPalette(*m_customPalette); - else - qApp->setPalette(qApp->style()->standardPalette()); - } - - //do not override application style - if(m_prevStyleSheet == qApp->styleSheet()) - qApp->setStyleSheet(m_userStyleSheet); - else - qCDebug(lqt5ct) << "custom style sheet is disabled"; - m_prevStyleSheet = m_userStyleSheet; - } -#endif - QGuiApplication::setFont(m_generalFont); //apply font - QIcon::setThemeName(m_iconTheme); //apply icons - if(m_customPalette && m_usePalette) - QGuiApplication::setPalette(*m_customPalette); //apply palette - -#ifdef QT_WIDGETS_LIB - if(hasWidgets()) - { - foreach (QWidget *w, qApp->allWidgets()) - { - QEvent e(QEvent::ThemeChange); - QApplication::sendEvent(w, &e); - } - } -#endif - - if(!m_update) - m_update = true; -} - -#ifdef QT_WIDGETS_LIB -void Qt5CTPlatformTheme::createFSWatcher() -{ - QFileSystemWatcher *watcher = new QFileSystemWatcher(this); - watcher->addPath(Qt5CT::configPath()); - - QTimer *timer = new QTimer(this); - timer->setSingleShot(true); - timer->setInterval(3000); - connect(watcher, SIGNAL(directoryChanged(QString)), timer, SLOT(start())); - connect(timer, SIGNAL(timeout()), SLOT(updateSettings())); -} - -void Qt5CTPlatformTheme::updateSettings() -{ - qCDebug(lqt5ct) << "updating settings.."; - readSettings(); - applySettings(); -} -#endif - -void Qt5CTPlatformTheme::readSettings() -{ - if(m_customPalette) - { - delete m_customPalette; - m_customPalette = 0; - } - - QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); - - settings.beginGroup("Appearance"); - m_style = settings.value("style", "Fusion").toString(); - if(settings.value("custom_palette", false).toBool()) - { - QString schemePath = settings.value("color_scheme_path").toString(); - m_customPalette = new QPalette(loadColorScheme(schemePath)); - } - m_iconTheme = settings.value("icon_theme").toString(); - settings.endGroup(); - - settings.beginGroup("Fonts"); - m_generalFont = settings.value("general", QPlatformTheme::font(QPlatformTheme::SystemFont)).value(); - m_fixedFont = settings.value("fixed", QPlatformTheme::font(QPlatformTheme::FixedFont)).value(); - settings.endGroup(); - - settings.beginGroup("Interface"); - m_doubleClickInterval = QPlatformTheme::themeHint(QPlatformTheme::MouseDoubleClickInterval).toInt(); - m_doubleClickInterval = settings.value("double_click_interval", m_doubleClickInterval).toInt(); - m_cursorFlashTime = QPlatformTheme::themeHint(QPlatformTheme::CursorFlashTime).toInt(); - m_cursorFlashTime = settings.value("cursor_flash_time", m_cursorFlashTime).toInt(); - m_buttonBoxLayout = QPlatformTheme::themeHint(QPlatformTheme::DialogButtonBoxLayout).toInt(); - m_buttonBoxLayout = settings.value("buttonbox_layout", m_buttonBoxLayout).toInt(); - QCoreApplication::setAttribute(Qt::AA_DontShowIconsInMenus, !settings.value("menus_have_icons", true).toBool()); - m_toolButtonStyle = settings.value("toolbutton_style", Qt::ToolButtonFollowStyle).toInt(); - m_wheelScrollLines = settings.value("wheel_scroll_lines", 3).toInt(); - - //load effects - m_uiEffects = QPlatformTheme::themeHint(QPlatformTheme::UiEffects).toInt(); - if(settings.childKeys().contains("gui_effects")) - { - QStringList effectList = settings.value("gui_effects").toStringList(); - m_uiEffects = 0; - if(effectList.contains("General")) - m_uiEffects |= QPlatformTheme::GeneralUiEffect; - if(effectList.contains("AnimateMenu")) - m_uiEffects |= QPlatformTheme::AnimateMenuUiEffect; - if(effectList.contains("FadeMenu")) - m_uiEffects |= QPlatformTheme::FadeMenuUiEffect; - if(effectList.contains("AnimateCombo")) - m_uiEffects |= QPlatformTheme::AnimateComboUiEffect; - if(effectList.contains("AnimateTooltip")) - m_uiEffects |= QPlatformTheme::AnimateTooltipUiEffect; - if(effectList.contains("FadeTooltip")) - m_uiEffects |= QPlatformTheme::FadeTooltipUiEffect; - if(effectList.contains("AnimateToolBox")) - m_uiEffects |= QPlatformTheme::AnimateToolBoxUiEffect; - } - - //load style sheets -#ifdef QT_WIDGETS_LIB - QStringList qssPaths = settings.value("stylesheets").toStringList(); - m_userStyleSheet = loadStyleSheets(qssPaths); -#endif - settings.endGroup(); -} - -#ifdef QT_WIDGETS_LIB -bool Qt5CTPlatformTheme::hasWidgets() -{ - return qobject_cast (qApp) != nullptr; -} -#endif - -QString Qt5CTPlatformTheme::loadStyleSheets(const QStringList &paths) -{ - QString content; - foreach (QString path, paths) - { - if(!QFile::exists(path)) - continue; - - QFile file(path); - file.open(QIODevice::ReadOnly); - content.append(file.readAll()); - } - QRegExp regExp("//.*(\\n|$)"); - regExp.setMinimal(true); - content.remove(regExp); - return content; -} - -QPalette Qt5CTPlatformTheme::loadColorScheme(const QString &filePath) -{ - QPalette customPalette; - QSettings settings(filePath, QSettings::IniFormat); - settings.beginGroup("ColorScheme"); - QStringList activeColors = settings.value("active_colors").toStringList(); - QStringList inactiveColors = settings.value("inactive_colors").toStringList(); - QStringList disabledColors = settings.value("disabled_colors").toStringList(); - settings.endGroup(); - - if(activeColors.count() == QPalette::NColorRoles && - inactiveColors.count() == QPalette::NColorRoles && - disabledColors.count() == QPalette::NColorRoles) - { - for (int i = 0; i < QPalette::NColorRoles; i++) - { - QPalette::ColorRole role = QPalette::ColorRole(i); - customPalette.setColor(QPalette::Active, role, QColor(activeColors.at(i))); - customPalette.setColor(QPalette::Inactive, role, QColor(inactiveColors.at(i))); - customPalette.setColor(QPalette::Disabled, role, QColor(disabledColors.at(i))); - } - } - else - { - customPalette = *QPlatformTheme::palette(SystemPalette); //load fallback palette - } - - return customPalette; -} diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct-qtplugin/qt5ctplatformtheme.h b/src-qt5/core/lumina-theme-engine/src/qt5ct-qtplugin/qt5ctplatformtheme.h deleted file mode 100644 index 8eb3cf6a..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct-qtplugin/qt5ctplatformtheme.h +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright (c) 2014-2017, Ilya Kotov - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef QT5CTPLATFORMTHEME_H -#define QT5CTPLATFORMTHEME_H - -#include -#include -#include -#include -#include - -#if (QT_VERSION < QT_VERSION_CHECK(5, 5, 0)) -#ifndef QT_NO_SYSTEMTRAYICON -#define QT_NO_SYSTEMTRAYICON -#endif -#endif - -class QPalette; -#if !defined(QT_NO_DBUS) && !defined(QT_NO_SYSTEMTRAYICON) -class QPlatformSystemTrayIcon; -#endif - -#if (QT_VERSION >= QT_VERSION_CHECK(5, 7, 0)) && !defined(QT_NO_DBUS) -class QPlatformMenuBar; -#endif - -class Qt5CTPlatformTheme : public QObject, public QPlatformTheme -{ - Q_OBJECT -public: - Qt5CTPlatformTheme(); - - virtual ~Qt5CTPlatformTheme(); - - - //virtual QPlatformMenuItem* createPlatformMenuItem() const; - //virtual QPlatformMenu* createPlatformMenu() const; -#if (QT_VERSION >= QT_VERSION_CHECK(5, 7, 0)) && !defined(QT_NO_DBUS) - virtual QPlatformMenuBar* createPlatformMenuBar() const; -#endif - //virtual void showPlatformMenuBar() {} - //virtual bool usePlatformNativeDialog(DialogType type) const; - //virtual QPlatformDialogHelper *createPlatformDialogHelper(DialogType type) const; -#if !defined(QT_NO_DBUS) && !defined(QT_NO_SYSTEMTRAYICON) - virtual QPlatformSystemTrayIcon *createPlatformSystemTrayIcon() const; -#endif - virtual const QPalette *palette(Palette type = SystemPalette) const; - virtual const QFont *font(Font type = SystemFont) const; - virtual QVariant themeHint(ThemeHint hint) const; - //virtual QPixmap standardPixmap(StandardPixmap sp, const QSizeF &size) const; - //virtual QPixmap fileIconPixmap(const QFileInfo &fileInfo, const QSizeF &size, - // QPlatformTheme::IconOptions iconOptions = 0) const; - - //virtual QIconEngine *createIconEngine(const QString &iconName) const; - //virtual QList keyBindings(QKeySequence::StandardKey key) const; - //virtual QString standardButtonText(int button) const; - -private slots: - void applySettings(); -#ifdef QT_WIDGETS_LIB - void createFSWatcher(); - void updateSettings(); -#endif - -private: - void readSettings(); -#ifdef QT_WIDGETS_LIB - bool hasWidgets(); -#endif - QString loadStyleSheets(const QStringList &paths); - QPalette loadColorScheme(const QString &filePath); - QString m_style, m_iconTheme, m_userStyleSheet, m_prevStyleSheet; - QPalette *m_customPalette = nullptr; - QFont m_generalFont, m_fixedFont; - int m_doubleClickInterval; - int m_cursorFlashTime; - int m_uiEffects; - int m_buttonBoxLayout; - bool m_update = false; - bool m_usePalette = true; - int m_toolButtonStyle = Qt::ToolButtonFollowStyle; - int m_wheelScrollLines = 3; -#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) && !defined(QT_NO_DBUS) - mutable bool m_dbusGlobalMenuAvailable = false; - mutable bool m_checkDBusGlobalMenu = true; -#endif -#if !defined(QT_NO_DBUS) && !defined(QT_NO_SYSTEMTRAYICON) - mutable bool m_dbusTrayAvailable = false; - mutable bool m_checkDBusTray = true; -#endif - -}; - -Q_DECLARE_LOGGING_CATEGORY(lqt5ct) - -#endif // QT5CTPLATFORMTHEME_H diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct-style/plugin.cpp b/src-qt5/core/lumina-theme-engine/src/qt5ct-style/plugin.cpp deleted file mode 100644 index 345746f3..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct-style/plugin.cpp +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2014-2017, Ilya Kotov - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include -#include -#include -#include "qt5ctproxystyle.h" - -class Qt5CTStylePlugin : public QStylePlugin -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QStyleFactoryInterface" FILE "qt5ct.json") - -public: - QStyle *create(const QString &key); -}; - -QStyle *Qt5CTStylePlugin::create(const QString &key) -{ - if (key == "qt5ct-style") - { - QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); - QString style = settings.value("Appearance/style", "Fusion").toString(); - if(key == style || !QStyleFactory::keys().contains(style)) - style = "Fusion"; - return new Qt5CTProxyStyle(style); - } - return 0; -} - -#include "plugin.moc" diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct-style/qt5ct-style.pro b/src-qt5/core/lumina-theme-engine/src/qt5ct-style/qt5ct-style.pro deleted file mode 100644 index e6f6dc1c..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct-style/qt5ct-style.pro +++ /dev/null @@ -1,26 +0,0 @@ -include(../../qt5ct.pri) - -TEMPLATE = lib -TARGET = qt5ct-style -QT += widgets - -# Input - -CONFIG += plugin - -target.path = $$PLUGINDIR/styles -INSTALLS += target - -INCLUDEPATH += ../ - -HEADERS += \ - qt5ctproxystyle.h \ - ../qt5ct/qt5ct.h - -SOURCES += \ - plugin.cpp \ - qt5ctproxystyle.cpp \ - ../qt5ct/qt5ct.cpp - -OTHER_FILES += \ - qt5ct.json diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct-style/qt5ct.json b/src-qt5/core/lumina-theme-engine/src/qt5ct-style/qt5ct.json deleted file mode 100644 index 3c42f2d3..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct-style/qt5ct.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "Keys": [ "qt5ct-style" ] -} diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct-style/qt5ctproxystyle.cpp b/src-qt5/core/lumina-theme-engine/src/qt5ct-style/qt5ctproxystyle.cpp deleted file mode 100644 index f3b33d5e..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct-style/qt5ctproxystyle.cpp +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (c) 2014-2017, Ilya Kotov - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include -#include "qt5ctproxystyle.h" - -Qt5CTProxyStyle::Qt5CTProxyStyle(const QString &key) : - QProxyStyle(key) -{ - QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); - m_dialogButtonsHaveIcons = settings.value("Interface/dialog_buttons_have_icons", Qt::PartiallyChecked).toInt(); - m_activateItemOnSingleClick = settings.value("Interface/activate_item_on_single_click", Qt::PartiallyChecked).toInt(); -} - -Qt5CTProxyStyle::~Qt5CTProxyStyle() -{ - //qDebug("%s", Q_FUNC_INFO); -} - -int Qt5CTProxyStyle::styleHint(QStyle::StyleHint hint, const QStyleOption *option, const QWidget *widget, QStyleHintReturn *returnData) const -{ - if(hint == QStyle::SH_DialogButtonBox_ButtonsHaveIcons) - { - if(m_dialogButtonsHaveIcons == Qt::Unchecked) - return 0; - else if(m_dialogButtonsHaveIcons == Qt::Checked) - return 1; - } - else if(hint == QStyle::QStyle::SH_ItemView_ActivateItemOnSingleClick) - { - if(m_activateItemOnSingleClick == Qt::Unchecked) - return 0; - else if(m_activateItemOnSingleClick == Qt::Checked) - return 1; - } - return QProxyStyle::styleHint(hint, option, widget, returnData); -} diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct-style/qt5ctproxystyle.h b/src-qt5/core/lumina-theme-engine/src/qt5ct-style/qt5ctproxystyle.h deleted file mode 100644 index 842247cf..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct-style/qt5ctproxystyle.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) 2014-2017, Ilya Kotov - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef QT5CTPROXYSTYLE_H -#define QT5CTPROXYSTYLE_H - -#include - -class Qt5CTProxyStyle : public QProxyStyle -{ - Q_OBJECT -public: - explicit Qt5CTProxyStyle(const QString &key); - - virtual ~Qt5CTProxyStyle(); - - int styleHint(StyleHint hint, const QStyleOption *option, const QWidget *widget, QStyleHintReturn *returnData) const; - -private: - int m_dialogButtonsHaveIcons; - int m_activateItemOnSingleClick; - -}; - -#endif // QT5CTPROXYSTYLE_H diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/appearancepage.cpp b/src-qt5/core/lumina-theme-engine/src/qt5ct/appearancepage.cpp deleted file mode 100644 index 4183dec1..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/appearancepage.cpp +++ /dev/null @@ -1,418 +0,0 @@ -/* - * Copyright (c) 2014-2017, Ilya Kotov - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include "qt5ct.h" -#include "appearancepage.h" -#include "paletteeditdialog.h" -#include "ui_appearancepage.h" -#include "ui_previewform.h" - -AppearancePage::AppearancePage(QWidget *parent) : - TabPage(parent), - m_ui(new Ui::AppearancePage) -{ - m_ui->setupUi(this); - QStringList keys = QStyleFactory::keys(); - keys.removeAll("qt5ct-style"); //hide qt5ct proxy style - m_ui->styleComboBox->addItems(keys); - - connect(m_ui->paletteComboBox, SIGNAL(activated(int)), SLOT(updatePalette())); - connect(m_ui->customPaletteButton, SIGNAL(clicked()), SLOT(updatePalette())); - connect(m_ui->defaultPaletteButton, SIGNAL(clicked()), SLOT(updatePalette())); - - m_previewWidget = new QWidget(this); - m_previewUi = new Ui::PreviewForm(); - m_previewUi->setupUi(m_previewWidget); - QMdiSubWindow *w = m_ui->mdiArea->addSubWindow(m_previewWidget, Qt::CustomizeWindowHint - | Qt::WindowMinMaxButtonsHint - | Qt::WindowTitleHint); - w->move(10, 10); - - QMenu *menu = new QMenu(this); - menu->addAction(QIcon::fromTheme("list-add"), tr("Create"), this, SLOT(createColorScheme())); - m_changeColorSchemeAction = menu->addAction(tr("Edit"), this, SLOT(changeColorScheme())); - menu->addAction(tr("Create a Copy"), this, SLOT(copyColorScheme())); - m_renameColorSchemeAction = menu->addAction(tr("Rename"), this, SLOT(renameColorScheme())); - menu->addSeparator(); - m_removeColorSchemeAction = menu->addAction(tr("Remove"), this, SLOT(removeColorScheme())); - m_ui->colorSchemeButton->setMenu(menu); - - m_changeColorSchemeAction->setIcon(QIcon::fromTheme("accessories-text-editor")); - m_removeColorSchemeAction->setIcon(QIcon::fromTheme("list-remove")); - connect(menu, SIGNAL(aboutToShow()), SLOT(updateActions())); - - readSettings(); -} - -AppearancePage::~AppearancePage() -{ - if(m_selectedStyle) - delete m_selectedStyle; - delete m_ui; - delete m_previewUi; -} - -void AppearancePage::writeSettings() -{ - QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); - settings.beginGroup("Appearance"); - settings.setValue("style", m_ui->styleComboBox->currentText()); - settings.setValue("custom_palette", m_ui->customPaletteButton->isChecked()); - settings.setValue("color_scheme_path", m_ui->colorSchemeComboBox->currentData().toString()); - settings.endGroup(); -} - -void AppearancePage::on_styleComboBox_activated(const QString &text) -{ - QStyle *style = QStyleFactory::create(text); - if(!style) - return; - setStyle(m_previewWidget, style); - - if(m_selectedStyle) - delete m_selectedStyle; - m_selectedStyle = style; - - updatePalette(); -} - -void AppearancePage::on_colorSchemeComboBox_activated(int) -{ - m_customPalette = loadColorScheme(m_ui->colorSchemeComboBox->currentData().toString()); - updatePalette(); -} - -void AppearancePage::createColorScheme() -{ - QString name = QInputDialog::getText(this, tr("Enter Color Scheme Name"), tr("File name:")); - if(name.isEmpty()) - return; - - if(!name.endsWith(".conf", Qt::CaseInsensitive)) - name.append(".conf"); - - if(m_ui->colorSchemeComboBox->findText(name.section('.',0,0)) != -1) - { - QMessageBox::warning(this, tr("Error"), tr("The color scheme \"%1\" already exists") - .arg(name.section('.',0,0))); - return; - } - - QString schemePath = Qt5CT::userColorSchemePath() + "/" + name; - - createColorScheme(schemePath, palette()); - m_ui->colorSchemeComboBox->addItem(name.section('.',0,0), schemePath); -} - -void AppearancePage::changeColorScheme() -{ - if(m_ui->colorSchemeComboBox->currentIndex() < 0) - return; - - if(!QFileInfo(m_ui->colorSchemeComboBox->currentData().toString()).isWritable()) - { - QMessageBox::information(this, tr("Warning"), tr("The color scheme \"%1\" is read only") - .arg(m_ui->colorSchemeComboBox->currentText())); - return; - } - - PaletteEditDialog d(m_customPalette, m_selectedStyle, this); - connect(&d, SIGNAL(paletteChanged(QPalette)), SLOT(setPreviewPalette(QPalette))); - if(d.exec() == QDialog::Accepted) - { - m_customPalette = d.selectedPalette(); - createColorScheme(m_ui->colorSchemeComboBox->currentData().toString(), m_customPalette); - } - updatePalette(); -} - -void AppearancePage::removeColorScheme() -{ - int index = m_ui->colorSchemeComboBox->currentIndex(); - if(index < 0 || m_ui->colorSchemeComboBox->count() <= 1) - return; - - if(!QFileInfo(m_ui->colorSchemeComboBox->currentData().toString()).isWritable()) - { - QMessageBox::information(this, tr("Warning"), tr("The color scheme \"%1\" is read only") - .arg(m_ui->colorSchemeComboBox->currentText())); - return; - } - - int button = QMessageBox::question(this, tr("Confirm Remove"), - tr("Are you sure you want to remove color scheme \"%1\"?") - .arg(m_ui->colorSchemeComboBox->currentText()), - QMessageBox::Yes | QMessageBox::No); - if(button != QMessageBox::Yes) - return; - - if(QFile::remove(m_ui->colorSchemeComboBox->currentData().toString())) - { - m_ui->colorSchemeComboBox->removeItem(index); - on_colorSchemeComboBox_activated(0); - } -} - -void AppearancePage::copyColorScheme() -{ - if(m_ui->colorSchemeComboBox->currentIndex() < 0) - return; - - QString name = QInputDialog::getText(this, tr("Enter Color Scheme Name"), tr("File name:"), - QLineEdit::Normal, - tr("%1 (copy)").arg(m_ui->colorSchemeComboBox->currentText())); - if(name.isEmpty() || name == m_ui->colorSchemeComboBox->currentText()) - return; - - if(!name.endsWith(".conf", Qt::CaseInsensitive)) - name.append(".conf"); - - if(m_ui->colorSchemeComboBox->findText(name.section('.',0,0)) != -1) - { - QMessageBox::warning(this, tr("Error"), tr("The color scheme \"%1\" already exists") - .arg(name.section('.',0,0))); - return; - } - - QString newPath = Qt5CT::userColorSchemePath() + "/" + name; - QFile::copy(m_ui->colorSchemeComboBox->currentData().toString(), newPath); - m_ui->colorSchemeComboBox->addItem(name.section('.',0,0), newPath); -} - -void AppearancePage::renameColorScheme() -{ - int index = m_ui->colorSchemeComboBox->currentIndex(); - - if(index < 0) - return; - - if(!QFileInfo(m_ui->colorSchemeComboBox->currentData().toString()).isWritable()) - { - QMessageBox::information(this, tr("Warning"), tr("The color scheme \"%1\" is read only") - .arg(m_ui->colorSchemeComboBox->currentText())); - return; - } - - QString name = QInputDialog::getText(this, tr("Enter Color Scheme Name"), tr("File name:"), - QLineEdit::Normal, m_ui->colorSchemeComboBox->currentText()); - if(name.isEmpty() || name == m_ui->colorSchemeComboBox->currentText()) - return; - - if(!name.endsWith(".conf", Qt::CaseInsensitive)) - name.append(".conf"); - - if(m_ui->colorSchemeComboBox->findText(name.section('.',0,0)) != -1) - { - QMessageBox::warning(this, tr("Error"), tr("The color scheme \"%1\" already exists") - .arg(name.section('.',0,0))); - return; - } - - QString newPath = Qt5CT::userColorSchemePath() + "/" + name; - QFile::rename(m_ui->colorSchemeComboBox->currentData().toString(), newPath); - m_ui->colorSchemeComboBox->setItemText(index, name.section('.',0,0)); - m_ui->colorSchemeComboBox->setItemData(index, newPath); -} - -void AppearancePage::updatePalette() -{ - if(!m_selectedStyle) - return; - - setPreviewPalette(m_ui->customPaletteButton->isChecked() ? - m_customPalette : m_selectedStyle->standardPalette()); -} - -void AppearancePage::setPreviewPalette(const QPalette &p) -{ - QPalette previewPalette = palette(); - - QPalette::ColorGroup colorGroup = QPalette::Disabled; - - if(m_ui->paletteComboBox->currentIndex() == 0) - { - colorGroup = QPalette::Active; - } - else if(m_ui->paletteComboBox->currentIndex() == 1) - { - colorGroup = QPalette::Inactive; - } - - for (int i = 0; i < QPalette::NColorRoles; i++) - { - QPalette::ColorRole role = QPalette::ColorRole(i); - previewPalette.setColor(QPalette::Active, role, p.color(colorGroup, role)); - previewPalette.setColor(QPalette::Inactive, role, p.color(colorGroup, role)); - } - - setPalette(m_ui->mdiArea, previewPalette); -} - -void AppearancePage::updateActions() -{ - if(m_ui->colorSchemeComboBox->count() == 0 || - !QFileInfo(m_ui->colorSchemeComboBox->currentData().toString()).isWritable()) - { - m_changeColorSchemeAction->setVisible(false); - m_renameColorSchemeAction->setVisible(false); - m_removeColorSchemeAction->setVisible(false); - } - else - { - m_changeColorSchemeAction->setVisible(true); - m_renameColorSchemeAction->setVisible(true); - m_removeColorSchemeAction->setVisible(m_ui->colorSchemeComboBox->count() > 1); - } -} - -void AppearancePage::readSettings() -{ - QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); - settings.beginGroup("Appearance"); - QString style = settings.value("style", "Fusion").toString(); - m_ui->styleComboBox->setCurrentText(style); - - m_ui->customPaletteButton->setChecked(settings.value("custom_palette", false).toBool()); - QString colorSchemePath = settings.value("color_scheme_path").toString(); - - QDir("/").mkpath(Qt5CT::userColorSchemePath()); - findColorSchemes(Qt5CT::userColorSchemePath()); - findColorSchemes(Qt5CT::sharedColorSchemePath()); - - if(m_ui->colorSchemeComboBox->count() == 0) - { - m_customPalette = palette(); //load fallback palette - } - else - { - int index = m_ui->colorSchemeComboBox->findData(colorSchemePath); - if(index >= 0) - m_ui->colorSchemeComboBox->setCurrentIndex(index); - m_customPalette = loadColorScheme(m_ui->colorSchemeComboBox->currentData().toString()); - } - - on_styleComboBox_activated(m_ui->styleComboBox->currentText()); - - settings.endGroup(); -} - -void AppearancePage::setStyle(QWidget *w, QStyle *s) -{ - foreach (QObject *o, w->children()) - { - if(o->isWidgetType()) - { - setStyle(qobject_cast(o), s); - } - } - w->setStyle(s); -} - -void AppearancePage::setPalette(QWidget *w, QPalette p) -{ - foreach (QObject *o, w->children()) - { - if(o->isWidgetType()) - { - setPalette(qobject_cast(o), p); - } - } - w->setPalette(p); -} - -void AppearancePage::findColorSchemes(const QString &path) -{ - QDir dir(path); - dir.setFilter(QDir::Files); - dir.setNameFilters(QStringList() << "*.conf"); - - foreach (QFileInfo info, dir.entryInfoList()) - { - m_ui->colorSchemeComboBox->addItem(info.baseName(), info.filePath()); - } -} - -QPalette AppearancePage::loadColorScheme(const QString &filePath) -{ - QPalette customPalette; - QSettings settings(filePath, QSettings::IniFormat); - settings.beginGroup("ColorScheme"); - QStringList activeColors = settings.value("active_colors").toStringList(); - QStringList inactiveColors = settings.value("inactive_colors").toStringList(); - QStringList disabledColors = settings.value("disabled_colors").toStringList(); - settings.endGroup(); - - if(activeColors.count() == QPalette::NColorRoles && - inactiveColors.count() == QPalette::NColorRoles && - disabledColors.count() == QPalette::NColorRoles) - { - for (int i = 0; i < QPalette::NColorRoles; i++) - { - QPalette::ColorRole role = QPalette::ColorRole(i); - customPalette.setColor(QPalette::Active, role, QColor(activeColors.at(i))); - customPalette.setColor(QPalette::Inactive, role, QColor(inactiveColors.at(i))); - customPalette.setColor(QPalette::Disabled, role, QColor(disabledColors.at(i))); - } - } - else - { - customPalette = palette(); //load fallback palette - } - - return customPalette; -} - -void AppearancePage::createColorScheme(const QString &name, const QPalette &palette) -{ - QSettings settings(name, QSettings::IniFormat); - settings.beginGroup("ColorScheme"); - - QStringList activeColors, inactiveColors, disabledColors; - for (int i = 0; i < QPalette::NColorRoles; i++) - { - QPalette::ColorRole role = QPalette::ColorRole(i); - activeColors << palette.color(QPalette::Active, role).name(); - inactiveColors << palette.color(QPalette::Inactive, role).name(); - disabledColors << palette.color(QPalette::Disabled, role).name(); - } - - settings.setValue("active_colors",activeColors); - settings.setValue("inactive_colors",inactiveColors); - settings.setValue("disabled_colors",disabledColors); - - settings.endGroup(); - -} diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/appearancepage.h b/src-qt5/core/lumina-theme-engine/src/qt5ct/appearancepage.h deleted file mode 100644 index 3a7752c7..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/appearancepage.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright (c) 2014-2017, Ilya Kotov - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef APPEARANCEPAGE_H -#define APPEARANCEPAGE_H - -#include "tabpage.h" - -namespace Ui { -class AppearancePage; -class PreviewForm; -} - -class QStyle; -class QAction; - -class AppearancePage : public TabPage -{ - Q_OBJECT - -public: - explicit AppearancePage(QWidget *parent = 0); - ~AppearancePage(); - - void writeSettings(); - -private slots: - void on_styleComboBox_activated(const QString &text); - void on_colorSchemeComboBox_activated(int); - void createColorScheme(); - void changeColorScheme(); - void removeColorScheme(); - void copyColorScheme(); - void renameColorScheme(); - void updatePalette(); - void setPreviewPalette(const QPalette &p); - void updateActions(); - -private: - void readSettings(); - void setStyle(QWidget *w, QStyle *s); - void setPalette(QWidget *w, QPalette p); - void findColorSchemes(const QString &path); - QPalette loadColorScheme(const QString &filePath); - void createColorScheme(const QString &name, const QPalette &palette); - Ui::AppearancePage *m_ui; - QStyle *m_selectedStyle = nullptr; - QPalette m_customPalette; - QWidget *m_previewWidget; - QAction *m_changeColorSchemeAction, *m_renameColorSchemeAction, *m_removeColorSchemeAction; - Ui::PreviewForm *m_previewUi; -}; - -#endif // APPEARANCEPAGE_H diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/appearancepage.ui b/src-qt5/core/lumina-theme-engine/src/qt5ct/appearancepage.ui deleted file mode 100644 index cd442930..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/appearancepage.ui +++ /dev/null @@ -1,243 +0,0 @@ - - - AppearancePage - - - - 0 - 0 - 596 - 470 - - - - Form - - - - - - Style: - - - - - - - Preview - - - - - - - Active palette - - - - - Inactive palette - - - - - Disabled palette - - - - - - - - Qt::Horizontal - - - - 82 - 20 - - - - - - - - false - - - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Palette - - - - - - 6 - - - - - Default - - - true - - - - - - - Custom - - - - - - - Qt::Horizontal - - - - 230 - 20 - - - - - - - - - - - - false - - - Color scheme: - - - - - - - false - - - - 150 - 0 - - - - - - - - false - - - ... - - - QToolButton::InstantPopup - - - Qt::NoArrow - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - - - customPaletteButton - toggled(bool) - colorScheeLabel - setEnabled(bool) - - - 160 - 79 - - - 77 - 104 - - - - - customPaletteButton - toggled(bool) - colorSchemeComboBox - setEnabled(bool) - - - 144 - 75 - - - 146 - 100 - - - - - customPaletteButton - toggled(bool) - colorSchemeButton - setEnabled(bool) - - - 177 - 78 - - - 288 - 116 - - - - - diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_ar.desktop.in b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_ar.desktop.in deleted file mode 100644 index 084c5d7e..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_ar.desktop.in +++ /dev/null @@ -1,33 +0,0 @@ -[Desktop Entry] -X-Desktop-File-Install-Version=0.11 -Name=Qt5 Settings - -Comment=Qt5 Configuration Tool - - - - - - - - - - - - - - - - - -Exec=qt5ct -Icon=preferences-desktop-theme -Terminal=false -Type=Application -Categories=Settings;DesktopSettings;Qt; - - -# Translations -Comment[ar]= أداة اعداد Qt5 -Name[ar]=إعدادات Qt5 -Icon[ar]=preferences-desktop-theme diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_bg.desktop.in b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_bg.desktop.in deleted file mode 100644 index 59010466..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_bg.desktop.in +++ /dev/null @@ -1,33 +0,0 @@ -[Desktop Entry] -X-Desktop-File-Install-Version=0.11 -Name=Qt5 Settings - -Comment=Qt5 Configuration Tool - - - - - - - - - - - - - - - - - -Exec=qt5ct -Icon=preferences-desktop-theme -Terminal=false -Type=Application -Categories=Settings;DesktopSettings;Qt; - - -# Translations -Comment[bg]=Инструмент за настройка на Qt5 -Name[bg]=Настройки на Qt5 -Icon[bg]=настройки-десктоп-тема diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_cs.desktop.in b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_cs.desktop.in deleted file mode 100644 index 9884c7c9..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_cs.desktop.in +++ /dev/null @@ -1,33 +0,0 @@ -[Desktop Entry] -X-Desktop-File-Install-Version=0.11 -Name=Qt5 Settings - -Comment=Qt5 Configuration Tool - - - - - - - - - - - - - - - - - -Exec=qt5ct -Icon=preferences-desktop-theme -Terminal=false -Type=Application -Categories=Settings;DesktopSettings;Qt; - - -# Translations -Comment[cs]=Nástroj na nastavení Qt5 -Name[cs]=Nastavení Qt5 -Icon[cs]=nastavení-prostředí-téma diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_de.desktop.in b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_de.desktop.in deleted file mode 100644 index abfd2a2a..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_de.desktop.in +++ /dev/null @@ -1,33 +0,0 @@ -[Desktop Entry] -X-Desktop-File-Install-Version=0.11 -Name=Qt5 Settings - -Comment=Qt5 Configuration Tool - - - - - - - - - - - - - - - - - -Exec=qt5ct -Icon=preferences-desktop-theme -Terminal=false -Type=Application -Categories=Settings;DesktopSettings;Qt; - - -# Translations -Comment[de]=Qt5-Konfigurationswerkzeug -Name[de]=Qt5-Einstellungen -Icon[de]=preferences-desktop-theme diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_el.desktop.in b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_el.desktop.in deleted file mode 100644 index 76f5f7bc..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_el.desktop.in +++ /dev/null @@ -1,33 +0,0 @@ -[Desktop Entry] -X-Desktop-File-Install-Version=0.11 -Name=Qt5 Settings - -Comment=Qt5 Configuration Tool - - - - - - - - - - - - - - - - - -Exec=qt5ct -Icon=preferences-desktop-theme -Terminal=false -Type=Application -Categories=Settings;DesktopSettings;Qt; - - -# Translations -Comment[el]=Εργαλείο διαμόρφωσης της Qt5 -Name[el]=Ρυθμίσεις Qt5 -Icon[el]=preferences-desktop-theme diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_es_ES.desktop.in b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_es_ES.desktop.in deleted file mode 100644 index 06ebaa8b..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_es_ES.desktop.in +++ /dev/null @@ -1,29 +0,0 @@ -[Desktop Entry] -X-Desktop-File-Install-Version=0.11 -Name=Qt5 Settings - -Comment=Qt5 Configuration Tool - - - - - - - - - - - - - -Exec=qt5ct -Icon=preferences-desktop-theme -Terminal=false -Type=Application -Categories=Settings;DesktopSettings;Qt; - - -# Translations -Comment[es_ES]=Herramienta de configuración de QT5 -Name[es_ES]=Ajustes QT5 -Icon[es_ES]=preferencias-tema-escritorio diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_fr.desktop.in b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_fr.desktop.in deleted file mode 100644 index ca58174a..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_fr.desktop.in +++ /dev/null @@ -1,33 +0,0 @@ -[Desktop Entry] -X-Desktop-File-Install-Version=0.11 -Name=Qt5 Settings - -Comment=Qt5 Configuration Tool - - - - - - - - - - - - - - - - - -Exec=qt5ct -Icon=preferences-desktop-theme -Terminal=false -Type=Application -Categories=Settings;DesktopSettings;Qt; - - -# Translations -Comment[fr]=Un outil de configuration de Qt5 -Name[fr]=Paramètres de Qt5 -Icon[fr]=preferences-desktop-theme diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_he.desktop.in b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_he.desktop.in deleted file mode 100644 index 78c49195..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_he.desktop.in +++ /dev/null @@ -1,33 +0,0 @@ -[Desktop Entry] -X-Desktop-File-Install-Version=0.11 -Name=Qt5 Settings - -Comment=Qt5 Configuration Tool - - - - - - - - - - - - - - - - - -Exec=qt5ct -Icon=preferences-desktop-theme -Terminal=false -Type=Application -Categories=Settings;DesktopSettings;Qt; - - -# Translations -Comment[he]=כלי תצורה Qt5 -Name[he]=הגדרות Qt5 -Icon[he]=preferences-desktop-theme diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_it_IT.desktop.in b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_it_IT.desktop.in deleted file mode 100644 index 266f85fa..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_it_IT.desktop.in +++ /dev/null @@ -1,32 +0,0 @@ -[Desktop Entry] -X-Desktop-File-Install-Version=0.11 -Name=Qt5 Settings - -Comment=Qt5 Configuration Tool - - - - - - - - - - - - - - - - -Exec=qt5ct -Icon=preferences-desktop-theme -Terminal=false -Type=Application -Categories=Settings;DesktopSettings;Qt; - - -# Translations -Comment[it_IT]=Strumento di configurazione Qt5 -Name[it_IT]=Impostazioni Qt5 -Icon[it_IT]=preferences-desktop-theme diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_nl_NL.desktop.in b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_nl_NL.desktop.in deleted file mode 100644 index c3ef6b16..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_nl_NL.desktop.in +++ /dev/null @@ -1,33 +0,0 @@ -[Desktop Entry] -X-Desktop-File-Install-Version=0.11 -Name=Qt5 Settings - -Comment=Qt5 Configuration Tool - - - - - - - - - - - - - - - - - -Exec=qt5ct -Icon=preferences-desktop-theme -Terminal=false -Type=Application -Categories=Settings;DesktopSettings;Qt; - - -# Translations -Comment[nl_NL]=Qt5-instellingengereedschap -Name[nl_NL]=Qt5-instellingen -Icon[nl_NL]=preferences-desktop-theme diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_pl.desktop.in b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_pl.desktop.in deleted file mode 100644 index 2c4f1af0..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_pl.desktop.in +++ /dev/null @@ -1,32 +0,0 @@ -[Desktop Entry] -X-Desktop-File-Install-Version=0.11 -Name=Qt5 Settings - -Comment=Qt5 Configuration Tool - - - - - - - - - - - - - - - - -Exec=qt5ct -Icon=preferences-desktop-theme -Terminal=false -Type=Application -Categories=Settings;DesktopSettings;Qt; - - -# Translations -Comment[pl]=Narzędzie konfiguracji Qt5 -Name[pl]=Ustawienia Qt5 -Icon[pl]=preferences-desktop-theme diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_ru.desktop.in b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_ru.desktop.in deleted file mode 100644 index 7e4e0076..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_ru.desktop.in +++ /dev/null @@ -1,19 +0,0 @@ -[Desktop Entry] -X-Desktop-File-Install-Version=0.11 -Name=Qt5 Settings - -Comment=Qt5 Configuration Tool - - - - - - -Exec=qt5ct -Icon=preferences-desktop-theme -Terminal=false -Type=Application -Categories=Settings;DesktopSettings;Qt; - - -# Translations diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_sk.desktop.in b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_sk.desktop.in deleted file mode 100644 index d992aa9b..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_sk.desktop.in +++ /dev/null @@ -1,30 +0,0 @@ -[Desktop Entry] -X-Desktop-File-Install-Version=0.11 -Name=Qt5 Settings - -Comment=Qt5 Configuration Tool - - - - - - - - - - - - - - - -Exec=qt5ct -Icon=preferences-desktop-theme -Terminal=false -Type=Application -Categories=Settings;DesktopSettings;Qt; - - -# Translations -Comment[sk]=Qt5 konfiguračný nástroj -Name[sk]=Qt5 nastavenia diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_sr.desktop.in b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_sr.desktop.in deleted file mode 100644 index 19abdb5a..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_sr.desktop.in +++ /dev/null @@ -1,33 +0,0 @@ -[Desktop Entry] -X-Desktop-File-Install-Version=0.11 -Name=Qt5 Settings - -Comment=Qt5 Configuration Tool - - - - - - - - - - - - - - - - - -Exec=qt5ct -Icon=preferences-desktop-theme -Terminal=false -Type=Application -Categories=Settings;DesktopSettings;Qt; - - -# Translations -Comment[sr]=Qt5 конфигурациони алат -Name[sr]=Qt5 поставке -Icon[sr]=preferences-desktop-theme diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_zh_CN.desktop.in b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_zh_CN.desktop.in deleted file mode 100644 index 921ee36a..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_zh_CN.desktop.in +++ /dev/null @@ -1,29 +0,0 @@ -[Desktop Entry] -X-Desktop-File-Install-Version=0.11 -Name=Qt5 Settings - -Comment=Qt5 Configuration Tool - - - - - - - - - - - - - -Exec=qt5ct -Icon=preferences-desktop-theme -Terminal=false -Type=Application -Categories=Settings;DesktopSettings;Qt; - - -# Translations -Comment[zh_CN]=Qt5 配置工具 -Name[zh_CN]=Qt5 设置 -Icon[zh_CN]=偏好的桌面主题 diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_zh_TW.desktop.in b/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_zh_TW.desktop.in deleted file mode 100644 index af01caf8..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/desktop-translations/qt5ct_zh_TW.desktop.in +++ /dev/null @@ -1,33 +0,0 @@ -[Desktop Entry] -X-Desktop-File-Install-Version=0.11 -Name=Qt5 Settings - -Comment=Qt5 Configuration Tool - - - - - - - - - - - - - - - - - -Exec=qt5ct -Icon=preferences-desktop-theme -Terminal=false -Type=Application -Categories=Settings;DesktopSettings;Qt; - - -# Translations -Comment[zh_TW]=Qt5 設定工具 -Name[zh_TW]=Qt5 設定 -Icon[zh_TW]=偏好的桌面主題 diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/fontconfigdialog.cpp b/src-qt5/core/lumina-theme-engine/src/qt5ct/fontconfigdialog.cpp deleted file mode 100644 index 398a2436..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/fontconfigdialog.cpp +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright (c) 2014-2017, Ilya Kotov - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include -#include -#include -#include "fontconfigdialog.h" -#include "ui_fontconfigdialog.h" - -FontConfigDialog::FontConfigDialog(QWidget *parent) : - QDialog(parent), - m_ui(new Ui::FontConfigDialog) -{ - m_ui->setupUi(this); - - m_ui->hintingStyleComboBox->addItem(tr("None"), "hintnone"); - m_ui->hintingStyleComboBox->addItem(tr("Slight"), "hintslight"); - m_ui->hintingStyleComboBox->addItem(tr("Medium"), "hintmedium"); - m_ui->hintingStyleComboBox->addItem(tr("Full"), "hintfull"); - - m_ui->rgbaComboBox->addItem(tr("None"), "none"); - m_ui->rgbaComboBox->addItem("rgb", "rgb"); - m_ui->rgbaComboBox->addItem("bgr", "bgr"); - m_ui->rgbaComboBox->addItem("vrgb", "vrgb"); - m_ui->rgbaComboBox->addItem("vbgr", "vbgr"); - - m_ui->lcdFilterComboBox->addItem("lcdnone"); - m_ui->lcdFilterComboBox->addItem("lcddefault"); - m_ui->lcdFilterComboBox->addItem("lcdlight"); - m_ui->lcdFilterComboBox->addItem("lcdlegacy"); -} - -FontConfigDialog::~FontConfigDialog() -{ - delete m_ui; -} - -void FontConfigDialog::accept() -{ - QDir::home().mkpath(".config/fontconfig/"); - QString path = QDir::homePath() + "/.config/fontconfig/fonts.conf"; - qDebug("FontConfigDialog: fontconfig path: %s", qPrintable(path)); - - - if(QFile::exists(path)) - { - if(QMessageBox::question(this, tr("Font Configuration"), - tr("%1 already exists. Do you want to replace it?").arg(path), - QMessageBox::Yes | QMessageBox::No) == QMessageBox::No) - { - QDialog::reject(); - return; - } - - QFile::remove(path + ".back"); - QFile::copy(path, path + ".back"); - } - - QFile file(path); - if(!file.open(QIODevice::WriteOnly)) - { - qWarning("FontConfigDialog: unable to open file: %s", qPrintable(file.errorString())); - return; - } - - QXmlStreamWriter stream(&file); - stream.setAutoFormatting(true); - - stream.writeStartDocument(); - stream.writeDTD(""); - stream.writeStartElement("fontconfig"); - - stream.writeStartElement("match"); - stream.writeAttribute("target", "font"); - writeOption(&stream, "antialias", "bool", m_ui->antialisingCheckBox->isChecked() ? "true" : "false"); - writeOption(&stream, "hinting", "bool", m_ui->hintingCheckBox->isChecked() ? "true" : "false"); - writeOption(&stream, "hintstyle", "const", m_ui->hintingStyleComboBox->currentData().toString()); - writeOption(&stream, "rgba", "const", m_ui->rgbaComboBox->currentData().toString()); - writeOption(&stream, "autohint", "bool", m_ui->autohinterCheckBox->isChecked() ? "true" : "false"); - writeOption(&stream, "lcdfilter", "const", m_ui->lcdFilterComboBox->currentText()); - writeOption(&stream, "dpi", "double", QString::number(m_ui->dpiSpinBox->value())); - stream.writeEndElement(); - - if(m_ui->disableBoldAutohintCheckBox->isChecked()) - { - stream.writeStartElement("match"); - stream.writeAttribute("target", "font"); - - stream.writeStartElement("test"); - stream.writeAttribute("name", "weight"); - stream.writeAttribute("compare", "more"); - stream.writeTextElement("const", "medium"); - stream.writeEndElement(); - - writeOption(&stream, "autohint", "bool", m_ui->autohinterCheckBox->isChecked() ? "true" : "false"); - - stream.writeEndElement(); - } - stream.writeEndElement(); - stream.writeEndDocument(); - - QDialog::accept(); -} - -void FontConfigDialog::writeOption(QXmlStreamWriter *stream, const QString &name, const QString &type, const QString &value) -{ - stream->writeStartElement("edit"); - stream->writeAttribute("name", name); - stream->writeAttribute("mode", "assign"); - stream->writeTextElement(type, value); - stream->writeEndElement(); -} diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/fontconfigdialog.h b/src-qt5/core/lumina-theme-engine/src/qt5ct/fontconfigdialog.h deleted file mode 100644 index 5b7e31a5..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/fontconfigdialog.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2014-2017, Ilya Kotov - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef FONTCONFIGDIALOG_H -#define FONTCONFIGDIALOG_H - -#include - -namespace Ui { -class FontConfigDialog; -} - -class QXmlStreamWriter; - -class FontConfigDialog : public QDialog -{ - Q_OBJECT - -public: - explicit FontConfigDialog(QWidget *parent = 0); - ~FontConfigDialog(); - -public slots: - void accept(); - void writeOption(QXmlStreamWriter *stream, const QString &name, const QString &type, const QString &value); - -private: - Ui::FontConfigDialog *m_ui; -}; - -#endif // FONTCONFIGDIALOG_H diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/fontconfigdialog.ui b/src-qt5/core/lumina-theme-engine/src/qt5ct/fontconfigdialog.ui deleted file mode 100644 index a557695f..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/fontconfigdialog.ui +++ /dev/null @@ -1,160 +0,0 @@ - - - FontConfigDialog - - - - 0 - 0 - 349 - 286 - - - - Font Configuration - - - - 6 - - - 6 - - - 6 - - - - - Disable automatic hinting for bold fonts - - - - - - - LCD filter: - - - - - - - Automatic hinting - - - - - - - Hinting - - - - - - - Qt::Horizontal - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - - - - - Font resolution: - - - - - - - - - - - - - - - - Subpixel geometry: - - - - - - - Antialiasing - - - - - - - Hinting style: - - - - - - - - 0 - 0 - - - - dpi - - - 80 - - - 180 - - - 102 - - - - - - - - - buttonBox - accepted() - FontConfigDialog - accept() - - - 248 - 254 - - - 157 - 274 - - - - - buttonBox - rejected() - FontConfigDialog - reject() - - - 316 - 260 - - - 286 - 274 - - - - - diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/fontspage.cpp b/src-qt5/core/lumina-theme-engine/src/qt5ct/fontspage.cpp deleted file mode 100644 index ac9fb164..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/fontspage.cpp +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Copyright (c) 2014-2017, Ilya Kotov - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include -#include -#include -#include -#include -#include -#include "qt5ct.h" -#include "fontspage.h" -#include "fontconfigdialog.h" -#include "ui_fontspage.h" - -FontsPage::FontsPage(QWidget *parent) : - TabPage(parent), - m_ui(new Ui::FontsPage) -{ - m_ui->setupUi(this); - - QSignalMapper *mapper = new QSignalMapper(this); - mapper->setMapping(m_ui->changeGeneralFontButton, m_ui->generalFontLabel); - mapper->setMapping(m_ui->changeFixedWidthFontButton, m_ui->fixedFontLabel); - connect(m_ui->changeGeneralFontButton, SIGNAL(clicked()), mapper, SLOT(map())); - connect(m_ui->changeFixedWidthFontButton, SIGNAL(clicked()), mapper, SLOT(map())); - connect(mapper, SIGNAL(mapped(QWidget*)), SLOT(onFontChangeRequested(QWidget*))); - - readSettings(); - - //icons - m_ui->createFontsConfButton->setIcon(QIcon::fromTheme("document-new")); - m_ui->removeFontsConfButton->setIcon(QIcon::fromTheme("edit-delete")); -} - -FontsPage::~FontsPage() -{ - delete m_ui; -} - -void FontsPage::writeSettings() -{ - QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); - settings.beginGroup("Fonts"); - settings.setValue("general", m_ui->generalFontLabel->font()); - settings.setValue("fixed", m_ui->fixedFontLabel->font()); - settings.endGroup(); -} - -void FontsPage::onFontChangeRequested(QWidget *widget) -{ - bool ok = false; - QFont font = QFontDialog::getFont (&ok, widget->font(), this); - if(ok) - { - widget->setFont(font); - qobject_cast(widget)->setText(font.family () + " " + QString::number(font.pointSize ())); - } -} - -void FontsPage::readSettings() -{ - QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); - settings.beginGroup("Fonts"); - loadFont(&settings, m_ui->generalFontLabel, "general"); - loadFont(&settings, m_ui->fixedFontLabel, "fixed"); - settings.endGroup(); -} - -void FontsPage::loadFont(QSettings *settings, QLabel *label, const QString &key) -{ - QFont font = settings->value(key, QApplication::font()).value(); - label->setText(font.family () + " " + QString::number(font.pointSize ())); - label->setFont(font); -} - -void FontsPage::on_createFontsConfButton_clicked() -{ - FontConfigDialog d(this); - d.exec(); -} - -void FontsPage::on_removeFontsConfButton_clicked() -{ - QString path = QDir::homePath() + "/.config/fontconfig/fonts.conf"; - - - if(QFile::exists(path)) - { - if(QMessageBox::question(this, tr("Remove Font Configuration"), - tr("Are you sure you want to delete %1?").arg(path), - QMessageBox::Yes | QMessageBox::No) == QMessageBox::No) - { - return; - } - - QFile::remove(path + ".back"); - QFile::copy(path, path + ".back"); - QFile::remove(path); - } -} diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/fontspage.h b/src-qt5/core/lumina-theme-engine/src/qt5ct/fontspage.h deleted file mode 100644 index a9c5f1f6..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/fontspage.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2014-2017, Ilya Kotov - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef FONTSPAGE_H -#define FONTSPAGE_H - -#include "tabpage.h" - -namespace Ui { -class FontsPage; -} - -class QLabel; -class QSettings; - -class FontsPage : public TabPage -{ - Q_OBJECT - -public: - explicit FontsPage(QWidget *parent = 0); - ~FontsPage(); - - void writeSettings(); - -private slots: - void onFontChangeRequested(QWidget *widget); - void on_createFontsConfButton_clicked(); - void on_removeFontsConfButton_clicked(); - -private: - void readSettings(); - void loadFont(QSettings *settings, QLabel *label, const QString &key); - Ui::FontsPage *m_ui; -}; - -#endif // FONTSPAGE_H diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/fontspage.ui b/src-qt5/core/lumina-theme-engine/src/qt5ct/fontspage.ui deleted file mode 100644 index b03b5fc0..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/fontspage.ui +++ /dev/null @@ -1,134 +0,0 @@ - - - FontsPage - - - - 0 - 0 - 517 - 320 - - - - Form - - - - - - Qt::Horizontal - - - - 342 - 20 - - - - - - - - - - - 0 - 0 - - - - QFrame::StyledPanel - - - ... - - - - - - - - 0 - 0 - - - - General: - - - - - - - ... - - - - - - - - 0 - 0 - - - - QFrame::StyledPanel - - - ... - - - - - - - ... - - - - - - - Fixed width: - - - - - - - - - Qt::Vertical - - - QSizePolicy::Expanding - - - - 0 - 280 - - - - - - - - Create fonts.conf - - - - - - - Remove fonts.conf - - - - - - - - diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/iconthemepage.cpp b/src-qt5/core/lumina-theme-engine/src/qt5ct/iconthemepage.cpp deleted file mode 100644 index ee4d638d..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/iconthemepage.cpp +++ /dev/null @@ -1,214 +0,0 @@ -/* - * Copyright (c) 2014-2017, Ilya Kotov - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include -#include -#include -#include -#include -#include -#include "qt5ct.h" -#include "iconthemepage.h" -#include "ui_iconthemepage.h" - -IconThemePage::IconThemePage(QWidget *parent) : - TabPage(parent), - m_ui(new Ui::IconThemePage) -{ - m_ui->setupUi(this); - loadThemes(); - readSettings(); -} - -IconThemePage::~IconThemePage() -{ - delete m_ui; -} - -void IconThemePage::writeSettings() -{ - QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); - QTreeWidgetItem *item = m_ui->treeWidget->currentItem(); - if(item) - settings.setValue("Appearance/icon_theme", item->data(3, Qt::UserRole)); -} - -void IconThemePage::readSettings() -{ - QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); - QString name = settings.value("Appearance/icon_theme").toString(); - - if(name.isEmpty()) - return; - - for(int i = 0; i < m_ui->treeWidget->topLevelItemCount(); ++i) - { - QTreeWidgetItem *item = m_ui->treeWidget->topLevelItem(i); - if(item->data(3, Qt::UserRole).toString() == name) - { - m_ui->treeWidget->setCurrentItem(item); - break; - } - } -} - -void IconThemePage::loadThemes() -{ - QFileInfoList themeFileList; - foreach(QString path, Qt5CT::iconPaths()) - { - QDir dir(path); - dir.setFilter(QDir::Dirs | QDir::NoDotDot | QDir::NoDot); - foreach (QFileInfo info, dir.entryInfoList()) - { - QDir themeDir(info.absoluteFilePath()); - themeDir.setFilter(QDir::Files); - themeFileList << themeDir.entryInfoList(QStringList() << "index.theme"); - } - } - - foreach(QFileInfo info, themeFileList) - { - loadTheme(info.canonicalFilePath()); - } -} - -void IconThemePage::loadTheme(const QString &path) -{ - QSettings config(path, QSettings::IniFormat); - config.setIniCodec("UTF-8"); - - config.beginGroup("Icon Theme"); - QStringList dirs = config.value("Directories").toStringList(); - if(dirs.isEmpty() || config.value("Hidden", false).toBool()) - return; - - QString name, comment; - QString lang = QLocale::system().name(); - - name = config.value(QString("Name[%1]").arg(lang)).toString(); - comment = config.value(QString("Comment[%1]").arg(lang)).toString(); - - if(lang.contains("_")) - lang = lang.split("_").first(); - - if(name.isEmpty()) - name = config.value(QString("Name[%1]").arg(lang)).toString(); - - if(comment.isEmpty()) - comment = config.value(QString("Comment[%1]").arg(lang)).toString(); - - if(name.isEmpty()) - name = config.value("Name").toString(); - - if(comment.isEmpty()) - comment = config.value("Comment").toString(); - - config.endGroup(); - - QIcon icon1 = findIcon(path, 24, "document-save"); - QIcon icon2 = findIcon(path, 24, "document-print"); - QIcon icon3 = findIcon(path, 24, "media-playback-stop"); - - QTreeWidgetItem *item = new QTreeWidgetItem(); - item->setIcon(0, icon1); - item->setIcon(1, icon2); - item->setIcon(2, icon3); - item->setText(3, name); - item->setData(3, Qt::UserRole, QFileInfo(path).path().section("/", -1)); - item->setToolTip(3, comment); - item->setSizeHint(0, QSize(24,24)); - m_ui->treeWidget->addTopLevelItem(item); - - m_ui->treeWidget->resizeColumnToContents(0); - m_ui->treeWidget->resizeColumnToContents(1); - m_ui->treeWidget->resizeColumnToContents(2); - m_ui->treeWidget->resizeColumnToContents(3); -} - -QIcon IconThemePage::findIcon(const QString &themePath, int size, const QString &name) -{ - QSettings config(themePath, QSettings::IniFormat); - config.beginGroup("Icon Theme"); - QStringList dirs = config.value("Directories").toStringList(); - QStringList parents = config.value("Inherits").toStringList(); - bool haveInherits = config.contains("Inherits"); - config.endGroup(); - - foreach (QString dir, dirs) - { - config.beginGroup(dir); - if(config.value("Size").toInt() == size) - { - QDir iconDir = QFileInfo(themePath).path() + "/" + dir; - iconDir.setFilter(QDir::Files); - iconDir.setNameFilters(QStringList () << name + ".*"); - if(iconDir.entryInfoList().isEmpty()) - continue; - return QIcon(iconDir.entryInfoList().first().absoluteFilePath()); - } - config.endGroup(); - } - - foreach (QString dir, dirs) - { - config.beginGroup(dir); - if(abs(config.value("Size").toInt() - size) < 4) - { - QDir iconDir = QFileInfo(themePath).path() + "/" + dir; - iconDir.setFilter(QDir::Files); - iconDir.setNameFilters(QStringList () << name + ".*"); - if(iconDir.entryInfoList().isEmpty()) - continue; - return QIcon(iconDir.entryInfoList().first().absoluteFilePath()); - } - config.endGroup(); - } - - if (!haveInherits) - return QIcon(); - - parents.append("hicolor"); //add fallback themes - parents.append("gnome"); - parents.removeDuplicates(); - - foreach (QString parent, parents) - { - QString parentThemePath = QDir(QFileInfo(themePath).path() + "/../" + parent).canonicalPath() + "/index.theme"; - - if(!QFile::exists(parentThemePath) || parentThemePath == themePath) - continue; - - QIcon icon = findIcon(parentThemePath, size, name); - if(!icon.isNull()) - return icon; - } - - return QIcon(); -} diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/iconthemepage.h b/src-qt5/core/lumina-theme-engine/src/qt5ct/iconthemepage.h deleted file mode 100644 index 0ccd64e0..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/iconthemepage.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2014-2017, Ilya Kotov - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef ICONTHEMEPAGE_H -#define ICONTHEMEPAGE_H - -#include -#include "tabpage.h" - -namespace Ui { -class IconThemePage; -} - -class IconThemePage : public TabPage -{ - Q_OBJECT - -public: - explicit IconThemePage(QWidget *parent = 0); - ~IconThemePage(); - - void writeSettings(); - -private: - void readSettings(); - void loadThemes(); - void loadTheme(const QString &path); - QIcon findIcon(const QString &themePath, int size, const QString &name); - Ui::IconThemePage *m_ui; -}; - -#endif // ICONTHEMEPAGE_H diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/iconthemepage.ui b/src-qt5/core/lumina-theme-engine/src/qt5ct/iconthemepage.ui deleted file mode 100644 index a6385041..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/iconthemepage.ui +++ /dev/null @@ -1,51 +0,0 @@ - - - IconThemePage - - - - 0 - 0 - 400 - 300 - - - - Form - - - - - - 4 - - - false - - - - 1 - - - - - 2 - - - - - 3 - - - - - 4 - - - - - - - - - diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/interfacepage.cpp b/src-qt5/core/lumina-theme-engine/src/qt5ct/interfacepage.cpp deleted file mode 100644 index fc5c0662..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/interfacepage.cpp +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright (c) 2014-2017, Ilya Kotov - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include -#include -#include "qt5ct.h" -#include "interfacepage.h" -#include "ui_interfacepage.h" - -InterfacePage::InterfacePage(QWidget *parent) : - TabPage(parent), - m_ui(new Ui::InterfacePage) -{ - m_ui->setupUi(this); - - m_ui->buttonLayoutComboBox->addItem("Windows", QDialogButtonBox::WinLayout); - m_ui->buttonLayoutComboBox->addItem("Mac OS X", QDialogButtonBox::MacLayout); - m_ui->buttonLayoutComboBox->addItem("KDE", QDialogButtonBox::KdeLayout); - m_ui->buttonLayoutComboBox->addItem("GNOME", QDialogButtonBox::GnomeLayout); - - m_ui->toolButtonStyleComboBox->addItem(tr("Only display the icon"), Qt::ToolButtonIconOnly); - m_ui->toolButtonStyleComboBox->addItem(tr("Only display the text"), Qt::ToolButtonTextOnly); - m_ui->toolButtonStyleComboBox->addItem(tr("The text appears beside the icon"), Qt::ToolButtonTextBesideIcon); - m_ui->toolButtonStyleComboBox->addItem(tr("The text appears under the icon"), Qt::ToolButtonTextUnderIcon); - m_ui->toolButtonStyleComboBox->addItem(tr("Follow the application style"), Qt::ToolButtonFollowStyle); - - readSettings(); -} - -InterfacePage::~InterfacePage() -{ - delete m_ui; -} - -void InterfacePage::writeSettings() -{ - QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); - settings.beginGroup("Interface"); - settings.setValue("double_click_interval", m_ui->doubleClickIntervalSpinBox->value()); - settings.setValue("cursor_flash_time", m_ui->cursorFlashTimeSpinBox->value()); - settings.setValue("buttonbox_layout", m_ui->buttonLayoutComboBox->currentData()); - settings.setValue("menus_have_icons", m_ui->menuIconsCheckBox->isChecked()); - settings.setValue("activate_item_on_single_click", m_ui->singleClickCheckBox->checkState()); - settings.setValue("dialog_buttons_have_icons", m_ui->dialogIconsCheckBox->checkState()); - settings.setValue("toolbutton_style", m_ui->toolButtonStyleComboBox->currentData()); - settings.setValue("wheel_scroll_lines", m_ui->wheelScrollLinesSpinBox->value()); - - QStringList effects; - if(m_ui->guiEffectsCheckBox->isChecked()) - effects << "General"; - - if(m_ui->menuEffectComboBox->currentIndex() == 1) - effects << "AnimateMenu"; - else if(m_ui->menuEffectComboBox->currentIndex() == 2) - effects << "FadeMenu"; - - if(m_ui->comboBoxEffectComboBox->currentIndex() == 1) - effects << "AnimateCombo"; - - if(m_ui->toolTipEffectComboBox->currentIndex() == 1) - effects << "AnimateTooltip"; - else if(m_ui->toolTipEffectComboBox->currentIndex() == 2) - effects << "FadeTooltip"; - - if(m_ui->toolBoxEffectComboBox->currentIndex() == 1) - effects << "AnimateToolBox"; - - settings.setValue("gui_effects", effects); - settings.endGroup(); -} - -void InterfacePage::readSettings() -{ - QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); - settings.beginGroup("Interface"); - m_ui->doubleClickIntervalSpinBox->setValue(qApp->doubleClickInterval()); - m_ui->cursorFlashTimeSpinBox->setValue(qApp->cursorFlashTime()); - - m_ui->guiEffectsCheckBox->setChecked(qApp->isEffectEnabled(Qt::UI_General)); - - int layout = settings.value("buttonbox_layout", style()->styleHint(QStyle::SH_DialogButtonLayout)).toInt(); - int index = m_ui->buttonLayoutComboBox->findData(layout); - if(index >= 0) - m_ui->buttonLayoutComboBox->setCurrentIndex(index); - - if(qApp->isEffectEnabled(Qt::UI_AnimateMenu)) - m_ui->menuEffectComboBox->setCurrentIndex(1); - else if(qApp->isEffectEnabled(Qt::UI_FadeMenu)) - m_ui->menuEffectComboBox->setCurrentIndex(2); - - if(qApp->isEffectEnabled(Qt::UI_AnimateCombo)) - m_ui->comboBoxEffectComboBox->setCurrentIndex(1); - - if(qApp->isEffectEnabled(Qt::UI_AnimateTooltip)) - m_ui->toolTipEffectComboBox->setCurrentIndex(1); - else if(qApp->isEffectEnabled(Qt::UI_FadeTooltip)) - m_ui->toolTipEffectComboBox->setCurrentIndex(2); - - if(qApp->isEffectEnabled(Qt::UI_AnimateToolBox)) - m_ui->toolBoxEffectComboBox->setCurrentIndex(1); - - m_ui->singleClickCheckBox->setCheckState((Qt::CheckState)settings.value("activate_item_on_single_click", Qt::PartiallyChecked).toInt()); - m_ui->dialogIconsCheckBox->setCheckState((Qt::CheckState)settings.value("dialog_buttons_have_icons", Qt::PartiallyChecked).toInt()); - m_ui->menuIconsCheckBox->setChecked(!qApp->testAttribute(Qt::AA_DontShowIconsInMenus)); - - int toolbarStyle = settings.value("toolbutton_style", Qt::ToolButtonFollowStyle).toInt(); - index = m_ui->toolButtonStyleComboBox->findData(toolbarStyle); - if(index >= 0) - m_ui->toolButtonStyleComboBox->setCurrentIndex(index); - - m_ui->wheelScrollLinesSpinBox->setValue(settings.value("wheel_scroll_lines", 3).toInt()); - - settings.endGroup(); -} diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/interfacepage.h b/src-qt5/core/lumina-theme-engine/src/qt5ct/interfacepage.h deleted file mode 100644 index 637b6bf1..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/interfacepage.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (c) 2014-2017, Ilya Kotov - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef INTERFACEPAGE_H -#define INTERFACEPAGE_H - -#include "tabpage.h" - -namespace Ui { -class InterfacePage; -} - -class InterfacePage : public TabPage -{ - Q_OBJECT - -public: - explicit InterfacePage(QWidget *parent = 0); - ~InterfacePage(); - - void writeSettings(); - -private: - void readSettings(); - - Ui::InterfacePage *m_ui; -}; - -#endif // INTERFACEPAGE_H diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/interfacepage.ui b/src-qt5/core/lumina-theme-engine/src/qt5ct/interfacepage.ui deleted file mode 100644 index ca9d0291..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/interfacepage.ui +++ /dev/null @@ -1,327 +0,0 @@ - - - InterfacePage - - - - 0 - 0 - 498 - 449 - - - - Form - - - - - - Qt::Vertical - - - - 20 - 259 - - - - - - - - - - Double click interval: - - - - - - - Cursor flash time: - - - - - - - ComboBox effect: - - - - - - - ToolTip effect: - - - - - - - ToolBox effect: - - - - - - - ms - - - 2000 - - - - - - - ms - - - 4000 - - - - - - - false - - - - Disable - - - - - Animate - - - - - - - - false - - - - Disable - - - - - Animate - - - - - Fade - - - - - - - - false - - - - Disable - - - - - Animate - - - - - - - - Menu effect: - - - - - - - false - - - - Disable - - - - - Animate - - - - - Fade - - - - - - - - Enable gui effects - - - - - - - Dialog buttons layout: - - - - - - - - - - Menus have icons - - - - - - - Dialog buttons have icons - - - true - - - - - - - Activate item on single-click - - - true - - - - - - - Toolbar button style: - - - - - - - - - - Mouse wheel scroll lines: - - - - - - - 1 - - - 20 - - - - - - - - - Qt::Horizontal - - - - 238 - 20 - - - - - - - - - - guiEffectsCheckBox - toggled(bool) - menuEffectComboBox - setEnabled(bool) - - - 126 - 86 - - - 201 - 114 - - - - - guiEffectsCheckBox - toggled(bool) - comboBoxEffectComboBox - setEnabled(bool) - - - 75 - 84 - - - 160 - 153 - - - - - guiEffectsCheckBox - toggled(bool) - toolTipEffectComboBox - setEnabled(bool) - - - 54 - 84 - - - 155 - 184 - - - - - guiEffectsCheckBox - toggled(bool) - toolBoxEffectComboBox - setEnabled(bool) - - - 36 - 91 - - - 156 - 216 - - - - - diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/main.cpp b/src-qt5/core/lumina-theme-engine/src/qt5ct/main.cpp deleted file mode 100644 index d15c9c01..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/main.cpp +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright (c) 2014-2017, Ilya Kotov - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include -#include -#include "qt5ct.h" -#include -#include -#include -#include -#include "mainwindow.h" - -int main(int argc, char **argv) -{ - QApplication app(argc, argv); - QTranslator translator; - QString locale = Qt5CT::systemLanguageID(); - translator.load(QString(":/qt5ct_") + locale); - app.installTranslator(&translator); - - QTranslator qt_translator; - qt_translator.load(QLibraryInfo::location (QLibraryInfo::TranslationsPath) + "/qtbase_" + locale); - app.installTranslator(&qt_translator); - - qDebug("Configuration path: %s", qPrintable(Qt5CT::configPath())); - qDebug("Shared QSS path: %s", qPrintable(Qt5CT::sharedStyleSheetPath())); - - //checking environment - QStringList errorMessages; - QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); - - if(env.contains("QT_STYLE_OVERRIDE")) - { - errorMessages << app.translate("main", "Please remove the QT_STYLE_OVERRIDE environment variable"); - } - - if(env.value("QT_QPA_PLATFORMTHEME") != "qt5ct") - { - errorMessages << app.translate("main", "The QT_QPA_PLATFORMTHEME environment " - "variable is not set correctly"); - } - - if(!QStyleFactory::keys().contains("qt5ct-style")) - { - errorMessages << app.translate("main", "Unable to find libqt5ct-style.so"); - } - - if(!errorMessages.isEmpty()) - { - QMessageBox::critical(0, app.translate("main", "Error"), errorMessages.join("

")); - return 0; - } - - MainWindow w; - w.show(); - - return app.exec(); -} diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/mainwindow.cpp b/src-qt5/core/lumina-theme-engine/src/qt5ct/mainwindow.cpp deleted file mode 100644 index b120436f..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/mainwindow.cpp +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright (c) 2014-2017, Ilya Kotov - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include -#include "qt5ct.h" -#include "mainwindow.h" -#include "appearancepage.h" -#include "fontspage.h" -#include "iconthemepage.h" -#include "interfacepage.h" -#include "qsspage.h" -#include "ui_mainwindow.h" - -MainWindow::MainWindow(QWidget *parent) : - QWidget(parent), - m_ui(new Ui::MainWindow) -{ - m_ui->setupUi(this); - m_ui->tabWidget->addTab(new AppearancePage(this), tr("Appearance")); - m_ui->tabWidget->addTab(new FontsPage(this), tr("Fonts")); - m_ui->tabWidget->addTab(new IconThemePage(this), tr("Icon Theme")); - m_ui->tabWidget->addTab(new InterfacePage(this), tr("Interface")); -#ifdef USE_WIDGETS - m_ui->tabWidget->addTab(new QSSPage(this), tr("Style Sheets")); -#endif - - QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); - restoreGeometry(settings.value("SettingsWindow/geometry").toByteArray()); - - setWindowIcon(QIcon::fromTheme("preferences-desktop-theme")); - - m_ui->versionLabel->setText(tr("Version: %1").arg(QT5CT_VERSION_STR)); -} - -MainWindow::~MainWindow() -{ - delete m_ui; -} - -void MainWindow::closeEvent(QCloseEvent *) -{ - QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); - settings.setValue("SettingsWindow/geometry", saveGeometry()); -} - -void MainWindow::on_buttonBox_clicked(QAbstractButton *button) -{ - int id = m_ui->buttonBox->standardButton(button); - if(id == QDialogButtonBox::Ok || id == QDialogButtonBox::Apply) - { - for(int i = 0; i < m_ui->tabWidget->count(); ++i) - { - TabPage *p = qobject_cast(m_ui->tabWidget->widget(i)); - if(p) - p->writeSettings(); - } - } - - if(id == QDialogButtonBox::Ok || id == QDialogButtonBox::Cancel) - { - close(); - qApp->quit(); - } -} diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/mainwindow.h b/src-qt5/core/lumina-theme-engine/src/qt5ct/mainwindow.h deleted file mode 100644 index f532141c..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/mainwindow.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2014-2017, Ilya Kotov - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef MAINWINDOW_H -#define MAINWINDOW_H - -#include - -class QAbstractButton; - -namespace Ui { -class MainWindow; -} - -class MainWindow : public QWidget -{ - Q_OBJECT - -public: - explicit MainWindow(QWidget *parent = 0); - ~MainWindow(); - -private slots: - void on_buttonBox_clicked(QAbstractButton *button); - -private: - void closeEvent(QCloseEvent *); - - Ui::MainWindow *m_ui; -}; - -#endif // MAINWINDOW_H diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/mainwindow.ui b/src-qt5/core/lumina-theme-engine/src/qt5ct/mainwindow.ui deleted file mode 100644 index 5bdab6d7..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/mainwindow.ui +++ /dev/null @@ -1,47 +0,0 @@ - - - MainWindow - - - - 0 - 0 - 438 - 374 - - - - Qt5 Configuration Tool - - - - 6 - - - 6 - - - 6 - - - - - - - - ... - - - - - - - QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - - - - - - diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/paletteeditdialog.cpp b/src-qt5/core/lumina-theme-engine/src/qt5ct/paletteeditdialog.cpp deleted file mode 100644 index 31a3a2a9..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/paletteeditdialog.cpp +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Copyright (c) 2014-2017, Ilya Kotov - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include -#include -#include "qt5ct.h" -#include "paletteeditdialog.h" -#include "ui_paletteeditdialog.h" - -PaletteEditDialog::PaletteEditDialog(const QPalette &palette, QStyle *currentStyle, QWidget *parent) : - QDialog(parent), - m_ui(new Ui::PaletteEditDialog) -{ - m_currentStyle = currentStyle; - m_ui->setupUi(this); - m_ui->tableWidget->setColumnCount(3); - m_ui->tableWidget->setRowCount(QPalette::NColorRoles); - m_ui->tableWidget->verticalHeader()->setDefaultSectionSize(fontMetrics().lineSpacing() + 10); - m_ui->tableWidget->verticalHeader()->setSectionResizeMode(QHeaderView::Fixed); - m_ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); - - QStringList labels; - labels << tr("Active") << tr("Inactive") << tr("Disabled"); - m_ui->tableWidget->setHorizontalHeaderLabels(labels); - setPalette(palette); - - QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); - restoreGeometry(settings.value("PaletteEditor/geometry").toByteArray()); -} - -PaletteEditDialog::~PaletteEditDialog() -{ - delete m_ui; -} - -QPalette PaletteEditDialog::selectedPalette() const -{ - QPalette palette; - for(int i = 0; i < QPalette::NColorRoles; i++) - { - palette.setBrush(QPalette::Active, QPalette::ColorRole(i), m_ui->tableWidget->item(i,0)->backgroundColor()); - palette.setBrush(QPalette::Inactive, QPalette::ColorRole(i), m_ui->tableWidget->item(i,1)->backgroundColor()); - palette.setBrush(QPalette::Disabled, QPalette::ColorRole(i), m_ui->tableWidget->item(i,2)->backgroundColor()); - } - return palette; -} - -void PaletteEditDialog::setPalette(const QPalette &palette) -{ - for(int i = 0; i < QPalette::NColorRoles; i++) - { - if(!m_ui->tableWidget->item(i,0)) - m_ui->tableWidget->setItem(i, 0, new QTableWidgetItem()); - if(!m_ui->tableWidget->item(i,1)) - m_ui->tableWidget->setItem(i, 1, new QTableWidgetItem()); - if(!m_ui->tableWidget->item(i,2)) - m_ui->tableWidget->setItem(i, 2, new QTableWidgetItem()); - - m_ui->tableWidget->item(i,0)->setBackgroundColor(palette.color(QPalette::Active, QPalette::ColorRole(i))); - m_ui->tableWidget->item(i,1)->setBackgroundColor(palette.color(QPalette::Inactive, QPalette::ColorRole(i))); - m_ui->tableWidget->item(i,2)->setBackgroundColor(palette.color(QPalette::Disabled, QPalette::ColorRole(i))); - } - - QStringList labels; - labels << tr("Window text") << tr("Button background") << tr("Bright") << tr("Less bright") << tr("Dark") << tr("Less dark") - << tr("Normal text") << tr("Bright text") << tr("Button text") << tr("Normal background") << tr("Window") << tr("Shadow") - << tr("Highlight") << tr("Highlighted text") << tr("Link") << tr("Visited link") - << tr("Alternate background") << tr("Default") << tr("Tooltip background") << tr("Tooltip text"); - m_ui->tableWidget->setVerticalHeaderLabels(labels); -} - -void PaletteEditDialog::hideEvent(QHideEvent *) -{ - QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); - settings.setValue("PaletteEditor/geometry", saveGeometry()); -} - -void PaletteEditDialog::on_tableWidget_itemClicked(QTableWidgetItem *item) -{ - QColor color = QColorDialog::getColor(item->backgroundColor(), this, tr("Select Color")); - if(color.isValid()) - { - item->setBackgroundColor(color); - emit paletteChanged(selectedPalette()); - } -} - -void PaletteEditDialog::on_resetPaletteButton_clicked() -{ - setPalette(m_currentStyle->standardPalette()); - emit paletteChanged(selectedPalette()); -} - -void PaletteEditDialog::on_buildInactiveButton_clicked() -{ - QPalette palette = selectedPalette(); - for(int i = 0; i < QPalette::NColorRoles; i++) - { - palette.setColor(QPalette::Inactive, QPalette::ColorRole(i), - palette.color(QPalette::Active, QPalette::ColorRole(i))); - } - setPalette(palette); - emit paletteChanged(selectedPalette()); -} - -void PaletteEditDialog::on_buildDisabledButton_clicked() -{ - QPalette palette = selectedPalette(); - for(int i = 0; i < QPalette::NColorRoles; i++) - { - palette.setColor(QPalette::Disabled, QPalette::ColorRole(i), - palette.color(QPalette::Active, QPalette::ColorRole(i))); - } - palette.setColor(QPalette::Disabled, QPalette::ButtonText, Qt::darkGray); - palette.setColor(QPalette::Disabled, QPalette::WindowText, Qt::darkGray); - palette.setColor(QPalette::Disabled, QPalette::Text, Qt::darkGray); - palette.setColor(QPalette::Disabled, QPalette::HighlightedText, Qt::darkGray); - setPalette(palette); - emit paletteChanged(selectedPalette()); -} diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/paletteeditdialog.h b/src-qt5/core/lumina-theme-engine/src/qt5ct/paletteeditdialog.h deleted file mode 100644 index c8691a3c..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/paletteeditdialog.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (c) 2014-2017, Ilya Kotov - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef PALETTEEDITDIALOG_H -#define PALETTEEDITDIALOG_H - -#include -#include - -class QTableWidgetItem; -class QStyle; - -namespace Ui { -class PaletteEditDialog; -} - -class PaletteEditDialog : public QDialog -{ - Q_OBJECT - -public: - explicit PaletteEditDialog(const QPalette &palette, QStyle *currentStyle, QWidget *parent = 0); - ~PaletteEditDialog(); - - QPalette selectedPalette() const; - -signals: - void paletteChanged(const QPalette &p); - -private slots: - void on_tableWidget_itemClicked(QTableWidgetItem *item); - void on_resetPaletteButton_clicked(); - void on_buildInactiveButton_clicked(); - void on_buildDisabledButton_clicked(); - -private: - void setPalette(const QPalette &palette); - void hideEvent(QHideEvent *); - Ui::PaletteEditDialog *m_ui; - QStyle *m_currentStyle; -}; - -#endif // PALETTEEDITDIALOG_H diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/paletteeditdialog.ui b/src-qt5/core/lumina-theme-engine/src/qt5ct/paletteeditdialog.ui deleted file mode 100644 index 6ca6350f..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/paletteeditdialog.ui +++ /dev/null @@ -1,120 +0,0 @@ - - - PaletteEditDialog - - - - 0 - 0 - 631 - 529 - - - - Palette Editor - - - - 6 - - - 6 - - - 6 - - - - - Build inactive palette - - - - - - - Build disabled palette - - - - - - - Qt::Horizontal - - - - 117 - 20 - - - - - - - - Qt::Horizontal - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - - - - - QAbstractItemView::NoEditTriggers - - - QAbstractItemView::NoSelection - - - 0 - - - - - - - Reset palette - - - - - - - - - buttonBox - accepted() - PaletteEditDialog - accept() - - - 248 - 254 - - - 157 - 274 - - - - - buttonBox - rejected() - PaletteEditDialog - reject() - - - 316 - 260 - - - 286 - 274 - - - - - diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/previewform.ui b/src-qt5/core/lumina-theme-engine/src/qt5ct/previewform.ui deleted file mode 100644 index 508201db..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/previewform.ui +++ /dev/null @@ -1,76 +0,0 @@ - - - PreviewForm - - - - 0 - 0 - 281 - 130 - - - - Preview Window - - - - - - 0 - - - - Tab 1 - - - - - - PushButton - - - - - - - 24 - - - - - - - - - - - - - - Tab 2 - - - - - - RadioButton - - - - - - - CheckBox - - - - - - - - - - - - diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/qsseditordialog.cpp b/src-qt5/core/lumina-theme-engine/src/qt5ct/qsseditordialog.cpp deleted file mode 100644 index 7c6292ac..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/qsseditordialog.cpp +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright (c) 2014-2017, Ilya Kotov - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include -#include "qt5ct.h" -#include "qsseditordialog.h" -#include "ui_qsseditordialog.h" - -QSSEditorDialog::QSSEditorDialog(const QString &filePath, QWidget *parent) : - QDialog(parent), - m_ui(new Ui::QSSEditorDialog) -{ - m_ui->setupUi(this); - m_filePath = filePath; - - QFile file(filePath); - file.open(QIODevice::ReadOnly); - m_ui->textEdit->setPlainText(QString::fromUtf8(file.readAll())); - setWindowTitle(tr("%1 - Style Sheet Editor").arg(file.fileName())); - - QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); - restoreGeometry(settings.value("QSSEditor/geometry").toByteArray()); -} - -QSSEditorDialog::~QSSEditorDialog() -{ - delete m_ui; -} - -void QSSEditorDialog::save() -{ - QFile file(m_filePath); - file.open(QIODevice::WriteOnly); - file.write(m_ui->textEdit->toPlainText().toUtf8()); -} - -void QSSEditorDialog::hideEvent(QHideEvent *) -{ - QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); - settings.setValue("QSSEditor/geometry", saveGeometry()); -} - -void QSSEditorDialog::on_buttonBox_clicked(QAbstractButton *button) -{ - QDialogButtonBox::StandardButton id = m_ui->buttonBox->standardButton(button); - if(id == QDialogButtonBox::Ok) - { - save(); - accept(); - } - else if(id == QDialogButtonBox::Save) - { - save(); - } - else - { - reject(); - } -} diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/qsseditordialog.h b/src-qt5/core/lumina-theme-engine/src/qt5ct/qsseditordialog.h deleted file mode 100644 index e2a6c773..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/qsseditordialog.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) 2014-2017, Ilya Kotov - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef QSSEDITORDIALOG_H -#define QSSEDITORDIALOG_H - -#include -#include - -namespace Ui { -class QSSEditorDialog; -} - -class QAbstractButton; - -class QSSEditorDialog : public QDialog -{ - Q_OBJECT - -public: - explicit QSSEditorDialog(const QString &filePath, QWidget *parent = 0); - ~QSSEditorDialog(); - -private slots: - void on_buttonBox_clicked(QAbstractButton *button); - -private: - void save(); - void hideEvent(QHideEvent *); - Ui::QSSEditorDialog *m_ui; - QString m_filePath; -}; - -#endif // QSSEDITORDIALOG_H diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/qsseditordialog.ui b/src-qt5/core/lumina-theme-engine/src/qt5ct/qsseditordialog.ui deleted file mode 100644 index 7627b4d4..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/qsseditordialog.ui +++ /dev/null @@ -1,47 +0,0 @@ - - - QSSEditorDialog - - - - 0 - 0 - 643 - 499 - - - - Style Sheet Editor - - - - 6 - - - 6 - - - 6 - - - - - false - - - - - - - Qt::Horizontal - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok|QDialogButtonBox::Save - - - - - - - - diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/qsspage.cpp b/src-qt5/core/lumina-theme-engine/src/qt5ct/qsspage.cpp deleted file mode 100644 index 784ff674..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/qsspage.cpp +++ /dev/null @@ -1,232 +0,0 @@ -/* - * Copyright (c) 2014-2017, Ilya Kotov - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include -#include -#include -#include -#include -#include "qt5ct.h" -#include "qsseditordialog.h" -#include "qsspage.h" -#include "ui_qsspage.h" - -#define QSS_FULL_PATH_ROLE (Qt::ItemDataRole(Qt::UserRole)) -#define QSS_WRITABLE_ROLE (Qt::ItemDataRole(Qt::UserRole + 1)) - -QSSPage::QSSPage(QWidget *parent) : - TabPage(parent), - m_ui(new Ui::QSSPage) -{ - m_ui->setupUi(this); - QDir("/").mkpath(Qt5CT::userStyleSheetPath()); - - m_menu = new QMenu(this); - m_menu->addAction(QIcon::fromTheme("accessories-text-editor"), tr("Edit"), this, SLOT(on_editButton_clicked())); - m_menu->addAction(tr("Rename"), this, SLOT(on_renameButton_clicked())); - m_menu->addSeparator(); - m_menu->addAction(QIcon::fromTheme("edit-delete"), tr("Remove"), this, SLOT(on_removeButton_clicked())); - - readSettings(); - - //icons - m_ui->createButton->setIcon(QIcon::fromTheme("document-new")); - m_ui->editButton->setIcon(QIcon::fromTheme("accessories-text-editor")); - m_ui->removeButton->setIcon(QIcon::fromTheme("edit-delete")); -} - -QSSPage::~QSSPage() -{ - delete m_ui; -} - -void QSSPage::writeSettings() -{ - QStringList styleSheets; - QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); - - for(int i = 0; i < m_ui->qssListWidget->count(); ++i) - { - QListWidgetItem *item = m_ui->qssListWidget->item(i); - if(item->checkState() == Qt::Checked) - styleSheets << item->data(QSS_FULL_PATH_ROLE).toString(); - } - - settings.setValue("Interface/stylesheets", styleSheets); -} - -void QSSPage::on_qssListWidget_currentItemChanged(QListWidgetItem *current, QListWidgetItem *) -{ - if(current) - { - m_ui->editButton->setEnabled(current->data(QSS_WRITABLE_ROLE).toBool()); - m_ui->removeButton->setEnabled(current->data(QSS_WRITABLE_ROLE).toBool()); - m_ui->renameButton->setEnabled(current->data(QSS_WRITABLE_ROLE).toBool()); - } - else - { - m_ui->editButton->setEnabled(false); - m_ui->removeButton->setEnabled(false); - m_ui->renameButton->setEnabled(false); - } -} - -void QSSPage::on_createButton_clicked() -{ - QString name = QInputDialog::getText(this, tr("Enter Style Sheet Name"), tr("File name:")); - if(name.isEmpty()) - return; - - if(!name.endsWith(".qss", Qt::CaseInsensitive)) - name.append(".qss"); - - QString filePath = Qt5CT::userStyleSheetPath() + name; - - if(QFile::exists(filePath)) - { - QMessageBox::warning(this, tr("Error"), tr("The file \"%1\" already exists").arg(filePath)); - return; - } - - //creating empty file - QFile file(filePath); - file.open(QIODevice::WriteOnly); - file.close(); - - //creating item - QFileInfo info(filePath); - QListWidgetItem *item = new QListWidgetItem(info.fileName(), m_ui->qssListWidget); - item->setToolTip(info.filePath()); - item->setData(QSS_FULL_PATH_ROLE, info.filePath()); - item->setData(QSS_WRITABLE_ROLE, info.isWritable()); - item->setCheckState(Qt::Unchecked); -} - -void QSSPage::on_editButton_clicked() -{ - QListWidgetItem *item = m_ui->qssListWidget->currentItem(); - if(item) - { - QSSEditorDialog dialog(item->data(QSS_FULL_PATH_ROLE).toString(), this); - dialog.exec(); - } -} - -void QSSPage::on_removeButton_clicked() -{ - QListWidgetItem *item = m_ui->qssListWidget->currentItem(); - if(!item) - return; - - int button = QMessageBox::question(this, tr("Confirm Remove"), - tr("Are you sure you want to remove style sheet \"%1\"?") - .arg(item->text()), - QMessageBox::Yes | QMessageBox::No); - if(button == QMessageBox::Yes) - { - QFile::remove(item->data(QSS_FULL_PATH_ROLE).toString()); - delete item; - } -} - -void QSSPage::readSettings() -{ - //load stylesheets - m_ui->qssListWidget->clear(); - findStyleSheets(Qt5CT::userStyleSheetPath()); - findStyleSheets(Qt5CT::sharedStyleSheetPath()); - - QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); - QStringList styleSheets = settings.value("Interface/stylesheets").toStringList(); - for(int i = 0; i < m_ui->qssListWidget->count(); ++i) - { - QListWidgetItem *item = m_ui->qssListWidget->item(i); - if(styleSheets.contains(item->data(QSS_FULL_PATH_ROLE).toString())) - item->setCheckState(Qt::Checked); - else - item->setCheckState(Qt::Unchecked); - } -} - -void QSSPage::findStyleSheets(const QString &path) -{ - QDir dir(path); - dir.setFilter(QDir::Files); - dir.setNameFilters(QStringList() << "*.qss"); - - foreach (QFileInfo info, dir.entryInfoList()) - { - QListWidgetItem *item = new QListWidgetItem(info.fileName(), m_ui->qssListWidget); - item->setToolTip(info.filePath()); - item->setData(QSS_FULL_PATH_ROLE, info.filePath()); - item->setData(QSS_WRITABLE_ROLE, info.isWritable()); - } -} - -void QSSPage::on_renameButton_clicked() -{ - QListWidgetItem *item = m_ui->qssListWidget->currentItem(); - if(!item) - return; - - QString name = QInputDialog::getText(this, tr("Rename Style Sheet"), tr("Style sheet name:"), - QLineEdit::Normal, item->text(), 0); - if(name.isEmpty()) - return; - - if(!m_ui->qssListWidget->findItems(name, Qt::MatchExactly).isEmpty()) - { - QMessageBox::warning(this, tr("Error"), tr("The style sheet \"%1\" already exists").arg(name)); - return; - } - - if(!name.endsWith(".qss", Qt::CaseInsensitive)) - name.append(".qss"); - - QString newPath = Qt5CT::userStyleSheetPath() + name; - - if(!QFile::rename(item->data(QSS_FULL_PATH_ROLE).toString(), newPath)) - { - QMessageBox::warning(this, tr("Error"), tr("Unable to rename file")); - return; - } - - item->setText(name); - item->setData(QSS_FULL_PATH_ROLE, newPath); - item->setToolTip(newPath); -} - -void QSSPage::on_qssListWidget_customContextMenuRequested(const QPoint &pos) -{ - QListWidgetItem *item = m_ui->qssListWidget->currentItem(); - if(item && item->data(QSS_WRITABLE_ROLE).toBool()) - { - m_menu->exec(m_ui->qssListWidget->viewport()->mapToGlobal(pos)); - } -} diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/qsspage.h b/src-qt5/core/lumina-theme-engine/src/qt5ct/qsspage.h deleted file mode 100644 index 665f68c0..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/qsspage.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (c) 2014-2017, Ilya Kotov - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef QSSPAGE_H -#define QSSPAGE_H - -#include "tabpage.h" - -namespace Ui { -class QSSPage; -} - -class QListWidgetItem; -class QMenu; - -class QSSPage : public TabPage -{ - Q_OBJECT - -public: - explicit QSSPage(QWidget *parent = 0); - ~QSSPage(); - - void writeSettings(); - -private slots: - void on_qssListWidget_currentItemChanged(QListWidgetItem *current, QListWidgetItem *); - void on_createButton_clicked(); - void on_editButton_clicked(); - void on_removeButton_clicked(); - void on_renameButton_clicked(); - void on_qssListWidget_customContextMenuRequested(const QPoint &pos); - -private: - void readSettings(); - void findStyleSheets(const QString &path); - Ui::QSSPage *m_ui; - QMenu *m_menu; -}; - -#endif // QSSPAGE_H diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/qsspage.ui b/src-qt5/core/lumina-theme-engine/src/qt5ct/qsspage.ui deleted file mode 100644 index 124b4dc6..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/qsspage.ui +++ /dev/null @@ -1,84 +0,0 @@ - - - QSSPage - - - - 0 - 0 - 483 - 320 - - - - Style Sheet Editor - - - - - - true - - - Create - - - - - - - false - - - Remove - - - - - - - Qt::Horizontal - - - - 189 - 20 - - - - - - - - Qt::CustomContextMenu - - - true - - - - - - - false - - - Edit - - - - - - - false - - - Rename - - - - - - - - diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/qt5ct.cpp b/src-qt5/core/lumina-theme-engine/src/qt5ct/qt5ct.cpp deleted file mode 100644 index b83f43df..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/qt5ct.cpp +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright (c) 2014-2017, Ilya Kotov - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include -#include "qt5ct.h" - -#ifndef QT5CT_DATADIR -#define QT5CT_DATADIR "/usr/share" -#endif - - -QString Qt5CT::configPath() -{ - return QDir::homePath() + "/.config/qt5ct/"; -} - -QString Qt5CT::configFile() -{ - return configPath() + "qt5ct.conf"; -} - -QStringList Qt5CT::iconPaths() -{ - QString xdgDataDirs = qgetenv("XDG_DATA_DIRS"); - QString xdgDataHome = qgetenv("XDG_DATA_HOME"); - - QStringList paths; - paths << QDir::homePath() + "/.icons/"; - - if(xdgDataDirs.isEmpty()) - { - paths << "/usr/share/icons"; - paths << "/usr/local/share/icons"; - } - else - { - foreach (QString p, xdgDataDirs.split(":")) - paths << QDir(p + "/icons/").absolutePath(); - } - - if(xdgDataHome.isEmpty()) - xdgDataHome = QDir::homePath() + "/.local/share"; - - paths << "/usr/share/pixmaps"; - paths << xdgDataHome + "/icons"; - paths.removeDuplicates(); - - //remove invalid - foreach (QString p, paths) - { - if(!QDir(p).exists()) - paths.removeAll(p); - } - return paths; -} - -QString Qt5CT::userStyleSheetPath() -{ - return configPath() + "qss/"; -} - -QString Qt5CT::sharedStyleSheetPath() -{ - return QT5CT_DATADIR"/qt5ct/qss/"; -} - -QString Qt5CT::userColorSchemePath() -{ - return configPath() + "colors/"; -} - -QString Qt5CT::sharedColorSchemePath() -{ - return QT5CT_DATADIR"/qt5ct/colors/"; -} - -QString Qt5CT::systemLanguageID() -{ -#ifdef Q_OS_UNIX - QByteArray v = qgetenv ("LC_ALL"); - if (v.isEmpty()) - v = qgetenv ("LC_MESSAGES"); - if (v.isEmpty()) - v = qgetenv ("LANG"); - if (!v.isEmpty()) - return QLocale (v).name(); -#endif - return QLocale::system().name(); -} diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/qt5ct.desktop b/src-qt5/core/lumina-theme-engine/src/qt5ct/qt5ct.desktop deleted file mode 100644 index 1c5f6560..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/qt5ct.desktop +++ /dev/null @@ -1,60 +0,0 @@ -[Desktop Entry] -X-Desktop-File-Install-Version=0.11 -Name=Qt5 Settings - -Comment=Qt5 Configuration Tool - -Comment[ar]= أداة اعداد Qt5 -Name[ar]=إعدادات Qt5 - -Comment[bg]=Инструмент за настройка на Qt5 -Name[bg]=Настройки на Qt5 - -Comment[de]=Qt5-Konfigurationswerkzeug -Name[de]=Qt5-Einstellungen - -Comment[el]=Εργαλείο διαμόρφωσης της Qt5 -Name[el]=Ρυθμίσεις Qt5 - -Comment[es_ES]=Herramienta de configuración de QT5 -Name[es_ES]=Ajustes QT5 - -Comment[fr]=Un outil de configuration de Qt5 -Name[fr]=Paramètres de Qt5 - -Comment[he]=כלי תצורה Qt5 -Name[he]=הגדרות Qt5 - -Comment[ru]=Программа для настройки Qt5 -Name[ru]=Настройки Qt5 - -Comment[cs]=Nástroj na nastavení Qt5 -Name[cs]=Nastavení Qt5 - -Comment[it_IT]=Strumento di configurazione Qt5 -Name[it_IT]=Impostazioni Qt5 - -Comment[nl_NL]=Qt5-instellingengereedschap -Name[nl_NL]=Qt5-instellingen - -Comment[pl]=Narzędzie konfiguracji Qt5 -Name[pl]=Ustawienia Qt5 - -Comment[sk]=Qt5 konfiguračný nástroj -Name[sk]=Qt5 nastavenia - -Comment[sr]=Qt5 конфигурациони алат -Name[sr]=Qt5 поставке - -Comment[zh_CN]=Qt5 配置工具 -Name[zh_CN]=Qt5 设置 - -Comment[zh_TW]=Qt5 設定工具 -Name[zh_TW]=Qt5 設定 - - -Exec=qt5ct -Icon=preferences-desktop-theme -Terminal=false -Type=Application -Categories=Settings;DesktopSettings;Qt; diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/qt5ct.h b/src-qt5/core/lumina-theme-engine/src/qt5ct/qt5ct.h deleted file mode 100644 index 1aecd741..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/qt5ct.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 2014-2017, Ilya Kotov - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef QT5CT_H -#define QT5CT_H - -#define QT5CT_VERSION_MAJOR 0 -#define QT5CT_VERSION_MINOR 33 - -#define QT5CT_TOSTRING(s) #s -#define QT5CT_STRINGIFY(s) QT5CT_TOSTRING(s) - -#define QT5CT_VERSION_INT (QT5CT_VERSION_MAJOR<<8 | QT5CT_VERSION_MINOR) -#define QT5CT_VERSION_STR QT5CT_STRINGIFY(QT5CT_VERSION_MAJOR.QT5CT_VERSION_MINOR) - -#include -#include - -class Qt5CT -{ -public: - static QString configPath(); - static QString configFile(); - static QStringList iconPaths(); - static QString userStyleSheetPath(); - static QString sharedStyleSheetPath(); - static QString userColorSchemePath(); - static QString sharedColorSchemePath(); - static QString systemLanguageID(); - -private: - Qt5CT() {} -}; - -#endif // QT5CT_H diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/qt5ct.pro b/src-qt5/core/lumina-theme-engine/src/qt5ct/qt5ct.pro deleted file mode 100644 index 0f9724f1..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/qt5ct.pro +++ /dev/null @@ -1,57 +0,0 @@ -include(../../qt5ct.pri) - -TEMPLATE = app - -QT += widgets - -SOURCES += \ - main.cpp \ - mainwindow.cpp \ - tabpage.cpp \ - appearancepage.cpp \ - fontspage.cpp \ - qt5ct.cpp \ - paletteeditdialog.cpp \ - iconthemepage.cpp \ - interfacepage.cpp \ - fontconfigdialog.cpp \ - qsspage.cpp \ - qsseditordialog.cpp - -FORMS += \ - mainwindow.ui \ - appearancepage.ui \ - fontspage.ui \ - paletteeditdialog.ui \ - iconthemepage.ui \ - interfacepage.ui \ - fontconfigdialog.ui \ - previewform.ui \ - qsspage.ui \ - qsseditordialog.ui - -HEADERS += \ - mainwindow.h \ - tabpage.h \ - appearancepage.h \ - fontspage.h \ - qt5ct.h \ - paletteeditdialog.h \ - iconthemepage.h \ - interfacepage.h \ - fontconfigdialog.h \ - qsspage.h \ - qsseditordialog.h - -!equals (DISABLE_WIDGETS,1) { - DEFINES += USE_WIDGETS -} - -RESOURCES = translations/translations.qrc - -target.path = $$BINDIR - -desktop.files = qt5ct.desktop -desktop.path = $$DATADIR/applications - -INSTALLS += target desktop diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/tabpage.cpp b/src-qt5/core/lumina-theme-engine/src/qt5ct/tabpage.cpp deleted file mode 100644 index 251ce024..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/tabpage.cpp +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (c) 2014-2017, Ilya Kotov - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "tabpage.h" - -TabPage::TabPage(QWidget *parent) : QWidget(parent) -{ -} diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/tabpage.h b/src-qt5/core/lumina-theme-engine/src/qt5ct/tabpage.h deleted file mode 100644 index ac285054..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/tabpage.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 2014-2017, Ilya Kotov - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef TABPAGE_H -#define TABPAGE_H - -#include - -class TabPage : public QWidget -{ - Q_OBJECT -public: - explicit TabPage(QWidget *parent = 0); - - virtual void writeSettings() = 0; -}; - -#endif // TABPAGE_H diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_ar.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_ar.ts deleted file mode 100644 index 35e0bfec..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_ar.ts +++ /dev/null @@ -1,709 +0,0 @@ - - - - - AppearancePage - - - Style: - أسلوب: - - - - Preview - مشاهدة - - - - Active palette - اللوحة النشطة - - - - Inactive palette - اللوحة الغير نشطة - - - - Disabled palette - اللوحة الغير مفعلة - - - - Palette - لوحة الالوان - - - - Default - افتراضي - - - - Custom - تخصيص - - - - Color scheme: - نظام الألوان: - - - - ... - ... - - - - Create - إنشاء - - - - Edit - تحرير - - - - Create a Copy - انشئ نسخة - - - - Rename - اعد التسمية - - - - Remove - حذف - - - - - - Enter Color Scheme Name - ادخل إسما لنظام الالوان - - - - - - File name: - اسم الملف - - - - - - Error - خطأ - - - - - - The color scheme "%1" already exists - نظام الالوان "%1" موجود أصلا - - - - - - Warning - تحذير - - - - - - The color scheme "%1" is read only - نظام الالوان "%1" للقراءة فقط - - - - Confirm Remove - تأكيد الحذف - - - - Are you sure you want to remove color scheme "%1"? - هل أنت متأكد أنك تريد إزالة نظام الألوان "%1"؟ - - - - %1 (copy) - %1 (نسخة) - - - - FontConfigDialog - - - - Font Configuration - تكوين الخط - - - - Disable automatic hinting for bold fonts - تعطيل تلقائي لتلمسحات الخطوط العريضة - - - - LCD filter: - مرشح ال سي دي: - - - - Automatic hinting - تلميح تلقائي - - - - Hinting - تلميح - - - - Font resolution: - ابعاد الخط: - - - - dpi - dpi - - - - Subpixel geometry: - هندسة البكسل الفرعي: - - - - Antialiasing - تنعيم الحواف - - - - Hinting style: - أسلوب التلميح - - - - - None - لا شيئ - - - - Slight - طفيف - - - - Medium - متوسط - - - - Full - كامل - - - - <i>%1</i> already exists. Do you want to replace it? - <i>%1</i> موجود بالفعل. هل تريد استبداله؟ - - - - FontsPage - - - - - - ... - ... - - - - General: - عام: - - - - Fixed width: - عرض ثابت: - - - - Create fonts.conf - انشاء fonts.conf - - - - Remove fonts.conf - حذف fonts.conf - - - - Remove Font Configuration - حذف اعدادات الخط - - - - Are you sure you want to delete <i>%1</i>? - هل انت متأكد من حذف <i>%1</i>؟ - - - - InterfacePage - - - Double click interval: - فترة النقر المزدوج: - - - - Cursor flash time: - زمن وميض المؤشر: - - - - ComboBox effect: - تأثير صندوق التحرير: - - - - ToolTip effect: - تأثير التلميح: - - - - ToolBox effect: - تأثير مربع الأدوات: - - - - - ms - م ث - - - - - - - Disable - تعطيل - - - - - - - Animate - تحريك - - - - - Fade - تلاشي - - - - Menu effect: - تأثير القائمة: - - - - Enable gui effects - تمكين تأثيرات واجهة المستخدم الرسومية - - - - Dialog buttons layout: - تخطيط أزرار الحوار : - - - - Menus have icons - ايقونات القوائم - - - - Dialog buttons have icons - ايقونات ازرار الحوار - - - - Activate item on single-click - تفعيل العنصر بنقرة واحدة - - - - Toolbar button style: - نمط زر شريط الأدوات: - - - - Mouse wheel scroll lines: - خطوط التمرير لعجلة الماوس : - - - - Only display the icon - عرض الرمز فقط - - - - Only display the text - عرض النص فقط - - - - The text appears beside the icon - اظهر النص بجوار الرمز - - - - The text appears under the icon - اظهر النص أسفل الرمز - - - - Follow the application style - اتبع نمط التطبيق - - - - MainWindow - - - Qt5 Configuration Tool - أداة اعداد Qt5 - - - - Appearance - المظهر - - - - Fonts - الخطوط - - - - Icon Theme - سمة الايقونات - - - - Interface - الواجهة - - - - Style Sheets - انماط الاوراق - - - - Version: %1 - النسخة: %1 - - - - PaletteEditDialog - - - Palette Editor - محرر لوحة الالوان - - - - Reset palette - اعادة تعيين لوحة الالوان - - - - Build inactive palette - توليد لوحة الالوان الغير نشطة - - - - Build disabled palette - توليد لوحة الالوان الغير مفعلة - - - - Active - نشط - - - - Inactive - غير نشط - - - - Disabled - غير مفعل - - - - Dark - داكن - - - - Window text - نص النافذة - - - - Button background - خلفية الزر - - - - Bright - مشرق - - - - Less bright - أقل سطوعا - - - - Less dark - أقل دكانة - - - - Window - النافذة - - - - Shadow - الظل - - - - Bright text - نص المشرق - - - - Button text - مص الزر - - - - Normal text - نص عادي - - - - Normal background - خلفية عادية - - - - Highlight - التحويم - - - - Highlighted text - نص التحويم - - - - Visited link - ربط تمت زيارته - - - - Default - افتراضي - - - - Tooltip background - خلفية التلميح - - - - Tooltip text - نص التلميح - - - - Link - الرابط - - - - Alternate background - خلفية بديلة - - - - Select Color - حدد لونا - - - - PreviewForm - - - Preview Window - معاينة النافذة - - - - Tab 1 - لسان 1 - - - - PushButton - زر - - - - Tab 2 - لسان 2 - - - - RadioButton - زر الاختيار - - - - CheckBox - زر التحديد - - - - QSSEditorDialog - - - %1 - Style Sheet Editor - %1 - محرر انماط الاوراق - - - - Style Sheet Editor - محرر انماط الاوراق - - - - QSSPage - - - Create - أنشىء - - - - - Edit - حرر - - - - - Rename - اعد التسمية - - - - - Remove - حذف - - - - File name: - اسم الملف - - - - Enter Style Sheet Name - ادخل اسما لنمط الورقة - - - - - - Error - خطأ - - - - The file "%1" already exists - هذا الملف "%1" موجود اصلا - - - - Confirm Remove - تأكيد الحذف - - - - Are you sure you want to remove style sheet "%1"? - هل أنت متأكد أنك تريد إزالة نمط الورقة "%1"؟ - - - - Rename Style Sheet - خذف نمط الورقة - - - - Style sheet name: - اسم نمط الورقة: - - - - The style sheet "%1" already exists - نمط الورقة "%1" موجود أصلا - - - - Unable to rename file - غير قادر على إعادة تسمية الملف - - - - main - - - Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable - الرجاء حذف <b>QT_STYLE_OVERRIDE</b> متغيرات البيئة - - - - The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly - <b>QT_QPA_PLATFORMTHEME</b> لم يتم تعيين متغير البيئة بشكل صحيح - - - - Unable to find <b>libqt5ct-style.so</b> - غير قادر على ايجاد <b>libqt5ct-style.so</b> - - - - Error - خطأ - - - diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_bg.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_bg.ts deleted file mode 100644 index d4a9d759..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_bg.ts +++ /dev/null @@ -1,709 +0,0 @@ - - - - - AppearancePage - - - Style: - Стил: - - - - Preview - Преглед: - - - - Active palette - Активна палитра - - - - Inactive palette - Неактивна палитра - - - - Disabled palette - Изключена палитра - - - - Palette - Палитра - - - - Default - По подразбиране - - - - Custom - Потребителски - - - - Color scheme: - Цветова схема: - - - - ... - ... - - - - Create - Създаване - - - - Edit - Редактиране - - - - Create a Copy - Създаване на копие - - - - Rename - Преименуване - - - - Remove - Премахване - - - - - - Enter Color Scheme Name - Въведете име на цветовата схема - - - - - - File name: - Име на файл: - - - - - - Error - Грешка - - - - - - The color scheme "%1" already exists - Цветовата схема "%1" вече съществува - - - - - - Warning - Внимание - - - - - - The color scheme "%1" is read only - Цветовата схема "%1" е само за четене - - - - Confirm Remove - Потвърждаване на премахването - - - - Are you sure you want to remove color scheme "%1"? - Сигурен ли сте, че искате да премахнете цветова схема "%1"? - - - - %1 (copy) - %1 (копиране) - - - - FontConfigDialog - - - - Font Configuration - Конфигурация на шрифтовете - - - - Disable automatic hinting for bold fonts - Изключване на автоматичното подсказване за удебелените шрифтове - - - - LCD filter: - LCD филтър: - - - - Automatic hinting - Автоматично подсказване - - - - Hinting - Подсказване - - - - Font resolution: - Резолюция на шрифт: - - - - dpi - точки на инч - - - - Subpixel geometry: - Подпикселна подредба: - - - - Antialiasing - Заглаждане - - - - Hinting style: - Стил на подсказване: - - - - - None - Без - - - - Slight - Тънък - - - - Medium - Среден - - - - Full - Пълен - - - - <i>%1</i> already exists. Do you want to replace it? - <i>%1</i> вече съществува. Искате ли да го замените? - - - - FontsPage - - - - - - ... - ... - - - - General: - Общи: - - - - Fixed width: - Фиксирана ширина: - - - - Create fonts.conf - Създаване на fonts.conf - - - - Remove fonts.conf - Премахване на fonts.conf - - - - Remove Font Configuration - Премахване на конфигурацията на шрифта - - - - Are you sure you want to delete <i>%1</i>? - Наистина ли искате да изтриете <i>%1</i>? - - - - InterfacePage - - - Double click interval: - Интервал при двойно кликване: - - - - Cursor flash time: - Време за мигане на курсора: - - - - ComboBox effect: - ComboBox ефект: - - - - ToolTip effect: - ToolTip ефект: - - - - ToolBox effect: - ToolBox ефект: - - - - - ms - мс - - - - - - - Disable - Изключване - - - - - - - Animate - Анимиран - - - - - Fade - Избледняващ - - - - Menu effect: - Ефект на меню: - - - - Enable gui effects - Включи графичните ефекти - - - - Dialog buttons layout: - Подредба на диалоговите бутони: - - - - Menus have icons - Икони в менютата - - - - Dialog buttons have icons - Икони в диалоговите бутони - - - - Activate item on single-click - Активиране на елемент с еднократно кликване - - - - Toolbar button style: - Стил на бутоните в лентата с инструменти: - - - - Mouse wheel scroll lines: - Превъртане на позициите с колелцето на мишката: - - - - Only display the icon - Покажи само икони - - - - Only display the text - Покажи само текст - - - - The text appears beside the icon - Текстът да се вижда до иконите - - - - The text appears under the icon - Текстът да се вижда под иконите - - - - Follow the application style - Следвай стила на програмата - - - - MainWindow - - - Qt5 Configuration Tool - Инструмент за настройка на Qt5 - - - - Appearance - Външен вид - - - - Fonts - Шрифтове - - - - Icon Theme - Тема за икони - - - - Interface - Интерфейс - - - - Style Sheets - Стил на страниците - - - - Version: %1 - Версия: %1 - - - - PaletteEditDialog - - - Palette Editor - Редактор на палитрата - - - - Reset palette - Нулиране на палитрата - - - - Build inactive palette - Изграждане на неактивна палитра - - - - Build disabled palette - Изграждане на изключена палитра - - - - Active - Активна - - - - Inactive - Неактивна - - - - Disabled - Изключена - - - - Dark - Тъмен - - - - Window text - Текст на прозорец - - - - Button background - Фон на бутон - - - - Bright - Светъл - - - - Less bright - По- малко светъл - - - - Less dark - По- малко тъмен - - - - Window - Прозорец - - - - Shadow - Сянка - - - - Bright text - Светъл текст - - - - Button text - Текст на бутон - - - - Normal text - Нормален текст - - - - Normal background - Нормален фон - - - - Highlight - Подчертаване - - - - Highlighted text - Подчертан текст - - - - Visited link - Посетен адрес - - - - Default - По подтазбиране - - - - Tooltip background - Фон на подсказка - - - - Tooltip text - Текст на подсказка - - - - Link - Връзка - - - - Alternate background - Алтернативен фон - - - - Select Color - Избор на цвят - - - - PreviewForm - - - Preview Window - Прозорец за преглед - - - - Tab 1 - Раздел 1 - - - - PushButton - PushButton - - - - Tab 2 - Раздел 2 - - - - RadioButton - RadioButton - - - - CheckBox - CheckBox - - - - QSSEditorDialog - - - %1 - Style Sheet Editor - %1 - Редактор на стила на страница - - - - Style Sheet Editor - Редактор на стила на страница - - - - QSSPage - - - Create - Създаване - - - - - Edit - Редактиране - - - - - Rename - Преименуване - - - - - Remove - Премахване - - - - File name: - Име на файл: - - - - Enter Style Sheet Name - Въведете име на стила на страница - - - - - - Error - Грешка - - - - The file "%1" already exists - Файлът "%1" вече съществува - - - - Confirm Remove - Потвърждение на премахването - - - - Are you sure you want to remove style sheet "%1"? - Сигурен ли сте, че искате да премахнете стил на страница "%1"? - - - - Rename Style Sheet - Преименуване на стил на страница - - - - Style sheet name: - Име на стил на страница: - - - - The style sheet "%1" already exists - Стилът на страница "%1" вече съществува - - - - Unable to rename file - Файлът не може да бъде преименуван - - - - main - - - Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable - Моля, премахнете променливата <b>QT_STYLE_OVERRIDE</b> - - - - The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly - Променливата <b>QT_QPA_PLATFORMTHEME</b> не е зададена правилно - - - - Unable to find <b>libqt5ct-style.so</b> - Не може да бъде намерен <b>libqt5ct-style.so</b> - - - - Error - Грешка - - - diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_ca.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_ca.ts deleted file mode 100644 index 897d4e91..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_ca.ts +++ /dev/null @@ -1,709 +0,0 @@ - - - - - AppearancePage - - - Style: - - - - - Preview - - - - - Active palette - - - - - Inactive palette - - - - - Disabled palette - - - - - Palette - - - - - Default - - - - - Custom - - - - - Color scheme: - - - - - ... - - - - - Create - - - - - Edit - - - - - Create a Copy - - - - - Rename - - - - - Remove - - - - - - - Enter Color Scheme Name - - - - - - - File name: - - - - - - - Error - - - - - - - The color scheme "%1" already exists - - - - - - - Warning - - - - - - - The color scheme "%1" is read only - - - - - Confirm Remove - - - - - Are you sure you want to remove color scheme "%1"? - - - - - %1 (copy) - - - - - FontConfigDialog - - - - Font Configuration - - - - - Disable automatic hinting for bold fonts - - - - - LCD filter: - - - - - Automatic hinting - - - - - Hinting - - - - - Font resolution: - - - - - Subpixel geometry: - - - - - Antialiasing - - - - - Hinting style: - - - - - dpi - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - <i>%1</i> already exists. Do you want to replace it? - - - - - FontsPage - - - - - - ... - - - - - General: - - - - - Fixed width: - - - - - Create fonts.conf - - - - - Remove fonts.conf - - - - - Remove Font Configuration - - - - - Are you sure you want to delete <i>%1</i>? - - - - - InterfacePage - - - Double click interval: - - - - - Cursor flash time: - - - - - ComboBox effect: - - - - - ToolTip effect: - - - - - ToolBox effect: - - - - - - ms - - - - - - - - Disable - - - - - - - - Animate - - - - - - Fade - - - - - Menu effect: - - - - - Enable gui effects - - - - - Dialog buttons layout: - - - - - Menus have icons - - - - - Dialog buttons have icons - - - - - Activate item on single-click - - - - - Toolbar button style: - - - - - Mouse wheel scroll lines: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Follow the application style - - - - - MainWindow - - - Qt5 Configuration Tool - - - - - Appearance - - - - - Fonts - - - - - Icon Theme - - - - - Interface - - - - - Style Sheets - - - - - Version: %1 - - - - - PaletteEditDialog - - - Palette Editor - - - - - Build inactive palette - - - - - Build disabled palette - - - - - Reset palette - - - - - Active - - - - - Inactive - - - - - Disabled - - - - - Window text - - - - - Button background - - - - - Bright - - - - - Less bright - - - - - Dark - - - - - Less dark - - - - - Normal text - - - - - Bright text - - - - - Button text - - - - - Normal background - - - - - Window - - - - - Shadow - - - - - Highlight - - - - - Highlighted text - - - - - Link - - - - - Visited link - - - - - Alternate background - - - - - Default - - - - - Tooltip background - - - - - Tooltip text - - - - - Select Color - - - - - PreviewForm - - - Preview Window - - - - - Tab 1 - - - - - PushButton - - - - - Tab 2 - - - - - RadioButton - - - - - CheckBox - - - - - QSSEditorDialog - - - Style Sheet Editor - - - - - %1 - Style Sheet Editor - - - - - QSSPage - - - Create - - - - - - Remove - - - - - - Edit - - - - - - Rename - - - - - Enter Style Sheet Name - - - - - File name: - - - - - - - Error - - - - - The file "%1" already exists - - - - - Confirm Remove - - - - - Are you sure you want to remove style sheet "%1"? - - - - - Rename Style Sheet - - - - - Style sheet name: - - - - - The style sheet "%1" already exists - - - - - Unable to rename file - - - - - main - - - Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable - - - - - The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly - - - - - Unable to find <b>libqt5ct-style.so</b> - - - - - Error - - - - diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_cs.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_cs.ts deleted file mode 100644 index acb28fd7..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_cs.ts +++ /dev/null @@ -1,709 +0,0 @@ - - - - - AppearancePage - - - Style: - Styl: - - - - Preview - Náhled - - - - Active palette - Činná paleta - - - - Inactive palette - Nečinná paleta - - - - Disabled palette - Zakázaná paleta - - - - Palette - Paleta - - - - Default - Výchozí - - - - Custom - Vlastní - - - - Color scheme: - Barevné schéma: - - - - ... - ... - - - - Create - Vytvořit - - - - Edit - Upravit - - - - Create a Copy - Vytvořit kopii - - - - Rename - Přejmenovat - - - - Remove - Odstranit - - - - - - Enter Color Scheme Name - Zadejte název barevného schématu - - - - - - File name: - Název souboru: - - - - - - Error - Chyba - - - - - - The color scheme "%1" already exists - Již je barevné schéma "%1" - - - - - - Warning - Varování - - - - - - The color scheme "%1" is read only - Barevné schéma "%1" je pouze pro čtení - - - - Confirm Remove - Potvrdit odstranění - - - - Are you sure you want to remove color scheme "%1"? - Jste si jistý, že chcete odstranit barevné schéma "%1"? - - - - %1 (copy) - %1 (kopie) - - - - FontConfigDialog - - - - Font Configuration - Nastavení písma - - - - Disable automatic hinting for bold fonts - Zakázat automatické podřezávání tučných písem - - - - LCD filter: - Filtr LCD: - - - - Automatic hinting - Automatické podřezávání - - - - Hinting - Podřezávání - - - - Font resolution: - Rozlišení písma: - - - - dpi - DPI - - - - Subpixel geometry: - Uspořádání subpixelů: - - - - Antialiasing - Vyhlazování - - - - Hinting style: - Styl podřezávání: - - - - - None - Žádný - - - - Slight - Menší - - - - Medium - Střední - - - - Full - Plné - - - - <i>%1</i> already exists. Do you want to replace it? - <i>%1</i> již existuje. Chcete jej nahradit? - - - - FontsPage - - - - - - ... - ... - - - - General: - Obecné: - - - - Fixed width: - Pevná šířka: - - - - Create fonts.conf - Vytvořit fonts.conf - - - - Remove fonts.conf - Odstranit fonts.conf - - - - Remove Font Configuration - Odstranit nastavení písma - - - - Are you sure you want to delete <i>%1</i>? - Opravdu chcete smazat <i>%1</i>? - - - - InterfacePage - - - Double click interval: - Interval pro dvojité klepnutí: - - - - Cursor flash time: - Doba blikání ukazovátka: - - - - ComboBox effect: - Efekt rozbalovacího seznamu: - - - - ToolTip effect: - Efekt bublinové nápovědy: - - - - ToolBox effect: - Efekt nástrojové sady: - - - - - ms - ms - - - - - - - Disable - Zakázat - - - - - - - Animate - Animovat - - - - - Fade - Blednutí - - - - Menu effect: - Efekt nabídky: - - - - Enable gui effects - Povolit efekty rozhraní - - - - Dialog buttons layout: - Rozvržení tlačítek dialogu: - - - - Menus have icons - Nabídky mají ikony - - - - Dialog buttons have icons - Dialogová tlačítka mají ikony - - - - Activate item on single-click - Zapnout položku jedním klepnutím - - - - Toolbar button style: - Styl tlačítka v nástrojovém pruhu: - - - - Mouse wheel scroll lines: - Kolečko myši projíždí řádky: - - - - Only display the icon - Zobrazit pouze ikonu - - - - Only display the text - Zobrazit pouze text - - - - The text appears beside the icon - Text se objeví vedle ikony - - - - The text appears under the icon - Text se objeví pod ikonou - - - - Follow the application style - Následovat styl programu - - - - MainWindow - - - Qt5 Configuration Tool - Nástroj na nastavení Qt5 - - - - Appearance - Vzhled - - - - Fonts - Písma - - - - Icon Theme - Podoba ikon - - - - Interface - Rozhraní - - - - Style Sheets - Stylové listy - - - - Version: %1 - Verze: %1 - - - - PaletteEditDialog - - - Palette Editor - Editor palety - - - - Reset palette - Nastavit paletu znovu - - - - Build inactive palette - Vytvořit nečinnou paletu - - - - Build disabled palette - Vytvořit zakázanou paletu - - - - Active - Činná - - - - Inactive - Nečinná - - - - Disabled - Zakázaná - - - - Dark - Tmavé - - - - Window text - Text okna - - - - Button background - Pozadí tlačítka - - - - Bright - Světlé - - - - Less bright - Méně světlé - - - - Less dark - Tmavé - - - - Window - Okno - - - - Shadow - Stín - - - - Bright text - Světlý text - - - - Button text - Text tlačítka - - - - Normal text - Běžný text - - - - Normal background - Běžné pozadí - - - - Highlight - Zvýrazněná oblast - - - - Highlighted text - Zvýrazněný text - - - - Visited link - Navštívený odkaz - - - - Default - Výchozí - - - - Tooltip background - Pozadí bublinové nápovědy - - - - Tooltip text - Text bublinové nápovědy - - - - Link - Odkaz - - - - Alternate background - Náhradní pozadí - - - - Select Color - Vybrat barvu - - - - PreviewForm - - - Preview Window - Náhledové okno - - - - Tab 1 - Karta 1 - - - - PushButton - Tlačítko - - - - Tab 2 - Karta 2 - - - - RadioButton - Přepínač - - - - CheckBox - Zaškrtávací okénko - - - - QSSEditorDialog - - - %1 - Style Sheet Editor - %1 - Editor stylových listů - - - - Style Sheet Editor - Editor stylového listu - - - - QSSPage - - - Create - Vytvořit - - - - - Edit - Upravit - - - - - Rename - Přejmenovat - - - - - Remove - Odstranit - - - - File name: - Název souboru: - - - - Enter Style Sheet Name - Zadejte název stylového listu - - - - - - Error - Chyba - - - - The file "%1" already exists - Již je soubor "%1" - - - - Confirm Remove - Potvrdit odstranění - - - - Are you sure you want to remove style sheet "%1"? - Jste si jistý, že chcete odstranit stylový list "%1"? - - - - Rename Style Sheet - Přejmenovat stylový list - - - - Style sheet name: - Název stylového listu: - - - - The style sheet "%1" already exists - Již je stylový list "%1" - - - - Unable to rename file - Nelze přejmenovat soubor - - - - main - - - Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable - Odstraňte, prosím, proměnnou prostředí <b>QT_STYLE_OVERRIDE</b> - - - - The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly - Proměnná prostředí <b>QT_QPA_PLATFORMTHEME</b> není nastavena správně - - - - Unable to find <b>libqt5ct-style.so</b> - Nelze najít <b>libqt5ct-style.so</b> - - - - Error - Chyba - - - diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_de.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_de.ts deleted file mode 100644 index 62a6e64a..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_de.ts +++ /dev/null @@ -1,709 +0,0 @@ - - - - - AppearancePage - - - Style: - Stil: - - - - Preview - Vorschau - - - - Active palette - Aktive Palette - - - - Inactive palette - Inaktive Palette - - - - Disabled palette - Deaktivierte Palette - - - - Palette - Palette - - - - Default - Standard - - - - Custom - Benutzerdefiniert - - - - Color scheme: - Farbschema: - - - - ... - ... - - - - Create - Erstellen - - - - Edit - Bearbeiten - - - - Create a Copy - Erstellen Sie eine Kopie - - - - Rename - Umbenennen - - - - Remove - Entfernen - - - - - - Enter Color Scheme Name - Farbschemaname eingeben - - - - - - File name: - Dateiname: - - - - - - Error - Fehler - - - - - - The color scheme "%1" already exists - Das Farbschema »%1« ist bereits vorhanden - - - - - - Warning - Warnung - - - - - - The color scheme "%1" is read only - Das Farbschema »%1« ist schreibgeschützt - - - - Confirm Remove - Entfernen bestätigen - - - - Are you sure you want to remove color scheme "%1"? - Sind Sie sicher, dass Sie das Farbschema »%1« entfernen möchten? - - - - %1 (copy) - %1 (kopieren) - - - - FontConfigDialog - - - - Font Configuration - Schriftkonfiguration - - - - Disable automatic hinting for bold fonts - Automatisches Hinting für Fettschriften deaktivieren - - - - LCD filter: - LCD-Filter: - - - - Automatic hinting - Automatisches Hinting - - - - Hinting - Hinting - - - - Font resolution: - Schriftauflösung: - - - - dpi - dpi - - - - Subpixel geometry: - Teilbildpunkt-Geometrie: - - - - Antialiasing - Antialiasing (Glättung) - - - - Hinting style: - Hinting-Stil: - - - - - None - Keiner - - - - Slight - Gering - - - - Medium - Mittel - - - - Full - Vollständig - - - - <i>%1</i> already exists. Do you want to replace it? - <i>%1</i> ist bereits vorhanden. Wollen Sie es ersetzen? - - - - FontsPage - - - - - - ... - ... - - - - General: - Allgemein: - - - - Fixed width: - Feste Breite: - - - - Create fonts.conf - fonts.conf erstellen - - - - Remove fonts.conf - fonts.conf löschen - - - - Remove Font Configuration - Schriftkonfiguration entfernen - - - - Are you sure you want to delete <i>%1</i>? - Sind Sie sicher, dass Sie <i>%1</i> löschen wollen? - - - - InterfacePage - - - Double click interval: - Doppelklickintervall: - - - - Cursor flash time: - Eingabezeiger-Blinkdauer: - - - - ComboBox effect: - ComboBox-Effekt: - - - - ToolTip effect: - Kurzinfo-Effekt: - - - - ToolBox effect: - Werkzeugkasten-Effekt: - - - - - ms - ms - - - - - - - Disable - Deaktivieren - - - - - - - Animate - Animieren - - - - - Fade - Ausblenden - - - - Menu effect: - Menü-Effekt: - - - - Enable gui effects - Grafische Effekte aktivieren - - - - Dialog buttons layout: - Anordnung der Dialogschaltflächen: - - - - Menus have icons - Menüs haben Symbole - - - - Dialog buttons have icons - Dialogschaltflächen haben Symbole - - - - Activate item on single-click - Eintrag mit einem Einfachklick aktivieren - - - - Toolbar button style: - Werkzeugleiste-Schaltflächenstil: - - - - Mouse wheel scroll lines: - Mausrad-Bildlaufzeilen: - - - - Only display the icon - Nur das Symbol anzeigen - - - - Only display the text - Nur den Text anzeigen - - - - The text appears beside the icon - Der Text erscheint neben dem Symbol - - - - The text appears under the icon - Der Text erscheint unter dem Symbol - - - - Follow the application style - Dem Anwendungsstil folgen - - - - MainWindow - - - Qt5 Configuration Tool - Qt5-Konfigurationswerkzeug - - - - Appearance - Erscheinungsbild - - - - Fonts - Schriftarten - - - - Icon Theme - Symbolthema - - - - Interface - Oberfläche - - - - Style Sheets - Stilvorlagen - - - - Version: %1 - Version: %1 - - - - PaletteEditDialog - - - Palette Editor - Paletteneditor - - - - Reset palette - Palette zurücksetzen - - - - Build inactive palette - Inaktive Palette erstellen - - - - Build disabled palette - Deaktivierte Palette erstellen - - - - Active - Aktiv - - - - Inactive - Inaktiv - - - - Disabled - Deaktiviert - - - - Dark - Dunkel - - - - Window text - Fenstertext - - - - Button background - Knopfhintergrund - - - - Bright - Hell - - - - Less bright - Weniger hell - - - - Less dark - Weniger dunkel - - - - Window - Fenster - - - - Shadow - Schatten - - - - Bright text - Heller Text - - - - Button text - Schaltflächentext - - - - Normal text - Normaler Text - - - - Normal background - Normaler Hintergrund - - - - Highlight - Hervorheben - - - - Highlighted text - Hervorgehobener Text - - - - Visited link - Besuchter Link - - - - Default - Standard - - - - Tooltip background - Kurzinfo-Hintergrund - - - - Tooltip text - Kurzinfo-Text - - - - Link - Link - - - - Alternate background - Alternativer Hintergrund - - - - Select Color - Farbe auswählen - - - - PreviewForm - - - Preview Window - Vorschaufenster - - - - Tab 1 - Reiter 1 - - - - PushButton - Schaltfläche drücken - - - - Tab 2 - Reiter 2 - - - - RadioButton - Radioschaltfläche - - - - CheckBox - Ankreuzfeld - - - - QSSEditorDialog - - - %1 - Style Sheet Editor - %1 - Stilvorlagen-Editor - - - - Style Sheet Editor - Stilvorlagen-Editor - - - - QSSPage - - - Create - Erstellen - - - - - Edit - Bearbeiten - - - - - Rename - Umbenennen - - - - - Remove - Entfernen - - - - File name: - Dateiname: - - - - Enter Style Sheet Name - Stilvorlagenname eingeben - - - - - - Error - Fehler - - - - The file "%1" already exists - Die Datei "%1" ist bereits vorhanden - - - - Confirm Remove - Entfernen bestätigen - - - - Are you sure you want to remove style sheet "%1"? - Sind Sie sicher, dass Sie die Stilvorlage »%1« entfernen möchten? - - - - Rename Style Sheet - Stilvorlage umbenennen - - - - Style sheet name: - Stilvorlagenname: - - - - The style sheet "%1" already exists - Die Stilvorlage »%1« ist bereits vorhanden - - - - Unable to rename file - Datei konnte nicht umbenannt werden - - - - main - - - Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable - Bitte entfernen Sie die Umgebungsvariable <b>QT_STYLE_OVERRIDE</b> - - - - The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly - Die Umgebungsvariable <b>QT_QPA_PLATFORMTHEME</b> ist nicht korrekt festgelegt - - - - Unable to find <b>libqt5ct-style.so</b> - <b>libqt5ct-style.so</b> kann nicht gefunden werden - - - - Error - Fehler - - - diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_el.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_el.ts deleted file mode 100644 index 72c87114..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_el.ts +++ /dev/null @@ -1,710 +0,0 @@ - - - - - AppearancePage - - - Style: - Ύφος: - - - - Preview - Προεπισκόπηση - - - - Active palette - Ενεργή χρωματοπυξίδα - - - - Inactive palette - Ανενεργή χρωματοπυξίδα - - - - Disabled palette - Απενεργοποιημένη χρωματοπυξίδα - - - - Palette - Χρωματοπυξίδα - - - - Default - Εξ ορισμού - - - - Custom - Προσαρμοσμένο - - - - Color scheme: - Χρωματικό σχήμα: - - - - ... - ... - - - - Create - Δημιουργία - - - - Edit - Επεξεργασία - - - - Create a Copy - Δημιουργία αντιγράφου - - - - Rename - Μετονομασία - - - - Remove - Αφαίρεση - - - - - - Enter Color Scheme Name - Εισαγάγετε το όνομα του χρωματικού σχήματος - - - - - - File name: - Όνομα αρχείου: - - - - - - Error - Σφάλμα - - - - - - The color scheme "%1" already exists - Το χρωματικό σχήμα «%1» υπάρχει ήδη - - - - - - Warning - Προειδοποίηση - - - - - - The color scheme "%1" is read only - Το χρωματικό σχήμα «%1» είναι μόνο για ανάγνωση - - - - Confirm Remove - Επικύρωση της αφαίρεσης - - - - Are you sure you want to remove color scheme "%1"? - Είστε σίγουρος-η ότι θέλετε να αφαιρέσετε το χρωματικό σχήμα «%1»; - - - - %1 (copy) - %1 (αντίγραφο) - - - - FontConfigDialog - - - - Font Configuration - Διαμόρφωση γραμματοσειράς - - - - Disable automatic hinting for bold fonts - Απενεργοποίηση αυτόματων υποδείξεων στις έντονες γραμματοσειρές - - - - LCD filter: - Φίλτρο LCD: - - - - Automatic hinting - Αυτόματες υποδείξεις - - - - Hinting - Υποδείξεις - - - - Font resolution: - Ανάλυση γραμματοσειράς: - - - - dpi - dpi - - - - Subpixel geometry: - Γεωμετρία υποεικονοστοιχείων: - - - - Antialiasing - Εξομάλυνση - - - - Hinting style: - Στυλ υπόδειξης: - - - - - None - Κανένα - - - - Slight - Ελαφρύ - - - - Medium - Μεσαίο - - - - Full - Πλήρες - - - - <i>%1</i> already exists. Do you want to replace it? - Το αρχείο <i>%1</i> υπάρχει ήδη. Θέλετε να το αντικαταστήσετε; - - - - FontsPage - - - - - - ... - ... - - - - General: - Γενικά: - - - - Fixed width: - Σταθερού πλάτους: - - - - Create fonts.conf - Δημιουργία του fonts.conf - - - - Remove fonts.conf - Αφαίρεση του fonts.conf - - - - Remove Font Configuration - Αφαίρεση διαμόρφωσης γραμματοσειράς - - - - - Are you sure you want to delete <i>%1</i>? - Επιθυμείτε σίγουρα την διαγραφή του <i>%1</i>; - - - - InterfacePage - - - Double click interval: - Χρονικό διάστημα διπλού κλικ: - - - - Cursor flash time: - Χρόνος αναβοσβήματος δρομέα: - - - - ComboBox effect: - Τέχνασμα εντυπωσιασμού σύνθετου πλαισίου: - - - - ToolTip effect: - Τέχνασμα εντυπωσιασμού υπόδειξης: - - - - ToolBox effect: - Τέχνασμα εντυπωσιασμού εργαλειοθήκης: - - - - - ms - ms - - - - - - - Disable - Απενεργοποίηση - - - - - - - Animate - Κίνηση - - - - - Fade - Σβήσιμο - - - - Menu effect: - Τέχνασμα εντυπωσιασμού μενού: - - - - Enable gui effects - Ενεργοποίηση τεχνασμάτων εντυπωσιασμού περιβάλλοντος - - - - Dialog buttons layout: - Διάταξη κουμπιών διαλόγου: - - - - Menus have icons - Τα μενού διαθέτουν εικονίδια - - - - Dialog buttons have icons - Τα κουμπιά των διαλόγων διαθέτουν εικονίδια - - - - Activate item on single-click - Ενεργοποίηση του αντικειμένου με μονό κλικ - - - - Toolbar button style: - Τεχνοτροπία των κουμπιών της γραμμής εργαλείων: - - - - Mouse wheel scroll lines: - Γραμμές κύλισης τροχού ποντικιού: - - - - Only display the icon - Εμφάνιση μόνον του εικονιδίου - - - - Only display the text - Εμφάνιση μόνον του κειμένου - - - - The text appears beside the icon - Το κείμενο εμφανίζεται δίπλα από το εικονίδιο - - - - The text appears under the icon - Το κείμενο εμφανίζεται κάτω από το εικονίδιο - - - - Follow the application style - Ακολούθηση της τεχνοτροπίας της εφαρμογής - - - - MainWindow - - - Qt5 Configuration Tool - Εργαλείο διαμόρφωσης της Qt5 - - - - Appearance - Εμφάνιση - - - - Fonts - Γραμματοσειρές - - - - Icon Theme - Θέματα εικονιδίων - - - - Interface - Περιβάλλον - - - - Style Sheets - Σελίδες αισθητικής επικάλυψης - - - - Version: %1 - Έκδοση: %1 - - - - PaletteEditDialog - - - Palette Editor - Επεξεργαστής χρωματοπυξίδας - - - - Reset palette - Επαναφορά χρωματοπυξίδας - - - - Build inactive palette - Δημιουργία ανενεργής χρωματοπυξίδας - - - - Build disabled palette - Δημιουργία απενεργοποιημένης χρωματοπυξίδας - - - - Active - Ενεργό - - - - Inactive - Ανενεργό - - - - Disabled - Απενεργοποιημένο - - - - Dark - Σκούρο - - - - Window text - Κείμενο παραθύρου - - - - Button background - Παρασκήνιο κουμπιού - - - - Bright - Φωτεινό - - - - Less bright - Σκοτεινότερο - - - - Less dark - Εξασθενισμένο - - - - Window - Παράθυρο - - - - Shadow - Σκιά - - - - Bright text - Φωτεινό κείμενο - - - - Button text - Κείμενο κουμπιού - - - - Normal text - Κανονικό κείμενο - - - - Normal background - Κανονικό παρασκήνιο - - - - Highlight - Τονισμός - - - - Highlighted text - Τονισμένο κείμενο - - - - Visited link - Επισκεφθείς δεσμός - - - - Default - Εξ ορισμού - - - - Tooltip background - Παρασκήνιο υπόδειξης - - - - Tooltip text - Κείμενο υπόδειξης - - - - Link - Δεσμός - - - - Alternate background - Εναλλάξ παρασκήνιο - - - - Select Color - Επιλογή Χρώματος - - - - PreviewForm - - - Preview Window - Προεπισκόπηση παραθύρου - - - - Tab 1 - Καρτέλα 1 - - - - PushButton - Κουμπί πίεσης - - - - Tab 2 - Καρτέλα 2 - - - - RadioButton - Κουμπί επιλογής - - - - CheckBox - Πλαίσιο ενεργοποίησης - - - - QSSEditorDialog - - - %1 - Style Sheet Editor - %1 - Επεξεργαστής φύλλου αισθητικής επικάλυψης - - - - Style Sheet Editor - Επεξεργαστής φύλλου αισθητικής επικάλυψης - - - - QSSPage - - - Create - Δημιουργία - - - - - Edit - Επεξεργασία - - - - - Rename - Μετονομασία - - - - - Remove - Αφαίρεση - - - - File name: - Όνομα αρχείου: - - - - Enter Style Sheet Name - Εισάγετε το όνομα του φύλλου αισθητικής επικάλυψης - - - - - - Error - Σφάλμα - - - - The file "%1" already exists - Το αρχείο «%1» υπάρχει ήδη - - - - Confirm Remove - Επικύρωση της αφαίρεσης - - - - Are you sure you want to remove style sheet "%1"? - Είστε σίγουρος-η ότι θέλετε να αφαιρέσετε το φύλλο αισθητικής επικάλυψης «%1»; - - - - Rename Style Sheet - Μετονομασία φύλλου αισθητικής επικάλυψης - - - - Style sheet name: - Όνομα του φύλλου αισθητικής επικάλυψης: - - - - The style sheet "%1" already exists - Το φύλλο αισθητικής επικάλυψης «%1» υπάρχει ήδη - - - - Unable to rename file - Αδυναμία μετονομασία του αρχείου - - - - main - - - Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable - Παρακαλώ αφαιρέστε την μεταβλητή περιβάλλοντος <b>QT_STYLE_OVERRIDE</b> - - - - The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly - Η μεταβλητή περιβάλλοντος <b>QT_QPA_PLATFORMTHEME</b> δεν έχει οριστεί σωστά - - - - Unable to find <b>libqt5ct-style.so</b> - Αδύνατη η εύρεση του <b>libqt5ct-style.so</b> - - - - Error - Σφάλμα - - - diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_en.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_en.ts deleted file mode 100644 index b4fe7e17..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_en.ts +++ /dev/null @@ -1,709 +0,0 @@ - - - - - AppearancePage - - - Style: - - - - - Preview - - - - - Active palette - - - - - Inactive palette - - - - - Disabled palette - - - - - Palette - - - - - Default - - - - - Custom - - - - - Color scheme: - - - - - ... - - - - - Create - - - - - Edit - - - - - Create a Copy - - - - - Rename - - - - - Remove - - - - - - - Enter Color Scheme Name - - - - - - - File name: - - - - - - - Error - - - - - - - The color scheme "%1" already exists - - - - - - - Warning - - - - - - - The color scheme "%1" is read only - - - - - Confirm Remove - - - - - Are you sure you want to remove color scheme "%1"? - - - - - %1 (copy) - - - - - FontConfigDialog - - - - Font Configuration - - - - - Disable automatic hinting for bold fonts - - - - - LCD filter: - - - - - Automatic hinting - - - - - Hinting - - - - - Font resolution: - - - - - dpi - - - - - Subpixel geometry: - - - - - Antialiasing - - - - - Hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - <i>%1</i> already exists. Do you want to replace it? - - - - - FontsPage - - - - - - ... - - - - - General: - - - - - Fixed width: - - - - - Create fonts.conf - - - - - Remove fonts.conf - - - - - Remove Font Configuration - - - - - Are you sure you want to delete <i>%1</i>? - - - - - InterfacePage - - - Double click interval: - - - - - Cursor flash time: - - - - - ComboBox effect: - - - - - ToolTip effect: - - - - - ToolBox effect: - - - - - - ms - - - - - - - - Disable - - - - - - - - Animate - - - - - - Fade - - - - - Menu effect: - - - - - Enable gui effects - - - - - Dialog buttons layout: - - - - - Menus have icons - - - - - Dialog buttons have icons - - - - - Activate item on single-click - - - - - Toolbar button style: - - - - - Mouse wheel scroll lines: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Follow the application style - - - - - MainWindow - - - Qt5 Configuration Tool - - - - - Appearance - - - - - Fonts - - - - - Icon Theme - - - - - Interface - - - - - Style Sheets - - - - - Version: %1 - - - - - PaletteEditDialog - - - Palette Editor - - - - - Reset palette - - - - - Build inactive palette - - - - - Build disabled palette - - - - - Active - - - - - Inactive - - - - - Disabled - - - - - Dark - - - - - Window text - - - - - Button background - - - - - Bright - - - - - Less bright - - - - - Less dark - - - - - Window - - - - - Shadow - - - - - Bright text - - - - - Button text - - - - - Normal text - - - - - Normal background - - - - - Highlight - - - - - Highlighted text - - - - - Visited link - - - - - Default - - - - - Tooltip background - - - - - Tooltip text - - - - - Link - - - - - Alternate background - - - - - Select Color - - - - - PreviewForm - - - Preview Window - - - - - Tab 1 - - - - - PushButton - - - - - Tab 2 - - - - - RadioButton - - - - - CheckBox - - - - - QSSEditorDialog - - - %1 - Style Sheet Editor - - - - - Style Sheet Editor - - - - - QSSPage - - - Create - - - - - - Edit - - - - - - Rename - - - - - - Remove - - - - - File name: - - - - - Enter Style Sheet Name - - - - - - - Error - - - - - The file "%1" already exists - - - - - Confirm Remove - - - - - Are you sure you want to remove style sheet "%1"? - - - - - Rename Style Sheet - - - - - Style sheet name: - - - - - The style sheet "%1" already exists - - - - - Unable to rename file - - - - - main - - - Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable - - - - - The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly - - - - - Unable to find <b>libqt5ct-style.so</b> - - - - - Error - - - - diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_es.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_es.ts deleted file mode 100644 index fa897c4f..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_es.ts +++ /dev/null @@ -1,709 +0,0 @@ - - - - - AppearancePage - - - Style: - - - - - Preview - - - - - Active palette - - - - - Inactive palette - - - - - Disabled palette - - - - - Palette - - - - - Default - - - - - Custom - - - - - Color scheme: - - - - - ... - - - - - Create - - - - - Edit - - - - - Create a Copy - - - - - Rename - - - - - Remove - - - - - - - Enter Color Scheme Name - - - - - - - File name: - - - - - - - Error - - - - - - - The color scheme "%1" already exists - - - - - - - Warning - - - - - - - The color scheme "%1" is read only - - - - - Confirm Remove - - - - - Are you sure you want to remove color scheme "%1"? - - - - - %1 (copy) - - - - - FontConfigDialog - - - - Font Configuration - - - - - Disable automatic hinting for bold fonts - - - - - LCD filter: - - - - - Automatic hinting - - - - - Hinting - - - - - Font resolution: - - - - - dpi - - - - - Subpixel geometry: - - - - - Antialiasing - - - - - Hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - <i>%1</i> already exists. Do you want to replace it? - - - - - FontsPage - - - - - - ... - - - - - General: - - - - - Fixed width: - - - - - Create fonts.conf - - - - - Remove fonts.conf - - - - - Remove Font Configuration - - - - - Are you sure you want to delete <i>%1</i>? - - - - - InterfacePage - - - Double click interval: - - - - - Cursor flash time: - - - - - ComboBox effect: - - - - - ToolTip effect: - - - - - ToolBox effect: - - - - - - ms - - - - - - - - Disable - - - - - - - - Animate - - - - - - Fade - - - - - Menu effect: - - - - - Enable gui effects - - - - - Dialog buttons layout: - - - - - Menus have icons - - - - - Dialog buttons have icons - - - - - Activate item on single-click - - - - - Toolbar button style: - - - - - Mouse wheel scroll lines: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Follow the application style - - - - - MainWindow - - - Qt5 Configuration Tool - - - - - Appearance - - - - - Fonts - - - - - Icon Theme - - - - - Interface - - - - - Style Sheets - - - - - Version: %1 - - - - - PaletteEditDialog - - - Palette Editor - - - - - Reset palette - - - - - Build inactive palette - - - - - Build disabled palette - - - - - Active - - - - - Inactive - - - - - Disabled - - - - - Dark - - - - - Window text - - - - - Button background - - - - - Bright - - - - - Less bright - - - - - Less dark - - - - - Window - - - - - Shadow - - - - - Bright text - - - - - Button text - - - - - Normal text - - - - - Normal background - - - - - Highlight - - - - - Highlighted text - - - - - Visited link - - - - - Default - - - - - Tooltip background - - - - - Tooltip text - - - - - Link - - - - - Alternate background - - - - - Select Color - - - - - PreviewForm - - - Preview Window - - - - - Tab 1 - - - - - PushButton - - - - - Tab 2 - - - - - RadioButton - - - - - CheckBox - - - - - QSSEditorDialog - - - %1 - Style Sheet Editor - - - - - Style Sheet Editor - - - - - QSSPage - - - Create - - - - - - Edit - - - - - - Rename - - - - - - Remove - - - - - File name: - - - - - Enter Style Sheet Name - - - - - - - Error - - - - - The file "%1" already exists - - - - - Confirm Remove - - - - - Are you sure you want to remove style sheet "%1"? - - - - - Rename Style Sheet - - - - - Style sheet name: - - - - - The style sheet "%1" already exists - - - - - Unable to rename file - - - - - main - - - Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable - - - - - The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly - - - - - Unable to find <b>libqt5ct-style.so</b> - - - - - Error - - - - diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_es_ES.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_es_ES.ts deleted file mode 100644 index e9abee6f..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_es_ES.ts +++ /dev/null @@ -1,709 +0,0 @@ - - - - - AppearancePage - - - Style: - Estilo: - - - - Preview - Vista previa - - - - Active palette - Paleta activa - - - - Inactive palette - Paleta inactiva - - - - Disabled palette - Paleta desactivada - - - - Palette - Paleta - - - - Default - Predeterminado - - - - Custom - Personalizado - - - - Color scheme: - Combinación de colores : - - - - ... - ... - - - - Create - Crear - - - - Edit - Editar - - - - Create a Copy - Crear una copia - - - - Rename - Renombrar - - - - Remove - Borrar - - - - - - Enter Color Scheme Name - Introducir nombre de la combinación de colores - - - - - - File name: - Nombre del archivo: - - - - - - Error - Error - - - - - - The color scheme "%1" already exists - La combinación de colores "%1" ya existe - - - - - - Warning - Aviso - - - - - - The color scheme "%1" is read only - La combinación de colores "%1" es de sólo lectura - - - - Confirm Remove - Confirmar borrado - - - - Are you sure you want to remove color scheme "%1"? - ¿Seguro que quiere borrar la combinación de colores "%1"? - - - - %1 (copy) - %1 (copiar) - - - - FontConfigDialog - - - - Font Configuration - Configuración de fuente - - - - Disable automatic hinting for bold fonts - Desactivar consejo automático para fuentes en negrita - - - - LCD filter: - Filtro LCD: - - - - Automatic hinting - Consejo automático - - - - Hinting - Consejo - - - - Font resolution: - Resolución de fuente: - - - - dpi - ppp - - - - Subpixel geometry: - Geometría subpíxeles: - - - - Antialiasing - Suavizado de líneas - - - - Hinting style: - Estilo de consejo: - - - - - None - Ninguno - - - - Slight - Leve - - - - Medium - Medio - - - - Full - Completo - - - - <i>%1</i> already exists. Do you want to replace it? - <i>%1</i> ya existe. ¿Quieres reemplazarlo? - - - - FontsPage - - - - - - ... - ... - - - - General: - General: - - - - Fixed width: - Ancho fijo: - - - - Create fonts.conf - Crear fonts.conf - - - - Remove fonts.conf - Borrar fonts.conf - - - - Remove Font Configuration - Borrar configuración de fuentes - - - - Are you sure you want to delete <i>%1</i>? - ¿Seguro que quieres borrar <i>%1</i>? - - - - InterfacePage - - - Double click interval: - Intervalo de doble clic: - - - - Cursor flash time: - Tiempo de parpadeo del cursor: - - - - ComboBox effect: - Efecto ComboBox: - - - - ToolTip effect: - Efecto de información sobre herramientas: - - - - ToolBox effect: - Efecto de caja de herramientas: - - - - - ms - ms - - - - - - - Disable - Inhabilitar - - - - - - - Animate - Animado - - - - - Fade - Fundido - - - - Menu effect: - Menú de efectos: - - - - Enable gui effects - Activar efectos - - - - Dialog buttons layout: - Diseño de botones de diálogo: - - - - Menus have icons - Menús con iconos - - - - Dialog buttons have icons - Botones de diálogo con iconos - - - - Activate item on single-click - - - - - Toolbar button style: - - - - - Mouse wheel scroll lines: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Follow the application style - - - - - MainWindow - - - Qt5 Configuration Tool - Herramienta de configuración de QT5 - - - - Appearance - Apariencia - - - - Fonts - Fuentes - - - - Icon Theme - Tema de iconos - - - - Interface - Interfaz - - - - Style Sheets - Hojas de estilo - - - - Version: %1 - Versión: %1 - - - - PaletteEditDialog - - - Palette Editor - Editor de paleta - - - - Reset palette - Restablecer paleta - - - - Build inactive palette - Generar paleta inactiva - - - - Build disabled palette - Generar paleta desactivada - - - - Active - Activo - - - - Inactive - Inactivo - - - - Disabled - Desactivado - - - - Dark - Oscuro - - - - Window text - Ventana de texto - - - - Button background - Botón de fondo - - - - Bright - Brillante - - - - Less bright - Menos brillante - - - - Less dark - Menos oscuro - - - - Window - Ventana - - - - Shadow - Sombra - - - - Bright text - Texto brillante - - - - Button text - Botón de texto - - - - Normal text - Texto normal - - - - Normal background - Fondo habitual - - - - Highlight - Resaltar - - - - Highlighted text - Texto resaltado - - - - Visited link - Enlace visitado - - - - Default - Predeterminado - - - - Tooltip background - Fondo de información sobre herramientas - - - - Tooltip text - Texto de información sobre herramientas - - - - Link - Enlace - - - - Alternate background - Fondo alternativo - - - - Select Color - Elegir color - - - - PreviewForm - - - Preview Window - Ventana de previsualización - - - - Tab 1 - Pestaña 1 - - - - PushButton - Pulsador - - - - Tab 2 - Pestaña 2 - - - - RadioButton - Botón de opción - - - - CheckBox - Casilla de verificación - - - - QSSEditorDialog - - - %1 - Style Sheet Editor - %1 - Editor de hojas de estilo - - - - Style Sheet Editor - Editor de hojas de estilo - - - - QSSPage - - - Create - Crear - - - - - Edit - Editar - - - - - Rename - Renombrar - - - - - Remove - Borrar - - - - File name: - Nombre del archivo: - - - - Enter Style Sheet Name - Introducir nombre de la hoja de estilo - - - - - - Error - Error - - - - The file "%1" already exists - El archivo "%1" ya existe - - - - Confirm Remove - Confirmar borrado - - - - Are you sure you want to remove style sheet "%1"? - ¿Seguro que quiere borrar la hoja de estilo "%1"? - - - - Rename Style Sheet - Renombrar hoja de estilo - - - - Style sheet name: - Nombre de la hoja de estilo: - - - - The style sheet "%1" already exists - La hoja de estilo "%1" ya existe - - - - Unable to rename file - No es posible cambiar el nombre de archivo - - - - main - - - Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable - - - - - The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly - - - - - Unable to find <b>libqt5ct-style.so</b> - - - - - Error - Error - - - diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_fr.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_fr.ts deleted file mode 100644 index 4c0a6cc5..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_fr.ts +++ /dev/null @@ -1,709 +0,0 @@ - - - - - AppearancePage - - - Style: - Style : - - - - Preview - Aperçu - - - - Active palette - Palette Actif - - - - Inactive palette - Palette Inactif - - - - Disabled palette - Palette Désactivé - - - - Palette - Palette - - - - Default - Défaut - - - - Custom - Personnalisé - - - - Color scheme: - Jeu de couleurs : - - - - ... - ... - - - - Create - Créer - - - - Edit - Modifier - - - - Create a Copy - Créer une copie - - - - Rename - Renommer - - - - Remove - Supprimer - - - - - - Enter Color Scheme Name - Entrer le nom du jeu de couleurs - - - - - - File name: - Nom du fichier : - - - - - - Error - Erreur - - - - - - The color scheme "%1" already exists - Le jeu de couleurs "%1" existe déjà - - - - - - Warning - Avertissement - - - - - - The color scheme "%1" is read only - Le jeu de couleurs "%1" est en lecture seule - - - - Confirm Remove - Confirmer la suppression - - - - Are you sure you want to remove color scheme "%1"? - Êtes-vous sûr de vouloir supprimer le jeu de couleurs "%1" ? - - - - %1 (copy) - %1 (copie) - - - - FontConfigDialog - - - - Font Configuration - Configuration de la police - - - - Disable automatic hinting for bold fonts - Désactiver l'optimisation de rendu pour les polices en gras - - - - LCD filter: - Filtre LCD : - - - - Automatic hinting - Optimisation de rendu automatique - - - - Hinting - Optimisation de rendu - - - - Font resolution: - Résolution de la police : - - - - dpi - dpi - - - - Subpixel geometry: - Géométrie des sous-pixels : - - - - Antialiasing - Anticrénelage - - - - Hinting style: - Style d'optimisation de rendu : - - - - - None - Aucun - - - - Slight - Léger - - - - Medium - Moyen - - - - Full - Fort - - - - <i>%1</i> already exists. Do you want to replace it? - <i>%1</i> existe déjà. Voulez-vous le remplacer ? - - - - FontsPage - - - - - - ... - ... - - - - General: - Général : - - - - Fixed width: - Largeur fixe : - - - - Create fonts.conf - Créer fonts.conf - - - - Remove fonts.conf - Supprimer fonts.conf - - - - Remove Font Configuration - Supprimer la configuration de la police - - - - Are you sure you want to delete <i>%1</i>? - Êtes-vous sûr de vouloir supprimer <i>%1</i> ? - - - - InterfacePage - - - Double click interval: - Intervalle du double clic : - - - - Cursor flash time: - Temps de clignotement du curseur : - - - - ComboBox effect: - Effet liste déroulante : - - - - ToolTip effect: - Effet infobulle : - - - - ToolBox effect: - Effet barre d'outil : - - - - - ms - ms - - - - - - - Disable - Désactivé - - - - - - - Animate - Animé - - - - - Fade - Fondu - - - - Menu effect: - Effet menu : - - - - Enable gui effects - Activer les effets graphiques - - - - Dialog buttons layout: - Disposition des boutons : - - - - Menus have icons - Menus avec icônes - - - - Dialog buttons have icons - Boutons avec icônes - - - - Activate item on single-click - Activer avec un simple clic - - - - Toolbar button style: - - - - - Mouse wheel scroll lines: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Follow the application style - - - - - MainWindow - - - Qt5 Configuration Tool - Outil de configuration de Qt5 - - - - Appearance - Apparence - - - - Fonts - Polices - - - - Icon Theme - Théme des icônes - - - - Interface - Interface - - - - Style Sheets - Style des feuilles - - - - Version: %1 - Version : %1 - - - - PaletteEditDialog - - - Palette Editor - Éditeur de palette - - - - Reset palette - Réinitialiser la palette - - - - Build inactive palette - Construire la palette Inactif - - - - Build disabled palette - Construire la palette Désactivé - - - - Active - Actif - - - - Inactive - Inactif - - - - Disabled - Désactivé - - - - Dark - Sombre - - - - Window text - Texte de la fenêtre - - - - Button background - Arrière plan du bouton - - - - Bright - Luminosité - - - - Less bright - Moins lumineux - - - - Less dark - Moins sombre - - - - Window - Fenêtre - - - - Shadow - Ombre - - - - Bright text - Texte lumineux - - - - Button text - Texte du bouton - - - - Normal text - Texte normal - - - - Normal background - Arrière plan normal - - - - Highlight - Surbrillance - - - - Highlighted text - Texte en surbrillance - - - - Visited link - Lien visité - - - - Default - Défaut - - - - Tooltip background - Arrière plan des infobulles - - - - Tooltip text - Texte des infobulles - - - - Link - Lien - - - - Alternate background - Arrière plan alternatif - - - - Select Color - Sélectionner la couleur - - - - PreviewForm - - - Preview Window - Aperçu de la fenêtre - - - - Tab 1 - Onglet 1 - - - - PushButton - Bouton - - - - Tab 2 - Onglet 2 - - - - RadioButton - Bouton radio - - - - CheckBox - Case à cocher - - - - QSSEditorDialog - - - %1 - Style Sheet Editor - %1 - Éditeur de feuille de style - - - - Style Sheet Editor - Éditeur de feuille de style - - - - QSSPage - - - Create - Créer - - - - - Edit - Modifier - - - - - Rename - Renommer - - - - - Remove - Supprimer - - - - File name: - Nom du fichier : - - - - Enter Style Sheet Name - Entrer le nom de la feuille de style - - - - - - Error - Erreur - - - - The file "%1" already exists - Le fichier "%1" existe déjà - - - - Confirm Remove - Confirmer la suppression - - - - Are you sure you want to remove style sheet "%1"? - Êtes-vous sûr de vouloir supprimer la feuille de style "%1" ? - - - - Rename Style Sheet - Renommer la feuille de style - - - - Style sheet name: - Nom de la feuille de style : - - - - The style sheet "%1" already exists - La feuille de style "%1" existe déjà - - - - Unable to rename file - Impossible de renommer le fichier - - - - main - - - Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable - Merci de retirer la variable d'environement <b>QT_STYLE_OVERRIDE</b> - - - - The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly - La variable d'environnement <b>QT_QPA_PLATFORMTHEME</b> n'est pas définie correctement - - - - Unable to find <b>libqt5ct-style.so</b> - Impossible de trouver <b>libqt5ct-style.so</b> - - - - Error - Erreur - - - diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_gl_ES.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_gl_ES.ts deleted file mode 100644 index cbd1b2ef..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_gl_ES.ts +++ /dev/null @@ -1,709 +0,0 @@ - - - - - AppearancePage - - - Style: - - - - - Preview - - - - - Active palette - - - - - Inactive palette - - - - - Disabled palette - - - - - Palette - - - - - Default - - - - - Custom - - - - - Color scheme: - - - - - ... - - - - - Create - - - - - Edit - - - - - Create a Copy - - - - - Rename - - - - - Remove - - - - - - - Enter Color Scheme Name - - - - - - - File name: - - - - - - - Error - - - - - - - The color scheme "%1" already exists - - - - - - - Warning - - - - - - - The color scheme "%1" is read only - - - - - Confirm Remove - - - - - Are you sure you want to remove color scheme "%1"? - - - - - %1 (copy) - - - - - FontConfigDialog - - - - Font Configuration - - - - - Disable automatic hinting for bold fonts - - - - - LCD filter: - - - - - Automatic hinting - - - - - Hinting - - - - - Font resolution: - - - - - dpi - - - - - Subpixel geometry: - - - - - Antialiasing - - - - - Hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - <i>%1</i> already exists. Do you want to replace it? - - - - - FontsPage - - - - - - ... - - - - - General: - - - - - Fixed width: - - - - - Create fonts.conf - - - - - Remove fonts.conf - - - - - Remove Font Configuration - - - - - Are you sure you want to delete <i>%1</i>? - - - - - InterfacePage - - - Double click interval: - - - - - Cursor flash time: - - - - - ComboBox effect: - - - - - ToolTip effect: - - - - - ToolBox effect: - - - - - - ms - - - - - - - - Disable - - - - - - - - Animate - - - - - - Fade - - - - - Menu effect: - - - - - Enable gui effects - - - - - Dialog buttons layout: - - - - - Menus have icons - - - - - Dialog buttons have icons - - - - - Activate item on single-click - - - - - Toolbar button style: - - - - - Mouse wheel scroll lines: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Follow the application style - - - - - MainWindow - - - Qt5 Configuration Tool - - - - - Appearance - - - - - Fonts - - - - - Icon Theme - - - - - Interface - - - - - Style Sheets - - - - - Version: %1 - - - - - PaletteEditDialog - - - Palette Editor - - - - - Reset palette - - - - - Build inactive palette - - - - - Build disabled palette - - - - - Active - - - - - Inactive - - - - - Disabled - - - - - Dark - - - - - Window text - - - - - Button background - - - - - Bright - - - - - Less bright - - - - - Less dark - - - - - Window - - - - - Shadow - - - - - Bright text - - - - - Button text - - - - - Normal text - - - - - Normal background - - - - - Highlight - - - - - Highlighted text - - - - - Visited link - - - - - Default - - - - - Tooltip background - - - - - Tooltip text - - - - - Link - - - - - Alternate background - - - - - Select Color - - - - - PreviewForm - - - Preview Window - - - - - Tab 1 - - - - - PushButton - - - - - Tab 2 - - - - - RadioButton - - - - - CheckBox - - - - - QSSEditorDialog - - - %1 - Style Sheet Editor - - - - - Style Sheet Editor - - - - - QSSPage - - - Create - - - - - - Edit - - - - - - Rename - - - - - - Remove - - - - - File name: - - - - - Enter Style Sheet Name - - - - - - - Error - - - - - The file "%1" already exists - - - - - Confirm Remove - - - - - Are you sure you want to remove style sheet "%1"? - - - - - Rename Style Sheet - - - - - Style sheet name: - - - - - The style sheet "%1" already exists - - - - - Unable to rename file - - - - - main - - - Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable - - - - - The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly - - - - - Unable to find <b>libqt5ct-style.so</b> - - - - - Error - - - - diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_he.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_he.ts deleted file mode 100644 index 4f7d4caf..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_he.ts +++ /dev/null @@ -1,709 +0,0 @@ - - - - - AppearancePage - - - Style: - סגנון: - - - - Preview - תצוגה מקדימה - - - - Active palette - לוח צבעים פעיל - - - - Inactive palette - לוח צבעים לא פעיל - - - - Disabled palette - לוח צבעים מנוטרל - - - - Palette - לוח צבעים - - - - Default - שגרתי - - - - Custom - מותאם - - - - Color scheme: - ערכת צבעים: - - - - ... - ... - - - - Create - צור - - - - Edit - ערוך - - - - Create a Copy - צור העתק - - - - Rename - שנה שם - - - - Remove - הסר - - - - - - Enter Color Scheme Name - הזן שם של ערכת הצבעים - - - - - - File name: - שם קובץ: - - - - - - Error - שגיאה - - - - - - The color scheme "%1" already exists - ערכת הצבעים "%1" כבר קיימת - - - - - - Warning - אזהרה - - - - - - The color scheme "%1" is read only - ערכת הצבעים "%1" הינה לקריאה בלבד - - - - Confirm Remove - אימות הסרה - - - - Are you sure you want to remove color scheme "%1"? - להסיר את ערכת הצבעים "%1"? - - - - %1 (copy) - %1 (עותק) - - - - FontConfigDialog - - - - Font Configuration - תצורת גופן - - - - Disable automatic hinting for bold fonts - - - - - LCD filter: - - - - - Automatic hinting - רמיזה אוטומטית - - - - Hinting - רמיזה - - - - Font resolution: - רזולוציית גופן: - - - - dpi - dpi - - - - Subpixel geometry: - - - - - Antialiasing - החלקת קצוות - - - - Hinting style: - סגנון רמיזה: - - - - - None - ללא - - - - Slight - מועט - - - - Medium - בינוני - - - - Full - מלא - - - - <i>%1</i> already exists. Do you want to replace it? - <i>%1</i> כבר קיים. האם ברצונך להחליפו? - - - - FontsPage - - - - - - ... - ... - - - - General: - כללי: - - - - Fixed width: - רוחב מקובע: - - - - Create fonts.conf - צור fonts.conf - - - - Remove fonts.conf - הסר fonts.conf - - - - Remove Font Configuration - הסר תצרת גופן - - - - Are you sure you want to delete <i>%1</i>? - האם אתה בטוח כי ברצונך למחוק את <i>%1</i>? - - - - InterfacePage - - - Double click interval: - תדירות לחיצה כפולה: - - - - Cursor flash time: - - - - - ComboBox effect: - - - - - ToolTip effect: - אפקט תיבה צצה: - - - - ToolBox effect: - - - - - - ms - מילישניות - - - - - - - Disable - נטרל - - - - - - - Animate - הנפש - - - - - Fade - עמעם - - - - Menu effect: - אפקט תפריט: - - - - Enable gui effects - אפשר אפקטי ממשק - - - - Dialog buttons layout: - פריסת לחצני דו־שיח - - - - Menus have icons - תפריטים בעלי סמלים - - - - Dialog buttons have icons - לחצני דו שיח בעלי סמלים - - - - Activate item on single-click - הפעל פריטים בלחיצה יחידה - - - - Toolbar button style: - עיצוב לחצן סרגל כלים - - - - Mouse wheel scroll lines: - גלגלת העכבר גוללת (שורות): - - - - Only display the icon - הצג רק את הסמל - - - - Only display the text - הצג רק את הטקסט - - - - The text appears beside the icon - טקסט ליד הסמל - - - - The text appears under the icon - טקסט מתחת לסמל - - - - Follow the application style - לפי עיצוב היישום עצמו - - - - MainWindow - - - Qt5 Configuration Tool - כלי תצורה Qt5 - - - - Appearance - הופעה - - - - Fonts - גופנים - - - - Icon Theme - ערכת סמלים - - - - Interface - ממשק - - - - Style Sheets - - - - - Version: %1 - גרסא: %1 - - - - PaletteEditDialog - - - Palette Editor - עורך לוח צבעים - - - - Reset palette - אפס לוח צבעים - - - - Build inactive palette - בנה לוח צבעים לא פעיל - - - - Build disabled palette - בנה לוח צבעים מנוטרל - - - - Active - פעיל - - - - Inactive - לא פעיל - - - - Disabled - מנוטרל - - - - Dark - אפל - - - - Window text - טקסט חלון - - - - Button background - רקע לחצן - - - - Bright - בהיר - - - - Less bright - בהיר פחות - - - - Less dark - אפל פחות - - - - Window - חלון - - - - Shadow - צל - - - - Bright text - טקסט בהיר - - - - Button text - טקסט לחצן - - - - Normal text - טקסט רגיל - - - - Normal background - רקע רגיל - - - - Highlight - הבלט - - - - Highlighted text - הבלט טקסט - - - - Visited link - קישורים שנצפו - - - - Default - שגרתי - - - - Tooltip background - רקע תיבה צצה - - - - Tooltip text - טקסט תיבה צצה - - - - Link - קישור - - - - Alternate background - רקע חליפי - - - - Select Color - בחר צבע - - - - PreviewForm - - - Preview Window - חלון תצוגה מקדימה - - - - Tab 1 - כרטיסייה 1 - - - - PushButton - לחצן דחיפה - - - - Tab 2 - כרטיסייה 2 - - - - RadioButton - לחצן רדיו - - - - CheckBox - תיבת סימון - - - - QSSEditorDialog - - - %1 - Style Sheet Editor - - - - - Style Sheet Editor - - - - - QSSPage - - - Create - צור - - - - - Edit - ערוך - - - - - Rename - שנה שם - - - - - Remove - הסר - - - - File name: - שם קובץ: - - - - Enter Style Sheet Name - - - - - - - Error - שגיאה - - - - The file "%1" already exists - הקובץ "%1" כבר קיים - - - - Confirm Remove - אימות הסרה - - - - Are you sure you want to remove style sheet "%1"? - - - - - Rename Style Sheet - - - - - Style sheet name: - - - - - The style sheet "%1" already exists - - - - - Unable to rename file - לא מסוגל לשנות שם קובץ - - - - main - - - Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable - נא הסר את משתנה הסביבה <b>QT_STYLE_OVERRIDE</b> - - - - The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly - משתנה הסביבה <b>QT_QPA_PLATFORMTHEME</b> אינו מוגדר כראוי - - - - Unable to find <b>libqt5ct-style.so</b> - לא ניתן למצוא את <b>libqt5ct-style.so</b> - - - - Error - שגיאה - - - diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_hu.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_hu.ts deleted file mode 100644 index cab84567..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_hu.ts +++ /dev/null @@ -1,709 +0,0 @@ - - - - - AppearancePage - - - Style: - - - - - Preview - - - - - Active palette - - - - - Inactive palette - - - - - Disabled palette - - - - - Palette - - - - - Default - - - - - Custom - - - - - Color scheme: - - - - - ... - - - - - Create - - - - - Edit - - - - - Create a Copy - - - - - Rename - - - - - Remove - - - - - - - Enter Color Scheme Name - - - - - - - File name: - - - - - - - Error - - - - - - - The color scheme "%1" already exists - - - - - - - Warning - - - - - - - The color scheme "%1" is read only - - - - - Confirm Remove - - - - - Are you sure you want to remove color scheme "%1"? - - - - - %1 (copy) - - - - - FontConfigDialog - - - - Font Configuration - - - - - Disable automatic hinting for bold fonts - - - - - LCD filter: - - - - - Automatic hinting - - - - - Hinting - - - - - Font resolution: - - - - - dpi - - - - - Subpixel geometry: - - - - - Antialiasing - - - - - Hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - <i>%1</i> already exists. Do you want to replace it? - - - - - FontsPage - - - - - - ... - - - - - General: - - - - - Fixed width: - - - - - Create fonts.conf - - - - - Remove fonts.conf - - - - - Remove Font Configuration - - - - - Are you sure you want to delete <i>%1</i>? - - - - - InterfacePage - - - Double click interval: - - - - - Cursor flash time: - - - - - ComboBox effect: - - - - - ToolTip effect: - - - - - ToolBox effect: - - - - - - ms - - - - - - - - Disable - - - - - - - - Animate - - - - - - Fade - - - - - Menu effect: - - - - - Enable gui effects - - - - - Dialog buttons layout: - - - - - Menus have icons - - - - - Dialog buttons have icons - - - - - Activate item on single-click - - - - - Toolbar button style: - - - - - Mouse wheel scroll lines: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Follow the application style - - - - - MainWindow - - - Qt5 Configuration Tool - - - - - Appearance - - - - - Fonts - - - - - Icon Theme - - - - - Interface - - - - - Style Sheets - - - - - Version: %1 - - - - - PaletteEditDialog - - - Palette Editor - - - - - Reset palette - - - - - Build inactive palette - - - - - Build disabled palette - - - - - Active - - - - - Inactive - - - - - Disabled - - - - - Dark - - - - - Window text - - - - - Button background - - - - - Bright - - - - - Less bright - - - - - Less dark - - - - - Window - - - - - Shadow - - - - - Bright text - - - - - Button text - - - - - Normal text - - - - - Normal background - - - - - Highlight - - - - - Highlighted text - - - - - Visited link - - - - - Default - - - - - Tooltip background - - - - - Tooltip text - - - - - Link - - - - - Alternate background - - - - - Select Color - - - - - PreviewForm - - - Preview Window - - - - - Tab 1 - - - - - PushButton - - - - - Tab 2 - - - - - RadioButton - - - - - CheckBox - - - - - QSSEditorDialog - - - %1 - Style Sheet Editor - - - - - Style Sheet Editor - - - - - QSSPage - - - Create - - - - - - Edit - - - - - - Rename - - - - - - Remove - - - - - File name: - - - - - Enter Style Sheet Name - - - - - - - Error - - - - - The file "%1" already exists - - - - - Confirm Remove - - - - - Are you sure you want to remove style sheet "%1"? - - - - - Rename Style Sheet - - - - - Style sheet name: - - - - - The style sheet "%1" already exists - - - - - Unable to rename file - - - - - main - - - Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable - - - - - The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly - - - - - Unable to find <b>libqt5ct-style.so</b> - - - - - Error - - - - diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_it.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_it.ts deleted file mode 100644 index 4a02a9e5..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_it.ts +++ /dev/null @@ -1,709 +0,0 @@ - - - - - AppearancePage - - - Style: - - - - - Preview - - - - - Active palette - - - - - Inactive palette - - - - - Disabled palette - - - - - Palette - - - - - Default - - - - - Custom - - - - - Color scheme: - - - - - ... - - - - - Create - - - - - Edit - - - - - Create a Copy - - - - - Rename - - - - - Remove - - - - - - - Enter Color Scheme Name - - - - - - - File name: - - - - - - - Error - - - - - - - The color scheme "%1" already exists - - - - - - - Warning - - - - - - - The color scheme "%1" is read only - - - - - Confirm Remove - - - - - Are you sure you want to remove color scheme "%1"? - - - - - %1 (copy) - - - - - FontConfigDialog - - - - Font Configuration - - - - - Disable automatic hinting for bold fonts - - - - - LCD filter: - - - - - Automatic hinting - - - - - Hinting - - - - - Font resolution: - - - - - dpi - - - - - Subpixel geometry: - - - - - Antialiasing - - - - - Hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - <i>%1</i> already exists. Do you want to replace it? - - - - - FontsPage - - - - - - ... - - - - - General: - - - - - Fixed width: - - - - - Create fonts.conf - - - - - Remove fonts.conf - - - - - Remove Font Configuration - - - - - Are you sure you want to delete <i>%1</i>? - - - - - InterfacePage - - - Double click interval: - - - - - Cursor flash time: - - - - - ComboBox effect: - - - - - ToolTip effect: - - - - - ToolBox effect: - - - - - - ms - - - - - - - - Disable - - - - - - - - Animate - - - - - - Fade - - - - - Menu effect: - - - - - Enable gui effects - - - - - Dialog buttons layout: - - - - - Menus have icons - - - - - Dialog buttons have icons - - - - - Activate item on single-click - - - - - Toolbar button style: - - - - - Mouse wheel scroll lines: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Follow the application style - - - - - MainWindow - - - Qt5 Configuration Tool - - - - - Appearance - - - - - Fonts - - - - - Icon Theme - - - - - Interface - - - - - Style Sheets - - - - - Version: %1 - - - - - PaletteEditDialog - - - Palette Editor - - - - - Reset palette - - - - - Build inactive palette - - - - - Build disabled palette - - - - - Active - - - - - Inactive - - - - - Disabled - - - - - Dark - - - - - Window text - - - - - Button background - - - - - Bright - - - - - Less bright - - - - - Less dark - - - - - Window - - - - - Shadow - - - - - Bright text - - - - - Button text - - - - - Normal text - - - - - Normal background - - - - - Highlight - - - - - Highlighted text - - - - - Visited link - - - - - Default - - - - - Tooltip background - - - - - Tooltip text - - - - - Link - - - - - Alternate background - - - - - Select Color - - - - - PreviewForm - - - Preview Window - - - - - Tab 1 - - - - - PushButton - - - - - Tab 2 - - - - - RadioButton - - - - - CheckBox - - - - - QSSEditorDialog - - - %1 - Style Sheet Editor - - - - - Style Sheet Editor - - - - - QSSPage - - - Create - - - - - - Edit - - - - - - Rename - - - - - - Remove - - - - - File name: - - - - - Enter Style Sheet Name - - - - - - - Error - - - - - The file "%1" already exists - - - - - Confirm Remove - - - - - Are you sure you want to remove style sheet "%1"? - - - - - Rename Style Sheet - - - - - Style sheet name: - - - - - The style sheet "%1" already exists - - - - - Unable to rename file - - - - - main - - - Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable - - - - - The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly - - - - - Unable to find <b>libqt5ct-style.so</b> - - - - - Error - - - - diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_it_IT.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_it_IT.ts deleted file mode 100644 index 34d5e222..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_it_IT.ts +++ /dev/null @@ -1,709 +0,0 @@ - - - - - AppearancePage - - - Style: - Stile: - - - - Preview - Anteprima - - - - Active palette - Colori attivi - - - - Inactive palette - Colori inattivi - - - - Disabled palette - Colori disabilitati - - - - Palette - Colori - - - - Default - Predefiniti - - - - Custom - Personalizzati - - - - Color scheme: - Schema colori: - - - - ... - ... - - - - Create - Crea - - - - Edit - Modifica - - - - Create a Copy - Crea una copia - - - - Rename - Rinomina - - - - Remove - Rimuovi - - - - - - Enter Color Scheme Name - Inserisci nome dello schema colori - - - - - - File name: - Nome file: - - - - - - Error - Errore - - - - - - The color scheme "%1" already exists - Lo schema colori "%1" è già esistente - - - - - - Warning - Attenzione - - - - - - The color scheme "%1" is read only - Lo schema colori "%1" è in sola lettura - - - - Confirm Remove - Conferma rimozione - - - - Are you sure you want to remove color scheme "%1"? - Sei sicuro di voler rimuovere lo schema colori "%1"? - - - - %1 (copy) - %1 (copia) - - - - FontConfigDialog - - - - Font Configuration - Configurazione caratteri - - - - Disable automatic hinting for bold fonts - Disabilita hinting automatico per grassetto - - - - LCD filter: - Filtro LCD: - - - - Automatic hinting - Hinting automatico - - - - Hinting - Hinting - - - - Font resolution: - Risoluzione font: - - - - dpi - dpi - - - - Subpixel geometry: - Geometria sub-pixel: - - - - Antialiasing - Anti-aliasing - - - - Hinting style: - Stile di hinting: - - - - - None - Nessuno - - - - Slight - Moderato - - - - Medium - Medio - - - - Full - Intero - - - - <i>%1</i> already exists. Do you want to replace it? - <i>%1</i> già esistente. Vuoi sostituirlo? - - - - FontsPage - - - - - - ... - ... - - - - General: - Generale: - - - - Fixed width: - Larghezza fissa: - - - - Create fonts.conf - Crea fonts.conf - - - - Remove fonts.conf - Elimina fonts.conf - - - - Remove Font Configuration - Elimina la configurazione dei font - - - - Are you sure you want to delete <i>%1</i>? - Sei sicuro di voler eliminare <i>%1</i>? - - - - InterfacePage - - - Double click interval: - Intervallo doppio clic: - - - - Cursor flash time: - Intervallo lampeggio cursore: - - - - ComboBox effect: - Effetto casella combinata: - - - - ToolTip effect: - Effetto suggerimento: - - - - ToolBox effect: - Effetto casella strumenti: - - - - - ms - ms - - - - - - - Disable - Disabilita - - - - - - - Animate - Animazione - - - - - Fade - Dissolvenza - - - - Menu effect: - Effetto menu: - - - - Enable gui effects - Abilita effetti interfaccia grafica - - - - Dialog buttons layout: - Disposizione pulsanti finestre dialogo: - - - - Menus have icons - Menu con icone - - - - Dialog buttons have icons - Pulsanti finestre dialogo con icone - - - - Activate item on single-click - Attiva oggetto con clic singolo - - - - Toolbar button style: - - - - - Mouse wheel scroll lines: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Follow the application style - - - - - MainWindow - - - Qt5 Configuration Tool - Strumento di configurazione Qt5 - - - - Appearance - Aspetto - - - - Fonts - Caratteri - - - - Icon Theme - Tema icone - - - - Interface - Interfaccia - - - - Style Sheets - Fogli di stile - - - - Version: %1 - Versione: %1 - - - - PaletteEditDialog - - - Palette Editor - Editor colori - - - - Reset palette - Azzera colori - - - - Build inactive palette - Crea colori inattivi - - - - Build disabled palette - Crea colori disabilitati - - - - Active - Attivo - - - - Inactive - Inattivo - - - - Disabled - Disabilitato - - - - Dark - Scuro - - - - Window text - Testo finestra - - - - Button background - Sfondo pulsante - - - - Bright - Chiaro - - - - Less bright - Meno chiaro - - - - Less dark - Meno scuro - - - - Window - Finestra - - - - Shadow - Ombreggiatura - - - - Bright text - Testo chiaro - - - - Button text - Testo pulsante - - - - Normal text - Testo normale - - - - Normal background - Sfondo normale - - - - Highlight - Evidenzia - - - - Highlighted text - Testo evidenziato - - - - Visited link - Collegamento visitato - - - - Default - Predefinito - - - - Tooltip background - Sfondo suggerimento - - - - Tooltip text - Testo suggerimento - - - - Link - Collegamento - - - - Alternate background - Sfondo alternativo - - - - Select Color - Seleziona colore - - - - PreviewForm - - - Preview Window - Finestra di anteprima - - - - Tab 1 - Linguetta 1 - - - - PushButton - Pulsante - - - - Tab 2 - Linguetta 2 - - - - RadioButton - Pulsante a scelta singola - - - - CheckBox - Casella di spunta - - - - QSSEditorDialog - - - %1 - Style Sheet Editor - %1 - Editor fogli di stile - - - - Style Sheet Editor - Editor fogli di stile - - - - QSSPage - - - Create - Crea - - - - - Edit - Modifica - - - - - Rename - Rinomina - - - - - Remove - Rimuovi - - - - File name: - Nome file: - - - - Enter Style Sheet Name - Inserisci nome del foglio di stile - - - - - - Error - Errore - - - - The file "%1" already exists - Il file "%1" è già esistente - - - - Confirm Remove - Conferma rimozione - - - - Are you sure you want to remove style sheet "%1"? - Sei sicuro di voler rimuovere il foglio di stile "%1"? - - - - Rename Style Sheet - Rinomina il foglio di stile - - - - Style sheet name: - Nome del foglio di stile: - - - - The style sheet "%1" already exists - Il foglio di stile "%1" è già esistente - - - - Unable to rename file - Impossibile rinominare file - - - - main - - - Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable - Rimuovi la variabile d'ambiente <b>QT_STYLE_OVERRIDE</b> - - - - The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly - La variabile d'ambiente <b>QT_QPA_PLATFORMTHEME</b> non è impostata correttamente - - - - Unable to find <b>libqt5ct-style.so</b> - - - - - Error - Errore - - - diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_ja.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_ja.ts deleted file mode 100644 index 16a2503a..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_ja.ts +++ /dev/null @@ -1,709 +0,0 @@ - - - - - AppearancePage - - - Style: - - - - - Preview - - - - - Active palette - - - - - Inactive palette - - - - - Disabled palette - - - - - Palette - - - - - Default - - - - - Custom - - - - - Color scheme: - - - - - ... - - - - - Create - - - - - Edit - - - - - Create a Copy - - - - - Rename - - - - - Remove - - - - - - - Enter Color Scheme Name - - - - - - - File name: - - - - - - - Error - - - - - - - The color scheme "%1" already exists - - - - - - - Warning - - - - - - - The color scheme "%1" is read only - - - - - Confirm Remove - - - - - Are you sure you want to remove color scheme "%1"? - - - - - %1 (copy) - - - - - FontConfigDialog - - - - Font Configuration - - - - - Disable automatic hinting for bold fonts - - - - - LCD filter: - - - - - Automatic hinting - - - - - Hinting - - - - - Font resolution: - - - - - dpi - - - - - Subpixel geometry: - - - - - Antialiasing - - - - - Hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - <i>%1</i> already exists. Do you want to replace it? - - - - - FontsPage - - - - - - ... - - - - - General: - - - - - Fixed width: - - - - - Create fonts.conf - - - - - Remove fonts.conf - - - - - Remove Font Configuration - - - - - Are you sure you want to delete <i>%1</i>? - - - - - InterfacePage - - - Double click interval: - - - - - Cursor flash time: - - - - - ComboBox effect: - - - - - ToolTip effect: - - - - - ToolBox effect: - - - - - - ms - - - - - - - - Disable - - - - - - - - Animate - - - - - - Fade - - - - - Menu effect: - - - - - Enable gui effects - - - - - Dialog buttons layout: - - - - - Menus have icons - - - - - Dialog buttons have icons - - - - - Activate item on single-click - - - - - Toolbar button style: - - - - - Mouse wheel scroll lines: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Follow the application style - - - - - MainWindow - - - Qt5 Configuration Tool - - - - - Appearance - - - - - Fonts - - - - - Icon Theme - - - - - Interface - - - - - Style Sheets - - - - - Version: %1 - - - - - PaletteEditDialog - - - Palette Editor - - - - - Reset palette - - - - - Build inactive palette - - - - - Build disabled palette - - - - - Active - - - - - Inactive - - - - - Disabled - - - - - Dark - - - - - Window text - - - - - Button background - - - - - Bright - - - - - Less bright - - - - - Less dark - - - - - Window - - - - - Shadow - - - - - Bright text - - - - - Button text - - - - - Normal text - - - - - Normal background - - - - - Highlight - - - - - Highlighted text - - - - - Visited link - - - - - Default - - - - - Tooltip background - - - - - Tooltip text - - - - - Link - - - - - Alternate background - - - - - Select Color - - - - - PreviewForm - - - Preview Window - - - - - Tab 1 - - - - - PushButton - - - - - Tab 2 - - - - - RadioButton - - - - - CheckBox - - - - - QSSEditorDialog - - - %1 - Style Sheet Editor - - - - - Style Sheet Editor - - - - - QSSPage - - - Create - - - - - - Edit - - - - - - Rename - - - - - - Remove - - - - - File name: - - - - - Enter Style Sheet Name - - - - - - - Error - - - - - The file "%1" already exists - - - - - Confirm Remove - - - - - Are you sure you want to remove style sheet "%1"? - - - - - Rename Style Sheet - - - - - Style sheet name: - - - - - The style sheet "%1" already exists - - - - - Unable to rename file - - - - - main - - - Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable - - - - - The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly - - - - - Unable to find <b>libqt5ct-style.so</b> - - - - - Error - - - - diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_kk.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_kk.ts deleted file mode 100644 index 7ba66cda..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_kk.ts +++ /dev/null @@ -1,709 +0,0 @@ - - - - - AppearancePage - - - Style: - - - - - Preview - - - - - Active palette - - - - - Inactive palette - - - - - Disabled palette - - - - - Palette - - - - - Default - - - - - Custom - - - - - Color scheme: - - - - - ... - - - - - Create - - - - - Edit - - - - - Create a Copy - - - - - Rename - - - - - Remove - - - - - - - Enter Color Scheme Name - - - - - - - File name: - - - - - - - Error - - - - - - - The color scheme "%1" already exists - - - - - - - Warning - - - - - - - The color scheme "%1" is read only - - - - - Confirm Remove - - - - - Are you sure you want to remove color scheme "%1"? - - - - - %1 (copy) - - - - - FontConfigDialog - - - - Font Configuration - - - - - Disable automatic hinting for bold fonts - - - - - LCD filter: - - - - - Automatic hinting - - - - - Hinting - - - - - Font resolution: - - - - - dpi - - - - - Subpixel geometry: - - - - - Antialiasing - - - - - Hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - <i>%1</i> already exists. Do you want to replace it? - - - - - FontsPage - - - - - - ... - - - - - General: - - - - - Fixed width: - - - - - Create fonts.conf - - - - - Remove fonts.conf - - - - - Remove Font Configuration - - - - - Are you sure you want to delete <i>%1</i>? - - - - - InterfacePage - - - Double click interval: - - - - - Cursor flash time: - - - - - ComboBox effect: - - - - - ToolTip effect: - - - - - ToolBox effect: - - - - - - ms - - - - - - - - Disable - - - - - - - - Animate - - - - - - Fade - - - - - Menu effect: - - - - - Enable gui effects - - - - - Dialog buttons layout: - - - - - Menus have icons - - - - - Dialog buttons have icons - - - - - Activate item on single-click - - - - - Toolbar button style: - - - - - Mouse wheel scroll lines: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Follow the application style - - - - - MainWindow - - - Qt5 Configuration Tool - - - - - Appearance - - - - - Fonts - - - - - Icon Theme - - - - - Interface - - - - - Style Sheets - - - - - Version: %1 - - - - - PaletteEditDialog - - - Palette Editor - - - - - Reset palette - - - - - Build inactive palette - - - - - Build disabled palette - - - - - Active - - - - - Inactive - - - - - Disabled - - - - - Dark - - - - - Window text - - - - - Button background - - - - - Bright - - - - - Less bright - - - - - Less dark - - - - - Window - - - - - Shadow - - - - - Bright text - - - - - Button text - - - - - Normal text - - - - - Normal background - - - - - Highlight - - - - - Highlighted text - - - - - Visited link - - - - - Default - - - - - Tooltip background - - - - - Tooltip text - - - - - Link - - - - - Alternate background - - - - - Select Color - - - - - PreviewForm - - - Preview Window - - - - - Tab 1 - - - - - PushButton - - - - - Tab 2 - - - - - RadioButton - - - - - CheckBox - - - - - QSSEditorDialog - - - %1 - Style Sheet Editor - - - - - Style Sheet Editor - - - - - QSSPage - - - Create - - - - - - Edit - - - - - - Rename - - - - - - Remove - - - - - File name: - - - - - Enter Style Sheet Name - - - - - - - Error - - - - - The file "%1" already exists - - - - - Confirm Remove - - - - - Are you sure you want to remove style sheet "%1"? - - - - - Rename Style Sheet - - - - - Style sheet name: - - - - - The style sheet "%1" already exists - - - - - Unable to rename file - - - - - main - - - Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable - - - - - The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly - - - - - Unable to find <b>libqt5ct-style.so</b> - - - - - Error - - - - diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_lt.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_lt.ts deleted file mode 100644 index 6cc78868..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_lt.ts +++ /dev/null @@ -1,709 +0,0 @@ - - - - - AppearancePage - - - Style: - - - - - Preview - - - - - Active palette - - - - - Inactive palette - - - - - Disabled palette - - - - - Palette - - - - - Default - - - - - Custom - - - - - Color scheme: - - - - - ... - - - - - Create - - - - - Edit - - - - - Create a Copy - - - - - Rename - - - - - Remove - - - - - - - Enter Color Scheme Name - - - - - - - File name: - - - - - - - Error - - - - - - - The color scheme "%1" already exists - - - - - - - Warning - - - - - - - The color scheme "%1" is read only - - - - - Confirm Remove - - - - - Are you sure you want to remove color scheme "%1"? - - - - - %1 (copy) - - - - - FontConfigDialog - - - - Font Configuration - - - - - Disable automatic hinting for bold fonts - - - - - LCD filter: - - - - - Automatic hinting - - - - - Hinting - - - - - Font resolution: - - - - - dpi - - - - - Subpixel geometry: - - - - - Antialiasing - - - - - Hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - <i>%1</i> already exists. Do you want to replace it? - - - - - FontsPage - - - - - - ... - - - - - General: - - - - - Fixed width: - - - - - Create fonts.conf - - - - - Remove fonts.conf - - - - - Remove Font Configuration - - - - - Are you sure you want to delete <i>%1</i>? - - - - - InterfacePage - - - Double click interval: - - - - - Cursor flash time: - - - - - ComboBox effect: - - - - - ToolTip effect: - - - - - ToolBox effect: - - - - - - ms - - - - - - - - Disable - - - - - - - - Animate - - - - - - Fade - - - - - Menu effect: - - - - - Enable gui effects - - - - - Dialog buttons layout: - - - - - Menus have icons - - - - - Dialog buttons have icons - - - - - Activate item on single-click - - - - - Toolbar button style: - - - - - Mouse wheel scroll lines: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Follow the application style - - - - - MainWindow - - - Qt5 Configuration Tool - - - - - Appearance - - - - - Fonts - - - - - Icon Theme - - - - - Interface - - - - - Style Sheets - - - - - Version: %1 - - - - - PaletteEditDialog - - - Palette Editor - - - - - Reset palette - - - - - Build inactive palette - - - - - Build disabled palette - - - - - Active - - - - - Inactive - - - - - Disabled - - - - - Dark - - - - - Window text - - - - - Button background - - - - - Bright - - - - - Less bright - - - - - Less dark - - - - - Window - - - - - Shadow - - - - - Bright text - - - - - Button text - - - - - Normal text - - - - - Normal background - - - - - Highlight - - - - - Highlighted text - - - - - Visited link - - - - - Default - - - - - Tooltip background - - - - - Tooltip text - - - - - Link - - - - - Alternate background - - - - - Select Color - - - - - PreviewForm - - - Preview Window - - - - - Tab 1 - - - - - PushButton - - - - - Tab 2 - - - - - RadioButton - - - - - CheckBox - - - - - QSSEditorDialog - - - %1 - Style Sheet Editor - - - - - Style Sheet Editor - - - - - QSSPage - - - Create - - - - - - Edit - - - - - - Rename - - - - - - Remove - - - - - File name: - - - - - Enter Style Sheet Name - - - - - - - Error - - - - - The file "%1" already exists - - - - - Confirm Remove - - - - - Are you sure you want to remove style sheet "%1"? - - - - - Rename Style Sheet - - - - - Style sheet name: - - - - - The style sheet "%1" already exists - - - - - Unable to rename file - - - - - main - - - Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable - - - - - The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly - - - - - Unable to find <b>libqt5ct-style.so</b> - - - - - Error - - - - diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_nl.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_nl.ts deleted file mode 100644 index 8e2802b3..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_nl.ts +++ /dev/null @@ -1,709 +0,0 @@ - - - - - AppearancePage - - - Style: - - - - - Preview - - - - - Active palette - - - - - Inactive palette - - - - - Disabled palette - - - - - Palette - - - - - Default - - - - - Custom - - - - - Color scheme: - - - - - ... - - - - - Create - - - - - Edit - - - - - Create a Copy - - - - - Rename - - - - - Remove - - - - - - - Enter Color Scheme Name - - - - - - - File name: - - - - - - - Error - - - - - - - The color scheme "%1" already exists - - - - - - - Warning - - - - - - - The color scheme "%1" is read only - - - - - Confirm Remove - - - - - Are you sure you want to remove color scheme "%1"? - - - - - %1 (copy) - - - - - FontConfigDialog - - - - Font Configuration - - - - - Disable automatic hinting for bold fonts - - - - - LCD filter: - - - - - Automatic hinting - - - - - Hinting - - - - - Font resolution: - - - - - dpi - - - - - Subpixel geometry: - - - - - Antialiasing - - - - - Hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - <i>%1</i> already exists. Do you want to replace it? - - - - - FontsPage - - - - - - ... - - - - - General: - - - - - Fixed width: - - - - - Create fonts.conf - - - - - Remove fonts.conf - - - - - Remove Font Configuration - - - - - Are you sure you want to delete <i>%1</i>? - - - - - InterfacePage - - - Double click interval: - - - - - Cursor flash time: - - - - - ComboBox effect: - - - - - ToolTip effect: - - - - - ToolBox effect: - - - - - - ms - - - - - - - - Disable - - - - - - - - Animate - - - - - - Fade - - - - - Menu effect: - - - - - Enable gui effects - - - - - Dialog buttons layout: - - - - - Menus have icons - - - - - Dialog buttons have icons - - - - - Activate item on single-click - - - - - Toolbar button style: - - - - - Mouse wheel scroll lines: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Follow the application style - - - - - MainWindow - - - Qt5 Configuration Tool - - - - - Appearance - - - - - Fonts - - - - - Icon Theme - - - - - Interface - - - - - Style Sheets - - - - - Version: %1 - - - - - PaletteEditDialog - - - Palette Editor - - - - - Reset palette - - - - - Build inactive palette - - - - - Build disabled palette - - - - - Active - - - - - Inactive - - - - - Disabled - - - - - Dark - - - - - Window text - - - - - Button background - - - - - Bright - - - - - Less bright - - - - - Less dark - - - - - Window - - - - - Shadow - - - - - Bright text - - - - - Button text - - - - - Normal text - - - - - Normal background - - - - - Highlight - - - - - Highlighted text - - - - - Visited link - - - - - Default - - - - - Tooltip background - - - - - Tooltip text - - - - - Link - - - - - Alternate background - - - - - Select Color - - - - - PreviewForm - - - Preview Window - - - - - Tab 1 - - - - - PushButton - - - - - Tab 2 - - - - - RadioButton - - - - - CheckBox - - - - - QSSEditorDialog - - - %1 - Style Sheet Editor - - - - - Style Sheet Editor - - - - - QSSPage - - - Create - - - - - - Edit - - - - - - Rename - - - - - - Remove - - - - - File name: - - - - - Enter Style Sheet Name - - - - - - - Error - - - - - The file "%1" already exists - - - - - Confirm Remove - - - - - Are you sure you want to remove style sheet "%1"? - - - - - Rename Style Sheet - - - - - Style sheet name: - - - - - The style sheet "%1" already exists - - - - - Unable to rename file - - - - - main - - - Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable - - - - - The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly - - - - - Unable to find <b>libqt5ct-style.so</b> - - - - - Error - - - - diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_nl_NL.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_nl_NL.ts deleted file mode 100644 index eeda4958..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_nl_NL.ts +++ /dev/null @@ -1,709 +0,0 @@ - - - - - AppearancePage - - - Style: - Stijl: - - - - Preview - Voorbeeld - - - - Active palette - Actief kleurenschema - - - - Inactive palette - Inactief kleurenschema - - - - Disabled palette - Uitgeschakeld kleurenschema - - - - Palette - Kleurenschema - - - - Default - Standaard - - - - Custom - Aangepast - - - - Color scheme: - Kleurenschema: - - - - ... - ... - - - - Create - Creëren - - - - Edit - Bewerken - - - - Create a Copy - Een kopie creëren - - - - Rename - Naam wijzigen - - - - Remove - Verwijderen - - - - - - Enter Color Scheme Name - Voer een naam in voor dit kleurenschema - - - - - - File name: - Bestandsnaam: - - - - - - Error - Fout - - - - - - The color scheme "%1" already exists - Het kleurenschema "%1" bestaat al - - - - - - Warning - Waarschuwing - - - - - - The color scheme "%1" is read only - Het kleurenschema "%1" is alleen-lezen - - - - Confirm Remove - Verwijderen bevestigen - - - - Are you sure you want to remove color scheme "%1"? - Weet u zeker dat u het kleurenschema "%1" wilt verwijderen? - - - - %1 (copy) - %1 (kopie) - - - - FontConfigDialog - - - - Font Configuration - Lettertype-instellingen - - - - Disable automatic hinting for bold fonts - Automatische subpixelweergave uitschakelen voor vetgedrukte lettertypen - - - - LCD filter: - LCD-filter: - - - - Automatic hinting - Automatische subpixelweergave - - - - Hinting - Subpixelweergave - - - - Font resolution: - Lettertyperesolutie: - - - - dpi - dpi - - - - Subpixel geometry: - Subpixelafmetingen: - - - - Antialiasing - Anti-kartelvorming - - - - Hinting style: - Stijl van subpixelweergave: - - - - - None - Geen - - - - Slight - Licht - - - - Medium - Gemiddeld - - - - Full - Volledig - - - - <i>%1</i> already exists. Do you want to replace it? - <i>%1</i> bestaat al. Wilt u deze vervangen? - - - - FontsPage - - - - - - ... - ... - - - - General: - Algemeen: - - - - Fixed width: - Vastgezette breedte: - - - - Create fonts.conf - fonts.conf creëren - - - - Remove fonts.conf - fonts.conf verwijderen - - - - Remove Font Configuration - Lettertypeconfiguatie verwijderen - - - - Are you sure you want to delete <i>%1</i>? - Weet u zeker dat u <i>%1</i> wilt verwijderen? - - - - InterfacePage - - - Double click interval: - Dubbelklik-tussenpose: - - - - Cursor flash time: - Cursor-knippertijd: - - - - ComboBox effect: - Uitrolmenu-effect: - - - - ToolTip effect: - Hulpballon-effect: - - - - ToolBox effect: - Gereedschapsvenster-effect: - - - - - ms - ms - - - - - - - Disable - Uitschakelen - - - - - - - Animate - Uitschuiven - - - - - Fade - Vervagen - - - - Menu effect: - Menu-effect: - - - - Enable gui effects - Applicatie-effecten inschakelen - - - - Dialog buttons layout: - Volgorde van dialoogvensterknoppen: - - - - Menus have icons - Menu's voorzien van pictogrammen - - - - Dialog buttons have icons - Dialoogvensterknoppen voorzien van pictogrammen - - - - Activate item on single-click - Item activeren met enkele klik - - - - Toolbar button style: - Werkbalkknop-stijl: - - - - Mouse wheel scroll lines: - Aantal te scrollen regels met muis: - - - - Only display the icon - Alleen pictogram weergeven - - - - Only display the text - Alleen tekst weergeven - - - - The text appears beside the icon - Tekst naast het pictogram weergeven - - - - The text appears under the icon - Tekst onder het pictogram weergeven - - - - Follow the application style - Applicatiestijl volgen - - - - MainWindow - - - Qt5 Configuration Tool - Qt5-instellingengereedschap - - - - Appearance - Uiterlijk - - - - Fonts - Lettertypen - - - - Icon Theme - Pictogramthema - - - - Interface - Uiterlijk - - - - Style Sheets - Stijlbladen - - - - Version: %1 - Versie: %1 - - - - PaletteEditDialog - - - Palette Editor - Kleurenschema-bewerker - - - - Reset palette - Standaardwaarden - - - - Build inactive palette - Inactief kleurenschema bouwen - - - - Build disabled palette - Uitgeschakeld kleurenschema bouwen - - - - Active - Actief - - - - Inactive - Inactief - - - - Disabled - Uitgeschakeld - - - - Dark - Donker - - - - Window text - Venstertekst - - - - Button background - Knopachtergrond - - - - Bright - Licht - - - - Less bright - Minder licht - - - - Less dark - Minder donker - - - - Window - Venster - - - - Shadow - Schaduw - - - - Bright text - Lichte tekst - - - - Button text - Knoptekst - - - - Normal text - Normale tekst - - - - Normal background - Normale achtergrond - - - - Highlight - Markeren - - - - Highlighted text - Gemarkeerde tekst - - - - Visited link - Bezochte link - - - - Default - Standaard - - - - Tooltip background - Hulpballon-achtergrond - - - - Tooltip text - Hulpballon-tekst - - - - Link - Link - - - - Alternate background - Alternatieve achtergrond - - - - Select Color - Kleur selecteren - - - - PreviewForm - - - Preview Window - Voorbeeldvenster - - - - Tab 1 - Tabblad 1 - - - - PushButton - Drukknop - - - - Tab 2 - Tabblad 2 - - - - RadioButton - Keuzerondje - - - - CheckBox - Selectievakje - - - - QSSEditorDialog - - - %1 - Style Sheet Editor - %1 - Stijlbladbewerker - - - - Style Sheet Editor - Stijlbladbewerker - - - - QSSPage - - - Create - Creëren - - - - - Edit - Bewerken - - - - - Rename - Naam wijzigen - - - - - Remove - Verwijderen - - - - File name: - Bestandsnaam: - - - - Enter Style Sheet Name - Voer een naam in voor dit stijlblad - - - - - - Error - Fout - - - - The file "%1" already exists - Het bestand "%1" bestaat al - - - - Confirm Remove - Verwijderen bevestigen - - - - Are you sure you want to remove style sheet "%1"? - Weet u zeker dat u het stijlblad "%1" wilt verwijderen? - - - - Rename Style Sheet - Stijlbladnaam wijzigen - - - - Style sheet name: - Stijlbladnaam: - - - - The style sheet "%1" already exists - Het stijlblad "%1" bestaat al - - - - Unable to rename file - Het wijzigen van de bestandsnaam is mislukt - - - - main - - - Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable - Verwijder de omgevingsvariabel <b>QT_STYLE_OVERRIDE</b> - - - - The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly - De omgevingsvariabel <b>QT_QPA_PLATFORMTHEME</b> is niet goed ingesteld - - - - Unable to find <b>libqt5ct-style.so</b> - <b>libqt5ct-style.so</b> kan niet worden gevonden. - - - - Error - Fout - - - diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_pl.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_pl.ts deleted file mode 100644 index 09d657c7..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_pl.ts +++ /dev/null @@ -1,709 +0,0 @@ - - - - - AppearancePage - - - Style: - Styl: - - - - Preview - Podgląd - - - - Active palette - Aktywna paleta - - - - Inactive palette - Nieakatywna paleta - - - - Disabled palette - Wyłączona paleta - - - - Palette - Paleta - - - - Default - Domyślnie - - - - Custom - Zaawansowany - - - - Color scheme: - Schemat kolorów: - - - - ... - ... - - - - Create - Stwórz - - - - Edit - Edycja - - - - Create a Copy - Stwórz kopię - - - - Rename - Zmień nazwę - - - - Remove - Usuń - - - - - - Enter Color Scheme Name - Wprowadź nazwę schematu kolorów - - - - - - File name: - Nazwa pliku: - - - - - - Error - Błąd - - - - - - The color scheme "%1" already exists - Schemat kolorów "%1" już istnieje - - - - - - Warning - Ostrzeżenie - - - - - - The color scheme "%1" is read only - Schemat kolorów "%1" jest tylko do odczytu - - - - Confirm Remove - Potwierdź usunięcie - - - - Are you sure you want to remove color scheme "%1"? - Czy na pewno chcesz usunąć schemat koloru "%1"? - - - - %1 (copy) - %1 (copy) - - - - FontConfigDialog - - - - Font Configuration - Ustawienia czcionki - - - - Disable automatic hinting for bold fonts - Wyłącz automatyczne wygładzanie pogrubionych czcionek - - - - LCD filter: - Filtr LCD: - - - - Automatic hinting - Automatyczne wygładzanie - - - - Hinting - Wygładzanie - - - - Font resolution: - Rozdzielczość czcionki: - - - - dpi - DPI - - - - Subpixel geometry: - Geometria subpixelów: - - - - Antialiasing - Antialiasing - - - - Hinting style: - Styl wygładzania: - - - - - None - żaden - - - - Slight - Delikatny - - - - Medium - Średni - - - - Full - Pełny - - - - <i>%1</i> already exists. Do you want to replace it? - <i>%1</i> już istnieje. Chcesz go zapisać w tej nazwie? - - - - FontsPage - - - - - - ... - ... - - - - General: - Główny: - - - - Fixed width: - Stała szerokość: - - - - Create fonts.conf - Stwórz fonts.conf - - - - Remove fonts.conf - Usuń fonts.conf - - - - Remove Font Configuration - Usuń konfigurację czcionek - - - - Are you sure you want to delete <i>%1</i>? - Czy chcesz usunąć <i>%1</i>? - - - - InterfacePage - - - Double click interval: - Częstotliwość dwukliku: - - - - Cursor flash time: - Czas mrugania kursora: - - - - ComboBox effect: - Efekt ComboBox: - - - - ToolTip effect: - Efekt ToolTip: - - - - ToolBox effect: - Efekt ToolBox: - - - - - ms - ms - - - - - - - Disable - Wyłączony - - - - - - - Animate - Animacja - - - - - Fade - Zanikanie - - - - Menu effect: - Efekt Menu: - - - - Enable gui effects - Włącz efekty interfejsu - - - - Dialog buttons layout: - Ułożenie przycisków okna dialogowego - - - - Menus have icons - Opcje menu mają ikony - - - - Dialog buttons have icons - Przyciski okien dialogowych mają ikony - - - - Activate item on single-click - Aktywuj elementy jednym kliknięciem - - - - Toolbar button style: - - - - - Mouse wheel scroll lines: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Follow the application style - - - - - MainWindow - - - Qt5 Configuration Tool - Narzędzie konfiguracji Qt5 - - - - Appearance - Wygląd - - - - Fonts - Czcionki - - - - Icon Theme - Temat ikon - - - - Interface - Interfejs - - - - Style Sheets - Arkusze stylów - - - - Version: %1 - Wersja: %1 - - - - PaletteEditDialog - - - Palette Editor - Edytor palety - - - - Reset palette - Resetuj paletę - - - - Build inactive palette - Buduj nieaktywną paletę - - - - Build disabled palette - Buduj wyłączoną paletę - - - - Active - Aktywna - - - - Inactive - Nieaktywna - - - - Disabled - Wyłączony - - - - Dark - Ciemny - - - - Window text - Tekst okna - - - - Button background - Tło przycisku - - - - Bright - Jasność - - - - Less bright - Zmniejsz jasność - - - - Less dark - Zmniejsz ciemność - - - - Window - Okno - - - - Shadow - Cień - - - - Bright text - Jasny tekst - - - - Button text - Tekst przycisku - - - - Normal text - Normalny tekst - - - - Normal background - Normalne tło - - - - Highlight - Podświetlenie - - - - Highlighted text - Podświetlony tekst - - - - Visited link - Odwiedzone linki - - - - Default - Domyślnie - - - - Tooltip background - Tło podpowiedzi - - - - Tooltip text - Tekst podpowiedzi - - - - Link - Link - - - - Alternate background - Alternatywne tło - - - - Select Color - Wybrany kolor - - - - PreviewForm - - - Preview Window - Podgląd okna - - - - Tab 1 - Tab 1 - - - - PushButton - PushButton - - - - Tab 2 - Tab 2 - - - - RadioButton - RadioButton - - - - CheckBox - CheckBox - - - - QSSEditorDialog - - - %1 - Style Sheet Editor - %1 - Edytor arkuszy stylów - - - - Style Sheet Editor - Edytor arkuszy stylów - - - - QSSPage - - - Create - Stwórz - - - - - Edit - Edycja - - - - - Rename - Zmień nazwę - - - - - Remove - Usuń - - - - File name: - Nazwa pliku: - - - - Enter Style Sheet Name - Wpisz nazwę arkusza stylów - - - - - - Error - Błąd - - - - The file "%1" already exists - Plik "%1" istnieje - - - - Confirm Remove - Potwierdź usunięcie - - - - Are you sure you want to remove style sheet "%1"? - Czy na pewno chcesz usunąć arkusz stylów "%1"? - - - - Rename Style Sheet - Zmień nazwę arkusza stylów - - - - Style sheet name: - Nazwa arkusza stylów: - - - - The style sheet "%1" already exists - Arkusz stylów "%1" już istnieje - - - - Unable to rename file - Nie można zmienić nazwy pliku - - - - main - - - Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable - Proszę usunąć zmienną środowiskową <b>QT_STYLE_OVERRIDE</b> - - - - The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly - Zmienna środowiskowa <b>QT_QPA_PLATFORMTHEME</b> ma nieprawidłową wartość - - - - Unable to find <b>libqt5ct-style.so</b> - - - - - Error - Błąd - - - diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_pt.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_pt.ts deleted file mode 100644 index d680ea8c..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_pt.ts +++ /dev/null @@ -1,709 +0,0 @@ - - - - - AppearancePage - - - Style: - - - - - Preview - - - - - Active palette - - - - - Inactive palette - - - - - Disabled palette - - - - - Palette - - - - - Default - - - - - Custom - - - - - Color scheme: - - - - - ... - - - - - Create - - - - - Edit - - - - - Create a Copy - - - - - Rename - - - - - Remove - - - - - - - Enter Color Scheme Name - - - - - - - File name: - - - - - - - Error - - - - - - - The color scheme "%1" already exists - - - - - - - Warning - - - - - - - The color scheme "%1" is read only - - - - - Confirm Remove - - - - - Are you sure you want to remove color scheme "%1"? - - - - - %1 (copy) - - - - - FontConfigDialog - - - - Font Configuration - - - - - Disable automatic hinting for bold fonts - - - - - LCD filter: - - - - - Automatic hinting - - - - - Hinting - - - - - Font resolution: - - - - - dpi - - - - - Subpixel geometry: - - - - - Antialiasing - - - - - Hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - <i>%1</i> already exists. Do you want to replace it? - - - - - FontsPage - - - - - - ... - - - - - General: - - - - - Fixed width: - - - - - Create fonts.conf - - - - - Remove fonts.conf - - - - - Remove Font Configuration - - - - - Are you sure you want to delete <i>%1</i>? - - - - - InterfacePage - - - Double click interval: - - - - - Cursor flash time: - - - - - ComboBox effect: - - - - - ToolTip effect: - - - - - ToolBox effect: - - - - - - ms - - - - - - - - Disable - - - - - - - - Animate - - - - - - Fade - - - - - Menu effect: - - - - - Enable gui effects - - - - - Dialog buttons layout: - - - - - Menus have icons - - - - - Dialog buttons have icons - - - - - Activate item on single-click - - - - - Toolbar button style: - - - - - Mouse wheel scroll lines: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Follow the application style - - - - - MainWindow - - - Qt5 Configuration Tool - - - - - Appearance - - - - - Fonts - - - - - Icon Theme - - - - - Interface - - - - - Style Sheets - - - - - Version: %1 - - - - - PaletteEditDialog - - - Palette Editor - - - - - Reset palette - - - - - Build inactive palette - - - - - Build disabled palette - - - - - Active - - - - - Inactive - - - - - Disabled - - - - - Dark - - - - - Window text - - - - - Button background - - - - - Bright - - - - - Less bright - - - - - Less dark - - - - - Window - - - - - Shadow - - - - - Bright text - - - - - Button text - - - - - Normal text - - - - - Normal background - - - - - Highlight - - - - - Highlighted text - - - - - Visited link - - - - - Default - - - - - Tooltip background - - - - - Tooltip text - - - - - Link - - - - - Alternate background - - - - - Select Color - - - - - PreviewForm - - - Preview Window - - - - - Tab 1 - - - - - PushButton - - - - - Tab 2 - - - - - RadioButton - - - - - CheckBox - - - - - QSSEditorDialog - - - %1 - Style Sheet Editor - - - - - Style Sheet Editor - - - - - QSSPage - - - Create - - - - - - Edit - - - - - - Rename - - - - - - Remove - - - - - File name: - - - - - Enter Style Sheet Name - - - - - - - Error - - - - - The file "%1" already exists - - - - - Confirm Remove - - - - - Are you sure you want to remove style sheet "%1"? - - - - - Rename Style Sheet - - - - - Style sheet name: - - - - - The style sheet "%1" already exists - - - - - Unable to rename file - - - - - main - - - Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable - - - - - The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly - - - - - Unable to find <b>libqt5ct-style.so</b> - - - - - Error - - - - diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_pt_BR.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_pt_BR.ts deleted file mode 100644 index d680ea8c..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_pt_BR.ts +++ /dev/null @@ -1,709 +0,0 @@ - - - - - AppearancePage - - - Style: - - - - - Preview - - - - - Active palette - - - - - Inactive palette - - - - - Disabled palette - - - - - Palette - - - - - Default - - - - - Custom - - - - - Color scheme: - - - - - ... - - - - - Create - - - - - Edit - - - - - Create a Copy - - - - - Rename - - - - - Remove - - - - - - - Enter Color Scheme Name - - - - - - - File name: - - - - - - - Error - - - - - - - The color scheme "%1" already exists - - - - - - - Warning - - - - - - - The color scheme "%1" is read only - - - - - Confirm Remove - - - - - Are you sure you want to remove color scheme "%1"? - - - - - %1 (copy) - - - - - FontConfigDialog - - - - Font Configuration - - - - - Disable automatic hinting for bold fonts - - - - - LCD filter: - - - - - Automatic hinting - - - - - Hinting - - - - - Font resolution: - - - - - dpi - - - - - Subpixel geometry: - - - - - Antialiasing - - - - - Hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - <i>%1</i> already exists. Do you want to replace it? - - - - - FontsPage - - - - - - ... - - - - - General: - - - - - Fixed width: - - - - - Create fonts.conf - - - - - Remove fonts.conf - - - - - Remove Font Configuration - - - - - Are you sure you want to delete <i>%1</i>? - - - - - InterfacePage - - - Double click interval: - - - - - Cursor flash time: - - - - - ComboBox effect: - - - - - ToolTip effect: - - - - - ToolBox effect: - - - - - - ms - - - - - - - - Disable - - - - - - - - Animate - - - - - - Fade - - - - - Menu effect: - - - - - Enable gui effects - - - - - Dialog buttons layout: - - - - - Menus have icons - - - - - Dialog buttons have icons - - - - - Activate item on single-click - - - - - Toolbar button style: - - - - - Mouse wheel scroll lines: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Follow the application style - - - - - MainWindow - - - Qt5 Configuration Tool - - - - - Appearance - - - - - Fonts - - - - - Icon Theme - - - - - Interface - - - - - Style Sheets - - - - - Version: %1 - - - - - PaletteEditDialog - - - Palette Editor - - - - - Reset palette - - - - - Build inactive palette - - - - - Build disabled palette - - - - - Active - - - - - Inactive - - - - - Disabled - - - - - Dark - - - - - Window text - - - - - Button background - - - - - Bright - - - - - Less bright - - - - - Less dark - - - - - Window - - - - - Shadow - - - - - Bright text - - - - - Button text - - - - - Normal text - - - - - Normal background - - - - - Highlight - - - - - Highlighted text - - - - - Visited link - - - - - Default - - - - - Tooltip background - - - - - Tooltip text - - - - - Link - - - - - Alternate background - - - - - Select Color - - - - - PreviewForm - - - Preview Window - - - - - Tab 1 - - - - - PushButton - - - - - Tab 2 - - - - - RadioButton - - - - - CheckBox - - - - - QSSEditorDialog - - - %1 - Style Sheet Editor - - - - - Style Sheet Editor - - - - - QSSPage - - - Create - - - - - - Edit - - - - - - Rename - - - - - - Remove - - - - - File name: - - - - - Enter Style Sheet Name - - - - - - - Error - - - - - The file "%1" already exists - - - - - Confirm Remove - - - - - Are you sure you want to remove style sheet "%1"? - - - - - Rename Style Sheet - - - - - Style sheet name: - - - - - The style sheet "%1" already exists - - - - - Unable to rename file - - - - - main - - - Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable - - - - - The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly - - - - - Unable to find <b>libqt5ct-style.so</b> - - - - - Error - - - - diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_ru.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_ru.ts deleted file mode 100644 index df069adf..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_ru.ts +++ /dev/null @@ -1,709 +0,0 @@ - - - - - AppearancePage - - - Style: - Стиль: - - - - Preview - Предварительный просмотр - - - - Active palette - Активная палитра - - - - Inactive palette - Неактивная палитра - - - - Disabled palette - Палитра выключенных элеметнов - - - - Palette - Палитра - - - - Default - По умолчанию - - - - Custom - Изменённая - - - - Color scheme: - Цветовая схема: - - - - ... - ... - - - - Create - Создать - - - - Edit - Изменить - - - - Create a Copy - Создать копию - - - - Rename - Переименовать - - - - Remove - Удалить - - - - - - Enter Color Scheme Name - Введите имя цветовой схемы - - - - - - File name: - Имя файла: - - - - - - Error - Ошибка - - - - - - The color scheme "%1" already exists - Цветовая схема "%1" уже существует - - - - - - Warning - Предупреждение - - - - - - The color scheme "%1" is read only - Цветовая схема "%1" доступна только для чтения - - - - Confirm Remove - Подтвердите удаление - - - - Are you sure you want to remove color scheme "%1"? - Вы уверены, что хотите удалить цветовую схему "%1"? - - - - %1 (copy) - %1 (копия) - - - - FontConfigDialog - - - - Font Configuration - Настройка шрифтов - - - - Disable automatic hinting for bold fonts - Отключить автоуточнение для жирных шрифтов - - - - LCD filter: - Фильтр LCD: - - - - Automatic hinting - Автоматическое уточнение - - - - Hinting - Уточнение - - - - Font resolution: - Разрешение шрифтов: - - - - dpi - точек/дюйм - - - - Subpixel geometry: - Геометрия субпикселей: - - - - Antialiasing - Сглаживание - - - - Hinting style: - Стиль уточнения: - - - - - None - Выключен - - - - Slight - Слабое - - - - Medium - Среднее - - - - Full - Полное - - - - <i>%1</i> already exists. Do you want to replace it? - Файл <i>%1</i> уже существует. Хотите ли вы его заменить? - - - - FontsPage - - - - - - ... - ... - - - - General: - Общий: - - - - Fixed width: - Фиксированной ширины: - - - - Create fonts.conf - Создать fonts.conf - - - - Remove fonts.conf - Удалить fonts.conf - - - - Remove Font Configuration - Удалить настройку шрифтов - - - - Are you sure you want to delete <i>%1</i>? - Вы уверены, что хотите удалить <i>%1</i>? - - - - InterfacePage - - - Double click interval: - Интервал двойного щелчка: - - - - Cursor flash time: - Период мигания курсора: - - - - ComboBox effect: - Эффект выпадающего списка: - - - - ToolTip effect: - Эффект подсказки: - - - - ToolBox effect: - Эффект панели инструментов: - - - - - ms - мс - - - - - - - Disable - Выключен - - - - - - - Animate - Анимация - - - - - Fade - Затухание - - - - Menu effect: - Эффект меню: - - - - Enable gui effects - Включить эффекты интерфейса - - - - Dialog buttons layout: - Расположение кнопок диалога: - - - - Menus have icons - Показывать значки в меню - - - - Dialog buttons have icons - Показывать значки на кнопках диалогов - - - - Activate item on single-click - Активировать элементы списка одним щелчком - - - - Toolbar button style: - Стиль кнопок панелей инструментов: - - - - Mouse wheel scroll lines: - Шаг прокрутки колесом мыши, строк: - - - - Only display the icon - Отображать только значок - - - - Only display the text - Отображать только текст - - - - The text appears beside the icon - Отображать текст рядом со значком - - - - The text appears under the icon - Отображать текст под значком - - - - Follow the application style - Определяется стилем приложения - - - - MainWindow - - - Qt5 Configuration Tool - Средство настройки Qt5 - - - - Appearance - Внешний вид - - - - Fonts - Шрифты - - - - Icon Theme - Стиль значков - - - - Interface - Интерфейс - - - - Style Sheets - Таблицы стилей - - - - Version: %1 - Версия: %1 - - - - PaletteEditDialog - - - Palette Editor - Редактор палитры - - - - Reset palette - Сбросить палитру - - - - Build inactive palette - Создать неактивную политру - - - - Build disabled palette - Создать "выключенную" палитру - - - - Active - Активная - - - - Inactive - Неактивная - - - - Disabled - Отключенная - - - - Dark - Тёмный - - - - Window text - Текст окна - - - - Button background - Фон кнопки - - - - Bright - Яркий - - - - Less bright - Менее яркий - - - - Less dark - Менее тёмный - - - - Window - Окно - - - - Shadow - Тень - - - - Bright text - Яркий текст - - - - Button text - Текст кнопки - - - - Normal text - Обычный текст - - - - Normal background - Обычный фон - - - - Highlight - Выделенная область - - - - Highlighted text - Выделенный текст - - - - Visited link - Посещённая ссылка - - - - Default - По умолчанию - - - - Tooltip background - Фон подсказки - - - - Tooltip text - Текст подсказки - - - - Link - Ссылка - - - - Alternate background - Альтернативный фон - - - - Select Color - Выберите цвет - - - - PreviewForm - - - Preview Window - Окно предпросмотра - - - - Tab 1 - Вкладка 1 - - - - PushButton - Кнопка - - - - Tab 2 - Вкладка 2 - - - - RadioButton - Переключатель - - - - CheckBox - Выключатель - - - - QSSEditorDialog - - - %1 - Style Sheet Editor - %1 - Редактор Таблицы Стилей - - - - Style Sheet Editor - Редактор Таблицы Стилей - - - - QSSPage - - - Create - Создать - - - - - Edit - Изменить - - - - - Rename - Переименовать - - - - - Remove - Удалить - - - - File name: - Имя файла: - - - - Enter Style Sheet Name - Введите имя таблицы стилей - - - - - - Error - Ошибка - - - - The file "%1" already exists - Файл "%1" уже существует - - - - Confirm Remove - Подтвердите удаление - - - - Are you sure you want to remove style sheet "%1"? - Вы уверены, что хотите удалить таблицу стилей "%1"? - - - - Rename Style Sheet - Переименовать таблицу стилей - - - - Style sheet name: - Имя таблицы стилей: - - - - The style sheet "%1" already exists - Таблица стилей с именем "%1" уже существует - - - - Unable to rename file - Невозможно переименовать файл - - - - main - - - Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable - Пожалуйста, удалите переменную среды <b>QT_STYLE_OVERRIDE</b> - - - - The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly - Переменная среды <b>QT_QPA_PLATFORMTHEME</b> установлена неправильно - - - - Unable to find <b>libqt5ct-style.so</b> - Не найден <b>libqt5ct-style.so</b> - - - - Error - Ошибка - - - diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_sk.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_sk.ts deleted file mode 100644 index e4251365..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_sk.ts +++ /dev/null @@ -1,709 +0,0 @@ - - - - - AppearancePage - - - Style: - Štýl: - - - - Preview - Náhľad - - - - Active palette - Aktívna paleta - - - - Inactive palette - Neaktívna paleta - - - - Disabled palette - Zakázaná paleta - - - - Palette - Paleta - - - - Default - Výchozia - - - - Custom - Vlastná - - - - Color scheme: - Farebná schéma: - - - - ... - ... - - - - Create - Vytvoriť - - - - Edit - Upraviť - - - - Create a Copy - Vytvoriť kópiu - - - - Rename - Premenovať - - - - Remove - Odstrániť - - - - - - Enter Color Scheme Name - Zadajte názov farebnej schémy - - - - - - File name: - Názov súboru: - - - - - - Error - Chyba - - - - - - The color scheme "%1" already exists - Farebná schéma "%1" už existuje - - - - - - Warning - Varovanie - - - - - - The color scheme "%1" is read only - Farebná schéma "%1" je len na čítanie - - - - Confirm Remove - Potvrdiť odstránenie - - - - Are you sure you want to remove color scheme "%1"? - Ste si istý, že chcete odstrániť farebnú schému "%1"? - - - - %1 (copy) - %1 (kópia) - - - - FontConfigDialog - - - - Font Configuration - Nastavenie písma - - - - Disable automatic hinting for bold fonts - Zakázať automatický hinting hrubých písiem - - - - LCD filter: - LCD filter: - - - - Automatic hinting - Automatický hinting - - - - Hinting - Hinting - - - - Font resolution: - Rozlíšenie písma: - - - - dpi - dpi - - - - Subpixel geometry: - Geometria subpixelov: - - - - Antialiasing - Vyhladzovanie - - - - Hinting style: - Štýl hintingu: - - - - - None - Žiadny - - - - Slight - Slabý - - - - Medium - Stredný - - - - Full - Plný - - - - <i>%1</i> already exists. Do you want to replace it? - <i>%1</i> už existuje. Chcete ho nahradiť? - - - - FontsPage - - - - - - ... - ... - - - - General: - Všeobecné: - - - - Fixed width: - S pevnou šírkou: - - - - Create fonts.conf - Vytvoriť fonts.conf - - - - Remove fonts.conf - Odstrániť fonts.conf - - - - Remove Font Configuration - Odstrániť nastavenie písma - - - - Are you sure you want to delete <i>%1</i>? - Naozaj chcete vymazať <i>%1</i>? - - - - InterfacePage - - - Double click interval: - Interval pre dvojklik: - - - - Cursor flash time: - Doba blikania kurzoru: - - - - ComboBox effect: - Efekt rozbaľovacieho zoznamu: - - - - ToolTip effect: - Efekt tooltipu: - - - - ToolBox effect: - Efekt toolboxu: - - - - - ms - ms - - - - - - - Disable - Zakázať - - - - - - - Animate - Animovať - - - - - Fade - Blednutie - - - - Menu effect: - Efekt menu: - - - - Enable gui effects - Povoliť efekty rozhrania - - - - Dialog buttons layout: - Rozmiestnenie tlačítok dialógu: - - - - Menus have icons - Menu majú ikonky - - - - Dialog buttons have icons - Dialógové tlačítka majú ikonky - - - - Activate item on single-click - Aktivovať položku jediným kliknutím - - - - Toolbar button style: - - - - - Mouse wheel scroll lines: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Follow the application style - - - - - MainWindow - - - Qt5 Configuration Tool - Qt5 konfiguračný nástroj - - - - Appearance - Vzhľad - - - - Fonts - Písma - - - - Icon Theme - Téma ikon - - - - Interface - Rozhranie - - - - Style Sheets - Štýly - - - - Version: %1 - Verzia: %1 - - - - PaletteEditDialog - - - Palette Editor - Editor palety - - - - Reset palette - Nastaviť paletu znovu - - - - Build inactive palette - Vytvoriť nečinnú paletu - - - - Build disabled palette - Vytvoriť zakázanú paletu - - - - Active - Aktívna - - - - Inactive - Neaktívna - - - - Disabled - Zakázaná - - - - Dark - Tmavé - - - - Window text - Text okna - - - - Button background - Pozadie tlačítka - - - - Bright - Svetlé - - - - Less bright - Menej svetlé - - - - Less dark - Tmavé - - - - Window - Okno - - - - Shadow - Tieň - - - - Bright text - Svetlý text - - - - Button text - Text tlačítka - - - - Normal text - Normálny text - - - - Normal background - Normálne pozadie - - - - Highlight - Zvýraznenie - - - - Highlighted text - Zvýraznený text - - - - Visited link - Navštívený odkaz - - - - Default - Výchozia - - - - Tooltip background - Pozadie tooltipu - - - - Tooltip text - Text tooltipu - - - - Link - Odkaz - - - - Alternate background - Striedajúce pozadie - - - - Select Color - Vybrať farbu - - - - PreviewForm - - - Preview Window - Okno náhľadu - - - - Tab 1 - Karta 1 - - - - PushButton - Tlačítko - - - - Tab 2 - Karta 2 - - - - RadioButton - Prepínač - - - - CheckBox - Zaškrtávacie políčko - - - - QSSEditorDialog - - - %1 - Style Sheet Editor - %1 - Editor štýlov - - - - Style Sheet Editor - Editor štýlu - - - - QSSPage - - - Create - Vytvoriť - - - - - Edit - Upraviť - - - - - Rename - Premenovať - - - - - Remove - Odstrániť - - - - File name: - Názov súboru: - - - - Enter Style Sheet Name - Zadajte názov štýlu - - - - - - Error - Chyba - - - - The file "%1" already exists - Súbor "%1" už existuje - - - - Confirm Remove - Potvrdiť odstránenie - - - - Are you sure you want to remove style sheet "%1"? - Ste si istý, že chcete odstrániť štýl "%1"? - - - - Rename Style Sheet - Premenovať štýl - - - - Style sheet name: - Názov štýlu: - - - - The style sheet "%1" already exists - Štýl "%1" už existuje - - - - Unable to rename file - Nedá sa premenovať súbor - - - - main - - - Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable - - - - - The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly - - - - - Unable to find <b>libqt5ct-style.so</b> - - - - - Error - Chyba - - - diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_sr.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_sr.ts deleted file mode 100644 index 7dd4939f..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_sr.ts +++ /dev/null @@ -1,709 +0,0 @@ - - - - - AppearancePage - - - Style: - Стил: - - - - Preview - Преглед - - - - Active palette - Активна палета - - - - Inactive palette - Неактивна палета - - - - Disabled palette - Искључена палета - - - - Palette - Палета - - - - Default - Подразумевано - - - - Custom - Прилагођено - - - - Color scheme: - Шема боја: - - - - ... - ... - - - - Create - Креирај - - - - Edit - Измени - - - - Create a Copy - Креирај копију - - - - Rename - Преименуј - - - - Remove - Обриши - - - - - - Enter Color Scheme Name - Унеси име шеме боја - - - - - - File name: - Име фајла: - - - - - - Error - Грешка - - - - - - The color scheme "%1" already exists - Шема боја "%1" већ постоји - - - - - - Warning - Упозорење - - - - - - The color scheme "%1" is read only - Шема боја је "%1" само за читање - - - - Confirm Remove - Потврди брисање - - - - Are you sure you want to remove color scheme "%1"? - Да ли сте сигурни да желите брисање шеме боја "%1"? - - - - %1 (copy) - %1 (копирај) - - - - FontConfigDialog - - - - Font Configuration - Поставке фонта - - - - Disable automatic hinting for bold fonts - Искључи аутоматски наговештај за подебљане фонтове - - - - LCD filter: - LCD филтер: - - - - Automatic hinting - Аутоматски наговештај - - - - Hinting - Наговештај - - - - Font resolution: - Резолуција фонта: - - - - dpi - dpi - - - - Subpixel geometry: - Субпиксел геометрија: - - - - Antialiasing - Антиалиас - - - - Hinting style: - Стил наговештаја: - - - - - None - Ништа - - - - Slight - Танак - - - - Medium - Средњи - - - - Full - Пун - - - - <i>%1</i> already exists. Do you want to replace it? - <i>%1</i> већ постоји. Да ли желите да замените? - - - - FontsPage - - - - - - ... - ... - - - - General: - Опште: - - - - Fixed width: - Одређена ширина: - - - - Create fonts.conf - Креирај fonts.conf - - - - Remove fonts.conf - Обриши fonts.conf - - - - Remove Font Configuration - Обриши поставке фонта - - - - Are you sure you want to delete <i>%1</i>? - Да ли сте сигурни да желите брисање <i>%1</i>? - - - - InterfacePage - - - Double click interval: - Интервал дуплог клика: - - - - Cursor flash time: - Време за курсор: - - - - ComboBox effect: - ComboBox ефекат: - - - - ToolTip effect: - ToolTip ефекат: - - - - ToolBox effect: - ToolBox ефекат: - - - - - ms - ms - - - - - - - Disable - Искључи - - - - - - - Animate - Анимирај - - - - - Fade - Избледи - - - - Menu effect: - Мени ефекат: - - - - Enable gui effects - Омогући ефекте сучеља - - - - Dialog buttons layout: - Изглед дијалога за дугмиће: - - - - Menus have icons - Мени са иконама - - - - Dialog buttons have icons - Дијалог дугмића са иконама - - - - Activate item on single-click - Активирај ставку на један клик - - - - Toolbar button style: - Изглед дугмета у траци алата: - - - - Mouse wheel scroll lines: - Линије точкића миша: - - - - Only display the icon - Прикажи само икону - - - - Only display the text - Прикажи само текст - - - - The text appears beside the icon - Текст изнад иконе - - - - The text appears under the icon - Текст испод иконе - - - - Follow the application style - Прати изглед апликације - - - - MainWindow - - - Qt5 Configuration Tool - Qt5 конфигурациони алат - - - - Appearance - Изглед - - - - Fonts - Фонтови - - - - Icon Theme - Тема икона - - - - Interface - Сучеље - - - - Style Sheets - Стил листова - - - - Version: %1 - Верзија: %1 - - - - PaletteEditDialog - - - Palette Editor - Едитор палете - - - - Reset palette - Ресетуј палету - - - - Build inactive palette - Оформи неактивну палету - - - - Build disabled palette - Оформи искључену палету - - - - Active - Активна - - - - Inactive - Неактивна - - - - Disabled - Искључена - - - - Dark - Тамно - - - - Window text - Текст прозора - - - - Button background - Позадина дугмића - - - - Bright - Светло - - - - Less bright - Мање светло - - - - Less dark - Мање тамно - - - - Window - Прозор - - - - Shadow - Сенка - - - - Bright text - Светли текст - - - - Button text - Текст дугмића - - - - Normal text - Нормалан текст - - - - Normal background - Нормална позадина - - - - Highlight - Истакнуто - - - - Highlighted text - Истакнут текст - - - - Visited link - Посећени линк - - - - Default - Подразумевано - - - - Tooltip background - Позадина искачућег прозора - - - - Tooltip text - Текст искачућег прозора - - - - Link - Линк - - - - Alternate background - Алтернативна позадина - - - - Select Color - Одабери боју - - - - PreviewForm - - - Preview Window - Прозор за преглед - - - - Tab 1 - Таб 1 - - - - PushButton - Дугме - - - - Tab 2 - Таб 2 - - - - RadioButton - Радио дугме - - - - CheckBox - Поље за ознаку - - - - QSSEditorDialog - - - %1 - Style Sheet Editor - %1 - Едитор стила - - - - Style Sheet Editor - Едитор стила - - - - QSSPage - - - Create - Креирај - - - - - Edit - Измени - - - - - Rename - Преименуј - - - - - Remove - Обриши - - - - File name: - Име фајла - - - - Enter Style Sheet Name - Унесите име за стил - - - - - - Error - Грешка - - - - The file "%1" already exists - Фајл "%1" већ постоји - - - - Confirm Remove - Потврди брисање - - - - Are you sure you want to remove style sheet "%1"? - Да ли сте сигурни да желите брисање стила "%1"? - - - - Rename Style Sheet - Преименуј стил - - - - Style sheet name: - Име стила: - - - - The style sheet "%1" already exists - Стил "%1" већ постоји - - - - Unable to rename file - Није могуће преименовати фајл - - - - main - - - Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable - Молим обришите <b>QT_STYLE_OVERRIDE</b> променљиву окружења - - - - The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly - Променљива<b>QT_QPA_PLATFORMTHEME</b> окружења није подешена исправно - - - - Unable to find <b>libqt5ct-style.so</b> - Није могуће пронаћи <b>libqt5ct-style.so</b> - - - - Error - Грешка - - - diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_sr_BA.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_sr_BA.ts deleted file mode 100644 index ecd5e9d2..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_sr_BA.ts +++ /dev/null @@ -1,709 +0,0 @@ - - - - - AppearancePage - - - Style: - - - - - Preview - - - - - Active palette - - - - - Inactive palette - - - - - Disabled palette - - - - - Palette - - - - - Default - - - - - Custom - - - - - Color scheme: - - - - - ... - - - - - Create - - - - - Edit - - - - - Create a Copy - - - - - Rename - - - - - Remove - - - - - - - Enter Color Scheme Name - - - - - - - File name: - - - - - - - Error - - - - - - - The color scheme "%1" already exists - - - - - - - Warning - - - - - - - The color scheme "%1" is read only - - - - - Confirm Remove - - - - - Are you sure you want to remove color scheme "%1"? - - - - - %1 (copy) - - - - - FontConfigDialog - - - - Font Configuration - - - - - Disable automatic hinting for bold fonts - - - - - LCD filter: - - - - - Automatic hinting - - - - - Hinting - - - - - Font resolution: - - - - - dpi - - - - - Subpixel geometry: - - - - - Antialiasing - - - - - Hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - <i>%1</i> already exists. Do you want to replace it? - - - - - FontsPage - - - - - - ... - - - - - General: - - - - - Fixed width: - - - - - Create fonts.conf - - - - - Remove fonts.conf - - - - - Remove Font Configuration - - - - - Are you sure you want to delete <i>%1</i>? - - - - - InterfacePage - - - Double click interval: - - - - - Cursor flash time: - - - - - ComboBox effect: - - - - - ToolTip effect: - - - - - ToolBox effect: - - - - - - ms - - - - - - - - Disable - - - - - - - - Animate - - - - - - Fade - - - - - Menu effect: - - - - - Enable gui effects - - - - - Dialog buttons layout: - - - - - Menus have icons - - - - - Dialog buttons have icons - - - - - Activate item on single-click - - - - - Toolbar button style: - - - - - Mouse wheel scroll lines: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Follow the application style - - - - - MainWindow - - - Qt5 Configuration Tool - - - - - Appearance - - - - - Fonts - - - - - Icon Theme - - - - - Interface - - - - - Style Sheets - - - - - Version: %1 - - - - - PaletteEditDialog - - - Palette Editor - - - - - Reset palette - - - - - Build inactive palette - - - - - Build disabled palette - - - - - Active - - - - - Inactive - - - - - Disabled - - - - - Dark - - - - - Window text - - - - - Button background - - - - - Bright - - - - - Less bright - - - - - Less dark - - - - - Window - - - - - Shadow - - - - - Bright text - - - - - Button text - - - - - Normal text - - - - - Normal background - - - - - Highlight - - - - - Highlighted text - - - - - Visited link - - - - - Default - - - - - Tooltip background - - - - - Tooltip text - - - - - Link - - - - - Alternate background - - - - - Select Color - - - - - PreviewForm - - - Preview Window - - - - - Tab 1 - - - - - PushButton - - - - - Tab 2 - - - - - RadioButton - - - - - CheckBox - - - - - QSSEditorDialog - - - %1 - Style Sheet Editor - - - - - Style Sheet Editor - - - - - QSSPage - - - Create - - - - - - Edit - - - - - - Rename - - - - - - Remove - - - - - File name: - - - - - Enter Style Sheet Name - - - - - - - Error - - - - - The file "%1" already exists - - - - - Confirm Remove - - - - - Are you sure you want to remove style sheet "%1"? - - - - - Rename Style Sheet - - - - - Style sheet name: - - - - - The style sheet "%1" already exists - - - - - Unable to rename file - - - - - main - - - Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable - - - - - The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly - - - - - Unable to find <b>libqt5ct-style.so</b> - - - - - Error - - - - diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_sr_RS.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_sr_RS.ts deleted file mode 100644 index 2d4c06fa..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_sr_RS.ts +++ /dev/null @@ -1,709 +0,0 @@ - - - - - AppearancePage - - - Style: - - - - - Preview - - - - - Active palette - - - - - Inactive palette - - - - - Disabled palette - - - - - Palette - - - - - Default - - - - - Custom - - - - - Color scheme: - - - - - ... - - - - - Create - - - - - Edit - - - - - Create a Copy - - - - - Rename - - - - - Remove - - - - - - - Enter Color Scheme Name - - - - - - - File name: - - - - - - - Error - - - - - - - The color scheme "%1" already exists - - - - - - - Warning - - - - - - - The color scheme "%1" is read only - - - - - Confirm Remove - - - - - Are you sure you want to remove color scheme "%1"? - - - - - %1 (copy) - - - - - FontConfigDialog - - - - Font Configuration - - - - - Disable automatic hinting for bold fonts - - - - - LCD filter: - - - - - Automatic hinting - - - - - Hinting - - - - - Font resolution: - - - - - dpi - - - - - Subpixel geometry: - - - - - Antialiasing - - - - - Hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - <i>%1</i> already exists. Do you want to replace it? - - - - - FontsPage - - - - - - ... - - - - - General: - - - - - Fixed width: - - - - - Create fonts.conf - - - - - Remove fonts.conf - - - - - Remove Font Configuration - - - - - Are you sure you want to delete <i>%1</i>? - - - - - InterfacePage - - - Double click interval: - - - - - Cursor flash time: - - - - - ComboBox effect: - - - - - ToolTip effect: - - - - - ToolBox effect: - - - - - - ms - - - - - - - - Disable - - - - - - - - Animate - - - - - - Fade - - - - - Menu effect: - - - - - Enable gui effects - - - - - Dialog buttons layout: - - - - - Menus have icons - - - - - Dialog buttons have icons - - - - - Activate item on single-click - - - - - Toolbar button style: - - - - - Mouse wheel scroll lines: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Follow the application style - - - - - MainWindow - - - Qt5 Configuration Tool - - - - - Appearance - - - - - Fonts - - - - - Icon Theme - - - - - Interface - - - - - Style Sheets - - - - - Version: %1 - - - - - PaletteEditDialog - - - Palette Editor - - - - - Reset palette - - - - - Build inactive palette - - - - - Build disabled palette - - - - - Active - - - - - Inactive - - - - - Disabled - - - - - Dark - - - - - Window text - - - - - Button background - - - - - Bright - - - - - Less bright - - - - - Less dark - - - - - Window - - - - - Shadow - - - - - Bright text - - - - - Button text - - - - - Normal text - - - - - Normal background - - - - - Highlight - - - - - Highlighted text - - - - - Visited link - - - - - Default - - - - - Tooltip background - - - - - Tooltip text - - - - - Link - - - - - Alternate background - - - - - Select Color - - - - - PreviewForm - - - Preview Window - - - - - Tab 1 - - - - - PushButton - - - - - Tab 2 - - - - - RadioButton - - - - - CheckBox - - - - - QSSEditorDialog - - - %1 - Style Sheet Editor - - - - - Style Sheet Editor - - - - - QSSPage - - - Create - - - - - - Edit - - - - - - Rename - - - - - - Remove - - - - - File name: - - - - - Enter Style Sheet Name - - - - - - - Error - - - - - The file "%1" already exists - - - - - Confirm Remove - - - - - Are you sure you want to remove style sheet "%1"? - - - - - Rename Style Sheet - - - - - Style sheet name: - - - - - The style sheet "%1" already exists - - - - - Unable to rename file - - - - - main - - - Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable - - - - - The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly - - - - - Unable to find <b>libqt5ct-style.so</b> - - - - - Error - - - - diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_tr.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_tr.ts deleted file mode 100644 index eba0fa90..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_tr.ts +++ /dev/null @@ -1,709 +0,0 @@ - - - - - AppearancePage - - - Style: - - - - - Preview - - - - - Active palette - - - - - Inactive palette - - - - - Disabled palette - - - - - Palette - - - - - Default - - - - - Custom - - - - - Color scheme: - - - - - ... - - - - - Create - - - - - Edit - - - - - Create a Copy - - - - - Rename - - - - - Remove - - - - - - - Enter Color Scheme Name - - - - - - - File name: - - - - - - - Error - - - - - - - The color scheme "%1" already exists - - - - - - - Warning - - - - - - - The color scheme "%1" is read only - - - - - Confirm Remove - - - - - Are you sure you want to remove color scheme "%1"? - - - - - %1 (copy) - - - - - FontConfigDialog - - - - Font Configuration - - - - - Disable automatic hinting for bold fonts - - - - - LCD filter: - - - - - Automatic hinting - - - - - Hinting - - - - - Font resolution: - - - - - dpi - - - - - Subpixel geometry: - - - - - Antialiasing - - - - - Hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - <i>%1</i> already exists. Do you want to replace it? - - - - - FontsPage - - - - - - ... - - - - - General: - - - - - Fixed width: - - - - - Create fonts.conf - - - - - Remove fonts.conf - - - - - Remove Font Configuration - - - - - Are you sure you want to delete <i>%1</i>? - - - - - InterfacePage - - - Double click interval: - - - - - Cursor flash time: - - - - - ComboBox effect: - - - - - ToolTip effect: - - - - - ToolBox effect: - - - - - - ms - - - - - - - - Disable - - - - - - - - Animate - - - - - - Fade - - - - - Menu effect: - - - - - Enable gui effects - - - - - Dialog buttons layout: - - - - - Menus have icons - - - - - Dialog buttons have icons - - - - - Activate item on single-click - - - - - Toolbar button style: - - - - - Mouse wheel scroll lines: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Follow the application style - - - - - MainWindow - - - Qt5 Configuration Tool - - - - - Appearance - - - - - Fonts - - - - - Icon Theme - - - - - Interface - - - - - Style Sheets - - - - - Version: %1 - - - - - PaletteEditDialog - - - Palette Editor - - - - - Reset palette - - - - - Build inactive palette - - - - - Build disabled palette - - - - - Active - - - - - Inactive - - - - - Disabled - - - - - Dark - - - - - Window text - - - - - Button background - - - - - Bright - - - - - Less bright - - - - - Less dark - - - - - Window - - - - - Shadow - - - - - Bright text - - - - - Button text - - - - - Normal text - - - - - Normal background - - - - - Highlight - - - - - Highlighted text - - - - - Visited link - - - - - Default - - - - - Tooltip background - - - - - Tooltip text - - - - - Link - - - - - Alternate background - - - - - Select Color - - - - - PreviewForm - - - Preview Window - - - - - Tab 1 - - - - - PushButton - - - - - Tab 2 - - - - - RadioButton - - - - - CheckBox - - - - - QSSEditorDialog - - - %1 - Style Sheet Editor - - - - - Style Sheet Editor - - - - - QSSPage - - - Create - - - - - - Edit - - - - - - Rename - - - - - - Remove - - - - - File name: - - - - - Enter Style Sheet Name - - - - - - - Error - - - - - The file "%1" already exists - - - - - Confirm Remove - - - - - Are you sure you want to remove style sheet "%1"? - - - - - Rename Style Sheet - - - - - Style sheet name: - - - - - The style sheet "%1" already exists - - - - - Unable to rename file - - - - - main - - - Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable - - - - - The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly - - - - - Unable to find <b>libqt5ct-style.so</b> - - - - - Error - - - - diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_uk_UA.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_uk_UA.ts deleted file mode 100644 index 7788328b..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_uk_UA.ts +++ /dev/null @@ -1,709 +0,0 @@ - - - - - AppearancePage - - - Style: - - - - - Preview - - - - - Active palette - - - - - Inactive palette - - - - - Disabled palette - - - - - Palette - - - - - Default - - - - - Custom - - - - - Color scheme: - - - - - ... - - - - - Create - - - - - Edit - - - - - Create a Copy - - - - - Rename - - - - - Remove - - - - - - - Enter Color Scheme Name - - - - - - - File name: - - - - - - - Error - - - - - - - The color scheme "%1" already exists - - - - - - - Warning - - - - - - - The color scheme "%1" is read only - - - - - Confirm Remove - - - - - Are you sure you want to remove color scheme "%1"? - - - - - %1 (copy) - - - - - FontConfigDialog - - - - Font Configuration - - - - - Disable automatic hinting for bold fonts - - - - - LCD filter: - - - - - Automatic hinting - - - - - Hinting - - - - - Font resolution: - - - - - dpi - - - - - Subpixel geometry: - - - - - Antialiasing - - - - - Hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - <i>%1</i> already exists. Do you want to replace it? - - - - - FontsPage - - - - - - ... - - - - - General: - - - - - Fixed width: - - - - - Create fonts.conf - - - - - Remove fonts.conf - - - - - Remove Font Configuration - - - - - Are you sure you want to delete <i>%1</i>? - - - - - InterfacePage - - - Double click interval: - - - - - Cursor flash time: - - - - - ComboBox effect: - - - - - ToolTip effect: - - - - - ToolBox effect: - - - - - - ms - - - - - - - - Disable - - - - - - - - Animate - - - - - - Fade - - - - - Menu effect: - - - - - Enable gui effects - - - - - Dialog buttons layout: - - - - - Menus have icons - - - - - Dialog buttons have icons - - - - - Activate item on single-click - - - - - Toolbar button style: - - - - - Mouse wheel scroll lines: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Follow the application style - - - - - MainWindow - - - Qt5 Configuration Tool - - - - - Appearance - - - - - Fonts - - - - - Icon Theme - - - - - Interface - - - - - Style Sheets - - - - - Version: %1 - - - - - PaletteEditDialog - - - Palette Editor - - - - - Reset palette - - - - - Build inactive palette - - - - - Build disabled palette - - - - - Active - - - - - Inactive - - - - - Disabled - - - - - Dark - - - - - Window text - - - - - Button background - - - - - Bright - - - - - Less bright - - - - - Less dark - - - - - Window - - - - - Shadow - - - - - Bright text - - - - - Button text - - - - - Normal text - - - - - Normal background - - - - - Highlight - - - - - Highlighted text - - - - - Visited link - - - - - Default - - - - - Tooltip background - - - - - Tooltip text - - - - - Link - - - - - Alternate background - - - - - Select Color - - - - - PreviewForm - - - Preview Window - - - - - Tab 1 - - - - - PushButton - - - - - Tab 2 - - - - - RadioButton - - - - - CheckBox - - - - - QSSEditorDialog - - - %1 - Style Sheet Editor - - - - - Style Sheet Editor - - - - - QSSPage - - - Create - - - - - - Edit - - - - - - Rename - - - - - - Remove - - - - - File name: - - - - - Enter Style Sheet Name - - - - - - - Error - - - - - The file "%1" already exists - - - - - Confirm Remove - - - - - Are you sure you want to remove style sheet "%1"? - - - - - Rename Style Sheet - - - - - Style sheet name: - - - - - The style sheet "%1" already exists - - - - - Unable to rename file - - - - - main - - - Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable - - - - - The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly - - - - - Unable to find <b>libqt5ct-style.so</b> - - - - - Error - - - - diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_zh_CN.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_zh_CN.ts deleted file mode 100644 index c3c8d255..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_zh_CN.ts +++ /dev/null @@ -1,709 +0,0 @@ - - - - - AppearancePage - - - Style: - 风格: - - - - Preview - 预览 - - - - Active palette - 激活状态的调色板 - - - - Inactive palette - 非激活状态的调色板 - - - - Disabled palette - 失效状态的调色板 - - - - Palette - 调色板 - - - - Default - 缺省 - - - - Custom - 自定义 - - - - Color scheme: - 颜色方案: - - - - ... - ... - - - - Create - 创建 - - - - Edit - 编辑 - - - - Create a Copy - 创建副本 - - - - Rename - 重命名 - - - - Remove - 移除 - - - - - - Enter Color Scheme Name - 输入颜色方案名称 - - - - - - File name: - 文件名: - - - - - - Error - 错误 - - - - - - The color scheme "%1" already exists - 颜色方案 "%1" 已经存在 - - - - - - Warning - 警告 - - - - - - The color scheme "%1" is read only - 颜色方案 "%1" 是只读状态 - - - - Confirm Remove - 确认移除 - - - - Are you sure you want to remove color scheme "%1"? - 您确定要移除颜色方案 "%1" 吗? - - - - %1 (copy) - %1(拷贝) - - - - FontConfigDialog - - - - Font Configuration - 字体配置 - - - - Disable automatic hinting for bold fonts - 禁用粗体自动微调 - - - - LCD filter: - LCD 过滤器: - - - - Automatic hinting - 自动微调 - - - - Hinting - 微调 - - - - Font resolution: - 字体分辨率 - - - - dpi - dpi - - - - Subpixel geometry: - 子像素排列: - - - - Antialiasing - 抗锯齿 - - - - Hinting style: - 微调风格 - - - - - None - - - - - Slight - 轻微 - - - - Medium - 中等 - - - - Full - 全部 - - - - <i>%1</i> already exists. Do you want to replace it? - <i>%1</i> 已经存在。您想要取代它吗? - - - - FontsPage - - - - - - ... - ... - - - - General: - 一般: - - - - Fixed width: - 固定宽度: - - - - Create fonts.conf - 创建 fonts.conf - - - - Remove fonts.conf - 移除 fonts.conf - - - - Remove Font Configuration - 移除字体配置 - - - - Are you sure you want to delete <i>%1</i>? - 您确定要删除<i>%1</i>吗? - - - - InterfacePage - - - Double click interval: - 双击间隔: - - - - Cursor flash time: - 光标闪烁间隔: - - - - ComboBox effect: - 下拉框效果: - - - - ToolTip effect: - 提示效果: - - - - ToolBox effect: - 工具箱效果: - - - - - ms - 毫秒 - - - - - - - Disable - 禁用 - - - - - - - Animate - 动画 - - - - - Fade - 阴影 - - - - Menu effect: - 菜单效果: - - - - Enable gui effects - 启用GUI效果 - - - - Dialog buttons layout: - 对话框按钮布局: - - - - Menus have icons - 有图标的菜单 - - - - Dialog buttons have icons - 有图标的对话框按钮 - - - - Activate item on single-click - - - - - Toolbar button style: - - - - - Mouse wheel scroll lines: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Follow the application style - - - - - MainWindow - - - Qt5 Configuration Tool - Qt5 配置工具 - - - - Appearance - 外观 - - - - Fonts - 字体 - - - - Icon Theme - 图标主题 - - - - Interface - 界面 - - - - Style Sheets - 样式表 - - - - Version: %1 - 版本:%1 - - - - PaletteEditDialog - - - Palette Editor - 调色板编辑器 - - - - Reset palette - 重置调色板 - - - - Build inactive palette - 构建非激活的调色板 - - - - Build disabled palette - 构建禁用状态调色板 - - - - Active - 激活 - - - - Inactive - 非激活 - - - - Disabled - 已禁用 - - - - Dark - - - - - Window text - 窗口文字 - - - - Button background - 按钮背景 - - - - Bright - - - - - Less bright - 较不亮 - - - - Less dark - 较不暗 - - - - Window - 窗口 - - - - Shadow - 阴影 - - - - Bright text - 亮文字 - - - - Button text - 按钮文字 - - - - Normal text - 普通文字 - - - - Normal background - 普通背景 - - - - Highlight - 高亮 - - - - Highlighted text - 高亮文字 - - - - Visited link - 已访问的链接 - - - - Default - 缺省 - - - - Tooltip background - 提示语背景 - - - - Tooltip text - 提示语文字 - - - - Link - 链接 - - - - Alternate background - 备用背景 - - - - Select Color - 选择颜色 - - - - PreviewForm - - - Preview Window - 预览窗口 - - - - Tab 1 - 页面1 - - - - PushButton - 按钮 - - - - Tab 2 - 页面2 - - - - RadioButton - 单选按钮 - - - - CheckBox - 复选框 - - - - QSSEditorDialog - - - %1 - Style Sheet Editor - %1 - 样式表编辑器 - - - - Style Sheet Editor - 样式表编辑器 - - - - QSSPage - - - Create - 新建 - - - - - Edit - 编辑 - - - - - Rename - 重命名 - - - - - Remove - 删除 - - - - File name: - 文件名: - - - - Enter Style Sheet Name - 输入样式表名称 - - - - - - Error - 错误 - - - - The file "%1" already exists - 文件 “%1” 已经存在 - - - - Confirm Remove - 确定删除 - - - - Are you sure you want to remove style sheet "%1"? - 您确定要移除样式表 "%1" 吗? - - - - Rename Style Sheet - 重命名样式表 - - - - Style sheet name: - 样式表名称: - - - - The style sheet "%1" already exists - 样式表 “%1” 已经存在 - - - - Unable to rename file - 无法重命名文件 - - - - main - - - Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable - - - - - The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly - - - - - Unable to find <b>libqt5ct-style.so</b> - - - - - Error - 错误 - - - diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_zh_TW.ts b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_zh_TW.ts deleted file mode 100644 index ff9a4b7f..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/qt5ct_zh_TW.ts +++ /dev/null @@ -1,709 +0,0 @@ - - - - - AppearancePage - - - Style: - 風格: - - - - Preview - 預覽 - - - - Active palette - 作用中色彩 - - - - Inactive palette - 非作用中色彩 - - - - Disabled palette - 已停用的色彩 - - - - Palette - 色彩 - - - - Default - 預設 - - - - Custom - 自訂 - - - - Color scheme: - 顏色方案: - - - - ... - ... - - - - Create - 建立 - - - - Edit - 編輯 - - - - Create a Copy - 建立一份拷貝 - - - - Rename - 重新命名 - - - - Remove - 移除 - - - - - - Enter Color Scheme Name - 輸入顏色方案名稱 - - - - - - File name: - 檔案名稱: - - - - - - Error - 錯誤 - - - - - - The color scheme "%1" already exists - 顏色方案「%1」已經存在 - - - - - - Warning - 警告 - - - - - - The color scheme "%1" is read only - 顏色方案「%1」為唯讀狀態 - - - - Confirm Remove - 確認移除 - - - - Are you sure you want to remove color scheme "%1"? - 您是否確定要移除顏色方案「%1」? - - - - %1 (copy) - %1(拷貝) - - - - FontConfigDialog - - - - Font Configuration - 字型設定 - - - - Disable automatic hinting for bold fonts - 停用粗體字的自動微調 - - - - LCD filter: - LCD 過濾器: - - - - Automatic hinting - 自動微調 - - - - Hinting - 微調 - - - - Font resolution: - 字型解析度: - - - - dpi - dpi - - - - Subpixel geometry: - 子像素排列方式: - - - - Antialiasing - 反鉅齒 - - - - Hinting style: - 微調風格: - - - - - None - - - - - Slight - 輕微 - - - - Medium - 中等 - - - - Full - 完整 - - - - <i>%1</i> already exists. Do you want to replace it? - <i>%1</i> 已經存在。您想要取代它嗎? - - - - FontsPage - - - - - - ... - ... - - - - General: - 一般: - - - - Fixed width: - 固定寬度: - - - - Create fonts.conf - 建立 fonts.conf - - - - Remove fonts.conf - 移除 fonts.conf - - - - Remove Font Configuration - 移除字型設定 - - - - Are you sure you want to delete <i>%1</i>? - 您確定真的要刪除 <i>%1</i> 嗎? - - - - InterfacePage - - - Double click interval: - 雙敲擊間隔: - - - - Cursor flash time: - 游標閃爍時間: - - - - ComboBox effect: - 下拉式選單效果: - - - - ToolTip effect: - 工具提示效果: - - - - ToolBox effect: - 工具箱效果: - - - - - ms - 毫秒 - - - - - - - Disable - 停用 - - - - - - - Animate - 動畫 - - - - - Fade - 陰影 - - - - Menu effect: - 選單效果: - - - - Enable gui effects - 啟用圖形使用者介面效果 - - - - Dialog buttons layout: - 對話框按鈕佈局: - - - - Menus have icons - 有圖示的選單 - - - - Dialog buttons have icons - 有圖示的對話框按鈕 - - - - Activate item on single-click - 單擊啟用項目 - - - - Toolbar button style: - 工具列按鈕風格: - - - - Mouse wheel scroll lines: - 滑鼠滾輪捲動軸: - - - - Only display the icon - 僅顯示圖示 - - - - Only display the text - 僅顯示文字 - - - - The text appears beside the icon - 文字在圖示旁 - - - - The text appears under the icon - 文字在圖示下 - - - - Follow the application style - 跟隨應用程式風格 - - - - MainWindow - - - Qt5 Configuration Tool - Qt5 設定工具 - - - - Appearance - 外觀 - - - - Fonts - 字型 - - - - Icon Theme - 圖示主題 - - - - Interface - 介面 - - - - Style Sheets - 風格樣式表 - - - - Version: %1 - 版本: %1 - - - - PaletteEditDialog - - - Palette Editor - 色彩編輯器 - - - - Reset palette - 重置色彩 - - - - Build inactive palette - 構建非作用中的色彩 - - - - Build disabled palette - 構建已停用的色彩 - - - - Active - 作用中 - - - - Inactive - 非作用中 - - - - Disabled - 已停用 - - - - Dark - 黑暗 - - - - Window text - 視窗文字 - - - - Button background - 按鈕背景 - - - - Bright - - - - - Less bright - 較不亮 - - - - Less dark - 較不黑暗 - - - - Window - 視窗 - - - - Shadow - 陰影 - - - - Bright text - 亮文字 - - - - Button text - 按鈕文字 - - - - Normal text - 一般文字 - - - - Normal background - 一般背景 - - - - Highlight - 突顯 - - - - Highlighted text - 突顯的文字 - - - - Visited link - 已造訪的連結 - - - - Default - 預設 - - - - Tooltip background - 工具提示背景 - - - - Tooltip text - 工具提示文字 - - - - Link - 連結 - - - - Alternate background - 備用背景 - - - - Select Color - 選取顏色 - - - - PreviewForm - - - Preview Window - 預覽視窗 - - - - Tab 1 - 分頁 1 - - - - PushButton - 突出按鈕 - - - - Tab 2 - 分頁 2 - - - - RadioButton - 無線電按鈕 - - - - CheckBox - 核取方塊 - - - - QSSEditorDialog - - - %1 - Style Sheet Editor - %1 - 風格樣式表編輯器 - - - - Style Sheet Editor - 風格樣式表編輯器 - - - - QSSPage - - - Create - 建立 - - - - - Edit - 編輯 - - - - - Rename - 重新命名 - - - - - Remove - 移除 - - - - File name: - 檔案名稱: - - - - Enter Style Sheet Name - 輸入風格樣式表名稱 - - - - - - Error - 錯誤 - - - - The file "%1" already exists - 檔案 "%1" 已經存在 - - - - Confirm Remove - 確認移除 - - - - Are you sure you want to remove style sheet "%1"? - 您是否確定要移除風格樣式表「%1」? - - - - Rename Style Sheet - 重新命名風格樣式表 - - - - Style sheet name: - 風格樣式表名稱: - - - - The style sheet "%1" already exists - 風格樣式表 "%1" 已經存在 - - - - Unable to rename file - 無法重新命名檔案 - - - - main - - - Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable - 請移除 <b>QT_STYLE_OVERRIDE</b> 環境變數 - - - - The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly - <b>QT_QPA_PLATFORMTHEME</b> 環境變數未正確設定 - - - - Unable to find <b>libqt5ct-style.so</b> - 找不到 <b>libqt5ct-style.so</b> - - - - Error - 錯誤 - - - diff --git a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/translations.qrc b/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/translations.qrc deleted file mode 100644 index 2cf79b6b..00000000 --- a/src-qt5/core/lumina-theme-engine/src/qt5ct/translations/translations.qrc +++ /dev/null @@ -1,36 +0,0 @@ - - - - qt5ct_ru.qm - qt5ct_uk_UA.qm - qt5ct_zh_CN.qm - qt5ct_zh_TW.qm - qt5ct_tr.qm - qt5ct_cs.qm - qt5ct_pt_BR.qm - qt5ct_pt.qm - qt5ct_de.qm - qt5ct_pl.qm - qt5ct_fr.qm - qt5ct_it.qm - qt5ct_it_IT.qm - qt5ct_kk.qm - qt5ct_lt.qm - qt5ct_hu.qm - qt5ct_nl.qm - qt5ct_ja.qm - qt5ct_sk.qm - qt5ct_es_ES.qm - qt5ct_es.qm - qt5ct_he.qm - qt5ct_gl_ES.qm - qt5ct_sr_BA.qm - qt5ct_sr_RS.qm - qt5ct_bg.qm - qt5ct_nl_NL.qm - qt5ct_el.qm - qt5ct_sr.qm - qt5ct_ca.qm - qt5ct_ar.qm - - -- cgit From b99a31cdb04b3f610e65951dbb46405b04d600cc Mon Sep 17 00:00:00 2001 From: q5sys Date: Tue, 18 Jul 2017 16:23:41 -0400 Subject: source directory updates --- .../src/lthemeengine-qtplugin/main.cpp | 52 +++ .../src/lthemeengine-qtplugin/qt5ct-qtplugin.pro | 35 ++ .../src/lthemeengine-qtplugin/qt5ct.json | 3 + .../lthemeengine-qtplugin/qt5ctplatformtheme.cpp | 366 ++++++++++++++++++ .../src/lthemeengine-qtplugin/qt5ctplatformtheme.h | 122 ++++++ .../src/lthemeengine-style/plugin.cpp | 57 +++ .../src/lthemeengine-style/qt5ct-style.pro | 26 ++ .../src/lthemeengine-style/qt5ct.json | 3 + .../src/lthemeengine-style/qt5ctproxystyle.cpp | 63 ++++ .../src/lthemeengine-style/qt5ctproxystyle.h | 50 +++ .../src/lthemeengine/appearancepage.cpp | 418 +++++++++++++++++++++ .../src/lthemeengine/appearancepage.h | 79 ++++ .../src/lthemeengine/appearancepage.ui | 243 ++++++++++++ .../src/lthemeengine/fontconfigdialog.cpp | 138 +++++++ .../src/lthemeengine/fontconfigdialog.h | 56 +++ .../src/lthemeengine/fontconfigdialog.ui | 160 ++++++++ .../src/lthemeengine/fontspage.cpp | 126 +++++++ .../src/lthemeengine/fontspage.h | 62 +++ .../src/lthemeengine/fontspage.ui | 134 +++++++ .../src/lthemeengine/iconthemepage.cpp | 214 +++++++++++ .../src/lthemeengine/iconthemepage.h | 57 +++ .../src/lthemeengine/iconthemepage.ui | 51 +++ .../src/lthemeengine/interfacepage.cpp | 140 +++++++ .../src/lthemeengine/interfacepage.h | 54 +++ .../src/lthemeengine/interfacepage.ui | 327 ++++++++++++++++ .../lumina-theme-engine/src/lthemeengine/main.cpp | 84 +++++ .../src/lthemeengine/mainwindow.cpp | 90 +++++ .../src/lthemeengine/mainwindow.h | 57 +++ .../src/lthemeengine/mainwindow.ui | 47 +++ .../src/lthemeengine/paletteeditdialog.cpp | 146 +++++++ .../src/lthemeengine/paletteeditdialog.h | 68 ++++ .../src/lthemeengine/paletteeditdialog.ui | 120 ++++++ .../src/lthemeengine/previewform.ui | 76 ++++ .../src/lthemeengine/qsseditordialog.cpp | 85 +++++ .../src/lthemeengine/qsseditordialog.h | 59 +++ .../src/lthemeengine/qsseditordialog.ui | 47 +++ .../src/lthemeengine/qsspage.cpp | 232 ++++++++++++ .../lumina-theme-engine/src/lthemeengine/qsspage.h | 66 ++++ .../src/lthemeengine/qsspage.ui | 84 +++++ .../lumina-theme-engine/src/lthemeengine/qt5ct.cpp | 115 ++++++ .../src/lthemeengine/qt5ct.desktop | 60 +++ .../lumina-theme-engine/src/lthemeengine/qt5ct.h | 60 +++ .../lumina-theme-engine/src/lthemeengine/qt5ct.pro | 57 +++ .../src/lthemeengine/tabpage.cpp | 33 ++ .../lumina-theme-engine/src/lthemeengine/tabpage.h | 43 +++ 45 files changed, 4665 insertions(+) create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/main.cpp create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/qt5ct-qtplugin.pro create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/qt5ct.json create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/qt5ctplatformtheme.cpp create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/qt5ctplatformtheme.h create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine-style/plugin.cpp create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine-style/qt5ct-style.pro create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine-style/qt5ct.json create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine-style/qt5ctproxystyle.cpp create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine-style/qt5ctproxystyle.h create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/appearancepage.cpp create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/appearancepage.h create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/appearancepage.ui create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/fontconfigdialog.cpp create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/fontconfigdialog.h create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/fontconfigdialog.ui create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/fontspage.cpp create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/fontspage.h create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/fontspage.ui create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/iconthemepage.cpp create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/iconthemepage.h create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/iconthemepage.ui create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/interfacepage.cpp create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/interfacepage.h create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/interfacepage.ui create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/main.cpp create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/mainwindow.cpp create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/mainwindow.h create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/mainwindow.ui create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/paletteeditdialog.cpp create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/paletteeditdialog.h create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/paletteeditdialog.ui create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/previewform.ui create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/qsseditordialog.cpp create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/qsseditordialog.h create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/qsseditordialog.ui create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.cpp create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.h create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.ui create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/qt5ct.cpp create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/qt5ct.desktop create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/qt5ct.h create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/qt5ct.pro create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/tabpage.cpp create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/tabpage.h (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/main.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/main.cpp new file mode 100644 index 00000000..e49004d8 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/main.cpp @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include "qt5ctplatformtheme.h" + +QT_BEGIN_NAMESPACE + +class Qt5CTPlatformThemePlugin: public QPlatformThemePlugin +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QPA.QPlatformThemeFactoryInterface.5.1" FILE "qt5ct.json") +public: + QPlatformTheme *create(const QString &key, const QStringList ¶ms); +}; + +QPlatformTheme *Qt5CTPlatformThemePlugin::create(const QString &key, const QStringList ¶ms) +{ + Q_UNUSED(params); + if (key.toLower() == "qt5ct") + return new Qt5CTPlatformTheme(); + return NULL; +} + +QT_END_NAMESPACE + +#include "main.moc" diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/qt5ct-qtplugin.pro b/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/qt5ct-qtplugin.pro new file mode 100644 index 00000000..9dd3eae4 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/qt5ct-qtplugin.pro @@ -0,0 +1,35 @@ +include(../../qt5ct.pri) + +TEMPLATE = lib +TARGET = qt5ct +CONFIG += plugin + +greaterThan(QT_MINOR_VERSION, 7) { + QT += gui-private theme_support-private +} else { + QT += gui-private platformsupport-private +} + +!contains(DEFINES, QT_NO_DBUS):greaterThan(QT_MINOR_VERSION, 5) { + QT += dbus +} + +SOURCES += \ + main.cpp \ + qt5ctplatformtheme.cpp \ + ../qt5ct/qt5ct.cpp + +!equals (DISABLE_WIDGETS,1) { + QT += widgets +} + +OTHER_FILES += qt5ct.json + +INCLUDEPATH += ../ + +HEADERS += \ + qt5ctplatformtheme.h \ + ../qt5ct/qt5ct.h + +target.path = $$PLUGINDIR/platformthemes +INSTALLS += target diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/qt5ct.json b/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/qt5ct.json new file mode 100644 index 00000000..55466151 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/qt5ct.json @@ -0,0 +1,3 @@ +{ + "Keys": [ "qt5ct" ] +} diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/qt5ctplatformtheme.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/qt5ctplatformtheme.cpp new file mode 100644 index 00000000..4c20d68f --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/qt5ctplatformtheme.cpp @@ -0,0 +1,366 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifdef QT_WIDGETS_LIB +#include +#include +#include +#include +#endif +#include +#include + +#include +#include "qt5ctplatformtheme.h" +#if (QT_VERSION >= QT_VERSION_CHECK(5, 7, 0)) && !defined(QT_NO_DBUS) +#include +#endif +#if !defined(QT_NO_DBUS) && !defined(QT_NO_SYSTEMTRAYICON) +#include +#include +#endif + + + +Q_LOGGING_CATEGORY(lqt5ct, "qt5ct") + +//QT_QPA_PLATFORMTHEME=qt5ct + +Qt5CTPlatformTheme::Qt5CTPlatformTheme() +{ + if(QGuiApplication::desktopSettingsAware()) + { + readSettings(); + QMetaObject::invokeMethod(this, "applySettings", Qt::QueuedConnection); +#ifdef QT_WIDGETS_LIB + QMetaObject::invokeMethod(this, "createFSWatcher", Qt::QueuedConnection); +#endif + QGuiApplication::setFont(m_generalFont); + } + qCDebug(lqt5ct) << "using qt5ct plugin"; +#ifdef QT_WIDGETS_LIB + if(!QStyleFactory::keys().contains("qt5ct-style")) + qCCritical(lqt5ct) << "unable to find qt5ct proxy style"; +#endif +} + +Qt5CTPlatformTheme::~Qt5CTPlatformTheme() +{ + if(m_customPalette) + delete m_customPalette; +} + +#if (QT_VERSION >= QT_VERSION_CHECK(5, 7, 0)) && !defined(QT_NO_DBUS) +QPlatformMenuBar *Qt5CTPlatformTheme::createPlatformMenuBar() const +{ + if(m_checkDBusGlobalMenu) + { + QDBusConnection conn = QDBusConnection::sessionBus(); + m_dbusGlobalMenuAvailable = conn.interface()->isServiceRegistered("com.canonical.AppMenu.Registrar"); + qCDebug(lqt5ct) << "D-Bus global menu:" << (m_dbusGlobalMenuAvailable ? "yes" : "no"); + } + return (m_dbusGlobalMenuAvailable ? new QDBusMenuBar() : nullptr); +} +#endif + +#if !defined(QT_NO_DBUS) && !defined(QT_NO_SYSTEMTRAYICON) +QPlatformSystemTrayIcon *Qt5CTPlatformTheme::createPlatformSystemTrayIcon() const +{ + if(m_checkDBusTray) + { + QDBusMenuConnection conn; + m_dbusTrayAvailable = conn.isStatusNotifierHostRegistered(); + m_checkDBusTray = false; + qCDebug(lqt5ct) << "D-Bus system tray:" << (m_dbusTrayAvailable ? "yes" : "no"); + } + return (m_dbusTrayAvailable ? new QDBusTrayIcon() : nullptr); +} +#endif + +const QPalette *Qt5CTPlatformTheme::palette(QPlatformTheme::Palette type) const +{ + Q_UNUSED(type); + return (m_usePalette ? m_customPalette : nullptr); +} + +const QFont *Qt5CTPlatformTheme::font(QPlatformTheme::Font type) const +{ + if(type == QPlatformTheme::FixedFont) + return &m_fixedFont; + return &m_generalFont; +} + +QVariant Qt5CTPlatformTheme::themeHint(QPlatformTheme::ThemeHint hint) const +{ + switch (hint) + { + case QPlatformTheme::CursorFlashTime: + return m_cursorFlashTime; + case MouseDoubleClickInterval: + return m_doubleClickInterval; + case QPlatformTheme::ToolButtonStyle: + return m_toolButtonStyle; + case QPlatformTheme::SystemIconThemeName: + return m_iconTheme; + case QPlatformTheme::StyleNames: + return QStringList() << "qt5ct-style"; + case QPlatformTheme::IconThemeSearchPaths: + return Qt5CT::iconPaths(); + case DialogButtonBoxLayout: + return m_buttonBoxLayout; + case QPlatformTheme::UiEffects: + return m_uiEffects; +#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) + case QPlatformTheme::WheelScrollLines: + return m_wheelScrollLines; +#endif + default: + return QPlatformTheme::themeHint(hint); + } +} + +void Qt5CTPlatformTheme::applySettings() +{ + if(!QGuiApplication::desktopSettingsAware()) + return; + +#if (QT_VERSION >= QT_VERSION_CHECK(5, 5, 0)) + if(!m_update) + { + //do not override application palette + if(QCoreApplication::testAttribute(Qt::AA_SetPalette)) + { + m_usePalette = false; + qCDebug(lqt5ct) << "palette support is disabled"; + } + } +#endif + +#ifdef QT_WIDGETS_LIB + if(hasWidgets()) + { + qApp->setFont(m_generalFont); + + //Qt 5.6 or higher should be use themeHint function on application startup. + //So, there is no need to call this function first time. +#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) + if(m_update) + qApp->setWheelScrollLines(m_wheelScrollLines); +#else + qApp->setWheelScrollLines(m_wheelScrollLines); +#endif + + if(m_update && qApp->style()->objectName() == "qt5ct-style") //ignore application style + qApp->setStyle("qt5ct-style"); //recreate style object + + if(m_update && m_usePalette) + { + if(m_customPalette) + qApp->setPalette(*m_customPalette); + else + qApp->setPalette(qApp->style()->standardPalette()); + } + + //do not override application style + if(m_prevStyleSheet == qApp->styleSheet()) + qApp->setStyleSheet(m_userStyleSheet); + else + qCDebug(lqt5ct) << "custom style sheet is disabled"; + m_prevStyleSheet = m_userStyleSheet; + } +#endif + QGuiApplication::setFont(m_generalFont); //apply font + QIcon::setThemeName(m_iconTheme); //apply icons + if(m_customPalette && m_usePalette) + QGuiApplication::setPalette(*m_customPalette); //apply palette + +#ifdef QT_WIDGETS_LIB + if(hasWidgets()) + { + foreach (QWidget *w, qApp->allWidgets()) + { + QEvent e(QEvent::ThemeChange); + QApplication::sendEvent(w, &e); + } + } +#endif + + if(!m_update) + m_update = true; +} + +#ifdef QT_WIDGETS_LIB +void Qt5CTPlatformTheme::createFSWatcher() +{ + QFileSystemWatcher *watcher = new QFileSystemWatcher(this); + watcher->addPath(Qt5CT::configPath()); + + QTimer *timer = new QTimer(this); + timer->setSingleShot(true); + timer->setInterval(3000); + connect(watcher, SIGNAL(directoryChanged(QString)), timer, SLOT(start())); + connect(timer, SIGNAL(timeout()), SLOT(updateSettings())); +} + +void Qt5CTPlatformTheme::updateSettings() +{ + qCDebug(lqt5ct) << "updating settings.."; + readSettings(); + applySettings(); +} +#endif + +void Qt5CTPlatformTheme::readSettings() +{ + if(m_customPalette) + { + delete m_customPalette; + m_customPalette = 0; + } + + QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + + settings.beginGroup("Appearance"); + m_style = settings.value("style", "Fusion").toString(); + if(settings.value("custom_palette", false).toBool()) + { + QString schemePath = settings.value("color_scheme_path").toString(); + m_customPalette = new QPalette(loadColorScheme(schemePath)); + } + m_iconTheme = settings.value("icon_theme").toString(); + settings.endGroup(); + + settings.beginGroup("Fonts"); + m_generalFont = settings.value("general", QPlatformTheme::font(QPlatformTheme::SystemFont)).value(); + m_fixedFont = settings.value("fixed", QPlatformTheme::font(QPlatformTheme::FixedFont)).value(); + settings.endGroup(); + + settings.beginGroup("Interface"); + m_doubleClickInterval = QPlatformTheme::themeHint(QPlatformTheme::MouseDoubleClickInterval).toInt(); + m_doubleClickInterval = settings.value("double_click_interval", m_doubleClickInterval).toInt(); + m_cursorFlashTime = QPlatformTheme::themeHint(QPlatformTheme::CursorFlashTime).toInt(); + m_cursorFlashTime = settings.value("cursor_flash_time", m_cursorFlashTime).toInt(); + m_buttonBoxLayout = QPlatformTheme::themeHint(QPlatformTheme::DialogButtonBoxLayout).toInt(); + m_buttonBoxLayout = settings.value("buttonbox_layout", m_buttonBoxLayout).toInt(); + QCoreApplication::setAttribute(Qt::AA_DontShowIconsInMenus, !settings.value("menus_have_icons", true).toBool()); + m_toolButtonStyle = settings.value("toolbutton_style", Qt::ToolButtonFollowStyle).toInt(); + m_wheelScrollLines = settings.value("wheel_scroll_lines", 3).toInt(); + + //load effects + m_uiEffects = QPlatformTheme::themeHint(QPlatformTheme::UiEffects).toInt(); + if(settings.childKeys().contains("gui_effects")) + { + QStringList effectList = settings.value("gui_effects").toStringList(); + m_uiEffects = 0; + if(effectList.contains("General")) + m_uiEffects |= QPlatformTheme::GeneralUiEffect; + if(effectList.contains("AnimateMenu")) + m_uiEffects |= QPlatformTheme::AnimateMenuUiEffect; + if(effectList.contains("FadeMenu")) + m_uiEffects |= QPlatformTheme::FadeMenuUiEffect; + if(effectList.contains("AnimateCombo")) + m_uiEffects |= QPlatformTheme::AnimateComboUiEffect; + if(effectList.contains("AnimateTooltip")) + m_uiEffects |= QPlatformTheme::AnimateTooltipUiEffect; + if(effectList.contains("FadeTooltip")) + m_uiEffects |= QPlatformTheme::FadeTooltipUiEffect; + if(effectList.contains("AnimateToolBox")) + m_uiEffects |= QPlatformTheme::AnimateToolBoxUiEffect; + } + + //load style sheets +#ifdef QT_WIDGETS_LIB + QStringList qssPaths = settings.value("stylesheets").toStringList(); + m_userStyleSheet = loadStyleSheets(qssPaths); +#endif + settings.endGroup(); +} + +#ifdef QT_WIDGETS_LIB +bool Qt5CTPlatformTheme::hasWidgets() +{ + return qobject_cast (qApp) != nullptr; +} +#endif + +QString Qt5CTPlatformTheme::loadStyleSheets(const QStringList &paths) +{ + QString content; + foreach (QString path, paths) + { + if(!QFile::exists(path)) + continue; + + QFile file(path); + file.open(QIODevice::ReadOnly); + content.append(file.readAll()); + } + QRegExp regExp("//.*(\\n|$)"); + regExp.setMinimal(true); + content.remove(regExp); + return content; +} + +QPalette Qt5CTPlatformTheme::loadColorScheme(const QString &filePath) +{ + QPalette customPalette; + QSettings settings(filePath, QSettings::IniFormat); + settings.beginGroup("ColorScheme"); + QStringList activeColors = settings.value("active_colors").toStringList(); + QStringList inactiveColors = settings.value("inactive_colors").toStringList(); + QStringList disabledColors = settings.value("disabled_colors").toStringList(); + settings.endGroup(); + + if(activeColors.count() == QPalette::NColorRoles && + inactiveColors.count() == QPalette::NColorRoles && + disabledColors.count() == QPalette::NColorRoles) + { + for (int i = 0; i < QPalette::NColorRoles; i++) + { + QPalette::ColorRole role = QPalette::ColorRole(i); + customPalette.setColor(QPalette::Active, role, QColor(activeColors.at(i))); + customPalette.setColor(QPalette::Inactive, role, QColor(inactiveColors.at(i))); + customPalette.setColor(QPalette::Disabled, role, QColor(disabledColors.at(i))); + } + } + else + { + customPalette = *QPlatformTheme::palette(SystemPalette); //load fallback palette + } + + return customPalette; +} diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/qt5ctplatformtheme.h b/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/qt5ctplatformtheme.h new file mode 100644 index 00000000..8eb3cf6a --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/qt5ctplatformtheme.h @@ -0,0 +1,122 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef QT5CTPLATFORMTHEME_H +#define QT5CTPLATFORMTHEME_H + +#include +#include +#include +#include +#include + +#if (QT_VERSION < QT_VERSION_CHECK(5, 5, 0)) +#ifndef QT_NO_SYSTEMTRAYICON +#define QT_NO_SYSTEMTRAYICON +#endif +#endif + +class QPalette; +#if !defined(QT_NO_DBUS) && !defined(QT_NO_SYSTEMTRAYICON) +class QPlatformSystemTrayIcon; +#endif + +#if (QT_VERSION >= QT_VERSION_CHECK(5, 7, 0)) && !defined(QT_NO_DBUS) +class QPlatformMenuBar; +#endif + +class Qt5CTPlatformTheme : public QObject, public QPlatformTheme +{ + Q_OBJECT +public: + Qt5CTPlatformTheme(); + + virtual ~Qt5CTPlatformTheme(); + + + //virtual QPlatformMenuItem* createPlatformMenuItem() const; + //virtual QPlatformMenu* createPlatformMenu() const; +#if (QT_VERSION >= QT_VERSION_CHECK(5, 7, 0)) && !defined(QT_NO_DBUS) + virtual QPlatformMenuBar* createPlatformMenuBar() const; +#endif + //virtual void showPlatformMenuBar() {} + //virtual bool usePlatformNativeDialog(DialogType type) const; + //virtual QPlatformDialogHelper *createPlatformDialogHelper(DialogType type) const; +#if !defined(QT_NO_DBUS) && !defined(QT_NO_SYSTEMTRAYICON) + virtual QPlatformSystemTrayIcon *createPlatformSystemTrayIcon() const; +#endif + virtual const QPalette *palette(Palette type = SystemPalette) const; + virtual const QFont *font(Font type = SystemFont) const; + virtual QVariant themeHint(ThemeHint hint) const; + //virtual QPixmap standardPixmap(StandardPixmap sp, const QSizeF &size) const; + //virtual QPixmap fileIconPixmap(const QFileInfo &fileInfo, const QSizeF &size, + // QPlatformTheme::IconOptions iconOptions = 0) const; + + //virtual QIconEngine *createIconEngine(const QString &iconName) const; + //virtual QList keyBindings(QKeySequence::StandardKey key) const; + //virtual QString standardButtonText(int button) const; + +private slots: + void applySettings(); +#ifdef QT_WIDGETS_LIB + void createFSWatcher(); + void updateSettings(); +#endif + +private: + void readSettings(); +#ifdef QT_WIDGETS_LIB + bool hasWidgets(); +#endif + QString loadStyleSheets(const QStringList &paths); + QPalette loadColorScheme(const QString &filePath); + QString m_style, m_iconTheme, m_userStyleSheet, m_prevStyleSheet; + QPalette *m_customPalette = nullptr; + QFont m_generalFont, m_fixedFont; + int m_doubleClickInterval; + int m_cursorFlashTime; + int m_uiEffects; + int m_buttonBoxLayout; + bool m_update = false; + bool m_usePalette = true; + int m_toolButtonStyle = Qt::ToolButtonFollowStyle; + int m_wheelScrollLines = 3; +#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) && !defined(QT_NO_DBUS) + mutable bool m_dbusGlobalMenuAvailable = false; + mutable bool m_checkDBusGlobalMenu = true; +#endif +#if !defined(QT_NO_DBUS) && !defined(QT_NO_SYSTEMTRAYICON) + mutable bool m_dbusTrayAvailable = false; + mutable bool m_checkDBusTray = true; +#endif + +}; + +Q_DECLARE_LOGGING_CATEGORY(lqt5ct) + +#endif // QT5CTPLATFORMTHEME_H diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/plugin.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/plugin.cpp new file mode 100644 index 00000000..345746f3 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/plugin.cpp @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include "qt5ctproxystyle.h" + +class Qt5CTStylePlugin : public QStylePlugin +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QStyleFactoryInterface" FILE "qt5ct.json") + +public: + QStyle *create(const QString &key); +}; + +QStyle *Qt5CTStylePlugin::create(const QString &key) +{ + if (key == "qt5ct-style") + { + QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + QString style = settings.value("Appearance/style", "Fusion").toString(); + if(key == style || !QStyleFactory::keys().contains(style)) + style = "Fusion"; + return new Qt5CTProxyStyle(style); + } + return 0; +} + +#include "plugin.moc" diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/qt5ct-style.pro b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/qt5ct-style.pro new file mode 100644 index 00000000..e6f6dc1c --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/qt5ct-style.pro @@ -0,0 +1,26 @@ +include(../../qt5ct.pri) + +TEMPLATE = lib +TARGET = qt5ct-style +QT += widgets + +# Input + +CONFIG += plugin + +target.path = $$PLUGINDIR/styles +INSTALLS += target + +INCLUDEPATH += ../ + +HEADERS += \ + qt5ctproxystyle.h \ + ../qt5ct/qt5ct.h + +SOURCES += \ + plugin.cpp \ + qt5ctproxystyle.cpp \ + ../qt5ct/qt5ct.cpp + +OTHER_FILES += \ + qt5ct.json diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/qt5ct.json b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/qt5ct.json new file mode 100644 index 00000000..3c42f2d3 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/qt5ct.json @@ -0,0 +1,3 @@ +{ + "Keys": [ "qt5ct-style" ] +} diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/qt5ctproxystyle.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/qt5ctproxystyle.cpp new file mode 100644 index 00000000..f3b33d5e --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/qt5ctproxystyle.cpp @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include "qt5ctproxystyle.h" + +Qt5CTProxyStyle::Qt5CTProxyStyle(const QString &key) : + QProxyStyle(key) +{ + QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + m_dialogButtonsHaveIcons = settings.value("Interface/dialog_buttons_have_icons", Qt::PartiallyChecked).toInt(); + m_activateItemOnSingleClick = settings.value("Interface/activate_item_on_single_click", Qt::PartiallyChecked).toInt(); +} + +Qt5CTProxyStyle::~Qt5CTProxyStyle() +{ + //qDebug("%s", Q_FUNC_INFO); +} + +int Qt5CTProxyStyle::styleHint(QStyle::StyleHint hint, const QStyleOption *option, const QWidget *widget, QStyleHintReturn *returnData) const +{ + if(hint == QStyle::SH_DialogButtonBox_ButtonsHaveIcons) + { + if(m_dialogButtonsHaveIcons == Qt::Unchecked) + return 0; + else if(m_dialogButtonsHaveIcons == Qt::Checked) + return 1; + } + else if(hint == QStyle::QStyle::SH_ItemView_ActivateItemOnSingleClick) + { + if(m_activateItemOnSingleClick == Qt::Unchecked) + return 0; + else if(m_activateItemOnSingleClick == Qt::Checked) + return 1; + } + return QProxyStyle::styleHint(hint, option, widget, returnData); +} diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/qt5ctproxystyle.h b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/qt5ctproxystyle.h new file mode 100644 index 00000000..842247cf --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/qt5ctproxystyle.h @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef QT5CTPROXYSTYLE_H +#define QT5CTPROXYSTYLE_H + +#include + +class Qt5CTProxyStyle : public QProxyStyle +{ + Q_OBJECT +public: + explicit Qt5CTProxyStyle(const QString &key); + + virtual ~Qt5CTProxyStyle(); + + int styleHint(StyleHint hint, const QStyleOption *option, const QWidget *widget, QStyleHintReturn *returnData) const; + +private: + int m_dialogButtonsHaveIcons; + int m_activateItemOnSingleClick; + +}; + +#endif // QT5CTPROXYSTYLE_H diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/appearancepage.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/appearancepage.cpp new file mode 100644 index 00000000..4183dec1 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/appearancepage.cpp @@ -0,0 +1,418 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include "qt5ct.h" +#include "appearancepage.h" +#include "paletteeditdialog.h" +#include "ui_appearancepage.h" +#include "ui_previewform.h" + +AppearancePage::AppearancePage(QWidget *parent) : + TabPage(parent), + m_ui(new Ui::AppearancePage) +{ + m_ui->setupUi(this); + QStringList keys = QStyleFactory::keys(); + keys.removeAll("qt5ct-style"); //hide qt5ct proxy style + m_ui->styleComboBox->addItems(keys); + + connect(m_ui->paletteComboBox, SIGNAL(activated(int)), SLOT(updatePalette())); + connect(m_ui->customPaletteButton, SIGNAL(clicked()), SLOT(updatePalette())); + connect(m_ui->defaultPaletteButton, SIGNAL(clicked()), SLOT(updatePalette())); + + m_previewWidget = new QWidget(this); + m_previewUi = new Ui::PreviewForm(); + m_previewUi->setupUi(m_previewWidget); + QMdiSubWindow *w = m_ui->mdiArea->addSubWindow(m_previewWidget, Qt::CustomizeWindowHint + | Qt::WindowMinMaxButtonsHint + | Qt::WindowTitleHint); + w->move(10, 10); + + QMenu *menu = new QMenu(this); + menu->addAction(QIcon::fromTheme("list-add"), tr("Create"), this, SLOT(createColorScheme())); + m_changeColorSchemeAction = menu->addAction(tr("Edit"), this, SLOT(changeColorScheme())); + menu->addAction(tr("Create a Copy"), this, SLOT(copyColorScheme())); + m_renameColorSchemeAction = menu->addAction(tr("Rename"), this, SLOT(renameColorScheme())); + menu->addSeparator(); + m_removeColorSchemeAction = menu->addAction(tr("Remove"), this, SLOT(removeColorScheme())); + m_ui->colorSchemeButton->setMenu(menu); + + m_changeColorSchemeAction->setIcon(QIcon::fromTheme("accessories-text-editor")); + m_removeColorSchemeAction->setIcon(QIcon::fromTheme("list-remove")); + connect(menu, SIGNAL(aboutToShow()), SLOT(updateActions())); + + readSettings(); +} + +AppearancePage::~AppearancePage() +{ + if(m_selectedStyle) + delete m_selectedStyle; + delete m_ui; + delete m_previewUi; +} + +void AppearancePage::writeSettings() +{ + QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + settings.beginGroup("Appearance"); + settings.setValue("style", m_ui->styleComboBox->currentText()); + settings.setValue("custom_palette", m_ui->customPaletteButton->isChecked()); + settings.setValue("color_scheme_path", m_ui->colorSchemeComboBox->currentData().toString()); + settings.endGroup(); +} + +void AppearancePage::on_styleComboBox_activated(const QString &text) +{ + QStyle *style = QStyleFactory::create(text); + if(!style) + return; + setStyle(m_previewWidget, style); + + if(m_selectedStyle) + delete m_selectedStyle; + m_selectedStyle = style; + + updatePalette(); +} + +void AppearancePage::on_colorSchemeComboBox_activated(int) +{ + m_customPalette = loadColorScheme(m_ui->colorSchemeComboBox->currentData().toString()); + updatePalette(); +} + +void AppearancePage::createColorScheme() +{ + QString name = QInputDialog::getText(this, tr("Enter Color Scheme Name"), tr("File name:")); + if(name.isEmpty()) + return; + + if(!name.endsWith(".conf", Qt::CaseInsensitive)) + name.append(".conf"); + + if(m_ui->colorSchemeComboBox->findText(name.section('.',0,0)) != -1) + { + QMessageBox::warning(this, tr("Error"), tr("The color scheme \"%1\" already exists") + .arg(name.section('.',0,0))); + return; + } + + QString schemePath = Qt5CT::userColorSchemePath() + "/" + name; + + createColorScheme(schemePath, palette()); + m_ui->colorSchemeComboBox->addItem(name.section('.',0,0), schemePath); +} + +void AppearancePage::changeColorScheme() +{ + if(m_ui->colorSchemeComboBox->currentIndex() < 0) + return; + + if(!QFileInfo(m_ui->colorSchemeComboBox->currentData().toString()).isWritable()) + { + QMessageBox::information(this, tr("Warning"), tr("The color scheme \"%1\" is read only") + .arg(m_ui->colorSchemeComboBox->currentText())); + return; + } + + PaletteEditDialog d(m_customPalette, m_selectedStyle, this); + connect(&d, SIGNAL(paletteChanged(QPalette)), SLOT(setPreviewPalette(QPalette))); + if(d.exec() == QDialog::Accepted) + { + m_customPalette = d.selectedPalette(); + createColorScheme(m_ui->colorSchemeComboBox->currentData().toString(), m_customPalette); + } + updatePalette(); +} + +void AppearancePage::removeColorScheme() +{ + int index = m_ui->colorSchemeComboBox->currentIndex(); + if(index < 0 || m_ui->colorSchemeComboBox->count() <= 1) + return; + + if(!QFileInfo(m_ui->colorSchemeComboBox->currentData().toString()).isWritable()) + { + QMessageBox::information(this, tr("Warning"), tr("The color scheme \"%1\" is read only") + .arg(m_ui->colorSchemeComboBox->currentText())); + return; + } + + int button = QMessageBox::question(this, tr("Confirm Remove"), + tr("Are you sure you want to remove color scheme \"%1\"?") + .arg(m_ui->colorSchemeComboBox->currentText()), + QMessageBox::Yes | QMessageBox::No); + if(button != QMessageBox::Yes) + return; + + if(QFile::remove(m_ui->colorSchemeComboBox->currentData().toString())) + { + m_ui->colorSchemeComboBox->removeItem(index); + on_colorSchemeComboBox_activated(0); + } +} + +void AppearancePage::copyColorScheme() +{ + if(m_ui->colorSchemeComboBox->currentIndex() < 0) + return; + + QString name = QInputDialog::getText(this, tr("Enter Color Scheme Name"), tr("File name:"), + QLineEdit::Normal, + tr("%1 (copy)").arg(m_ui->colorSchemeComboBox->currentText())); + if(name.isEmpty() || name == m_ui->colorSchemeComboBox->currentText()) + return; + + if(!name.endsWith(".conf", Qt::CaseInsensitive)) + name.append(".conf"); + + if(m_ui->colorSchemeComboBox->findText(name.section('.',0,0)) != -1) + { + QMessageBox::warning(this, tr("Error"), tr("The color scheme \"%1\" already exists") + .arg(name.section('.',0,0))); + return; + } + + QString newPath = Qt5CT::userColorSchemePath() + "/" + name; + QFile::copy(m_ui->colorSchemeComboBox->currentData().toString(), newPath); + m_ui->colorSchemeComboBox->addItem(name.section('.',0,0), newPath); +} + +void AppearancePage::renameColorScheme() +{ + int index = m_ui->colorSchemeComboBox->currentIndex(); + + if(index < 0) + return; + + if(!QFileInfo(m_ui->colorSchemeComboBox->currentData().toString()).isWritable()) + { + QMessageBox::information(this, tr("Warning"), tr("The color scheme \"%1\" is read only") + .arg(m_ui->colorSchemeComboBox->currentText())); + return; + } + + QString name = QInputDialog::getText(this, tr("Enter Color Scheme Name"), tr("File name:"), + QLineEdit::Normal, m_ui->colorSchemeComboBox->currentText()); + if(name.isEmpty() || name == m_ui->colorSchemeComboBox->currentText()) + return; + + if(!name.endsWith(".conf", Qt::CaseInsensitive)) + name.append(".conf"); + + if(m_ui->colorSchemeComboBox->findText(name.section('.',0,0)) != -1) + { + QMessageBox::warning(this, tr("Error"), tr("The color scheme \"%1\" already exists") + .arg(name.section('.',0,0))); + return; + } + + QString newPath = Qt5CT::userColorSchemePath() + "/" + name; + QFile::rename(m_ui->colorSchemeComboBox->currentData().toString(), newPath); + m_ui->colorSchemeComboBox->setItemText(index, name.section('.',0,0)); + m_ui->colorSchemeComboBox->setItemData(index, newPath); +} + +void AppearancePage::updatePalette() +{ + if(!m_selectedStyle) + return; + + setPreviewPalette(m_ui->customPaletteButton->isChecked() ? + m_customPalette : m_selectedStyle->standardPalette()); +} + +void AppearancePage::setPreviewPalette(const QPalette &p) +{ + QPalette previewPalette = palette(); + + QPalette::ColorGroup colorGroup = QPalette::Disabled; + + if(m_ui->paletteComboBox->currentIndex() == 0) + { + colorGroup = QPalette::Active; + } + else if(m_ui->paletteComboBox->currentIndex() == 1) + { + colorGroup = QPalette::Inactive; + } + + for (int i = 0; i < QPalette::NColorRoles; i++) + { + QPalette::ColorRole role = QPalette::ColorRole(i); + previewPalette.setColor(QPalette::Active, role, p.color(colorGroup, role)); + previewPalette.setColor(QPalette::Inactive, role, p.color(colorGroup, role)); + } + + setPalette(m_ui->mdiArea, previewPalette); +} + +void AppearancePage::updateActions() +{ + if(m_ui->colorSchemeComboBox->count() == 0 || + !QFileInfo(m_ui->colorSchemeComboBox->currentData().toString()).isWritable()) + { + m_changeColorSchemeAction->setVisible(false); + m_renameColorSchemeAction->setVisible(false); + m_removeColorSchemeAction->setVisible(false); + } + else + { + m_changeColorSchemeAction->setVisible(true); + m_renameColorSchemeAction->setVisible(true); + m_removeColorSchemeAction->setVisible(m_ui->colorSchemeComboBox->count() > 1); + } +} + +void AppearancePage::readSettings() +{ + QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + settings.beginGroup("Appearance"); + QString style = settings.value("style", "Fusion").toString(); + m_ui->styleComboBox->setCurrentText(style); + + m_ui->customPaletteButton->setChecked(settings.value("custom_palette", false).toBool()); + QString colorSchemePath = settings.value("color_scheme_path").toString(); + + QDir("/").mkpath(Qt5CT::userColorSchemePath()); + findColorSchemes(Qt5CT::userColorSchemePath()); + findColorSchemes(Qt5CT::sharedColorSchemePath()); + + if(m_ui->colorSchemeComboBox->count() == 0) + { + m_customPalette = palette(); //load fallback palette + } + else + { + int index = m_ui->colorSchemeComboBox->findData(colorSchemePath); + if(index >= 0) + m_ui->colorSchemeComboBox->setCurrentIndex(index); + m_customPalette = loadColorScheme(m_ui->colorSchemeComboBox->currentData().toString()); + } + + on_styleComboBox_activated(m_ui->styleComboBox->currentText()); + + settings.endGroup(); +} + +void AppearancePage::setStyle(QWidget *w, QStyle *s) +{ + foreach (QObject *o, w->children()) + { + if(o->isWidgetType()) + { + setStyle(qobject_cast(o), s); + } + } + w->setStyle(s); +} + +void AppearancePage::setPalette(QWidget *w, QPalette p) +{ + foreach (QObject *o, w->children()) + { + if(o->isWidgetType()) + { + setPalette(qobject_cast(o), p); + } + } + w->setPalette(p); +} + +void AppearancePage::findColorSchemes(const QString &path) +{ + QDir dir(path); + dir.setFilter(QDir::Files); + dir.setNameFilters(QStringList() << "*.conf"); + + foreach (QFileInfo info, dir.entryInfoList()) + { + m_ui->colorSchemeComboBox->addItem(info.baseName(), info.filePath()); + } +} + +QPalette AppearancePage::loadColorScheme(const QString &filePath) +{ + QPalette customPalette; + QSettings settings(filePath, QSettings::IniFormat); + settings.beginGroup("ColorScheme"); + QStringList activeColors = settings.value("active_colors").toStringList(); + QStringList inactiveColors = settings.value("inactive_colors").toStringList(); + QStringList disabledColors = settings.value("disabled_colors").toStringList(); + settings.endGroup(); + + if(activeColors.count() == QPalette::NColorRoles && + inactiveColors.count() == QPalette::NColorRoles && + disabledColors.count() == QPalette::NColorRoles) + { + for (int i = 0; i < QPalette::NColorRoles; i++) + { + QPalette::ColorRole role = QPalette::ColorRole(i); + customPalette.setColor(QPalette::Active, role, QColor(activeColors.at(i))); + customPalette.setColor(QPalette::Inactive, role, QColor(inactiveColors.at(i))); + customPalette.setColor(QPalette::Disabled, role, QColor(disabledColors.at(i))); + } + } + else + { + customPalette = palette(); //load fallback palette + } + + return customPalette; +} + +void AppearancePage::createColorScheme(const QString &name, const QPalette &palette) +{ + QSettings settings(name, QSettings::IniFormat); + settings.beginGroup("ColorScheme"); + + QStringList activeColors, inactiveColors, disabledColors; + for (int i = 0; i < QPalette::NColorRoles; i++) + { + QPalette::ColorRole role = QPalette::ColorRole(i); + activeColors << palette.color(QPalette::Active, role).name(); + inactiveColors << palette.color(QPalette::Inactive, role).name(); + disabledColors << palette.color(QPalette::Disabled, role).name(); + } + + settings.setValue("active_colors",activeColors); + settings.setValue("inactive_colors",inactiveColors); + settings.setValue("disabled_colors",disabledColors); + + settings.endGroup(); + +} diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/appearancepage.h b/src-qt5/core/lumina-theme-engine/src/lthemeengine/appearancepage.h new file mode 100644 index 00000000..3a7752c7 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/appearancepage.h @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef APPEARANCEPAGE_H +#define APPEARANCEPAGE_H + +#include "tabpage.h" + +namespace Ui { +class AppearancePage; +class PreviewForm; +} + +class QStyle; +class QAction; + +class AppearancePage : public TabPage +{ + Q_OBJECT + +public: + explicit AppearancePage(QWidget *parent = 0); + ~AppearancePage(); + + void writeSettings(); + +private slots: + void on_styleComboBox_activated(const QString &text); + void on_colorSchemeComboBox_activated(int); + void createColorScheme(); + void changeColorScheme(); + void removeColorScheme(); + void copyColorScheme(); + void renameColorScheme(); + void updatePalette(); + void setPreviewPalette(const QPalette &p); + void updateActions(); + +private: + void readSettings(); + void setStyle(QWidget *w, QStyle *s); + void setPalette(QWidget *w, QPalette p); + void findColorSchemes(const QString &path); + QPalette loadColorScheme(const QString &filePath); + void createColorScheme(const QString &name, const QPalette &palette); + Ui::AppearancePage *m_ui; + QStyle *m_selectedStyle = nullptr; + QPalette m_customPalette; + QWidget *m_previewWidget; + QAction *m_changeColorSchemeAction, *m_renameColorSchemeAction, *m_removeColorSchemeAction; + Ui::PreviewForm *m_previewUi; +}; + +#endif // APPEARANCEPAGE_H diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/appearancepage.ui b/src-qt5/core/lumina-theme-engine/src/lthemeengine/appearancepage.ui new file mode 100644 index 00000000..cd442930 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/appearancepage.ui @@ -0,0 +1,243 @@ + + + AppearancePage + + + + 0 + 0 + 596 + 470 + + + + Form + + + + + + Style: + + + + + + + Preview + + + + + + + Active palette + + + + + Inactive palette + + + + + Disabled palette + + + + + + + + Qt::Horizontal + + + + 82 + 20 + + + + + + + + false + + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Palette + + + + + + 6 + + + + + Default + + + true + + + + + + + Custom + + + + + + + Qt::Horizontal + + + + 230 + 20 + + + + + + + + + + + + false + + + Color scheme: + + + + + + + false + + + + 150 + 0 + + + + + + + + false + + + ... + + + QToolButton::InstantPopup + + + Qt::NoArrow + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + + customPaletteButton + toggled(bool) + colorScheeLabel + setEnabled(bool) + + + 160 + 79 + + + 77 + 104 + + + + + customPaletteButton + toggled(bool) + colorSchemeComboBox + setEnabled(bool) + + + 144 + 75 + + + 146 + 100 + + + + + customPaletteButton + toggled(bool) + colorSchemeButton + setEnabled(bool) + + + 177 + 78 + + + 288 + 116 + + + + + diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/fontconfigdialog.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/fontconfigdialog.cpp new file mode 100644 index 00000000..398a2436 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/fontconfigdialog.cpp @@ -0,0 +1,138 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include "fontconfigdialog.h" +#include "ui_fontconfigdialog.h" + +FontConfigDialog::FontConfigDialog(QWidget *parent) : + QDialog(parent), + m_ui(new Ui::FontConfigDialog) +{ + m_ui->setupUi(this); + + m_ui->hintingStyleComboBox->addItem(tr("None"), "hintnone"); + m_ui->hintingStyleComboBox->addItem(tr("Slight"), "hintslight"); + m_ui->hintingStyleComboBox->addItem(tr("Medium"), "hintmedium"); + m_ui->hintingStyleComboBox->addItem(tr("Full"), "hintfull"); + + m_ui->rgbaComboBox->addItem(tr("None"), "none"); + m_ui->rgbaComboBox->addItem("rgb", "rgb"); + m_ui->rgbaComboBox->addItem("bgr", "bgr"); + m_ui->rgbaComboBox->addItem("vrgb", "vrgb"); + m_ui->rgbaComboBox->addItem("vbgr", "vbgr"); + + m_ui->lcdFilterComboBox->addItem("lcdnone"); + m_ui->lcdFilterComboBox->addItem("lcddefault"); + m_ui->lcdFilterComboBox->addItem("lcdlight"); + m_ui->lcdFilterComboBox->addItem("lcdlegacy"); +} + +FontConfigDialog::~FontConfigDialog() +{ + delete m_ui; +} + +void FontConfigDialog::accept() +{ + QDir::home().mkpath(".config/fontconfig/"); + QString path = QDir::homePath() + "/.config/fontconfig/fonts.conf"; + qDebug("FontConfigDialog: fontconfig path: %s", qPrintable(path)); + + + if(QFile::exists(path)) + { + if(QMessageBox::question(this, tr("Font Configuration"), + tr("%1 already exists. Do you want to replace it?").arg(path), + QMessageBox::Yes | QMessageBox::No) == QMessageBox::No) + { + QDialog::reject(); + return; + } + + QFile::remove(path + ".back"); + QFile::copy(path, path + ".back"); + } + + QFile file(path); + if(!file.open(QIODevice::WriteOnly)) + { + qWarning("FontConfigDialog: unable to open file: %s", qPrintable(file.errorString())); + return; + } + + QXmlStreamWriter stream(&file); + stream.setAutoFormatting(true); + + stream.writeStartDocument(); + stream.writeDTD(""); + stream.writeStartElement("fontconfig"); + + stream.writeStartElement("match"); + stream.writeAttribute("target", "font"); + writeOption(&stream, "antialias", "bool", m_ui->antialisingCheckBox->isChecked() ? "true" : "false"); + writeOption(&stream, "hinting", "bool", m_ui->hintingCheckBox->isChecked() ? "true" : "false"); + writeOption(&stream, "hintstyle", "const", m_ui->hintingStyleComboBox->currentData().toString()); + writeOption(&stream, "rgba", "const", m_ui->rgbaComboBox->currentData().toString()); + writeOption(&stream, "autohint", "bool", m_ui->autohinterCheckBox->isChecked() ? "true" : "false"); + writeOption(&stream, "lcdfilter", "const", m_ui->lcdFilterComboBox->currentText()); + writeOption(&stream, "dpi", "double", QString::number(m_ui->dpiSpinBox->value())); + stream.writeEndElement(); + + if(m_ui->disableBoldAutohintCheckBox->isChecked()) + { + stream.writeStartElement("match"); + stream.writeAttribute("target", "font"); + + stream.writeStartElement("test"); + stream.writeAttribute("name", "weight"); + stream.writeAttribute("compare", "more"); + stream.writeTextElement("const", "medium"); + stream.writeEndElement(); + + writeOption(&stream, "autohint", "bool", m_ui->autohinterCheckBox->isChecked() ? "true" : "false"); + + stream.writeEndElement(); + } + stream.writeEndElement(); + stream.writeEndDocument(); + + QDialog::accept(); +} + +void FontConfigDialog::writeOption(QXmlStreamWriter *stream, const QString &name, const QString &type, const QString &value) +{ + stream->writeStartElement("edit"); + stream->writeAttribute("name", name); + stream->writeAttribute("mode", "assign"); + stream->writeTextElement(type, value); + stream->writeEndElement(); +} diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/fontconfigdialog.h b/src-qt5/core/lumina-theme-engine/src/lthemeengine/fontconfigdialog.h new file mode 100644 index 00000000..5b7e31a5 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/fontconfigdialog.h @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef FONTCONFIGDIALOG_H +#define FONTCONFIGDIALOG_H + +#include + +namespace Ui { +class FontConfigDialog; +} + +class QXmlStreamWriter; + +class FontConfigDialog : public QDialog +{ + Q_OBJECT + +public: + explicit FontConfigDialog(QWidget *parent = 0); + ~FontConfigDialog(); + +public slots: + void accept(); + void writeOption(QXmlStreamWriter *stream, const QString &name, const QString &type, const QString &value); + +private: + Ui::FontConfigDialog *m_ui; +}; + +#endif // FONTCONFIGDIALOG_H diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/fontconfigdialog.ui b/src-qt5/core/lumina-theme-engine/src/lthemeengine/fontconfigdialog.ui new file mode 100644 index 00000000..a557695f --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/fontconfigdialog.ui @@ -0,0 +1,160 @@ + + + FontConfigDialog + + + + 0 + 0 + 349 + 286 + + + + Font Configuration + + + + 6 + + + 6 + + + 6 + + + + + Disable automatic hinting for bold fonts + + + + + + + LCD filter: + + + + + + + Automatic hinting + + + + + + + Hinting + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + Font resolution: + + + + + + + + + + + + + + + + Subpixel geometry: + + + + + + + Antialiasing + + + + + + + Hinting style: + + + + + + + + 0 + 0 + + + + dpi + + + 80 + + + 180 + + + 102 + + + + + + + + + buttonBox + accepted() + FontConfigDialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + FontConfigDialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/fontspage.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/fontspage.cpp new file mode 100644 index 00000000..ac9fb164 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/fontspage.cpp @@ -0,0 +1,126 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include +#include +#include "qt5ct.h" +#include "fontspage.h" +#include "fontconfigdialog.h" +#include "ui_fontspage.h" + +FontsPage::FontsPage(QWidget *parent) : + TabPage(parent), + m_ui(new Ui::FontsPage) +{ + m_ui->setupUi(this); + + QSignalMapper *mapper = new QSignalMapper(this); + mapper->setMapping(m_ui->changeGeneralFontButton, m_ui->generalFontLabel); + mapper->setMapping(m_ui->changeFixedWidthFontButton, m_ui->fixedFontLabel); + connect(m_ui->changeGeneralFontButton, SIGNAL(clicked()), mapper, SLOT(map())); + connect(m_ui->changeFixedWidthFontButton, SIGNAL(clicked()), mapper, SLOT(map())); + connect(mapper, SIGNAL(mapped(QWidget*)), SLOT(onFontChangeRequested(QWidget*))); + + readSettings(); + + //icons + m_ui->createFontsConfButton->setIcon(QIcon::fromTheme("document-new")); + m_ui->removeFontsConfButton->setIcon(QIcon::fromTheme("edit-delete")); +} + +FontsPage::~FontsPage() +{ + delete m_ui; +} + +void FontsPage::writeSettings() +{ + QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + settings.beginGroup("Fonts"); + settings.setValue("general", m_ui->generalFontLabel->font()); + settings.setValue("fixed", m_ui->fixedFontLabel->font()); + settings.endGroup(); +} + +void FontsPage::onFontChangeRequested(QWidget *widget) +{ + bool ok = false; + QFont font = QFontDialog::getFont (&ok, widget->font(), this); + if(ok) + { + widget->setFont(font); + qobject_cast(widget)->setText(font.family () + " " + QString::number(font.pointSize ())); + } +} + +void FontsPage::readSettings() +{ + QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + settings.beginGroup("Fonts"); + loadFont(&settings, m_ui->generalFontLabel, "general"); + loadFont(&settings, m_ui->fixedFontLabel, "fixed"); + settings.endGroup(); +} + +void FontsPage::loadFont(QSettings *settings, QLabel *label, const QString &key) +{ + QFont font = settings->value(key, QApplication::font()).value(); + label->setText(font.family () + " " + QString::number(font.pointSize ())); + label->setFont(font); +} + +void FontsPage::on_createFontsConfButton_clicked() +{ + FontConfigDialog d(this); + d.exec(); +} + +void FontsPage::on_removeFontsConfButton_clicked() +{ + QString path = QDir::homePath() + "/.config/fontconfig/fonts.conf"; + + + if(QFile::exists(path)) + { + if(QMessageBox::question(this, tr("Remove Font Configuration"), + tr("Are you sure you want to delete %1?").arg(path), + QMessageBox::Yes | QMessageBox::No) == QMessageBox::No) + { + return; + } + + QFile::remove(path + ".back"); + QFile::copy(path, path + ".back"); + QFile::remove(path); + } +} diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/fontspage.h b/src-qt5/core/lumina-theme-engine/src/lthemeengine/fontspage.h new file mode 100644 index 00000000..a9c5f1f6 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/fontspage.h @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef FONTSPAGE_H +#define FONTSPAGE_H + +#include "tabpage.h" + +namespace Ui { +class FontsPage; +} + +class QLabel; +class QSettings; + +class FontsPage : public TabPage +{ + Q_OBJECT + +public: + explicit FontsPage(QWidget *parent = 0); + ~FontsPage(); + + void writeSettings(); + +private slots: + void onFontChangeRequested(QWidget *widget); + void on_createFontsConfButton_clicked(); + void on_removeFontsConfButton_clicked(); + +private: + void readSettings(); + void loadFont(QSettings *settings, QLabel *label, const QString &key); + Ui::FontsPage *m_ui; +}; + +#endif // FONTSPAGE_H diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/fontspage.ui b/src-qt5/core/lumina-theme-engine/src/lthemeengine/fontspage.ui new file mode 100644 index 00000000..b03b5fc0 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/fontspage.ui @@ -0,0 +1,134 @@ + + + FontsPage + + + + 0 + 0 + 517 + 320 + + + + Form + + + + + + Qt::Horizontal + + + + 342 + 20 + + + + + + + + + + + 0 + 0 + + + + QFrame::StyledPanel + + + ... + + + + + + + + 0 + 0 + + + + General: + + + + + + + ... + + + + + + + + 0 + 0 + + + + QFrame::StyledPanel + + + ... + + + + + + + ... + + + + + + + Fixed width: + + + + + + + + + Qt::Vertical + + + QSizePolicy::Expanding + + + + 0 + 280 + + + + + + + + Create fonts.conf + + + + + + + Remove fonts.conf + + + + + + + + diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/iconthemepage.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/iconthemepage.cpp new file mode 100644 index 00000000..ee4d638d --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/iconthemepage.cpp @@ -0,0 +1,214 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include +#include +#include "qt5ct.h" +#include "iconthemepage.h" +#include "ui_iconthemepage.h" + +IconThemePage::IconThemePage(QWidget *parent) : + TabPage(parent), + m_ui(new Ui::IconThemePage) +{ + m_ui->setupUi(this); + loadThemes(); + readSettings(); +} + +IconThemePage::~IconThemePage() +{ + delete m_ui; +} + +void IconThemePage::writeSettings() +{ + QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + QTreeWidgetItem *item = m_ui->treeWidget->currentItem(); + if(item) + settings.setValue("Appearance/icon_theme", item->data(3, Qt::UserRole)); +} + +void IconThemePage::readSettings() +{ + QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + QString name = settings.value("Appearance/icon_theme").toString(); + + if(name.isEmpty()) + return; + + for(int i = 0; i < m_ui->treeWidget->topLevelItemCount(); ++i) + { + QTreeWidgetItem *item = m_ui->treeWidget->topLevelItem(i); + if(item->data(3, Qt::UserRole).toString() == name) + { + m_ui->treeWidget->setCurrentItem(item); + break; + } + } +} + +void IconThemePage::loadThemes() +{ + QFileInfoList themeFileList; + foreach(QString path, Qt5CT::iconPaths()) + { + QDir dir(path); + dir.setFilter(QDir::Dirs | QDir::NoDotDot | QDir::NoDot); + foreach (QFileInfo info, dir.entryInfoList()) + { + QDir themeDir(info.absoluteFilePath()); + themeDir.setFilter(QDir::Files); + themeFileList << themeDir.entryInfoList(QStringList() << "index.theme"); + } + } + + foreach(QFileInfo info, themeFileList) + { + loadTheme(info.canonicalFilePath()); + } +} + +void IconThemePage::loadTheme(const QString &path) +{ + QSettings config(path, QSettings::IniFormat); + config.setIniCodec("UTF-8"); + + config.beginGroup("Icon Theme"); + QStringList dirs = config.value("Directories").toStringList(); + if(dirs.isEmpty() || config.value("Hidden", false).toBool()) + return; + + QString name, comment; + QString lang = QLocale::system().name(); + + name = config.value(QString("Name[%1]").arg(lang)).toString(); + comment = config.value(QString("Comment[%1]").arg(lang)).toString(); + + if(lang.contains("_")) + lang = lang.split("_").first(); + + if(name.isEmpty()) + name = config.value(QString("Name[%1]").arg(lang)).toString(); + + if(comment.isEmpty()) + comment = config.value(QString("Comment[%1]").arg(lang)).toString(); + + if(name.isEmpty()) + name = config.value("Name").toString(); + + if(comment.isEmpty()) + comment = config.value("Comment").toString(); + + config.endGroup(); + + QIcon icon1 = findIcon(path, 24, "document-save"); + QIcon icon2 = findIcon(path, 24, "document-print"); + QIcon icon3 = findIcon(path, 24, "media-playback-stop"); + + QTreeWidgetItem *item = new QTreeWidgetItem(); + item->setIcon(0, icon1); + item->setIcon(1, icon2); + item->setIcon(2, icon3); + item->setText(3, name); + item->setData(3, Qt::UserRole, QFileInfo(path).path().section("/", -1)); + item->setToolTip(3, comment); + item->setSizeHint(0, QSize(24,24)); + m_ui->treeWidget->addTopLevelItem(item); + + m_ui->treeWidget->resizeColumnToContents(0); + m_ui->treeWidget->resizeColumnToContents(1); + m_ui->treeWidget->resizeColumnToContents(2); + m_ui->treeWidget->resizeColumnToContents(3); +} + +QIcon IconThemePage::findIcon(const QString &themePath, int size, const QString &name) +{ + QSettings config(themePath, QSettings::IniFormat); + config.beginGroup("Icon Theme"); + QStringList dirs = config.value("Directories").toStringList(); + QStringList parents = config.value("Inherits").toStringList(); + bool haveInherits = config.contains("Inherits"); + config.endGroup(); + + foreach (QString dir, dirs) + { + config.beginGroup(dir); + if(config.value("Size").toInt() == size) + { + QDir iconDir = QFileInfo(themePath).path() + "/" + dir; + iconDir.setFilter(QDir::Files); + iconDir.setNameFilters(QStringList () << name + ".*"); + if(iconDir.entryInfoList().isEmpty()) + continue; + return QIcon(iconDir.entryInfoList().first().absoluteFilePath()); + } + config.endGroup(); + } + + foreach (QString dir, dirs) + { + config.beginGroup(dir); + if(abs(config.value("Size").toInt() - size) < 4) + { + QDir iconDir = QFileInfo(themePath).path() + "/" + dir; + iconDir.setFilter(QDir::Files); + iconDir.setNameFilters(QStringList () << name + ".*"); + if(iconDir.entryInfoList().isEmpty()) + continue; + return QIcon(iconDir.entryInfoList().first().absoluteFilePath()); + } + config.endGroup(); + } + + if (!haveInherits) + return QIcon(); + + parents.append("hicolor"); //add fallback themes + parents.append("gnome"); + parents.removeDuplicates(); + + foreach (QString parent, parents) + { + QString parentThemePath = QDir(QFileInfo(themePath).path() + "/../" + parent).canonicalPath() + "/index.theme"; + + if(!QFile::exists(parentThemePath) || parentThemePath == themePath) + continue; + + QIcon icon = findIcon(parentThemePath, size, name); + if(!icon.isNull()) + return icon; + } + + return QIcon(); +} diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/iconthemepage.h b/src-qt5/core/lumina-theme-engine/src/lthemeengine/iconthemepage.h new file mode 100644 index 00000000..0ccd64e0 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/iconthemepage.h @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef ICONTHEMEPAGE_H +#define ICONTHEMEPAGE_H + +#include +#include "tabpage.h" + +namespace Ui { +class IconThemePage; +} + +class IconThemePage : public TabPage +{ + Q_OBJECT + +public: + explicit IconThemePage(QWidget *parent = 0); + ~IconThemePage(); + + void writeSettings(); + +private: + void readSettings(); + void loadThemes(); + void loadTheme(const QString &path); + QIcon findIcon(const QString &themePath, int size, const QString &name); + Ui::IconThemePage *m_ui; +}; + +#endif // ICONTHEMEPAGE_H diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/iconthemepage.ui b/src-qt5/core/lumina-theme-engine/src/lthemeengine/iconthemepage.ui new file mode 100644 index 00000000..a6385041 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/iconthemepage.ui @@ -0,0 +1,51 @@ + + + IconThemePage + + + + 0 + 0 + 400 + 300 + + + + Form + + + + + + 4 + + + false + + + + 1 + + + + + 2 + + + + + 3 + + + + + 4 + + + + + + + + + diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/interfacepage.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/interfacepage.cpp new file mode 100644 index 00000000..fc5c0662 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/interfacepage.cpp @@ -0,0 +1,140 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include "qt5ct.h" +#include "interfacepage.h" +#include "ui_interfacepage.h" + +InterfacePage::InterfacePage(QWidget *parent) : + TabPage(parent), + m_ui(new Ui::InterfacePage) +{ + m_ui->setupUi(this); + + m_ui->buttonLayoutComboBox->addItem("Windows", QDialogButtonBox::WinLayout); + m_ui->buttonLayoutComboBox->addItem("Mac OS X", QDialogButtonBox::MacLayout); + m_ui->buttonLayoutComboBox->addItem("KDE", QDialogButtonBox::KdeLayout); + m_ui->buttonLayoutComboBox->addItem("GNOME", QDialogButtonBox::GnomeLayout); + + m_ui->toolButtonStyleComboBox->addItem(tr("Only display the icon"), Qt::ToolButtonIconOnly); + m_ui->toolButtonStyleComboBox->addItem(tr("Only display the text"), Qt::ToolButtonTextOnly); + m_ui->toolButtonStyleComboBox->addItem(tr("The text appears beside the icon"), Qt::ToolButtonTextBesideIcon); + m_ui->toolButtonStyleComboBox->addItem(tr("The text appears under the icon"), Qt::ToolButtonTextUnderIcon); + m_ui->toolButtonStyleComboBox->addItem(tr("Follow the application style"), Qt::ToolButtonFollowStyle); + + readSettings(); +} + +InterfacePage::~InterfacePage() +{ + delete m_ui; +} + +void InterfacePage::writeSettings() +{ + QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + settings.beginGroup("Interface"); + settings.setValue("double_click_interval", m_ui->doubleClickIntervalSpinBox->value()); + settings.setValue("cursor_flash_time", m_ui->cursorFlashTimeSpinBox->value()); + settings.setValue("buttonbox_layout", m_ui->buttonLayoutComboBox->currentData()); + settings.setValue("menus_have_icons", m_ui->menuIconsCheckBox->isChecked()); + settings.setValue("activate_item_on_single_click", m_ui->singleClickCheckBox->checkState()); + settings.setValue("dialog_buttons_have_icons", m_ui->dialogIconsCheckBox->checkState()); + settings.setValue("toolbutton_style", m_ui->toolButtonStyleComboBox->currentData()); + settings.setValue("wheel_scroll_lines", m_ui->wheelScrollLinesSpinBox->value()); + + QStringList effects; + if(m_ui->guiEffectsCheckBox->isChecked()) + effects << "General"; + + if(m_ui->menuEffectComboBox->currentIndex() == 1) + effects << "AnimateMenu"; + else if(m_ui->menuEffectComboBox->currentIndex() == 2) + effects << "FadeMenu"; + + if(m_ui->comboBoxEffectComboBox->currentIndex() == 1) + effects << "AnimateCombo"; + + if(m_ui->toolTipEffectComboBox->currentIndex() == 1) + effects << "AnimateTooltip"; + else if(m_ui->toolTipEffectComboBox->currentIndex() == 2) + effects << "FadeTooltip"; + + if(m_ui->toolBoxEffectComboBox->currentIndex() == 1) + effects << "AnimateToolBox"; + + settings.setValue("gui_effects", effects); + settings.endGroup(); +} + +void InterfacePage::readSettings() +{ + QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + settings.beginGroup("Interface"); + m_ui->doubleClickIntervalSpinBox->setValue(qApp->doubleClickInterval()); + m_ui->cursorFlashTimeSpinBox->setValue(qApp->cursorFlashTime()); + + m_ui->guiEffectsCheckBox->setChecked(qApp->isEffectEnabled(Qt::UI_General)); + + int layout = settings.value("buttonbox_layout", style()->styleHint(QStyle::SH_DialogButtonLayout)).toInt(); + int index = m_ui->buttonLayoutComboBox->findData(layout); + if(index >= 0) + m_ui->buttonLayoutComboBox->setCurrentIndex(index); + + if(qApp->isEffectEnabled(Qt::UI_AnimateMenu)) + m_ui->menuEffectComboBox->setCurrentIndex(1); + else if(qApp->isEffectEnabled(Qt::UI_FadeMenu)) + m_ui->menuEffectComboBox->setCurrentIndex(2); + + if(qApp->isEffectEnabled(Qt::UI_AnimateCombo)) + m_ui->comboBoxEffectComboBox->setCurrentIndex(1); + + if(qApp->isEffectEnabled(Qt::UI_AnimateTooltip)) + m_ui->toolTipEffectComboBox->setCurrentIndex(1); + else if(qApp->isEffectEnabled(Qt::UI_FadeTooltip)) + m_ui->toolTipEffectComboBox->setCurrentIndex(2); + + if(qApp->isEffectEnabled(Qt::UI_AnimateToolBox)) + m_ui->toolBoxEffectComboBox->setCurrentIndex(1); + + m_ui->singleClickCheckBox->setCheckState((Qt::CheckState)settings.value("activate_item_on_single_click", Qt::PartiallyChecked).toInt()); + m_ui->dialogIconsCheckBox->setCheckState((Qt::CheckState)settings.value("dialog_buttons_have_icons", Qt::PartiallyChecked).toInt()); + m_ui->menuIconsCheckBox->setChecked(!qApp->testAttribute(Qt::AA_DontShowIconsInMenus)); + + int toolbarStyle = settings.value("toolbutton_style", Qt::ToolButtonFollowStyle).toInt(); + index = m_ui->toolButtonStyleComboBox->findData(toolbarStyle); + if(index >= 0) + m_ui->toolButtonStyleComboBox->setCurrentIndex(index); + + m_ui->wheelScrollLinesSpinBox->setValue(settings.value("wheel_scroll_lines", 3).toInt()); + + settings.endGroup(); +} diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/interfacepage.h b/src-qt5/core/lumina-theme-engine/src/lthemeengine/interfacepage.h new file mode 100644 index 00000000..637b6bf1 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/interfacepage.h @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef INTERFACEPAGE_H +#define INTERFACEPAGE_H + +#include "tabpage.h" + +namespace Ui { +class InterfacePage; +} + +class InterfacePage : public TabPage +{ + Q_OBJECT + +public: + explicit InterfacePage(QWidget *parent = 0); + ~InterfacePage(); + + void writeSettings(); + +private: + void readSettings(); + + Ui::InterfacePage *m_ui; +}; + +#endif // INTERFACEPAGE_H diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/interfacepage.ui b/src-qt5/core/lumina-theme-engine/src/lthemeengine/interfacepage.ui new file mode 100644 index 00000000..ca9d0291 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/interfacepage.ui @@ -0,0 +1,327 @@ + + + InterfacePage + + + + 0 + 0 + 498 + 449 + + + + Form + + + + + + Qt::Vertical + + + + 20 + 259 + + + + + + + + + + Double click interval: + + + + + + + Cursor flash time: + + + + + + + ComboBox effect: + + + + + + + ToolTip effect: + + + + + + + ToolBox effect: + + + + + + + ms + + + 2000 + + + + + + + ms + + + 4000 + + + + + + + false + + + + Disable + + + + + Animate + + + + + + + + false + + + + Disable + + + + + Animate + + + + + Fade + + + + + + + + false + + + + Disable + + + + + Animate + + + + + + + + Menu effect: + + + + + + + false + + + + Disable + + + + + Animate + + + + + Fade + + + + + + + + Enable gui effects + + + + + + + Dialog buttons layout: + + + + + + + + + + Menus have icons + + + + + + + Dialog buttons have icons + + + true + + + + + + + Activate item on single-click + + + true + + + + + + + Toolbar button style: + + + + + + + + + + Mouse wheel scroll lines: + + + + + + + 1 + + + 20 + + + + + + + + + Qt::Horizontal + + + + 238 + 20 + + + + + + + + + + guiEffectsCheckBox + toggled(bool) + menuEffectComboBox + setEnabled(bool) + + + 126 + 86 + + + 201 + 114 + + + + + guiEffectsCheckBox + toggled(bool) + comboBoxEffectComboBox + setEnabled(bool) + + + 75 + 84 + + + 160 + 153 + + + + + guiEffectsCheckBox + toggled(bool) + toolTipEffectComboBox + setEnabled(bool) + + + 54 + 84 + + + 155 + 184 + + + + + guiEffectsCheckBox + toggled(bool) + toolBoxEffectComboBox + setEnabled(bool) + + + 36 + 91 + + + 156 + 216 + + + + + diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/main.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/main.cpp new file mode 100644 index 00000000..d15c9c01 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/main.cpp @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include "qt5ct.h" +#include +#include +#include +#include +#include "mainwindow.h" + +int main(int argc, char **argv) +{ + QApplication app(argc, argv); + QTranslator translator; + QString locale = Qt5CT::systemLanguageID(); + translator.load(QString(":/qt5ct_") + locale); + app.installTranslator(&translator); + + QTranslator qt_translator; + qt_translator.load(QLibraryInfo::location (QLibraryInfo::TranslationsPath) + "/qtbase_" + locale); + app.installTranslator(&qt_translator); + + qDebug("Configuration path: %s", qPrintable(Qt5CT::configPath())); + qDebug("Shared QSS path: %s", qPrintable(Qt5CT::sharedStyleSheetPath())); + + //checking environment + QStringList errorMessages; + QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); + + if(env.contains("QT_STYLE_OVERRIDE")) + { + errorMessages << app.translate("main", "Please remove the QT_STYLE_OVERRIDE environment variable"); + } + + if(env.value("QT_QPA_PLATFORMTHEME") != "qt5ct") + { + errorMessages << app.translate("main", "The QT_QPA_PLATFORMTHEME environment " + "variable is not set correctly"); + } + + if(!QStyleFactory::keys().contains("qt5ct-style")) + { + errorMessages << app.translate("main", "Unable to find libqt5ct-style.so"); + } + + if(!errorMessages.isEmpty()) + { + QMessageBox::critical(0, app.translate("main", "Error"), errorMessages.join("

")); + return 0; + } + + MainWindow w; + w.show(); + + return app.exec(); +} diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/mainwindow.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/mainwindow.cpp new file mode 100644 index 00000000..b120436f --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/mainwindow.cpp @@ -0,0 +1,90 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include "qt5ct.h" +#include "mainwindow.h" +#include "appearancepage.h" +#include "fontspage.h" +#include "iconthemepage.h" +#include "interfacepage.h" +#include "qsspage.h" +#include "ui_mainwindow.h" + +MainWindow::MainWindow(QWidget *parent) : + QWidget(parent), + m_ui(new Ui::MainWindow) +{ + m_ui->setupUi(this); + m_ui->tabWidget->addTab(new AppearancePage(this), tr("Appearance")); + m_ui->tabWidget->addTab(new FontsPage(this), tr("Fonts")); + m_ui->tabWidget->addTab(new IconThemePage(this), tr("Icon Theme")); + m_ui->tabWidget->addTab(new InterfacePage(this), tr("Interface")); +#ifdef USE_WIDGETS + m_ui->tabWidget->addTab(new QSSPage(this), tr("Style Sheets")); +#endif + + QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + restoreGeometry(settings.value("SettingsWindow/geometry").toByteArray()); + + setWindowIcon(QIcon::fromTheme("preferences-desktop-theme")); + + m_ui->versionLabel->setText(tr("Version: %1").arg(QT5CT_VERSION_STR)); +} + +MainWindow::~MainWindow() +{ + delete m_ui; +} + +void MainWindow::closeEvent(QCloseEvent *) +{ + QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + settings.setValue("SettingsWindow/geometry", saveGeometry()); +} + +void MainWindow::on_buttonBox_clicked(QAbstractButton *button) +{ + int id = m_ui->buttonBox->standardButton(button); + if(id == QDialogButtonBox::Ok || id == QDialogButtonBox::Apply) + { + for(int i = 0; i < m_ui->tabWidget->count(); ++i) + { + TabPage *p = qobject_cast(m_ui->tabWidget->widget(i)); + if(p) + p->writeSettings(); + } + } + + if(id == QDialogButtonBox::Ok || id == QDialogButtonBox::Cancel) + { + close(); + qApp->quit(); + } +} diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/mainwindow.h b/src-qt5/core/lumina-theme-engine/src/lthemeengine/mainwindow.h new file mode 100644 index 00000000..f532141c --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/mainwindow.h @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include + +class QAbstractButton; + +namespace Ui { +class MainWindow; +} + +class MainWindow : public QWidget +{ + Q_OBJECT + +public: + explicit MainWindow(QWidget *parent = 0); + ~MainWindow(); + +private slots: + void on_buttonBox_clicked(QAbstractButton *button); + +private: + void closeEvent(QCloseEvent *); + + Ui::MainWindow *m_ui; +}; + +#endif // MAINWINDOW_H diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/mainwindow.ui b/src-qt5/core/lumina-theme-engine/src/lthemeengine/mainwindow.ui new file mode 100644 index 00000000..5bdab6d7 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/mainwindow.ui @@ -0,0 +1,47 @@ + + + MainWindow + + + + 0 + 0 + 438 + 374 + + + + Qt5 Configuration Tool + + + + 6 + + + 6 + + + 6 + + + + + + + + ... + + + + + + + QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/paletteeditdialog.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/paletteeditdialog.cpp new file mode 100644 index 00000000..31a3a2a9 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/paletteeditdialog.cpp @@ -0,0 +1,146 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include "qt5ct.h" +#include "paletteeditdialog.h" +#include "ui_paletteeditdialog.h" + +PaletteEditDialog::PaletteEditDialog(const QPalette &palette, QStyle *currentStyle, QWidget *parent) : + QDialog(parent), + m_ui(new Ui::PaletteEditDialog) +{ + m_currentStyle = currentStyle; + m_ui->setupUi(this); + m_ui->tableWidget->setColumnCount(3); + m_ui->tableWidget->setRowCount(QPalette::NColorRoles); + m_ui->tableWidget->verticalHeader()->setDefaultSectionSize(fontMetrics().lineSpacing() + 10); + m_ui->tableWidget->verticalHeader()->setSectionResizeMode(QHeaderView::Fixed); + m_ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); + + QStringList labels; + labels << tr("Active") << tr("Inactive") << tr("Disabled"); + m_ui->tableWidget->setHorizontalHeaderLabels(labels); + setPalette(palette); + + QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + restoreGeometry(settings.value("PaletteEditor/geometry").toByteArray()); +} + +PaletteEditDialog::~PaletteEditDialog() +{ + delete m_ui; +} + +QPalette PaletteEditDialog::selectedPalette() const +{ + QPalette palette; + for(int i = 0; i < QPalette::NColorRoles; i++) + { + palette.setBrush(QPalette::Active, QPalette::ColorRole(i), m_ui->tableWidget->item(i,0)->backgroundColor()); + palette.setBrush(QPalette::Inactive, QPalette::ColorRole(i), m_ui->tableWidget->item(i,1)->backgroundColor()); + palette.setBrush(QPalette::Disabled, QPalette::ColorRole(i), m_ui->tableWidget->item(i,2)->backgroundColor()); + } + return palette; +} + +void PaletteEditDialog::setPalette(const QPalette &palette) +{ + for(int i = 0; i < QPalette::NColorRoles; i++) + { + if(!m_ui->tableWidget->item(i,0)) + m_ui->tableWidget->setItem(i, 0, new QTableWidgetItem()); + if(!m_ui->tableWidget->item(i,1)) + m_ui->tableWidget->setItem(i, 1, new QTableWidgetItem()); + if(!m_ui->tableWidget->item(i,2)) + m_ui->tableWidget->setItem(i, 2, new QTableWidgetItem()); + + m_ui->tableWidget->item(i,0)->setBackgroundColor(palette.color(QPalette::Active, QPalette::ColorRole(i))); + m_ui->tableWidget->item(i,1)->setBackgroundColor(palette.color(QPalette::Inactive, QPalette::ColorRole(i))); + m_ui->tableWidget->item(i,2)->setBackgroundColor(palette.color(QPalette::Disabled, QPalette::ColorRole(i))); + } + + QStringList labels; + labels << tr("Window text") << tr("Button background") << tr("Bright") << tr("Less bright") << tr("Dark") << tr("Less dark") + << tr("Normal text") << tr("Bright text") << tr("Button text") << tr("Normal background") << tr("Window") << tr("Shadow") + << tr("Highlight") << tr("Highlighted text") << tr("Link") << tr("Visited link") + << tr("Alternate background") << tr("Default") << tr("Tooltip background") << tr("Tooltip text"); + m_ui->tableWidget->setVerticalHeaderLabels(labels); +} + +void PaletteEditDialog::hideEvent(QHideEvent *) +{ + QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + settings.setValue("PaletteEditor/geometry", saveGeometry()); +} + +void PaletteEditDialog::on_tableWidget_itemClicked(QTableWidgetItem *item) +{ + QColor color = QColorDialog::getColor(item->backgroundColor(), this, tr("Select Color")); + if(color.isValid()) + { + item->setBackgroundColor(color); + emit paletteChanged(selectedPalette()); + } +} + +void PaletteEditDialog::on_resetPaletteButton_clicked() +{ + setPalette(m_currentStyle->standardPalette()); + emit paletteChanged(selectedPalette()); +} + +void PaletteEditDialog::on_buildInactiveButton_clicked() +{ + QPalette palette = selectedPalette(); + for(int i = 0; i < QPalette::NColorRoles; i++) + { + palette.setColor(QPalette::Inactive, QPalette::ColorRole(i), + palette.color(QPalette::Active, QPalette::ColorRole(i))); + } + setPalette(palette); + emit paletteChanged(selectedPalette()); +} + +void PaletteEditDialog::on_buildDisabledButton_clicked() +{ + QPalette palette = selectedPalette(); + for(int i = 0; i < QPalette::NColorRoles; i++) + { + palette.setColor(QPalette::Disabled, QPalette::ColorRole(i), + palette.color(QPalette::Active, QPalette::ColorRole(i))); + } + palette.setColor(QPalette::Disabled, QPalette::ButtonText, Qt::darkGray); + palette.setColor(QPalette::Disabled, QPalette::WindowText, Qt::darkGray); + palette.setColor(QPalette::Disabled, QPalette::Text, Qt::darkGray); + palette.setColor(QPalette::Disabled, QPalette::HighlightedText, Qt::darkGray); + setPalette(palette); + emit paletteChanged(selectedPalette()); +} diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/paletteeditdialog.h b/src-qt5/core/lumina-theme-engine/src/lthemeengine/paletteeditdialog.h new file mode 100644 index 00000000..c8691a3c --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/paletteeditdialog.h @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef PALETTEEDITDIALOG_H +#define PALETTEEDITDIALOG_H + +#include +#include + +class QTableWidgetItem; +class QStyle; + +namespace Ui { +class PaletteEditDialog; +} + +class PaletteEditDialog : public QDialog +{ + Q_OBJECT + +public: + explicit PaletteEditDialog(const QPalette &palette, QStyle *currentStyle, QWidget *parent = 0); + ~PaletteEditDialog(); + + QPalette selectedPalette() const; + +signals: + void paletteChanged(const QPalette &p); + +private slots: + void on_tableWidget_itemClicked(QTableWidgetItem *item); + void on_resetPaletteButton_clicked(); + void on_buildInactiveButton_clicked(); + void on_buildDisabledButton_clicked(); + +private: + void setPalette(const QPalette &palette); + void hideEvent(QHideEvent *); + Ui::PaletteEditDialog *m_ui; + QStyle *m_currentStyle; +}; + +#endif // PALETTEEDITDIALOG_H diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/paletteeditdialog.ui b/src-qt5/core/lumina-theme-engine/src/lthemeengine/paletteeditdialog.ui new file mode 100644 index 00000000..6ca6350f --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/paletteeditdialog.ui @@ -0,0 +1,120 @@ + + + PaletteEditDialog + + + + 0 + 0 + 631 + 529 + + + + Palette Editor + + + + 6 + + + 6 + + + 6 + + + + + Build inactive palette + + + + + + + Build disabled palette + + + + + + + Qt::Horizontal + + + + 117 + 20 + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + QAbstractItemView::NoEditTriggers + + + QAbstractItemView::NoSelection + + + 0 + + + + + + + Reset palette + + + + + + + + + buttonBox + accepted() + PaletteEditDialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + PaletteEditDialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/previewform.ui b/src-qt5/core/lumina-theme-engine/src/lthemeengine/previewform.ui new file mode 100644 index 00000000..508201db --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/previewform.ui @@ -0,0 +1,76 @@ + + + PreviewForm + + + + 0 + 0 + 281 + 130 + + + + Preview Window + + + + + + 0 + + + + Tab 1 + + + + + + PushButton + + + + + + + 24 + + + + + + + + + + + + + + Tab 2 + + + + + + RadioButton + + + + + + + CheckBox + + + + + + + + + + + + diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsseditordialog.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsseditordialog.cpp new file mode 100644 index 00000000..7c6292ac --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsseditordialog.cpp @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include "qt5ct.h" +#include "qsseditordialog.h" +#include "ui_qsseditordialog.h" + +QSSEditorDialog::QSSEditorDialog(const QString &filePath, QWidget *parent) : + QDialog(parent), + m_ui(new Ui::QSSEditorDialog) +{ + m_ui->setupUi(this); + m_filePath = filePath; + + QFile file(filePath); + file.open(QIODevice::ReadOnly); + m_ui->textEdit->setPlainText(QString::fromUtf8(file.readAll())); + setWindowTitle(tr("%1 - Style Sheet Editor").arg(file.fileName())); + + QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + restoreGeometry(settings.value("QSSEditor/geometry").toByteArray()); +} + +QSSEditorDialog::~QSSEditorDialog() +{ + delete m_ui; +} + +void QSSEditorDialog::save() +{ + QFile file(m_filePath); + file.open(QIODevice::WriteOnly); + file.write(m_ui->textEdit->toPlainText().toUtf8()); +} + +void QSSEditorDialog::hideEvent(QHideEvent *) +{ + QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + settings.setValue("QSSEditor/geometry", saveGeometry()); +} + +void QSSEditorDialog::on_buttonBox_clicked(QAbstractButton *button) +{ + QDialogButtonBox::StandardButton id = m_ui->buttonBox->standardButton(button); + if(id == QDialogButtonBox::Ok) + { + save(); + accept(); + } + else if(id == QDialogButtonBox::Save) + { + save(); + } + else + { + reject(); + } +} diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsseditordialog.h b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsseditordialog.h new file mode 100644 index 00000000..e2a6c773 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsseditordialog.h @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef QSSEDITORDIALOG_H +#define QSSEDITORDIALOG_H + +#include +#include + +namespace Ui { +class QSSEditorDialog; +} + +class QAbstractButton; + +class QSSEditorDialog : public QDialog +{ + Q_OBJECT + +public: + explicit QSSEditorDialog(const QString &filePath, QWidget *parent = 0); + ~QSSEditorDialog(); + +private slots: + void on_buttonBox_clicked(QAbstractButton *button); + +private: + void save(); + void hideEvent(QHideEvent *); + Ui::QSSEditorDialog *m_ui; + QString m_filePath; +}; + +#endif // QSSEDITORDIALOG_H diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsseditordialog.ui b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsseditordialog.ui new file mode 100644 index 00000000..7627b4d4 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsseditordialog.ui @@ -0,0 +1,47 @@ + + + QSSEditorDialog + + + + 0 + 0 + 643 + 499 + + + + Style Sheet Editor + + + + 6 + + + 6 + + + 6 + + + + + false + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok|QDialogButtonBox::Save + + + + + + + + diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.cpp new file mode 100644 index 00000000..784ff674 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.cpp @@ -0,0 +1,232 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include +#include "qt5ct.h" +#include "qsseditordialog.h" +#include "qsspage.h" +#include "ui_qsspage.h" + +#define QSS_FULL_PATH_ROLE (Qt::ItemDataRole(Qt::UserRole)) +#define QSS_WRITABLE_ROLE (Qt::ItemDataRole(Qt::UserRole + 1)) + +QSSPage::QSSPage(QWidget *parent) : + TabPage(parent), + m_ui(new Ui::QSSPage) +{ + m_ui->setupUi(this); + QDir("/").mkpath(Qt5CT::userStyleSheetPath()); + + m_menu = new QMenu(this); + m_menu->addAction(QIcon::fromTheme("accessories-text-editor"), tr("Edit"), this, SLOT(on_editButton_clicked())); + m_menu->addAction(tr("Rename"), this, SLOT(on_renameButton_clicked())); + m_menu->addSeparator(); + m_menu->addAction(QIcon::fromTheme("edit-delete"), tr("Remove"), this, SLOT(on_removeButton_clicked())); + + readSettings(); + + //icons + m_ui->createButton->setIcon(QIcon::fromTheme("document-new")); + m_ui->editButton->setIcon(QIcon::fromTheme("accessories-text-editor")); + m_ui->removeButton->setIcon(QIcon::fromTheme("edit-delete")); +} + +QSSPage::~QSSPage() +{ + delete m_ui; +} + +void QSSPage::writeSettings() +{ + QStringList styleSheets; + QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + + for(int i = 0; i < m_ui->qssListWidget->count(); ++i) + { + QListWidgetItem *item = m_ui->qssListWidget->item(i); + if(item->checkState() == Qt::Checked) + styleSheets << item->data(QSS_FULL_PATH_ROLE).toString(); + } + + settings.setValue("Interface/stylesheets", styleSheets); +} + +void QSSPage::on_qssListWidget_currentItemChanged(QListWidgetItem *current, QListWidgetItem *) +{ + if(current) + { + m_ui->editButton->setEnabled(current->data(QSS_WRITABLE_ROLE).toBool()); + m_ui->removeButton->setEnabled(current->data(QSS_WRITABLE_ROLE).toBool()); + m_ui->renameButton->setEnabled(current->data(QSS_WRITABLE_ROLE).toBool()); + } + else + { + m_ui->editButton->setEnabled(false); + m_ui->removeButton->setEnabled(false); + m_ui->renameButton->setEnabled(false); + } +} + +void QSSPage::on_createButton_clicked() +{ + QString name = QInputDialog::getText(this, tr("Enter Style Sheet Name"), tr("File name:")); + if(name.isEmpty()) + return; + + if(!name.endsWith(".qss", Qt::CaseInsensitive)) + name.append(".qss"); + + QString filePath = Qt5CT::userStyleSheetPath() + name; + + if(QFile::exists(filePath)) + { + QMessageBox::warning(this, tr("Error"), tr("The file \"%1\" already exists").arg(filePath)); + return; + } + + //creating empty file + QFile file(filePath); + file.open(QIODevice::WriteOnly); + file.close(); + + //creating item + QFileInfo info(filePath); + QListWidgetItem *item = new QListWidgetItem(info.fileName(), m_ui->qssListWidget); + item->setToolTip(info.filePath()); + item->setData(QSS_FULL_PATH_ROLE, info.filePath()); + item->setData(QSS_WRITABLE_ROLE, info.isWritable()); + item->setCheckState(Qt::Unchecked); +} + +void QSSPage::on_editButton_clicked() +{ + QListWidgetItem *item = m_ui->qssListWidget->currentItem(); + if(item) + { + QSSEditorDialog dialog(item->data(QSS_FULL_PATH_ROLE).toString(), this); + dialog.exec(); + } +} + +void QSSPage::on_removeButton_clicked() +{ + QListWidgetItem *item = m_ui->qssListWidget->currentItem(); + if(!item) + return; + + int button = QMessageBox::question(this, tr("Confirm Remove"), + tr("Are you sure you want to remove style sheet \"%1\"?") + .arg(item->text()), + QMessageBox::Yes | QMessageBox::No); + if(button == QMessageBox::Yes) + { + QFile::remove(item->data(QSS_FULL_PATH_ROLE).toString()); + delete item; + } +} + +void QSSPage::readSettings() +{ + //load stylesheets + m_ui->qssListWidget->clear(); + findStyleSheets(Qt5CT::userStyleSheetPath()); + findStyleSheets(Qt5CT::sharedStyleSheetPath()); + + QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + QStringList styleSheets = settings.value("Interface/stylesheets").toStringList(); + for(int i = 0; i < m_ui->qssListWidget->count(); ++i) + { + QListWidgetItem *item = m_ui->qssListWidget->item(i); + if(styleSheets.contains(item->data(QSS_FULL_PATH_ROLE).toString())) + item->setCheckState(Qt::Checked); + else + item->setCheckState(Qt::Unchecked); + } +} + +void QSSPage::findStyleSheets(const QString &path) +{ + QDir dir(path); + dir.setFilter(QDir::Files); + dir.setNameFilters(QStringList() << "*.qss"); + + foreach (QFileInfo info, dir.entryInfoList()) + { + QListWidgetItem *item = new QListWidgetItem(info.fileName(), m_ui->qssListWidget); + item->setToolTip(info.filePath()); + item->setData(QSS_FULL_PATH_ROLE, info.filePath()); + item->setData(QSS_WRITABLE_ROLE, info.isWritable()); + } +} + +void QSSPage::on_renameButton_clicked() +{ + QListWidgetItem *item = m_ui->qssListWidget->currentItem(); + if(!item) + return; + + QString name = QInputDialog::getText(this, tr("Rename Style Sheet"), tr("Style sheet name:"), + QLineEdit::Normal, item->text(), 0); + if(name.isEmpty()) + return; + + if(!m_ui->qssListWidget->findItems(name, Qt::MatchExactly).isEmpty()) + { + QMessageBox::warning(this, tr("Error"), tr("The style sheet \"%1\" already exists").arg(name)); + return; + } + + if(!name.endsWith(".qss", Qt::CaseInsensitive)) + name.append(".qss"); + + QString newPath = Qt5CT::userStyleSheetPath() + name; + + if(!QFile::rename(item->data(QSS_FULL_PATH_ROLE).toString(), newPath)) + { + QMessageBox::warning(this, tr("Error"), tr("Unable to rename file")); + return; + } + + item->setText(name); + item->setData(QSS_FULL_PATH_ROLE, newPath); + item->setToolTip(newPath); +} + +void QSSPage::on_qssListWidget_customContextMenuRequested(const QPoint &pos) +{ + QListWidgetItem *item = m_ui->qssListWidget->currentItem(); + if(item && item->data(QSS_WRITABLE_ROLE).toBool()) + { + m_menu->exec(m_ui->qssListWidget->viewport()->mapToGlobal(pos)); + } +} diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.h b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.h new file mode 100644 index 00000000..665f68c0 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.h @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef QSSPAGE_H +#define QSSPAGE_H + +#include "tabpage.h" + +namespace Ui { +class QSSPage; +} + +class QListWidgetItem; +class QMenu; + +class QSSPage : public TabPage +{ + Q_OBJECT + +public: + explicit QSSPage(QWidget *parent = 0); + ~QSSPage(); + + void writeSettings(); + +private slots: + void on_qssListWidget_currentItemChanged(QListWidgetItem *current, QListWidgetItem *); + void on_createButton_clicked(); + void on_editButton_clicked(); + void on_removeButton_clicked(); + void on_renameButton_clicked(); + void on_qssListWidget_customContextMenuRequested(const QPoint &pos); + +private: + void readSettings(); + void findStyleSheets(const QString &path); + Ui::QSSPage *m_ui; + QMenu *m_menu; +}; + +#endif // QSSPAGE_H diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.ui b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.ui new file mode 100644 index 00000000..124b4dc6 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.ui @@ -0,0 +1,84 @@ + + + QSSPage + + + + 0 + 0 + 483 + 320 + + + + Style Sheet Editor + + + + + + true + + + Create + + + + + + + false + + + Remove + + + + + + + Qt::Horizontal + + + + 189 + 20 + + + + + + + + Qt::CustomContextMenu + + + true + + + + + + + false + + + Edit + + + + + + + false + + + Rename + + + + + + + + diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/qt5ct.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qt5ct.cpp new file mode 100644 index 00000000..b83f43df --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qt5ct.cpp @@ -0,0 +1,115 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include "qt5ct.h" + +#ifndef QT5CT_DATADIR +#define QT5CT_DATADIR "/usr/share" +#endif + + +QString Qt5CT::configPath() +{ + return QDir::homePath() + "/.config/qt5ct/"; +} + +QString Qt5CT::configFile() +{ + return configPath() + "qt5ct.conf"; +} + +QStringList Qt5CT::iconPaths() +{ + QString xdgDataDirs = qgetenv("XDG_DATA_DIRS"); + QString xdgDataHome = qgetenv("XDG_DATA_HOME"); + + QStringList paths; + paths << QDir::homePath() + "/.icons/"; + + if(xdgDataDirs.isEmpty()) + { + paths << "/usr/share/icons"; + paths << "/usr/local/share/icons"; + } + else + { + foreach (QString p, xdgDataDirs.split(":")) + paths << QDir(p + "/icons/").absolutePath(); + } + + if(xdgDataHome.isEmpty()) + xdgDataHome = QDir::homePath() + "/.local/share"; + + paths << "/usr/share/pixmaps"; + paths << xdgDataHome + "/icons"; + paths.removeDuplicates(); + + //remove invalid + foreach (QString p, paths) + { + if(!QDir(p).exists()) + paths.removeAll(p); + } + return paths; +} + +QString Qt5CT::userStyleSheetPath() +{ + return configPath() + "qss/"; +} + +QString Qt5CT::sharedStyleSheetPath() +{ + return QT5CT_DATADIR"/qt5ct/qss/"; +} + +QString Qt5CT::userColorSchemePath() +{ + return configPath() + "colors/"; +} + +QString Qt5CT::sharedColorSchemePath() +{ + return QT5CT_DATADIR"/qt5ct/colors/"; +} + +QString Qt5CT::systemLanguageID() +{ +#ifdef Q_OS_UNIX + QByteArray v = qgetenv ("LC_ALL"); + if (v.isEmpty()) + v = qgetenv ("LC_MESSAGES"); + if (v.isEmpty()) + v = qgetenv ("LANG"); + if (!v.isEmpty()) + return QLocale (v).name(); +#endif + return QLocale::system().name(); +} diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/qt5ct.desktop b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qt5ct.desktop new file mode 100644 index 00000000..1c5f6560 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qt5ct.desktop @@ -0,0 +1,60 @@ +[Desktop Entry] +X-Desktop-File-Install-Version=0.11 +Name=Qt5 Settings + +Comment=Qt5 Configuration Tool + +Comment[ar]= أداة اعداد Qt5 +Name[ar]=إعدادات Qt5 + +Comment[bg]=Инструмент за настройка на Qt5 +Name[bg]=Настройки на Qt5 + +Comment[de]=Qt5-Konfigurationswerkzeug +Name[de]=Qt5-Einstellungen + +Comment[el]=Εργαλείο διαμόρφωσης της Qt5 +Name[el]=Ρυθμίσεις Qt5 + +Comment[es_ES]=Herramienta de configuración de QT5 +Name[es_ES]=Ajustes QT5 + +Comment[fr]=Un outil de configuration de Qt5 +Name[fr]=Paramètres de Qt5 + +Comment[he]=כלי תצורה Qt5 +Name[he]=הגדרות Qt5 + +Comment[ru]=Программа для настройки Qt5 +Name[ru]=Настройки Qt5 + +Comment[cs]=Nástroj na nastavení Qt5 +Name[cs]=Nastavení Qt5 + +Comment[it_IT]=Strumento di configurazione Qt5 +Name[it_IT]=Impostazioni Qt5 + +Comment[nl_NL]=Qt5-instellingengereedschap +Name[nl_NL]=Qt5-instellingen + +Comment[pl]=Narzędzie konfiguracji Qt5 +Name[pl]=Ustawienia Qt5 + +Comment[sk]=Qt5 konfiguračný nástroj +Name[sk]=Qt5 nastavenia + +Comment[sr]=Qt5 конфигурациони алат +Name[sr]=Qt5 поставке + +Comment[zh_CN]=Qt5 配置工具 +Name[zh_CN]=Qt5 设置 + +Comment[zh_TW]=Qt5 設定工具 +Name[zh_TW]=Qt5 設定 + + +Exec=qt5ct +Icon=preferences-desktop-theme +Terminal=false +Type=Application +Categories=Settings;DesktopSettings;Qt; diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/qt5ct.h b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qt5ct.h new file mode 100644 index 00000000..1aecd741 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qt5ct.h @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef QT5CT_H +#define QT5CT_H + +#define QT5CT_VERSION_MAJOR 0 +#define QT5CT_VERSION_MINOR 33 + +#define QT5CT_TOSTRING(s) #s +#define QT5CT_STRINGIFY(s) QT5CT_TOSTRING(s) + +#define QT5CT_VERSION_INT (QT5CT_VERSION_MAJOR<<8 | QT5CT_VERSION_MINOR) +#define QT5CT_VERSION_STR QT5CT_STRINGIFY(QT5CT_VERSION_MAJOR.QT5CT_VERSION_MINOR) + +#include +#include + +class Qt5CT +{ +public: + static QString configPath(); + static QString configFile(); + static QStringList iconPaths(); + static QString userStyleSheetPath(); + static QString sharedStyleSheetPath(); + static QString userColorSchemePath(); + static QString sharedColorSchemePath(); + static QString systemLanguageID(); + +private: + Qt5CT() {} +}; + +#endif // QT5CT_H diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/qt5ct.pro b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qt5ct.pro new file mode 100644 index 00000000..0f9724f1 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qt5ct.pro @@ -0,0 +1,57 @@ +include(../../qt5ct.pri) + +TEMPLATE = app + +QT += widgets + +SOURCES += \ + main.cpp \ + mainwindow.cpp \ + tabpage.cpp \ + appearancepage.cpp \ + fontspage.cpp \ + qt5ct.cpp \ + paletteeditdialog.cpp \ + iconthemepage.cpp \ + interfacepage.cpp \ + fontconfigdialog.cpp \ + qsspage.cpp \ + qsseditordialog.cpp + +FORMS += \ + mainwindow.ui \ + appearancepage.ui \ + fontspage.ui \ + paletteeditdialog.ui \ + iconthemepage.ui \ + interfacepage.ui \ + fontconfigdialog.ui \ + previewform.ui \ + qsspage.ui \ + qsseditordialog.ui + +HEADERS += \ + mainwindow.h \ + tabpage.h \ + appearancepage.h \ + fontspage.h \ + qt5ct.h \ + paletteeditdialog.h \ + iconthemepage.h \ + interfacepage.h \ + fontconfigdialog.h \ + qsspage.h \ + qsseditordialog.h + +!equals (DISABLE_WIDGETS,1) { + DEFINES += USE_WIDGETS +} + +RESOURCES = translations/translations.qrc + +target.path = $$BINDIR + +desktop.files = qt5ct.desktop +desktop.path = $$DATADIR/applications + +INSTALLS += target desktop diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/tabpage.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/tabpage.cpp new file mode 100644 index 00000000..251ce024 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/tabpage.cpp @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "tabpage.h" + +TabPage::TabPage(QWidget *parent) : QWidget(parent) +{ +} diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/tabpage.h b/src-qt5/core/lumina-theme-engine/src/lthemeengine/tabpage.h new file mode 100644 index 00000000..ac285054 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/tabpage.h @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef TABPAGE_H +#define TABPAGE_H + +#include + +class TabPage : public QWidget +{ + Q_OBJECT +public: + explicit TabPage(QWidget *parent = 0); + + virtual void writeSettings() = 0; +}; + +#endif // TABPAGE_H -- cgit From e8ce26568f0894b5674c9aeb5e7798aeb0e26543 Mon Sep 17 00:00:00 2001 From: q5sys Date: Tue, 18 Jul 2017 16:30:58 -0400 Subject: the changing of the names --- .../lthemeengine-qtplugin.pro | 35 ++ .../src/lthemeengine-qtplugin/lthemeengine.json | 3 + .../lthemeengineplatformtheme.cpp | 366 +++++++++++++++++++++ .../lthemeengineplatformtheme.h | 122 +++++++ .../src/lthemeengine-qtplugin/main.cpp | 6 +- .../src/lthemeengine-qtplugin/qt5ct-qtplugin.pro | 35 -- .../src/lthemeengine-qtplugin/qt5ct.json | 3 - .../lthemeengine-qtplugin/qt5ctplatformtheme.cpp | 366 --------------------- .../src/lthemeengine-qtplugin/qt5ctplatformtheme.h | 122 ------- .../src/lthemeengine-style/lthemeengine-style.pro | 26 ++ .../src/lthemeengine-style/lthemeengine.json | 3 + .../lthemeengine-style/lthemeengineproxystyle.cpp | 63 ++++ .../lthemeengine-style/lthemeengineproxystyle.h | 50 +++ .../src/lthemeengine-style/plugin.cpp | 8 +- .../src/lthemeengine-style/qt5ct-style.pro | 26 -- .../src/lthemeengine-style/qt5ct.json | 3 - .../src/lthemeengine-style/qt5ctproxystyle.cpp | 63 ---- .../src/lthemeengine-style/qt5ctproxystyle.h | 50 --- .../src/lthemeengine/appearancepage.cpp | 4 +- .../src/lthemeengine/fontspage.cpp | 2 +- .../src/lthemeengine/iconthemepage.cpp | 2 +- .../src/lthemeengine/interfacepage.cpp | 2 +- .../src/lthemeengine/lthemengine.cpp | 115 +++++++ .../src/lthemeengine/lthemengine.desktop | 60 ++++ .../src/lthemeengine/lthemengine.h | 60 ++++ .../src/lthemeengine/lthemengine.pro | 57 ++++ .../lumina-theme-engine/src/lthemeengine/main.cpp | 10 +- .../src/lthemeengine/mainwindow.cpp | 2 +- .../src/lthemeengine/paletteeditdialog.cpp | 2 +- .../src/lthemeengine/qsseditordialog.cpp | 2 +- .../src/lthemeengine/qsspage.cpp | 2 +- .../lumina-theme-engine/src/lthemeengine/qt5ct.cpp | 115 ------- .../src/lthemeengine/qt5ct.desktop | 60 ---- .../lumina-theme-engine/src/lthemeengine/qt5ct.h | 60 ---- .../lumina-theme-engine/src/lthemeengine/qt5ct.pro | 57 ---- 35 files changed, 981 insertions(+), 981 deletions(-) create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengine-qtplugin.pro create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengine.json create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengineplatformtheme.cpp create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengineplatformtheme.h delete mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/qt5ct-qtplugin.pro delete mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/qt5ct.json delete mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/qt5ctplatformtheme.cpp delete mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/qt5ctplatformtheme.h create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengine-style.pro create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengine.json create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengineproxystyle.cpp create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengineproxystyle.h delete mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine-style/qt5ct-style.pro delete mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine-style/qt5ct.json delete mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine-style/qt5ctproxystyle.cpp delete mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine-style/qt5ctproxystyle.h create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemengine.cpp create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemengine.desktop create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemengine.h create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemengine.pro delete mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/qt5ct.cpp delete mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/qt5ct.desktop delete mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/qt5ct.h delete mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/qt5ct.pro (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengine-qtplugin.pro b/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengine-qtplugin.pro new file mode 100644 index 00000000..1b9bd682 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengine-qtplugin.pro @@ -0,0 +1,35 @@ +include(../../lthemeengine.pri) + +TEMPLATE = lib +TARGET = lthemeengine +CONFIG += plugin + +greaterThan(QT_MINOR_VERSION, 7) { + QT += gui-private theme_support-private +} else { + QT += gui-private platformsupport-private +} + +!contains(DEFINES, QT_NO_DBUS):greaterThan(QT_MINOR_VERSION, 5) { + QT += dbus +} + +SOURCES += \ + main.cpp \ + lthemeengineplatformtheme.cpp \ + ../lthemeengine/qt5ct.cpp + +!equals (DISABLE_WIDGETS,1) { + QT += widgets +} + +OTHER_FILES += lthemeengine.json + +INCLUDEPATH += ../ + +HEADERS += \ + lthemeengineplatformtheme.h \ + ../lthemeengine/qt5ct.h + +target.path = $$PLUGINDIR/platformthemes +INSTALLS += target diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengine.json b/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengine.json new file mode 100644 index 00000000..433d4a88 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengine.json @@ -0,0 +1,3 @@ +{ + "Keys": [ "lthemeengine" ] +} diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengineplatformtheme.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengineplatformtheme.cpp new file mode 100644 index 00000000..ab0642dc --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengineplatformtheme.cpp @@ -0,0 +1,366 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifdef QT_WIDGETS_LIB +#include +#include +#include +#include +#endif +#include +#include + +#include +#include "lthemeengineplatformtheme.h" +#if (QT_VERSION >= QT_VERSION_CHECK(5, 7, 0)) && !defined(QT_NO_DBUS) +#include +#endif +#if !defined(QT_NO_DBUS) && !defined(QT_NO_SYSTEMTRAYICON) +#include +#include +#endif + + + +Q_LOGGING_CATEGORY(llthemeengine, "qt5ct") + +//QT_QPA_PLATFORMTHEME=lthemeengine + +Qt5CTPlatformTheme::Qt5CTPlatformTheme() +{ + if(QGuiApplication::desktopSettingsAware()) + { + readSettings(); + QMetaObject::invokeMethod(this, "applySettings", Qt::QueuedConnection); +#ifdef QT_WIDGETS_LIB + QMetaObject::invokeMethod(this, "createFSWatcher", Qt::QueuedConnection); +#endif + QGuiApplication::setFont(m_generalFont); + } + qCDebug(llthemeengine) << "using qt5ct plugin"; +#ifdef QT_WIDGETS_LIB + if(!QStyleFactory::keys().contains("lthemeengine-style")) + qCCritical(llthemeengine) << "unable to find qt5ct proxy style"; +#endif +} + +Qt5CTPlatformTheme::~Qt5CTPlatformTheme() +{ + if(m_customPalette) + delete m_customPalette; +} + +#if (QT_VERSION >= QT_VERSION_CHECK(5, 7, 0)) && !defined(QT_NO_DBUS) +QPlatformMenuBar *Qt5CTPlatformTheme::createPlatformMenuBar() const +{ + if(m_checkDBusGlobalMenu) + { + QDBusConnection conn = QDBusConnection::sessionBus(); + m_dbusGlobalMenuAvailable = conn.interface()->isServiceRegistered("com.canonical.AppMenu.Registrar"); + qCDebug(llthemeengine) << "D-Bus global menu:" << (m_dbusGlobalMenuAvailable ? "yes" : "no"); + } + return (m_dbusGlobalMenuAvailable ? new QDBusMenuBar() : nullptr); +} +#endif + +#if !defined(QT_NO_DBUS) && !defined(QT_NO_SYSTEMTRAYICON) +QPlatformSystemTrayIcon *Qt5CTPlatformTheme::createPlatformSystemTrayIcon() const +{ + if(m_checkDBusTray) + { + QDBusMenuConnection conn; + m_dbusTrayAvailable = conn.isStatusNotifierHostRegistered(); + m_checkDBusTray = false; + qCDebug(llthemeengine) << "D-Bus system tray:" << (m_dbusTrayAvailable ? "yes" : "no"); + } + return (m_dbusTrayAvailable ? new QDBusTrayIcon() : nullptr); +} +#endif + +const QPalette *Qt5CTPlatformTheme::palette(QPlatformTheme::Palette type) const +{ + Q_UNUSED(type); + return (m_usePalette ? m_customPalette : nullptr); +} + +const QFont *Qt5CTPlatformTheme::font(QPlatformTheme::Font type) const +{ + if(type == QPlatformTheme::FixedFont) + return &m_fixedFont; + return &m_generalFont; +} + +QVariant Qt5CTPlatformTheme::themeHint(QPlatformTheme::ThemeHint hint) const +{ + switch (hint) + { + case QPlatformTheme::CursorFlashTime: + return m_cursorFlashTime; + case MouseDoubleClickInterval: + return m_doubleClickInterval; + case QPlatformTheme::ToolButtonStyle: + return m_toolButtonStyle; + case QPlatformTheme::SystemIconThemeName: + return m_iconTheme; + case QPlatformTheme::StyleNames: + return QStringList() << "lthemeengine-style"; + case QPlatformTheme::IconThemeSearchPaths: + return Qt5CT::iconPaths(); + case DialogButtonBoxLayout: + return m_buttonBoxLayout; + case QPlatformTheme::UiEffects: + return m_uiEffects; +#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) + case QPlatformTheme::WheelScrollLines: + return m_wheelScrollLines; +#endif + default: + return QPlatformTheme::themeHint(hint); + } +} + +void Qt5CTPlatformTheme::applySettings() +{ + if(!QGuiApplication::desktopSettingsAware()) + return; + +#if (QT_VERSION >= QT_VERSION_CHECK(5, 5, 0)) + if(!m_update) + { + //do not override application palette + if(QCoreApplication::testAttribute(Qt::AA_SetPalette)) + { + m_usePalette = false; + qCDebug(llthemeengine) << "palette support is disabled"; + } + } +#endif + +#ifdef QT_WIDGETS_LIB + if(hasWidgets()) + { + qApp->setFont(m_generalFont); + + //Qt 5.6 or higher should be use themeHint function on application startup. + //So, there is no need to call this function first time. +#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) + if(m_update) + qApp->setWheelScrollLines(m_wheelScrollLines); +#else + qApp->setWheelScrollLines(m_wheelScrollLines); +#endif + + if(m_update && qApp->style()->objectName() == "lthemeengine-style") //ignore application style + qApp->setStyle("lthemeengine-style"); //recreate style object + + if(m_update && m_usePalette) + { + if(m_customPalette) + qApp->setPalette(*m_customPalette); + else + qApp->setPalette(qApp->style()->standardPalette()); + } + + //do not override application style + if(m_prevStyleSheet == qApp->styleSheet()) + qApp->setStyleSheet(m_userStyleSheet); + else + qCDebug(llthemeengine) << "custom style sheet is disabled"; + m_prevStyleSheet = m_userStyleSheet; + } +#endif + QGuiApplication::setFont(m_generalFont); //apply font + QIcon::setThemeName(m_iconTheme); //apply icons + if(m_customPalette && m_usePalette) + QGuiApplication::setPalette(*m_customPalette); //apply palette + +#ifdef QT_WIDGETS_LIB + if(hasWidgets()) + { + foreach (QWidget *w, qApp->allWidgets()) + { + QEvent e(QEvent::ThemeChange); + QApplication::sendEvent(w, &e); + } + } +#endif + + if(!m_update) + m_update = true; +} + +#ifdef QT_WIDGETS_LIB +void Qt5CTPlatformTheme::createFSWatcher() +{ + QFileSystemWatcher *watcher = new QFileSystemWatcher(this); + watcher->addPath(Qt5CT::configPath()); + + QTimer *timer = new QTimer(this); + timer->setSingleShot(true); + timer->setInterval(3000); + connect(watcher, SIGNAL(directoryChanged(QString)), timer, SLOT(start())); + connect(timer, SIGNAL(timeout()), SLOT(updateSettings())); +} + +void Qt5CTPlatformTheme::updateSettings() +{ + qCDebug(llthemeengine) << "updating settings.."; + readSettings(); + applySettings(); +} +#endif + +void Qt5CTPlatformTheme::readSettings() +{ + if(m_customPalette) + { + delete m_customPalette; + m_customPalette = 0; + } + + QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + + settings.beginGroup("Appearance"); + m_style = settings.value("style", "Fusion").toString(); + if(settings.value("custom_palette", false).toBool()) + { + QString schemePath = settings.value("color_scheme_path").toString(); + m_customPalette = new QPalette(loadColorScheme(schemePath)); + } + m_iconTheme = settings.value("icon_theme").toString(); + settings.endGroup(); + + settings.beginGroup("Fonts"); + m_generalFont = settings.value("general", QPlatformTheme::font(QPlatformTheme::SystemFont)).value(); + m_fixedFont = settings.value("fixed", QPlatformTheme::font(QPlatformTheme::FixedFont)).value(); + settings.endGroup(); + + settings.beginGroup("Interface"); + m_doubleClickInterval = QPlatformTheme::themeHint(QPlatformTheme::MouseDoubleClickInterval).toInt(); + m_doubleClickInterval = settings.value("double_click_interval", m_doubleClickInterval).toInt(); + m_cursorFlashTime = QPlatformTheme::themeHint(QPlatformTheme::CursorFlashTime).toInt(); + m_cursorFlashTime = settings.value("cursor_flash_time", m_cursorFlashTime).toInt(); + m_buttonBoxLayout = QPlatformTheme::themeHint(QPlatformTheme::DialogButtonBoxLayout).toInt(); + m_buttonBoxLayout = settings.value("buttonbox_layout", m_buttonBoxLayout).toInt(); + QCoreApplication::setAttribute(Qt::AA_DontShowIconsInMenus, !settings.value("menus_have_icons", true).toBool()); + m_toolButtonStyle = settings.value("toolbutton_style", Qt::ToolButtonFollowStyle).toInt(); + m_wheelScrollLines = settings.value("wheel_scroll_lines", 3).toInt(); + + //load effects + m_uiEffects = QPlatformTheme::themeHint(QPlatformTheme::UiEffects).toInt(); + if(settings.childKeys().contains("gui_effects")) + { + QStringList effectList = settings.value("gui_effects").toStringList(); + m_uiEffects = 0; + if(effectList.contains("General")) + m_uiEffects |= QPlatformTheme::GeneralUiEffect; + if(effectList.contains("AnimateMenu")) + m_uiEffects |= QPlatformTheme::AnimateMenuUiEffect; + if(effectList.contains("FadeMenu")) + m_uiEffects |= QPlatformTheme::FadeMenuUiEffect; + if(effectList.contains("AnimateCombo")) + m_uiEffects |= QPlatformTheme::AnimateComboUiEffect; + if(effectList.contains("AnimateTooltip")) + m_uiEffects |= QPlatformTheme::AnimateTooltipUiEffect; + if(effectList.contains("FadeTooltip")) + m_uiEffects |= QPlatformTheme::FadeTooltipUiEffect; + if(effectList.contains("AnimateToolBox")) + m_uiEffects |= QPlatformTheme::AnimateToolBoxUiEffect; + } + + //load style sheets +#ifdef QT_WIDGETS_LIB + QStringList qssPaths = settings.value("stylesheets").toStringList(); + m_userStyleSheet = loadStyleSheets(qssPaths); +#endif + settings.endGroup(); +} + +#ifdef QT_WIDGETS_LIB +bool Qt5CTPlatformTheme::hasWidgets() +{ + return qobject_cast (qApp) != nullptr; +} +#endif + +QString Qt5CTPlatformTheme::loadStyleSheets(const QStringList &paths) +{ + QString content; + foreach (QString path, paths) + { + if(!QFile::exists(path)) + continue; + + QFile file(path); + file.open(QIODevice::ReadOnly); + content.append(file.readAll()); + } + QRegExp regExp("//.*(\\n|$)"); + regExp.setMinimal(true); + content.remove(regExp); + return content; +} + +QPalette Qt5CTPlatformTheme::loadColorScheme(const QString &filePath) +{ + QPalette customPalette; + QSettings settings(filePath, QSettings::IniFormat); + settings.beginGroup("ColorScheme"); + QStringList activeColors = settings.value("active_colors").toStringList(); + QStringList inactiveColors = settings.value("inactive_colors").toStringList(); + QStringList disabledColors = settings.value("disabled_colors").toStringList(); + settings.endGroup(); + + if(activeColors.count() == QPalette::NColorRoles && + inactiveColors.count() == QPalette::NColorRoles && + disabledColors.count() == QPalette::NColorRoles) + { + for (int i = 0; i < QPalette::NColorRoles; i++) + { + QPalette::ColorRole role = QPalette::ColorRole(i); + customPalette.setColor(QPalette::Active, role, QColor(activeColors.at(i))); + customPalette.setColor(QPalette::Inactive, role, QColor(inactiveColors.at(i))); + customPalette.setColor(QPalette::Disabled, role, QColor(disabledColors.at(i))); + } + } + else + { + customPalette = *QPlatformTheme::palette(SystemPalette); //load fallback palette + } + + return customPalette; +} diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengineplatformtheme.h b/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengineplatformtheme.h new file mode 100644 index 00000000..5ff96844 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengineplatformtheme.h @@ -0,0 +1,122 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef QT5CTPLATFORMTHEME_H +#define QT5CTPLATFORMTHEME_H + +#include +#include +#include +#include +#include + +#if (QT_VERSION < QT_VERSION_CHECK(5, 5, 0)) +#ifndef QT_NO_SYSTEMTRAYICON +#define QT_NO_SYSTEMTRAYICON +#endif +#endif + +class QPalette; +#if !defined(QT_NO_DBUS) && !defined(QT_NO_SYSTEMTRAYICON) +class QPlatformSystemTrayIcon; +#endif + +#if (QT_VERSION >= QT_VERSION_CHECK(5, 7, 0)) && !defined(QT_NO_DBUS) +class QPlatformMenuBar; +#endif + +class Qt5CTPlatformTheme : public QObject, public QPlatformTheme +{ + Q_OBJECT +public: + Qt5CTPlatformTheme(); + + virtual ~Qt5CTPlatformTheme(); + + + //virtual QPlatformMenuItem* createPlatformMenuItem() const; + //virtual QPlatformMenu* createPlatformMenu() const; +#if (QT_VERSION >= QT_VERSION_CHECK(5, 7, 0)) && !defined(QT_NO_DBUS) + virtual QPlatformMenuBar* createPlatformMenuBar() const; +#endif + //virtual void showPlatformMenuBar() {} + //virtual bool usePlatformNativeDialog(DialogType type) const; + //virtual QPlatformDialogHelper *createPlatformDialogHelper(DialogType type) const; +#if !defined(QT_NO_DBUS) && !defined(QT_NO_SYSTEMTRAYICON) + virtual QPlatformSystemTrayIcon *createPlatformSystemTrayIcon() const; +#endif + virtual const QPalette *palette(Palette type = SystemPalette) const; + virtual const QFont *font(Font type = SystemFont) const; + virtual QVariant themeHint(ThemeHint hint) const; + //virtual QPixmap standardPixmap(StandardPixmap sp, const QSizeF &size) const; + //virtual QPixmap fileIconPixmap(const QFileInfo &fileInfo, const QSizeF &size, + // QPlatformTheme::IconOptions iconOptions = 0) const; + + //virtual QIconEngine *createIconEngine(const QString &iconName) const; + //virtual QList keyBindings(QKeySequence::StandardKey key) const; + //virtual QString standardButtonText(int button) const; + +private slots: + void applySettings(); +#ifdef QT_WIDGETS_LIB + void createFSWatcher(); + void updateSettings(); +#endif + +private: + void readSettings(); +#ifdef QT_WIDGETS_LIB + bool hasWidgets(); +#endif + QString loadStyleSheets(const QStringList &paths); + QPalette loadColorScheme(const QString &filePath); + QString m_style, m_iconTheme, m_userStyleSheet, m_prevStyleSheet; + QPalette *m_customPalette = nullptr; + QFont m_generalFont, m_fixedFont; + int m_doubleClickInterval; + int m_cursorFlashTime; + int m_uiEffects; + int m_buttonBoxLayout; + bool m_update = false; + bool m_usePalette = true; + int m_toolButtonStyle = Qt::ToolButtonFollowStyle; + int m_wheelScrollLines = 3; +#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) && !defined(QT_NO_DBUS) + mutable bool m_dbusGlobalMenuAvailable = false; + mutable bool m_checkDBusGlobalMenu = true; +#endif +#if !defined(QT_NO_DBUS) && !defined(QT_NO_SYSTEMTRAYICON) + mutable bool m_dbusTrayAvailable = false; + mutable bool m_checkDBusTray = true; +#endif + +}; + +Q_DECLARE_LOGGING_CATEGORY(llthemeengine) + +#endif // QT5CTPLATFORMTHEME_H diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/main.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/main.cpp index e49004d8..e97db782 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/main.cpp +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/main.cpp @@ -27,14 +27,14 @@ */ #include -#include "qt5ctplatformtheme.h" +#include "lthemeengineplatformtheme.h" QT_BEGIN_NAMESPACE class Qt5CTPlatformThemePlugin: public QPlatformThemePlugin { Q_OBJECT - Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QPA.QPlatformThemeFactoryInterface.5.1" FILE "qt5ct.json") + Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QPA.QPlatformThemeFactoryInterface.5.1" FILE "lthemeengine.json") public: QPlatformTheme *create(const QString &key, const QStringList ¶ms); }; @@ -42,7 +42,7 @@ public: QPlatformTheme *Qt5CTPlatformThemePlugin::create(const QString &key, const QStringList ¶ms) { Q_UNUSED(params); - if (key.toLower() == "qt5ct") + if (key.toLower() == "lthemeengine") return new Qt5CTPlatformTheme(); return NULL; } diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/qt5ct-qtplugin.pro b/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/qt5ct-qtplugin.pro deleted file mode 100644 index 9dd3eae4..00000000 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/qt5ct-qtplugin.pro +++ /dev/null @@ -1,35 +0,0 @@ -include(../../qt5ct.pri) - -TEMPLATE = lib -TARGET = qt5ct -CONFIG += plugin - -greaterThan(QT_MINOR_VERSION, 7) { - QT += gui-private theme_support-private -} else { - QT += gui-private platformsupport-private -} - -!contains(DEFINES, QT_NO_DBUS):greaterThan(QT_MINOR_VERSION, 5) { - QT += dbus -} - -SOURCES += \ - main.cpp \ - qt5ctplatformtheme.cpp \ - ../qt5ct/qt5ct.cpp - -!equals (DISABLE_WIDGETS,1) { - QT += widgets -} - -OTHER_FILES += qt5ct.json - -INCLUDEPATH += ../ - -HEADERS += \ - qt5ctplatformtheme.h \ - ../qt5ct/qt5ct.h - -target.path = $$PLUGINDIR/platformthemes -INSTALLS += target diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/qt5ct.json b/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/qt5ct.json deleted file mode 100644 index 55466151..00000000 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/qt5ct.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "Keys": [ "qt5ct" ] -} diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/qt5ctplatformtheme.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/qt5ctplatformtheme.cpp deleted file mode 100644 index 4c20d68f..00000000 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/qt5ctplatformtheme.cpp +++ /dev/null @@ -1,366 +0,0 @@ -/* - * Copyright (c) 2014-2017, Ilya Kotov - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#ifdef QT_WIDGETS_LIB -#include -#include -#include -#include -#endif -#include -#include - -#include -#include "qt5ctplatformtheme.h" -#if (QT_VERSION >= QT_VERSION_CHECK(5, 7, 0)) && !defined(QT_NO_DBUS) -#include -#endif -#if !defined(QT_NO_DBUS) && !defined(QT_NO_SYSTEMTRAYICON) -#include -#include -#endif - - - -Q_LOGGING_CATEGORY(lqt5ct, "qt5ct") - -//QT_QPA_PLATFORMTHEME=qt5ct - -Qt5CTPlatformTheme::Qt5CTPlatformTheme() -{ - if(QGuiApplication::desktopSettingsAware()) - { - readSettings(); - QMetaObject::invokeMethod(this, "applySettings", Qt::QueuedConnection); -#ifdef QT_WIDGETS_LIB - QMetaObject::invokeMethod(this, "createFSWatcher", Qt::QueuedConnection); -#endif - QGuiApplication::setFont(m_generalFont); - } - qCDebug(lqt5ct) << "using qt5ct plugin"; -#ifdef QT_WIDGETS_LIB - if(!QStyleFactory::keys().contains("qt5ct-style")) - qCCritical(lqt5ct) << "unable to find qt5ct proxy style"; -#endif -} - -Qt5CTPlatformTheme::~Qt5CTPlatformTheme() -{ - if(m_customPalette) - delete m_customPalette; -} - -#if (QT_VERSION >= QT_VERSION_CHECK(5, 7, 0)) && !defined(QT_NO_DBUS) -QPlatformMenuBar *Qt5CTPlatformTheme::createPlatformMenuBar() const -{ - if(m_checkDBusGlobalMenu) - { - QDBusConnection conn = QDBusConnection::sessionBus(); - m_dbusGlobalMenuAvailable = conn.interface()->isServiceRegistered("com.canonical.AppMenu.Registrar"); - qCDebug(lqt5ct) << "D-Bus global menu:" << (m_dbusGlobalMenuAvailable ? "yes" : "no"); - } - return (m_dbusGlobalMenuAvailable ? new QDBusMenuBar() : nullptr); -} -#endif - -#if !defined(QT_NO_DBUS) && !defined(QT_NO_SYSTEMTRAYICON) -QPlatformSystemTrayIcon *Qt5CTPlatformTheme::createPlatformSystemTrayIcon() const -{ - if(m_checkDBusTray) - { - QDBusMenuConnection conn; - m_dbusTrayAvailable = conn.isStatusNotifierHostRegistered(); - m_checkDBusTray = false; - qCDebug(lqt5ct) << "D-Bus system tray:" << (m_dbusTrayAvailable ? "yes" : "no"); - } - return (m_dbusTrayAvailable ? new QDBusTrayIcon() : nullptr); -} -#endif - -const QPalette *Qt5CTPlatformTheme::palette(QPlatformTheme::Palette type) const -{ - Q_UNUSED(type); - return (m_usePalette ? m_customPalette : nullptr); -} - -const QFont *Qt5CTPlatformTheme::font(QPlatformTheme::Font type) const -{ - if(type == QPlatformTheme::FixedFont) - return &m_fixedFont; - return &m_generalFont; -} - -QVariant Qt5CTPlatformTheme::themeHint(QPlatformTheme::ThemeHint hint) const -{ - switch (hint) - { - case QPlatformTheme::CursorFlashTime: - return m_cursorFlashTime; - case MouseDoubleClickInterval: - return m_doubleClickInterval; - case QPlatformTheme::ToolButtonStyle: - return m_toolButtonStyle; - case QPlatformTheme::SystemIconThemeName: - return m_iconTheme; - case QPlatformTheme::StyleNames: - return QStringList() << "qt5ct-style"; - case QPlatformTheme::IconThemeSearchPaths: - return Qt5CT::iconPaths(); - case DialogButtonBoxLayout: - return m_buttonBoxLayout; - case QPlatformTheme::UiEffects: - return m_uiEffects; -#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) - case QPlatformTheme::WheelScrollLines: - return m_wheelScrollLines; -#endif - default: - return QPlatformTheme::themeHint(hint); - } -} - -void Qt5CTPlatformTheme::applySettings() -{ - if(!QGuiApplication::desktopSettingsAware()) - return; - -#if (QT_VERSION >= QT_VERSION_CHECK(5, 5, 0)) - if(!m_update) - { - //do not override application palette - if(QCoreApplication::testAttribute(Qt::AA_SetPalette)) - { - m_usePalette = false; - qCDebug(lqt5ct) << "palette support is disabled"; - } - } -#endif - -#ifdef QT_WIDGETS_LIB - if(hasWidgets()) - { - qApp->setFont(m_generalFont); - - //Qt 5.6 or higher should be use themeHint function on application startup. - //So, there is no need to call this function first time. -#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) - if(m_update) - qApp->setWheelScrollLines(m_wheelScrollLines); -#else - qApp->setWheelScrollLines(m_wheelScrollLines); -#endif - - if(m_update && qApp->style()->objectName() == "qt5ct-style") //ignore application style - qApp->setStyle("qt5ct-style"); //recreate style object - - if(m_update && m_usePalette) - { - if(m_customPalette) - qApp->setPalette(*m_customPalette); - else - qApp->setPalette(qApp->style()->standardPalette()); - } - - //do not override application style - if(m_prevStyleSheet == qApp->styleSheet()) - qApp->setStyleSheet(m_userStyleSheet); - else - qCDebug(lqt5ct) << "custom style sheet is disabled"; - m_prevStyleSheet = m_userStyleSheet; - } -#endif - QGuiApplication::setFont(m_generalFont); //apply font - QIcon::setThemeName(m_iconTheme); //apply icons - if(m_customPalette && m_usePalette) - QGuiApplication::setPalette(*m_customPalette); //apply palette - -#ifdef QT_WIDGETS_LIB - if(hasWidgets()) - { - foreach (QWidget *w, qApp->allWidgets()) - { - QEvent e(QEvent::ThemeChange); - QApplication::sendEvent(w, &e); - } - } -#endif - - if(!m_update) - m_update = true; -} - -#ifdef QT_WIDGETS_LIB -void Qt5CTPlatformTheme::createFSWatcher() -{ - QFileSystemWatcher *watcher = new QFileSystemWatcher(this); - watcher->addPath(Qt5CT::configPath()); - - QTimer *timer = new QTimer(this); - timer->setSingleShot(true); - timer->setInterval(3000); - connect(watcher, SIGNAL(directoryChanged(QString)), timer, SLOT(start())); - connect(timer, SIGNAL(timeout()), SLOT(updateSettings())); -} - -void Qt5CTPlatformTheme::updateSettings() -{ - qCDebug(lqt5ct) << "updating settings.."; - readSettings(); - applySettings(); -} -#endif - -void Qt5CTPlatformTheme::readSettings() -{ - if(m_customPalette) - { - delete m_customPalette; - m_customPalette = 0; - } - - QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); - - settings.beginGroup("Appearance"); - m_style = settings.value("style", "Fusion").toString(); - if(settings.value("custom_palette", false).toBool()) - { - QString schemePath = settings.value("color_scheme_path").toString(); - m_customPalette = new QPalette(loadColorScheme(schemePath)); - } - m_iconTheme = settings.value("icon_theme").toString(); - settings.endGroup(); - - settings.beginGroup("Fonts"); - m_generalFont = settings.value("general", QPlatformTheme::font(QPlatformTheme::SystemFont)).value(); - m_fixedFont = settings.value("fixed", QPlatformTheme::font(QPlatformTheme::FixedFont)).value(); - settings.endGroup(); - - settings.beginGroup("Interface"); - m_doubleClickInterval = QPlatformTheme::themeHint(QPlatformTheme::MouseDoubleClickInterval).toInt(); - m_doubleClickInterval = settings.value("double_click_interval", m_doubleClickInterval).toInt(); - m_cursorFlashTime = QPlatformTheme::themeHint(QPlatformTheme::CursorFlashTime).toInt(); - m_cursorFlashTime = settings.value("cursor_flash_time", m_cursorFlashTime).toInt(); - m_buttonBoxLayout = QPlatformTheme::themeHint(QPlatformTheme::DialogButtonBoxLayout).toInt(); - m_buttonBoxLayout = settings.value("buttonbox_layout", m_buttonBoxLayout).toInt(); - QCoreApplication::setAttribute(Qt::AA_DontShowIconsInMenus, !settings.value("menus_have_icons", true).toBool()); - m_toolButtonStyle = settings.value("toolbutton_style", Qt::ToolButtonFollowStyle).toInt(); - m_wheelScrollLines = settings.value("wheel_scroll_lines", 3).toInt(); - - //load effects - m_uiEffects = QPlatformTheme::themeHint(QPlatformTheme::UiEffects).toInt(); - if(settings.childKeys().contains("gui_effects")) - { - QStringList effectList = settings.value("gui_effects").toStringList(); - m_uiEffects = 0; - if(effectList.contains("General")) - m_uiEffects |= QPlatformTheme::GeneralUiEffect; - if(effectList.contains("AnimateMenu")) - m_uiEffects |= QPlatformTheme::AnimateMenuUiEffect; - if(effectList.contains("FadeMenu")) - m_uiEffects |= QPlatformTheme::FadeMenuUiEffect; - if(effectList.contains("AnimateCombo")) - m_uiEffects |= QPlatformTheme::AnimateComboUiEffect; - if(effectList.contains("AnimateTooltip")) - m_uiEffects |= QPlatformTheme::AnimateTooltipUiEffect; - if(effectList.contains("FadeTooltip")) - m_uiEffects |= QPlatformTheme::FadeTooltipUiEffect; - if(effectList.contains("AnimateToolBox")) - m_uiEffects |= QPlatformTheme::AnimateToolBoxUiEffect; - } - - //load style sheets -#ifdef QT_WIDGETS_LIB - QStringList qssPaths = settings.value("stylesheets").toStringList(); - m_userStyleSheet = loadStyleSheets(qssPaths); -#endif - settings.endGroup(); -} - -#ifdef QT_WIDGETS_LIB -bool Qt5CTPlatformTheme::hasWidgets() -{ - return qobject_cast (qApp) != nullptr; -} -#endif - -QString Qt5CTPlatformTheme::loadStyleSheets(const QStringList &paths) -{ - QString content; - foreach (QString path, paths) - { - if(!QFile::exists(path)) - continue; - - QFile file(path); - file.open(QIODevice::ReadOnly); - content.append(file.readAll()); - } - QRegExp regExp("//.*(\\n|$)"); - regExp.setMinimal(true); - content.remove(regExp); - return content; -} - -QPalette Qt5CTPlatformTheme::loadColorScheme(const QString &filePath) -{ - QPalette customPalette; - QSettings settings(filePath, QSettings::IniFormat); - settings.beginGroup("ColorScheme"); - QStringList activeColors = settings.value("active_colors").toStringList(); - QStringList inactiveColors = settings.value("inactive_colors").toStringList(); - QStringList disabledColors = settings.value("disabled_colors").toStringList(); - settings.endGroup(); - - if(activeColors.count() == QPalette::NColorRoles && - inactiveColors.count() == QPalette::NColorRoles && - disabledColors.count() == QPalette::NColorRoles) - { - for (int i = 0; i < QPalette::NColorRoles; i++) - { - QPalette::ColorRole role = QPalette::ColorRole(i); - customPalette.setColor(QPalette::Active, role, QColor(activeColors.at(i))); - customPalette.setColor(QPalette::Inactive, role, QColor(inactiveColors.at(i))); - customPalette.setColor(QPalette::Disabled, role, QColor(disabledColors.at(i))); - } - } - else - { - customPalette = *QPlatformTheme::palette(SystemPalette); //load fallback palette - } - - return customPalette; -} diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/qt5ctplatformtheme.h b/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/qt5ctplatformtheme.h deleted file mode 100644 index 8eb3cf6a..00000000 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/qt5ctplatformtheme.h +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright (c) 2014-2017, Ilya Kotov - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef QT5CTPLATFORMTHEME_H -#define QT5CTPLATFORMTHEME_H - -#include -#include -#include -#include -#include - -#if (QT_VERSION < QT_VERSION_CHECK(5, 5, 0)) -#ifndef QT_NO_SYSTEMTRAYICON -#define QT_NO_SYSTEMTRAYICON -#endif -#endif - -class QPalette; -#if !defined(QT_NO_DBUS) && !defined(QT_NO_SYSTEMTRAYICON) -class QPlatformSystemTrayIcon; -#endif - -#if (QT_VERSION >= QT_VERSION_CHECK(5, 7, 0)) && !defined(QT_NO_DBUS) -class QPlatformMenuBar; -#endif - -class Qt5CTPlatformTheme : public QObject, public QPlatformTheme -{ - Q_OBJECT -public: - Qt5CTPlatformTheme(); - - virtual ~Qt5CTPlatformTheme(); - - - //virtual QPlatformMenuItem* createPlatformMenuItem() const; - //virtual QPlatformMenu* createPlatformMenu() const; -#if (QT_VERSION >= QT_VERSION_CHECK(5, 7, 0)) && !defined(QT_NO_DBUS) - virtual QPlatformMenuBar* createPlatformMenuBar() const; -#endif - //virtual void showPlatformMenuBar() {} - //virtual bool usePlatformNativeDialog(DialogType type) const; - //virtual QPlatformDialogHelper *createPlatformDialogHelper(DialogType type) const; -#if !defined(QT_NO_DBUS) && !defined(QT_NO_SYSTEMTRAYICON) - virtual QPlatformSystemTrayIcon *createPlatformSystemTrayIcon() const; -#endif - virtual const QPalette *palette(Palette type = SystemPalette) const; - virtual const QFont *font(Font type = SystemFont) const; - virtual QVariant themeHint(ThemeHint hint) const; - //virtual QPixmap standardPixmap(StandardPixmap sp, const QSizeF &size) const; - //virtual QPixmap fileIconPixmap(const QFileInfo &fileInfo, const QSizeF &size, - // QPlatformTheme::IconOptions iconOptions = 0) const; - - //virtual QIconEngine *createIconEngine(const QString &iconName) const; - //virtual QList keyBindings(QKeySequence::StandardKey key) const; - //virtual QString standardButtonText(int button) const; - -private slots: - void applySettings(); -#ifdef QT_WIDGETS_LIB - void createFSWatcher(); - void updateSettings(); -#endif - -private: - void readSettings(); -#ifdef QT_WIDGETS_LIB - bool hasWidgets(); -#endif - QString loadStyleSheets(const QStringList &paths); - QPalette loadColorScheme(const QString &filePath); - QString m_style, m_iconTheme, m_userStyleSheet, m_prevStyleSheet; - QPalette *m_customPalette = nullptr; - QFont m_generalFont, m_fixedFont; - int m_doubleClickInterval; - int m_cursorFlashTime; - int m_uiEffects; - int m_buttonBoxLayout; - bool m_update = false; - bool m_usePalette = true; - int m_toolButtonStyle = Qt::ToolButtonFollowStyle; - int m_wheelScrollLines = 3; -#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) && !defined(QT_NO_DBUS) - mutable bool m_dbusGlobalMenuAvailable = false; - mutable bool m_checkDBusGlobalMenu = true; -#endif -#if !defined(QT_NO_DBUS) && !defined(QT_NO_SYSTEMTRAYICON) - mutable bool m_dbusTrayAvailable = false; - mutable bool m_checkDBusTray = true; -#endif - -}; - -Q_DECLARE_LOGGING_CATEGORY(lqt5ct) - -#endif // QT5CTPLATFORMTHEME_H diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengine-style.pro b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengine-style.pro new file mode 100644 index 00000000..f8584138 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengine-style.pro @@ -0,0 +1,26 @@ +include(../../lthemeengine.pri) + +TEMPLATE = lib +TARGET = lthemeengine-style +QT += widgets + +# Input + +CONFIG += plugin + +target.path = $$PLUGINDIR/styles +INSTALLS += target + +INCLUDEPATH += ../ + +HEADERS += \ + lthemeengineproxystyle.h \ + ../lthemeengine/qt5ct.h + +SOURCES += \ + plugin.cpp \ + lthemeengineproxystyle.cpp \ + ../lthemeengine/qt5ct.cpp + +OTHER_FILES += \ + lthemeengine.json diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengine.json b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengine.json new file mode 100644 index 00000000..e8aae055 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengine.json @@ -0,0 +1,3 @@ +{ + "Keys": [ "lthemeengine-style" ] +} diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengineproxystyle.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengineproxystyle.cpp new file mode 100644 index 00000000..8e72aff2 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengineproxystyle.cpp @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include "lthemeengineproxystyle.h" + +Qt5CTProxyStyle::Qt5CTProxyStyle(const QString &key) : + QProxyStyle(key) +{ + QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + m_dialogButtonsHaveIcons = settings.value("Interface/dialog_buttons_have_icons", Qt::PartiallyChecked).toInt(); + m_activateItemOnSingleClick = settings.value("Interface/activate_item_on_single_click", Qt::PartiallyChecked).toInt(); +} + +Qt5CTProxyStyle::~Qt5CTProxyStyle() +{ + //qDebug("%s", Q_FUNC_INFO); +} + +int Qt5CTProxyStyle::styleHint(QStyle::StyleHint hint, const QStyleOption *option, const QWidget *widget, QStyleHintReturn *returnData) const +{ + if(hint == QStyle::SH_DialogButtonBox_ButtonsHaveIcons) + { + if(m_dialogButtonsHaveIcons == Qt::Unchecked) + return 0; + else if(m_dialogButtonsHaveIcons == Qt::Checked) + return 1; + } + else if(hint == QStyle::QStyle::SH_ItemView_ActivateItemOnSingleClick) + { + if(m_activateItemOnSingleClick == Qt::Unchecked) + return 0; + else if(m_activateItemOnSingleClick == Qt::Checked) + return 1; + } + return QProxyStyle::styleHint(hint, option, widget, returnData); +} diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengineproxystyle.h b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengineproxystyle.h new file mode 100644 index 00000000..842247cf --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengineproxystyle.h @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef QT5CTPROXYSTYLE_H +#define QT5CTPROXYSTYLE_H + +#include + +class Qt5CTProxyStyle : public QProxyStyle +{ + Q_OBJECT +public: + explicit Qt5CTProxyStyle(const QString &key); + + virtual ~Qt5CTProxyStyle(); + + int styleHint(StyleHint hint, const QStyleOption *option, const QWidget *widget, QStyleHintReturn *returnData) const; + +private: + int m_dialogButtonsHaveIcons; + int m_activateItemOnSingleClick; + +}; + +#endif // QT5CTPROXYSTYLE_H diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/plugin.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/plugin.cpp index 345746f3..35ff6477 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/plugin.cpp +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/plugin.cpp @@ -29,13 +29,13 @@ #include #include #include -#include -#include "qt5ctproxystyle.h" +#include +#include "lthemeengineproxystyle.h" class Qt5CTStylePlugin : public QStylePlugin { Q_OBJECT - Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QStyleFactoryInterface" FILE "qt5ct.json") + Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QStyleFactoryInterface" FILE "lthemeengine.json") public: QStyle *create(const QString &key); @@ -43,7 +43,7 @@ public: QStyle *Qt5CTStylePlugin::create(const QString &key) { - if (key == "qt5ct-style") + if (key == "lthemeengine-style") { QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); QString style = settings.value("Appearance/style", "Fusion").toString(); diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/qt5ct-style.pro b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/qt5ct-style.pro deleted file mode 100644 index e6f6dc1c..00000000 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/qt5ct-style.pro +++ /dev/null @@ -1,26 +0,0 @@ -include(../../qt5ct.pri) - -TEMPLATE = lib -TARGET = qt5ct-style -QT += widgets - -# Input - -CONFIG += plugin - -target.path = $$PLUGINDIR/styles -INSTALLS += target - -INCLUDEPATH += ../ - -HEADERS += \ - qt5ctproxystyle.h \ - ../qt5ct/qt5ct.h - -SOURCES += \ - plugin.cpp \ - qt5ctproxystyle.cpp \ - ../qt5ct/qt5ct.cpp - -OTHER_FILES += \ - qt5ct.json diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/qt5ct.json b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/qt5ct.json deleted file mode 100644 index 3c42f2d3..00000000 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/qt5ct.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "Keys": [ "qt5ct-style" ] -} diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/qt5ctproxystyle.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/qt5ctproxystyle.cpp deleted file mode 100644 index f3b33d5e..00000000 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/qt5ctproxystyle.cpp +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (c) 2014-2017, Ilya Kotov - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include -#include "qt5ctproxystyle.h" - -Qt5CTProxyStyle::Qt5CTProxyStyle(const QString &key) : - QProxyStyle(key) -{ - QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); - m_dialogButtonsHaveIcons = settings.value("Interface/dialog_buttons_have_icons", Qt::PartiallyChecked).toInt(); - m_activateItemOnSingleClick = settings.value("Interface/activate_item_on_single_click", Qt::PartiallyChecked).toInt(); -} - -Qt5CTProxyStyle::~Qt5CTProxyStyle() -{ - //qDebug("%s", Q_FUNC_INFO); -} - -int Qt5CTProxyStyle::styleHint(QStyle::StyleHint hint, const QStyleOption *option, const QWidget *widget, QStyleHintReturn *returnData) const -{ - if(hint == QStyle::SH_DialogButtonBox_ButtonsHaveIcons) - { - if(m_dialogButtonsHaveIcons == Qt::Unchecked) - return 0; - else if(m_dialogButtonsHaveIcons == Qt::Checked) - return 1; - } - else if(hint == QStyle::QStyle::SH_ItemView_ActivateItemOnSingleClick) - { - if(m_activateItemOnSingleClick == Qt::Unchecked) - return 0; - else if(m_activateItemOnSingleClick == Qt::Checked) - return 1; - } - return QProxyStyle::styleHint(hint, option, widget, returnData); -} diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/qt5ctproxystyle.h b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/qt5ctproxystyle.h deleted file mode 100644 index 842247cf..00000000 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/qt5ctproxystyle.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) 2014-2017, Ilya Kotov - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef QT5CTPROXYSTYLE_H -#define QT5CTPROXYSTYLE_H - -#include - -class Qt5CTProxyStyle : public QProxyStyle -{ - Q_OBJECT -public: - explicit Qt5CTProxyStyle(const QString &key); - - virtual ~Qt5CTProxyStyle(); - - int styleHint(StyleHint hint, const QStyleOption *option, const QWidget *widget, QStyleHintReturn *returnData) const; - -private: - int m_dialogButtonsHaveIcons; - int m_activateItemOnSingleClick; - -}; - -#endif // QT5CTPROXYSTYLE_H diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/appearancepage.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/appearancepage.cpp index 4183dec1..13dcc395 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/appearancepage.cpp +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/appearancepage.cpp @@ -34,7 +34,7 @@ #include #include #include -#include "qt5ct.h" +#include "lthemeengine.h" #include "appearancepage.h" #include "paletteeditdialog.h" #include "ui_appearancepage.h" @@ -46,7 +46,7 @@ AppearancePage::AppearancePage(QWidget *parent) : { m_ui->setupUi(this); QStringList keys = QStyleFactory::keys(); - keys.removeAll("qt5ct-style"); //hide qt5ct proxy style + keys.removeAll("lthemeengine-style"); //hide lthemeengine proxy style m_ui->styleComboBox->addItems(keys); connect(m_ui->paletteComboBox, SIGNAL(activated(int)), SLOT(updatePalette())); diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/fontspage.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/fontspage.cpp index ac9fb164..bc8a4ee0 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/fontspage.cpp +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/fontspage.cpp @@ -33,7 +33,7 @@ #include #include #include -#include "qt5ct.h" +#include "lthemeengine.h" #include "fontspage.h" #include "fontconfigdialog.h" #include "ui_fontspage.h" diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/iconthemepage.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/iconthemepage.cpp index ee4d638d..d96c485c 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/iconthemepage.cpp +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/iconthemepage.cpp @@ -33,7 +33,7 @@ #include #include #include -#include "qt5ct.h" +#include "lthemeengine.h" #include "iconthemepage.h" #include "ui_iconthemepage.h" diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/interfacepage.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/interfacepage.cpp index fc5c0662..fe953e78 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/interfacepage.cpp +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/interfacepage.cpp @@ -29,7 +29,7 @@ #include #include #include -#include "qt5ct.h" +#include "lthemeengine.h" #include "interfacepage.h" #include "ui_interfacepage.h" diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemengine.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemengine.cpp new file mode 100644 index 00000000..ed3c909e --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemengine.cpp @@ -0,0 +1,115 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include "lthemeengine.h" + +#ifndef QT5CT_DATADIR +#define QT5CT_DATADIR "/usr/share" +#endif + + +QString Qt5CT::configPath() +{ + return QDir::homePath() + "/.config/lthemeengine/"; +} + +QString Qt5CT::configFile() +{ + return configPath() + "lthemeengine.conf"; +} + +QStringList Qt5CT::iconPaths() +{ + QString xdgDataDirs = qgetenv("XDG_DATA_DIRS"); + QString xdgDataHome = qgetenv("XDG_DATA_HOME"); + + QStringList paths; + paths << QDir::homePath() + "/.icons/"; + + if(xdgDataDirs.isEmpty()) + { + paths << "/usr/share/icons"; + paths << "/usr/local/share/icons"; + } + else + { + foreach (QString p, xdgDataDirs.split(":")) + paths << QDir(p + "/icons/").absolutePath(); + } + + if(xdgDataHome.isEmpty()) + xdgDataHome = QDir::homePath() + "/.local/share"; + + paths << "/usr/share/pixmaps"; + paths << xdgDataHome + "/icons"; + paths.removeDuplicates(); + + //remove invalid + foreach (QString p, paths) + { + if(!QDir(p).exists()) + paths.removeAll(p); + } + return paths; +} + +QString Qt5CT::userStyleSheetPath() +{ + return configPath() + "qss/"; +} + +QString Qt5CT::sharedStyleSheetPath() +{ + return QT5CT_DATADIR"/lthemeengine/qss/"; +} + +QString Qt5CT::userColorSchemePath() +{ + return configPath() + "colors/"; +} + +QString Qt5CT::sharedColorSchemePath() +{ + return QT5CT_DATADIR"/lthemeengine/colors/"; +} + +QString Qt5CT::systemLanguageID() +{ +#ifdef Q_OS_UNIX + QByteArray v = qgetenv ("LC_ALL"); + if (v.isEmpty()) + v = qgetenv ("LC_MESSAGES"); + if (v.isEmpty()) + v = qgetenv ("LANG"); + if (!v.isEmpty()) + return QLocale (v).name(); +#endif + return QLocale::system().name(); +} diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemengine.desktop b/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemengine.desktop new file mode 100644 index 00000000..be2bde14 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemengine.desktop @@ -0,0 +1,60 @@ +[Desktop Entry] +X-Desktop-File-Install-Version=0.11 +Name=Qt5 Settings + +Comment=Qt5 Configuration Tool + +Comment[ar]= أداة اعداد Qt5 +Name[ar]=إعدادات Qt5 + +Comment[bg]=Инструмент за настройка на Qt5 +Name[bg]=Настройки на Qt5 + +Comment[de]=Qt5-Konfigurationswerkzeug +Name[de]=Qt5-Einstellungen + +Comment[el]=Εργαλείο διαμόρφωσης της Qt5 +Name[el]=Ρυθμίσεις Qt5 + +Comment[es_ES]=Herramienta de configuración de QT5 +Name[es_ES]=Ajustes QT5 + +Comment[fr]=Un outil de configuration de Qt5 +Name[fr]=Paramètres de Qt5 + +Comment[he]=כלי תצורה Qt5 +Name[he]=הגדרות Qt5 + +Comment[ru]=Программа для настройки Qt5 +Name[ru]=Настройки Qt5 + +Comment[cs]=Nástroj na nastavení Qt5 +Name[cs]=Nastavení Qt5 + +Comment[it_IT]=Strumento di configurazione Qt5 +Name[it_IT]=Impostazioni Qt5 + +Comment[nl_NL]=Qt5-instellingengereedschap +Name[nl_NL]=Qt5-instellingen + +Comment[pl]=Narzędzie konfiguracji Qt5 +Name[pl]=Ustawienia Qt5 + +Comment[sk]=Qt5 konfiguračný nástroj +Name[sk]=Qt5 nastavenia + +Comment[sr]=Qt5 конфигурациони алат +Name[sr]=Qt5 поставке + +Comment[zh_CN]=Qt5 配置工具 +Name[zh_CN]=Qt5 设置 + +Comment[zh_TW]=Qt5 設定工具 +Name[zh_TW]=Qt5 設定 + + +Exec=lthemeengine +Icon=preferences-desktop-theme +Terminal=false +Type=Application +Categories=Settings;DesktopSettings;Qt; diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemengine.h b/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemengine.h new file mode 100644 index 00000000..1aecd741 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemengine.h @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef QT5CT_H +#define QT5CT_H + +#define QT5CT_VERSION_MAJOR 0 +#define QT5CT_VERSION_MINOR 33 + +#define QT5CT_TOSTRING(s) #s +#define QT5CT_STRINGIFY(s) QT5CT_TOSTRING(s) + +#define QT5CT_VERSION_INT (QT5CT_VERSION_MAJOR<<8 | QT5CT_VERSION_MINOR) +#define QT5CT_VERSION_STR QT5CT_STRINGIFY(QT5CT_VERSION_MAJOR.QT5CT_VERSION_MINOR) + +#include +#include + +class Qt5CT +{ +public: + static QString configPath(); + static QString configFile(); + static QStringList iconPaths(); + static QString userStyleSheetPath(); + static QString sharedStyleSheetPath(); + static QString userColorSchemePath(); + static QString sharedColorSchemePath(); + static QString systemLanguageID(); + +private: + Qt5CT() {} +}; + +#endif // QT5CT_H diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemengine.pro b/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemengine.pro new file mode 100644 index 00000000..07677fe3 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemengine.pro @@ -0,0 +1,57 @@ +include(../../lthemeengine.pri) + +TEMPLATE = app + +QT += widgets + +SOURCES += \ + main.cpp \ + mainwindow.cpp \ + tabpage.cpp \ + appearancepage.cpp \ + fontspage.cpp \ + lthemeengine.cpp \ + paletteeditdialog.cpp \ + iconthemepage.cpp \ + interfacepage.cpp \ + fontconfigdialog.cpp \ + qsspage.cpp \ + qsseditordialog.cpp + +FORMS += \ + mainwindow.ui \ + appearancepage.ui \ + fontspage.ui \ + paletteeditdialog.ui \ + iconthemepage.ui \ + interfacepage.ui \ + fontconfigdialog.ui \ + previewform.ui \ + qsspage.ui \ + qsseditordialog.ui + +HEADERS += \ + mainwindow.h \ + tabpage.h \ + appearancepage.h \ + fontspage.h \ + lthemeengine.h \ + paletteeditdialog.h \ + iconthemepage.h \ + interfacepage.h \ + fontconfigdialog.h \ + qsspage.h \ + qsseditordialog.h + +!equals (DISABLE_WIDGETS,1) { + DEFINES += USE_WIDGETS +} + +RESOURCES = translations/translations.qrc + +target.path = $$BINDIR + +desktop.files = lthemeengine.desktop +desktop.path = $$DATADIR/applications + +INSTALLS += target desktop diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/main.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/main.cpp index d15c9c01..f4a14222 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/main.cpp +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/main.cpp @@ -29,7 +29,7 @@ #include #include #include -#include "qt5ct.h" +#include "lthemeengine.h" #include #include #include @@ -41,7 +41,7 @@ int main(int argc, char **argv) QApplication app(argc, argv); QTranslator translator; QString locale = Qt5CT::systemLanguageID(); - translator.load(QString(":/qt5ct_") + locale); + translator.load(QString(":/lthemeengine_") + locale); app.installTranslator(&translator); QTranslator qt_translator; @@ -60,15 +60,15 @@ int main(int argc, char **argv) errorMessages << app.translate("main", "Please remove the QT_STYLE_OVERRIDE environment variable"); } - if(env.value("QT_QPA_PLATFORMTHEME") != "qt5ct") + if(env.value("QT_QPA_PLATFORMTHEME") != "lthemeengine") { errorMessages << app.translate("main", "The QT_QPA_PLATFORMTHEME environment " "variable is not set correctly"); } - if(!QStyleFactory::keys().contains("qt5ct-style")) + if(!QStyleFactory::keys().contains("lthemeengine-style")) { - errorMessages << app.translate("main", "Unable to find libqt5ct-style.so"); + errorMessages << app.translate("main", "Unable to find liblthemeengine-style.so"); } if(!errorMessages.isEmpty()) diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/mainwindow.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/mainwindow.cpp index b120436f..ce3bd6b8 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/mainwindow.cpp +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/mainwindow.cpp @@ -28,7 +28,7 @@ #include #include -#include "qt5ct.h" +#include "lthemeengine.h" #include "mainwindow.h" #include "appearancepage.h" #include "fontspage.h" diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/paletteeditdialog.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/paletteeditdialog.cpp index 31a3a2a9..f297b55c 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/paletteeditdialog.cpp +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/paletteeditdialog.cpp @@ -29,7 +29,7 @@ #include #include #include -#include "qt5ct.h" +#include "lthemeengine.h" #include "paletteeditdialog.h" #include "ui_paletteeditdialog.h" diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsseditordialog.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsseditordialog.cpp index 7c6292ac..fbe52cf9 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsseditordialog.cpp +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsseditordialog.cpp @@ -28,7 +28,7 @@ #include #include -#include "qt5ct.h" +#include "lthemeengine.h" #include "qsseditordialog.h" #include "ui_qsseditordialog.h" diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.cpp index 784ff674..f2f05ae9 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.cpp +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.cpp @@ -32,7 +32,7 @@ #include #include #include -#include "qt5ct.h" +#include "lthemeengine.h" #include "qsseditordialog.h" #include "qsspage.h" #include "ui_qsspage.h" diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/qt5ct.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qt5ct.cpp deleted file mode 100644 index b83f43df..00000000 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/qt5ct.cpp +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright (c) 2014-2017, Ilya Kotov - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include -#include "qt5ct.h" - -#ifndef QT5CT_DATADIR -#define QT5CT_DATADIR "/usr/share" -#endif - - -QString Qt5CT::configPath() -{ - return QDir::homePath() + "/.config/qt5ct/"; -} - -QString Qt5CT::configFile() -{ - return configPath() + "qt5ct.conf"; -} - -QStringList Qt5CT::iconPaths() -{ - QString xdgDataDirs = qgetenv("XDG_DATA_DIRS"); - QString xdgDataHome = qgetenv("XDG_DATA_HOME"); - - QStringList paths; - paths << QDir::homePath() + "/.icons/"; - - if(xdgDataDirs.isEmpty()) - { - paths << "/usr/share/icons"; - paths << "/usr/local/share/icons"; - } - else - { - foreach (QString p, xdgDataDirs.split(":")) - paths << QDir(p + "/icons/").absolutePath(); - } - - if(xdgDataHome.isEmpty()) - xdgDataHome = QDir::homePath() + "/.local/share"; - - paths << "/usr/share/pixmaps"; - paths << xdgDataHome + "/icons"; - paths.removeDuplicates(); - - //remove invalid - foreach (QString p, paths) - { - if(!QDir(p).exists()) - paths.removeAll(p); - } - return paths; -} - -QString Qt5CT::userStyleSheetPath() -{ - return configPath() + "qss/"; -} - -QString Qt5CT::sharedStyleSheetPath() -{ - return QT5CT_DATADIR"/qt5ct/qss/"; -} - -QString Qt5CT::userColorSchemePath() -{ - return configPath() + "colors/"; -} - -QString Qt5CT::sharedColorSchemePath() -{ - return QT5CT_DATADIR"/qt5ct/colors/"; -} - -QString Qt5CT::systemLanguageID() -{ -#ifdef Q_OS_UNIX - QByteArray v = qgetenv ("LC_ALL"); - if (v.isEmpty()) - v = qgetenv ("LC_MESSAGES"); - if (v.isEmpty()) - v = qgetenv ("LANG"); - if (!v.isEmpty()) - return QLocale (v).name(); -#endif - return QLocale::system().name(); -} diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/qt5ct.desktop b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qt5ct.desktop deleted file mode 100644 index 1c5f6560..00000000 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/qt5ct.desktop +++ /dev/null @@ -1,60 +0,0 @@ -[Desktop Entry] -X-Desktop-File-Install-Version=0.11 -Name=Qt5 Settings - -Comment=Qt5 Configuration Tool - -Comment[ar]= أداة اعداد Qt5 -Name[ar]=إعدادات Qt5 - -Comment[bg]=Инструмент за настройка на Qt5 -Name[bg]=Настройки на Qt5 - -Comment[de]=Qt5-Konfigurationswerkzeug -Name[de]=Qt5-Einstellungen - -Comment[el]=Εργαλείο διαμόρφωσης της Qt5 -Name[el]=Ρυθμίσεις Qt5 - -Comment[es_ES]=Herramienta de configuración de QT5 -Name[es_ES]=Ajustes QT5 - -Comment[fr]=Un outil de configuration de Qt5 -Name[fr]=Paramètres de Qt5 - -Comment[he]=כלי תצורה Qt5 -Name[he]=הגדרות Qt5 - -Comment[ru]=Программа для настройки Qt5 -Name[ru]=Настройки Qt5 - -Comment[cs]=Nástroj na nastavení Qt5 -Name[cs]=Nastavení Qt5 - -Comment[it_IT]=Strumento di configurazione Qt5 -Name[it_IT]=Impostazioni Qt5 - -Comment[nl_NL]=Qt5-instellingengereedschap -Name[nl_NL]=Qt5-instellingen - -Comment[pl]=Narzędzie konfiguracji Qt5 -Name[pl]=Ustawienia Qt5 - -Comment[sk]=Qt5 konfiguračný nástroj -Name[sk]=Qt5 nastavenia - -Comment[sr]=Qt5 конфигурациони алат -Name[sr]=Qt5 поставке - -Comment[zh_CN]=Qt5 配置工具 -Name[zh_CN]=Qt5 设置 - -Comment[zh_TW]=Qt5 設定工具 -Name[zh_TW]=Qt5 設定 - - -Exec=qt5ct -Icon=preferences-desktop-theme -Terminal=false -Type=Application -Categories=Settings;DesktopSettings;Qt; diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/qt5ct.h b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qt5ct.h deleted file mode 100644 index 1aecd741..00000000 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/qt5ct.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 2014-2017, Ilya Kotov - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef QT5CT_H -#define QT5CT_H - -#define QT5CT_VERSION_MAJOR 0 -#define QT5CT_VERSION_MINOR 33 - -#define QT5CT_TOSTRING(s) #s -#define QT5CT_STRINGIFY(s) QT5CT_TOSTRING(s) - -#define QT5CT_VERSION_INT (QT5CT_VERSION_MAJOR<<8 | QT5CT_VERSION_MINOR) -#define QT5CT_VERSION_STR QT5CT_STRINGIFY(QT5CT_VERSION_MAJOR.QT5CT_VERSION_MINOR) - -#include -#include - -class Qt5CT -{ -public: - static QString configPath(); - static QString configFile(); - static QStringList iconPaths(); - static QString userStyleSheetPath(); - static QString sharedStyleSheetPath(); - static QString userColorSchemePath(); - static QString sharedColorSchemePath(); - static QString systemLanguageID(); - -private: - Qt5CT() {} -}; - -#endif // QT5CT_H diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/qt5ct.pro b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qt5ct.pro deleted file mode 100644 index 0f9724f1..00000000 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/qt5ct.pro +++ /dev/null @@ -1,57 +0,0 @@ -include(../../qt5ct.pri) - -TEMPLATE = app - -QT += widgets - -SOURCES += \ - main.cpp \ - mainwindow.cpp \ - tabpage.cpp \ - appearancepage.cpp \ - fontspage.cpp \ - qt5ct.cpp \ - paletteeditdialog.cpp \ - iconthemepage.cpp \ - interfacepage.cpp \ - fontconfigdialog.cpp \ - qsspage.cpp \ - qsseditordialog.cpp - -FORMS += \ - mainwindow.ui \ - appearancepage.ui \ - fontspage.ui \ - paletteeditdialog.ui \ - iconthemepage.ui \ - interfacepage.ui \ - fontconfigdialog.ui \ - previewform.ui \ - qsspage.ui \ - qsseditordialog.ui - -HEADERS += \ - mainwindow.h \ - tabpage.h \ - appearancepage.h \ - fontspage.h \ - qt5ct.h \ - paletteeditdialog.h \ - iconthemepage.h \ - interfacepage.h \ - fontconfigdialog.h \ - qsspage.h \ - qsseditordialog.h - -!equals (DISABLE_WIDGETS,1) { - DEFINES += USE_WIDGETS -} - -RESOURCES = translations/translations.qrc - -target.path = $$BINDIR - -desktop.files = qt5ct.desktop -desktop.path = $$DATADIR/applications - -INSTALLS += target desktop -- cgit From fd3b1a385e15edbd4859f25e3350251f2e82db3d Mon Sep 17 00:00:00 2001 From: q5sys Date: Tue, 18 Jul 2017 16:42:57 -0400 Subject: the second great renaming --- .../lthemeengine-qtplugin.pro | 4 +- .../lthemeengineplatformtheme.cpp | 42 ++++---- .../lthemeengineplatformtheme.h | 12 +-- .../src/lthemeengine-qtplugin/main.cpp | 6 +- .../src/lthemeengine-style/lthemeengine-style.pro | 4 +- .../lthemeengine-style/lthemeengineproxystyle.cpp | 10 +- .../lthemeengine-style/lthemeengineproxystyle.h | 12 +-- .../src/lthemeengine-style/plugin.cpp | 10 +- .../src/lthemeengine/appearancepage.cpp | 16 +-- .../src/lthemeengine/fontspage.cpp | 4 +- .../src/lthemeengine/iconthemepage.cpp | 6 +- .../src/lthemeengine/interfacepage.cpp | 4 +- .../src/lthemeengine/lthemeengine.cpp | 115 +++++++++++++++++++++ .../src/lthemeengine/lthemeengine.desktop | 60 +++++++++++ .../src/lthemeengine/lthemeengine.h | 60 +++++++++++ .../src/lthemeengine/lthemeengine.pro | 57 ++++++++++ .../src/lthemeengine/lthemengine.cpp | 115 --------------------- .../src/lthemeengine/lthemengine.desktop | 60 ----------- .../src/lthemeengine/lthemengine.h | 60 ----------- .../src/lthemeengine/lthemengine.pro | 57 ---------- .../lumina-theme-engine/src/lthemeengine/main.cpp | 6 +- .../src/lthemeengine/mainwindow.cpp | 6 +- .../src/lthemeengine/paletteeditdialog.cpp | 4 +- .../src/lthemeengine/qsseditordialog.cpp | 4 +- .../src/lthemeengine/qsspage.cpp | 14 +-- 25 files changed, 374 insertions(+), 374 deletions(-) create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.cpp create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.desktop create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.h create mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.pro delete mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemengine.cpp delete mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemengine.desktop delete mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemengine.h delete mode 100644 src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemengine.pro (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengine-qtplugin.pro b/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengine-qtplugin.pro index 1b9bd682..064c7642 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengine-qtplugin.pro +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengine-qtplugin.pro @@ -17,7 +17,7 @@ greaterThan(QT_MINOR_VERSION, 7) { SOURCES += \ main.cpp \ lthemeengineplatformtheme.cpp \ - ../lthemeengine/qt5ct.cpp + ../lthemeengine/lthemeengine.cpp !equals (DISABLE_WIDGETS,1) { QT += widgets @@ -29,7 +29,7 @@ INCLUDEPATH += ../ HEADERS += \ lthemeengineplatformtheme.h \ - ../lthemeengine/qt5ct.h + ../lthemeengine/lthemeengine.h target.path = $$PLUGINDIR/platformthemes INSTALLS += target diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengineplatformtheme.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengineplatformtheme.cpp index ab0642dc..0b0403a4 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengineplatformtheme.cpp +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengineplatformtheme.cpp @@ -44,7 +44,7 @@ #include #include -#include +#include #include "lthemeengineplatformtheme.h" #if (QT_VERSION >= QT_VERSION_CHECK(5, 7, 0)) && !defined(QT_NO_DBUS) #include @@ -56,11 +56,11 @@ -Q_LOGGING_CATEGORY(llthemeengine, "qt5ct") +Q_LOGGING_CATEGORY(llthemeengine, "lthemeengine") //QT_QPA_PLATFORMTHEME=lthemeengine -Qt5CTPlatformTheme::Qt5CTPlatformTheme() +lthemeenginePlatformTheme::Qt5CTPlatformTheme() { if(QGuiApplication::desktopSettingsAware()) { @@ -71,21 +71,21 @@ Qt5CTPlatformTheme::Qt5CTPlatformTheme() #endif QGuiApplication::setFont(m_generalFont); } - qCDebug(llthemeengine) << "using qt5ct plugin"; + qCDebug(llthemeengine) << "using lthemeengine plugin"; #ifdef QT_WIDGETS_LIB if(!QStyleFactory::keys().contains("lthemeengine-style")) - qCCritical(llthemeengine) << "unable to find qt5ct proxy style"; + qCCritical(llthemeengine) << "unable to find lthemeengine proxy style"; #endif } -Qt5CTPlatformTheme::~Qt5CTPlatformTheme() +lthemeenginePlatformTheme::~Qt5CTPlatformTheme() { if(m_customPalette) delete m_customPalette; } #if (QT_VERSION >= QT_VERSION_CHECK(5, 7, 0)) && !defined(QT_NO_DBUS) -QPlatformMenuBar *Qt5CTPlatformTheme::createPlatformMenuBar() const +QPlatformMenuBar *lthemeenginePlatformTheme::createPlatformMenuBar() const { if(m_checkDBusGlobalMenu) { @@ -98,7 +98,7 @@ QPlatformMenuBar *Qt5CTPlatformTheme::createPlatformMenuBar() const #endif #if !defined(QT_NO_DBUS) && !defined(QT_NO_SYSTEMTRAYICON) -QPlatformSystemTrayIcon *Qt5CTPlatformTheme::createPlatformSystemTrayIcon() const +QPlatformSystemTrayIcon *lthemeenginePlatformTheme::createPlatformSystemTrayIcon() const { if(m_checkDBusTray) { @@ -111,20 +111,20 @@ QPlatformSystemTrayIcon *Qt5CTPlatformTheme::createPlatformSystemTrayIcon() cons } #endif -const QPalette *Qt5CTPlatformTheme::palette(QPlatformTheme::Palette type) const +const QPalette *lthemeenginePlatformTheme::palette(QPlatformTheme::Palette type) const { Q_UNUSED(type); return (m_usePalette ? m_customPalette : nullptr); } -const QFont *Qt5CTPlatformTheme::font(QPlatformTheme::Font type) const +const QFont *lthemeenginePlatformTheme::font(QPlatformTheme::Font type) const { if(type == QPlatformTheme::FixedFont) return &m_fixedFont; return &m_generalFont; } -QVariant Qt5CTPlatformTheme::themeHint(QPlatformTheme::ThemeHint hint) const +QVariant lthemeenginePlatformTheme::themeHint(QPlatformTheme::ThemeHint hint) const { switch (hint) { @@ -139,7 +139,7 @@ QVariant Qt5CTPlatformTheme::themeHint(QPlatformTheme::ThemeHint hint) const case QPlatformTheme::StyleNames: return QStringList() << "lthemeengine-style"; case QPlatformTheme::IconThemeSearchPaths: - return Qt5CT::iconPaths(); + return lthemeengine::iconPaths(); case DialogButtonBoxLayout: return m_buttonBoxLayout; case QPlatformTheme::UiEffects: @@ -153,7 +153,7 @@ QVariant Qt5CTPlatformTheme::themeHint(QPlatformTheme::ThemeHint hint) const } } -void Qt5CTPlatformTheme::applySettings() +void lthemeenginePlatformTheme::applySettings() { if(!QGuiApplication::desktopSettingsAware()) return; @@ -224,10 +224,10 @@ void Qt5CTPlatformTheme::applySettings() } #ifdef QT_WIDGETS_LIB -void Qt5CTPlatformTheme::createFSWatcher() +void lthemeenginePlatformTheme::createFSWatcher() { QFileSystemWatcher *watcher = new QFileSystemWatcher(this); - watcher->addPath(Qt5CT::configPath()); + watcher->addPath(lthemeengine::configPath()); QTimer *timer = new QTimer(this); timer->setSingleShot(true); @@ -236,7 +236,7 @@ void Qt5CTPlatformTheme::createFSWatcher() connect(timer, SIGNAL(timeout()), SLOT(updateSettings())); } -void Qt5CTPlatformTheme::updateSettings() +void lthemeenginePlatformTheme::updateSettings() { qCDebug(llthemeengine) << "updating settings.."; readSettings(); @@ -244,7 +244,7 @@ void Qt5CTPlatformTheme::updateSettings() } #endif -void Qt5CTPlatformTheme::readSettings() +void lthemeenginePlatformTheme::readSettings() { if(m_customPalette) { @@ -252,7 +252,7 @@ void Qt5CTPlatformTheme::readSettings() m_customPalette = 0; } - QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + QSettings settings(lthemeengine::configFile(), QSettings::IniFormat); settings.beginGroup("Appearance"); m_style = settings.value("style", "Fusion").toString(); @@ -311,13 +311,13 @@ void Qt5CTPlatformTheme::readSettings() } #ifdef QT_WIDGETS_LIB -bool Qt5CTPlatformTheme::hasWidgets() +bool lthemeenginePlatformTheme::hasWidgets() { return qobject_cast (qApp) != nullptr; } #endif -QString Qt5CTPlatformTheme::loadStyleSheets(const QStringList &paths) +QString lthemeenginePlatformTheme::loadStyleSheets(const QStringList &paths) { QString content; foreach (QString path, paths) @@ -335,7 +335,7 @@ QString Qt5CTPlatformTheme::loadStyleSheets(const QStringList &paths) return content; } -QPalette Qt5CTPlatformTheme::loadColorScheme(const QString &filePath) +QPalette lthemeenginePlatformTheme::loadColorScheme(const QString &filePath) { QPalette customPalette; QSettings settings(filePath, QSettings::IniFormat); diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengineplatformtheme.h b/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengineplatformtheme.h index 5ff96844..3996b451 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengineplatformtheme.h +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengineplatformtheme.h @@ -26,8 +26,8 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef QT5CTPLATFORMTHEME_H -#define QT5CTPLATFORMTHEME_H +#ifndef LTHEMEENGINEPLATFORMTHEME_H +#define LTHEMEENGINEPLATFORMTHEME_H #include #include @@ -50,13 +50,13 @@ class QPlatformSystemTrayIcon; class QPlatformMenuBar; #endif -class Qt5CTPlatformTheme : public QObject, public QPlatformTheme +class lthemeenginePlatformTheme : public QObject, public QPlatformTheme { Q_OBJECT public: - Qt5CTPlatformTheme(); + lthemeenginePlatformTheme(); - virtual ~Qt5CTPlatformTheme(); + virtual ~lthemeenginePlatformTheme(); //virtual QPlatformMenuItem* createPlatformMenuItem() const; @@ -119,4 +119,4 @@ private: Q_DECLARE_LOGGING_CATEGORY(llthemeengine) -#endif // QT5CTPLATFORMTHEME_H +#endif // LTHEMEENGINEPLATFORMTHEME_H diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/main.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/main.cpp index e97db782..37798f70 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/main.cpp +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/main.cpp @@ -31,7 +31,7 @@ QT_BEGIN_NAMESPACE -class Qt5CTPlatformThemePlugin: public QPlatformThemePlugin +class lthemeenginePlatformThemePlugin: public QPlatformThemePlugin { Q_OBJECT Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QPA.QPlatformThemeFactoryInterface.5.1" FILE "lthemeengine.json") @@ -39,11 +39,11 @@ public: QPlatformTheme *create(const QString &key, const QStringList ¶ms); }; -QPlatformTheme *Qt5CTPlatformThemePlugin::create(const QString &key, const QStringList ¶ms) +QPlatformTheme *lthemeenginePlatformThemePlugin::create(const QString &key, const QStringList ¶ms) { Q_UNUSED(params); if (key.toLower() == "lthemeengine") - return new Qt5CTPlatformTheme(); + return new lthemeenginePlatformTheme(); return NULL; } diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengine-style.pro b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengine-style.pro index f8584138..0b40de64 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengine-style.pro +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengine-style.pro @@ -15,12 +15,12 @@ INCLUDEPATH += ../ HEADERS += \ lthemeengineproxystyle.h \ - ../lthemeengine/qt5ct.h + ../lthemeengine/lthemeengine.h SOURCES += \ plugin.cpp \ lthemeengineproxystyle.cpp \ - ../lthemeengine/qt5ct.cpp + ../lthemeengine/lthemeengine.cpp OTHER_FILES += \ lthemeengine.json diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengineproxystyle.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengineproxystyle.cpp index 8e72aff2..23ad01ef 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengineproxystyle.cpp +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengineproxystyle.cpp @@ -27,23 +27,23 @@ */ #include -#include +#include #include "lthemeengineproxystyle.h" -Qt5CTProxyStyle::Qt5CTProxyStyle(const QString &key) : +lthemeengineProxyStyle::Qt5CTProxyStyle(const QString &key) : QProxyStyle(key) { - QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + QSettings settings(lthemeengine::configFile(), QSettings::IniFormat); m_dialogButtonsHaveIcons = settings.value("Interface/dialog_buttons_have_icons", Qt::PartiallyChecked).toInt(); m_activateItemOnSingleClick = settings.value("Interface/activate_item_on_single_click", Qt::PartiallyChecked).toInt(); } -Qt5CTProxyStyle::~Qt5CTProxyStyle() +lthemeengineProxyStyle::~Qt5CTProxyStyle() { //qDebug("%s", Q_FUNC_INFO); } -int Qt5CTProxyStyle::styleHint(QStyle::StyleHint hint, const QStyleOption *option, const QWidget *widget, QStyleHintReturn *returnData) const +int lthemeengineProxyStyle::styleHint(QStyle::StyleHint hint, const QStyleOption *option, const QWidget *widget, QStyleHintReturn *returnData) const { if(hint == QStyle::SH_DialogButtonBox_ButtonsHaveIcons) { diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengineproxystyle.h b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengineproxystyle.h index 842247cf..47a18099 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengineproxystyle.h +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengineproxystyle.h @@ -26,18 +26,18 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef QT5CTPROXYSTYLE_H -#define QT5CTPROXYSTYLE_H +#ifndef LTHEMEENGINEPROXYSTYLE_H +#define LTHEMEENGINEPROXYSTYLE_H #include -class Qt5CTProxyStyle : public QProxyStyle +class lthemeengineProxyStyle : public QProxyStyle { Q_OBJECT public: - explicit Qt5CTProxyStyle(const QString &key); + explicit lthemeengineProxyStyle(const QString &key); - virtual ~Qt5CTProxyStyle(); + virtual ~lthemeengineProxyStyle(); int styleHint(StyleHint hint, const QStyleOption *option, const QWidget *widget, QStyleHintReturn *returnData) const; @@ -47,4 +47,4 @@ private: }; -#endif // QT5CTPROXYSTYLE_H +#endif // LTHEMEENGINEPROXYSTYLE_H diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/plugin.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/plugin.cpp index 35ff6477..9d63093e 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/plugin.cpp +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/plugin.cpp @@ -29,10 +29,10 @@ #include #include #include -#include +#include #include "lthemeengineproxystyle.h" -class Qt5CTStylePlugin : public QStylePlugin +class lthemeengineStylePlugin : public QStylePlugin { Q_OBJECT Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QStyleFactoryInterface" FILE "lthemeengine.json") @@ -41,15 +41,15 @@ public: QStyle *create(const QString &key); }; -QStyle *Qt5CTStylePlugin::create(const QString &key) +QStyle *lthemeengineStylePlugin::create(const QString &key) { if (key == "lthemeengine-style") { - QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + QSettings settings(lthemeengine::configFile(), QSettings::IniFormat); QString style = settings.value("Appearance/style", "Fusion").toString(); if(key == style || !QStyleFactory::keys().contains(style)) style = "Fusion"; - return new Qt5CTProxyStyle(style); + return new lthemeengineProxyStyle(style); } return 0; } diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/appearancepage.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/appearancepage.cpp index 13dcc395..2c125ea8 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/appearancepage.cpp +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/appearancepage.cpp @@ -87,7 +87,7 @@ AppearancePage::~AppearancePage() void AppearancePage::writeSettings() { - QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + QSettings settings(lthemeengine::configFile(), QSettings::IniFormat); settings.beginGroup("Appearance"); settings.setValue("style", m_ui->styleComboBox->currentText()); settings.setValue("custom_palette", m_ui->customPaletteButton->isChecked()); @@ -131,7 +131,7 @@ void AppearancePage::createColorScheme() return; } - QString schemePath = Qt5CT::userColorSchemePath() + "/" + name; + QString schemePath = lthemeengine::userColorSchemePath() + "/" + name; createColorScheme(schemePath, palette()); m_ui->colorSchemeComboBox->addItem(name.section('.',0,0), schemePath); @@ -207,7 +207,7 @@ void AppearancePage::copyColorScheme() return; } - QString newPath = Qt5CT::userColorSchemePath() + "/" + name; + QString newPath = lthemeengine::userColorSchemePath() + "/" + name; QFile::copy(m_ui->colorSchemeComboBox->currentData().toString(), newPath); m_ui->colorSchemeComboBox->addItem(name.section('.',0,0), newPath); } @@ -241,7 +241,7 @@ void AppearancePage::renameColorScheme() return; } - QString newPath = Qt5CT::userColorSchemePath() + "/" + name; + QString newPath = lthemeengine::userColorSchemePath() + "/" + name; QFile::rename(m_ui->colorSchemeComboBox->currentData().toString(), newPath); m_ui->colorSchemeComboBox->setItemText(index, name.section('.',0,0)); m_ui->colorSchemeComboBox->setItemData(index, newPath); @@ -300,7 +300,7 @@ void AppearancePage::updateActions() void AppearancePage::readSettings() { - QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + QSettings settings(lthemeengine::configFile(), QSettings::IniFormat); settings.beginGroup("Appearance"); QString style = settings.value("style", "Fusion").toString(); m_ui->styleComboBox->setCurrentText(style); @@ -308,9 +308,9 @@ void AppearancePage::readSettings() m_ui->customPaletteButton->setChecked(settings.value("custom_palette", false).toBool()); QString colorSchemePath = settings.value("color_scheme_path").toString(); - QDir("/").mkpath(Qt5CT::userColorSchemePath()); - findColorSchemes(Qt5CT::userColorSchemePath()); - findColorSchemes(Qt5CT::sharedColorSchemePath()); + QDir("/").mkpath(lthemeengine::userColorSchemePath()); + findColorSchemes(lthemeengine::userColorSchemePath()); + findColorSchemes(lthemeengine::sharedColorSchemePath()); if(m_ui->colorSchemeComboBox->count() == 0) { diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/fontspage.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/fontspage.cpp index bc8a4ee0..db48a3cc 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/fontspage.cpp +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/fontspage.cpp @@ -65,7 +65,7 @@ FontsPage::~FontsPage() void FontsPage::writeSettings() { - QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + QSettings settings(lthemeengine::configFile(), QSettings::IniFormat); settings.beginGroup("Fonts"); settings.setValue("general", m_ui->generalFontLabel->font()); settings.setValue("fixed", m_ui->fixedFontLabel->font()); @@ -85,7 +85,7 @@ void FontsPage::onFontChangeRequested(QWidget *widget) void FontsPage::readSettings() { - QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + QSettings settings(lthemeengine::configFile(), QSettings::IniFormat); settings.beginGroup("Fonts"); loadFont(&settings, m_ui->generalFontLabel, "general"); loadFont(&settings, m_ui->fixedFontLabel, "fixed"); diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/iconthemepage.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/iconthemepage.cpp index d96c485c..ca9a3388 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/iconthemepage.cpp +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/iconthemepage.cpp @@ -53,7 +53,7 @@ IconThemePage::~IconThemePage() void IconThemePage::writeSettings() { - QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + QSettings settings(lthemeengine::configFile(), QSettings::IniFormat); QTreeWidgetItem *item = m_ui->treeWidget->currentItem(); if(item) settings.setValue("Appearance/icon_theme", item->data(3, Qt::UserRole)); @@ -61,7 +61,7 @@ void IconThemePage::writeSettings() void IconThemePage::readSettings() { - QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + QSettings settings(lthemeengine::configFile(), QSettings::IniFormat); QString name = settings.value("Appearance/icon_theme").toString(); if(name.isEmpty()) @@ -81,7 +81,7 @@ void IconThemePage::readSettings() void IconThemePage::loadThemes() { QFileInfoList themeFileList; - foreach(QString path, Qt5CT::iconPaths()) + foreach(QString path, lthemeengine::iconPaths()) { QDir dir(path); dir.setFilter(QDir::Dirs | QDir::NoDotDot | QDir::NoDot); diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/interfacepage.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/interfacepage.cpp index fe953e78..a9f40080 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/interfacepage.cpp +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/interfacepage.cpp @@ -60,7 +60,7 @@ InterfacePage::~InterfacePage() void InterfacePage::writeSettings() { - QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + QSettings settings(lthemeengine::configFile(), QSettings::IniFormat); settings.beginGroup("Interface"); settings.setValue("double_click_interval", m_ui->doubleClickIntervalSpinBox->value()); settings.setValue("cursor_flash_time", m_ui->cursorFlashTimeSpinBox->value()); @@ -97,7 +97,7 @@ void InterfacePage::writeSettings() void InterfacePage::readSettings() { - QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + QSettings settings(lthemeengine::configFile(), QSettings::IniFormat); settings.beginGroup("Interface"); m_ui->doubleClickIntervalSpinBox->setValue(qApp->doubleClickInterval()); m_ui->cursorFlashTimeSpinBox->setValue(qApp->cursorFlashTime()); diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.cpp new file mode 100644 index 00000000..1316cd75 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.cpp @@ -0,0 +1,115 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include "lthemeengine.h" + +#ifndef LTHEMEENGINE_DATADIR +#define LTHEMEENGINE_DATADIR "/usr/share" +#endif + + +QString lthemeengine::configPath() +{ + return QDir::homePath() + "/.config/lthemeengine/"; +} + +QString lthemeengine::configFile() +{ + return configPath() + "lthemeengine.conf"; +} + +QStringList lthemeengine::iconPaths() +{ + QString xdgDataDirs = qgetenv("XDG_DATA_DIRS"); + QString xdgDataHome = qgetenv("XDG_DATA_HOME"); + + QStringList paths; + paths << QDir::homePath() + "/.icons/"; + + if(xdgDataDirs.isEmpty()) + { + paths << "/usr/share/icons"; + paths << "/usr/local/share/icons"; + } + else + { + foreach (QString p, xdgDataDirs.split(":")) + paths << QDir(p + "/icons/").absolutePath(); + } + + if(xdgDataHome.isEmpty()) + xdgDataHome = QDir::homePath() + "/.local/share"; + + paths << "/usr/share/pixmaps"; + paths << xdgDataHome + "/icons"; + paths.removeDuplicates(); + + //remove invalid + foreach (QString p, paths) + { + if(!QDir(p).exists()) + paths.removeAll(p); + } + return paths; +} + +QString lthemeengine::userStyleSheetPath() +{ + return configPath() + "qss/"; +} + +QString lthemeengine::sharedStyleSheetPath() +{ + return LTHEMEENGINE_DATADIR"/lthemeengine/qss/"; +} + +QString lthemeengine::userColorSchemePath() +{ + return configPath() + "colors/"; +} + +QString lthemeengine::sharedColorSchemePath() +{ + return LTHEMEENGINE_DATADIR"/lthemeengine/colors/"; +} + +QString lthemeengine::systemLanguageID() +{ +#ifdef Q_OS_UNIX + QByteArray v = qgetenv ("LC_ALL"); + if (v.isEmpty()) + v = qgetenv ("LC_MESSAGES"); + if (v.isEmpty()) + v = qgetenv ("LANG"); + if (!v.isEmpty()) + return QLocale (v).name(); +#endif + return QLocale::system().name(); +} diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.desktop b/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.desktop new file mode 100644 index 00000000..be2bde14 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.desktop @@ -0,0 +1,60 @@ +[Desktop Entry] +X-Desktop-File-Install-Version=0.11 +Name=Qt5 Settings + +Comment=Qt5 Configuration Tool + +Comment[ar]= أداة اعداد Qt5 +Name[ar]=إعدادات Qt5 + +Comment[bg]=Инструмент за настройка на Qt5 +Name[bg]=Настройки на Qt5 + +Comment[de]=Qt5-Konfigurationswerkzeug +Name[de]=Qt5-Einstellungen + +Comment[el]=Εργαλείο διαμόρφωσης της Qt5 +Name[el]=Ρυθμίσεις Qt5 + +Comment[es_ES]=Herramienta de configuración de QT5 +Name[es_ES]=Ajustes QT5 + +Comment[fr]=Un outil de configuration de Qt5 +Name[fr]=Paramètres de Qt5 + +Comment[he]=כלי תצורה Qt5 +Name[he]=הגדרות Qt5 + +Comment[ru]=Программа для настройки Qt5 +Name[ru]=Настройки Qt5 + +Comment[cs]=Nástroj na nastavení Qt5 +Name[cs]=Nastavení Qt5 + +Comment[it_IT]=Strumento di configurazione Qt5 +Name[it_IT]=Impostazioni Qt5 + +Comment[nl_NL]=Qt5-instellingengereedschap +Name[nl_NL]=Qt5-instellingen + +Comment[pl]=Narzędzie konfiguracji Qt5 +Name[pl]=Ustawienia Qt5 + +Comment[sk]=Qt5 konfiguračný nástroj +Name[sk]=Qt5 nastavenia + +Comment[sr]=Qt5 конфигурациони алат +Name[sr]=Qt5 поставке + +Comment[zh_CN]=Qt5 配置工具 +Name[zh_CN]=Qt5 设置 + +Comment[zh_TW]=Qt5 設定工具 +Name[zh_TW]=Qt5 設定 + + +Exec=lthemeengine +Icon=preferences-desktop-theme +Terminal=false +Type=Application +Categories=Settings;DesktopSettings;Qt; diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.h b/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.h new file mode 100644 index 00000000..1eb33cdf --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.h @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2014-2017, Ilya Kotov + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef LTHEMEENGINE_H +#define LTHEMEENGINE_H + +#define LTHEMEENGINE_VERSION_MAJOR 0 +#define LTHEMEENGINE_VERSION_MINOR 33 + +#define LTHEMEENGINE_TOSTRING(s) #s +#define LTHEMEENGINE_STRINGIFY(s) QT5CT_TOSTRING(s) + +#define LTHEMEENGINE_VERSION_INT (QT5CT_VERSION_MAJOR<<8 | QT5CT_VERSION_MINOR) +#define LTHEMEENGINE_VERSION_STR QT5CT_STRINGIFY(QT5CT_VERSION_MAJOR.QT5CT_VERSION_MINOR) + +#include +#include + +class lthemeengine +{ +public: + static QString configPath(); + static QString configFile(); + static QStringList iconPaths(); + static QString userStyleSheetPath(); + static QString sharedStyleSheetPath(); + static QString userColorSchemePath(); + static QString sharedColorSchemePath(); + static QString systemLanguageID(); + +private: + lthemeengine() {} +}; + +#endif // LTHEMEENGINE_H diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.pro b/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.pro new file mode 100644 index 00000000..07677fe3 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.pro @@ -0,0 +1,57 @@ +include(../../lthemeengine.pri) + +TEMPLATE = app + +QT += widgets + +SOURCES += \ + main.cpp \ + mainwindow.cpp \ + tabpage.cpp \ + appearancepage.cpp \ + fontspage.cpp \ + lthemeengine.cpp \ + paletteeditdialog.cpp \ + iconthemepage.cpp \ + interfacepage.cpp \ + fontconfigdialog.cpp \ + qsspage.cpp \ + qsseditordialog.cpp + +FORMS += \ + mainwindow.ui \ + appearancepage.ui \ + fontspage.ui \ + paletteeditdialog.ui \ + iconthemepage.ui \ + interfacepage.ui \ + fontconfigdialog.ui \ + previewform.ui \ + qsspage.ui \ + qsseditordialog.ui + +HEADERS += \ + mainwindow.h \ + tabpage.h \ + appearancepage.h \ + fontspage.h \ + lthemeengine.h \ + paletteeditdialog.h \ + iconthemepage.h \ + interfacepage.h \ + fontconfigdialog.h \ + qsspage.h \ + qsseditordialog.h + +!equals (DISABLE_WIDGETS,1) { + DEFINES += USE_WIDGETS +} + +RESOURCES = translations/translations.qrc + +target.path = $$BINDIR + +desktop.files = lthemeengine.desktop +desktop.path = $$DATADIR/applications + +INSTALLS += target desktop diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemengine.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemengine.cpp deleted file mode 100644 index ed3c909e..00000000 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemengine.cpp +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright (c) 2014-2017, Ilya Kotov - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include -#include "lthemeengine.h" - -#ifndef QT5CT_DATADIR -#define QT5CT_DATADIR "/usr/share" -#endif - - -QString Qt5CT::configPath() -{ - return QDir::homePath() + "/.config/lthemeengine/"; -} - -QString Qt5CT::configFile() -{ - return configPath() + "lthemeengine.conf"; -} - -QStringList Qt5CT::iconPaths() -{ - QString xdgDataDirs = qgetenv("XDG_DATA_DIRS"); - QString xdgDataHome = qgetenv("XDG_DATA_HOME"); - - QStringList paths; - paths << QDir::homePath() + "/.icons/"; - - if(xdgDataDirs.isEmpty()) - { - paths << "/usr/share/icons"; - paths << "/usr/local/share/icons"; - } - else - { - foreach (QString p, xdgDataDirs.split(":")) - paths << QDir(p + "/icons/").absolutePath(); - } - - if(xdgDataHome.isEmpty()) - xdgDataHome = QDir::homePath() + "/.local/share"; - - paths << "/usr/share/pixmaps"; - paths << xdgDataHome + "/icons"; - paths.removeDuplicates(); - - //remove invalid - foreach (QString p, paths) - { - if(!QDir(p).exists()) - paths.removeAll(p); - } - return paths; -} - -QString Qt5CT::userStyleSheetPath() -{ - return configPath() + "qss/"; -} - -QString Qt5CT::sharedStyleSheetPath() -{ - return QT5CT_DATADIR"/lthemeengine/qss/"; -} - -QString Qt5CT::userColorSchemePath() -{ - return configPath() + "colors/"; -} - -QString Qt5CT::sharedColorSchemePath() -{ - return QT5CT_DATADIR"/lthemeengine/colors/"; -} - -QString Qt5CT::systemLanguageID() -{ -#ifdef Q_OS_UNIX - QByteArray v = qgetenv ("LC_ALL"); - if (v.isEmpty()) - v = qgetenv ("LC_MESSAGES"); - if (v.isEmpty()) - v = qgetenv ("LANG"); - if (!v.isEmpty()) - return QLocale (v).name(); -#endif - return QLocale::system().name(); -} diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemengine.desktop b/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemengine.desktop deleted file mode 100644 index be2bde14..00000000 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemengine.desktop +++ /dev/null @@ -1,60 +0,0 @@ -[Desktop Entry] -X-Desktop-File-Install-Version=0.11 -Name=Qt5 Settings - -Comment=Qt5 Configuration Tool - -Comment[ar]= أداة اعداد Qt5 -Name[ar]=إعدادات Qt5 - -Comment[bg]=Инструмент за настройка на Qt5 -Name[bg]=Настройки на Qt5 - -Comment[de]=Qt5-Konfigurationswerkzeug -Name[de]=Qt5-Einstellungen - -Comment[el]=Εργαλείο διαμόρφωσης της Qt5 -Name[el]=Ρυθμίσεις Qt5 - -Comment[es_ES]=Herramienta de configuración de QT5 -Name[es_ES]=Ajustes QT5 - -Comment[fr]=Un outil de configuration de Qt5 -Name[fr]=Paramètres de Qt5 - -Comment[he]=כלי תצורה Qt5 -Name[he]=הגדרות Qt5 - -Comment[ru]=Программа для настройки Qt5 -Name[ru]=Настройки Qt5 - -Comment[cs]=Nástroj na nastavení Qt5 -Name[cs]=Nastavení Qt5 - -Comment[it_IT]=Strumento di configurazione Qt5 -Name[it_IT]=Impostazioni Qt5 - -Comment[nl_NL]=Qt5-instellingengereedschap -Name[nl_NL]=Qt5-instellingen - -Comment[pl]=Narzędzie konfiguracji Qt5 -Name[pl]=Ustawienia Qt5 - -Comment[sk]=Qt5 konfiguračný nástroj -Name[sk]=Qt5 nastavenia - -Comment[sr]=Qt5 конфигурациони алат -Name[sr]=Qt5 поставке - -Comment[zh_CN]=Qt5 配置工具 -Name[zh_CN]=Qt5 设置 - -Comment[zh_TW]=Qt5 設定工具 -Name[zh_TW]=Qt5 設定 - - -Exec=lthemeengine -Icon=preferences-desktop-theme -Terminal=false -Type=Application -Categories=Settings;DesktopSettings;Qt; diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemengine.h b/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemengine.h deleted file mode 100644 index 1aecd741..00000000 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemengine.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 2014-2017, Ilya Kotov - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef QT5CT_H -#define QT5CT_H - -#define QT5CT_VERSION_MAJOR 0 -#define QT5CT_VERSION_MINOR 33 - -#define QT5CT_TOSTRING(s) #s -#define QT5CT_STRINGIFY(s) QT5CT_TOSTRING(s) - -#define QT5CT_VERSION_INT (QT5CT_VERSION_MAJOR<<8 | QT5CT_VERSION_MINOR) -#define QT5CT_VERSION_STR QT5CT_STRINGIFY(QT5CT_VERSION_MAJOR.QT5CT_VERSION_MINOR) - -#include -#include - -class Qt5CT -{ -public: - static QString configPath(); - static QString configFile(); - static QStringList iconPaths(); - static QString userStyleSheetPath(); - static QString sharedStyleSheetPath(); - static QString userColorSchemePath(); - static QString sharedColorSchemePath(); - static QString systemLanguageID(); - -private: - Qt5CT() {} -}; - -#endif // QT5CT_H diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemengine.pro b/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemengine.pro deleted file mode 100644 index 07677fe3..00000000 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemengine.pro +++ /dev/null @@ -1,57 +0,0 @@ -include(../../lthemeengine.pri) - -TEMPLATE = app - -QT += widgets - -SOURCES += \ - main.cpp \ - mainwindow.cpp \ - tabpage.cpp \ - appearancepage.cpp \ - fontspage.cpp \ - lthemeengine.cpp \ - paletteeditdialog.cpp \ - iconthemepage.cpp \ - interfacepage.cpp \ - fontconfigdialog.cpp \ - qsspage.cpp \ - qsseditordialog.cpp - -FORMS += \ - mainwindow.ui \ - appearancepage.ui \ - fontspage.ui \ - paletteeditdialog.ui \ - iconthemepage.ui \ - interfacepage.ui \ - fontconfigdialog.ui \ - previewform.ui \ - qsspage.ui \ - qsseditordialog.ui - -HEADERS += \ - mainwindow.h \ - tabpage.h \ - appearancepage.h \ - fontspage.h \ - lthemeengine.h \ - paletteeditdialog.h \ - iconthemepage.h \ - interfacepage.h \ - fontconfigdialog.h \ - qsspage.h \ - qsseditordialog.h - -!equals (DISABLE_WIDGETS,1) { - DEFINES += USE_WIDGETS -} - -RESOURCES = translations/translations.qrc - -target.path = $$BINDIR - -desktop.files = lthemeengine.desktop -desktop.path = $$DATADIR/applications - -INSTALLS += target desktop diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/main.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/main.cpp index f4a14222..481242cd 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/main.cpp +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/main.cpp @@ -40,7 +40,7 @@ int main(int argc, char **argv) { QApplication app(argc, argv); QTranslator translator; - QString locale = Qt5CT::systemLanguageID(); + QString locale = lthemeengine::systemLanguageID(); translator.load(QString(":/lthemeengine_") + locale); app.installTranslator(&translator); @@ -48,8 +48,8 @@ int main(int argc, char **argv) qt_translator.load(QLibraryInfo::location (QLibraryInfo::TranslationsPath) + "/qtbase_" + locale); app.installTranslator(&qt_translator); - qDebug("Configuration path: %s", qPrintable(Qt5CT::configPath())); - qDebug("Shared QSS path: %s", qPrintable(Qt5CT::sharedStyleSheetPath())); + qDebug("Configuration path: %s", qPrintable(lthemeengine::configPath())); + qDebug("Shared QSS path: %s", qPrintable(lthemeengine::sharedStyleSheetPath())); //checking environment QStringList errorMessages; diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/mainwindow.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/mainwindow.cpp index ce3bd6b8..ed658e2e 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/mainwindow.cpp +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/mainwindow.cpp @@ -50,12 +50,12 @@ MainWindow::MainWindow(QWidget *parent) : m_ui->tabWidget->addTab(new QSSPage(this), tr("Style Sheets")); #endif - QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + QSettings settings(lthemeengine::configFile(), QSettings::IniFormat); restoreGeometry(settings.value("SettingsWindow/geometry").toByteArray()); setWindowIcon(QIcon::fromTheme("preferences-desktop-theme")); - m_ui->versionLabel->setText(tr("Version: %1").arg(QT5CT_VERSION_STR)); + m_ui->versionLabel->setText(tr("Version: %1").arg(LTHEMEENGINE_VERSION_STR)); } MainWindow::~MainWindow() @@ -65,7 +65,7 @@ MainWindow::~MainWindow() void MainWindow::closeEvent(QCloseEvent *) { - QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + QSettings settings(lthemeengine::configFile(), QSettings::IniFormat); settings.setValue("SettingsWindow/geometry", saveGeometry()); } diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/paletteeditdialog.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/paletteeditdialog.cpp index f297b55c..0f8fcf66 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/paletteeditdialog.cpp +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/paletteeditdialog.cpp @@ -50,7 +50,7 @@ PaletteEditDialog::PaletteEditDialog(const QPalette &palette, QStyle *currentSty m_ui->tableWidget->setHorizontalHeaderLabels(labels); setPalette(palette); - QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + QSettings settings(lthemeengine::configFile(), QSettings::IniFormat); restoreGeometry(settings.value("PaletteEditor/geometry").toByteArray()); } @@ -97,7 +97,7 @@ void PaletteEditDialog::setPalette(const QPalette &palette) void PaletteEditDialog::hideEvent(QHideEvent *) { - QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + QSettings settings(lthemeengine::configFile(), QSettings::IniFormat); settings.setValue("PaletteEditor/geometry", saveGeometry()); } diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsseditordialog.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsseditordialog.cpp index fbe52cf9..b92b5619 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsseditordialog.cpp +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsseditordialog.cpp @@ -44,7 +44,7 @@ QSSEditorDialog::QSSEditorDialog(const QString &filePath, QWidget *parent) : m_ui->textEdit->setPlainText(QString::fromUtf8(file.readAll())); setWindowTitle(tr("%1 - Style Sheet Editor").arg(file.fileName())); - QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + QSettings settings(lthemeengine::configFile(), QSettings::IniFormat); restoreGeometry(settings.value("QSSEditor/geometry").toByteArray()); } @@ -62,7 +62,7 @@ void QSSEditorDialog::save() void QSSEditorDialog::hideEvent(QHideEvent *) { - QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + QSettings settings(lthemeengine::configFile(), QSettings::IniFormat); settings.setValue("QSSEditor/geometry", saveGeometry()); } diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.cpp index f2f05ae9..56aedf4d 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.cpp +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.cpp @@ -45,7 +45,7 @@ QSSPage::QSSPage(QWidget *parent) : m_ui(new Ui::QSSPage) { m_ui->setupUi(this); - QDir("/").mkpath(Qt5CT::userStyleSheetPath()); + QDir("/").mkpath(lthemeengine::userStyleSheetPath()); m_menu = new QMenu(this); m_menu->addAction(QIcon::fromTheme("accessories-text-editor"), tr("Edit"), this, SLOT(on_editButton_clicked())); @@ -69,7 +69,7 @@ QSSPage::~QSSPage() void QSSPage::writeSettings() { QStringList styleSheets; - QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + QSettings settings(lthemeengine::configFile(), QSettings::IniFormat); for(int i = 0; i < m_ui->qssListWidget->count(); ++i) { @@ -106,7 +106,7 @@ void QSSPage::on_createButton_clicked() if(!name.endsWith(".qss", Qt::CaseInsensitive)) name.append(".qss"); - QString filePath = Qt5CT::userStyleSheetPath() + name; + QString filePath = lthemeengine::userStyleSheetPath() + name; if(QFile::exists(filePath)) { @@ -159,10 +159,10 @@ void QSSPage::readSettings() { //load stylesheets m_ui->qssListWidget->clear(); - findStyleSheets(Qt5CT::userStyleSheetPath()); - findStyleSheets(Qt5CT::sharedStyleSheetPath()); + findStyleSheets(lthemeengine::userStyleSheetPath()); + findStyleSheets(lthemeengine::sharedStyleSheetPath()); - QSettings settings(Qt5CT::configFile(), QSettings::IniFormat); + QSettings settings(lthemeengine::configFile(), QSettings::IniFormat); QStringList styleSheets = settings.value("Interface/stylesheets").toStringList(); for(int i = 0; i < m_ui->qssListWidget->count(); ++i) { @@ -209,7 +209,7 @@ void QSSPage::on_renameButton_clicked() if(!name.endsWith(".qss", Qt::CaseInsensitive)) name.append(".qss"); - QString newPath = Qt5CT::userStyleSheetPath() + name; + QString newPath = lthemeengine::userStyleSheetPath() + name; if(!QFile::rename(item->data(QSS_FULL_PATH_ROLE).toString(), newPath)) { -- cgit From 79b63889ab31ac2649ee21e127189ef5918542ca Mon Sep 17 00:00:00 2001 From: q5sys Date: Tue, 18 Jul 2017 17:15:43 -0400 Subject: get lthemeengine building successfully --- src-qt5/core/lumina-theme-engine/lthemeengine.pri | 32 ++++++++++++++++++++++ src-qt5/core/lumina-theme-engine/lthemeengine.pro | 31 +++++++++++++++++++++ .../lumina-theme-engine/lumina-theme-engine.pro | 31 --------------------- .../lthemeengineplatformtheme.cpp | 4 +-- .../lthemeengine-style/lthemeengineproxystyle.cpp | 4 +-- .../src/lthemeengine/lthemeengine.h | 6 ++-- .../src/lthemeengine/lthemeengine.pro | 2 -- 7 files changed, 70 insertions(+), 40 deletions(-) create mode 100644 src-qt5/core/lumina-theme-engine/lthemeengine.pri create mode 100644 src-qt5/core/lumina-theme-engine/lthemeengine.pro delete mode 100644 src-qt5/core/lumina-theme-engine/lumina-theme-engine.pro (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-theme-engine/lthemeengine.pri b/src-qt5/core/lumina-theme-engine/lthemeengine.pri new file mode 100644 index 00000000..be67734b --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/lthemeengine.pri @@ -0,0 +1,32 @@ +#Some conf to redirect intermediate stuff in separate dirs +UI_DIR=./.build/ui/ +MOC_DIR=./.build/moc/ +OBJECTS_DIR=./.build/obj +RCC_DIR=./.build/rcc + +QMAKE_DISTCLEAN += -r .build + +CONFIG += c++11 + +!isEqual (QT_MAJOR_VERSION, 5) { + error("Use Qt 5.4.0 or higher.") +} + +!greaterThan(QT_MINOR_VERSION, 3) { + error("Use Qt 5.4.0 or higher.") +} + +#Install paths +unix { + isEmpty(PREFIX) { + PREFIX = /usr + } + isEmpty(PLUGINDIR) { + PLUGINDIR = $$[QT_INSTALL_PLUGINS] + } + + BINDIR = $$PREFIX/bin + DATADIR = $$PREFIX/share + + DEFINES += LTHEMEENGINE_DATADIR=\\\"$$DATADIR\\\" +} diff --git a/src-qt5/core/lumina-theme-engine/lthemeengine.pro b/src-qt5/core/lumina-theme-engine/lthemeengine.pro new file mode 100644 index 00000000..2b2b34b0 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/lthemeengine.pro @@ -0,0 +1,31 @@ +TEMPLATE = subdirs + +SUBDIRS += src/lthemeengine-qtplugin src/lthemeengine-style src/lthemeengine + +unix:exists($$[QT_INSTALL_BINS]/lrelease){ +LRELEASE_EXECUTABLE = $$[QT_INSTALL_BINS]/lrelease +} + +unix:exists($$[QT_INSTALL_BINS]/lrelease-qt5){ +LRELEASE_EXECUTABLE = $$[QT_INSTALL_BINS]/lrelease-qt5 +} + + + +isEmpty(LRELEASE_EXECUTABLE){ +error(Could not find lrelease executable) +} +else { +message(Found lrelease executable: $$LRELEASE_EXECUTABLE) +} + +message(generating translations) +unix:system(find . -name *.ts | xargs $$LRELEASE_EXECUTABLE) + +include(lthemeengine.pri) + +message (PREFIX=$$PREFIX) +message (BINDIR=$$BINDIR) +message (DATADIR=$$DATADIR) +message (PLUGINDIR=$$PLUGINDIR) +equals (DISABLE_WIDGETS,1):message ("QtWidgets are disabled!") diff --git a/src-qt5/core/lumina-theme-engine/lumina-theme-engine.pro b/src-qt5/core/lumina-theme-engine/lumina-theme-engine.pro deleted file mode 100644 index 891d3a44..00000000 --- a/src-qt5/core/lumina-theme-engine/lumina-theme-engine.pro +++ /dev/null @@ -1,31 +0,0 @@ -TEMPLATE = subdirs - -SUBDIRS += src/lthemeengine-qtplugin src/lthemeengine-style src/lthemeengine - -unix:exists($$[QT_INSTALL_BINS]/lrelease){ -LRELEASE_EXECUTABLE = $$[QT_INSTALL_BINS]/lrelease -} - -unix:exists($$[QT_INSTALL_BINS]/lrelease-qt5){ -LRELEASE_EXECUTABLE = $$[QT_INSTALL_BINS]/lrelease-qt5 -} - - - -isEmpty(LRELEASE_EXECUTABLE){ -error(Could not find lrelease executable) -} -else { -message(Found lrelease executable: $$LRELEASE_EXECUTABLE) -} - -message(generating translations) -unix:system(find . -name *.ts | xargs $$LRELEASE_EXECUTABLE) - -include(lumina-theme-engine.pri) - -message (PREFIX=$$PREFIX) -message (BINDIR=$$BINDIR) -message (DATADIR=$$DATADIR) -message (PLUGINDIR=$$PLUGINDIR) -equals (DISABLE_WIDGETS,1):message ("QtWidgets are disabled!") diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengineplatformtheme.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengineplatformtheme.cpp index 0b0403a4..02f6a10f 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengineplatformtheme.cpp +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengineplatformtheme.cpp @@ -60,7 +60,7 @@ Q_LOGGING_CATEGORY(llthemeengine, "lthemeengine") //QT_QPA_PLATFORMTHEME=lthemeengine -lthemeenginePlatformTheme::Qt5CTPlatformTheme() +lthemeenginePlatformTheme::lthemeenginePlatformTheme() { if(QGuiApplication::desktopSettingsAware()) { @@ -78,7 +78,7 @@ lthemeenginePlatformTheme::Qt5CTPlatformTheme() #endif } -lthemeenginePlatformTheme::~Qt5CTPlatformTheme() +lthemeenginePlatformTheme::~lthemeenginePlatformTheme() { if(m_customPalette) delete m_customPalette; diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengineproxystyle.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengineproxystyle.cpp index 23ad01ef..c9833a30 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengineproxystyle.cpp +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengineproxystyle.cpp @@ -30,7 +30,7 @@ #include #include "lthemeengineproxystyle.h" -lthemeengineProxyStyle::Qt5CTProxyStyle(const QString &key) : +lthemeengineProxyStyle::lthemeengineProxyStyle(const QString &key) : QProxyStyle(key) { QSettings settings(lthemeengine::configFile(), QSettings::IniFormat); @@ -38,7 +38,7 @@ lthemeengineProxyStyle::Qt5CTProxyStyle(const QString &key) : m_activateItemOnSingleClick = settings.value("Interface/activate_item_on_single_click", Qt::PartiallyChecked).toInt(); } -lthemeengineProxyStyle::~Qt5CTProxyStyle() +lthemeengineProxyStyle::~lthemeengineProxyStyle() { //qDebug("%s", Q_FUNC_INFO); } diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.h b/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.h index 1eb33cdf..7493b39c 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.h +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.h @@ -33,10 +33,10 @@ #define LTHEMEENGINE_VERSION_MINOR 33 #define LTHEMEENGINE_TOSTRING(s) #s -#define LTHEMEENGINE_STRINGIFY(s) QT5CT_TOSTRING(s) +#define LTHEMEENGINE_STRINGIFY(s) LTHEMEENGINE_TOSTRING(s) -#define LTHEMEENGINE_VERSION_INT (QT5CT_VERSION_MAJOR<<8 | QT5CT_VERSION_MINOR) -#define LTHEMEENGINE_VERSION_STR QT5CT_STRINGIFY(QT5CT_VERSION_MAJOR.QT5CT_VERSION_MINOR) +#define LTHEMEENGINE_VERSION_INT (LTHEMEENGINE_VERSION_MAJOR<<8 | QT5CT_VERSION_MINOR) +#define LTHEMEENGINE_VERSION_STR LTHEMEENGINE_STRINGIFY(QT5CT_VERSION_MAJOR.QT5CT_VERSION_MINOR) #include #include diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.pro b/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.pro index 07677fe3..cc36ee5b 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.pro +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.pro @@ -47,8 +47,6 @@ HEADERS += \ DEFINES += USE_WIDGETS } -RESOURCES = translations/translations.qrc - target.path = $$BINDIR desktop.files = lthemeengine.desktop -- cgit From 2b41fac681c5b94206e78c5995551d033467ae01 Mon Sep 17 00:00:00 2001 From: q5sys Date: Tue, 18 Jul 2017 17:37:06 -0400 Subject: apply path patch --- .../src/lthemeengine/appearancepage.cpp | 2 +- .../src/lthemeengine/lthemeengine.cpp | 45 +++++++++++++++------- .../src/lthemeengine/lthemeengine.h | 8 ++-- .../lumina-theme-engine/src/lthemeengine/main.cpp | 2 +- .../src/lthemeengine/qsspage.cpp | 2 +- 5 files changed, 38 insertions(+), 21 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/appearancepage.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/appearancepage.cpp index 2c125ea8..b9175d6e 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/appearancepage.cpp +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/appearancepage.cpp @@ -310,7 +310,7 @@ void AppearancePage::readSettings() QDir("/").mkpath(lthemeengine::userColorSchemePath()); findColorSchemes(lthemeengine::userColorSchemePath()); - findColorSchemes(lthemeengine::sharedColorSchemePath()); + findColorSchemes(lthemeengine::sharedColorSchemePath().join(", ")); if(m_ui->colorSchemeComboBox->count() == 0) { diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.cpp index 1316cd75..c0c23f24 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.cpp +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.cpp @@ -85,20 +85,37 @@ QString lthemeengine::userStyleSheetPath() return configPath() + "qss/"; } -QString lthemeengine::sharedStyleSheetPath() -{ - return LTHEMEENGINE_DATADIR"/lthemeengine/qss/"; -} - -QString lthemeengine::userColorSchemePath() -{ - return configPath() + "colors/"; -} - -QString lthemeengine::sharedColorSchemePath() -{ - return LTHEMEENGINE_DATADIR"/lthemeengine/colors/"; -} +QStringList lthemeengine::sharedStyleSheetPath() + { + QStringList dirs; + dirs << QString(getenv("XDG_CONFIG_HOME")); + dirs << QString(getenv("XDG_CONFIG_DIRS")).split(":"); + for(int i=0; i #include @@ -48,9 +48,9 @@ public: static QString configFile(); static QStringList iconPaths(); static QString userStyleSheetPath(); - static QString sharedStyleSheetPath(); + static QStringList sharedStyleSheetPath(); static QString userColorSchemePath(); - static QString sharedColorSchemePath(); + static QStringList sharedColorSchemePath(); static QString systemLanguageID(); private: diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/main.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/main.cpp index 481242cd..1961d17d 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/main.cpp +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/main.cpp @@ -49,7 +49,7 @@ int main(int argc, char **argv) app.installTranslator(&qt_translator); qDebug("Configuration path: %s", qPrintable(lthemeengine::configPath())); - qDebug("Shared QSS path: %s", qPrintable(lthemeengine::sharedStyleSheetPath())); + qDebug("Shared QSS path: %s", qPrintable(lthemeengine::sharedStyleSheetPath().join(", "))); //checking environment QStringList errorMessages; diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.cpp index 56aedf4d..10f21f48 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.cpp +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.cpp @@ -160,7 +160,7 @@ void QSSPage::readSettings() //load stylesheets m_ui->qssListWidget->clear(); findStyleSheets(lthemeengine::userStyleSheetPath()); - findStyleSheets(lthemeengine::sharedStyleSheetPath()); + findStyleSheets(lthemeengine::sharedStyleSheetPath().join(", ")); QSettings settings(lthemeengine::configFile(), QSettings::IniFormat); QStringList styleSheets = settings.value("Interface/stylesheets").toStringList(); -- cgit From b67c841267aafe3e5f3fc1df145280e7ee15bda7 Mon Sep 17 00:00:00 2001 From: q5sys Date: Tue, 18 Jul 2017 18:06:27 -0400 Subject: update to .desktop file --- src-qt5/core/lumina-theme-engine/README.md | 2 + .../src/lthemeengine/lthemeengine.desktop | 55 +--------------------- 2 files changed, 4 insertions(+), 53 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-theme-engine/README.md b/src-qt5/core/lumina-theme-engine/README.md index 54858198..d46797b1 100644 --- a/src-qt5/core/lumina-theme-engine/README.md +++ b/src-qt5/core/lumina-theme-engine/README.md @@ -10,3 +10,5 @@ This is a theme engine for the Lumina Desktop - qttools >= 5.4.0 2. Lumina Desktop + +Environment Variable QT_QPA_PLATFORMTHEME=lthemeengine needs to be set diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.desktop b/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.desktop index be2bde14..7eb91bee 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.desktop +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.desktop @@ -1,58 +1,7 @@ [Desktop Entry] X-Desktop-File-Install-Version=0.11 -Name=Qt5 Settings - -Comment=Qt5 Configuration Tool - -Comment[ar]= أداة اعداد Qt5 -Name[ar]=إعدادات Qt5 - -Comment[bg]=Инструмент за настройка на Qt5 -Name[bg]=Настройки на Qt5 - -Comment[de]=Qt5-Konfigurationswerkzeug -Name[de]=Qt5-Einstellungen - -Comment[el]=Εργαλείο διαμόρφωσης της Qt5 -Name[el]=Ρυθμίσεις Qt5 - -Comment[es_ES]=Herramienta de configuración de QT5 -Name[es_ES]=Ajustes QT5 - -Comment[fr]=Un outil de configuration de Qt5 -Name[fr]=Paramètres de Qt5 - -Comment[he]=כלי תצורה Qt5 -Name[he]=הגדרות Qt5 - -Comment[ru]=Программа для настройки Qt5 -Name[ru]=Настройки Qt5 - -Comment[cs]=Nástroj na nastavení Qt5 -Name[cs]=Nastavení Qt5 - -Comment[it_IT]=Strumento di configurazione Qt5 -Name[it_IT]=Impostazioni Qt5 - -Comment[nl_NL]=Qt5-instellingengereedschap -Name[nl_NL]=Qt5-instellingen - -Comment[pl]=Narzędzie konfiguracji Qt5 -Name[pl]=Ustawienia Qt5 - -Comment[sk]=Qt5 konfiguračný nástroj -Name[sk]=Qt5 nastavenia - -Comment[sr]=Qt5 конфигурациони алат -Name[sr]=Qt5 поставке - -Comment[zh_CN]=Qt5 配置工具 -Name[zh_CN]=Qt5 设置 - -Comment[zh_TW]=Qt5 設定工具 -Name[zh_TW]=Qt5 設定 - - +Name=Lumine Theme Engine +Comment=Lumina Theme Engine Exec=lthemeengine Icon=preferences-desktop-theme Terminal=false -- cgit From 967c1264dc18609a4326c8a0bdb60d1599c27416 Mon Sep 17 00:00:00 2001 From: q5sys Date: Tue, 18 Jul 2017 18:09:10 -0400 Subject: update to main .pro file --- src-qt5/core/lumina-theme-engine/lthemeengine.pro | 38 +++++++++++++++++++---- 1 file changed, 32 insertions(+), 6 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-theme-engine/lthemeengine.pro b/src-qt5/core/lumina-theme-engine/lthemeengine.pro index 2b2b34b0..d8ba709e 100644 --- a/src-qt5/core/lumina-theme-engine/lthemeengine.pro +++ b/src-qt5/core/lumina-theme-engine/lthemeengine.pro @@ -1,3 +1,28 @@ +QT += core gui +greaterThan(QT_MAJOR_VERSION, 4): QT += widgets x11extras network + +QMAKE_DISTCLEAN += -r .build + +CONFIG += c++11 + +desktop.files=src/lthemeengine/ltheme.desktop +desktop.path=$${L_SHAREDIR}/applications/ + +#Install paths +unix { + isEmpty(PREFIX) { + PREFIX = /usr + } + isEmpty(PLUGINDIR) { + PLUGINDIR = $$[QT_INSTALL_PLUGINS] + } + + BINDIR = $$PREFIX/bin + DATADIR = $$PREFIX/share + + DEFINES += LTHEMEENGINE_DATADIR=\\\"$$DATADIR\\\" +} + TEMPLATE = subdirs SUBDIRS += src/lthemeengine-qtplugin src/lthemeengine-style src/lthemeengine @@ -11,7 +36,6 @@ LRELEASE_EXECUTABLE = $$[QT_INSTALL_BINS]/lrelease-qt5 } - isEmpty(LRELEASE_EXECUTABLE){ error(Could not find lrelease executable) } @@ -19,13 +43,15 @@ else { message(Found lrelease executable: $$LRELEASE_EXECUTABLE) } -message(generating translations) -unix:system(find . -name *.ts | xargs $$LRELEASE_EXECUTABLE) - -include(lthemeengine.pri) - message (PREFIX=$$PREFIX) message (BINDIR=$$BINDIR) message (DATADIR=$$DATADIR) message (PLUGINDIR=$$PLUGINDIR) equals (DISABLE_WIDGETS,1):message ("QtWidgets are disabled!") + +#Some conf to redirect intermediate stuff in separate dirs +UI_DIR=./.build/ui/ +MOC_DIR=./.build/moc/ +OBJECTS_DIR=./.build/obj +RCC_DIR=./.build/rcc + -- cgit From 77f9a3e00935288810c9ca9807256a9aa9b2ce52 Mon Sep 17 00:00:00 2001 From: q5sys Date: Tue, 18 Jul 2017 18:52:18 -0400 Subject: set proper define for datadir --- src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.cpp index c0c23f24..65328963 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.cpp +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.cpp @@ -31,7 +31,7 @@ #include "lthemeengine.h" #ifndef LTHEMEENGINE_DATADIR -#define LTHEMEENGINE_DATADIR "/usr/share" +#define LTHEMEENGINE_DATADIR "/usr/local/share" #endif -- cgit From 6331ded27b98c14295f7e7367b321e97366ad897 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Tue, 18 Jul 2017 18:56:59 -0400 Subject: Get the resize/movement functionality all finished. --- src-qt5/core/libLumina/RootSubWindow.cpp | 34 +++++++++++++++++++------------- src-qt5/core/libLumina/RootSubWindow.h | 2 ++ 2 files changed, 22 insertions(+), 14 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/RootSubWindow.cpp b/src-qt5/core/libLumina/RootSubWindow.cpp index d4c0ceeb..a759dc09 100644 --- a/src-qt5/core/libLumina/RootSubWindow.cpp +++ b/src-qt5/core/libLumina/RootSubWindow.cpp @@ -311,7 +311,8 @@ void RootSubWindow::propertiesChanged(QList props, QList case NativeWindow::Visible: //qDebug() << "Got Visibility Change:" << vals[i] << this->geometry() << WIN->geometry(); if(vals[i].toBool()){ - animResetProp = WIN->geometry(); //this->geometry(); + if(lastGeom.isNull()){ animResetProp = WIN->geometry(); } + else{ animResetProp = lastGeom; } anim->setPropertyName("geometry"); anim->setStartValue( QRect(animResetProp.toRect().center(), QSize(0,0)) ); anim->setEndValue(animResetProp); @@ -320,6 +321,7 @@ void RootSubWindow::propertiesChanged(QList props, QList this->show(); }else{ animResetProp = this->geometry(); //hide event - should already be the right geom + lastGeom = this->geometry(); anim->setPropertyName("geometry"); anim->setStartValue(this->geometry()); anim->setEndValue( QRect(this->geometry().center(), QSize(0,0) ) ); @@ -337,21 +339,25 @@ void RootSubWindow::propertiesChanged(QList props, QList break; case NativeWindow::GlobalPos: //qDebug() << "Got Global Pos:" << this->pos() << WinWidget->mapToGlobal(QPoint(0,0)) << WIN->geometry().topLeft() << vals[i].toPoint(); - this->move( vals[i].toPoint() - (WinWidget->mapToGlobal(QPoint(0,0)) - this->pos()) ); //WIN->geometry().topLeft() ); + if(activeState == RootSubWindow::Normal){ + this->move( vals[i].toPoint() - (WinWidget->mapToGlobal(QPoint(0,0)) - this->pos()) ); //WIN->geometry().topLeft() ); + } break; case NativeWindow::Size: - qDebug() << " - SIZE CHANGE"; - if(WIN->property(NativeWindow::FrameExtents).isNull() && (istate() != QPropertyAnimation::Running){ - if(vals[i].toSize() != WinWidget->size()){ - qDebug() << "Got Widget Size Change:" << vals[i].toSize() << WinWidget->size(); - WinWidget->resize(vals[i].toSize()); - this->resize( WIN->geometry().size() ); - qDebug() << " - Size after change:" << WinWidget->size() << this->size() << WIN->geometry(); + //qDebug() << " - SIZE CHANGE"; + if(activeState == RootSubWindow::Normal){ + if(WIN->property(NativeWindow::FrameExtents).isNull() && (istate() != QPropertyAnimation::Running){ + if(vals[i].toSize() != WinWidget->size()){ + //qDebug() << "Got Widget Size Change:" << vals[i].toSize() << WinWidget->size(); + WinWidget->resize(vals[i].toSize()); + this->resize( WIN->geometry().size() ); + //qDebug() << " - Size after change:" << WinWidget->size() << this->size() << WIN->geometry(); + } } } break; diff --git a/src-qt5/core/libLumina/RootSubWindow.h b/src-qt5/core/libLumina/RootSubWindow.h index 804dcc9d..9c86e2bf 100644 --- a/src-qt5/core/libLumina/RootSubWindow.h +++ b/src-qt5/core/libLumina/RootSubWindow.h @@ -53,6 +53,8 @@ private: QPropertyAnimation *anim; QVariant animResetProp; QTimer *moveTimer; + QRect lastGeom; //frame coordinates + void initWindowFrame(); void enableFrame(bool); -- cgit From f998c3ad846ac75776cb2cf5207968cfe90dc25d Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Tue, 18 Jul 2017 19:04:05 -0400 Subject: Clean up a bit of debugging and such --- src-qt5/core/libLumina/RootSubWindow.cpp | 64 ++++++++------------------------ src-qt5/core/libLumina/RootSubWindow.h | 3 -- 2 files changed, 16 insertions(+), 51 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/RootSubWindow.cpp b/src-qt5/core/libLumina/RootSubWindow.cpp index a759dc09..35b2d7cd 100644 --- a/src-qt5/core/libLumina/RootSubWindow.cpp +++ b/src-qt5/core/libLumina/RootSubWindow.cpp @@ -26,7 +26,7 @@ RootSubWindow::RootSubWindow(QWidget *root, NativeWindow *win) : QFrame(root){ //Hookup the signals/slots connect(WIN, SIGNAL(PropertiesChanged(QList, QList)), this, SLOT(propertiesChanged(QList, QList))); WinWidget->embedWindow(WIN); - qDebug() << "[NEW WINDOW]" << WIN->id() << WinWidget->winId() << this->winId(); + //qDebug() << "[NEW WINDOW]" << WIN->id() << WinWidget->winId() << this->winId(); LoadAllProperties(); } @@ -221,7 +221,7 @@ void RootSubWindow::enableFrame(bool on){ extents[2] = WIN_BORDER + titleBar->height(); extents[3] = WIN_BORDER; } - qDebug() << "SET FRAME EXTENTS:" << extents; + //qDebug() << "SET FRAME EXTENTS:" << extents; WIN->requestProperty(NativeWindow::FrameExtents, QVariant::fromValue< QList >(extents) ); //save on raw window itself WIN->setProperty(NativeWindow::FrameExtents, QVariant::fromValue< QList >(extents) ); //save to structure now } @@ -242,12 +242,6 @@ void RootSubWindow::LoadProperties( QList< NativeWindow::Property> list){ void RootSubWindow::clientClosed(){ //qDebug() << "Client Closed"; closing = true; - /*animResetProp = QRect(WIN->property(NativeWindow::GlobalPos).toPoint(), WIN->property(NativeWindow::Size).toSize()); - anim->setPropertyName("geometry"); - anim->setStartValue(this->geometry()); - anim->setEndValue( QRect(this->geometry().center(), QSize(0,0) ) ); - anim->start(); - QTimer::singleShot(anim->duration(), this, SLOT(close()) );*/ if(anim->state()!=QAbstractAnimation::Running){ this->close(); } } @@ -311,8 +305,7 @@ void RootSubWindow::propertiesChanged(QList props, QList case NativeWindow::Visible: //qDebug() << "Got Visibility Change:" << vals[i] << this->geometry() << WIN->geometry(); if(vals[i].toBool()){ - if(lastGeom.isNull()){ animResetProp = WIN->geometry(); } - else{ animResetProp = lastGeom; } + animResetProp = WIN->geometry(); //this->geometry(); anim->setPropertyName("geometry"); anim->setStartValue( QRect(animResetProp.toRect().center(), QSize(0,0)) ); anim->setEndValue(animResetProp); @@ -321,7 +314,6 @@ void RootSubWindow::propertiesChanged(QList props, QList this->show(); }else{ animResetProp = this->geometry(); //hide event - should already be the right geom - lastGeom = this->geometry(); anim->setPropertyName("geometry"); anim->setStartValue(this->geometry()); anim->setEndValue( QRect(this->geometry().center(), QSize(0,0) ) ); @@ -339,25 +331,21 @@ void RootSubWindow::propertiesChanged(QList props, QList break; case NativeWindow::GlobalPos: //qDebug() << "Got Global Pos:" << this->pos() << WinWidget->mapToGlobal(QPoint(0,0)) << WIN->geometry().topLeft() << vals[i].toPoint(); - if(activeState == RootSubWindow::Normal){ - this->move( vals[i].toPoint() - (WinWidget->mapToGlobal(QPoint(0,0)) - this->pos()) ); //WIN->geometry().topLeft() ); - } + this->move( vals[i].toPoint() - (WinWidget->mapToGlobal(QPoint(0,0)) - this->pos()) ); //WIN->geometry().topLeft() ); break; case NativeWindow::Size: - //qDebug() << " - SIZE CHANGE"; - if(activeState == RootSubWindow::Normal){ - if(WIN->property(NativeWindow::FrameExtents).isNull() && (istate() != QPropertyAnimation::Running){ - if(vals[i].toSize() != WinWidget->size()){ - //qDebug() << "Got Widget Size Change:" << vals[i].toSize() << WinWidget->size(); - WinWidget->resize(vals[i].toSize()); - this->resize( WIN->geometry().size() ); - //qDebug() << " - Size after change:" << WinWidget->size() << this->size() << WIN->geometry(); - } + qDebug() << " - SIZE CHANGE"; + if(WIN->property(NativeWindow::FrameExtents).isNull() && (istate() != QPropertyAnimation::Running){ + if(vals[i].toSize() != WinWidget->size()){ + qDebug() << "Got Widget Size Change:" << vals[i].toSize() << WinWidget->size(); + WinWidget->resize(vals[i].toSize()); + this->resize( WIN->geometry().size() ); + qDebug() << " - Size after change:" << WinWidget->size() << this->size() << WIN->geometry(); } } break; @@ -397,8 +385,6 @@ void RootSubWindow::animFinished(){ qDebug() << " - Ending Value:" << anim->endValue(); qDebug() << " - Current Value:" << this->geometry();*/ this->setGeometry( animResetProp.toRect() ); - //WIN->requestProperty(NativeWindow::Size, WinWidget->size(), true); - //WIN->requestProperty(NativeWindow::GlobalPos, WinWidget->mapToGlobal(QPoint(0,0)),true ); } } animResetProp = QVariant(); //clear the variable @@ -527,24 +513,6 @@ void RootSubWindow::leaveEvent(QEvent *ev){ } } -/*void RootSubWindow::hideEvent(QHideEvent *ev){ - WIN->requestProperty(NativeWindow::Visible, false); - QFrame::hideEvent(ev); -}*/ - -void RootSubWindow::resizeEvent(QResizeEvent *ev){ - //qDebug() << "Got Resize Event:" << ev->size(); - /*if(WinWidget->size() != WIN->property(NativeWindow::Size).toSize() && anim->state()!=QAbstractAnimation::Running){ - WIN->requestProperty(NativeWindow::Size, WinWidget->size()); - }*/ - QFrame::resizeEvent(ev); -} - -/*void RootSubWindow::showEvent(QShowEvent *ev){ - WIN->requestProperty(NativeWindow::Visible, true); - QFrame::showEvent(ev); -}*/ - void RootSubWindow::moveEvent(QMoveEvent *ev){ //qDebug() << "Got Move Event:" << ev->pos() << WinWidget->geometry(); QFrame::moveEvent(ev); diff --git a/src-qt5/core/libLumina/RootSubWindow.h b/src-qt5/core/libLumina/RootSubWindow.h index 9c86e2bf..de6aba89 100644 --- a/src-qt5/core/libLumina/RootSubWindow.h +++ b/src-qt5/core/libLumina/RootSubWindow.h @@ -85,9 +85,6 @@ protected: void mouseReleaseEvent(QMouseEvent*); void leaveEvent(QEvent *ev); - //void hideEvent(QHideEvent *ev); - void resizeEvent(QResizeEvent *ev); - //void showEvent(QShowEvent *ev); void moveEvent(QMoveEvent *ev); -- cgit From 1de88d56aa6eafc7ee347a607ae855526e5edad5 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Tue, 18 Jul 2017 20:47:10 -0400 Subject: Finish up the on-move window notification so that sub-windows (menus and such) are painted in the proper place. --- src-qt5/core/libLumina/NativeEmbedWidget.cpp | 20 ++++++++++++++++++++ src-qt5/core/libLumina/NativeEmbedWidget.h | 2 +- src-qt5/core/libLumina/RootSubWindow.cpp | 20 +++++++++++++------- 3 files changed, 34 insertions(+), 8 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/NativeEmbedWidget.cpp b/src-qt5/core/libLumina/NativeEmbedWidget.cpp index 2f3691ae..b998c4b5 100644 --- a/src-qt5/core/libLumina/NativeEmbedWidget.cpp +++ b/src-qt5/core/libLumina/NativeEmbedWidget.cpp @@ -154,6 +154,26 @@ bool NativeEmbedWidget::isEmbedded(){ return (WIN!=0); } +// ============== +// PUBLIC SLOTS +// ============== +void NativeEmbedWidget::resyncWindow(){ + QSize sz = this->size(); + if(WIN==0){ return; } + //qDebug() << "Sync Window Size:" << sz; + xcb_configure_window_value_list_t valList; + valList.x = -1; + valList.y = 0; + valList.width = sz.width(); + valList.height = sz.height(); + uint16_t mask = 0; + mask = mask | XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT; + mask = mask | XCB_CONFIG_WINDOW_X | XCB_CONFIG_WINDOW_Y; + xcb_configure_window_aux(QX11Info::connection(), WIN->id(), mask, &valList); + valList.x = 0; + xcb_configure_window_aux(QX11Info::connection(), WIN->id(), mask, &valList); +} + // ============== // PROTECTED // ============== diff --git a/src-qt5/core/libLumina/NativeEmbedWidget.h b/src-qt5/core/libLumina/NativeEmbedWidget.h index 55d655f2..07e1c4dd 100644 --- a/src-qt5/core/libLumina/NativeEmbedWidget.h +++ b/src-qt5/core/libLumina/NativeEmbedWidget.h @@ -38,7 +38,7 @@ public: bool isEmbedded(); //status of the embed public slots: - void resyncWindow(){ syncWinSize(this->size()); } + void resyncWindow(); protected: void resizeEvent(QResizeEvent *ev); diff --git a/src-qt5/core/libLumina/RootSubWindow.cpp b/src-qt5/core/libLumina/RootSubWindow.cpp index 35b2d7cd..1059871a 100644 --- a/src-qt5/core/libLumina/RootSubWindow.cpp +++ b/src-qt5/core/libLumina/RootSubWindow.cpp @@ -27,6 +27,7 @@ RootSubWindow::RootSubWindow(QWidget *root, NativeWindow *win) : QFrame(root){ connect(WIN, SIGNAL(PropertiesChanged(QList, QList)), this, SLOT(propertiesChanged(QList, QList))); WinWidget->embedWindow(WIN); //qDebug() << "[NEW WINDOW]" << WIN->id() << WinWidget->winId() << this->winId(); + activeState = RootSubWindow::Normal; LoadAllProperties(); } @@ -96,6 +97,7 @@ RootSubWindow::ModState RootSubWindow::getStateAtPoint(QPoint pt, bool setoffset return Normal; } } + //if it gets this far just return normal return Normal; } @@ -305,7 +307,8 @@ void RootSubWindow::propertiesChanged(QList props, QList case NativeWindow::Visible: //qDebug() << "Got Visibility Change:" << vals[i] << this->geometry() << WIN->geometry(); if(vals[i].toBool()){ - animResetProp = WIN->geometry(); //this->geometry(); + if(lastGeom.isNull()){ animResetProp = this->geometry(); } + else{ animResetProp = lastGeom; } anim->setPropertyName("geometry"); anim->setStartValue( QRect(animResetProp.toRect().center(), QSize(0,0)) ); anim->setEndValue(animResetProp); @@ -314,6 +317,7 @@ void RootSubWindow::propertiesChanged(QList props, QList this->show(); }else{ animResetProp = this->geometry(); //hide event - should already be the right geom + lastGeom = this->geometry(); anim->setPropertyName("geometry"); anim->setStartValue(this->geometry()); anim->setEndValue( QRect(this->geometry().center(), QSize(0,0) ) ); @@ -331,21 +335,23 @@ void RootSubWindow::propertiesChanged(QList props, QList break; case NativeWindow::GlobalPos: //qDebug() << "Got Global Pos:" << this->pos() << WinWidget->mapToGlobal(QPoint(0,0)) << WIN->geometry().topLeft() << vals[i].toPoint(); - this->move( vals[i].toPoint() - (WinWidget->mapToGlobal(QPoint(0,0)) - this->pos()) ); //WIN->geometry().topLeft() ); + if(activeState == RootSubWindow::Normal){ + this->move( WIN->geometry().topLeft() ); + } break; case NativeWindow::Size: - qDebug() << " - SIZE CHANGE"; + //qDebug() << " - SIZE CHANGE"; if(WIN->property(NativeWindow::FrameExtents).isNull() && (istate() != QPropertyAnimation::Running){ - if(vals[i].toSize() != WinWidget->size()){ - qDebug() << "Got Widget Size Change:" << vals[i].toSize() << WinWidget->size(); + }else if(anim->state() != QPropertyAnimation::Running ){ + if(vals[i].toSize() != WinWidget->size() && activeState==Normal){ + //qDebug() << "Got Widget Size Change:" << vals[i].toSize() << WinWidget->size(); WinWidget->resize(vals[i].toSize()); this->resize( WIN->geometry().size() ); - qDebug() << " - Size after change:" << WinWidget->size() << this->size() << WIN->geometry(); + //qDebug() << " - Size after change:" << WinWidget->size() << this->size() << WIN->geometry(); } } break; -- cgit From 58454338dfe1a7d259e8ff7605cef260f31cfc19 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Tue, 18 Jul 2017 21:47:06 -0400 Subject: Get the in-window compositing *nearly* working. Still a bit unstable right now (closing a window crashes X), but the compositing redirection/painting seems to be working somewhat. --- src-qt5/core/libLumina/NativeEmbedWidget.cpp | 41 ++++++++++------------------ 1 file changed, 14 insertions(+), 27 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/NativeEmbedWidget.cpp b/src-qt5/core/libLumina/NativeEmbedWidget.cpp index b998c4b5..77a7e378 100644 --- a/src-qt5/core/libLumina/NativeEmbedWidget.cpp +++ b/src-qt5/core/libLumina/NativeEmbedWidget.cpp @@ -16,7 +16,7 @@ #include #include -//xcb_pixmap_t PIXBACK; //backend pixmap that compositing redirects to +//xcb_image_t *ximg; #define NORMAL_WIN_EVENT_MASK (XCB_EVENT_MASK_BUTTON_PRESS | \ XCB_EVENT_MASK_BUTTON_RELEASE | \ @@ -66,31 +66,19 @@ void NativeEmbedWidget::showWindow(){ } QImage NativeEmbedWidget::windowImage(QRect geom){ - //Need the graphics context of the window - /*xcb_gcontext_t gc = xcb_generate_id(QX11Info::connection()); - xcb_screen_t *screen = xcb_setup_roots_iterator(xcb_get_setup(QX11Info::connection())).data; - uint32_t values[1]; - values[0] = screen->black_pixel; - xcb_create_gc(QX11Info::connection(), - gc, - this->winId(), - XCB_GC_BACKGROUND, - values ); + //Pull the XCB pixmap out of the compositing layer xcb_pixmap_t pix = xcb_generate_id(QX11Info::connection()); xcb_composite_name_window_pixmap(QX11Info::connection(), WIN->id(), pix); - //Now copy this pixmap onto widget - xcb_copy_area(QX11Info::connection(), pix, this->winId(), gc, geom.x(),geom.y(),geom.x(),geom.y(),geom.width(), geom.height()); + //Convert this pixmap into a QImage + //if(ximg!=0){ xcb_image_destroy(ximg); } //clean up previous image data + xcb_image_t *ximg = xcb_image_get(QX11Info::connection(), pix, geom.x(), geom.y(), geom.width(), geom.height(), ~0, XCB_IMAGE_FORMAT_Z_PIXMAP); + QImage img(ximg->data, ximg->width, ximg->height, ximg->stride, QImage::Format_ARGB32_Premultiplied); + img = img.copy(); //detach this image from the XCB data structures + //Cleanup the XCB data structures xcb_free_pixmap(QX11Info::connection(), pix); - return QImage();*/ + xcb_image_destroy(ximg); + return img.copy(); - /*xcb_put_image(QX11Info::connection(), XCB_IMAGE_FORMAT_Z_PIXMAP, pix, gc, sz.width(), sz.height(), 0, 0, */ - /*xcb_image_t *img = xcb_image_get(QX11Info::connection(), WIN->id(), geom.x(), geom.y(), geom.width(), geom.height(), 1, XCB_IMAGE_FORMAT_Z_PIXMAP); - if(img==0){ return QImage(); } - QImage image(geom.size(), QImage::Format_ARGB32); - image.loadFromData(img->data, img->size); - return image;*/ - - return QImage(); } // ============ @@ -121,13 +109,10 @@ bool NativeEmbedWidget::embedWindow(NativeWindow *window){ xcb_send_event(QX11Info::connection(), 0, WIN->id(), XCB_EVENT_MASK_STRUCTURE_NOTIFY | XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT, (const char *) &event); */ //Now setup any redirects and return - //this->SelectInput(WIN->id(), true); //Notify of structure changes - //xcb_composite_redirect_window(QX11Info::connection(), WIN->id(), XCB_COMPOSITE_REDIRECT_MANUAL); //XCB_COMPOSITE_REDIRECT_[MANUAL/AUTOMATIC]); + xcb_composite_redirect_window(QX11Info::connection(), WIN->id(), XCB_COMPOSITE_REDIRECT_MANUAL); //XCB_COMPOSITE_REDIRECT_[MANUAL/AUTOMATIC]); //xcb_composite_name_window_pixmap(QX11Info::connection(), WIN->id(), PIXBACK); - //Now map the window (will be a transparent child of the container) - //xcb_map_window(QX11Info::connection(), WIN->id()); - //xcb_map_window(QX11Info::connection(), this->winId()); + //Now create/register the damage handler // -- XCB (Note: The XCB damage registration is completely broken at the moment - 9/15/15, Ken Moore) // -- Retested 6/29/17 (no change) Ken Moore @@ -200,9 +185,11 @@ void NativeEmbedWidget::paintEvent(QPaintEvent *ev){ if(!img.isNull()){ QPainter P(this); P.drawImage( ev->rect() , img, ev->rect(), Qt::NoOpaqueDetection); //1-to-1 mapping + qDebug() << "Painted Rect:" << ev->rect() << this->geometry(); //Note: Qt::NoOpaqueDetection Speeds up the paint by bypassing the checks to see if there are [semi-]transparent pixels // Since this is an embedded image - we fully expect there to be transparency most of the time. }else{ QWidget::paintEvent(ev); } + qDebug() << "Done Painting"; } -- cgit From 1ffb954b353346533f4f71ffb41d5d5b65cb333d Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Wed, 19 Jul 2017 09:04:15 -0400 Subject: Get compositing completely working. This broke the move-update patch a bit - need to find another way to poke the window after it gets moved. --- src-qt5/core/libLumina/NativeEmbedWidget.cpp | 41 ++++++++++++++++------------ 1 file changed, 24 insertions(+), 17 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/NativeEmbedWidget.cpp b/src-qt5/core/libLumina/NativeEmbedWidget.cpp index 77a7e378..333fe6e2 100644 --- a/src-qt5/core/libLumina/NativeEmbedWidget.cpp +++ b/src-qt5/core/libLumina/NativeEmbedWidget.cpp @@ -16,8 +16,6 @@ #include #include -//xcb_image_t *ximg; - #define NORMAL_WIN_EVENT_MASK (XCB_EVENT_MASK_BUTTON_PRESS | \ XCB_EVENT_MASK_BUTTON_RELEASE | \ XCB_EVENT_MASK_POINTER_MOTION | \ @@ -50,6 +48,7 @@ void NativeEmbedWidget::syncWinSize(QSize sz){ mask = mask | XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT; mask = mask | XCB_CONFIG_WINDOW_X | XCB_CONFIG_WINDOW_Y; xcb_configure_window_aux(QX11Info::connection(), WIN->id(), mask, &valList); + //xcb_flush(QX11Info::connection()); } void NativeEmbedWidget::syncWidgetSize(QSize sz){ @@ -69,15 +68,19 @@ QImage NativeEmbedWidget::windowImage(QRect geom){ //Pull the XCB pixmap out of the compositing layer xcb_pixmap_t pix = xcb_generate_id(QX11Info::connection()); xcb_composite_name_window_pixmap(QX11Info::connection(), WIN->id(), pix); + if(pix==0){ return QImage(); } + //Convert this pixmap into a QImage - //if(ximg!=0){ xcb_image_destroy(ximg); } //clean up previous image data xcb_image_t *ximg = xcb_image_get(QX11Info::connection(), pix, geom.x(), geom.y(), geom.width(), geom.height(), ~0, XCB_IMAGE_FORMAT_Z_PIXMAP); + if(ximg == 0){ return QImage(); } QImage img(ximg->data, ximg->width, ximg->height, ximg->stride, QImage::Format_ARGB32_Premultiplied); img = img.copy(); //detach this image from the XCB data structures + xcb_image_destroy(ximg); + //Cleanup the XCB data structures xcb_free_pixmap(QX11Info::connection(), pix); - xcb_image_destroy(ximg); - return img.copy(); + + return img; } @@ -110,8 +113,7 @@ bool NativeEmbedWidget::embedWindow(NativeWindow *window){ */ //Now setup any redirects and return xcb_composite_redirect_window(QX11Info::connection(), WIN->id(), XCB_COMPOSITE_REDIRECT_MANUAL); //XCB_COMPOSITE_REDIRECT_[MANUAL/AUTOMATIC]); - - //xcb_composite_name_window_pixmap(QX11Info::connection(), WIN->id(), PIXBACK); + xcb_composite_redirect_subwindows(QX11Info::connection(), WIN->id(), XCB_COMPOSITE_REDIRECT_MANUAL); //XCB_COMPOSITE_REDIRECT_[MANUAL/AUTOMATIC]); //Now create/register the damage handler // -- XCB (Note: The XCB damage registration is completely broken at the moment - 9/15/15, Ken Moore) @@ -120,6 +122,7 @@ bool NativeEmbedWidget::embedWindow(NativeWindow *window){ //xcb_damage_create(QX11Info::connection(), dmgID, WIN->id(), XCB_DAMAGE_REPORT_LEVEL_RAW_RECTANGLES); // -- XLib (Note: This is only used because the XCB routine above does not work - needs to be fixed upstream in XCB itself). Damage dmgID = XDamageCreate(QX11Info::display(), WIN->id(), XDamageReportRawRectangles); + WIN->addDamageID( (uint) dmgID); //save this for later WIN->addFrameWinID(this->winId()); connect(WIN, SIGNAL(VisualChanged()), this, SLOT(update()) ); //make sure we repaint the widget on visual change @@ -145,17 +148,21 @@ bool NativeEmbedWidget::isEmbedded(){ void NativeEmbedWidget::resyncWindow(){ QSize sz = this->size(); if(WIN==0){ return; } + //Just jitter the x origin of the window 1 pixel so the window knows to re-check it's global position + // before creating child windows (menu's in particular). + //qDebug() << "Sync Window Size:" << sz; xcb_configure_window_value_list_t valList; - valList.x = -1; + valList.x = 0; valList.y = 0; valList.width = sz.width(); - valList.height = sz.height(); + //valList.height = sz.height()-1; uint16_t mask = 0; mask = mask | XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT; mask = mask | XCB_CONFIG_WINDOW_X | XCB_CONFIG_WINDOW_Y; - xcb_configure_window_aux(QX11Info::connection(), WIN->id(), mask, &valList); - valList.x = 0; + //xcb_configure_window_aux(QX11Info::connection(), WIN->id(), mask, &valList); + valList.height = sz.height(); + //xcb_flush(QX11Info::connection()); xcb_configure_window_aux(QX11Info::connection(), WIN->id(), mask, &valList); } @@ -181,15 +188,15 @@ void NativeEmbedWidget::paintEvent(QPaintEvent *ev){ //QWidget::paintEvent(ev); //ensure all the Qt-compositing is done first if(WIN==0){ QWidget::paintEvent(ev); return; } //Need to paint the image from the window onto the widget as an overlay - QImage img = windowImage(ev->rect()); + QRect geom = QRect(0,0,this->width(), this->height()); //always paint the whole window + //qDebug() << "Get Paint image"; + QImage img = windowImage(geom); if(!img.isNull()){ QPainter P(this); - P.drawImage( ev->rect() , img, ev->rect(), Qt::NoOpaqueDetection); //1-to-1 mapping - qDebug() << "Painted Rect:" << ev->rect() << this->geometry(); + P.drawImage( geom , img, geom, Qt::NoOpaqueDetection); //1-to-1 mapping + //qDebug() << "Painted Rect:" << ev->rect() << this->geometry(); //Note: Qt::NoOpaqueDetection Speeds up the paint by bypassing the checks to see if there are [semi-]transparent pixels // Since this is an embedded image - we fully expect there to be transparency most of the time. - }else{ - QWidget::paintEvent(ev); } - qDebug() << "Done Painting"; + //qDebug() << "Done Painting"; } -- cgit From f5b60b2681bc6fc8e9171566e28064fe7048aa8b Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Wed, 19 Jul 2017 13:53:34 -0400 Subject: Another checkpoint in the compositing saga. Got most of it working, but still getting random artifacting *outside* of the window that we are painting from time to time. --- src-qt5/core/libLumina/NativeEmbedWidget.cpp | 68 +++++++++++++++------------- src-qt5/core/libLumina/NativeEmbedWidget.h | 9 +++- src-qt5/core/libLumina/RootSubWindow.cpp | 7 ++- src-qt5/core/lumina-desktop-unified/main.cpp | 1 + 4 files changed, 51 insertions(+), 34 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/libLumina/NativeEmbedWidget.cpp b/src-qt5/core/libLumina/NativeEmbedWidget.cpp index 333fe6e2..80c843e0 100644 --- a/src-qt5/core/libLumina/NativeEmbedWidget.cpp +++ b/src-qt5/core/libLumina/NativeEmbedWidget.cpp @@ -38,17 +38,13 @@ inline void registerClientEvents(WId id){ //Simplification functions for the XCB/XLib interactions void NativeEmbedWidget::syncWinSize(QSize sz){ if(WIN==0){ return; } + if(!sz.isValid()){ sz = this->size(); } //use the current widget size //qDebug() << "Sync Window Size:" << sz; - xcb_configure_window_value_list_t valList; - valList.x = 0; - valList.y = 0; - valList.width = sz.width(); - valList.height = sz.height(); - uint16_t mask = 0; - mask = mask | XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT; - mask = mask | XCB_CONFIG_WINDOW_X | XCB_CONFIG_WINDOW_Y; - xcb_configure_window_aux(QX11Info::connection(), WIN->id(), mask, &valList); - //xcb_flush(QX11Info::connection()); + if(sz == winSize){ return; } //no change + const uint32_t valList[2] = {(uint32_t) sz.width(), (uint32_t) sz.height()}; + const uint32_t mask = XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT; + xcb_configure_window(QX11Info::connection(), WIN->id(), mask, valList); + winSize = sz; //save this for checking later } void NativeEmbedWidget::syncWidgetSize(QSize sz){ @@ -89,7 +85,7 @@ QImage NativeEmbedWidget::windowImage(QRect geom){ // ============ NativeEmbedWidget::NativeEmbedWidget(QWidget *parent) : QWidget(parent){ WIN = 0; //nothing embedded yet - this->setStyleSheet("background: transparent;"); //this widget should be fully-transparent to Qt itself (will paint on top of that) + this->setSizeIncrement(2,2); } bool NativeEmbedWidget::embedWindow(NativeWindow *window){ @@ -125,7 +121,7 @@ bool NativeEmbedWidget::embedWindow(NativeWindow *window){ WIN->addDamageID( (uint) dmgID); //save this for later WIN->addFrameWinID(this->winId()); - connect(WIN, SIGNAL(VisualChanged()), this, SLOT(update()) ); //make sure we repaint the widget on visual change + connect(WIN, SIGNAL(VisualChanged()), this, SLOT(repaintWindow()) ); //make sure we repaint the widget on visual change registerClientEvents(WIN->id()); registerClientEvents(this->winId()); @@ -146,32 +142,37 @@ bool NativeEmbedWidget::isEmbedded(){ // PUBLIC SLOTS // ============== void NativeEmbedWidget::resyncWindow(){ - QSize sz = this->size(); if(WIN==0){ return; } - //Just jitter the x origin of the window 1 pixel so the window knows to re-check it's global position - // before creating child windows (menu's in particular). + return; //skip the stuff below (not working) + QRect geom = WIN->geometry(); + //Send an artificial configureNotify event to the window with the global position/size included + xcb_configure_notify_event_t event; + event.x = geom.x() + this->pos().x(); + event.y = geom.y() + this->pos().y(); + event.width = this->width(); + event.height = this->height(); + event.border_width = 0; + event.above_sibling = XCB_NONE; + event.override_redirect = false; + event.window = WIN->id(); + event.event = WIN->id(); + event.response_type = XCB_CONFIGURE_NOTIFY; + xcb_send_event(QX11Info::connection(), false, WIN->id(), XCB_EVENT_MASK_STRUCTURE_NOTIFY | XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY, (const char *) &event); - //qDebug() << "Sync Window Size:" << sz; - xcb_configure_window_value_list_t valList; - valList.x = 0; - valList.y = 0; - valList.width = sz.width(); - //valList.height = sz.height()-1; - uint16_t mask = 0; - mask = mask | XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT; - mask = mask | XCB_CONFIG_WINDOW_X | XCB_CONFIG_WINDOW_Y; - //xcb_configure_window_aux(QX11Info::connection(), WIN->id(), mask, &valList); - valList.height = sz.height(); - //xcb_flush(QX11Info::connection()); - xcb_configure_window_aux(QX11Info::connection(), WIN->id(), mask, &valList); + xcb_flush(QX11Info::connection()); } +void NativeEmbedWidget::repaintWindow(){ + this->update(); +} // ============== // PROTECTED // ============== void NativeEmbedWidget::resizeEvent(QResizeEvent *ev){ - if(WIN!=0){ syncWinSize(ev->size()); } //syncronize the window with the new widget size QWidget::resizeEvent(ev); + if(WIN!=0){ + syncWinSize(ev->size()); + } //syncronize the window with the new widget size } void NativeEmbedWidget::showEvent(QShowEvent *ev){ @@ -186,14 +187,19 @@ void NativeEmbedWidget::hideEvent(QHideEvent *ev){ void NativeEmbedWidget::paintEvent(QPaintEvent *ev){ //QWidget::paintEvent(ev); //ensure all the Qt-compositing is done first + if(this->size()!=winSize){ return; } //do not paint here - waiting to re-sync the sizes if(WIN==0){ QWidget::paintEvent(ev); return; } //Need to paint the image from the window onto the widget as an overlay QRect geom = QRect(0,0,this->width(), this->height()); //always paint the whole window - //qDebug() << "Get Paint image"; + //qDebug() << "Get Paint image:" << ev->rect() << geom; + //geom = ev->rect(); //atomic updates + //geom.adjust(-1,-1,1,1); //add an additional pixel in each direction to be painted + //geom = geom.intersected(QRect(0,0,this->width(), this->height())); //ensure intersection with actual window QImage img = windowImage(geom); if(!img.isNull()){ + if(img.size() != geom.size()){ return; } QPainter P(this); - P.drawImage( geom , img, geom, Qt::NoOpaqueDetection); //1-to-1 mapping + P.drawImage( geom , img, QRect(geom.topLeft(), img.size()), Qt::NoOpaqueDetection); //1-to-1 mapping //qDebug() << "Painted Rect:" << ev->rect() << this->geometry(); //Note: Qt::NoOpaqueDetection Speeds up the paint by bypassing the checks to see if there are [semi-]transparent pixels // Since this is an embedded image - we fully expect there to be transparency most of the time. diff --git a/src-qt5/core/libLumina/NativeEmbedWidget.h b/src-qt5/core/libLumina/NativeEmbedWidget.h index 07e1c4dd..78c11dfc 100644 --- a/src-qt5/core/libLumina/NativeEmbedWidget.h +++ b/src-qt5/core/libLumina/NativeEmbedWidget.h @@ -13,6 +13,7 @@ #include "NativeWindow.h" #include +#include #include #include #include @@ -22,14 +23,17 @@ class NativeEmbedWidget : public QWidget{ Q_OBJECT private: NativeWindow *WIN; + QSize winSize; +private slots: //Simplification functions - void syncWinSize(QSize); - void syncWidgetSize(QSize); + void syncWinSize(QSize sz = QSize()); + void syncWidgetSize(QSize sz); void hideWindow(); void showWindow(); QImage windowImage(QRect geom); + public: NativeEmbedWidget(QWidget *parent); @@ -39,6 +43,7 @@ public: public slots: void resyncWindow(); + void repaintWindow(); protected: void resizeEvent(QResizeEvent *ev); diff --git a/src-qt5/core/libLumina/RootSubWindow.cpp b/src-qt5/core/libLumina/RootSubWindow.cpp index 1059871a..9ef6464e 100644 --- a/src-qt5/core/libLumina/RootSubWindow.cpp +++ b/src-qt5/core/libLumina/RootSubWindow.cpp @@ -181,6 +181,12 @@ void RootSubWindow::initWindowFrame(){ titleBar->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); mainLayout->addWidget(titleBar); mainLayout->addWidget(WinWidget); + //Setup the cursors for the buttons + closeB->setCursor(Qt::ArrowCursor); + minB->setCursor(Qt::ArrowCursor); + maxB->setCursor(Qt::ArrowCursor); + otherM->setCursor(Qt::ArrowCursor); + titleLabel->setCursor(Qt::ArrowCursor); //Now all the stylesheet options this->setObjectName("WindowFrame"); closeB->setObjectName("Button_Close"); @@ -492,7 +498,6 @@ void RootSubWindow::mouseMoveEvent(QMouseEvent *ev){ default: break; } - this->setGeometry(geom); } QFrame::mouseMoveEvent(ev); diff --git a/src-qt5/core/lumina-desktop-unified/main.cpp b/src-qt5/core/lumina-desktop-unified/main.cpp index 7a454eab..0b67de46 100644 --- a/src-qt5/core/lumina-desktop-unified/main.cpp +++ b/src-qt5/core/lumina-desktop-unified/main.cpp @@ -28,6 +28,7 @@ int main(int argc, char ** argv) LXDG::setEnvironmentVars(); setenv("DESKTOP_SESSION","Lumina",1); setenv("XDG_CURRENT_DESKTOP","Lumina",1); + setenv("QT_NO_GLIB", "1", 1); //Disable the glib event loop within Qt at runtime (performance hit + bugs) unsetenv("QT_QPA_PLATFORMTHEME"); //causes issues with Lumina themes - not many people have this by default... //Startup the session if(DEBUG){ qDebug() << "Starting unified session"; } -- cgit From 03303f34cc0371f5a91bd53561e901fb5185a809 Mon Sep 17 00:00:00 2001 From: Pavel Borecki Date: Tue, 11 Jul 2017 09:27:16 +0000 Subject: Translated using Weblate (Czech) Currently translated at 100.0% (325 of 325 strings) --- .../core/lumina-desktop/i18n/lumina-desktop_cs.ts | 94 +++++++++++----------- 1 file changed, 47 insertions(+), 47 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_cs.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_cs.ts index 8b266457..12042810 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_cs.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_cs.ts @@ -6,7 +6,7 @@ Click to assign an application - Klepnutím přiřaďte aplikaci + Kliknutím přiřaďte aplikaci @@ -211,7 +211,7 @@ Keep up with desktop news! - Dostávat zprávy novinkách v prostředí! + Buďte v obraze ohledně novinek v prostředí! @@ -226,17 +226,17 @@ Lumina can easily reproduce the interface from most other desktop environments. - Lumina lehce dokáže napodobit vzhled rozhraní většiny jiných prostředí pracovní plochy. + Lumina lehce dokáže napodobit vzhled rozhraní většiny ostatních pracovních prostředí. This desktop is generously sponsored by iXsystems - Toto prostředí je laskavě podporováno a penězi zaštiťováno společností iXsystems + Toto prostředí je štědře podporováno společností iXsystems I have never been hurt by what I have not said - Nikdy jsem se netrápil tím, co jsem neřekl + Nikdy mi neublížilo to, co jsem nemusel říct @@ -246,12 +246,12 @@ Everything has its beauty but not everyone sees it. - Vše je dobré, ale ne každý vidí tu krásu. + Vše je krásné, ale ne každý to vidí. Before God we are all equally wise - and equally foolish. - Před Bohem jsme všichni rozumní stejně – a stejně nerozumní. + Před Bohem jsme všichni stejně moudří – a stejně hloupí. @@ -266,12 +266,12 @@ Don't expect to build up the weak by pulling down the strong. - Neočekávej že povzbudíš slabé tím že dolů stáhneš silné. + Neočekávejte že povzbudíte slabé tím že stáhnete dolů silné. You can't know too much, but you can say too much. - Nemůžeš vědět příliš mnoho, ale můžeš toho říct přespříliš. + Nemůžete vědět příliš mnoho, ale můžete toho říct přespříliš. @@ -286,12 +286,12 @@ Never trust a computer you can’t throw out a window. - Nikdy nevěř počítači, který nemůžeš vyhodit z okna. + Nikdy nevěřte počítači, který nemůžete vyhodit z okna. Study the past if you would define the future. - Uč se z minulosti, pokud chceš určovat jak bude vypadat budoucnost. + Učte se z minulosti, pokud chcete určovat budoucnost. @@ -301,12 +301,12 @@ Ask and it will be given to you; search, and you will find; knock and the door will be opened for you. - Požádej a bude ti dáno; hledej a nalezneš; zaklepej a dveře ti budou otevřeny. + Požádejte a bude vám dáno; hledejte a naleznete; zaklepej a dveře vám budou otevřeny. Start where you are. Use what you have. Do what you can. - Začni tam, kde jsi. Používej to, co máš. Udělej, co můžeš. + Začněte tam, kde jste. Používejte to, co máte. Udělejte, co můžete. @@ -316,32 +316,32 @@ It does not matter how slowly you go as long as you do not stop. - Nezáleží na tom jak pomalu jdeš – důležité je, že nezastavíš. + Nezáleží na tom jak pomalu jdete – důležité je, že se nezastavíte. Do what you can, where you are, with what you have. - Dělej, co můžeš, tam kde jsi, s tím, co máš. + Dělejte, co můžete, tam kde jste, s tím, co máte. Remember no one can make you feel inferior without your consent. - Pamatuj si, že nikomu se nepodaří, aby ses cítil být menším, bez tvého souhlasu. + Pamatujte, že se nikomu nepodaří, aby se cítil být menším, bez jeho souhlasu. It’s not the years in your life that count. It’s the life in your years. - Nejsou to roky tvého života, co se počítá. Je to život v tvých letech. + V životě nejsou roky to, co se počítá. Počítá se život v rocích. Either write something worth reading or do something worth writing. - Buď napiš něco, co stojí za přečtení, nebo udělej něco, o čem má smysl napsat. + Buď napište něco, co stojí za přečtení, nebo udělejte něco, o čem má smysl napsat. The only way to do great work is to love what you do. - Jediným způsobem, jak dělat práci skvěle, je milovat to, co děláš. + Jediným způsobem jak odvádět skvělou práci je milovat to, co děláte. @@ -361,7 +361,7 @@ Do, or do not. There is no 'try'. - Udělej to, nebo to nedělej vůbec. Nejde o to to jen zkoušet. + Udělejte to, nebo to nedělejte vůbec. Nejde o to to jen zkoušet. @@ -371,7 +371,7 @@ Good people do not need laws to tell them to act responsibly, while bad people will find a way around the laws. - Dobří lidé nepotřebují zákony k tomu, aby jim říkaly, aby jednali zodpovědně, zatímco špatní lidé si najdou cestičku okolo zákonů. + Dobří lidé nepotřebují zákony k tomu, aby jim říkaly, aby jednali zodpovědně, zatímco špatní lidé si vždy najdou kličku k obejití zákonů. @@ -396,7 +396,7 @@ Success usually comes to those who are too busy to be looking for it. - Úspěch obyčejně přijde k těm, kdož jsou příliš zaneprázdněni na to, aby jej hledali. + Úspěch obyčejně přijde k těm, kteří jsou příliš zaneprázdněni na to, aby ho hledali. @@ -421,17 +421,17 @@ Sometimes it is not enough that we do our best; we must do what is required. - Někdy není dost, že něco uděláme, jak nejlépe umíme. Musíme dělat, co se od nás žádá. + Někdy nestačí, že děláme jak nejlépe umíme. Musíme dělat, co se od nás žádá. The truth is more important than the facts. - Pravda je důležitější než skutečnost. + Pravda je důležitější než fakta. Better to remain silent and be thought a fool than to speak out and remove all doubt. - Lépe zůstat potichu a být považován za hlupáka, než vyjádřit názor a odstranit veškerou pochybnost. + Lépe zůstat zticha a být považován za hlupáka, než promluvit a tím to potvrdit. @@ -653,7 +653,7 @@ Unsorted - Neseřazeno + Nezařazeno @@ -844,7 +844,7 @@ Remove from Quicklaunch - Odebrat z rychlého spuštění + Odebrat z rychlého spouštění
@@ -967,7 +967,7 @@ Quickly launch applications or open files - Rychlé spuštění aplikace nebo otevření souboru + Rychlé spouštění aplikací nebo otevírání souborů @@ -1096,7 +1096,7 @@ Select Multimedia Files - Vybere multimediální soubory + Vyberte multimediální soubory @@ -1159,7 +1159,7 @@ Select Multimedia Directory - Zvolte složku s multimédii + Vyberte složku s multimédii @@ -1219,12 +1219,12 @@ RSS URL - Adresa RSS + URL adresa RSS kanálu Load a preset RSS Feed - Nahrát kanál RSS s přednastavením + Načíst přednastavený RSS kanál @@ -1270,7 +1270,7 @@ Add RSS Feed - Přidat kanál RSS + Přidat RSS kanál @@ -1290,12 +1290,12 @@ Lumina Desktop RSS - RSS prostředí Lumina + RSS kanál prostředí Lumina Feed URL: %1 - Adresa (URL) kanálu: %1 + URL adresa kanálu: %1 @@ -1315,12 +1315,12 @@ Last Build Date: %1 - Poslední datum sestavení: %1 + Datum minulého sestavení: %1 Last Sync: %1 - Poslední synchronizace: %1 + Minulá synchronizace: %1 @@ -1338,7 +1338,7 @@ Preferences - Nastavení + Předvolby @@ -1456,7 +1456,7 @@ You have system updates waiting to be applied! Do you wish to install them now? - Na použití čekají aktualizace systému! Chcete je nainstalovat nyní? + Aktualizace systému čekají na instalaci! Chcete je nainstalovat nyní? @@ -1486,7 +1486,7 @@ System Options - Možnosti systému + Předvolby systému @@ -1506,7 +1506,7 @@ Cancel - Zrušit + Storno @@ -1521,12 +1521,12 @@ Apply Updates? - Použít aktualizace? + Nainstalovat aktualizace? You have system updates waiting to be applied! Do you wish to install them now? - Na použití čekají aktualizace systému! Chcete je nainstalovat nyní? + Aktualizace systému čekají na instalaci! Chcete je nainstalovat nyní? @@ -1539,7 +1539,7 @@ Remove Shortcut - Odebrat klávesovou zkratku + Odebrat zkratku @@ -1630,7 +1630,7 @@ Config - Konfigurace + Nastavení @@ -1645,12 +1645,12 @@ Desktop Appearance/Plugins - Vzhled/Pluginy plochy + Vzhled / zásuvné moduly plochy Screen Configuration - Konfigurace obrazovky + Nastavení obrazovky -- cgit From e086eedf9992b785e48f7e27aa8da73e8580d29e Mon Sep 17 00:00:00 2001 From: Zackary Welch Date: Tue, 11 Jul 2017 18:55:32 +0000 Subject: Translated using Weblate (Spanish) Currently translated at 78.7% (256 of 325 strings) --- src-qt5/core/lumina-desktop/i18n/lumina-desktop_es.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_es.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_es.ts index 3a598c96..e72c68b0 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_es.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_es.ts @@ -45,12 +45,12 @@ Open - Abrir + Abrir Open With - + Abrir con @@ -70,7 +70,7 @@ Copy - Copiar + Copiar @@ -80,7 +80,7 @@ Delete - Borrar + Borrar @@ -265,12 +265,12 @@ - Don't expect to build up the weak by pulling down the strong. + Don't expect to build up the weak by pulling down the strong. - You can't know too much, but you can say too much. + You can't know too much, but you can say too much. No puedes saber demasiado, pero puedes decir demasiado. @@ -350,7 +350,7 @@ - Only two things are infinite, the universe and human stupidity, and I'm not sure about the former. + Only two things are infinite, the universe and human stupidity, and I'm not sure about the former. @@ -360,7 +360,7 @@ - Do, or do not. There is no 'try'. + Do, or do not. There is no 'try'. @@ -380,7 +380,7 @@ - It's kind of fun to do the impossible. + It's kind of fun to do the impossible. -- cgit From c1779f30d3648db8ce3c30a6df9bf3dc876e83bb Mon Sep 17 00:00:00 2001 From: Weblate Date: Wed, 19 Jul 2017 18:46:46 +0000 Subject: Add en_GB --- .../core/lumina-desktop/i18n/lumina-desktop_en_GB.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'src-qt5/core') diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_en_GB.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_en_GB.ts index c3a92c07..3571f4b1 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_en_GB.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_en_GB.ts @@ -265,12 +265,12 @@ - Don't expect to build up the weak by pulling down the strong. + Don't expect to build up the weak by pulling down the strong. - You can't know too much, but you can say too much. + You can't know too much, but you can say too much. @@ -350,7 +350,7 @@ - Only two things are infinite, the universe and human stupidity, and I'm not sure about the former. + Only two things are infinite, the universe and human stupidity, and I'm not sure about the former. @@ -360,7 +360,7 @@ - Do, or do not. There is no 'try'. + Do, or do not. There is no 'try'. @@ -380,7 +380,7 @@ - It's kind of fun to do the impossible. + It's kind of fun to do the impossible. @@ -436,22 +436,22 @@ Initializing Session … - Initialising Session ... + Initialising Session … Loading System Settings … - Loading System Settings ... + Loading System Settings … Loading User Preferences … - Loading User Preferences ... + Loading User Preferences … Preparing System Tray … - Preparing System Tray ... + Preparing System Tray … -- cgit