From 0002a43577d9c0c769c957cc5415954e2b09a2d0 Mon Sep 17 00:00:00 2001 From: Alf Gaida Date: Fri, 15 Jul 2016 20:28:09 +0200 Subject: [PATCH] Cherry-picking upstream version 0.10.96~62-g80c413c. --- .gitignore | 1 - AUTHORS | 2 +- CMakeLists.txt | 33 +- README.md | 33 ++ debian/changelog | 5 +- liblxqt-config-cursor/CMakeLists.txt | 10 + .../translations/lxqt-config-cursor.ts | 68 --- .../translations/lxqt-config-cursor_ar.ts | 77 --- .../translations/lxqt-config-cursor_cs.ts | 76 --- .../translations/lxqt-config-cursor_cs_CZ.ts | 76 --- .../translations/lxqt-config-cursor_da_DK.ts | 77 --- .../translations/lxqt-config-cursor_de.ts | 69 --- .../translations/lxqt-config-cursor_el.ts | 76 --- .../translations/lxqt-config-cursor_eo.ts | 76 --- .../translations/lxqt-config-cursor_es.ts | 76 --- .../translations/lxqt-config-cursor_es_VE.ts | 76 --- .../translations/lxqt-config-cursor_eu.ts | 76 --- .../translations/lxqt-config-cursor_fi.ts | 76 --- .../translations/lxqt-config-cursor_fr_FR.ts | 72 --- .../translations/lxqt-config-cursor_hu.ts | 72 --- .../translations/lxqt-config-cursor_hu_HU.ts | 72 --- .../translations/lxqt-config-cursor_it.ts | 78 --- .../translations/lxqt-config-cursor_ja.ts | 68 --- .../translations/lxqt-config-cursor_lt.ts | 72 --- .../translations/lxqt-config-cursor_nl.ts | 72 --- .../translations/lxqt-config-cursor_pl_PL.ts | 76 --- .../translations/lxqt-config-cursor_pt.ts | 76 --- .../translations/lxqt-config-cursor_pt_BR.ts | 76 --- .../translations/lxqt-config-cursor_ro_RO.ts | 76 --- .../translations/lxqt-config-cursor_ru.ts | 68 --- .../translations/lxqt-config-cursor_ru_RU.ts | 68 --- .../translations/lxqt-config-cursor_sl.ts | 72 --- .../translations/lxqt-config-cursor_th_TH.ts | 76 --- .../translations/lxqt-config-cursor_tr.ts | 72 --- .../translations/lxqt-config-cursor_uk.ts | 76 --- .../translations/lxqt-config-cursor_zh_CN.ts | 76 --- .../translations/lxqt-config-cursor_zh_TW.ts | 77 --- liblxqt-config-cursor/xcr/xcrthemefx.cpp | 10 +- lxqt-config-appearance.png | Bin 0 -> 33465 bytes lxqt-config-appearance/CMakeLists.txt | 12 +- lxqt-config-appearance/fontconfigfile.cpp | 1 + lxqt-config-appearance/iconthemeconfig.cpp | 28 +- lxqt-config-appearance/iconthemeinfo.cpp | 40 +- lxqt-config-appearance/lxqtthemeconfig.cpp | 28 + lxqt-config-appearance/main.cpp | 2 - .../translations/lxqt-config-appearance.ts | 225 --------- .../translations/lxqt-config-appearance_ar.ts | 225 --------- .../translations/lxqt-config-appearance_cs.ts | 225 --------- .../lxqt-config-appearance_cs_CZ.ts | 225 --------- .../translations/lxqt-config-appearance_da.ts | 225 --------- .../lxqt-config-appearance_da_DK.ts | 225 --------- .../translations/lxqt-config-appearance_de.ts | 225 --------- .../translations/lxqt-config-appearance_el.ts | 225 --------- .../translations/lxqt-config-appearance_eo.ts | 225 --------- .../translations/lxqt-config-appearance_es.ts | 225 --------- .../lxqt-config-appearance_es_VE.ts | 225 --------- .../translations/lxqt-config-appearance_eu.ts | 225 --------- .../translations/lxqt-config-appearance_fi.ts | 225 --------- .../lxqt-config-appearance_fr_FR.ts | 225 --------- .../translations/lxqt-config-appearance_hu.ts | 225 --------- .../lxqt-config-appearance_hu_HU.ts | 236 --------- .../translations/lxqt-config-appearance_ia.ts | 225 --------- .../lxqt-config-appearance_id_ID.ts | 225 --------- .../translations/lxqt-config-appearance_it.ts | 226 --------- .../translations/lxqt-config-appearance_ja.ts | 225 --------- .../translations/lxqt-config-appearance_ko.ts | 225 --------- .../translations/lxqt-config-appearance_lt.ts | 225 --------- .../translations/lxqt-config-appearance_nl.ts | 225 --------- .../translations/lxqt-config-appearance_pl.ts | 225 --------- .../lxqt-config-appearance_pl_PL.ts | 225 --------- .../translations/lxqt-config-appearance_pt.ts | 225 --------- .../lxqt-config-appearance_pt_BR.ts | 225 --------- .../lxqt-config-appearance_ro_RO.ts | 225 --------- .../translations/lxqt-config-appearance_ru.ts | 225 --------- .../lxqt-config-appearance_ru_RU.desktop | 4 - .../lxqt-config-appearance_ru_RU.ts | 225 --------- .../lxqt-config-appearance_sk_SK.ts | 236 --------- .../translations/lxqt-config-appearance_sl.ts | 225 --------- .../lxqt-config-appearance_sr@latin.ts | 225 --------- .../lxqt-config-appearance_sr_BA.ts | 236 --------- .../lxqt-config-appearance_sr_RS.ts | 236 --------- .../lxqt-config-appearance_th_TH.ts | 225 --------- .../translations/lxqt-config-appearance_tr.ts | 225 --------- .../translations/lxqt-config-appearance_uk.ts | 225 --------- .../lxqt-config-appearance_zh_CN.ts | 225 --------- .../lxqt-config-appearance_zh_TW.ts | 225 --------- lxqt-config-brightness/CMakeLists.txt | 89 ++++ lxqt-config-brightness/README.md | 4 + lxqt-config-brightness/brightnesssettings.cpp | 47 ++ lxqt-config-brightness/brightnesssettings.h | 46 ++ lxqt-config-brightness/brightnesssettings.ui | 79 +++ .../icons/brightnesssettings.svg | 141 ++++++ lxqt-config-brightness/main.cpp | 89 ++++ lxqt-config-brightness/monitorinfo.cpp | 76 +++ lxqt-config-brightness/monitorinfo.h | 58 +++ lxqt-config-brightness/outputwidget.cpp | 56 ++ lxqt-config-brightness/outputwidget.h | 44 ++ lxqt-config-brightness/outputwidget.ui | 84 +++ .../lxqt-config-brightness.desktop.in | 10 + .../lxqt-config-brightness_es.desktop | 4 + .../lxqt-config-brightness_ru.desktop | 4 + lxqt-config-brightness/xrandrbrightness.cpp | 411 +++++++++++++++ lxqt-config-brightness/xrandrbrightness.h | 56 ++ lxqt-config-file-associations/CMakeLists.txt | 10 + .../mimetypeitemmodel.cpp | 2 +- .../lxqt-config-file-associations.ts | 123 ----- .../lxqt-config-file-associations_de.ts | 123 ----- .../lxqt-config-file-associations_el.ts | 123 ----- .../lxqt-config-file-associations_hu.ts | 123 ----- .../lxqt-config-file-associations_it.desktop | 4 +- .../lxqt-config-file-associations_it.ts | 123 ----- .../lxqt-config-file-associations_ja.ts | 123 ----- .../lxqt-config-file-associations_pl_PL.ts | 123 ----- .../lxqt-config-file-associations_pt.ts | 123 ----- .../lxqt-config-file-associations_ru.desktop | 2 +- .../lxqt-config-file-associations_ru.ts | 123 ----- ...xqt-config-file-associations_ru_RU.desktop | 4 - .../lxqt-config-file-associations_ru_RU.ts | 123 ----- lxqt-config-input/CMakeLists.txt | 12 +- lxqt-config-input/keyboardlayoutconfig.cpp | 4 +- lxqt-config-input/keyboardlayoutconfig.h | 11 + lxqt-config-input/mouseconfig.cpp | 11 +- .../selectkeyboardlayoutdialog.cpp | 2 +- .../translations/lxinput-qt_template-zh_TW.ts | 82 --- .../translations/lxqt-config-input.ts | 258 ---------- .../translations/lxqt-config-input_af.ts | 258 ---------- .../translations/lxqt-config-input_ar.ts | 258 ---------- .../translations/lxqt-config-input_bg.ts | 337 ------------- .../translations/lxqt-config-input_bn.ts | 258 ---------- .../translations/lxqt-config-input_bn_IN.ts | 258 ---------- .../translations/lxqt-config-input_ca.ts | 258 ---------- .../translations/lxqt-config-input_cs.ts | 258 ---------- .../translations/lxqt-config-input_da.ts | 317 ------------ .../translations/lxqt-config-input_de.ts | 258 ---------- .../translations/lxqt-config-input_el.ts | 258 ---------- .../translations/lxqt-config-input_es.ts | 337 ------------- .../translations/lxqt-config-input_eu.ts | 329 ------------ .../translations/lxqt-config-input_fi.ts | 337 ------------- .../translations/lxqt-config-input_fr.ts | 337 ------------- .../translations/lxqt-config-input_gl.ts | 337 ------------- .../translations/lxqt-config-input_hr.ts | 333 ------------ .../translations/lxqt-config-input_hu.ts | 258 ---------- .../translations/lxqt-config-input_id.ts | 337 ------------- .../translations/lxqt-config-input_is.ts | 258 ---------- .../translations/lxqt-config-input_it.desktop | 2 +- .../translations/lxqt-config-input_it.ts | 337 ------------- .../translations/lxqt-config-input_ja.ts | 258 ---------- .../translations/lxqt-config-input_nl.ts | 337 ------------- .../translations/lxqt-config-input_pa.ts | 258 ---------- .../translations/lxqt-config-input_pl.ts | 337 ------------- .../translations/lxqt-config-input_pt.ts | 337 ------------- .../translations/lxqt-config-input_ru.desktop | 2 +- .../translations/lxqt-config-input_ru.ts | 258 ---------- .../lxqt-config-input_ru_RU.desktop | 4 - .../translations/lxqt-config-input_ru_RU.ts | 258 ---------- .../translations/lxqt-config-input_sv.ts | 337 ------------- .../translations/lxqt-config-input_uk.ts | 258 ---------- .../translations/lxqt-config-input_zh_CN.ts | 337 ------------- .../translations/lxqt-config-input_zh_HK.ts | 258 ---------- .../translations/lxqt-config-input_zh_TW.ts | 337 ------------- lxqt-config-locale/CMakeLists.txt | 10 + .../translations/lxqt-config-locale.ts | 110 ---- .../lxqt-config-locale_de.desktop | 3 + .../lxqt-config-locale_it.desktop | 2 + .../lxqt-config-locale_ru.desktop | 4 + lxqt-config-monitor.png | Bin 0 -> 15403 bytes lxqt-config-monitor/CMakeLists.txt | 18 +- lxqt-config-monitor/fakeTest.sh | 6 + lxqt-config-monitor/fastmenu.cpp | 203 ++++++++ lxqt-config-monitor/fastmenu.h | 55 ++ lxqt-config-monitor/fastmenu.ui | 80 +++ lxqt-config-monitor/loadsettings.cpp | 69 ++- lxqt-config-monitor/loadsettings.h | 6 + lxqt-config-monitor/main.cpp | 7 +- lxqt-config-monitor/managesavedsettings.cpp | 196 +++++++ lxqt-config-monitor/managesavedsettings.h | 59 +++ lxqt-config-monitor/managesavedsettings.ui | 74 +++ lxqt-config-monitor/monitor.cpp | 124 +++-- lxqt-config-monitor/monitor.h | 78 +-- lxqt-config-monitor/monitorpicture.cpp | 41 +- lxqt-config-monitor/monitorpicture.h | 7 +- lxqt-config-monitor/monitorsettingsdialog.cpp | 130 +++-- lxqt-config-monitor/monitorwidget.cpp | 95 +--- lxqt-config-monitor/monitorwidget.h | 7 +- lxqt-config-monitor/monitorwidget.ui | 52 +- lxqt-config-monitor/settingsdialog.cpp | 7 +- lxqt-config-monitor/settingsdialog.h | 4 +- lxqt-config-monitor/timeoutdialog.cpp | 2 +- .../translations/lxqt-config-monitor.ts | 260 ---------- .../translations/lxqt-config-monitor_de.ts | 425 ---------------- .../translations/lxqt-config-monitor_el.ts | 425 ---------------- .../translations/lxqt-config-monitor_hu.ts | 377 -------------- .../translations/lxqt-config-monitor_it.ts | 377 -------------- .../translations/lxqt-config-monitor_ja.ts | 393 --------------- .../translations/lxqt-config-monitor_pl_PL.ts | 381 -------------- .../translations/lxqt-config-monitor_pt.ts | 477 ------------------ .../translations/lxqt-config-monitor_ru.ts | 432 ---------------- .../lxqt-config-monitor_ru_RU.desktop | 4 - .../translations/lxqt-config-monitor_ru_RU.ts | 432 ---------------- .../translations/lxqt-config-monitor_zh_TW.ts | 329 ------------ lxqt-config-session.png | Bin 0 -> 61671 bytes lxqt-config.kdev4 | 3 - lxqt-config.png | Bin 0 -> 46810 bytes src/CMakeLists.txt | 10 + src/main.cpp | 13 +- src/mainwindow.cpp | 102 ++-- src/mainwindow.h | 5 +- src/qcategorizedview/qcategorizedview.cpp | 8 +- src/qcategorizedview/qcategorizedview.h | 8 +- src/translations/lxqt-config.ts | 12 - src/translations/lxqt-config_cs.ts | 12 - src/translations/lxqt-config_cs_CZ.ts | 12 - src/translations/lxqt-config_da_DK.ts | 12 - src/translations/lxqt-config_de.ts | 12 - src/translations/lxqt-config_el.ts | 12 - src/translations/lxqt-config_es.ts | 12 - src/translations/lxqt-config_es_VE.ts | 12 - src/translations/lxqt-config_eu.ts | 12 - src/translations/lxqt-config_fi.ts | 12 - src/translations/lxqt-config_hu.ts | 12 - src/translations/lxqt-config_it.desktop | 2 +- src/translations/lxqt-config_it.ts | 12 - src/translations/lxqt-config_ja.ts | 12 - src/translations/lxqt-config_pl.ts | 12 - src/translations/lxqt-config_pl_PL.ts | 12 - src/translations/lxqt-config_pt.ts | 12 - src/translations/lxqt-config_pt_BR.ts | 12 - src/translations/lxqt-config_ro_RO.ts | 12 - src/translations/lxqt-config_ru.ts | 12 - src/translations/lxqt-config_ru_RU.desktop | 4 - src/translations/lxqt-config_ru_RU.ts | 12 - src/translations/lxqt-config_th_TH.ts | 12 - src/translations/lxqt-config_uk.ts | 12 - src/translations/lxqt-config_zh_CN.ts | 12 - src/translations/lxqt-config_zh_TW.ts | 12 - 235 files changed, 2649 insertions(+), 27529 deletions(-) delete mode 100644 .gitignore create mode 100644 README.md delete mode 100644 liblxqt-config-cursor/translations/lxqt-config-cursor.ts delete mode 100644 liblxqt-config-cursor/translations/lxqt-config-cursor_ar.ts delete mode 100644 liblxqt-config-cursor/translations/lxqt-config-cursor_cs.ts delete mode 100644 liblxqt-config-cursor/translations/lxqt-config-cursor_cs_CZ.ts delete mode 100644 liblxqt-config-cursor/translations/lxqt-config-cursor_da_DK.ts delete mode 100644 liblxqt-config-cursor/translations/lxqt-config-cursor_de.ts delete mode 100644 liblxqt-config-cursor/translations/lxqt-config-cursor_el.ts delete mode 100644 liblxqt-config-cursor/translations/lxqt-config-cursor_eo.ts delete mode 100644 liblxqt-config-cursor/translations/lxqt-config-cursor_es.ts delete mode 100644 liblxqt-config-cursor/translations/lxqt-config-cursor_es_VE.ts delete mode 100644 liblxqt-config-cursor/translations/lxqt-config-cursor_eu.ts delete mode 100644 liblxqt-config-cursor/translations/lxqt-config-cursor_fi.ts delete mode 100644 liblxqt-config-cursor/translations/lxqt-config-cursor_fr_FR.ts delete mode 100644 liblxqt-config-cursor/translations/lxqt-config-cursor_hu.ts delete mode 100644 liblxqt-config-cursor/translations/lxqt-config-cursor_hu_HU.ts delete mode 100644 liblxqt-config-cursor/translations/lxqt-config-cursor_it.ts delete mode 100644 liblxqt-config-cursor/translations/lxqt-config-cursor_ja.ts delete mode 100644 liblxqt-config-cursor/translations/lxqt-config-cursor_lt.ts delete mode 100644 liblxqt-config-cursor/translations/lxqt-config-cursor_nl.ts delete mode 100644 liblxqt-config-cursor/translations/lxqt-config-cursor_pl_PL.ts delete mode 100644 liblxqt-config-cursor/translations/lxqt-config-cursor_pt.ts delete mode 100644 liblxqt-config-cursor/translations/lxqt-config-cursor_pt_BR.ts delete mode 100644 liblxqt-config-cursor/translations/lxqt-config-cursor_ro_RO.ts delete mode 100644 liblxqt-config-cursor/translations/lxqt-config-cursor_ru.ts delete mode 100644 liblxqt-config-cursor/translations/lxqt-config-cursor_ru_RU.ts delete mode 100644 liblxqt-config-cursor/translations/lxqt-config-cursor_sl.ts delete mode 100644 liblxqt-config-cursor/translations/lxqt-config-cursor_th_TH.ts delete mode 100644 liblxqt-config-cursor/translations/lxqt-config-cursor_tr.ts delete mode 100644 liblxqt-config-cursor/translations/lxqt-config-cursor_uk.ts delete mode 100644 liblxqt-config-cursor/translations/lxqt-config-cursor_zh_CN.ts delete mode 100644 liblxqt-config-cursor/translations/lxqt-config-cursor_zh_TW.ts create mode 100644 lxqt-config-appearance.png delete mode 100644 lxqt-config-appearance/translations/lxqt-config-appearance.ts delete mode 100644 lxqt-config-appearance/translations/lxqt-config-appearance_ar.ts delete mode 100644 lxqt-config-appearance/translations/lxqt-config-appearance_cs.ts delete mode 100644 lxqt-config-appearance/translations/lxqt-config-appearance_cs_CZ.ts delete mode 100644 lxqt-config-appearance/translations/lxqt-config-appearance_da.ts delete mode 100644 lxqt-config-appearance/translations/lxqt-config-appearance_da_DK.ts delete mode 100644 lxqt-config-appearance/translations/lxqt-config-appearance_de.ts delete mode 100644 lxqt-config-appearance/translations/lxqt-config-appearance_el.ts delete mode 100644 lxqt-config-appearance/translations/lxqt-config-appearance_eo.ts delete mode 100644 lxqt-config-appearance/translations/lxqt-config-appearance_es.ts delete mode 100644 lxqt-config-appearance/translations/lxqt-config-appearance_es_VE.ts delete mode 100644 lxqt-config-appearance/translations/lxqt-config-appearance_eu.ts delete mode 100644 lxqt-config-appearance/translations/lxqt-config-appearance_fi.ts delete mode 100644 lxqt-config-appearance/translations/lxqt-config-appearance_fr_FR.ts delete mode 100644 lxqt-config-appearance/translations/lxqt-config-appearance_hu.ts delete mode 100644 lxqt-config-appearance/translations/lxqt-config-appearance_hu_HU.ts delete mode 100644 lxqt-config-appearance/translations/lxqt-config-appearance_ia.ts delete mode 100644 lxqt-config-appearance/translations/lxqt-config-appearance_id_ID.ts delete mode 100644 lxqt-config-appearance/translations/lxqt-config-appearance_it.ts delete mode 100644 lxqt-config-appearance/translations/lxqt-config-appearance_ja.ts delete mode 100644 lxqt-config-appearance/translations/lxqt-config-appearance_ko.ts delete mode 100644 lxqt-config-appearance/translations/lxqt-config-appearance_lt.ts delete mode 100644 lxqt-config-appearance/translations/lxqt-config-appearance_nl.ts delete mode 100644 lxqt-config-appearance/translations/lxqt-config-appearance_pl.ts delete mode 100644 lxqt-config-appearance/translations/lxqt-config-appearance_pl_PL.ts delete mode 100644 lxqt-config-appearance/translations/lxqt-config-appearance_pt.ts delete mode 100644 lxqt-config-appearance/translations/lxqt-config-appearance_pt_BR.ts delete mode 100644 lxqt-config-appearance/translations/lxqt-config-appearance_ro_RO.ts delete mode 100644 lxqt-config-appearance/translations/lxqt-config-appearance_ru.ts delete mode 100644 lxqt-config-appearance/translations/lxqt-config-appearance_ru_RU.desktop delete mode 100644 lxqt-config-appearance/translations/lxqt-config-appearance_ru_RU.ts delete mode 100644 lxqt-config-appearance/translations/lxqt-config-appearance_sk_SK.ts delete mode 100644 lxqt-config-appearance/translations/lxqt-config-appearance_sl.ts delete mode 100644 lxqt-config-appearance/translations/lxqt-config-appearance_sr@latin.ts delete mode 100644 lxqt-config-appearance/translations/lxqt-config-appearance_sr_BA.ts delete mode 100644 lxqt-config-appearance/translations/lxqt-config-appearance_sr_RS.ts delete mode 100644 lxqt-config-appearance/translations/lxqt-config-appearance_th_TH.ts delete mode 100644 lxqt-config-appearance/translations/lxqt-config-appearance_tr.ts delete mode 100644 lxqt-config-appearance/translations/lxqt-config-appearance_uk.ts delete mode 100644 lxqt-config-appearance/translations/lxqt-config-appearance_zh_CN.ts delete mode 100644 lxqt-config-appearance/translations/lxqt-config-appearance_zh_TW.ts create mode 100644 lxqt-config-brightness/CMakeLists.txt create mode 100644 lxqt-config-brightness/README.md create mode 100644 lxqt-config-brightness/brightnesssettings.cpp create mode 100644 lxqt-config-brightness/brightnesssettings.h create mode 100644 lxqt-config-brightness/brightnesssettings.ui create mode 100644 lxqt-config-brightness/icons/brightnesssettings.svg create mode 100644 lxqt-config-brightness/main.cpp create mode 100644 lxqt-config-brightness/monitorinfo.cpp create mode 100644 lxqt-config-brightness/monitorinfo.h create mode 100644 lxqt-config-brightness/outputwidget.cpp create mode 100644 lxqt-config-brightness/outputwidget.h create mode 100644 lxqt-config-brightness/outputwidget.ui create mode 100644 lxqt-config-brightness/resources/lxqt-config-brightness.desktop.in create mode 100644 lxqt-config-brightness/translations/lxqt-config-brightness_es.desktop create mode 100644 lxqt-config-brightness/translations/lxqt-config-brightness_ru.desktop create mode 100644 lxqt-config-brightness/xrandrbrightness.cpp create mode 100644 lxqt-config-brightness/xrandrbrightness.h delete mode 100644 lxqt-config-file-associations/translations/lxqt-config-file-associations.ts delete mode 100644 lxqt-config-file-associations/translations/lxqt-config-file-associations_de.ts delete mode 100644 lxqt-config-file-associations/translations/lxqt-config-file-associations_el.ts delete mode 100644 lxqt-config-file-associations/translations/lxqt-config-file-associations_hu.ts delete mode 100644 lxqt-config-file-associations/translations/lxqt-config-file-associations_it.ts delete mode 100644 lxqt-config-file-associations/translations/lxqt-config-file-associations_ja.ts delete mode 100644 lxqt-config-file-associations/translations/lxqt-config-file-associations_pl_PL.ts delete mode 100644 lxqt-config-file-associations/translations/lxqt-config-file-associations_pt.ts delete mode 100644 lxqt-config-file-associations/translations/lxqt-config-file-associations_ru.ts delete mode 100644 lxqt-config-file-associations/translations/lxqt-config-file-associations_ru_RU.desktop delete mode 100644 lxqt-config-file-associations/translations/lxqt-config-file-associations_ru_RU.ts delete mode 100644 lxqt-config-input/translations/lxinput-qt_template-zh_TW.ts delete mode 100644 lxqt-config-input/translations/lxqt-config-input.ts delete mode 100644 lxqt-config-input/translations/lxqt-config-input_af.ts delete mode 100644 lxqt-config-input/translations/lxqt-config-input_ar.ts delete mode 100644 lxqt-config-input/translations/lxqt-config-input_bg.ts delete mode 100644 lxqt-config-input/translations/lxqt-config-input_bn.ts delete mode 100644 lxqt-config-input/translations/lxqt-config-input_bn_IN.ts delete mode 100644 lxqt-config-input/translations/lxqt-config-input_ca.ts delete mode 100644 lxqt-config-input/translations/lxqt-config-input_cs.ts delete mode 100644 lxqt-config-input/translations/lxqt-config-input_da.ts delete mode 100644 lxqt-config-input/translations/lxqt-config-input_de.ts delete mode 100644 lxqt-config-input/translations/lxqt-config-input_el.ts delete mode 100644 lxqt-config-input/translations/lxqt-config-input_es.ts delete mode 100644 lxqt-config-input/translations/lxqt-config-input_eu.ts delete mode 100644 lxqt-config-input/translations/lxqt-config-input_fi.ts delete mode 100644 lxqt-config-input/translations/lxqt-config-input_fr.ts delete mode 100644 lxqt-config-input/translations/lxqt-config-input_gl.ts delete mode 100644 lxqt-config-input/translations/lxqt-config-input_hr.ts delete mode 100644 lxqt-config-input/translations/lxqt-config-input_hu.ts delete mode 100644 lxqt-config-input/translations/lxqt-config-input_id.ts delete mode 100644 lxqt-config-input/translations/lxqt-config-input_is.ts delete mode 100644 lxqt-config-input/translations/lxqt-config-input_it.ts delete mode 100644 lxqt-config-input/translations/lxqt-config-input_ja.ts delete mode 100644 lxqt-config-input/translations/lxqt-config-input_nl.ts delete mode 100644 lxqt-config-input/translations/lxqt-config-input_pa.ts delete mode 100644 lxqt-config-input/translations/lxqt-config-input_pl.ts delete mode 100644 lxqt-config-input/translations/lxqt-config-input_pt.ts delete mode 100644 lxqt-config-input/translations/lxqt-config-input_ru.ts delete mode 100644 lxqt-config-input/translations/lxqt-config-input_ru_RU.desktop delete mode 100644 lxqt-config-input/translations/lxqt-config-input_ru_RU.ts delete mode 100644 lxqt-config-input/translations/lxqt-config-input_sv.ts delete mode 100644 lxqt-config-input/translations/lxqt-config-input_uk.ts delete mode 100644 lxqt-config-input/translations/lxqt-config-input_zh_CN.ts delete mode 100644 lxqt-config-input/translations/lxqt-config-input_zh_HK.ts delete mode 100644 lxqt-config-input/translations/lxqt-config-input_zh_TW.ts delete mode 100644 lxqt-config-locale/translations/lxqt-config-locale.ts create mode 100644 lxqt-config-locale/translations/lxqt-config-locale_de.desktop create mode 100644 lxqt-config-locale/translations/lxqt-config-locale_it.desktop create mode 100644 lxqt-config-locale/translations/lxqt-config-locale_ru.desktop create mode 100644 lxqt-config-monitor.png create mode 100644 lxqt-config-monitor/fakeTest.sh create mode 100644 lxqt-config-monitor/fastmenu.cpp create mode 100644 lxqt-config-monitor/fastmenu.h create mode 100644 lxqt-config-monitor/fastmenu.ui create mode 100644 lxqt-config-monitor/managesavedsettings.cpp create mode 100644 lxqt-config-monitor/managesavedsettings.h create mode 100644 lxqt-config-monitor/managesavedsettings.ui delete mode 100644 lxqt-config-monitor/translations/lxqt-config-monitor.ts delete mode 100644 lxqt-config-monitor/translations/lxqt-config-monitor_de.ts delete mode 100644 lxqt-config-monitor/translations/lxqt-config-monitor_el.ts delete mode 100644 lxqt-config-monitor/translations/lxqt-config-monitor_hu.ts delete mode 100644 lxqt-config-monitor/translations/lxqt-config-monitor_it.ts delete mode 100644 lxqt-config-monitor/translations/lxqt-config-monitor_ja.ts delete mode 100644 lxqt-config-monitor/translations/lxqt-config-monitor_pl_PL.ts delete mode 100644 lxqt-config-monitor/translations/lxqt-config-monitor_pt.ts delete mode 100644 lxqt-config-monitor/translations/lxqt-config-monitor_ru.ts delete mode 100644 lxqt-config-monitor/translations/lxqt-config-monitor_ru_RU.desktop delete mode 100644 lxqt-config-monitor/translations/lxqt-config-monitor_ru_RU.ts delete mode 100644 lxqt-config-monitor/translations/lxqt-config-monitor_zh_TW.ts create mode 100644 lxqt-config-session.png delete mode 100644 lxqt-config.kdev4 create mode 100644 lxqt-config.png delete mode 100644 src/translations/lxqt-config.ts delete mode 100644 src/translations/lxqt-config_cs.ts delete mode 100644 src/translations/lxqt-config_cs_CZ.ts delete mode 100644 src/translations/lxqt-config_da_DK.ts delete mode 100644 src/translations/lxqt-config_de.ts delete mode 100644 src/translations/lxqt-config_el.ts delete mode 100644 src/translations/lxqt-config_es.ts delete mode 100644 src/translations/lxqt-config_es_VE.ts delete mode 100644 src/translations/lxqt-config_eu.ts delete mode 100644 src/translations/lxqt-config_fi.ts delete mode 100644 src/translations/lxqt-config_hu.ts delete mode 100644 src/translations/lxqt-config_it.ts delete mode 100644 src/translations/lxqt-config_ja.ts delete mode 100644 src/translations/lxqt-config_pl.ts delete mode 100644 src/translations/lxqt-config_pl_PL.ts delete mode 100644 src/translations/lxqt-config_pt.ts delete mode 100644 src/translations/lxqt-config_pt_BR.ts delete mode 100644 src/translations/lxqt-config_ro_RO.ts delete mode 100644 src/translations/lxqt-config_ru.ts delete mode 100644 src/translations/lxqt-config_ru_RU.desktop delete mode 100644 src/translations/lxqt-config_ru_RU.ts delete mode 100644 src/translations/lxqt-config_th_TH.ts delete mode 100644 src/translations/lxqt-config_uk.ts delete mode 100644 src/translations/lxqt-config_zh_CN.ts delete mode 100644 src/translations/lxqt-config_zh_TW.ts diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 378eac2..0000000 --- a/.gitignore +++ /dev/null @@ -1 +0,0 @@ -build diff --git a/AUTHORS b/AUTHORS index 2e08378..a21771a 100644 --- a/AUTHORS +++ b/AUTHORS @@ -4,7 +4,7 @@ Upstream Authors: Copyright: Copyright (c) 2010-2012 Razor team - Copyright (c) 2012-2014 LXQt team + Copyright (c) 2012-2016 LXQt team License: GPL-2 and LGPL-2.1+ The full text of the licenses can be found in the 'LICENSE' file. diff --git a/CMakeLists.txt b/CMakeLists.txt index 883d584..7c893be 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,6 +4,12 @@ project(lxqt-config) set(LXQT_CONFIG_PROJECT "${PROJECT_NAME}") option(UPDATE_TRANSLATIONS "Update source translation translations/*.ts files" OFF) +option(WITH_INPUT "Build the 'lxqt-config-input'" ON) +option(WITH_FILE_ASSOCIATIONS "Build the 'lxqt-config-file-associations'" ON) +option(WITH_APPEARANCE "Build the 'lxqt-config-appearance'" ON) +option(WITH_MONITOR "Build the 'lxqt-config-monitor'" ON) +option(WITH_BRIGHTNESS "Build the 'lxqt-config-brightness'" ON) +option(WITH_LOCALE "Build the 'lxqt-config-locale'" ON) include(GNUInstallDirs) @@ -25,12 +31,27 @@ include(LXQtCompilerSettings NO_POLICY_SCOPE) include(LXQtTranslate) add_subdirectory(src) -add_subdirectory(liblxqt-config-cursor) -add_subdirectory(lxqt-config-input) -add_subdirectory(lxqt-config-file-associations) -add_subdirectory(lxqt-config-appearance) -add_subdirectory(lxqt-config-monitor) -add_subdirectory(lxqt-config-locale) +if (WITH_INPUT OR WITH_APPEARANCE) + add_subdirectory(liblxqt-config-cursor) +endif() +if (WITH_INPUT) + add_subdirectory(lxqt-config-input) +endif() +if (WITH_FILE_ASSOCIATIONS) + add_subdirectory(lxqt-config-file-associations) +endif() +if (WITH_APPEARANCE) + add_subdirectory(lxqt-config-appearance) +endif() +if (WITH_MONITOR) + add_subdirectory(lxqt-config-monitor) +endif() +if (WITH_BRIGHTNESS) + add_subdirectory(lxqt-config-brightness) +endif() +if (WITH_LOCALE) + add_subdirectory(lxqt-config-locale) +endif() # building tarball with CPack ------------------------------------------------- include(InstallRequiredSystemLibraries) diff --git a/README.md b/README.md new file mode 100644 index 0000000..fb0cc1f --- /dev/null +++ b/README.md @@ -0,0 +1,33 @@ +## lxqt-config + +This repository is providing several tools involved in the configuration of both LXQt and the underlying operating +system. + +It is comprising several tiny GUIs meant to configure a distinct functionality of LXQt that is stated in their title +bar and can be derived from the binary name as well. +E. g. there's a GUI "LXQt Appearance Configuration", binary `lxqt-config-appearance`, that can be used to configure +the general appearance of LXQt, namely stuff like icon and LXQt theme or fonts. + +![lxqt-config-appearance](lxqt-config-appearance.png) + +The "Monitor Settings", binary `lxqt-config-monitor`, allow for adjusting screen resolutions, positioning of screens +and the likes. + +![lxqt-config-monitor](lxqt-config-monitor.png) + +In "LXQt Session Settings", binary `lxqt-config-session` topics affecting the LXQt session itself can be configured, e. g. +applications to be launched at the beginning or dedicated directories according to +[xdg-user-dirs](https://www.freedesktop.org/wiki/Software/xdg-user-dirs/). + +![lxqt-config-session](lxqt-config-session.png) + +The other main component is the so-called "Configuration Center", binary `lxqt-config`. +It's a GUI hosting configuration tools like the ones mentioned above but not limited to those. Several other LXQt +components like [lxqt-notificationd](https://github.com/lxde/lxqt-notificationd) come with their own configuration GUIs +which are placed in the "Configuration Center" as well. [lxqt-admin](https://github.com/lxde/lxqt-admin) is providing tools +similar to those depicted above but meant to configure parts of the underlying OS. In fact any arbitrary application may +place its tools within the "Configuration Center". This can be seen in the following screenshot where it's featuring icon +"Connman UI Setup" which belongs to [cmst](https://github.com/andrew-bibb/cmst) and "SDDM Configuration" which belongs to +[sddm-config-editor](https://github.com/hagabaka/sddm-config-editor). + +![lxqt-config](lxqt-config.png) diff --git a/debian/changelog b/debian/changelog index 2328c0f..a338049 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,6 @@ -lxqt-config (0.10.0-4) UNRELEASED; urgency=medium +lxqt-config (0.10.96~62-g80c413c-1) experimental; urgency=medium + * Cherry-picking upstream version 0.10.96~62-g80c413c. * Preparing the upcoming release, switch to experimental * Fixed .gititgnore, added build-stamp * Added build-depenedency libqt5xdgiconloader-dev @@ -14,7 +15,7 @@ lxqt-config (0.10.0-4) UNRELEASED; urgency=medium * Added translation control * Added DCMAKE_BUILD_TYPE=RelWithDebInfo - -- Alf Gaida Fri, 15 Jul 2016 19:00:33 +0200 + -- Alf Gaida Fri, 15 Jul 2016 20:27:58 +0200 lxqt-config (0.10.0-3) unstable; urgency=medium diff --git a/liblxqt-config-cursor/CMakeLists.txt b/liblxqt-config-cursor/CMakeLists.txt index c09b93a..51883f8 100644 --- a/liblxqt-config-cursor/CMakeLists.txt +++ b/liblxqt-config-cursor/CMakeLists.txt @@ -52,6 +52,16 @@ lxqt_translate_ts(QM_FILES ${lxqt-config-cursor_UIS} INSTALL_DIR "${LXQT_TRANSLATIONS_DIR}/${PROJECT_NAME}" + PULL_TRANSLATIONS + ${PULL_TRANSLATIONS} + CLEAN_TRANSLATIONS + ${CLEAN_TRANSLATIONS} + TRANSLATIONS_REPO + ${TRANSLATIONS_REPO} + TRANSLATIONS_REFSPEC + ${TRANSLATIONS_REFSPEC} + REPO_SUBDIR + "lxqt-config/liblxqt-config-cursor" ) lxqt_app_translation_loader(lxqt-config-cursor_QM_LOADER ${PROJECT_NAME}) diff --git a/liblxqt-config-cursor/translations/lxqt-config-cursor.ts b/liblxqt-config-cursor/translations/lxqt-config-cursor.ts deleted file mode 100644 index d779815..0000000 --- a/liblxqt-config-cursor/translations/lxqt-config-cursor.ts +++ /dev/null @@ -1,68 +0,0 @@ - - - - - SelectWnd - - - LXQt Mouse Theme Configuration - - - - - Select the cursor theme you want to use (hover preview to test cursor). <b>LXQt session needs restart after this change</b>: - - - - - &Install New Theme... - - - - - &Remove Theme - - - - - XCurTheme error - - - - - You can't remove active theme! - - - - - WarningLabel - - - Form - - - - - LXQt could not find any cursor theme. The default X11 cursor theme will be used instead. LXQt looked in the following directories: - - - - - Show... - - - - - XCursorThemeModel - - - Name - - - - - Description - - - - diff --git a/liblxqt-config-cursor/translations/lxqt-config-cursor_ar.ts b/liblxqt-config-cursor/translations/lxqt-config-cursor_ar.ts deleted file mode 100644 index 66801ce..0000000 --- a/liblxqt-config-cursor/translations/lxqt-config-cursor_ar.ts +++ /dev/null @@ -1,77 +0,0 @@ - - - - - SelectWnd - - - LXQt Mouse Theme Configuration - اعداد شكل فأرة سطح ريزر - - - - Select the cursor theme you want to use (hover preview to test cursor). <b>LXQt session needs restart after this change</b>: - اختر سكل المؤشِّر الذي تريد استخدامه (مرر المؤشِّر متخطيَّاً لمعاينته). -<b>يجب إعادة تشغيل جلسة سطح ريزر بعد هذا التَّغيير</b> - - - - &Install New Theme... - تث&بيت واجهةٍ شكليَّةٍ جديدةٍ... - - - &Set Theme - ت^عيين الواجهة الشَّكليَّة - - - - &Remove Theme - إ&زالة الواجهة الشَّكليَّة - - - &Close - إ&غلاق - - - - XCurTheme error - خطأٌ في الواجهة الشَّكليَّة للمؤشر الرسوميّ - - - - You can't remove active theme! - ﻻ يمكنك إزالة واجهةٍ مفعَّلةٍ - - - - WarningLabel - - - Form - - - - - LXQt could not find any cursor theme. The default X11 cursor theme will be used instead. LXQt looked in the following directories: - - - - - Show... - - - - - XCursorThemeModel - - - Name - الاسم - - - - Description - الوصف - - - diff --git a/liblxqt-config-cursor/translations/lxqt-config-cursor_cs.ts b/liblxqt-config-cursor/translations/lxqt-config-cursor_cs.ts deleted file mode 100644 index b5ba3f4..0000000 --- a/liblxqt-config-cursor/translations/lxqt-config-cursor_cs.ts +++ /dev/null @@ -1,76 +0,0 @@ - - - - - SelectWnd - - - LXQt Mouse Theme Configuration - Nastavení motivu myši - - - - Select the cursor theme you want to use (hover preview to test cursor). <b>LXQt session needs restart after this change</b>: - Vyberte motiv ukazovátka, jejž chcete používat (přejeďte myší nad náhledem kvůli vyzkoušení ukazovátka). <b>Sezení LXQt je potřeba po této změně spustit znovu</b>: - - - - &Install New Theme... - Na&instalovat nový motiv... - - - &Set Theme - &Nastavit motiv - - - - &Remove Theme - &Odstranit motiv - - - &Close - &Zavřít - - - - XCurTheme error - Chyba XCurTheme - - - - You can't remove active theme! - Nemůžete odstranit právě nastavený motiv - - - - WarningLabel - - - Form - - - - - LXQt could not find any cursor theme. The default X11 cursor theme will be used instead. LXQt looked in the following directories: - - - - - Show... - - - - - XCursorThemeModel - - - Name - Název - - - - Description - Popis - - - diff --git a/liblxqt-config-cursor/translations/lxqt-config-cursor_cs_CZ.ts b/liblxqt-config-cursor/translations/lxqt-config-cursor_cs_CZ.ts deleted file mode 100644 index 0810ca2..0000000 --- a/liblxqt-config-cursor/translations/lxqt-config-cursor_cs_CZ.ts +++ /dev/null @@ -1,76 +0,0 @@ - - - - - SelectWnd - - - LXQt Mouse Theme Configuration - Nastavení motivu myši - - - - Select the cursor theme you want to use (hover preview to test cursor). <b>LXQt session needs restart after this change</b>: - Vyberte motiv ukazovátka, jejž chcete používat (přejeďte myší nad náhledem kvůli vyzkoušení ukazovátka). <b>Sezení LXQt je potřeba po této změně spustit znovu</b>: - - - - &Install New Theme... - Na&instalovat nový motiv... - - - &Set Theme - &Nastavit motiv - - - - &Remove Theme - &Odstranit motiv - - - &Close - &Zavřít - - - - XCurTheme error - Chyba XCurTheme - - - - You can't remove active theme! - Nemůžete odstranit právě nastavený motiv - - - - WarningLabel - - - Form - - - - - LXQt could not find any cursor theme. The default X11 cursor theme will be used instead. LXQt looked in the following directories: - - - - - Show... - - - - - XCursorThemeModel - - - Name - Název - - - - Description - Popis - - - diff --git a/liblxqt-config-cursor/translations/lxqt-config-cursor_da_DK.ts b/liblxqt-config-cursor/translations/lxqt-config-cursor_da_DK.ts deleted file mode 100644 index 2b42a95..0000000 --- a/liblxqt-config-cursor/translations/lxqt-config-cursor_da_DK.ts +++ /dev/null @@ -1,77 +0,0 @@ - - - - - SelectWnd - - - LXQt Mouse Theme Configuration - LXQt Musemarkør Tema Indstillinger - - - - Select the cursor theme you want to use (hover preview to test cursor). <b>LXQt session needs restart after this change</b>: - Vælg det markør tema, du vil bruge (forhåndsvisning for at teste markør). -<b> LXQt session skal genstartes efter denne ændring </ b>: - - - - &Install New Theme... - &Installer Nyt Tema... - - - &Set Theme - &Sæt Tema - - - - &Remove Theme - &Fjern Tema - - - &Close - &Afslut - - - - XCurTheme error - XCurTheme fejl - - - - You can't remove active theme! - Det aktive tema kan ikke fjernes! - - - - WarningLabel - - - Form - - - - - LXQt could not find any cursor theme. The default X11 cursor theme will be used instead. LXQt looked in the following directories: - - - - - Show... - - - - - XCursorThemeModel - - - Name - Navn - - - - Description - Beskrivelse - - - diff --git a/liblxqt-config-cursor/translations/lxqt-config-cursor_de.ts b/liblxqt-config-cursor/translations/lxqt-config-cursor_de.ts deleted file mode 100644 index 25a4d49..0000000 --- a/liblxqt-config-cursor/translations/lxqt-config-cursor_de.ts +++ /dev/null @@ -1,69 +0,0 @@ - - - - - SelectWnd - - - LXQt Mouse Theme Configuration - LXQt Mauszeigerdesign Konfiguration - - - - Select the cursor theme you want to use (hover preview to test cursor). <b>LXQt session needs restart after this change</b>: - Wähle das gewünschte Mauszeigerdesign aus (zum Test Maus über Vorschau bewegen) -<b>Die LXQt-Sitzung muss nach dieser Veränderung neu gestartet werden</b>: - - - - &Install New Theme... - &Neues Design installieren... - - - - &Remove Theme - D&esign entfernen - - - - XCurTheme error - XcurTheme Fehler - - - - You can't remove active theme! - Das aktive Design kann nicht entfernt werden! - - - - WarningLabel - - - Form - Dialogfenster - - - - LXQt could not find any cursor theme. The default X11 cursor theme will be used instead. LXQt looked in the following directories: - LXQt konnte kein Mauszeigerdesign finden. Stattdessen wird das Default-Mauszeigerdesign von X11 verwendet. LXQt suchte in folgenden Verzeichnissen: - - - - Show... - Anzeigen... - - - - XCursorThemeModel - - - Name - Name - - - - Description - Beschreibung - - - diff --git a/liblxqt-config-cursor/translations/lxqt-config-cursor_el.ts b/liblxqt-config-cursor/translations/lxqt-config-cursor_el.ts deleted file mode 100644 index 31fb306..0000000 --- a/liblxqt-config-cursor/translations/lxqt-config-cursor_el.ts +++ /dev/null @@ -1,76 +0,0 @@ - - - - - SelectWnd - - - LXQt Mouse Theme Configuration - Διαμόρφωση θέματος ποντικιού LXQt - - - - Select the cursor theme you want to use (hover preview to test cursor). <b>LXQt session needs restart after this change</b>: - Επιλέξτε το θέμα του δρομέα που θέλετε να χρησιμοποιήσετε (κινηθείτε επάνω για προεπισκόπηση). <b>Χρειάζεται επανεκκίνηση της συνεδρίας LXQt μετά την αλλαγή</b>: - - - - &Install New Theme... - &Εγκατάσταση νέου θέματος... - - - &Set Theme - Ε&πιλογή θέματος - - - - &Remove Theme - &Αφαίρεση θέματος - - - &Close - &Κλείσιμο - - - - XCurTheme error - Σφάλμα του θέματος δρομέα X - - - - You can't remove active theme! - Δεν μπορείτε να αφαιρέσετε το ενεργό θέμα! - - - - WarningLabel - - - Form - Παράθυρο διαλόγου - - - - LXQt could not find any cursor theme. The default X11 cursor theme will be used instead. LXQt looked in the following directories: - Το LXQt δεν μπόρεσε να βρει κάποιο θέμα δρομέα. Θα χρησιμοποιηθεί ο εξ ορισμού δρομέας X11. Το LXQt έψαξε στους παρακάτω καταλόγους: - - - - Show... - Εμφάνιση... - - - - XCursorThemeModel - - - Name - Όνομα - - - - Description - Περιγραφή - - - diff --git a/liblxqt-config-cursor/translations/lxqt-config-cursor_eo.ts b/liblxqt-config-cursor/translations/lxqt-config-cursor_eo.ts deleted file mode 100644 index 4ca3d1b..0000000 --- a/liblxqt-config-cursor/translations/lxqt-config-cursor_eo.ts +++ /dev/null @@ -1,76 +0,0 @@ - - - - - SelectWnd - - - LXQt Mouse Theme Configuration - Agordoj de etosoj de muso de LXQt - - - - Select the cursor theme you want to use (hover preview to test cursor). <b>LXQt session needs restart after this change</b>: - Elektu la etoson de kursoro, kiun vi volas uzi (ŝveba antaŭrigardo por testi kursoron). <b>Seanco de LXQt postulas restartigon post ol ĉi tiu ŝanĝo</b>: - - - - &Install New Theme... - &Instali novan etoson... - - - &Set Theme - Agordi eto&son - - - - &Remove Theme - Fo&rigi etoson - - - &Close - &Fermi - - - - XCurTheme error - Eraro de XCurTheme - - - - You can't remove active theme! - Vi ne povas forigi aktivan etoson! - - - - WarningLabel - - - Form - - - - - LXQt could not find any cursor theme. The default X11 cursor theme will be used instead. LXQt looked in the following directories: - - - - - Show... - - - - - XCursorThemeModel - - - Name - Nomo - - - - Description - Priskribo - - - diff --git a/liblxqt-config-cursor/translations/lxqt-config-cursor_es.ts b/liblxqt-config-cursor/translations/lxqt-config-cursor_es.ts deleted file mode 100644 index 5cf9e72..0000000 --- a/liblxqt-config-cursor/translations/lxqt-config-cursor_es.ts +++ /dev/null @@ -1,76 +0,0 @@ - - - - - SelectWnd - - - LXQt Mouse Theme Configuration - Configuración de LXQt para el Tema del Ratón - - - - Select the cursor theme you want to use (hover preview to test cursor). <b>LXQt session needs restart after this change</b>: - Seleccione el tema del cursor que desea utilizar (pase el cursor para una vista previa). <b>LXQt necesita reiniciar la sesión después de este cambio </ b>: - - - - &Install New Theme... - &Instalar Nuevo Tema... - - - &Set Theme - &Establecer Tema - - - - &Remove Theme - &Quitar Tema - - - &Close - &Cerrar - - - - XCurTheme error - Error en XCurTheme - - - - You can't remove active theme! - ¡No puedes quitar el tema activo! - - - - WarningLabel - - - Form - - - - - LXQt could not find any cursor theme. The default X11 cursor theme will be used instead. LXQt looked in the following directories: - - - - - Show... - - - - - XCursorThemeModel - - - Name - Nombre - - - - Description - Descripción - - - diff --git a/liblxqt-config-cursor/translations/lxqt-config-cursor_es_VE.ts b/liblxqt-config-cursor/translations/lxqt-config-cursor_es_VE.ts deleted file mode 100644 index a9361e2..0000000 --- a/liblxqt-config-cursor/translations/lxqt-config-cursor_es_VE.ts +++ /dev/null @@ -1,76 +0,0 @@ - - - - - SelectWnd - - - LXQt Mouse Theme Configuration - Configuracion de tema de raton de LXQt - - - - Select the cursor theme you want to use (hover preview to test cursor). <b>LXQt session needs restart after this change</b>: - Selecciona el cursor del raton que tu desees usar (colocalo encima para ver una previsualizacion) <b>La sesion de LXQt necesita reinicializarse despues de un cambio</b> - - - - &Install New Theme... - &Instalar nuevo tema - - - &Set Theme - A&Signar el tema - - - - &Remove Theme - &Remover el tema - - - &Close - &Cerrar - - - - XCurTheme error - XCurTheme error - - - - You can't remove active theme! - No puedes remover el tema activo! - - - - WarningLabel - - - Form - - - - - LXQt could not find any cursor theme. The default X11 cursor theme will be used instead. LXQt looked in the following directories: - - - - - Show... - - - - - XCursorThemeModel - - - Name - Nombre - - - - Description - Descripcion - - - diff --git a/liblxqt-config-cursor/translations/lxqt-config-cursor_eu.ts b/liblxqt-config-cursor/translations/lxqt-config-cursor_eu.ts deleted file mode 100644 index 425889b..0000000 --- a/liblxqt-config-cursor/translations/lxqt-config-cursor_eu.ts +++ /dev/null @@ -1,76 +0,0 @@ - - - - - SelectWnd - - - LXQt Mouse Theme Configuration - LXQt saguaren gaiaren konfigurazioa - - - - Select the cursor theme you want to use (hover preview to test cursor). <b>LXQt session needs restart after this change</b>: - Hautatu erabili nahi duzun kurtsore-gaia (nabarmendu aurrebista kurtsorea probatzeko). <b>LXQt saioa berrabiarazi behar da aldaketa honen ondoren</b>: - - - - &Install New Theme... - &Instalatu gai berria... - - - &Set Theme - &Ezarri gaia - - - - &Remove Theme - &Kendu gaia - - - &Close - &Itxi - - - - XCurTheme error - XCurTheme errorea - - - - You can't remove active theme! - Ezin duzu gai aktiboa kendu! - - - - WarningLabel - - - Form - - - - - LXQt could not find any cursor theme. The default X11 cursor theme will be used instead. LXQt looked in the following directories: - - - - - Show... - - - - - XCursorThemeModel - - - Name - Izena - - - - Description - Deskribapena - - - diff --git a/liblxqt-config-cursor/translations/lxqt-config-cursor_fi.ts b/liblxqt-config-cursor/translations/lxqt-config-cursor_fi.ts deleted file mode 100644 index 207b1c1..0000000 --- a/liblxqt-config-cursor/translations/lxqt-config-cursor_fi.ts +++ /dev/null @@ -1,76 +0,0 @@ - - - - - SelectWnd - - - LXQt Mouse Theme Configuration - LXQtin hiiriteeman asetukset - - - - Select the cursor theme you want to use (hover preview to test cursor). <b>LXQt session needs restart after this change</b>: - Valitse haluamasi osoitinteema (käytä esikatselua testataksesi osoitinteemaa). <b>LXQt-istunto tulee käynnistää uudelleen tämän muutoksen jälkeen</b>: - - - - &Install New Theme... - &Asenna uusi teema... - - - &Set Theme - Aseta &teema - - - - &Remove Theme - &Poista teema - - - &Close - &Sulje - - - - XCurTheme error - XCurTheme-virhe - - - - You can't remove active theme! - Käytössä olevaa teemaa ei voi poistaa! - - - - WarningLabel - - - Form - - - - - LXQt could not find any cursor theme. The default X11 cursor theme will be used instead. LXQt looked in the following directories: - - - - - Show... - - - - - XCursorThemeModel - - - Name - Nimi - - - - Description - Kuvaus - - - diff --git a/liblxqt-config-cursor/translations/lxqt-config-cursor_fr_FR.ts b/liblxqt-config-cursor/translations/lxqt-config-cursor_fr_FR.ts deleted file mode 100644 index f1b23e8..0000000 --- a/liblxqt-config-cursor/translations/lxqt-config-cursor_fr_FR.ts +++ /dev/null @@ -1,72 +0,0 @@ - - - - - SelectWnd - - - LXQt Mouse Theme Configuration - - - - - Select the cursor theme you want to use (hover preview to test cursor). <b>LXQt session needs restart after this change</b>: - - - - - &Install New Theme... - - - - - &Remove Theme - - - - &Close - &Fermer - - - - XCurTheme error - - - - - You can't remove active theme! - - - - - WarningLabel - - - Form - - - - - LXQt could not find any cursor theme. The default X11 cursor theme will be used instead. LXQt looked in the following directories: - - - - - Show... - - - - - XCursorThemeModel - - - Name - - - - - Description - - - - diff --git a/liblxqt-config-cursor/translations/lxqt-config-cursor_hu.ts b/liblxqt-config-cursor/translations/lxqt-config-cursor_hu.ts deleted file mode 100644 index 65a3397..0000000 --- a/liblxqt-config-cursor/translations/lxqt-config-cursor_hu.ts +++ /dev/null @@ -1,72 +0,0 @@ - - - - - SelectWnd - - - LXQt Mouse Theme Configuration - LXQt egértéma - - - - Select the cursor theme you want to use (hover preview to test cursor). <b>LXQt session needs restart after this change</b>: - A kívánt kurzortéma (előzetesen látható). <b>Érvénybeléptetéshez az LXQt munkamenet újraindíttandó</b>: - - - - &Install New Theme... - &Új téma telepítése... - - - - &Remove Theme - Téma kiny&írása - - - &Close - &Bezárás - - - - XCurTheme error - Témahiba - - - - You can't remove active theme! - Az aktuális téma eltávolíthatatlan! - - - - WarningLabel - - - Form - Ürlap - - - - LXQt could not find any cursor theme. The default X11 cursor theme will be used instead. LXQt looked in the following directories: - Az LXQt nem lelt kurzor témát, az alapértelmezett lesz használva. Ezekben a mappákban kereste: - - - - Show... - Mutat... - - - - XCursorThemeModel - - - Name - Név - - - - Description - Leírás - - - diff --git a/liblxqt-config-cursor/translations/lxqt-config-cursor_hu_HU.ts b/liblxqt-config-cursor/translations/lxqt-config-cursor_hu_HU.ts deleted file mode 100644 index 83f60ea..0000000 --- a/liblxqt-config-cursor/translations/lxqt-config-cursor_hu_HU.ts +++ /dev/null @@ -1,72 +0,0 @@ - - - - - SelectWnd - - - LXQt Mouse Theme Configuration - LXQt egértéma - - - - Select the cursor theme you want to use (hover preview to test cursor). <b>LXQt session needs restart after this change</b>: - A kívánt kurzortéma (előzetesen látható). <b>Érvénybeléptetéshez az LXQt munkamenet újraindíttandó</b>: - - - - &Install New Theme... - &Új téma telepítése... - - - - &Remove Theme - Téma kiny&írása - - - &Close - &Bezárás - - - - XCurTheme error - Témahiba - - - - You can't remove active theme! - Az aktuális téma eltávolíthatatlan! - - - - WarningLabel - - - Form - Űrlap - - - - LXQt could not find any cursor theme. The default X11 cursor theme will be used instead. LXQt looked in the following directories: - Az LXQt nem lelt kurzor témát, az alapértelmezett lesz használva. Ezekben a mappákban kereste: - - - - Show... - Mutat... - - - - XCursorThemeModel - - - Name - Név - - - - Description - Leírás - - - diff --git a/liblxqt-config-cursor/translations/lxqt-config-cursor_it.ts b/liblxqt-config-cursor/translations/lxqt-config-cursor_it.ts deleted file mode 100644 index 54e4b19..0000000 --- a/liblxqt-config-cursor/translations/lxqt-config-cursor_it.ts +++ /dev/null @@ -1,78 +0,0 @@ - - - - - SelectWnd - - - LXQt Mouse Theme Configuration - Configurazione del aspetto del cursore - - - - Select the cursor theme you want to use (hover preview to test cursor). <b>LXQt session needs restart after this change</b>: - hover seems not working, and restart seems not necessary to take effect - Seleziona il tema del cursore che vuoi utilizzare - - - - &Install New Theme... - & to remove in source - Installa un nuovo tema... - - - &Set Theme - &Imposta il tema - - - - &Remove Theme - Rimuovi il tema - - - &Close - &Chiudi - - - - XCurTheme error - Errore tema X-cursore - - - - You can't remove active theme! - Non puoi rimuovere il tema attivo! - - - - WarningLabel - - - Form - - - - - LXQt could not find any cursor theme. The default X11 cursor theme will be used instead. LXQt looked in the following directories: - LXQt non ha trovato nessun tema per i cursori in queste directories: (Verrà usato il tema di default di X11): - - - - Show... - Mostra... - - - - XCursorThemeModel - - - Name - Nome - - - - Description - Descrizione - - - diff --git a/liblxqt-config-cursor/translations/lxqt-config-cursor_ja.ts b/liblxqt-config-cursor/translations/lxqt-config-cursor_ja.ts deleted file mode 100644 index 4d3e4df..0000000 --- a/liblxqt-config-cursor/translations/lxqt-config-cursor_ja.ts +++ /dev/null @@ -1,68 +0,0 @@ - - - - - SelectWnd - - - LXQt Mouse Theme Configuration - LXQtマウステーマの設定 - - - - Select the cursor theme you want to use (hover preview to test cursor). <b>LXQt session needs restart after this change</b>: - 使いたいカーソルテーマを選択 (プレビューをテストカーソルに合わせます). <b>LXQtセッションはこの変更後に再起動が必要です</b>: - - - - &Install New Theme... - 新しいテーマのインストール...(&I) - - - - &Remove Theme - テーマの削除(&R) - - - - XCurTheme error - XCurTheme エラー - - - - You can't remove active theme! - アクティブなテーマは削除できません! - - - - WarningLabel - - - Form - フォーム - - - - LXQt could not find any cursor theme. The default X11 cursor theme will be used instead. LXQt looked in the following directories: - カーソルテーマを見つけられませんでした。代わりに、デフォルトのX11カーソルテーマが使われます。LXQtは以下のディレクトリーを検索しました: - - - - Show... - 表示 - - - - XCursorThemeModel - - - Name - 名称 - - - - Description - 説明 - - - diff --git a/liblxqt-config-cursor/translations/lxqt-config-cursor_lt.ts b/liblxqt-config-cursor/translations/lxqt-config-cursor_lt.ts deleted file mode 100644 index 2fb22ee..0000000 --- a/liblxqt-config-cursor/translations/lxqt-config-cursor_lt.ts +++ /dev/null @@ -1,72 +0,0 @@ - - - - - SelectWnd - - - LXQt Mouse Theme Configuration - - - - - Select the cursor theme you want to use (hover preview to test cursor). <b>LXQt session needs restart after this change</b>: - - - - - &Install New Theme... - - - - - &Remove Theme - - - - &Close - &Užverti - - - - XCurTheme error - - - - - You can't remove active theme! - - - - - WarningLabel - - - Form - - - - - LXQt could not find any cursor theme. The default X11 cursor theme will be used instead. LXQt looked in the following directories: - - - - - Show... - - - - - XCursorThemeModel - - - Name - - - - - Description - - - - diff --git a/liblxqt-config-cursor/translations/lxqt-config-cursor_nl.ts b/liblxqt-config-cursor/translations/lxqt-config-cursor_nl.ts deleted file mode 100644 index a6fd2e4..0000000 --- a/liblxqt-config-cursor/translations/lxqt-config-cursor_nl.ts +++ /dev/null @@ -1,72 +0,0 @@ - - - - - SelectWnd - - - LXQt Mouse Theme Configuration - - - - - Select the cursor theme you want to use (hover preview to test cursor). <b>LXQt session needs restart after this change</b>: - - - - - &Install New Theme... - - - - - &Remove Theme - - - - &Close - &Sluiten - - - - XCurTheme error - - - - - You can't remove active theme! - - - - - WarningLabel - - - Form - - - - - LXQt could not find any cursor theme. The default X11 cursor theme will be used instead. LXQt looked in the following directories: - - - - - Show... - - - - - XCursorThemeModel - - - Name - - - - - Description - - - - diff --git a/liblxqt-config-cursor/translations/lxqt-config-cursor_pl_PL.ts b/liblxqt-config-cursor/translations/lxqt-config-cursor_pl_PL.ts deleted file mode 100644 index 11fa272..0000000 --- a/liblxqt-config-cursor/translations/lxqt-config-cursor_pl_PL.ts +++ /dev/null @@ -1,76 +0,0 @@ - - - - - SelectWnd - - - LXQt Mouse Theme Configuration - Wygląd kursora - - - - Select the cursor theme you want to use (hover preview to test cursor). <b>LXQt session needs restart after this change</b>: - Wybierz motyw kursora (najedz kursorem na podgląd by przetestować). <b>Wymagane jest ponowne uruchomienie sesji</b>: - - - - &Install New Theme... - &Zainstaluj Nowy Motyw... - - - &Set Theme - &Wybierz Motyw - - - - &Remove Theme - &Usuń Motyw - - - &Close - &Zamknij - - - - XCurTheme error - Błąd XCurTheme - - - - You can't remove active theme! - Nie możesz usunąć aktywnego motywu! - - - - WarningLabel - - - Form - Uwaga - - - - LXQt could not find any cursor theme. The default X11 cursor theme will be used instead. LXQt looked in the following directories: - Nie znaleziono żadnego motywu kursora. Zostanie użyty domyślny motyw kursora X11. LXQt wyszukiwało w następujących katalogach: - - - - Show... - Pokaż... - - - - XCursorThemeModel - - - Name - Nazwa - - - - Description - Opis - - - diff --git a/liblxqt-config-cursor/translations/lxqt-config-cursor_pt.ts b/liblxqt-config-cursor/translations/lxqt-config-cursor_pt.ts deleted file mode 100644 index 85d357e..0000000 --- a/liblxqt-config-cursor/translations/lxqt-config-cursor_pt.ts +++ /dev/null @@ -1,76 +0,0 @@ - - - - - SelectWnd - - - LXQt Mouse Theme Configuration - Definições do tema de cursor do LXQt - - - - Select the cursor theme you want to use (hover preview to test cursor). <b>LXQt session needs restart after this change</b>: - Escolha o tema de cursor a utilizar (passe com o rato para testar). <b>Tem que reiniciar o LXQt a sessão após a alteração</b>: - - - - &Install New Theme... - &Instalar novo tema... - - - &Set Theme - &Definir tema - - - - &Remove Theme - &Remover tema - - - &Close - Fe&char - - - - XCurTheme error - Erro XCurTheme - - - - You can't remove active theme! - Não pode remover o tema ativo! - - - - WarningLabel - - - Form - Formulário - - - - LXQt could not find any cursor theme. The default X11 cursor theme will be used instead. LXQt looked in the following directories: - O LXQt não encontrou quaisquer temas de cursor. Será utilizado o tema de cursor X11. O LXQt procurou nestes diretórios: - - - - Show... - Mostrar... - - - - XCursorThemeModel - - - Name - Nome - - - - Description - Descrição - - - diff --git a/liblxqt-config-cursor/translations/lxqt-config-cursor_pt_BR.ts b/liblxqt-config-cursor/translations/lxqt-config-cursor_pt_BR.ts deleted file mode 100644 index fab8d98..0000000 --- a/liblxqt-config-cursor/translations/lxqt-config-cursor_pt_BR.ts +++ /dev/null @@ -1,76 +0,0 @@ - - - - - SelectWnd - - - LXQt Mouse Theme Configuration - Configuração Do Tema Do Mouse - - - - Select the cursor theme you want to use (hover preview to test cursor). <b>LXQt session needs restart after this change</b>: - Selecione o tema do cursor que você deseja usar (pairar visualização para testar o cursor). <b>A sessão LXQt precisa reiniciar após esta mudança</b>: - - - - &Install New Theme... - &Instalar Novo Tema... - - - &Set Theme - &Definir Tema - - - - &Remove Theme - &Remover Tema - - - &Close - &Fechar - - - - XCurTheme error - Erro XCurTheme - - - - You can't remove active theme! - Você não pode remover o tema ativo! - - - - WarningLabel - - - Form - - - - - LXQt could not find any cursor theme. The default X11 cursor theme will be used instead. LXQt looked in the following directories: - - - - - Show... - - - - - XCursorThemeModel - - - Name - Nome - - - - Description - Descrição - - - diff --git a/liblxqt-config-cursor/translations/lxqt-config-cursor_ro_RO.ts b/liblxqt-config-cursor/translations/lxqt-config-cursor_ro_RO.ts deleted file mode 100644 index c53ff6f..0000000 --- a/liblxqt-config-cursor/translations/lxqt-config-cursor_ro_RO.ts +++ /dev/null @@ -1,76 +0,0 @@ - - - - - SelectWnd - - - LXQt Mouse Theme Configuration - Configurare temă maus LXQt - - - - Select the cursor theme you want to use (hover preview to test cursor). <b>LXQt session needs restart after this change</b>: - Selectați tema de cursor pe care doriți să o utilizați (treceți peste cu mausul pentru a testa cursorul)</b>Sesiunea LXQt necesită o repornire după această modificare</b>: - - - - &Install New Theme... - &Instalează temă nouă... - - - &Set Theme - &Setează tema - - - - &Remove Theme - Elimină tema - - - &Close - În&chide - - - - XCurTheme error - Eroare XCurTheme - - - - You can't remove active theme! - Nu se poate elimina tema activă! - - - - WarningLabel - - - Form - - - - - LXQt could not find any cursor theme. The default X11 cursor theme will be used instead. LXQt looked in the following directories: - - - - - Show... - - - - - XCursorThemeModel - - - Name - Nume - - - - Description - Descriere - - - diff --git a/liblxqt-config-cursor/translations/lxqt-config-cursor_ru.ts b/liblxqt-config-cursor/translations/lxqt-config-cursor_ru.ts deleted file mode 100644 index 78b14db..0000000 --- a/liblxqt-config-cursor/translations/lxqt-config-cursor_ru.ts +++ /dev/null @@ -1,68 +0,0 @@ - - - - - SelectWnd - - - LXQt Mouse Theme Configuration - Настройка темы курсора LXQt - - - - Select the cursor theme you want to use (hover preview to test cursor). <b>LXQt session needs restart after this change</b>: - Выберите тему курсора, которую вы хотите использовать (наведите курсор на область предварительного просмотра для проверки). <b>Сессию LXQt нужно перезапустить после изменений</b>: - - - - &Install New Theme... - &Установить новую тему… - - - - &Remove Theme - &Удалить тему - - - - XCurTheme error - Ошибка XCurTheme - - - - You can't remove active theme! - Невозможно удалить активную тему! - - - - WarningLabel - - - Form - - - - - LXQt could not find any cursor theme. The default X11 cursor theme will be used instead. LXQt looked in the following directories: - LXQt не смог найти какую-нибудь тему курсора. Будет использована тема X11 по-умолчанию. LXQt искал в следующих папках: - - - - Show... - Показать… - - - - XCursorThemeModel - - - Name - Имя - - - - Description - Описание - - - diff --git a/liblxqt-config-cursor/translations/lxqt-config-cursor_ru_RU.ts b/liblxqt-config-cursor/translations/lxqt-config-cursor_ru_RU.ts deleted file mode 100644 index 2c0d5f8..0000000 --- a/liblxqt-config-cursor/translations/lxqt-config-cursor_ru_RU.ts +++ /dev/null @@ -1,68 +0,0 @@ - - - - - SelectWnd - - - LXQt Mouse Theme Configuration - Настройка темы курсора LXQt - - - - Select the cursor theme you want to use (hover preview to test cursor). <b>LXQt session needs restart after this change</b>: - Выберите тему курсора, которую вы хотите использовать (наведите курсор на область предварительного просмотра для проверки). <b>Сессию LXQt нужно перезапустить после изменений</b>: - - - - &Install New Theme... - &Установить новую тему… - - - - &Remove Theme - &Удалить тему - - - - XCurTheme error - Ошибка XCurTheme - - - - You can't remove active theme! - Невозможно удалить активную тему! - - - - WarningLabel - - - Form - - - - - LXQt could not find any cursor theme. The default X11 cursor theme will be used instead. LXQt looked in the following directories: - LXQt не смог найти какую-нибудь тему курсора. Будет использована тема X11 по-умолчанию. LXQt искал в следующих папках: - - - - Show... - Показать… - - - - XCursorThemeModel - - - Name - Имя - - - - Description - Описание - - - diff --git a/liblxqt-config-cursor/translations/lxqt-config-cursor_sl.ts b/liblxqt-config-cursor/translations/lxqt-config-cursor_sl.ts deleted file mode 100644 index 0d6efb6..0000000 --- a/liblxqt-config-cursor/translations/lxqt-config-cursor_sl.ts +++ /dev/null @@ -1,72 +0,0 @@ - - - - - SelectWnd - - - LXQt Mouse Theme Configuration - - - - - Select the cursor theme you want to use (hover preview to test cursor). <b>LXQt session needs restart after this change</b>: - - - - - &Install New Theme... - - - - - &Remove Theme - - - - &Close - &Zapri - - - - XCurTheme error - - - - - You can't remove active theme! - - - - - WarningLabel - - - Form - - - - - LXQt could not find any cursor theme. The default X11 cursor theme will be used instead. LXQt looked in the following directories: - - - - - Show... - - - - - XCursorThemeModel - - - Name - - - - - Description - - - - diff --git a/liblxqt-config-cursor/translations/lxqt-config-cursor_th_TH.ts b/liblxqt-config-cursor/translations/lxqt-config-cursor_th_TH.ts deleted file mode 100644 index 0a68e80..0000000 --- a/liblxqt-config-cursor/translations/lxqt-config-cursor_th_TH.ts +++ /dev/null @@ -1,76 +0,0 @@ - - - - - SelectWnd - - - LXQt Mouse Theme Configuration - การตั้งค่าชุดตกแต่งเมาส์ LXQt - - - - Select the cursor theme you want to use (hover preview to test cursor). <b>LXQt session needs restart after this change</b>: - เลือกชุดตกแต่งเคอร์เซอร์ที่คุณต้องการจะใช้ (วางเคอร์เซอร์ไว้บนตัวอย่างเพื่อทดสอบมัน). <b>วาระงาน LXQt จำเป็นต้องเริ่มใหม่หลังการเปลี่ยนแปลงนี้</b>: - - - - &Install New Theme... - ติดตั้งชุด&ตกแต่ง... - - - &Set Theme - &ใช้เป็นชุดตกแต่ง - - - - &Remove Theme - &ลบชุดตกแต่ง - - - &Close - ปิ&ด - - - - XCurTheme error - XCurTheme ขัดข้อง - - - - You can't remove active theme! - คุณไม่สามารถลบชุดตกแต่งที่กำลังใช้งานอยู่ได้ - - - - WarningLabel - - - Form - - - - - LXQt could not find any cursor theme. The default X11 cursor theme will be used instead. LXQt looked in the following directories: - - - - - Show... - - - - - XCursorThemeModel - - - Name - ชื่อ - - - - Description - รายละเอียด - - - diff --git a/liblxqt-config-cursor/translations/lxqt-config-cursor_tr.ts b/liblxqt-config-cursor/translations/lxqt-config-cursor_tr.ts deleted file mode 100644 index 6687906..0000000 --- a/liblxqt-config-cursor/translations/lxqt-config-cursor_tr.ts +++ /dev/null @@ -1,72 +0,0 @@ - - - - - SelectWnd - - - LXQt Mouse Theme Configuration - - - - - Select the cursor theme you want to use (hover preview to test cursor). <b>LXQt session needs restart after this change</b>: - - - - - &Install New Theme... - - - - - &Remove Theme - - - - &Close - &Kapat - - - - XCurTheme error - - - - - You can't remove active theme! - - - - - WarningLabel - - - Form - - - - - LXQt could not find any cursor theme. The default X11 cursor theme will be used instead. LXQt looked in the following directories: - - - - - Show... - - - - - XCursorThemeModel - - - Name - - - - - Description - - - - diff --git a/liblxqt-config-cursor/translations/lxqt-config-cursor_uk.ts b/liblxqt-config-cursor/translations/lxqt-config-cursor_uk.ts deleted file mode 100644 index 68b1f70..0000000 --- a/liblxqt-config-cursor/translations/lxqt-config-cursor_uk.ts +++ /dev/null @@ -1,76 +0,0 @@ - - - - - SelectWnd - - - LXQt Mouse Theme Configuration - Налаштування тем миші LXQt - - - - Select the cursor theme you want to use (hover preview to test cursor). <b>LXQt session needs restart after this change</b>: - Оберіть тему курсорів, яку Ви бажаєте використовувати (наведіть на попереднй перегляд для перевірки курсору). <b>Сеанс LXQt потребує перезапуску щоб ці зміни подіяли</b>: - - - - &Install New Theme... - &Встановити нову тему... - - - &Set Theme - &Призначити тему - - - - &Remove Theme - Вилу&чити тему - - - &Close - &Закрити - - - - XCurTheme error - Збій XCurTheme - - - - You can't remove active theme! - Неможливо вилучити активну тему! - - - - WarningLabel - - - Form - - - - - LXQt could not find any cursor theme. The default X11 cursor theme will be used instead. LXQt looked in the following directories: - - - - - Show... - - - - - XCursorThemeModel - - - Name - Ім'я - - - - Description - Опис - - - diff --git a/liblxqt-config-cursor/translations/lxqt-config-cursor_zh_CN.ts b/liblxqt-config-cursor/translations/lxqt-config-cursor_zh_CN.ts deleted file mode 100644 index 238f409..0000000 --- a/liblxqt-config-cursor/translations/lxqt-config-cursor_zh_CN.ts +++ /dev/null @@ -1,76 +0,0 @@ - - - - - SelectWnd - - - LXQt Mouse Theme Configuration - LXQt 鼠标主题配置 - - - - Select the cursor theme you want to use (hover preview to test cursor). <b>LXQt session needs restart after this change</b>: - 选择要使用的游标主题(鼠标放到项目上可以预览)。<b>修改后需要重启LXQt 会话。</b>: - - - - &Install New Theme... - 安装新主题(&I)... - - - &Set Theme - 设置主题(&S) - - - - &Remove Theme - 删除主题(&R) - - - &Close - &关闭 - - - - XCurTheme error - XCurTheme 错误 - - - - You can't remove active theme! - 无法删除使用中的主题! - - - - WarningLabel - - - Form - - - - - LXQt could not find any cursor theme. The default X11 cursor theme will be used instead. LXQt looked in the following directories: - - - - - Show... - - - - - XCursorThemeModel - - - Name - 名称 - - - - Description - 描述 - - - diff --git a/liblxqt-config-cursor/translations/lxqt-config-cursor_zh_TW.ts b/liblxqt-config-cursor/translations/lxqt-config-cursor_zh_TW.ts deleted file mode 100644 index b0fc09f..0000000 --- a/liblxqt-config-cursor/translations/lxqt-config-cursor_zh_TW.ts +++ /dev/null @@ -1,77 +0,0 @@ - - - - - SelectWnd - - - LXQt Mouse Theme Configuration - LXQt滑鼠游標主題設定 - - - - Select the cursor theme you want to use (hover preview to test cursor). <b>LXQt session needs restart after this change</b>: - 選擇您喜歡的游標主題 (檢視來回移動來測試游標) 。 -<b>套用改變需要重新啟動LXQt會話</b>: - - - - &Install New Theme... - 安裝新主題...(&I) - - - &Set Theme - 設為主題(&S) - - - - &Remove Theme - 移除主題(&R) - - - &Close - 關閉(&C) - - - - XCurTheme error - XCurTheme錯誤 - - - - You can't remove active theme! - 您無法移除正在套用的主題! - - - - WarningLabel - - - Form - - - - - LXQt could not find any cursor theme. The default X11 cursor theme will be used instead. LXQt looked in the following directories: - - - - - Show... - - - - - XCursorThemeModel - - - Name - 名稱 - - - - Description - 描述 - - - diff --git a/liblxqt-config-cursor/xcr/xcrthemefx.cpp b/liblxqt-config-cursor/xcr/xcrthemefx.cpp index 6850320..4ffcc49 100644 --- a/liblxqt-config-cursor/xcr/xcrthemefx.cpp +++ b/liblxqt-config-cursor/xcr/xcrthemefx.cpp @@ -265,7 +265,7 @@ bool XCursorThemeFX::parseCursorFXTheme (const QString &aFileName) { return false; } if (curType != 1) { - qDebug() << "skiping 'press' cursor; shape no" << curShape << "named" << curShapeName[curShape]; + qDebug() << "skipping 'press' cursor; shape no" << curShape << "named" << curShapeName[curShape]; continue; // we need only 'normal' cursors } @@ -273,14 +273,14 @@ bool XCursorThemeFX::parseCursorFXTheme (const QString &aFileName) { const char **nlst = findCursorByFXId((int)curShape); if (!nlst) { // unknown cursor type, skip it - qDebug() << "CursorFX: skiping cursor shape:" << curShapeName[curShape]; - qWarning() << "CursorFX: skiping cursor shape:" << curShapeName[curShape]; + qDebug() << "CursorFX: skipping cursor shape:" << curShapeName[curShape]; + qWarning() << "CursorFX: skipping cursor shape:" << curShapeName[curShape]; continue; } if (shapesSeen.contains(curShape&0xff)) { // unknown cursor type, skip it - qDebug() << "CursorFX: skiping duplicate cursor shape:" << curShapeName[curShape]; - qWarning() << "CursorFX: skiping duplicate cursor shape:" << curShapeName[curShape]; + qDebug() << "CursorFX: skipping duplicate cursor shape:" << curShapeName[curShape]; + qWarning() << "CursorFX: skipping duplicate cursor shape:" << curShapeName[curShape]; continue; } shapesSeen << (curShape&0xff); diff --git a/lxqt-config-appearance.png b/lxqt-config-appearance.png new file mode 100644 index 0000000000000000000000000000000000000000..13001578d42b8a1575c709cb4708d7f20846065d GIT binary patch literal 33465 zcmXtg1z1$;_w^x^l#m*bln&``P+}-4>6DTVX(28tk?)qNt@B5z% zkKB3AoH?=Iz1LoQt@)~~B=ZEF1Ra8)Cve$Ust|;b2!0h&5y309hN4;EpT}?IWnMw| z5C5e%=S6{6&>Up7-$M}A?}uN67-pI#QM+UhW;!;Yy1kc=_@6)SV zwdQDfq-rw7a4Yt;qS)0X8N&i4KXRP83q$Fu1vrxaln25Q9Jvf~8OqA|kD#N$Ak~5< z4zuuOWQlZ3ogCHqkQ5}CN$R?k3NnCV~fige?7f@+H&v<<9yNgemF~J(feFKM$ToB z0IQwdq%+iVvXrdz;^J`Gda~4|Uaxhvb7NzpKrJs(AvZ^ z0sr8!euHyCX{o5!Mfpt_<(#fz^L@pDvtUYVtM9GGbGWLpvGHhU7_Pr+l`f6T&9fGA zrkLJ$+#}pCf}cy~r>7g;UY#y?MToiXXhqQ}Mn*+h{E1glQQ`2pxd7*Of6$KY;o(6h zmQj}uNq9P*; z3kz>u5OkwI5;e9+^Pn) z+|bZ)bmRod%E?92d|l>GQPNaX!-K)PD_Oc62?z*ylfrU0$HvCCwyZw=6d!d~QTaZ( z9n�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\n" "\n" "\n" + " conf.d\n" " \n" " \n" " " << (mAntialias ? "true" : "false") << "\n" diff --git a/lxqt-config-appearance/iconthemeconfig.cpp b/lxqt-config-appearance/iconthemeconfig.cpp index 509d486..ebcfd7a 100644 --- a/lxqt-config-appearance/iconthemeconfig.cpp +++ b/lxqt-config-appearance/iconthemeconfig.cpp @@ -27,17 +27,10 @@ #include "iconthemeconfig.h" -#include -#include #include #include #include #include -#include - -#include - -using namespace QtXdg; IconThemeConfig::IconThemeConfig(LXQt::Settings* settings, QWidget* parent): QWidget(parent), @@ -49,16 +42,13 @@ IconThemeConfig::IconThemeConfig(LXQt::Settings* settings, QWidget* parent): initControls(); connect(iconThemeList, SIGNAL(itemClicked(QTreeWidgetItem*,int)), this, SLOT(iconThemeSelected(QTreeWidgetItem*,int))); - - connect(LXQt::Settings::globalSettings(), SIGNAL(settingsChanged()), - this, SLOT(update())); } void IconThemeConfig::initIconsThemes() { QStringList processed; - QStringList baseDirs = QIcon::themeSearchPaths(); + const QStringList baseDirs = QIcon::themeSearchPaths(); static const QStringList iconNames = QStringList() << QStringLiteral("document-open") << QStringLiteral("document-new") @@ -69,14 +59,14 @@ void IconThemeConfig::initIconsThemes() iconThemeList->setColumnCount(iconNamesN + 2); QList items; - foreach (QString baseDirName, baseDirs) + foreach (const QString &baseDirName, baseDirs) { QDir baseDir(baseDirName); if (!baseDir.exists()) continue; - QFileInfoList dirs = baseDir.entryInfoList(QDir::AllDirs | QDir::NoDotAndDotDot, QDir::Name); - foreach (QFileInfo dir, dirs) + const QFileInfoList dirs = baseDir.entryInfoList(QDir::AllDirs | QDir::NoDotAndDotDot, QDir::Name); + foreach (const QFileInfo &dir, dirs) { if (!processed.contains(dir.canonicalFilePath())) { @@ -114,7 +104,6 @@ void IconThemeConfig::initIconsThemes() } } } - QIconLoader::instance()->updateSystemTheme(); iconThemeList->insertTopLevelItems(0, items); for (int i=0; iheader()->count()-1; ++i) @@ -126,8 +115,7 @@ void IconThemeConfig::initIconsThemes() void IconThemeConfig::initControls() { - QString currentTheme = LXQt::Settings::globalSettings()->value("icon_theme").toString(); - XdgIcon::setThemeName(currentTheme); + QString currentTheme = QIcon::themeName(); QTreeWidgetItemIterator it(iconThemeList); while (*it) { if ((*it)->data(0, Qt::UserRole).toString() == currentTheme) @@ -153,12 +141,6 @@ void IconThemeConfig::iconThemeSelected(QTreeWidgetItem *item, int column) QString theme = item->data(0, Qt::UserRole).toString(); if (!theme.isEmpty()) { - XdgIcon::setThemeName(theme); - - // An hack to ensure that this widget also re loads it's own icons - // from the selected icon theme. - QIconLoader::instance()->setThemeName(QString()); - m_settings->setValue("icon_theme", theme); m_settings->sync(); } diff --git a/lxqt-config-appearance/iconthemeinfo.cpp b/lxqt-config-appearance/iconthemeinfo.cpp index b30480e..59dc4af 100644 --- a/lxqt-config-appearance/iconthemeinfo.cpp +++ b/lxqt-config-appearance/iconthemeinfo.cpp @@ -33,28 +33,26 @@ #include "iconthemeinfo.h" #include -#include +#include #include #define PREVIEW_ICON_SIZE 22 -using namespace QtXdg; - /* * This algorithm is defined by the freedesktop spec: * http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html */ -static bool directoryMatchesSize(const QIconDirInfo &dir, int iconsize) +static bool directoryMatchesSize(const XdgIconDirInfo &dir, int iconsize) { - if (dir.type == QIconDirInfo::Fixed) { + if (dir.type == XdgIconDirInfo::Fixed) { return dir.size == iconsize; - } else if (dir.type == QIconDirInfo::Scalable) { + } else if (dir.type == XdgIconDirInfo::Scalable) { return dir.size <= dir.maxSize && iconsize >= dir.minSize; - } else if (dir.type == QIconDirInfo::Threshold) { + } else if (dir.type == XdgIconDirInfo::Threshold) { return iconsize >= dir.size - dir.threshold && iconsize <= dir.size + dir.threshold; } @@ -68,12 +66,12 @@ static bool directoryMatchesSize(const QIconDirInfo &dir, int iconsize) * This algorithm is defined by the freedesktop spec: * http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html */ -static int directorySizeDistance(const QIconDirInfo &dir, int iconsize) +static int directorySizeDistance(const XdgIconDirInfo &dir, int iconsize) { - if (dir.type == QIconDirInfo::Fixed) { + if (dir.type == XdgIconDirInfo::Fixed) { return qAbs(dir.size - iconsize); - } else if (dir.type == QIconDirInfo::Scalable) { + } else if (dir.type == XdgIconDirInfo::Scalable) { if (iconsize < dir.minSize) return dir.minSize - iconsize; else if (iconsize > dir.maxSize) @@ -81,7 +79,7 @@ static int directorySizeDistance(const QIconDirInfo &dir, int iconsize) else return 0; - } else if (dir.type == QIconDirInfo::Threshold) { + } else if (dir.type == XdgIconDirInfo::Threshold) { if (iconsize < dir.size - dir.threshold) return dir.minSize - iconsize; else if (iconsize > dir.size + dir.threshold) @@ -128,39 +126,43 @@ QVector IconThemeInfo::icons(const QStringList &iconNames) const { QVector icons; - const QString currentThemeName = QIconLoader::instance()->themeName(); - QIconLoader::instance()->setThemeName(mName); + XdgIconLoader::instance()->setThemeName(mName); foreach (const QString &i, iconNames) { - QThemeIconInfo info = QIconLoader::instance()->loadIcon(i); + QThemeIconInfo info = XdgIconLoader::instance()->loadIcon(i); if (!info.entries.isEmpty()) { const int numEntries = info.entries.size(); // Search for exact matches first bool found = false; for (int i = 0; i < numEntries; ++i) { - QIconLoaderEngineEntry *entry = info.entries.at(i); + XdgIconLoaderEngineEntry *entry = info.entries.at(i); + if (directoryMatchesSize(entry->dir, PREVIEW_ICON_SIZE)) { icons.append(QIcon(entry->filename)); found = true; break; } + } if (!found) { // No exact match. Search for an approximation // Find the minimum distance icon int minimalSize = INT_MAX; - QIconLoaderEngineEntry *closestMatch = 0; + XdgIconLoaderEngineEntry *closestMatch = 0; for (int i = 0; i < numEntries; ++i) { - QIconLoaderEngineEntry *entry = info.entries.at(i); + XdgIconLoaderEngineEntry *entry = info.entries.at(i); int distance = directorySizeDistance(entry->dir, PREVIEW_ICON_SIZE); if (distance < minimalSize) { minimalSize = distance; closestMatch = entry; } } - icons.append(QIcon(closestMatch->filename)); + if (closestMatch) + icons.append(QIcon(closestMatch->filename)); + else + icons.append(QIcon()); } } else { icons.append(QIcon()); } } - QIconLoader::instance()->setThemeName(currentThemeName); + XdgIconLoader::instance()->setThemeName(QString()); return icons; } diff --git a/lxqt-config-appearance/lxqtthemeconfig.cpp b/lxqt-config-appearance/lxqtthemeconfig.cpp index ffda79d..87726db 100644 --- a/lxqt-config-appearance/lxqtthemeconfig.cpp +++ b/lxqt-config-appearance/lxqtthemeconfig.cpp @@ -30,6 +30,30 @@ #include #include #include +#include +#include + +/*! + * \brief Simple delegate to draw system background color below decoration/icon + * (needed by System theme, which uses widget background and therefore provides semi-transparent preview) + */ +class ThemeDecorator : public QItemDelegate +{ +public: + using QItemDelegate::QItemDelegate; +protected: + virtual void drawDecoration(QPainter * painter, const QStyleOptionViewItem & option, const QRect & rect, const QPixmap & pixmap) const override + { + //Note: can't use QItemDelegate::drawDecoration, because it is ignoring pixmap, + //if the icon is valid (and that is set in paint()) + if (pixmap.isNull() || !rect.isValid()) + return; + + QPoint p = QStyle::alignedRect(option.direction, option.decorationAlignment, pixmap.size(), rect).topLeft(); + painter->fillRect(QRect{p, pixmap.size()}, QApplication::palette().color(QPalette::Window)); + painter->drawPixmap(p, pixmap); + } +}; LXQtThemeConfig::LXQtThemeConfig(LXQt::Settings *settings, QWidget *parent) : QWidget(parent), @@ -37,6 +61,10 @@ LXQtThemeConfig::LXQtThemeConfig(LXQt::Settings *settings, QWidget *parent) : mSettings(settings) { ui->setupUi(this); + { + QScopedPointer p{ui->lxqtThemeList->itemDelegate()}; + ui->lxqtThemeList->setItemDelegate(new ThemeDecorator{this}); + } connect(ui->lxqtThemeList, SIGNAL(itemClicked(QTreeWidgetItem*,int)), this, SLOT(lxqtThemeSelected(QTreeWidgetItem*,int))); diff --git a/lxqt-config-appearance/main.cpp b/lxqt-config-appearance/main.cpp index 7b42609..f0623d1 100644 --- a/lxqt-config-appearance/main.cpp +++ b/lxqt-config-appearance/main.cpp @@ -26,9 +26,7 @@ * END_COMMON_COPYRIGHT_HEADER */ #include -#include -#include #include #include #include "iconthemeconfig.h" diff --git a/lxqt-config-appearance/translations/lxqt-config-appearance.ts b/lxqt-config-appearance/translations/lxqt-config-appearance.ts deleted file mode 100644 index 015ec70..0000000 --- a/lxqt-config-appearance/translations/lxqt-config-appearance.ts +++ /dev/null @@ -1,225 +0,0 @@ - - - - - FontsConfig - - - Font - - - - - Default font for user interface - - - - - Font name: - - - - - Style: - - - - - Point size: - - - - - Normal - - - - - Bold - - - - - Italic - - - - - Bold Italic - - - - - The following settings only affect newly started applications - - - - - Use antialias fonts - - - - - Font hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - Font hinting - - - - - Resolution (DPI): - - - - - Autohint - - - - - Subpixel antialiasing: - - - - - RGB - - - - - BGR - - - - - VRGB - - - - - VBGR - - - - - IconThemeConfig - - - LXQt Appearance Configuration - - - - - Icons Theme - - - - - LXQtThemeConfig - - - LXQt Theme - - - - - QObject - - - LXQt Appearance Configuration - - - - - Widget Style - - - - - Icons Theme - - - - - LXQt Theme - - - - - Font - - - - - Cursor - - - - - StyleConfig - - - Widget Style - - - - - Toolbar button style: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Default - - - - - Activate item on single click - - - - diff --git a/lxqt-config-appearance/translations/lxqt-config-appearance_ar.ts b/lxqt-config-appearance/translations/lxqt-config-appearance_ar.ts deleted file mode 100644 index d425ad4..0000000 --- a/lxqt-config-appearance/translations/lxqt-config-appearance_ar.ts +++ /dev/null @@ -1,225 +0,0 @@ - - - - - FontsConfig - - - Font - - - - - Default font for user interface - - - - - Font name: - - - - - Style: - - - - - Point size: - - - - - Normal - - - - - Bold - - - - - Italic - - - - - Bold Italic - - - - - The following settings only affect newly started applications - - - - - Use antialias fonts - - - - - Font hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - Font hinting - - - - - Resolution (DPI): - - - - - Autohint - - - - - Subpixel antialiasing: - - - - - RGB - - - - - BGR - - - - - VRGB - - - - - VBGR - - - - - IconThemeConfig - - - LXQt Appearance Configuration - تهيئة مظهر ريزر - - - - Icons Theme - نماذج اﻷيقونات - - - - LXQtThemeConfig - - - LXQt Theme - واجهة ريزر المخصَّصة - - - - QObject - - - LXQt Appearance Configuration - تهيئة مظهر ريزر - - - - Widget Style - - - - - Icons Theme - نماذج اﻷيقونات - - - - LXQt Theme - واجهة ريزر المخصَّصة - - - - Font - - - - - Cursor - - - - - StyleConfig - - - Widget Style - - - - - Toolbar button style: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Default - - - - - Activate item on single click - - - - diff --git a/lxqt-config-appearance/translations/lxqt-config-appearance_cs.ts b/lxqt-config-appearance/translations/lxqt-config-appearance_cs.ts deleted file mode 100644 index 865bbab..0000000 --- a/lxqt-config-appearance/translations/lxqt-config-appearance_cs.ts +++ /dev/null @@ -1,225 +0,0 @@ - - - - - FontsConfig - - - Font - - - - - Default font for user interface - - - - - Font name: - - - - - Style: - - - - - Point size: - - - - - Normal - - - - - Bold - - - - - Italic - - - - - Bold Italic - - - - - The following settings only affect newly started applications - - - - - Use antialias fonts - - - - - Font hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - Font hinting - - - - - Resolution (DPI): - - - - - Autohint - - - - - Subpixel antialiasing: - - - - - RGB - - - - - BGR - - - - - VRGB - - - - - VBGR - - - - - IconThemeConfig - - - LXQt Appearance Configuration - Nastavení vzhledu - - - - Icons Theme - Téma ikon - - - - LXQtThemeConfig - - - LXQt Theme - Motiv LXQt - - - - QObject - - - LXQt Appearance Configuration - Nastavení vzhledu - - - - Widget Style - - - - - Icons Theme - Téma ikon - - - - LXQt Theme - Motiv LXQt - - - - Font - - - - - Cursor - - - - - StyleConfig - - - Widget Style - - - - - Toolbar button style: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Default - - - - - Activate item on single click - - - - diff --git a/lxqt-config-appearance/translations/lxqt-config-appearance_cs_CZ.ts b/lxqt-config-appearance/translations/lxqt-config-appearance_cs_CZ.ts deleted file mode 100644 index 6132069..0000000 --- a/lxqt-config-appearance/translations/lxqt-config-appearance_cs_CZ.ts +++ /dev/null @@ -1,225 +0,0 @@ - - - - - FontsConfig - - - Font - - - - - Default font for user interface - - - - - Font name: - - - - - Style: - - - - - Point size: - - - - - Normal - - - - - Bold - - - - - Italic - - - - - Bold Italic - - - - - The following settings only affect newly started applications - - - - - Use antialias fonts - - - - - Font hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - Font hinting - - - - - Resolution (DPI): - - - - - Autohint - - - - - Subpixel antialiasing: - - - - - RGB - - - - - BGR - - - - - VRGB - - - - - VBGR - - - - - IconThemeConfig - - - LXQt Appearance Configuration - Nastavení vzhledu - - - - Icons Theme - Téma ikon - - - - LXQtThemeConfig - - - LXQt Theme - Motiv LXQt - - - - QObject - - - LXQt Appearance Configuration - Nastavení vzhledu - - - - Widget Style - - - - - Icons Theme - Téma ikon - - - - LXQt Theme - Motiv LXQt - - - - Font - - - - - Cursor - - - - - StyleConfig - - - Widget Style - - - - - Toolbar button style: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Default - - - - - Activate item on single click - - - - diff --git a/lxqt-config-appearance/translations/lxqt-config-appearance_da.ts b/lxqt-config-appearance/translations/lxqt-config-appearance_da.ts deleted file mode 100644 index 3b8bd23..0000000 --- a/lxqt-config-appearance/translations/lxqt-config-appearance_da.ts +++ /dev/null @@ -1,225 +0,0 @@ - - - - - FontsConfig - - - Font - - - - - Default font for user interface - - - - - Font name: - - - - - Style: - - - - - Point size: - - - - - Normal - - - - - Bold - - - - - Italic - - - - - Bold Italic - - - - - The following settings only affect newly started applications - - - - - Use antialias fonts - - - - - Font hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - Font hinting - - - - - Resolution (DPI): - - - - - Autohint - - - - - Subpixel antialiasing: - - - - - RGB - - - - - BGR - - - - - VRGB - - - - - VBGR - - - - - IconThemeConfig - - - LXQt Appearance Configuration - LXQt Indstillinger for Udseende - - - - Icons Theme - Ikontema - - - - LXQtThemeConfig - - - LXQt Theme - LXQt Tema - - - - QObject - - - LXQt Appearance Configuration - LXQt Indstillinger for Udseende - - - - Widget Style - - - - - Icons Theme - Ikontema - - - - LXQt Theme - LXQt Tema - - - - Font - - - - - Cursor - - - - - StyleConfig - - - Widget Style - - - - - Toolbar button style: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Default - - - - - Activate item on single click - - - - diff --git a/lxqt-config-appearance/translations/lxqt-config-appearance_da_DK.ts b/lxqt-config-appearance/translations/lxqt-config-appearance_da_DK.ts deleted file mode 100644 index c347fe3..0000000 --- a/lxqt-config-appearance/translations/lxqt-config-appearance_da_DK.ts +++ /dev/null @@ -1,225 +0,0 @@ - - - - - FontsConfig - - - Font - - - - - Default font for user interface - - - - - Font name: - - - - - Style: - - - - - Point size: - - - - - Normal - - - - - Bold - - - - - Italic - - - - - Bold Italic - - - - - The following settings only affect newly started applications - - - - - Use antialias fonts - - - - - Font hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - Font hinting - - - - - Resolution (DPI): - - - - - Autohint - - - - - Subpixel antialiasing: - - - - - RGB - - - - - BGR - - - - - VRGB - - - - - VBGR - - - - - IconThemeConfig - - - LXQt Appearance Configuration - LXQt Indstillinger for Udseende - - - - Icons Theme - Ikontema - - - - LXQtThemeConfig - - - LXQt Theme - LXQt Tema - - - - QObject - - - LXQt Appearance Configuration - LXQt Indstillinger for Udseende - - - - Widget Style - - - - - Icons Theme - Ikontema - - - - LXQt Theme - LXQt Tema - - - - Font - - - - - Cursor - - - - - StyleConfig - - - Widget Style - - - - - Toolbar button style: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Default - - - - - Activate item on single click - - - - diff --git a/lxqt-config-appearance/translations/lxqt-config-appearance_de.ts b/lxqt-config-appearance/translations/lxqt-config-appearance_de.ts deleted file mode 100644 index 724356a..0000000 --- a/lxqt-config-appearance/translations/lxqt-config-appearance_de.ts +++ /dev/null @@ -1,225 +0,0 @@ - - - - - FontsConfig - - - Font - Schriftart - - - - Default font for user interface - Standardschriftart der Bedienoberfläche - - - - Font name: - Name: - - - - Style: - Stil: - - - - Point size: - Punktgröße: - - - - Normal - Normal - - - - Bold - Fett - - - - Italic - Kursiv - - - - Bold Italic - Fett und kursiv - - - - The following settings only affect newly started applications - Folgende Einstellungen wirken nur auf neu gestartete Programme - - - - Use antialias fonts - Kantenglättung bei Schriften verwenden - - - - Font hinting style: - Hinting-Stil: - - - - - None - Keine - - - - Slight - Leicht - - - - Medium - Mittel - - - - Full - Vollständig - - - - Font hinting - Schrift-Hinting - - - - Resolution (DPI): - Auflösung (DPI): - - - - Autohint - Autohint - - - - Subpixel antialiasing: - Subpixel-Anordnung: - - - - RGB - RGB - - - - BGR - BGR - - - - VRGB - VRGB - - - - VBGR - VBGR - - - - IconThemeConfig - - - LXQt Appearance Configuration - LXQt Erscheinungsbild-Konfiguration - - - - Icons Theme - Symboldesign - - - - LXQtThemeConfig - - - LXQt Theme - LXQt-Design - - - - QObject - - - LXQt Appearance Configuration - LXQt Erscheinungsbild-Konfiguration - - - - Widget Style - Stil der Bedienelemente - - - - Icons Theme - Symboldesign - - - - LXQt Theme - LXQt-Design - - - - Font - Schriftart - - - - Cursor - Mauszeiger - - - - StyleConfig - - - Widget Style - Stil der Bedienelemente - - - - Toolbar button style: - Werkzeugleistenstil: - - - - Only display the icon - Nur Symbol - - - - Only display the text - Nur Text - - - - The text appears beside the icon - Text neben dem Symbol - - - - The text appears under the icon - Text unterhalb des Symbols - - - - Default - Default - - - - Activate item on single click - Einfacher Klick aktiviert Elemente - - - diff --git a/lxqt-config-appearance/translations/lxqt-config-appearance_el.ts b/lxqt-config-appearance/translations/lxqt-config-appearance_el.ts deleted file mode 100644 index d3f092f..0000000 --- a/lxqt-config-appearance/translations/lxqt-config-appearance_el.ts +++ /dev/null @@ -1,225 +0,0 @@ - - - - - FontsConfig - - - Font - Γραμματοσειρά - - - - Default font for user interface - Εξ ορισμού γραμματοσειρά του περιβάλλοντος χρήστη - - - - Font name: - Όνομα γραμματοσειράς: - - - - Style: - Ύφος: - - - - Point size: - Μέγεθος σημείου: - - - - Normal - Κανονικό - - - - Bold - Έντονα - - - - Italic - Πλάγια - - - - Bold Italic - Έντονα πλάγια - - - - The following settings only affect newly started applications - Οι παρακάτω ρυθμίσεις επηρεάζουν μόνο τις εφεξής εφαρμογές - - - - Use antialias fonts - Χρήση της εξομάλυνσης γραμματοσειρών - - - - Font hinting style: - Ύφος υπόδειξης των γραμματοσειρών: - - - - - None - Κανένα - - - - Slight - Ελαφρύ - - - - Medium - Μεσαίο - - - - Full - Πλήρες - - - - Font hinting - Υπόδειξη γραμματοσειρών - - - - Resolution (DPI): - Ανάλυση (DPI): - - - - Autohint - Αυτόματη υπόδειξη (autohint) - - - - Subpixel antialiasing: - Εξομάλυνση υποεικονοστοιχείων: - - - - RGB - RGB - - - - BGR - BGR - - - - VRGB - VRGB - - - - VBGR - VBGR - - - - IconThemeConfig - - - LXQt Appearance Configuration - Διαμόρφωση της εμφάνισης του LXQt - - - - Icons Theme - Θέμα εικονιδίων - - - - LXQtThemeConfig - - - LXQt Theme - Θέμα του LXQt - - - - QObject - - - LXQt Appearance Configuration - Διαμόρφωση της εμφάνισης του LXQt - - - - Widget Style - Στιλ συστατικού - - - - Icons Theme - Θέμα εικονιδίων - - - - LXQt Theme - Θέμα LXQt - - - - Font - Γραμματοσειρά - - - - Cursor - Δρομέας - - - - StyleConfig - - - Widget Style - Στιλ συστατικού - - - - Toolbar button style: - Ύφος των κουμπιών της γραμμής εργαλείων: - - - - Only display the icon - Εμφάνιση μόνον του εικονιδίου - - - - Only display the text - Εμφάνιση μόνον του κειμένου - - - - The text appears beside the icon - Το κείμενο εμφανίζεται δίπλα από το εικονίδιο - - - - The text appears under the icon - Το κείμενο εμφανίζεται κάτω από το εικονίδιο - - - - Default - Εξ ορισμού - - - - Activate item on single click - Ενεργοποίηση των αντικειμένων με μονό κλικ - - - diff --git a/lxqt-config-appearance/translations/lxqt-config-appearance_eo.ts b/lxqt-config-appearance/translations/lxqt-config-appearance_eo.ts deleted file mode 100644 index 7098e54..0000000 --- a/lxqt-config-appearance/translations/lxqt-config-appearance_eo.ts +++ /dev/null @@ -1,225 +0,0 @@ - - - - - FontsConfig - - - Font - - - - - Default font for user interface - - - - - Font name: - - - - - Style: - - - - - Point size: - - - - - Normal - - - - - Bold - - - - - Italic - - - - - Bold Italic - - - - - The following settings only affect newly started applications - - - - - Use antialias fonts - - - - - Font hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - Font hinting - - - - - Resolution (DPI): - - - - - Autohint - - - - - Subpixel antialiasing: - - - - - RGB - - - - - BGR - - - - - VRGB - - - - - VBGR - - - - - IconThemeConfig - - - LXQt Appearance Configuration - Agordoj de apero de LXQto - - - - Icons Theme - Etoso de piktogramoj - - - - LXQtThemeConfig - - - LXQt Theme - Etoso de LXQt - - - - QObject - - - LXQt Appearance Configuration - Agordoj de apero de LXQto - - - - Widget Style - - - - - Icons Theme - Etoso de piktogramoj - - - - LXQt Theme - Etoso de LXQt - - - - Font - - - - - Cursor - - - - - StyleConfig - - - Widget Style - - - - - Toolbar button style: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Default - - - - - Activate item on single click - - - - diff --git a/lxqt-config-appearance/translations/lxqt-config-appearance_es.ts b/lxqt-config-appearance/translations/lxqt-config-appearance_es.ts deleted file mode 100644 index bbae1b3..0000000 --- a/lxqt-config-appearance/translations/lxqt-config-appearance_es.ts +++ /dev/null @@ -1,225 +0,0 @@ - - - - - FontsConfig - - - Font - - - - - Default font for user interface - - - - - Font name: - - - - - Style: - - - - - Point size: - - - - - Normal - - - - - Bold - - - - - Italic - - - - - Bold Italic - - - - - The following settings only affect newly started applications - - - - - Use antialias fonts - - - - - Font hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - Font hinting - - - - - Resolution (DPI): - - - - - Autohint - - - - - Subpixel antialiasing: - - - - - RGB - - - - - BGR - - - - - VRGB - - - - - VBGR - - - - - IconThemeConfig - - - LXQt Appearance Configuration - Configuración de apariencia de LXQt - - - - Icons Theme - Tema de iconos - - - - LXQtThemeConfig - - - LXQt Theme - Tema de LXQt - - - - QObject - - - LXQt Appearance Configuration - Configuración de apariencia de LXQt - - - - Widget Style - - - - - Icons Theme - Tema de iconos - - - - LXQt Theme - Tema de LXQt - - - - Font - - - - - Cursor - - - - - StyleConfig - - - Widget Style - - - - - Toolbar button style: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Default - - - - - Activate item on single click - - - - diff --git a/lxqt-config-appearance/translations/lxqt-config-appearance_es_VE.ts b/lxqt-config-appearance/translations/lxqt-config-appearance_es_VE.ts deleted file mode 100644 index 88d31fc..0000000 --- a/lxqt-config-appearance/translations/lxqt-config-appearance_es_VE.ts +++ /dev/null @@ -1,225 +0,0 @@ - - - - - FontsConfig - - - Font - - - - - Default font for user interface - - - - - Font name: - - - - - Style: - - - - - Point size: - - - - - Normal - - - - - Bold - - - - - Italic - - - - - Bold Italic - - - - - The following settings only affect newly started applications - - - - - Use antialias fonts - - - - - Font hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - Font hinting - - - - - Resolution (DPI): - - - - - Autohint - - - - - Subpixel antialiasing: - - - - - RGB - - - - - BGR - - - - - VRGB - - - - - VBGR - - - - - IconThemeConfig - - - LXQt Appearance Configuration - Configuración de apariencia de LXQt - - - - Icons Theme - Tema de iconos - - - - LXQtThemeConfig - - - LXQt Theme - Tema LXQt - - - - QObject - - - LXQt Appearance Configuration - Configuración de apariencia de LXQt - - - - Widget Style - - - - - Icons Theme - Tema de iconos - - - - LXQt Theme - Tema LXQt - - - - Font - - - - - Cursor - - - - - StyleConfig - - - Widget Style - - - - - Toolbar button style: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Default - - - - - Activate item on single click - - - - diff --git a/lxqt-config-appearance/translations/lxqt-config-appearance_eu.ts b/lxqt-config-appearance/translations/lxqt-config-appearance_eu.ts deleted file mode 100644 index 4eb61c8..0000000 --- a/lxqt-config-appearance/translations/lxqt-config-appearance_eu.ts +++ /dev/null @@ -1,225 +0,0 @@ - - - - - FontsConfig - - - Font - - - - - Default font for user interface - - - - - Font name: - - - - - Style: - - - - - Point size: - - - - - Normal - - - - - Bold - - - - - Italic - - - - - Bold Italic - - - - - The following settings only affect newly started applications - - - - - Use antialias fonts - - - - - Font hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - Font hinting - - - - - Resolution (DPI): - - - - - Autohint - - - - - Subpixel antialiasing: - - - - - RGB - - - - - BGR - - - - - VRGB - - - - - VBGR - - - - - IconThemeConfig - - - LXQt Appearance Configuration - LXQt itxuraren konfigurazioa - - - - Icons Theme - Ikonoen gaia - - - - LXQtThemeConfig - - - LXQt Theme - LXQt gaia - - - - QObject - - - LXQt Appearance Configuration - LXQt itxuraren konfigurazioa - - - - Widget Style - - - - - Icons Theme - Ikonoen gaia - - - - LXQt Theme - LXQt gaia - - - - Font - - - - - Cursor - - - - - StyleConfig - - - Widget Style - - - - - Toolbar button style: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Default - - - - - Activate item on single click - - - - diff --git a/lxqt-config-appearance/translations/lxqt-config-appearance_fi.ts b/lxqt-config-appearance/translations/lxqt-config-appearance_fi.ts deleted file mode 100644 index 98a2440..0000000 --- a/lxqt-config-appearance/translations/lxqt-config-appearance_fi.ts +++ /dev/null @@ -1,225 +0,0 @@ - - - - - FontsConfig - - - Font - - - - - Default font for user interface - - - - - Font name: - - - - - Style: - - - - - Point size: - - - - - Normal - - - - - Bold - - - - - Italic - - - - - Bold Italic - - - - - The following settings only affect newly started applications - - - - - Use antialias fonts - - - - - Font hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - Font hinting - - - - - Resolution (DPI): - - - - - Autohint - - - - - Subpixel antialiasing: - - - - - RGB - - - - - BGR - - - - - VRGB - - - - - VBGR - - - - - IconThemeConfig - - - LXQt Appearance Configuration - LXQtin ulkoasun hallinta - - - - Icons Theme - Kuvaketeema - - - - LXQtThemeConfig - - - LXQt Theme - LXQt-teema - - - - QObject - - - LXQt Appearance Configuration - LXQtin ulkoasun hallinta - - - - Widget Style - - - - - Icons Theme - Kuvaketeema - - - - LXQt Theme - LXQt-teema - - - - Font - - - - - Cursor - - - - - StyleConfig - - - Widget Style - - - - - Toolbar button style: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Default - - - - - Activate item on single click - - - - diff --git a/lxqt-config-appearance/translations/lxqt-config-appearance_fr_FR.ts b/lxqt-config-appearance/translations/lxqt-config-appearance_fr_FR.ts deleted file mode 100644 index 9f5b669..0000000 --- a/lxqt-config-appearance/translations/lxqt-config-appearance_fr_FR.ts +++ /dev/null @@ -1,225 +0,0 @@ - - - - - FontsConfig - - - Font - - - - - Default font for user interface - - - - - Font name: - - - - - Style: - - - - - Point size: - - - - - Normal - - - - - Bold - - - - - Italic - - - - - Bold Italic - - - - - The following settings only affect newly started applications - - - - - Use antialias fonts - - - - - Font hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - Font hinting - - - - - Resolution (DPI): - - - - - Autohint - - - - - Subpixel antialiasing: - - - - - RGB - - - - - BGR - - - - - VRGB - - - - - VBGR - - - - - IconThemeConfig - - - LXQt Appearance Configuration - Configuration de l'apparence de LXQt - - - - Icons Theme - Thème d'icones - - - - LXQtThemeConfig - - - LXQt Theme - Thème de LXQt - - - - QObject - - - LXQt Appearance Configuration - Configuration de l'apparence de LXQt - - - - Widget Style - - - - - Icons Theme - Thème d'icones - - - - LXQt Theme - Thème de LXQt - - - - Font - - - - - Cursor - - - - - StyleConfig - - - Widget Style - - - - - Toolbar button style: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Default - - - - - Activate item on single click - - - - diff --git a/lxqt-config-appearance/translations/lxqt-config-appearance_hu.ts b/lxqt-config-appearance/translations/lxqt-config-appearance_hu.ts deleted file mode 100644 index 21d6d06..0000000 --- a/lxqt-config-appearance/translations/lxqt-config-appearance_hu.ts +++ /dev/null @@ -1,225 +0,0 @@ - - - - - FontsConfig - - - Font - Betűtípus - - - - Default font for user interface - Felhasználói felület alapértelmezett betűtípusa - - - - Font name: - Betűnév: - - - - Style: - Stílus: - - - - Point size: - Pontméret: - - - - Normal - Normál - - - - Bold - Kövér - - - - Italic - Dőlt - - - - Bold Italic - Dőlt kövér - - - - The following settings only affect newly started applications - Ezek a stílusok csak új indítású alkalmazásoknál láthatók - - - - Use antialias fonts - Simított betűk - - - - Font hinting style: - Betű mankó stílus: - - - - - None - Nincs - - - - Slight - Enyhe - - - - Medium - Közepes - - - - Full - Teljes - - - - Font hinting - Betű mankó - - - - Resolution (DPI): - Felbontás (DPI): - - - - Autohint - Mankó - - - - Subpixel antialiasing: - Alképpont simítás: - - - - RGB - - - - - BGR - - - - - VRGB - - - - - VBGR - - - - - IconThemeConfig - - - LXQt Appearance Configuration - Alkalmazásmenü - - - - Icons Theme - Ikontéma - - - - LXQtThemeConfig - - - LXQt Theme - LXQt téma - - - - QObject - - - LXQt Appearance Configuration - LXQt megjelenésbeállító - - - - Widget Style - Bigyótéma - - - - Icons Theme - Ikontéma - - - - LXQt Theme - LXQt téma - - - - Font - Betű - - - - Cursor - Kurzor - - - - StyleConfig - - - Widget Style - Bigyótéma - - - - Toolbar button style: - Eszközsáv stílus: - - - - Only display the icon - Csak ikon - - - - Only display the text - Csak szöveg - - - - The text appears beside the icon - Szöveg az ikon mellett - - - - The text appears under the icon - Szöveg az ikon alatt - - - - Default - Alapértelmezett - - - - Activate item on single click - Egykattintásos mód - - - diff --git a/lxqt-config-appearance/translations/lxqt-config-appearance_hu_HU.ts b/lxqt-config-appearance/translations/lxqt-config-appearance_hu_HU.ts deleted file mode 100644 index 36349ad..0000000 --- a/lxqt-config-appearance/translations/lxqt-config-appearance_hu_HU.ts +++ /dev/null @@ -1,236 +0,0 @@ - - - - - FontsConfig - - - Font - Betűtípus - - - - Default font for user interface - Felhasználói felület alapértelmezett betűtípusa - - - - Font name: - Betűnév: - - - - Style: - Stílus: - - - - Point size: - Pontméret: - - - - Normal - Normál - - - - Bold - Kövér - - - - Italic - Dőlt - - - - Bold Italic - Dőlt kövér - - - - The following settings only affect newly started applications - Ezek a stílusok csak új indítású alkalmazásoknál láthatók - - - - Use antialias fonts - Simított betűk - - - - Font hinting style: - Betű mankó stílus: - - - - - None - Nincs - - - - Slight - Enyhe - - - - Medium - Közepes - - - - Full - Teljes - - - - Font hinting - Betű mankó - - - - Resolution (DPI): - Felbontás (DPI): - - - - Autohint - Mankó - - - - Subpixel antialiasing: - Alképpont simítás: - - - - RGB - - - - - BGR - - - - - VRGB - - - - - VBGR - - - - - IconThemeConfig - - - LXQt Appearance Configuration - LXQt megjelenésbeállító - - - - Icons Theme - Ikontémák - - - - LXQtThemeConfig - - - LXQt Theme - LXQt téma - - - - MainWindow - - LXQt Appearance Configuration - LXQt megjelenésbeállító - - - Icons Theme - Ikontémák - - - - QObject - - - LXQt Appearance Configuration - LXQt megjelenésbeállító - - - - Widget Style - Bigyótéma - - - - Icons Theme - Ikontémák - - - - LXQt Theme - LXQT téma - - - - Font - Betű - - - - Cursor - Kurzor - - - - StyleConfig - - - Widget Style - Bigyótéma - - - - Toolbar button style: - Eszközsáv stílus: - - - - Only display the icon - Csak ikon - - - - Only display the text - Csak szöveg - - - - The text appears beside the icon - Szöveg az ikon mellett - - - - The text appears under the icon - Szöveg az ikon alatt - - - - Default - Alapértelmezett - - - - Activate item on single click - Egykattintásos mód - - - diff --git a/lxqt-config-appearance/translations/lxqt-config-appearance_ia.ts b/lxqt-config-appearance/translations/lxqt-config-appearance_ia.ts deleted file mode 100644 index 776fd96..0000000 --- a/lxqt-config-appearance/translations/lxqt-config-appearance_ia.ts +++ /dev/null @@ -1,225 +0,0 @@ - - - - - FontsConfig - - - Font - - - - - Default font for user interface - - - - - Font name: - - - - - Style: - - - - - Point size: - - - - - Normal - - - - - Bold - - - - - Italic - - - - - Bold Italic - - - - - The following settings only affect newly started applications - - - - - Use antialias fonts - - - - - Font hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - Font hinting - - - - - Resolution (DPI): - - - - - Autohint - - - - - Subpixel antialiasing: - - - - - RGB - - - - - BGR - - - - - VRGB - - - - - VBGR - - - - - IconThemeConfig - - - LXQt Appearance Configuration - - - - - Icons Theme - - - - - LXQtThemeConfig - - - LXQt Theme - - - - - QObject - - - LXQt Appearance Configuration - - - - - Widget Style - - - - - Icons Theme - - - - - LXQt Theme - - - - - Font - - - - - Cursor - - - - - StyleConfig - - - Widget Style - - - - - Toolbar button style: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Default - - - - - Activate item on single click - - - - diff --git a/lxqt-config-appearance/translations/lxqt-config-appearance_id_ID.ts b/lxqt-config-appearance/translations/lxqt-config-appearance_id_ID.ts deleted file mode 100644 index 4594b4c..0000000 --- a/lxqt-config-appearance/translations/lxqt-config-appearance_id_ID.ts +++ /dev/null @@ -1,225 +0,0 @@ - - - - - FontsConfig - - - Font - - - - - Default font for user interface - - - - - Font name: - - - - - Style: - - - - - Point size: - - - - - Normal - - - - - Bold - - - - - Italic - - - - - Bold Italic - - - - - The following settings only affect newly started applications - - - - - Use antialias fonts - - - - - Font hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - Font hinting - - - - - Resolution (DPI): - - - - - Autohint - - - - - Subpixel antialiasing: - - - - - RGB - - - - - BGR - - - - - VRGB - - - - - VBGR - - - - - IconThemeConfig - - - LXQt Appearance Configuration - Konfigurasi Penampilan LXQt - - - - Icons Theme - Tema Ikon - - - - LXQtThemeConfig - - - LXQt Theme - - - - - QObject - - - LXQt Appearance Configuration - Konfigurasi Penampilan LXQt - - - - Widget Style - - - - - Icons Theme - Tema Ikon - - - - LXQt Theme - - - - - Font - - - - - Cursor - - - - - StyleConfig - - - Widget Style - - - - - Toolbar button style: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Default - - - - - Activate item on single click - - - - diff --git a/lxqt-config-appearance/translations/lxqt-config-appearance_it.ts b/lxqt-config-appearance/translations/lxqt-config-appearance_it.ts deleted file mode 100644 index efd963a..0000000 --- a/lxqt-config-appearance/translations/lxqt-config-appearance_it.ts +++ /dev/null @@ -1,226 +0,0 @@ - - - - - FontsConfig - - - Font - Caratteri - - - - Default font for user interface - Carattere generale - - - - Font name: - Carattere: - - - - Style: - Stile: - - - - Point size: - Dimensione: - - - - Normal - Normale - - - - Bold - Grassetto - - - - Italic - Corsivo - - - - Bold Italic - Grassetto corsivo - - - - The following settings only affect newly started applications - Le impostazioni riguardano solo le applicazioni avviate nuovamente - - - - Use antialias fonts - Utilizza anti-aliasing per i caratteri - - - - Font hinting style: - Stile di hinting - - - - - None - Nessuno - - - - Slight - Leggero - - - - Medium - Medio - - - - Full - Forte - - - - Font hinting - Hinting caratteri - - - - Resolution (DPI): - Resoluzione (DPI): - - - - Autohint - Hinting automatico - - - - Subpixel antialiasing: - no idea how to translate that - - - - - RGB - - - - - BGR - - - - - VRGB - - - - - VBGR - - - - - IconThemeConfig - - - LXQt Appearance Configuration - Centro di Configurazione LXQt - - - - Icons Theme - Temi delle icone - - - - LXQtThemeConfig - - - LXQt Theme - Tema di LXQt - - - - QObject - - - LXQt Appearance Configuration - Centro di Configurazione LXQt - - - - Widget Style - Stile degli elementi - - - - Icons Theme - Tema delle icone - - - - LXQt Theme - Tema di LXQt - - - - Font - Caratteri - - - - Cursor - Cursore - - - - StyleConfig - - - Widget Style - Stile degli elementi - - - - Toolbar button style: - Stile della barra delle applicazioni: - - - - Only display the icon - Mostra solo icone - - - - Only display the text - Mostra solo testo - - - - The text appears beside the icon - Testo accanto le icone - - - - The text appears under the icon - Testo sotto le icone - - - - Default - - - - - Activate item on single click - Attiva elementi con clic singolo - - - diff --git a/lxqt-config-appearance/translations/lxqt-config-appearance_ja.ts b/lxqt-config-appearance/translations/lxqt-config-appearance_ja.ts deleted file mode 100644 index 616d9dc..0000000 --- a/lxqt-config-appearance/translations/lxqt-config-appearance_ja.ts +++ /dev/null @@ -1,225 +0,0 @@ - - - - - FontsConfig - - - Font - フォント - - - - Default font for user interface - ユーザーインターフェースのデフォルトのフォント - - - - Font name: - フォント名: - - - - Style: - スタイル: - - - - Point size: - ポイントサイズ: - - - - Normal - ノーマル - - - - Bold - 太字 - - - - Italic - 斜体 - - - - Bold Italic - 太字・斜体 - - - - The following settings only affect newly started applications - 以下の設定は、これから新たに実行されたアプリケーションに適用されます - - - - Use antialias fonts - アンチエイリアスされたフォントを用いる - - - - Font hinting style: - フォントのヒンティング形式: - - - - - None - なし - - - - Slight - 軽微 - - - - Medium - 中間 - - - - Full - 完全 - - - - Font hinting - フォントのヒンティング - - - - Resolution (DPI): - 解像度 (DPI): - - - - Autohint - 自動ヒンティング - - - - Subpixel antialiasing: - サブピクセルアンチエイリアス: - - - - RGB - RGB - - - - BGR - BGR - - - - VRGB - VRGB - - - - VBGR - VBGR - - - - IconThemeConfig - - - LXQt Appearance Configuration - LXQt外観の設定 - - - - Icons Theme - アイコンテーマ - - - - LXQtThemeConfig - - - LXQt Theme - LXQtテーマ - - - - QObject - - - LXQt Appearance Configuration - LXQt外観の設定 - - - - Widget Style - ウィジェットのスタイル - - - - Icons Theme - アイコンテーマ - - - - LXQt Theme - LXQtテーマ - - - - Font - フォント - - - - Cursor - カーソル - - - - StyleConfig - - - Widget Style - ウィジェットのスタイル - - - - Toolbar button style: - ツールバーボタンのスタイル: - - - - Only display the icon - アイコンのみを表示 - - - - Only display the text - テキストのみを表示 - - - - The text appears beside the icon - アイコンの横にテキスト - - - - The text appears under the icon - アイコンの下にテキスト - - - - Default - デフォルト - - - - Activate item on single click - シングルクリックでアイテムを有効にする - - - diff --git a/lxqt-config-appearance/translations/lxqt-config-appearance_ko.ts b/lxqt-config-appearance/translations/lxqt-config-appearance_ko.ts deleted file mode 100644 index e3ffdf8..0000000 --- a/lxqt-config-appearance/translations/lxqt-config-appearance_ko.ts +++ /dev/null @@ -1,225 +0,0 @@ - - - - - FontsConfig - - - Font - - - - - Default font for user interface - - - - - Font name: - - - - - Style: - - - - - Point size: - - - - - Normal - - - - - Bold - - - - - Italic - - - - - Bold Italic - - - - - The following settings only affect newly started applications - - - - - Use antialias fonts - - - - - Font hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - Font hinting - - - - - Resolution (DPI): - - - - - Autohint - - - - - Subpixel antialiasing: - - - - - RGB - - - - - BGR - - - - - VRGB - - - - - VBGR - - - - - IconThemeConfig - - - LXQt Appearance Configuration - - - - - Icons Theme - - - - - LXQtThemeConfig - - - LXQt Theme - - - - - QObject - - - LXQt Appearance Configuration - - - - - Widget Style - - - - - Icons Theme - - - - - LXQt Theme - - - - - Font - - - - - Cursor - - - - - StyleConfig - - - Widget Style - - - - - Toolbar button style: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Default - - - - - Activate item on single click - - - - diff --git a/lxqt-config-appearance/translations/lxqt-config-appearance_lt.ts b/lxqt-config-appearance/translations/lxqt-config-appearance_lt.ts deleted file mode 100644 index e654729..0000000 --- a/lxqt-config-appearance/translations/lxqt-config-appearance_lt.ts +++ /dev/null @@ -1,225 +0,0 @@ - - - - - FontsConfig - - - Font - - - - - Default font for user interface - - - - - Font name: - - - - - Style: - - - - - Point size: - - - - - Normal - - - - - Bold - - - - - Italic - - - - - Bold Italic - - - - - The following settings only affect newly started applications - - - - - Use antialias fonts - - - - - Font hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - Font hinting - - - - - Resolution (DPI): - - - - - Autohint - - - - - Subpixel antialiasing: - - - - - RGB - - - - - BGR - - - - - VRGB - - - - - VBGR - - - - - IconThemeConfig - - - LXQt Appearance Configuration - LXQt išvaizdos nustatymai - - - - Icons Theme - Piktogramų tema - - - - LXQtThemeConfig - - - LXQt Theme - LXQt apipavidalinimas - - - - QObject - - - LXQt Appearance Configuration - LXQt išvaizdos nustatymai - - - - Widget Style - - - - - Icons Theme - Piktogramų tema - - - - LXQt Theme - LXQt apipavidalinimas - - - - Font - - - - - Cursor - - - - - StyleConfig - - - Widget Style - - - - - Toolbar button style: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Default - - - - - Activate item on single click - - - - diff --git a/lxqt-config-appearance/translations/lxqt-config-appearance_nl.ts b/lxqt-config-appearance/translations/lxqt-config-appearance_nl.ts deleted file mode 100644 index d8a2db5..0000000 --- a/lxqt-config-appearance/translations/lxqt-config-appearance_nl.ts +++ /dev/null @@ -1,225 +0,0 @@ - - - - - FontsConfig - - - Font - - - - - Default font for user interface - - - - - Font name: - - - - - Style: - - - - - Point size: - - - - - Normal - - - - - Bold - - - - - Italic - - - - - Bold Italic - - - - - The following settings only affect newly started applications - - - - - Use antialias fonts - - - - - Font hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - Font hinting - - - - - Resolution (DPI): - - - - - Autohint - - - - - Subpixel antialiasing: - - - - - RGB - - - - - BGR - - - - - VRGB - - - - - VBGR - - - - - IconThemeConfig - - - LXQt Appearance Configuration - LXQt Uiterlijk Configuratie - - - - Icons Theme - Pictogram Thema - - - - LXQtThemeConfig - - - LXQt Theme - LXQt Thema - - - - QObject - - - LXQt Appearance Configuration - LXQt Uiterlijk Configuratie - - - - Widget Style - - - - - Icons Theme - Pictogram Thema - - - - LXQt Theme - LXQt Thema - - - - Font - - - - - Cursor - - - - - StyleConfig - - - Widget Style - - - - - Toolbar button style: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Default - - - - - Activate item on single click - - - - diff --git a/lxqt-config-appearance/translations/lxqt-config-appearance_pl.ts b/lxqt-config-appearance/translations/lxqt-config-appearance_pl.ts deleted file mode 100644 index 1ca19a5..0000000 --- a/lxqt-config-appearance/translations/lxqt-config-appearance_pl.ts +++ /dev/null @@ -1,225 +0,0 @@ - - - - - FontsConfig - - - Font - - - - - Default font for user interface - - - - - Font name: - - - - - Style: - - - - - Point size: - - - - - Normal - - - - - Bold - - - - - Italic - - - - - Bold Italic - - - - - The following settings only affect newly started applications - - - - - Use antialias fonts - - - - - Font hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - Font hinting - - - - - Resolution (DPI): - - - - - Autohint - - - - - Subpixel antialiasing: - - - - - RGB - - - - - BGR - - - - - VRGB - - - - - VBGR - - - - - IconThemeConfig - - - LXQt Appearance Configuration - Menu - - - - Icons Theme - - - - - LXQtThemeConfig - - - LXQt Theme - - - - - QObject - - - LXQt Appearance Configuration - Menu - - - - Widget Style - - - - - Icons Theme - - - - - LXQt Theme - - - - - Font - - - - - Cursor - - - - - StyleConfig - - - Widget Style - - - - - Toolbar button style: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Default - - - - - Activate item on single click - - - - diff --git a/lxqt-config-appearance/translations/lxqt-config-appearance_pl_PL.ts b/lxqt-config-appearance/translations/lxqt-config-appearance_pl_PL.ts deleted file mode 100644 index aced0c8..0000000 --- a/lxqt-config-appearance/translations/lxqt-config-appearance_pl_PL.ts +++ /dev/null @@ -1,225 +0,0 @@ - - - - - FontsConfig - - - Font - Czcionka - - - - Default font for user interface - Domyślna czcionka dla interfejsu użytkownika - - - - Font name: - Czcionka: - - - - Style: - Styl: - - - - Point size: - Rozmiar: - - - - Normal - Normalna - - - - Bold - Pogrubiona - - - - Italic - Kursywa - - - - Bold Italic - Pogrubiona kursywa - - - - The following settings only affect newly started applications - Poniższe ustawienia dotyczą tylko nowo otwartych aplikacji - - - - Use antialias fonts - Wygładzanie czcionek (antyaliasing) - - - - Font hinting style: - Styl hintingu: - - - - - None - Brak - - - - Slight - Delikatny - - - - Medium - Średni - - - - Full - Pełny - - - - Font hinting - Hinting czcionek - - - - Resolution (DPI): - Rozdzielczość (DPI): - - - - Autohint - Autohinting - - - - Subpixel antialiasing: - Antyaliasing subpikselowy: - - - - RGB - RGB - - - - BGR - BGR - - - - VRGB - VRGB - - - - VBGR - VBGR - - - - IconThemeConfig - - - LXQt Appearance Configuration - Konfiguracja wyglądu LXQt - - - - Icons Theme - Motyw ikon - - - - LXQtThemeConfig - - - LXQt Theme - Motyw LXQt - - - - QObject - - - LXQt Appearance Configuration - Konfiguracja wyglądu LXQt - - - - Widget Style - Widżety - - - - Icons Theme - Motyw ikon - - - - LXQt Theme - Motyw LXQt - - - - Font - Czcionka - - - - Cursor - Kursor - - - - StyleConfig - - - Widget Style - Styl widżetów - - - - Toolbar button style: - Styl paska narzędziowego: - - - - Only display the icon - Tylko ikony - - - - Only display the text - Tylko tekst - - - - The text appears beside the icon - Tekst obok ikon - - - - The text appears under the icon - Tekst poniżej ikon - - - - Default - Domyśłny - - - - Activate item on single click - Aktywacja pojedyńczym kliknięciem - - - diff --git a/lxqt-config-appearance/translations/lxqt-config-appearance_pt.ts b/lxqt-config-appearance/translations/lxqt-config-appearance_pt.ts deleted file mode 100644 index cf36627..0000000 --- a/lxqt-config-appearance/translations/lxqt-config-appearance_pt.ts +++ /dev/null @@ -1,225 +0,0 @@ - - - - - FontsConfig - - - Font - - - - - Default font for user interface - - - - - Font name: - - - - - Style: - - - - - Point size: - - - - - Normal - - - - - Bold - - - - - Italic - - - - - Bold Italic - - - - - The following settings only affect newly started applications - - - - - Use antialias fonts - - - - - Font hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - Font hinting - - - - - Resolution (DPI): - - - - - Autohint - - - - - Subpixel antialiasing: - - - - - RGB - - - - - BGR - - - - - VRGB - - - - - VBGR - - - - - IconThemeConfig - - - LXQt Appearance Configuration - Configuração da aparência do LXQt - - - - Icons Theme - Tema de ícones - - - - LXQtThemeConfig - - - LXQt Theme - Tema LXQt - - - - QObject - - - LXQt Appearance Configuration - Configuração da aparência do LXQt - - - - Widget Style - - - - - Icons Theme - Tema de ícones - - - - LXQt Theme - Tema LXQt - - - - Font - - - - - Cursor - - - - - StyleConfig - - - Widget Style - - - - - Toolbar button style: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Default - - - - - Activate item on single click - - - - diff --git a/lxqt-config-appearance/translations/lxqt-config-appearance_pt_BR.ts b/lxqt-config-appearance/translations/lxqt-config-appearance_pt_BR.ts deleted file mode 100644 index 620b534..0000000 --- a/lxqt-config-appearance/translations/lxqt-config-appearance_pt_BR.ts +++ /dev/null @@ -1,225 +0,0 @@ - - - - - FontsConfig - - - Font - - - - - Default font for user interface - - - - - Font name: - - - - - Style: - - - - - Point size: - - - - - Normal - - - - - Bold - - - - - Italic - - - - - Bold Italic - - - - - The following settings only affect newly started applications - - - - - Use antialias fonts - - - - - Font hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - Font hinting - - - - - Resolution (DPI): - - - - - Autohint - - - - - Subpixel antialiasing: - - - - - RGB - - - - - BGR - - - - - VRGB - - - - - VBGR - - - - - IconThemeConfig - - - LXQt Appearance Configuration - Configuração da aparência do LXQt - - - - Icons Theme - Tema de ícones - - - - LXQtThemeConfig - - - LXQt Theme - Tema do LXQt - - - - QObject - - - LXQt Appearance Configuration - Configuração da aparência do LXQt - - - - Widget Style - - - - - Icons Theme - Tema de ícones - - - - LXQt Theme - Tema do LXQt - - - - Font - - - - - Cursor - - - - - StyleConfig - - - Widget Style - - - - - Toolbar button style: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Default - - - - - Activate item on single click - - - - diff --git a/lxqt-config-appearance/translations/lxqt-config-appearance_ro_RO.ts b/lxqt-config-appearance/translations/lxqt-config-appearance_ro_RO.ts deleted file mode 100644 index 150879e..0000000 --- a/lxqt-config-appearance/translations/lxqt-config-appearance_ro_RO.ts +++ /dev/null @@ -1,225 +0,0 @@ - - - - - FontsConfig - - - Font - - - - - Default font for user interface - - - - - Font name: - - - - - Style: - - - - - Point size: - - - - - Normal - - - - - Bold - - - - - Italic - - - - - Bold Italic - - - - - The following settings only affect newly started applications - - - - - Use antialias fonts - - - - - Font hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - Font hinting - - - - - Resolution (DPI): - - - - - Autohint - - - - - Subpixel antialiasing: - - - - - RGB - - - - - BGR - - - - - VRGB - - - - - VBGR - - - - - IconThemeConfig - - - LXQt Appearance Configuration - Părăsește - - - - Icons Theme - Temă pictograme - - - - LXQtThemeConfig - - - LXQt Theme - Temă LXQt - - - - QObject - - - LXQt Appearance Configuration - Părăsește - - - - Widget Style - - - - - Icons Theme - Temă pictograme - - - - LXQt Theme - Temă LXQt - - - - Font - - - - - Cursor - - - - - StyleConfig - - - Widget Style - - - - - Toolbar button style: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Default - - - - - Activate item on single click - - - - diff --git a/lxqt-config-appearance/translations/lxqt-config-appearance_ru.ts b/lxqt-config-appearance/translations/lxqt-config-appearance_ru.ts deleted file mode 100644 index a573297..0000000 --- a/lxqt-config-appearance/translations/lxqt-config-appearance_ru.ts +++ /dev/null @@ -1,225 +0,0 @@ - - - - - FontsConfig - - - Font - Шрифт - - - - Default font for user interface - Шрифт по умолчанию для пользовательского интерфейса - - - - Font name: - Название шрифта: - - - - Style: - Стиль: - - - - Point size: - Кегль: - - - - Normal - Нормальный - - - - Bold - Полужирный - - - - Italic - Наклонный - - - - Bold Italic - Полужирный наклонный - - - - The following settings only affect newly started applications - Следующие настройки подействуют только на вновь запущенные приложения - - - - Use antialias fonts - Использовать сглаживание шрифтов - - - - Font hinting style: - Стиль хинтинга шрифта: - - - - - None - Нет - - - - Slight - Слабое - - - - Medium - Среднее - - - - Full - Полное - - - - Font hinting - Хинтинг шрифта - - - - Resolution (DPI): - Разрешение (DPI): - - - - Autohint - Автохинтинг - - - - Subpixel antialiasing: - Субпиксельное сглаживание: - - - - RGB - RGB - - - - BGR - BGR - - - - VRGB - VRGB - - - - VBGR - VBGR - - - - IconThemeConfig - - - LXQt Appearance Configuration - Меню программ - - - - Icons Theme - Иконки темы - - - - LXQtThemeConfig - - - LXQt Theme - Тема LXQt - - - - QObject - - - LXQt Appearance Configuration - Настройка внешнего вида LXQt - - - - Icons Theme - Тема иконок - - - - LXQt Theme - LXQt темы - - - - Widget Style - Стиль виджетов - - - - Font - Шрифт - - - - Cursor - Курсор - - - - StyleConfig - - - Widget Style - Стиль виджетов - - - - Toolbar button style: - Стиль кнопок панели: - - - - Only display the icon - Показывать только иконку - - - - Only display the text - Показывать только текст - - - - The text appears beside the icon - Текст появляется сбоку от иконки - - - - The text appears under the icon - Текст появляется под иконкой - - - - Default - По умолчанию - - - - Activate item on single click - Активировать элемент по одиночному щелчку мыши - - - diff --git a/lxqt-config-appearance/translations/lxqt-config-appearance_ru_RU.desktop b/lxqt-config-appearance/translations/lxqt-config-appearance_ru_RU.desktop deleted file mode 100644 index 4a9c58a..0000000 --- a/lxqt-config-appearance/translations/lxqt-config-appearance_ru_RU.desktop +++ /dev/null @@ -1,4 +0,0 @@ -# Translations -Comment[ru_RU]=Настройки внешнего вида LXQt -GenericName[ru_RU]=Настройка внешнего вида -Name[ru_RU]=Внешний вид \ No newline at end of file diff --git a/lxqt-config-appearance/translations/lxqt-config-appearance_ru_RU.ts b/lxqt-config-appearance/translations/lxqt-config-appearance_ru_RU.ts deleted file mode 100644 index a573297..0000000 --- a/lxqt-config-appearance/translations/lxqt-config-appearance_ru_RU.ts +++ /dev/null @@ -1,225 +0,0 @@ - - - - - FontsConfig - - - Font - Шрифт - - - - Default font for user interface - Шрифт по умолчанию для пользовательского интерфейса - - - - Font name: - Название шрифта: - - - - Style: - Стиль: - - - - Point size: - Кегль: - - - - Normal - Нормальный - - - - Bold - Полужирный - - - - Italic - Наклонный - - - - Bold Italic - Полужирный наклонный - - - - The following settings only affect newly started applications - Следующие настройки подействуют только на вновь запущенные приложения - - - - Use antialias fonts - Использовать сглаживание шрифтов - - - - Font hinting style: - Стиль хинтинга шрифта: - - - - - None - Нет - - - - Slight - Слабое - - - - Medium - Среднее - - - - Full - Полное - - - - Font hinting - Хинтинг шрифта - - - - Resolution (DPI): - Разрешение (DPI): - - - - Autohint - Автохинтинг - - - - Subpixel antialiasing: - Субпиксельное сглаживание: - - - - RGB - RGB - - - - BGR - BGR - - - - VRGB - VRGB - - - - VBGR - VBGR - - - - IconThemeConfig - - - LXQt Appearance Configuration - Меню программ - - - - Icons Theme - Иконки темы - - - - LXQtThemeConfig - - - LXQt Theme - Тема LXQt - - - - QObject - - - LXQt Appearance Configuration - Настройка внешнего вида LXQt - - - - Icons Theme - Тема иконок - - - - LXQt Theme - LXQt темы - - - - Widget Style - Стиль виджетов - - - - Font - Шрифт - - - - Cursor - Курсор - - - - StyleConfig - - - Widget Style - Стиль виджетов - - - - Toolbar button style: - Стиль кнопок панели: - - - - Only display the icon - Показывать только иконку - - - - Only display the text - Показывать только текст - - - - The text appears beside the icon - Текст появляется сбоку от иконки - - - - The text appears under the icon - Текст появляется под иконкой - - - - Default - По умолчанию - - - - Activate item on single click - Активировать элемент по одиночному щелчку мыши - - - diff --git a/lxqt-config-appearance/translations/lxqt-config-appearance_sk_SK.ts b/lxqt-config-appearance/translations/lxqt-config-appearance_sk_SK.ts deleted file mode 100644 index d06da10..0000000 --- a/lxqt-config-appearance/translations/lxqt-config-appearance_sk_SK.ts +++ /dev/null @@ -1,236 +0,0 @@ - - - - - FontsConfig - - - Font - - - - - Default font for user interface - - - - - Font name: - - - - - Style: - - - - - Point size: - - - - - Normal - - - - - Bold - - - - - Italic - - - - - Bold Italic - - - - - The following settings only affect newly started applications - - - - - Use antialias fonts - - - - - Font hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - Font hinting - - - - - Resolution (DPI): - - - - - Autohint - - - - - Subpixel antialiasing: - - - - - RGB - - - - - BGR - - - - - VRGB - - - - - VBGR - - - - - IconThemeConfig - - - LXQt Appearance Configuration - Nastavenie vzhľadu prostredia LXQt - - - - Icons Theme - Téma ikon - - - - LXQtThemeConfig - - - LXQt Theme - - - - - MainWindow - - LXQt Appearance Configuration - Nastavenie vzhľadu prostredia LXQt - - - Icons Theme - Téma ikon - - - - QObject - - - LXQt Appearance Configuration - Nastavenie vzhľadu prostredia LXQt - - - - Widget Style - - - - - Icons Theme - Téma ikon - - - - LXQt Theme - - - - - Font - - - - - Cursor - - - - - StyleConfig - - - Widget Style - - - - - Toolbar button style: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Default - - - - - Activate item on single click - - - - diff --git a/lxqt-config-appearance/translations/lxqt-config-appearance_sl.ts b/lxqt-config-appearance/translations/lxqt-config-appearance_sl.ts deleted file mode 100644 index f2a0f80..0000000 --- a/lxqt-config-appearance/translations/lxqt-config-appearance_sl.ts +++ /dev/null @@ -1,225 +0,0 @@ - - - - - FontsConfig - - - Font - - - - - Default font for user interface - - - - - Font name: - - - - - Style: - - - - - Point size: - - - - - Normal - - - - - Bold - - - - - Italic - - - - - Bold Italic - - - - - The following settings only affect newly started applications - - - - - Use antialias fonts - - - - - Font hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - Font hinting - - - - - Resolution (DPI): - - - - - Autohint - - - - - Subpixel antialiasing: - - - - - RGB - - - - - BGR - - - - - VRGB - - - - - VBGR - - - - - IconThemeConfig - - - LXQt Appearance Configuration - Nastavitev videza za LXQt - - - - Icons Theme - Tema ikon - - - - LXQtThemeConfig - - - LXQt Theme - Tema za LXQt - - - - QObject - - - LXQt Appearance Configuration - Nastavitev videza za LXQt - - - - Widget Style - - - - - Icons Theme - Tema ikon - - - - LXQt Theme - Tema za LXQt - - - - Font - - - - - Cursor - - - - - StyleConfig - - - Widget Style - - - - - Toolbar button style: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Default - - - - - Activate item on single click - - - - diff --git a/lxqt-config-appearance/translations/lxqt-config-appearance_sr@latin.ts b/lxqt-config-appearance/translations/lxqt-config-appearance_sr@latin.ts deleted file mode 100644 index 0bc7384..0000000 --- a/lxqt-config-appearance/translations/lxqt-config-appearance_sr@latin.ts +++ /dev/null @@ -1,225 +0,0 @@ - - - - - FontsConfig - - - Font - - - - - Default font for user interface - - - - - Font name: - - - - - Style: - - - - - Point size: - - - - - Normal - - - - - Bold - - - - - Italic - - - - - Bold Italic - - - - - The following settings only affect newly started applications - - - - - Use antialias fonts - - - - - Font hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - Font hinting - - - - - Resolution (DPI): - - - - - Autohint - - - - - Subpixel antialiasing: - - - - - RGB - - - - - BGR - - - - - VRGB - - - - - VBGR - - - - - IconThemeConfig - - - LXQt Appearance Configuration - Automatsko suspendovanje - - - - Icons Theme - - - - - LXQtThemeConfig - - - LXQt Theme - - - - - QObject - - - LXQt Appearance Configuration - Automatsko suspendovanje - - - - Widget Style - - - - - Icons Theme - - - - - LXQt Theme - - - - - Font - - - - - Cursor - - - - - StyleConfig - - - Widget Style - - - - - Toolbar button style: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Default - - - - - Activate item on single click - - - - diff --git a/lxqt-config-appearance/translations/lxqt-config-appearance_sr_BA.ts b/lxqt-config-appearance/translations/lxqt-config-appearance_sr_BA.ts deleted file mode 100644 index 09800d1..0000000 --- a/lxqt-config-appearance/translations/lxqt-config-appearance_sr_BA.ts +++ /dev/null @@ -1,236 +0,0 @@ - - - - - FontsConfig - - - Font - - - - - Default font for user interface - - - - - Font name: - - - - - Style: - - - - - Point size: - - - - - Normal - - - - - Bold - - - - - Italic - - - - - Bold Italic - - - - - The following settings only affect newly started applications - - - - - Use antialias fonts - - - - - Font hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - Font hinting - - - - - Resolution (DPI): - - - - - Autohint - - - - - Subpixel antialiasing: - - - - - RGB - - - - - BGR - - - - - VRGB - - - - - VBGR - - - - - IconThemeConfig - - - LXQt Appearance Configuration - Подешавање изгледа Рејзора - - - - Icons Theme - Тема икона - - - - LXQtThemeConfig - - - LXQt Theme - - - - - MainWindow - - LXQt Appearance Configuration - Подешавање изгледа Рејзора - - - Icons Theme - Тема икона - - - - QObject - - - LXQt Appearance Configuration - Подешавање изгледа Рејзора - - - - Widget Style - - - - - Icons Theme - Тема икона - - - - LXQt Theme - - - - - Font - - - - - Cursor - - - - - StyleConfig - - - Widget Style - - - - - Toolbar button style: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Default - - - - - Activate item on single click - - - - diff --git a/lxqt-config-appearance/translations/lxqt-config-appearance_sr_RS.ts b/lxqt-config-appearance/translations/lxqt-config-appearance_sr_RS.ts deleted file mode 100644 index f43e97a..0000000 --- a/lxqt-config-appearance/translations/lxqt-config-appearance_sr_RS.ts +++ /dev/null @@ -1,236 +0,0 @@ - - - - - FontsConfig - - - Font - - - - - Default font for user interface - - - - - Font name: - - - - - Style: - - - - - Point size: - - - - - Normal - - - - - Bold - - - - - Italic - - - - - Bold Italic - - - - - The following settings only affect newly started applications - - - - - Use antialias fonts - - - - - Font hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - Font hinting - - - - - Resolution (DPI): - - - - - Autohint - - - - - Subpixel antialiasing: - - - - - RGB - - - - - BGR - - - - - VRGB - - - - - VBGR - - - - - IconThemeConfig - - - LXQt Appearance Configuration - Подешавање изгледа Рејзора - - - - Icons Theme - Тема икона - - - - LXQtThemeConfig - - - LXQt Theme - - - - - MainWindow - - LXQt Appearance Configuration - Подешавање изгледа Рејзора - - - Icons Theme - Тема икона - - - - QObject - - - LXQt Appearance Configuration - Подешавање изгледа Рејзора - - - - Widget Style - - - - - Icons Theme - Тема икона - - - - LXQt Theme - - - - - Font - - - - - Cursor - - - - - StyleConfig - - - Widget Style - - - - - Toolbar button style: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Default - - - - - Activate item on single click - - - - diff --git a/lxqt-config-appearance/translations/lxqt-config-appearance_th_TH.ts b/lxqt-config-appearance/translations/lxqt-config-appearance_th_TH.ts deleted file mode 100644 index d0a5a7f..0000000 --- a/lxqt-config-appearance/translations/lxqt-config-appearance_th_TH.ts +++ /dev/null @@ -1,225 +0,0 @@ - - - - - FontsConfig - - - Font - - - - - Default font for user interface - - - - - Font name: - - - - - Style: - - - - - Point size: - - - - - Normal - - - - - Bold - - - - - Italic - - - - - Bold Italic - - - - - The following settings only affect newly started applications - - - - - Use antialias fonts - - - - - Font hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - Font hinting - - - - - Resolution (DPI): - - - - - Autohint - - - - - Subpixel antialiasing: - - - - - RGB - - - - - BGR - - - - - VRGB - - - - - VBGR - - - - - IconThemeConfig - - - LXQt Appearance Configuration - ปรับแต่งรูปโฉม LXQt - - - - Icons Theme - ชุดตกแต่งไอคอน - - - - LXQtThemeConfig - - - LXQt Theme - ชุดตกแต่ง LXQt - - - - QObject - - - LXQt Appearance Configuration - ปรับแต่งรูปโฉม LXQt - - - - Widget Style - - - - - Icons Theme - ชุดตกแต่งไอคอน - - - - LXQt Theme - ชุดตกแต่ง LXQt - - - - Font - - - - - Cursor - - - - - StyleConfig - - - Widget Style - - - - - Toolbar button style: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Default - - - - - Activate item on single click - - - - diff --git a/lxqt-config-appearance/translations/lxqt-config-appearance_tr.ts b/lxqt-config-appearance/translations/lxqt-config-appearance_tr.ts deleted file mode 100644 index d5a9418..0000000 --- a/lxqt-config-appearance/translations/lxqt-config-appearance_tr.ts +++ /dev/null @@ -1,225 +0,0 @@ - - - - - FontsConfig - - - Font - - - - - Default font for user interface - - - - - Font name: - - - - - Style: - - - - - Point size: - - - - - Normal - - - - - Bold - - - - - Italic - - - - - Bold Italic - - - - - The following settings only affect newly started applications - - - - - Use antialias fonts - - - - - Font hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - Font hinting - - - - - Resolution (DPI): - - - - - Autohint - - - - - Subpixel antialiasing: - - - - - RGB - - - - - BGR - - - - - VRGB - - - - - VBGR - - - - - IconThemeConfig - - - LXQt Appearance Configuration - LXQt Görünüm Ayarları - - - - Icons Theme - Simge Teması - - - - LXQtThemeConfig - - - LXQt Theme - LXQt Teması - - - - QObject - - - LXQt Appearance Configuration - LXQt Görünüm Ayarları - - - - Widget Style - - - - - Icons Theme - Simge Teması - - - - LXQt Theme - LXQt Teması - - - - Font - - - - - Cursor - - - - - StyleConfig - - - Widget Style - - - - - Toolbar button style: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Default - - - - - Activate item on single click - - - - diff --git a/lxqt-config-appearance/translations/lxqt-config-appearance_uk.ts b/lxqt-config-appearance/translations/lxqt-config-appearance_uk.ts deleted file mode 100644 index fc4880a..0000000 --- a/lxqt-config-appearance/translations/lxqt-config-appearance_uk.ts +++ /dev/null @@ -1,225 +0,0 @@ - - - - - FontsConfig - - - Font - - - - - Default font for user interface - - - - - Font name: - - - - - Style: - - - - - Point size: - - - - - Normal - - - - - Bold - - - - - Italic - - - - - Bold Italic - - - - - The following settings only affect newly started applications - - - - - Use antialias fonts - - - - - Font hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - Font hinting - - - - - Resolution (DPI): - - - - - Autohint - - - - - Subpixel antialiasing: - - - - - RGB - - - - - BGR - - - - - VRGB - - - - - VBGR - - - - - IconThemeConfig - - - LXQt Appearance Configuration - Налаштування вигляду LXQt - - - - Icons Theme - Тема значків - - - - LXQtThemeConfig - - - LXQt Theme - Тема LXQt - - - - QObject - - - LXQt Appearance Configuration - Налаштування вигляду LXQt - - - - Widget Style - - - - - Icons Theme - Тема значків - - - - LXQt Theme - Тема LXQt - - - - Font - - - - - Cursor - - - - - StyleConfig - - - Widget Style - - - - - Toolbar button style: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Default - - - - - Activate item on single click - - - - diff --git a/lxqt-config-appearance/translations/lxqt-config-appearance_zh_CN.ts b/lxqt-config-appearance/translations/lxqt-config-appearance_zh_CN.ts deleted file mode 100644 index 68272fc..0000000 --- a/lxqt-config-appearance/translations/lxqt-config-appearance_zh_CN.ts +++ /dev/null @@ -1,225 +0,0 @@ - - - - - FontsConfig - - - Font - - - - - Default font for user interface - - - - - Font name: - - - - - Style: - - - - - Point size: - - - - - Normal - - - - - Bold - - - - - Italic - - - - - Bold Italic - - - - - The following settings only affect newly started applications - - - - - Use antialias fonts - - - - - Font hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - Font hinting - - - - - Resolution (DPI): - - - - - Autohint - - - - - Subpixel antialiasing: - - - - - RGB - - - - - BGR - - - - - VRGB - - - - - VBGR - - - - - IconThemeConfig - - - LXQt Appearance Configuration - LXQt 外观配置 - - - - Icons Theme - 图标主题 - - - - LXQtThemeConfig - - - LXQt Theme - LXQt 主题 - - - - QObject - - - LXQt Appearance Configuration - LXQt 外观配置 - - - - Widget Style - - - - - Icons Theme - 图标主题 - - - - LXQt Theme - LXQt 主题 - - - - Font - - - - - Cursor - - - - - StyleConfig - - - Widget Style - - - - - Toolbar button style: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Default - - - - - Activate item on single click - - - - diff --git a/lxqt-config-appearance/translations/lxqt-config-appearance_zh_TW.ts b/lxqt-config-appearance/translations/lxqt-config-appearance_zh_TW.ts deleted file mode 100644 index a685000..0000000 --- a/lxqt-config-appearance/translations/lxqt-config-appearance_zh_TW.ts +++ /dev/null @@ -1,225 +0,0 @@ - - - - - FontsConfig - - - Font - - - - - Default font for user interface - - - - - Font name: - - - - - Style: - - - - - Point size: - - - - - Normal - - - - - Bold - - - - - Italic - - - - - Bold Italic - - - - - The following settings only affect newly started applications - - - - - Use antialias fonts - - - - - Font hinting style: - - - - - - None - - - - - Slight - - - - - Medium - - - - - Full - - - - - Font hinting - - - - - Resolution (DPI): - - - - - Autohint - - - - - Subpixel antialiasing: - - - - - RGB - - - - - BGR - - - - - VRGB - - - - - VBGR - - - - - IconThemeConfig - - - LXQt Appearance Configuration - LXQt自訂外觀 - - - - Icons Theme - 圖示主題 - - - - LXQtThemeConfig - - - LXQt Theme - LXQt主題 - - - - QObject - - - LXQt Appearance Configuration - LXQt自訂外觀 - - - - Widget Style - - - - - Icons Theme - 圖示主題 - - - - LXQt Theme - LXQt主題 - - - - Font - - - - - Cursor - - - - - StyleConfig - - - Widget Style - - - - - Toolbar button style: - - - - - Only display the icon - - - - - Only display the text - - - - - The text appears beside the icon - - - - - The text appears under the icon - - - - - Default - - - - - Activate item on single click - - - - diff --git a/lxqt-config-brightness/CMakeLists.txt b/lxqt-config-brightness/CMakeLists.txt new file mode 100644 index 0000000..7a584ce --- /dev/null +++ b/lxqt-config-brightness/CMakeLists.txt @@ -0,0 +1,89 @@ +project(lxqt-config-brightness) + +find_package(Qt5Widgets REQUIRED QUIET) +find_package(Qt5X11Extras REQUIRED QUIET) + +find_package(PkgConfig) + +pkg_check_modules(XRANDR xcb-randr) +pkg_check_modules(XCB xcb) + +set(QTX_LIBRARIES Qt5::Widgets Qt5::X11Extras) + + +include_directories ( + ${XRANDR_INCLUDE_DIRS} + ${XCB_INCLUDE_DIRS} +) + +set(H_FILES + brightnesssettings.h + xrandrbrightness.h + monitorinfo.h + outputwidget.h +) + +set(CPP_FILES + main.cpp + brightnesssettings.cpp + xrandrbrightness.cpp + monitorinfo.cpp + outputwidget.cpp +) + +set(UI_FILES + brightnesssettings.ui + outputwidget.ui +) + +qt5_wrap_ui(UI_HEADERS ${UI_FILES}) + + +# Translations ********************************** +lxqt_translate_ts(QM_FILES + UPDATE_TRANSLATIONS + ${UPDATE_TRANSLATIONS} + SOURCES + ${H_FILES} + ${CPP_FILES} + ${UI_FILES} + INSTALL_DIR + "${LXQT_TRANSLATIONS_DIR}/${PROJECT_NAME}" + PULL_TRANSLATIONS + ${PULL_TRANSLATIONS} + CLEAN_TRANSLATIONS + ${CLEAN_TRANSLATIONS} + TRANSLATIONS_REPO + ${TRANSLATIONS_REPO} + TRANSLATIONS_REFSPEC + ${TRANSLATIONS_REFSPEC} + REPO_SUBDIR + "lxqt-config/${PROJECT_NAME}" +) + +lxqt_app_translation_loader(QM_LOADER ${PROJECT_NAME}) +lxqt_translate_desktop(DESKTOP_FILES SOURCES "resources/${PROJECT_NAME}.desktop.in") + + +add_executable(${PROJECT_NAME} ${CPP_FILES} ${UI_FILES} ${QM_FILES} ${DESKTOP_FILES}) + +target_link_libraries( + ${PROJECT_NAME} + ${QTX_LIBRARIES} + ${XRANDR_LDFLAGS} + ${XCB_LDFLAGS} + lxqt +) + +add_definitions( + -DICON_DIR="${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/48x48/apps" +) + + +install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin) +install(FILES ${DESKTOP_FILES} DESTINATION ${CMAKE_INSTALL_PREFIX}/share/applications) +install( + FILES icons/brightnesssettings.svg + DESTINATION "${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/48x48/apps" +) + diff --git a/lxqt-config-brightness/README.md b/lxqt-config-brightness/README.md new file mode 100644 index 0000000..99c1da9 --- /dev/null +++ b/lxqt-config-brightness/README.md @@ -0,0 +1,4 @@ +# brightness-settings + +This tool changes brightness and gamma of your screen. It is a X11 tool. LibKScreen can not change brightness or gamma yet. + diff --git a/lxqt-config-brightness/brightnesssettings.cpp b/lxqt-config-brightness/brightnesssettings.cpp new file mode 100644 index 0000000..b55dc31 --- /dev/null +++ b/lxqt-config-brightness/brightnesssettings.cpp @@ -0,0 +1,47 @@ +/* + Copyright (C) 2016 P.L. Lucas + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "brightnesssettings.h" +#include "outputwidget.h" +#include + +BrightnessSettings::BrightnessSettings(QWidget *parent):QDialog(parent) +{ + ui = new Ui::BrightnessSettings(); + ui->setupUi(this); + + mBrightness = new XRandrBrightness(); + QList monitors = mBrightness->getMonitorsInfo(); + + for(MonitorInfo monitor: monitors) + { + OutputWidget *output = new OutputWidget(monitor, this); + ui->layout->addWidget(output); + output->show(); + connect(output, SIGNAL(changed(MonitorInfo)), this, SLOT(monitorSettingsChanged(MonitorInfo))); + } + +} + +void BrightnessSettings::monitorSettingsChanged(MonitorInfo monitor) +{ + QList monitors; + monitors.append(monitor); + mBrightness->setMonitorsSettings(monitors); +} + diff --git a/lxqt-config-brightness/brightnesssettings.h b/lxqt-config-brightness/brightnesssettings.h new file mode 100644 index 0000000..16f2ef3 --- /dev/null +++ b/lxqt-config-brightness/brightnesssettings.h @@ -0,0 +1,46 @@ +/* + Copyright (C) 2016 P.L. Lucas + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef __BRIGHTNESS_SETTINGS_H__ +#define __BRIGHTNESS_SETTINGS_H__ + +#include +#include "xrandrbrightness.h" +#include "ui_brightnesssettings.h" + + +class BrightnessSettings: public QDialog +{ +Q_OBJECT + +public: + BrightnessSettings(QWidget *parent =0); + +public slots: + void monitorSettingsChanged(MonitorInfo monitor); + +private: + XRandrBrightness *mBrightness; + Ui::BrightnessSettings *ui; + + +}; + + +#endif + diff --git a/lxqt-config-brightness/brightnesssettings.ui b/lxqt-config-brightness/brightnesssettings.ui new file mode 100644 index 0000000..43b55f0 --- /dev/null +++ b/lxqt-config-brightness/brightnesssettings.ui @@ -0,0 +1,79 @@ + + + BrightnessSettings + + + + 0 + 0 + 406 + 110 + + + + Brightness Settings + + + + + + + + + + + <html><head/><body><p><span style=" font-weight:600;">Backlight and brightness settings:</span></p><p>Use arrow keys to change settings.</p></body></html> + + + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Close + + + + + + + + + buttonBox + accepted() + BrightnessSettings + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + BrightnessSettings + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/lxqt-config-brightness/icons/brightnesssettings.svg b/lxqt-config-brightness/icons/brightnesssettings.svg new file mode 100644 index 0000000..40a0c7c --- /dev/null +++ b/lxqt-config-brightness/icons/brightnesssettings.svg @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + diff --git a/lxqt-config-brightness/main.cpp b/lxqt-config-brightness/main.cpp new file mode 100644 index 0000000..5e56e8a --- /dev/null +++ b/lxqt-config-brightness/main.cpp @@ -0,0 +1,89 @@ +/* + Copyright (C) 2016 P.L. Lucas + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "xrandrbrightness.h" +#include +#include +#include +#include "brightnesssettings.h" + +int main(int argn, char* argv[]) +{ + LXQt::SingleApplication app(argn, argv); + + // Command line options + QCommandLineParser parser; + QCommandLineOption increaseOption(QStringList() << "i" << "icrease", + app.tr("Increase brightness.")); + parser.addOption(increaseOption); + QCommandLineOption decreaseOption(QStringList() << "d" << "decrease", + app.tr("Decrease brightness.")); + parser.addOption(decreaseOption); + QCommandLineOption setOption(QStringList() << "s" << "set", + app.tr("Set brightness from 1 to 100."), "brightness"); + parser.addOption(setOption); + QCommandLineOption helpOption = parser.addHelpOption(); + parser.addOption(increaseOption); + parser.addOption(decreaseOption); + parser.addOption(setOption); + parser.addOption(helpOption); + + parser.process(app); + if( parser.isSet(increaseOption) || parser.isSet(decreaseOption) || parser.isSet(setOption) ) + { + XRandrBrightness *brightness = new XRandrBrightness(); + QList monitors = brightness->getMonitorsInfo(); + QList monitorsChanged; + float sign = parser.isSet(decreaseOption)?-1.0:1.0; + double brightness_value = parser.value(setOption).toFloat(); + brightness_value = qMin( qMax(brightness_value, 0.0), 100.0 ) / 100.0; + if(!parser.value(setOption).isEmpty()) + sign = 0.0; + foreach(MonitorInfo monitor, monitors) + { + + if( monitor.isBacklightSupported() ) + { + long backlight = ( monitor.backlight() + sign*(monitor.backlightMax()/50 + 1) )*qAbs(sign) + brightness_value*monitor.backlightMax(); + if(backlight0) + { + monitor.setBacklight(backlight); + monitorsChanged.append(monitor); + } + } + else + { + float brightness = (monitor.brightness() + 0.1*sign)*qAbs(sign) + brightness_value*2.0; + if(brightness<2.0 && brightness>0.0) + { + monitor.setBrightness(brightness); + monitorsChanged.append(monitor); + } + } + } + brightness->setMonitorsSettings(monitorsChanged); + return 0; + } + + BrightnessSettings *brightnessSettings = new BrightnessSettings(); + brightnessSettings->setWindowIcon(QIcon(ICON_DIR "/brightnesssettings.svg")); + brightnessSettings->show(); + + return app.exec(); +} + diff --git a/lxqt-config-brightness/monitorinfo.cpp b/lxqt-config-brightness/monitorinfo.cpp new file mode 100644 index 0000000..992dd81 --- /dev/null +++ b/lxqt-config-brightness/monitorinfo.cpp @@ -0,0 +1,76 @@ +/* + Copyright (C) 2016 P.L. Lucas + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "monitorinfo.h" + +MonitorInfo::MonitorInfo(int id, QString name, long backlightMax) +{ + mId = id; + mName = name; + mBacklightMax = backlightMax; +} + +MonitorInfo::MonitorInfo(const MonitorInfo &monitor) +{ + mId = monitor.mId; + mName = monitor.mName; + mBacklightMax = monitor.mBacklightMax; + mBacklight = monitor.mBacklight; + mBrightness = monitor.mBrightness; +} + +bool MonitorInfo::isBacklightSupported() const +{ + return mBacklightMax > 0; +} + +long MonitorInfo::backlightMax() const +{ + return mBacklightMax; +} + +long MonitorInfo::backlight() const +{ + return mBacklight; +} + +void MonitorInfo::setBacklight(const long value) +{ + mBacklight = value; +} + +float MonitorInfo::brightness() const +{ + return mBrightness; +} + +void MonitorInfo::setBrightness(const float percent) +{ + mBrightness = qMax(qMin((float)2.0, percent), (float)0.0); +} + +int MonitorInfo::id() const +{ + return mId; +} + +QString MonitorInfo::name() const +{ + return mName; +} + diff --git a/lxqt-config-brightness/monitorinfo.h b/lxqt-config-brightness/monitorinfo.h new file mode 100644 index 0000000..9d5b123 --- /dev/null +++ b/lxqt-config-brightness/monitorinfo.h @@ -0,0 +1,58 @@ +/* + Copyright (C) 2016 P.L. Lucas + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef __MONITOR_INFO_H__ +#define __MONITOR_INFO_H__ + +#include + + +/** This class represents backlight and brightness values of screen. + * If backlight is supported, backlight power of screen can be changed. + * Brightness represents color saturation. + */ +class MonitorInfo +{ +public: + MonitorInfo(int id, QString name, long backlightMax); + MonitorInfo(const MonitorInfo &monitor); + + bool isBacklightSupported() const; + long backlight() const; + long backlightMax() const; + void setBacklight(const long value); + + float brightness() const; + /**Brightness is a number between 0 and 2.*/ + void setBrightness(const float percent); + + int id() const; + QString name() const; + +private: + long mBacklightMax; + long mBacklight; + + float mBrightness; + + QString mName; + int mId; +}; + +#endif + diff --git a/lxqt-config-brightness/outputwidget.cpp b/lxqt-config-brightness/outputwidget.cpp new file mode 100644 index 0000000..0605e98 --- /dev/null +++ b/lxqt-config-brightness/outputwidget.cpp @@ -0,0 +1,56 @@ +/* + Copyright (C) 2016 P.L. Lucas + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "outputwidget.h" + +OutputWidget::OutputWidget(MonitorInfo monitor, QWidget *parent):QWidget(parent), mMonitor(monitor) +{ + ui = new Ui::OutputWidget(); + ui->setupUi(this); + + ui->label->setText(""+monitor.name()+":"); + if ( monitor.isBacklightSupported() ) + { + ui->backlightSlider->setMinimum(0); + ui->backlightSlider->setMaximum(monitor.backlightMax()); + ui->backlightSlider->setValue(monitor.backlight()); + ui->backlightSlider->setFocus(Qt::OtherFocusReason); + } + else + ui->backlightSlider->hide(); + ui->brightnessSlider->setMinimum(0); + ui->brightnessSlider->setMaximum(200); + ui->brightnessSlider->setValue(monitor.brightness()*100); + + connect(ui->backlightSlider, SIGNAL(valueChanged(int)), this, SLOT(backlightChanged(int))); + connect(ui->brightnessSlider, SIGNAL(valueChanged(int)), this, SLOT(brightnessChanged(int))); +} + +void OutputWidget::backlightChanged(int value) +{ + mMonitor.setBacklight(value); + emit changed(mMonitor); +} + + +void OutputWidget::brightnessChanged(int value) +{ + mMonitor.setBrightness((float)value/100.0); + emit changed(mMonitor); +} + diff --git a/lxqt-config-brightness/outputwidget.h b/lxqt-config-brightness/outputwidget.h new file mode 100644 index 0000000..ae1417d --- /dev/null +++ b/lxqt-config-brightness/outputwidget.h @@ -0,0 +1,44 @@ +/* + Copyright (C) 2016 P.L. Lucas + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef __OUTPUT_WIDGET_H__ +#define __OUTPUT_WIDGET_H__ + +#include +#include "monitorinfo.h" +#include "ui_outputwidget.h" + +class OutputWidget: public QWidget +{ +Q_OBJECT +public: + OutputWidget(MonitorInfo monitor, QWidget *parent); + +signals: + void changed(MonitorInfo info); + +public slots: + void backlightChanged(int value); + void brightnessChanged(int value); +private: + MonitorInfo mMonitor; + Ui::OutputWidget *ui; +}; + +#endif + diff --git a/lxqt-config-brightness/outputwidget.ui b/lxqt-config-brightness/outputwidget.ui new file mode 100644 index 0000000..9e00a65 --- /dev/null +++ b/lxqt-config-brightness/outputwidget.ui @@ -0,0 +1,84 @@ + + + OutputWidget + + + + 0 + 0 + 478 + 86 + + + + + 0 + 0 + + + + Form + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + 5 + + + + + + <b>Output:</b> + + + Qt::RichText + + + + + + + Qt::Horizontal + + + + + + + + 0 + 0 + + + + + 48 + 48 + + + + false + + + 10.000000000000000 + + + true + + + + + + + + + + + diff --git a/lxqt-config-brightness/resources/lxqt-config-brightness.desktop.in b/lxqt-config-brightness/resources/lxqt-config-brightness.desktop.in new file mode 100644 index 0000000..f65ea0c --- /dev/null +++ b/lxqt-config-brightness/resources/lxqt-config-brightness.desktop.in @@ -0,0 +1,10 @@ +[Desktop Entry] +Name=Brightness Settings +Exec=lxqt-config-brightness +Terminal=false +Type=Application +Icon=brightnesssettings +Categories=Settings;DesktopSettings;Qt;LXQt;HardwareSettings; +OnlyShowIn=LXQt; + +#TRANSLATIONS_DIR=translations \ No newline at end of file diff --git a/lxqt-config-brightness/translations/lxqt-config-brightness_es.desktop b/lxqt-config-brightness/translations/lxqt-config-brightness_es.desktop new file mode 100644 index 0000000..069729b --- /dev/null +++ b/lxqt-config-brightness/translations/lxqt-config-brightness_es.desktop @@ -0,0 +1,4 @@ +# Translations +Comment[es]=Permite cambiar el brillo y el contraste del monitor +GenericName[es]=Configuración de Brillo y contraste LXQt +Name[es]=Configuración de Brillo y contraste LXQt diff --git a/lxqt-config-brightness/translations/lxqt-config-brightness_ru.desktop b/lxqt-config-brightness/translations/lxqt-config-brightness_ru.desktop new file mode 100644 index 0000000..1e22633 --- /dev/null +++ b/lxqt-config-brightness/translations/lxqt-config-brightness_ru.desktop @@ -0,0 +1,4 @@ +# Translations +Comment[ru]=Позволяет менять яркость и контраст монитора +GenericName[ru]=Настройка яркости и контраста LXQt +Name[ru]=Настройка яркости и контраста LXQt diff --git a/lxqt-config-brightness/xrandrbrightness.cpp b/lxqt-config-brightness/xrandrbrightness.cpp new file mode 100644 index 0000000..4a00c52 --- /dev/null +++ b/lxqt-config-brightness/xrandrbrightness.cpp @@ -0,0 +1,411 @@ +/* This file is part of the KDE project + * Copyright (C) 2010 Lukas Tinkl + * Copyright (C) 2015 Kai Uwe Broulik + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License version 2 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + */ + + +#include +#include + +#include "xrandrbrightness.h" + +XRandrBrightness::XRandrBrightness() +{ + if (!QX11Info::isPlatformX11()) { + return; + } + ScopedCPointer versionReply(xcb_randr_query_version_reply(QX11Info::connection(), + xcb_randr_query_version(QX11Info::connection(), 1, 2), + nullptr)); + + if (!versionReply) { + qDebug() << "RandR Query version returned null"; + return; + } + + if (versionReply->major_version < 1 || (versionReply->major_version == 1 && versionReply->minor_version < 2)) { + qDebug() << "RandR version" << versionReply->major_version << "." << versionReply->minor_version << " too old"; + return; + } + ScopedCPointer backlightReply(xcb_intern_atom_reply(QX11Info::connection(), + xcb_intern_atom (QX11Info::connection(), 1, strlen("Backlight"), "Backlight"), + nullptr)); + + if (!backlightReply) { + qDebug() << "Intern Atom for Backlight returned null"; + return; + } + + m_backlight = backlightReply->atom; + + if (m_backlight == XCB_NONE) { + qDebug() << "No outputs have backlight property"; + //return; + } + xcb_screen_iterator_t iter = xcb_setup_roots_iterator(xcb_get_setup(QX11Info::connection())); + if (!iter.rem) { + qDebug() << "XCB Screen Roots Iterator rem was null"; + return; + } + + xcb_screen_t *screen = iter.data; + xcb_window_t root = screen->root; + + m_resources.reset(xcb_randr_get_screen_resources_current_reply(QX11Info::connection(), + xcb_randr_get_screen_resources_current(QX11Info::connection(), root) + , nullptr)); + + if (!m_resources) { + qDebug() << "RANDR Get Screen Resources returned null"; + return; + } +} + + + +bool XRandrBrightness::backlight_get_with_range(xcb_randr_output_t output, long &value, long &min, long &max) const { + long cur = backlight_get(output); + if (cur == -1) { + return false; + } + + ScopedCPointer propertyReply(xcb_randr_query_output_property_reply(QX11Info::connection(), + xcb_randr_query_output_property(QX11Info::connection(), output, m_backlight) + , nullptr)); + + if (!propertyReply) { + return -1; + } + + if (propertyReply->range && xcb_randr_query_output_property_valid_values_length(propertyReply.data()) == 2) { + int32_t *values = xcb_randr_query_output_property_valid_values(propertyReply.data()); + value = cur; + min = values[0]; + max = values[1]; + return true; + } + + return false; +} + +long XRandrBrightness::backlight_get(xcb_randr_output_t output) const +{ + ScopedCPointer propertyReply; + long value; + + if (m_backlight != XCB_ATOM_NONE) { + propertyReply.reset(xcb_randr_get_output_property_reply(QX11Info::connection(), + xcb_randr_get_output_property(QX11Info::connection(), output, m_backlight, XCB_ATOM_NONE, 0, 4, 0, 0) + , nullptr)); + + if (!propertyReply) { + return -1; + } + } + + if (!propertyReply || propertyReply->type != XCB_ATOM_INTEGER || propertyReply->num_items != 1 || propertyReply->format != 32) { + value = -1; + } else { + value = *(reinterpret_cast(xcb_randr_get_output_property_data(propertyReply.data()))); + } + return value; +} + +void XRandrBrightness::backlight_set(xcb_randr_output_t output, long value) +{ + xcb_randr_change_output_property(QX11Info::connection(), output, m_backlight, XCB_ATOM_INTEGER, + 32, XCB_PROP_MODE_REPLACE, + 1, reinterpret_cast(&value)); +} + + +float XRandrBrightness::gamma_brightness_get(xcb_randr_output_t output) +{ + xcb_generic_error_t *error; + + xcb_randr_get_output_info_cookie_t output_info_cookie = xcb_randr_get_output_info (QX11Info::connection(), output, 0); + xcb_randr_get_output_info_reply_t * output_info = xcb_randr_get_output_info_reply (QX11Info::connection(), output_info_cookie, &error); + if(error != NULL) + { + qDebug() << "Error getting output_info"; + return -1; + } + if(output_info == NULL) + { + qDebug() << "Error: output_info is null"; + return -1; + } + // xcb_randr_get_output_info_reply_t tiene como elemento crtc + xcb_randr_get_crtc_gamma_cookie_t gamma_cookie = xcb_randr_get_crtc_gamma_unchecked (QX11Info::connection(), output_info->crtc); + xcb_randr_get_crtc_gamma_reply_t *gamma_reply = xcb_randr_get_crtc_gamma_reply (QX11Info::connection(), gamma_cookie, &error); + if(error != NULL) + { + qDebug() << "Error getting gamma_reply"; + return -1; + } + if(gamma_reply == NULL) + { + qDebug() << "Error: gamma_reply is null"; + return -1; + } + uint16_t *red = xcb_randr_get_crtc_gamma_red (gamma_reply); + if(red == NULL) + { + qDebug() << "Error: red is null"; + return -1; + } + int red_length = xcb_randr_get_crtc_gamma_red_length(gamma_reply); + + // uint16_t *green = xcb_randr_get_crtc_gamma_green (gamma_reply); + // if(green == NULL) + // { + // qDebug() << "Error: green is null"; + // return -1; + // } + // uint16_t *blue = xcb_randr_get_crtc_gamma_blue (gamma_reply); + // if(blue == NULL) + // { + // qDebug() << "Error: blue is null"; + // return -1; + // } + + float brightness = (float)red[red_length-1]/65535.0; + return brightness; +} + +void XRandrBrightness::gamma_brightness_set(xcb_randr_output_t output, float percent) +{ + xcb_generic_error_t *error; + + xcb_randr_get_output_info_cookie_t output_info_cookie = xcb_randr_get_output_info (QX11Info::connection(), output, 0); + xcb_randr_get_output_info_reply_t * output_info = xcb_randr_get_output_info_reply (QX11Info::connection(), output_info_cookie, &error); + if(error != NULL) + { + qDebug() << "Error getting output_info"; + return; + } + if(output_info == NULL) + { + qDebug() << "Error: output_info is null"; + return; + } + // xcb_randr_get_output_info_reply_t tiene como elemento crtc + xcb_randr_get_crtc_gamma_cookie_t gamma_cookie = xcb_randr_get_crtc_gamma_unchecked (QX11Info::connection(), output_info->crtc); + xcb_randr_get_crtc_gamma_reply_t *gamma_reply = xcb_randr_get_crtc_gamma_reply (QX11Info::connection(), gamma_cookie, &error); + if(error != NULL) + { + qDebug() << "Error getting gamma_reply"; + return; + } + if(gamma_reply == NULL) + { + qDebug() << "Error: gamma_reply is null"; + return; + } + uint16_t *red = xcb_randr_get_crtc_gamma_red (gamma_reply); + if(red == NULL) + { + qDebug() << "Error: red is null"; + return; + } + int red_length = xcb_randr_get_crtc_gamma_red_length(gamma_reply); + uint16_t *green = xcb_randr_get_crtc_gamma_green (gamma_reply); + if(green == NULL) + { + qDebug() << "Error: green is null"; + return; + } + uint16_t *blue = xcb_randr_get_crtc_gamma_blue (gamma_reply); + if(blue == NULL) + { + qDebug() << "Error: blue is null"; + return; + } + + float max_gamma = 65535*percent; + for(int i=0;icrtc, red_length, red, green, blue); +} + + +QList XRandrBrightness::getMonitorsInfo() +{ + QList monitors; + + if (!m_resources) { + return monitors; + } + + auto *outputs = xcb_randr_get_screen_resources_current_outputs(m_resources.data()); + for (int i = 0; i < m_resources->num_outputs; ++i) { + xcb_randr_output_t output = outputs[i]; + + xcb_generic_error_t *error; + + xcb_randr_get_output_info_cookie_t output_info_cookie = xcb_randr_get_output_info (QX11Info::connection(), output, 0); + xcb_randr_get_output_info_reply_t * output_info = xcb_randr_get_output_info_reply (QX11Info::connection(), output_info_cookie, &error); + if(error != NULL) + { + qDebug() << "Error getting output_info"; + continue; + } + if(output_info == NULL) + { + qDebug() << "Error: output_info is null"; + continue; + } + + QString name = QString::fromUtf8((const char *) xcb_randr_get_output_info_name(output_info), output_info->name_len); + + + qDebug() << "Found output:" << name; + + + // Is connected? + if ( (xcb_randr_connection_t)(output_info->connection) != XCB_RANDR_CONNECTION_CONNECTED ) + { + qDebug() << "Output is not connected"; + continue; // This output is not connected. Check other + } + + // Is enabled? + if( output_info->crtc == 0) + { + qDebug() << "Crtc is not null. Output not enabled."; + continue; + } + xcb_randr_get_crtc_info_cookie_t crtc_info_cookie = xcb_randr_get_crtc_info_unchecked (QX11Info::connection(), output_info->crtc, 0); + xcb_randr_get_crtc_info_reply_t *crtc_info =xcb_randr_get_crtc_info_reply (QX11Info::connection(), crtc_info_cookie, &error); + if(error != NULL) + { + qDebug() << "Error getting output_info"; + continue; + } + if(crtc_info == NULL) + { + qDebug() << "Error: output_info is null"; + continue; + } + if( crtc_info->mode == XCB_NONE ) + { + qDebug() << "No modes. Output not enabled."; + continue; + } + + // Output is connected and enabled. Get data: + bool backlightIsSuported = false; + long cur, min, max, backlight_max = -1; + if (backlight_get(output) != -1) + { + if (backlight_get_with_range(output, cur, min, max)) + { + backlightIsSuported = true; + backlight_max = max - min; + } + } + + MonitorInfo monitor((int)output, name, backlight_max); + + if(backlightIsSuported) + monitor.setBacklight(cur-min); + + monitor.setBrightness(gamma_brightness_get(output)); + + qDebug() << "Output:" << name << "added"; + monitors.append(monitor); + + } + + return monitors; +} + +void XRandrBrightness::setMonitorsSettings(QList monitors) +{ + if (!m_resources) { + return; + } + + auto *outputs = xcb_randr_get_screen_resources_current_outputs(m_resources.data()); + for (int i = 0; i < m_resources->num_outputs; ++i) { + xcb_randr_output_t output = outputs[i]; + + xcb_generic_error_t *error; + + xcb_randr_get_output_info_cookie_t output_info_cookie = xcb_randr_get_output_info (QX11Info::connection(), output, 0); + xcb_randr_get_output_info_reply_t * output_info = xcb_randr_get_output_info_reply (QX11Info::connection(), output_info_cookie, &error); + if(error != NULL) + { + qDebug() << "Error getting output_info"; + continue; + } + if(output_info == NULL) + { + qDebug() << "Error: output_info is null"; + continue; + } + + // Is connected? + if ( (xcb_randr_connection_t)(output_info->connection) != XCB_RANDR_CONNECTION_CONNECTED ) + continue; // This output is not connected. Check other + + // Is enabled? + if( output_info->crtc == 0) + continue; + xcb_randr_get_crtc_info_cookie_t crtc_info_cookie = xcb_randr_get_crtc_info_unchecked (QX11Info::connection(), output_info->crtc, 0); + xcb_randr_get_crtc_info_reply_t *crtc_info =xcb_randr_get_crtc_info_reply (QX11Info::connection(), crtc_info_cookie, &error); + if(error != NULL) + continue; + if(crtc_info == NULL && crtc_info->mode == XCB_NONE ) + continue; + + QString name = QString::fromUtf8((const char *) xcb_randr_get_output_info_name(output_info), output_info->name_len); + + // Output is connected and enabled. Get data: + bool backlightIsSuported = false; + long cur, min, max, backlight_max = -1, backlight_value = 0; + if (backlight_get(output) != -1) + { + if (backlight_get_with_range(output, cur, min, max)) + { + backlightIsSuported = true; + backlight_max = max - min; + backlight_value = cur - min; + } + } + float brightness_value = gamma_brightness_get(output); + + // Compare output info with settings and set it. + for(MonitorInfo monitor: monitors) + { + if(monitor.id() == (int)output && monitor.name() == name) + { + // Set settings + if(backlightIsSuported && monitor.backlight() != backlight_value) + backlight_set(output, min+monitor.backlight()); + if(monitor.brightness() != brightness_value) + gamma_brightness_set(output, monitor.brightness()); + break; + } + } + } +} + diff --git a/lxqt-config-brightness/xrandrbrightness.h b/lxqt-config-brightness/xrandrbrightness.h new file mode 100644 index 0000000..d3a7917 --- /dev/null +++ b/lxqt-config-brightness/xrandrbrightness.h @@ -0,0 +1,56 @@ +/* This file is part of the KDE project + * Copyright (C) 2010 Lukas Tinkl + * Copyright (C) 2015 Kai Uwe Broulik + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License version 2 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + */ + +#ifndef XRANDRBRIGHTNESS_H +#define XRANDRBRIGHTNESS_H + +#include +#include + +#include +#include + +#include "monitorinfo.h" + +template using ScopedCPointer = QScopedPointer; + +class XRandrBrightness +{ +public: + XRandrBrightness(); + ~XRandrBrightness() = default; + + QList getMonitorsInfo(); + void setMonitorsSettings(QList monitors); + +private: + bool backlight_get_with_range(xcb_randr_output_t output, long &value, long &min, long &max) const; + long backlight_get(xcb_randr_output_t output) const; + void backlight_set(xcb_randr_output_t output, long value); + float gamma_brightness_get(xcb_randr_output_t output); + void gamma_brightness_set(xcb_randr_output_t output, float percent); + + xcb_atom_t m_backlight = XCB_ATOM_NONE; + ScopedCPointer m_resources; + +}; + +#endif // XRANDRBRIGHTNESS_H + diff --git a/lxqt-config-file-associations/CMakeLists.txt b/lxqt-config-file-associations/CMakeLists.txt index 0506723..ca27020 100644 --- a/lxqt-config-file-associations/CMakeLists.txt +++ b/lxqt-config-file-associations/CMakeLists.txt @@ -40,6 +40,16 @@ lxqt_translate_ts(QM_FILES ${UI_FILES} INSTALL_DIR "${LXQT_TRANSLATIONS_DIR}/${PROJECT_NAME}" + PULL_TRANSLATIONS + ${PULL_TRANSLATIONS} + CLEAN_TRANSLATIONS + ${CLEAN_TRANSLATIONS} + TRANSLATIONS_REPO + ${TRANSLATIONS_REPO} + TRANSLATIONS_REFSPEC + ${TRANSLATIONS_REFSPEC} + REPO_SUBDIR + "lxqt-config/${PROJECT_NAME}" ) lxqt_app_translation_loader(QM_LOADER ${PROJECT_NAME}) diff --git a/lxqt-config-file-associations/mimetypeitemmodel.cpp b/lxqt-config-file-associations/mimetypeitemmodel.cpp index b79d2bf..0e1fd44 100644 --- a/lxqt-config-file-associations/mimetypeitemmodel.cpp +++ b/lxqt-config-file-associations/mimetypeitemmodel.cpp @@ -188,7 +188,7 @@ bool MimetypeFilterItemModel::filterHelper(QModelIndex& source_index) const return true; } - foreach (const QString pattern, mimeInfo->patterns()) + foreach (const QString &pattern, mimeInfo->patterns()) { if (pattern.contains(filterRegExp())) { diff --git a/lxqt-config-file-associations/translations/lxqt-config-file-associations.ts b/lxqt-config-file-associations/translations/lxqt-config-file-associations.ts deleted file mode 100644 index 5bc0ad2..0000000 --- a/lxqt-config-file-associations/translations/lxqt-config-file-associations.ts +++ /dev/null @@ -1,123 +0,0 @@ - - - - - ApplicationChooser - - - ApplicationChooser - - - - - Pick an application for: - - - - - 1 - - - - - Applications that handle JPEG - - - - - - - - New Subitem - - - - - - Other applications - - - - - Applications that handle %1 - - - - - No applications found - - - - - MimetypeViewer - - - - None - - - - - &Change... - - - - - &Choose... - - - - - mimetypeviewer - - - File Associations - - - - - Default application - - - - - &Choose... - - - - - TextLabel - - - - - None - - - - - Patterns - - - - - *.txt *.xml - - - - - MIME type - - - - - Icon - - - - - Description - - - - diff --git a/lxqt-config-file-associations/translations/lxqt-config-file-associations_de.ts b/lxqt-config-file-associations/translations/lxqt-config-file-associations_de.ts deleted file mode 100644 index 92ba41f..0000000 --- a/lxqt-config-file-associations/translations/lxqt-config-file-associations_de.ts +++ /dev/null @@ -1,123 +0,0 @@ - - - - - ApplicationChooser - - - ApplicationChooser - Dateizuordnungen - - - - Pick an application for: - Anwendung auswählen für: - - - - 1 - 1 - - - - Applications that handle JPEG - Anwendungen die JPEG verarbeiten - - - - - - - New Subitem - Neuer Unterpunkt - - - - - Other applications - Andere Anwendung - - - - Applications that handle %1 - Anwendungen die %1 verarbeiten - - - - No applications found - Keine Anwendung gefunden - - - - MimetypeViewer - - - - None - Keine - - - - &Change... - Ä&ndern... - - - - &Choose... - &Auswählen... - - - - mimetypeviewer - - - File Associations - Dateizuordnungen - - - - Default application - Default-Anwendungsprogramm - - - - &Choose... - &Auswählen... - - - - TextLabel - Textfeld - - - - None - Keins - - - - Patterns - Dateimuster - - - - *.txt *.xml - *.txt *.xml - - - - MIME type - MIME-Typ - - - - Icon - Symbol - - - - Description - Beschreibung - - - diff --git a/lxqt-config-file-associations/translations/lxqt-config-file-associations_el.ts b/lxqt-config-file-associations/translations/lxqt-config-file-associations_el.ts deleted file mode 100644 index a90712a..0000000 --- a/lxqt-config-file-associations/translations/lxqt-config-file-associations_el.ts +++ /dev/null @@ -1,123 +0,0 @@ - - - - - ApplicationChooser - - - ApplicationChooser - Επιλογέας εφαρμογής - - - - Pick an application for: - Επιλέξτε μια εφαρμογή για: - - - - 1 - 1 - - - - Applications that handle JPEG - Εφαρμογές που διαχειρίζονται αρχεία JPEG - - - - - - - New Subitem - Νέο υποαντικείμενο - - - - - Other applications - Άλλες εφαρμογές - - - - Applications that handle %1 - Εφαρμογές που διαχειρίζονται %1 - - - - No applications found - Δεν βρέθηκε εφαρμογή - - - - MimetypeViewer - - - - None - Καμία - - - - &Change... - &Αλλαγή... - - - - &Choose... - &Επιλογή... - - - - mimetypeviewer - - - File Associations - Συσχετίσεις αρχείων - - - - Default application - Εξ ορισμού εφαρμογή - - - - &Choose... - &Επιλογή... - - - - TextLabel - Ετικέτα - - - - None - Καμία - - - - Patterns - Σχηματομορφές - - - - *.txt *.xml - *.txt *.xml - - - - MIME type - Τύπος MIME - - - - Icon - Εικονίδιο - - - - Description - Περιγραφή - - - diff --git a/lxqt-config-file-associations/translations/lxqt-config-file-associations_hu.ts b/lxqt-config-file-associations/translations/lxqt-config-file-associations_hu.ts deleted file mode 100644 index 33699e6..0000000 --- a/lxqt-config-file-associations/translations/lxqt-config-file-associations_hu.ts +++ /dev/null @@ -1,123 +0,0 @@ - - - - - ApplicationChooser - - - ApplicationChooser - Alkalmazás választó - - - - Pick an application for: - Válassz alkalmazást ehhez: - - - - 1 - - - - - Applications that handle JPEG - JPEG kezelő alkalmazás - - - - - - - New Subitem - ÚJ alelem - - - - - Other applications - Más alkalmazás - - - - Applications that handle %1 - A %1 kezelő alkalmazás - - - - No applications found - Nincs alkalmazás - - - - MimetypeViewer - - - - None - Nincs - - - - &Change... - &Változtat - - - - &Choose... - &Választás - - - - mimetypeviewer - - - File Associations - Fájlhozzárendelések - - - - Default application - Alapértelmezett alkalmazás - - - - &Choose... - &Választás... - - - - TextLabel - Felirat - - - - None - Nincs - - - - Patterns - Szűrők - - - - *.txt *.xml - - - - - MIME type - MIME típus - - - - Icon - Ikon - - - - Description - Leírás - - - diff --git a/lxqt-config-file-associations/translations/lxqt-config-file-associations_it.desktop b/lxqt-config-file-associations/translations/lxqt-config-file-associations_it.desktop index cc52e20..70fac81 100644 --- a/lxqt-config-file-associations/translations/lxqt-config-file-associations_it.desktop +++ b/lxqt-config-file-associations/translations/lxqt-config-file-associations_it.desktop @@ -1,4 +1,4 @@ # Translations Name[it]=Associazioni file -GenericName[it]=Impostare le associazioni file -Comment[it]=Impostare le associazioni file per le applicazioni installate +GenericName[it]=Imposta le associazioni file +Comment[it]=Imposta le associazioni file per le applicazioni installate diff --git a/lxqt-config-file-associations/translations/lxqt-config-file-associations_it.ts b/lxqt-config-file-associations/translations/lxqt-config-file-associations_it.ts deleted file mode 100644 index 9e4b549..0000000 --- a/lxqt-config-file-associations/translations/lxqt-config-file-associations_it.ts +++ /dev/null @@ -1,123 +0,0 @@ - - - - - ApplicationChooser - - - ApplicationChooser - Applicazioni predefinite - - - - Pick an application for: - Scegli un applicazione per: - - - - 1 - 1 - - - - Applications that handle JPEG - Applicazioni che possono gestire JPEG - - - - - - - New Subitem - - - - - - Other applications - Altre applicazioni - - - - Applications that handle %1 - Applicazioni che possono gestire %1 - - - - No applications found - Nessuna applicazione trovata - - - - MimetypeViewer - - - - None - Nessuno - - - - &Change... - &Cambia... - - - - &Choose... - &Scegli... - - - - mimetypeviewer - - - File Associations - Associazioni file - - - - Default application - Applicazione predefinita - - - - &Choose... - &Scegli... - - - - TextLabel - - - - - None - - - - - Patterns - Tipi di file - - - - *.txt *.xml - - - - - MIME type - Tipo MIME - - - - Icon - Icona - - - - Description - Descrizione - - - diff --git a/lxqt-config-file-associations/translations/lxqt-config-file-associations_ja.ts b/lxqt-config-file-associations/translations/lxqt-config-file-associations_ja.ts deleted file mode 100644 index eb2fec7..0000000 --- a/lxqt-config-file-associations/translations/lxqt-config-file-associations_ja.ts +++ /dev/null @@ -1,123 +0,0 @@ - - - - - ApplicationChooser - - - ApplicationChooser - アプリケーションの関連付け - - - - Pick an application for: - このファイルを開くアプリケーション: - - - - 1 - 1 - - - - Applications that handle JPEG - JPEGを扱うアプリケーション - - - - - - - New Subitem - 新しいサブアイテム - - - - - Other applications - その他のアプリケーション - - - - Applications that handle %1 - %1 を扱うアプリケーション - - - - No applications found - アプリケーションが見つかりませんでした - - - - MimetypeViewer - - - - None - なし - - - - &Change... - 変更(&C) - - - - &Choose... - 選択(&C) - - - - mimetypeviewer - - - File Associations - ファイルの関連付け - - - - Default application - デフォルトのアプリケーション - - - - &Choose... - 選択(&C) - - - - TextLabel - テキストラベル - - - - None - なし - - - - Patterns - パターン - - - - *.txt *.xml - *.txt *.xml - - - - MIME type - MIMEタイプ - - - - Icon - アイコン - - - - Description - 説明 - - - diff --git a/lxqt-config-file-associations/translations/lxqt-config-file-associations_pl_PL.ts b/lxqt-config-file-associations/translations/lxqt-config-file-associations_pl_PL.ts deleted file mode 100644 index 5e2480b..0000000 --- a/lxqt-config-file-associations/translations/lxqt-config-file-associations_pl_PL.ts +++ /dev/null @@ -1,123 +0,0 @@ - - - - - ApplicationChooser - - - ApplicationChooser - Wybór programu - - - - Pick an application for: - Wybierz program do obsługi: - - - - 1 - 1 - - - - Applications that handle JPEG - Programy obsługujące JPEG - - - - - - - New Subitem - Nowa pozycja - - - - - Other applications - Inne programy - - - - Applications that handle %1 - Programy obsługujące %1 - - - - No applications found - Nie znaleziono programów - - - - MimetypeViewer - - - - None - Brak - - - - &Change... - &Zmień... - - - - &Choose... - &Wybierz... - - - - mimetypeviewer - - - File Associations - Skojarzenia plików - - - - Default application - Domyślny program - - - - &Choose... - &Wybierz... - - - - TextLabel - TextLabel - - - - None - None - - - - Patterns - Rozszerzenia - - - - *.txt *.xml - *.txt *.xml - - - - MIME type - Typ MIME - - - - Icon - Ikona - - - - Description - Opis - - - diff --git a/lxqt-config-file-associations/translations/lxqt-config-file-associations_pt.ts b/lxqt-config-file-associations/translations/lxqt-config-file-associations_pt.ts deleted file mode 100644 index f46fcf9..0000000 --- a/lxqt-config-file-associations/translations/lxqt-config-file-associations_pt.ts +++ /dev/null @@ -1,123 +0,0 @@ - - - - - ApplicationChooser - - - ApplicationChooser - Seletor de aplicações - - - - Pick an application for: - Escolha uma aplicação para: - - - - 1 - 1 - - - - Applications that handle JPEG - Aplicações para manipular JPEG - - - - - - - New Subitem - Novo subitem - - - - - Other applications - Outras aplicações - - - - Applications that handle %1 - Aplicações para manipular %1 - - - - No applications found - Nenhuma aplicação encontrada - - - - MimetypeViewer - - - - None - Nenhum - - - - &Change... - &Mudar... - - - - &Choose... - Es&colher... - - - - mimetypeviewer - - - File Associations - Associação de ficheiros - - - - Default application - Aplicaçao pré-definida - - - - &Choose... - Es&colher... - - - - TextLabel - Etiqueta - - - - None - Nenhuma - - - - Patterns - Padrões - - - - *.txt *.xml - *.txt *.xml - - - - MIME type - Tipo MIME - - - - Icon - Ícone - - - - Description - Descrição - - - diff --git a/lxqt-config-file-associations/translations/lxqt-config-file-associations_ru.desktop b/lxqt-config-file-associations/translations/lxqt-config-file-associations_ru.desktop index 2024701..3a1697e 100644 --- a/lxqt-config-file-associations/translations/lxqt-config-file-associations_ru.desktop +++ b/lxqt-config-file-associations/translations/lxqt-config-file-associations_ru.desktop @@ -1,4 +1,4 @@ # Translations -Comment[ru]=Настроить приложения ассоциированные с известным типом файлв +Comment[ru]=Настроить приложения, ассоциированные с известными типами файлов GenericName[ru]=Настройки ассоциации файлов Name[ru]=Ассоциация файлов \ No newline at end of file diff --git a/lxqt-config-file-associations/translations/lxqt-config-file-associations_ru.ts b/lxqt-config-file-associations/translations/lxqt-config-file-associations_ru.ts deleted file mode 100644 index b151624..0000000 --- a/lxqt-config-file-associations/translations/lxqt-config-file-associations_ru.ts +++ /dev/null @@ -1,123 +0,0 @@ - - - - - ApplicationChooser - - - ApplicationChooser - Выбор приложения - - - - Pick an application for: - Выбрать приложение для: - - - - 1 - - - - - Applications that handle JPEG - Приложения, которые поддерживают JPEG - - - - - - - New Subitem - - - - - - Other applications - Другие приложения - - - - Applications that handle %1 - Приложение, которое поддерживает %1 - - - - No applications found - Не найдены приложения - - - - MimetypeViewer - - - - None - Нет - - - - &Change... - &Изменить... - - - - &Choose... - &Выбрать... - - - - mimetypeviewer - - - File Associations - Ассоциация файлов - - - - Default application - Приложение по умолчанию - - - - &Choose... - &Выбрать... - - - - TextLabel - - - - - None - Нет - - - - Patterns - Шаблоны - - - - *.txt *.xml - - - - - MIME type - MIME-тип - - - - Icon - Значок - - - - Description - Описание - - - diff --git a/lxqt-config-file-associations/translations/lxqt-config-file-associations_ru_RU.desktop b/lxqt-config-file-associations/translations/lxqt-config-file-associations_ru_RU.desktop deleted file mode 100644 index d4fe06e..0000000 --- a/lxqt-config-file-associations/translations/lxqt-config-file-associations_ru_RU.desktop +++ /dev/null @@ -1,4 +0,0 @@ -# Translations -Comment[ru_RU]=Настроить приложения ассоциированные с известным типом файлв -GenericName[ru_RU]=Настройки ассоциации файлов -Name[ru_RU]=Ассоциация файлов \ No newline at end of file diff --git a/lxqt-config-file-associations/translations/lxqt-config-file-associations_ru_RU.ts b/lxqt-config-file-associations/translations/lxqt-config-file-associations_ru_RU.ts deleted file mode 100644 index b151624..0000000 --- a/lxqt-config-file-associations/translations/lxqt-config-file-associations_ru_RU.ts +++ /dev/null @@ -1,123 +0,0 @@ - - - - - ApplicationChooser - - - ApplicationChooser - Выбор приложения - - - - Pick an application for: - Выбрать приложение для: - - - - 1 - - - - - Applications that handle JPEG - Приложения, которые поддерживают JPEG - - - - - - - New Subitem - - - - - - Other applications - Другие приложения - - - - Applications that handle %1 - Приложение, которое поддерживает %1 - - - - No applications found - Не найдены приложения - - - - MimetypeViewer - - - - None - Нет - - - - &Change... - &Изменить... - - - - &Choose... - &Выбрать... - - - - mimetypeviewer - - - File Associations - Ассоциация файлов - - - - Default application - Приложение по умолчанию - - - - &Choose... - &Выбрать... - - - - TextLabel - - - - - None - Нет - - - - Patterns - Шаблоны - - - - *.txt *.xml - - - - - MIME type - MIME-тип - - - - Icon - Значок - - - - Description - Описание - - - diff --git a/lxqt-config-input/CMakeLists.txt b/lxqt-config-input/CMakeLists.txt index 5c42961..e19386c 100644 --- a/lxqt-config-input/CMakeLists.txt +++ b/lxqt-config-input/CMakeLists.txt @@ -40,6 +40,16 @@ lxqt_translate_ts(QM_FILES ${lxqt-config-input_UIS} INSTALL_DIR "${LXQT_TRANSLATIONS_DIR}/${PROJECT_NAME}" + PULL_TRANSLATIONS + ${PULL_TRANSLATIONS} + CLEAN_TRANSLATIONS + ${CLEAN_TRANSLATIONS} + TRANSLATIONS_REPO + ${TRANSLATIONS_REPO} + TRANSLATIONS_REFSPEC + ${TRANSLATIONS_REFSPEC} + REPO_SUBDIR + "lxqt-config/${PROJECT_NAME}" ) lxqt_app_translation_loader(QM_LOADER ${PROJECT_NAME}) @@ -68,7 +78,7 @@ target_link_libraries(lxqt-config-input set_target_properties(lxqt-config-input PROPERTIES - INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/${LXQT_CONFIG_PROJECT}" + INSTALL_RPATH "${CMAKE_INSTALL_FULL_LIBDIR}/${LXQT_CONFIG_PROJECT}" ) install(TARGETS diff --git a/lxqt-config-input/keyboardlayoutconfig.cpp b/lxqt-config-input/keyboardlayoutconfig.cpp index 3f9f39b..7c4c1c7 100644 --- a/lxqt-config-input/keyboardlayoutconfig.cpp +++ b/lxqt-config-input/keyboardlayoutconfig.cpp @@ -94,8 +94,8 @@ enum ListSection{ void KeyboardLayoutConfig::loadLists() { // load known lists from xkb data files - // FIXME: maybe we should use different files for different OSes? - QFile file(QLatin1String("/usr/share/X11/xkb/rules/base.lst")); + // XKBD_BASELIST_PATH is os dependent see keyboardlayoutconfig.h + QFile file(QLatin1String(XKBD_BASELIST_PATH)); if(file.open(QIODevice::ReadOnly)) { ListSection section = NoSection; while(!file.atEnd()) { diff --git a/lxqt-config-input/keyboardlayoutconfig.h b/lxqt-config-input/keyboardlayoutconfig.h index 40642e0..383335f 100644 --- a/lxqt-config-input/keyboardlayoutconfig.h +++ b/lxqt-config-input/keyboardlayoutconfig.h @@ -21,6 +21,17 @@ #ifndef KEYBOARDLAYOUTCONFIG_H #define KEYBOARDLAYOUTCONFIG_H +#include +#ifdef Q_OS_LINUX +#define XKBD_BASELIST_PATH "/usr/share/X11/xkb/rules/base.lst" +#elif defined(Q_OS_FREEBSD) +#define XKBD_BASELIST_PATH "/usr/local/share/X11/xkb/rules/base.lst" +#elif defined(Q_OS_OPENBSD) +#define XKBD_BASELIST_PATH "/usr/X11R6/share/X11/xkb/rules/base.lst" +#else +#define XKBD_BASELIST_PATH "/usr/local/share/X11/xkb/rules/base.lst" +#endif + #include #include "keyboardlayoutinfo.h" #include diff --git a/lxqt-config-input/mouseconfig.cpp b/lxqt-config-input/mouseconfig.cpp index 0db04a5..0f25283 100644 --- a/lxqt-config-input/mouseconfig.cpp +++ b/lxqt-config-input/mouseconfig.cpp @@ -105,14 +105,23 @@ void MouseConfig::onMouseThresholdChanged(int value) { #define DEFAULT_PTR_MAP_SIZE 128 void MouseConfig::setLeftHandedMouse() { unsigned char* buttons; + unsigned char* more_buttons; int n_buttons, i; int idx_1 = 0, idx_3 = 1; buttons = (unsigned char*)malloc(DEFAULT_PTR_MAP_SIZE); + if(!buttons) { + return; + } n_buttons = XGetPointerMapping(QX11Info::display(), buttons, DEFAULT_PTR_MAP_SIZE); if(n_buttons > DEFAULT_PTR_MAP_SIZE) { - buttons = (unsigned char*)realloc(buttons, n_buttons); + more_buttons = (unsigned char*)realloc(buttons, n_buttons); + if(!more_buttons) { + free(buttons); + return; + } + buttons = more_buttons; n_buttons = XGetPointerMapping(QX11Info::display(), buttons, n_buttons); } diff --git a/lxqt-config-input/selectkeyboardlayoutdialog.cpp b/lxqt-config-input/selectkeyboardlayoutdialog.cpp index 99fac20..3bd5ef1 100644 --- a/lxqt-config-input/selectkeyboardlayoutdialog.cpp +++ b/lxqt-config-input/selectkeyboardlayoutdialog.cpp @@ -28,7 +28,7 @@ SelectKeyboardLayoutDialog::SelectKeyboardLayoutDialog(QMap< QString, KeyboardLa connect(ui.layouts, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)), SLOT(onLayoutChanged())); QMap::const_iterator it; - for(it = knownLayouts_.begin(); it != knownLayouts.end(); ++it) { + for(it = knownLayouts_.begin(); it != knownLayouts_.end(); ++it) { const QString& name = it.key(); const KeyboardLayoutInfo& info = *it; QListWidgetItem * item = new QListWidgetItem(info.description); diff --git a/lxqt-config-input/translations/lxinput-qt_template-zh_TW.ts b/lxqt-config-input/translations/lxinput-qt_template-zh_TW.ts deleted file mode 100644 index 8b5600d..0000000 --- a/lxqt-config-input/translations/lxinput-qt_template-zh_TW.ts +++ /dev/null @@ -1,82 +0,0 @@ - - - - MainDialog - - Input Device Preferences - 輸入裝置偏好設定 - - - Motion - 移動 - - - High - - - - Fast - - - - Sensitivity: - 敏感度: - - - Low - - - - Acceleration: - 加速度: - - - Slow - - - - 0 - - - - Left handed (Swap left and right mouse buttons) - 慣用左手 (將滑鼠左右鍵倒轉) - - - Mouse - 滑鼠 - - - Character Repeat - 字元重覆 - - - Long - - - - Repeat delay: - 重複延遲: - - - Short - - - - Repeat interval: - 重複間隔: - - - Type in the following box to test your keyboard settings - - - - Beep when there is an error of keyboard input - - - - Keyboard - 鍵盤 - - - diff --git a/lxqt-config-input/translations/lxqt-config-input.ts b/lxqt-config-input/translations/lxqt-config-input.ts deleted file mode 100644 index 39ed269..0000000 --- a/lxqt-config-input/translations/lxqt-config-input.ts +++ /dev/null @@ -1,258 +0,0 @@ - - - - - KeyboardConfig - - - Form - - - - - Cursor flash time: - - - - - <b>Keyboard</b> - - - - - Beep when there is an error of keyboard input - - - - - ms - - - - - Character Repeat - - - - - - Long - - - - - Repeat delay: - - - - - - Short - - - - - Repeat interval: - - - - - Type in the following box to test your keyboard settings - - - - - - 0 - - - - - Turn on NumLock after login - - - - - KeyboardLayoutConfig - - - <b>Keyboard Layout</b> - - - - - Layout - - - - - Variant - - - - - &Add - - - - - &Remove - - - - - up - - - - - down - - - - - Keyboard model: - - - - - Keys to change layout: - - - - - None - - - - - <html><head/><body><p><span style=" font-weight:600;">Note</span>: If you are using an <span style=" font-weight:600;">input method</span>, such as IBus, uim, fcitx, or gcin, the settings here <span style=" font-weight:600;">might not work</span> because they are overridden by the input methods.</p></body></html> - - - - - MouseConfig - - - Form - - - - - <b>Mouse</b> - - - - - Motion - - - - - High - - - - - Fast - - - - - Sensitivity: - - - - - Low - - - - - Acceleration: - - - - - Slow - - - - - - 0 - - - - - Double click interval: - - - - - ms - - - - - Wheel scroll lines: - - - - - Left handed (Swap left and right mouse buttons) - - - - - Single click to activate items - - - - - QObject - - - Keyboard and Mouse Settings - - - - - Mouse - - - - - Cursor - - - - - Keyboard - - - - - Keyboard Layout - - - - - SelectKeyboardLayoutDialog - - - Select a keyboard layout - - - - - Keyboard layout - - - - - Variant - - - - diff --git a/lxqt-config-input/translations/lxqt-config-input_af.ts b/lxqt-config-input/translations/lxqt-config-input_af.ts deleted file mode 100644 index ac74948..0000000 --- a/lxqt-config-input/translations/lxqt-config-input_af.ts +++ /dev/null @@ -1,258 +0,0 @@ - - - - - KeyboardConfig - - - Form - - - - - Cursor flash time: - - - - - <b>Keyboard</b> - - - - - Beep when there is an error of keyboard input - - - - - ms - - - - - Character Repeat - - - - - - Long - - - - - Repeat delay: - - - - - - Short - - - - - Repeat interval: - - - - - Type in the following box to test your keyboard settings - - - - - - 0 - - - - - Turn on NumLock after login - - - - - KeyboardLayoutConfig - - - <b>Keyboard Layout</b> - - - - - Layout - - - - - Variant - - - - - &Add - - - - - &Remove - - - - - up - - - - - down - - - - - Keyboard model: - - - - - Keys to change layout: - - - - - None - - - - - <html><head/><body><p><span style=" font-weight:600;">Note</span>: If you are using an <span style=" font-weight:600;">input method</span>, such as IBus, uim, fcitx, or gcin, the settings here <span style=" font-weight:600;">might not work</span> because they are overridden by the input methods.</p></body></html> - - - - - MouseConfig - - - Form - - - - - <b>Mouse</b> - - - - - Motion - - - - - High - - - - - Fast - - - - - Sensitivity: - - - - - Low - - - - - Acceleration: - - - - - Slow - - - - - - 0 - - - - - Double click interval: - - - - - ms - - - - - Wheel scroll lines: - - - - - Left handed (Swap left and right mouse buttons) - - - - - Single click to activate items - - - - - QObject - - - Keyboard and Mouse Settings - - - - - Mouse - - - - - Cursor - - - - - Keyboard - - - - - Keyboard Layout - - - - - SelectKeyboardLayoutDialog - - - Select a keyboard layout - - - - - Keyboard layout - - - - - Variant - - - - diff --git a/lxqt-config-input/translations/lxqt-config-input_ar.ts b/lxqt-config-input/translations/lxqt-config-input_ar.ts deleted file mode 100644 index d264db2..0000000 --- a/lxqt-config-input/translations/lxqt-config-input_ar.ts +++ /dev/null @@ -1,258 +0,0 @@ - - - - - KeyboardConfig - - - Form - - - - - Cursor flash time: - - - - - <b>Keyboard</b> - - - - - Beep when there is an error of keyboard input - - - - - ms - - - - - Character Repeat - - - - - - Long - - - - - Repeat delay: - - - - - - Short - - - - - Repeat interval: - - - - - Type in the following box to test your keyboard settings - - - - - - 0 - - - - - Turn on NumLock after login - - - - - KeyboardLayoutConfig - - - <b>Keyboard Layout</b> - - - - - Layout - - - - - Variant - - - - - &Add - - - - - &Remove - - - - - up - - - - - down - - - - - Keyboard model: - - - - - Keys to change layout: - - - - - None - - - - - <html><head/><body><p><span style=" font-weight:600;">Note</span>: If you are using an <span style=" font-weight:600;">input method</span>, such as IBus, uim, fcitx, or gcin, the settings here <span style=" font-weight:600;">might not work</span> because they are overridden by the input methods.</p></body></html> - - - - - MouseConfig - - - Form - - - - - <b>Mouse</b> - - - - - Motion - - - - - High - - - - - Fast - - - - - Sensitivity: - - - - - Low - - - - - Acceleration: - - - - - Slow - - - - - - 0 - - - - - Double click interval: - - - - - ms - - - - - Wheel scroll lines: - - - - - Left handed (Swap left and right mouse buttons) - - - - - Single click to activate items - - - - - QObject - - - Keyboard and Mouse Settings - - - - - Mouse - - - - - Cursor - - - - - Keyboard - - - - - Keyboard Layout - - - - - SelectKeyboardLayoutDialog - - - Select a keyboard layout - - - - - Keyboard layout - - - - - Variant - - - - diff --git a/lxqt-config-input/translations/lxqt-config-input_bg.ts b/lxqt-config-input/translations/lxqt-config-input_bg.ts deleted file mode 100644 index d4351ae..0000000 --- a/lxqt-config-input/translations/lxqt-config-input_bg.ts +++ /dev/null @@ -1,337 +0,0 @@ - - - - - KeyboardConfig - - - Form - - - - - Cursor flash time: - - - - - <b>Keyboard</b> - - - - - Beep when there is an error of keyboard input - Звуков сигнал, когато има грешка при набирането - - - - ms - - - - - Character Repeat - Повторение на знаци - - - - - Long - Дълго - - - - Repeat delay: - Задържане на повторението: - - - - - Short - Кратко - - - - Repeat interval: - Интервал на повторение: - - - - Type in the following box to test your keyboard settings - Наберете в следната кутия, за да тествате клавиатурните настройки - - - - - 0 - 0 - - - - Turn on NumLock after login - - - - - KeyboardLayoutConfig - - - <b>Keyboard Layout</b> - - - - - Layout - - - - - Variant - - - - - &Add - - - - - &Remove - - - - - up - - - - - down - - - - - Keyboard model: - - - - - Keys to change layout: - - - - - None - - - - - <html><head/><body><p><span style=" font-weight:600;">Note</span>: If you are using an <span style=" font-weight:600;">input method</span>, such as IBus, uim, fcitx, or gcin, the settings here <span style=" font-weight:600;">might not work</span> because they are overridden by the input methods.</p></body></html> - - - - - MainDialog - - Input Device Preferences - Настройки на входните устройства - - - Motion - Движение - - - High - Високо - - - Fast - Бързо - - - Sensitivity: - Чувствителност: - - - Low - Ниско - - - Acceleration: - Ускорение: - - - Slow - Бавно - - - 0 - 0 - - - Left handed (Swap left and right mouse buttons) - Лява ръка (смяна на ляв и десен бутони на мишката) - - - Mouse - Мишка - - - Character Repeat - Повторение на знаци - - - Long - Дълго - - - Repeat delay: - Задържане на повторението: - - - Short - Кратко - - - Repeat interval: - Интервал на повторение: - - - Type in the following box to test your keyboard settings - Наберете в следната кутия, за да тествате клавиатурните настройки - - - Beep when there is an error of keyboard input - Звуков сигнал, когато има грешка при набирането - - - Keyboard - Клавиатура - - - - MouseConfig - - - Form - - - - - <b>Mouse</b> - - - - - Motion - Движение - - - - High - Високо - - - - Fast - Бързо - - - - Sensitivity: - Чувствителност: - - - - Low - Ниско - - - - Acceleration: - Ускорение: - - - - Slow - Бавно - - - - - 0 - 0 - - - - Double click interval: - - - - - ms - - - - - Wheel scroll lines: - - - - - Left handed (Swap left and right mouse buttons) - Лява ръка (смяна на ляв и десен бутони на мишката) - - - - Single click to activate items - - - - - QObject - - - Keyboard and Mouse Settings - - - - - Mouse - Мишка - - - - Cursor - - - - - Keyboard - Клавиатура - - - - Keyboard Layout - - - - - SelectKeyboardLayoutDialog - - - Select a keyboard layout - - - - - Keyboard layout - - - - - Variant - - - - diff --git a/lxqt-config-input/translations/lxqt-config-input_bn.ts b/lxqt-config-input/translations/lxqt-config-input_bn.ts deleted file mode 100644 index eb38981..0000000 --- a/lxqt-config-input/translations/lxqt-config-input_bn.ts +++ /dev/null @@ -1,258 +0,0 @@ - - - - - KeyboardConfig - - - Form - - - - - Cursor flash time: - - - - - <b>Keyboard</b> - - - - - Beep when there is an error of keyboard input - - - - - ms - - - - - Character Repeat - - - - - - Long - - - - - Repeat delay: - - - - - - Short - - - - - Repeat interval: - - - - - Type in the following box to test your keyboard settings - - - - - - 0 - - - - - Turn on NumLock after login - - - - - KeyboardLayoutConfig - - - <b>Keyboard Layout</b> - - - - - Layout - - - - - Variant - - - - - &Add - - - - - &Remove - - - - - up - - - - - down - - - - - Keyboard model: - - - - - Keys to change layout: - - - - - None - - - - - <html><head/><body><p><span style=" font-weight:600;">Note</span>: If you are using an <span style=" font-weight:600;">input method</span>, such as IBus, uim, fcitx, or gcin, the settings here <span style=" font-weight:600;">might not work</span> because they are overridden by the input methods.</p></body></html> - - - - - MouseConfig - - - Form - - - - - <b>Mouse</b> - - - - - Motion - - - - - High - - - - - Fast - - - - - Sensitivity: - - - - - Low - - - - - Acceleration: - - - - - Slow - - - - - - 0 - - - - - Double click interval: - - - - - ms - - - - - Wheel scroll lines: - - - - - Left handed (Swap left and right mouse buttons) - - - - - Single click to activate items - - - - - QObject - - - Keyboard and Mouse Settings - - - - - Mouse - - - - - Cursor - - - - - Keyboard - - - - - Keyboard Layout - - - - - SelectKeyboardLayoutDialog - - - Select a keyboard layout - - - - - Keyboard layout - - - - - Variant - - - - diff --git a/lxqt-config-input/translations/lxqt-config-input_bn_IN.ts b/lxqt-config-input/translations/lxqt-config-input_bn_IN.ts deleted file mode 100644 index 5f7e60c..0000000 --- a/lxqt-config-input/translations/lxqt-config-input_bn_IN.ts +++ /dev/null @@ -1,258 +0,0 @@ - - - - - KeyboardConfig - - - Form - - - - - Cursor flash time: - - - - - <b>Keyboard</b> - - - - - Beep when there is an error of keyboard input - - - - - ms - - - - - Character Repeat - - - - - - Long - - - - - Repeat delay: - - - - - - Short - - - - - Repeat interval: - - - - - Type in the following box to test your keyboard settings - - - - - - 0 - - - - - Turn on NumLock after login - - - - - KeyboardLayoutConfig - - - <b>Keyboard Layout</b> - - - - - Layout - - - - - Variant - - - - - &Add - - - - - &Remove - - - - - up - - - - - down - - - - - Keyboard model: - - - - - Keys to change layout: - - - - - None - - - - - <html><head/><body><p><span style=" font-weight:600;">Note</span>: If you are using an <span style=" font-weight:600;">input method</span>, such as IBus, uim, fcitx, or gcin, the settings here <span style=" font-weight:600;">might not work</span> because they are overridden by the input methods.</p></body></html> - - - - - MouseConfig - - - Form - - - - - <b>Mouse</b> - - - - - Motion - - - - - High - - - - - Fast - - - - - Sensitivity: - - - - - Low - - - - - Acceleration: - - - - - Slow - - - - - - 0 - - - - - Double click interval: - - - - - ms - - - - - Wheel scroll lines: - - - - - Left handed (Swap left and right mouse buttons) - - - - - Single click to activate items - - - - - QObject - - - Keyboard and Mouse Settings - - - - - Mouse - - - - - Cursor - - - - - Keyboard - - - - - Keyboard Layout - - - - - SelectKeyboardLayoutDialog - - - Select a keyboard layout - - - - - Keyboard layout - - - - - Variant - - - - diff --git a/lxqt-config-input/translations/lxqt-config-input_ca.ts b/lxqt-config-input/translations/lxqt-config-input_ca.ts deleted file mode 100644 index 431b70e..0000000 --- a/lxqt-config-input/translations/lxqt-config-input_ca.ts +++ /dev/null @@ -1,258 +0,0 @@ - - - - - KeyboardConfig - - - Form - - - - - Cursor flash time: - - - - - <b>Keyboard</b> - - - - - Beep when there is an error of keyboard input - - - - - ms - - - - - Character Repeat - - - - - - Long - - - - - Repeat delay: - - - - - - Short - - - - - Repeat interval: - - - - - Type in the following box to test your keyboard settings - - - - - - 0 - - - - - Turn on NumLock after login - - - - - KeyboardLayoutConfig - - - <b>Keyboard Layout</b> - - - - - Layout - - - - - Variant - - - - - &Add - - - - - &Remove - - - - - up - - - - - down - - - - - Keyboard model: - - - - - Keys to change layout: - - - - - None - - - - - <html><head/><body><p><span style=" font-weight:600;">Note</span>: If you are using an <span style=" font-weight:600;">input method</span>, such as IBus, uim, fcitx, or gcin, the settings here <span style=" font-weight:600;">might not work</span> because they are overridden by the input methods.</p></body></html> - - - - - MouseConfig - - - Form - - - - - <b>Mouse</b> - - - - - Motion - - - - - High - - - - - Fast - - - - - Sensitivity: - - - - - Low - - - - - Acceleration: - - - - - Slow - - - - - - 0 - - - - - Double click interval: - - - - - ms - - - - - Wheel scroll lines: - - - - - Left handed (Swap left and right mouse buttons) - - - - - Single click to activate items - - - - - QObject - - - Keyboard and Mouse Settings - - - - - Mouse - - - - - Cursor - - - - - Keyboard - - - - - Keyboard Layout - - - - - SelectKeyboardLayoutDialog - - - Select a keyboard layout - - - - - Keyboard layout - - - - - Variant - - - - diff --git a/lxqt-config-input/translations/lxqt-config-input_cs.ts b/lxqt-config-input/translations/lxqt-config-input_cs.ts deleted file mode 100644 index 7b52098..0000000 --- a/lxqt-config-input/translations/lxqt-config-input_cs.ts +++ /dev/null @@ -1,258 +0,0 @@ - - - - - KeyboardConfig - - - Form - - - - - Cursor flash time: - - - - - <b>Keyboard</b> - - - - - Beep when there is an error of keyboard input - - - - - ms - - - - - Character Repeat - - - - - - Long - - - - - Repeat delay: - - - - - - Short - - - - - Repeat interval: - - - - - Type in the following box to test your keyboard settings - - - - - - 0 - - - - - Turn on NumLock after login - - - - - KeyboardLayoutConfig - - - <b>Keyboard Layout</b> - - - - - Layout - - - - - Variant - - - - - &Add - - - - - &Remove - - - - - up - - - - - down - - - - - Keyboard model: - - - - - Keys to change layout: - - - - - None - - - - - <html><head/><body><p><span style=" font-weight:600;">Note</span>: If you are using an <span style=" font-weight:600;">input method</span>, such as IBus, uim, fcitx, or gcin, the settings here <span style=" font-weight:600;">might not work</span> because they are overridden by the input methods.</p></body></html> - - - - - MouseConfig - - - Form - - - - - <b>Mouse</b> - - - - - Motion - - - - - High - - - - - Fast - - - - - Sensitivity: - - - - - Low - - - - - Acceleration: - - - - - Slow - - - - - - 0 - - - - - Double click interval: - - - - - ms - - - - - Wheel scroll lines: - - - - - Left handed (Swap left and right mouse buttons) - - - - - Single click to activate items - - - - - QObject - - - Keyboard and Mouse Settings - - - - - Mouse - - - - - Cursor - - - - - Keyboard - - - - - Keyboard Layout - - - - - SelectKeyboardLayoutDialog - - - Select a keyboard layout - - - - - Keyboard layout - - - - - Variant - - - - diff --git a/lxqt-config-input/translations/lxqt-config-input_da.ts b/lxqt-config-input/translations/lxqt-config-input_da.ts deleted file mode 100644 index c2ca1f8..0000000 --- a/lxqt-config-input/translations/lxqt-config-input_da.ts +++ /dev/null @@ -1,317 +0,0 @@ - - - - - KeyboardConfig - - - Form - - - - - Cursor flash time: - - - - - <b>Keyboard</b> - - - - - Beep when there is an error of keyboard input - - - - - ms - - - - - Character Repeat - - - - - - Long - Lang - - - - Repeat delay: - Interval mellem gentagelser: - - - - - Short - Kort - - - - Repeat interval: - Gentagelsesinterval: - - - - Type in the following box to test your keyboard settings - - - - - - 0 - - - - - Turn on NumLock after login - - - - - KeyboardLayoutConfig - - - <b>Keyboard Layout</b> - - - - - Layout - - - - - Variant - - - - - &Add - - - - - &Remove - - - - - up - - - - - down - - - - - Keyboard model: - - - - - Keys to change layout: - - - - - None - - - - - <html><head/><body><p><span style=" font-weight:600;">Note</span>: If you are using an <span style=" font-weight:600;">input method</span>, such as IBus, uim, fcitx, or gcin, the settings here <span style=" font-weight:600;">might not work</span> because they are overridden by the input methods.</p></body></html> - - - - - MainDialog - - Input Device Preferences - Enhedspræference - - - Motion - Bevægelse - - - High - Høj - - - Fast - Hurtig - - - Sensitivity: - Følsomhed: - - - Low - Lav - - - Acceleration: - Enhedspræference - - - Slow - Langsom - - - Left handed (Swap left and right mouse buttons) - Venstrehåndet (Byt rundt på venstre og højre museknap) - - - Mouse - Mus - - - Long - Lang - - - Repeat delay: - Interval mellem gentagelser: - - - Short - Kort - - - Repeat interval: - Gentagelsesinterval: - - - - MouseConfig - - - Form - - - - - <b>Mouse</b> - - - - - Motion - Bevægelse - - - - High - Høj - - - - Fast - Hurtig - - - - Sensitivity: - Følsomhed: - - - - Low - Lav - - - - Acceleration: - Enhedspræference - - - - Slow - Langsom - - - - - 0 - - - - - Double click interval: - - - - - ms - - - - - Wheel scroll lines: - - - - - Left handed (Swap left and right mouse buttons) - Venstrehåndet (Byt rundt på venstre og højre museknap) - - - - Single click to activate items - - - - - QObject - - - Keyboard and Mouse Settings - - - - - Mouse - Mus - - - - Cursor - - - - - Keyboard - - - - - Keyboard Layout - - - - - SelectKeyboardLayoutDialog - - - Select a keyboard layout - - - - - Keyboard layout - - - - - Variant - - - - diff --git a/lxqt-config-input/translations/lxqt-config-input_de.ts b/lxqt-config-input/translations/lxqt-config-input_de.ts deleted file mode 100644 index 1214980..0000000 --- a/lxqt-config-input/translations/lxqt-config-input_de.ts +++ /dev/null @@ -1,258 +0,0 @@ - - - - - KeyboardConfig - - - Form - Dialogfenster - - - - Cursor flash time: - Cursorblinkrate: - - - - <b>Keyboard</b> - <b>Tastatur</b> - - - - Beep when there is an error of keyboard input - Signalton bei Fehleingaben - - - - ms - ms - - - - Character Repeat - Zeichenwiederholung - - - - - Long - Lang - - - - Repeat delay: - Verzögerung: - - - - - Short - Kurz - - - - Repeat interval: - Geschwindigkeit: - - - - Type in the following box to test your keyboard settings - Testbereich für Tastatureinstellungen - - - - - 0 - 0 - - - - Turn on NumLock after login - - - - - KeyboardLayoutConfig - - - <b>Keyboard Layout</b> - <b>Tastenbelegung</b> - - - - Layout - Belegung - - - - Variant - Variante - - - - &Add - H&inzufügen - - - - &Remove - &Entfernen - - - - up - Nach oben - - - - down - Nach unten - - - - Keyboard model: - Tastatur-Modell: - - - - Keys to change layout: - Tastenkombination zum Ändern der Belegung: - - - - None - Keine - - - - <html><head/><body><p><span style=" font-weight:600;">Note</span>: If you are using an <span style=" font-weight:600;">input method</span>, such as IBus, uim, fcitx, or gcin, the settings here <span style=" font-weight:600;">might not work</span> because they are overridden by the input methods.</p></body></html> - <html><head/><body><p><span style=" font-weight:600;">Anmerkung</span>: Falls Sie eine <span style=" font-weight:600;">Eingabemethode</span> wie IBus, uim, fcitx oder gcin verwenden, werden die Einstellungen hier <span style=" font-weight:600;">möglicherweise nicht funktionieren</span>, weil sie von den Eingabemethoden aufgehoben werden.</p></body></html> - - - - MouseConfig - - - Form - Dialogfenster - - - - <b>Mouse</b> - <b>Maus</b> - - - - Motion - Bewegung - - - - High - Hoch - - - - Fast - Schnell - - - - Sensitivity: - Empfindlichkeit: - - - - Low - Niedrig - - - - Acceleration: - Beschleunigung: - - - - Slow - Langsam - - - - - 0 - 0 - - - - Double click interval: - Doppelklickgeschwindigkeit: - - - - ms - ms - - - - Wheel scroll lines: - Mausrad erzeugt Bildlauf um ... Zeilen: - - - - Left handed (Swap left and right mouse buttons) - Linkshändige Bedienung (linke und rechte Maustaste vertauschen) - - - - Single click to activate items - Einfacher Klick aktiviert Elemente - - - - QObject - - - Keyboard and Mouse Settings - Einstellungen von Tastatur und Maus - - - - Mouse - Maus - - - - Cursor - Cursor - - - - Keyboard - Tastatur - - - - Keyboard Layout - Tastenbelegung - - - - SelectKeyboardLayoutDialog - - - Select a keyboard layout - Auswählen der Tastenbelegung - - - - Keyboard layout - Tastenbelegung - - - - Variant - Variante - - - diff --git a/lxqt-config-input/translations/lxqt-config-input_el.ts b/lxqt-config-input/translations/lxqt-config-input_el.ts deleted file mode 100644 index 06b0d1c..0000000 --- a/lxqt-config-input/translations/lxqt-config-input_el.ts +++ /dev/null @@ -1,258 +0,0 @@ - - - - - KeyboardConfig - - - Form - Παράθυρο διαλόγου - - - - Cursor flash time: - Χρόνος αναβοσβήματος δρομέα: - - - - <b>Keyboard</b> - <b>Πληκτρολόγιο</b> - - - - Beep when there is an error of keyboard input - Προειδοποιητικός ήχος αν υπάρχει σφάλμα στην είσοδο πληκτρολογίου - - - - ms - ms - - - - Character Repeat - Επανάληψη χαρακτήρα - - - - - Long - Μακρύ - - - - Repeat delay: - Καθυστέρηση επανάληψης: - - - - - Short - Βραχύ - - - - Repeat interval: - Χρονικό διάστημα επανάληψης: - - - - Type in the following box to test your keyboard settings - Πληκτρολογήστε στο παρακάτω πλαίσιο για να δοκιμάσετε τις ρυθμίσεις του πληκτρολογίου - - - - - 0 - 0 - - - - Turn on NumLock after login - - - - - KeyboardLayoutConfig - - - <b>Keyboard Layout</b> - <b>Διάταξη πληκτρολογίου</b> - - - - Layout - Διάταξη - - - - Variant - Παραλλαγή - - - - &Add - &Προσθήκη - - - - &Remove - Α&φαίρεση - - - - up - πάνω - - - - down - κάτω - - - - Keyboard model: - Μοντέλο πληκτρολογίου: - - - - Keys to change layout: - Πλήκτρα αλλαγής της διάταξης: - - - - None - Κανένα - - - - <html><head/><body><p><span style=" font-weight:600;">Note</span>: If you are using an <span style=" font-weight:600;">input method</span>, such as IBus, uim, fcitx, or gcin, the settings here <span style=" font-weight:600;">might not work</span> because they are overridden by the input methods.</p></body></html> - <html><head/><body><p><span style=" font-weight:600;">Σημείωση</span>: Αν χρησιμοποιείτε μια <span style=" font-weight:600;">μέθοδο εισαγωγής</span>, όπως IBus, uim, fcitx, ή gcin, οι παρούσες ρυθμίσεις ίσως να <span style=" font-weight:600;">μην λειτουργούν</span> ένεκα της αντικατάστασής τους από τις μεθόδους εισαγωγής.</p></body></html> - - - - MouseConfig - - - Form - Παράθυρο διαλόγου - - - - <b>Mouse</b> - <b>Ποντίκι</b> - - - - Motion - Κίνηση - - - - High - Υψηλό - - - - Fast - Γρήγορο - - - - Sensitivity: - Ευαισθησία: - - - - Low - Χαμηλό - - - - Acceleration: - Επιτάχυνση: - - - - Slow - Αργό - - - - - 0 - 0 - - - - Double click interval: - Χρονικό διάστημα διπλού κλικ: - - - - ms - ms - - - - Wheel scroll lines: - Γραμμές κύλισης τροχού: - - - - Left handed (Swap left and right mouse buttons) - Αριστερόχειρας (Εναλλαγή του δεξιού και αριστερού κουμπιού) - - - - Single click to activate items - Ενεργοποίηση των αντικειμένων με μονό κλικ - - - - QObject - - - Keyboard and Mouse Settings - Ρυθμίσεις πληκτρολογίου και ποντικιού - - - - Mouse - Ποντίκι - - - - Cursor - Δρομέας - - - - Keyboard - Πληκτρολόγιο - - - - Keyboard Layout - Διάταξη πληκτρολογίου - - - - SelectKeyboardLayoutDialog - - - Select a keyboard layout - Επιλέξτε μια διάταξη πληκτρολογίου - - - - Keyboard layout - Διάταξη πληκτρολογίου - - - - Variant - Παραλλαγή - - - diff --git a/lxqt-config-input/translations/lxqt-config-input_es.ts b/lxqt-config-input/translations/lxqt-config-input_es.ts deleted file mode 100644 index ec98896..0000000 --- a/lxqt-config-input/translations/lxqt-config-input_es.ts +++ /dev/null @@ -1,337 +0,0 @@ - - - - - KeyboardConfig - - - Form - - - - - Cursor flash time: - - - - - <b>Keyboard</b> - - - - - Beep when there is an error of keyboard input - Pitar cuando ocurra un error de entrada del teclado - - - - ms - - - - - Character Repeat - Repetición de caracteres - - - - - Long - Largo - - - - Repeat delay: - Retardo de repetición: - - - - - Short - Corto - - - - Repeat interval: - Intervalo de repetición: - - - - Type in the following box to test your keyboard settings - Escriba en el siguiente cuadro para probar la configuración - - - - - 0 - 0 - - - - Turn on NumLock after login - - - - - KeyboardLayoutConfig - - - <b>Keyboard Layout</b> - - - - - Layout - - - - - Variant - - - - - &Add - - - - - &Remove - - - - - up - - - - - down - - - - - Keyboard model: - - - - - Keys to change layout: - - - - - None - - - - - <html><head/><body><p><span style=" font-weight:600;">Note</span>: If you are using an <span style=" font-weight:600;">input method</span>, such as IBus, uim, fcitx, or gcin, the settings here <span style=" font-weight:600;">might not work</span> because they are overridden by the input methods.</p></body></html> - - - - - MainDialog - - Input Device Preferences - Preferencias del dispositivo de entrada - - - Motion - Movimiento - - - High - Alta - - - Fast - Rápido - - - Sensitivity: - Sensibilidad: - - - Low - Baja - - - Acceleration: - Aceleración: - - - Slow - Lento - - - 0 - 0 - - - Left handed (Swap left and right mouse buttons) - Zurdo (invertir botones izquierdo y derecho del ratón) - - - Mouse - Ratón - - - Character Repeat - Repetición de caracteres - - - Long - Largo - - - Repeat delay: - Retardo de repetición: - - - Short - Corto - - - Repeat interval: - Intervalo de repetición: - - - Type in the following box to test your keyboard settings - Escriba en el siguiente cuadro para probar la configuración - - - Beep when there is an error of keyboard input - Pitar cuando ocurra un error de entrada del teclado - - - Keyboard - Teclado - - - - MouseConfig - - - Form - - - - - <b>Mouse</b> - - - - - Motion - Movimiento - - - - High - Alta - - - - Fast - Rápido - - - - Sensitivity: - Sensibilidad: - - - - Low - Baja - - - - Acceleration: - Aceleración: - - - - Slow - Lento - - - - - 0 - 0 - - - - Double click interval: - - - - - ms - - - - - Wheel scroll lines: - - - - - Left handed (Swap left and right mouse buttons) - Zurdo (invertir botones izquierdo y derecho del ratón) - - - - Single click to activate items - - - - - QObject - - - Keyboard and Mouse Settings - - - - - Mouse - Ratón - - - - Cursor - - - - - Keyboard - Teclado - - - - Keyboard Layout - - - - - SelectKeyboardLayoutDialog - - - Select a keyboard layout - - - - - Keyboard layout - - - - - Variant - - - - diff --git a/lxqt-config-input/translations/lxqt-config-input_eu.ts b/lxqt-config-input/translations/lxqt-config-input_eu.ts deleted file mode 100644 index ade7da1..0000000 --- a/lxqt-config-input/translations/lxqt-config-input_eu.ts +++ /dev/null @@ -1,329 +0,0 @@ - - - - - KeyboardConfig - - - Form - - - - - Cursor flash time: - - - - - <b>Keyboard</b> - - - - - Beep when there is an error of keyboard input - - - - - ms - - - - - Character Repeat - Karaktere-errepikapena - - - - - Long - Luzea - - - - Repeat delay: - Errepikatze atzerapena: - - - - - Short - Laburra - - - - Repeat interval: - Errepikatze tartea: - - - - Type in the following box to test your keyboard settings - Idatzi ondorengo testu-koadroan zure teklatuaren ezarpenak probatzeko - - - - - 0 - 0 - - - - Turn on NumLock after login - - - - - KeyboardLayoutConfig - - - <b>Keyboard Layout</b> - - - - - Layout - - - - - Variant - - - - - &Add - - - - - &Remove - - - - - up - - - - - down - - - - - Keyboard model: - - - - - Keys to change layout: - - - - - None - - - - - <html><head/><body><p><span style=" font-weight:600;">Note</span>: If you are using an <span style=" font-weight:600;">input method</span>, such as IBus, uim, fcitx, or gcin, the settings here <span style=" font-weight:600;">might not work</span> because they are overridden by the input methods.</p></body></html> - - - - - MainDialog - - Input Device Preferences - Sarrerako gailuaren hobespenak - - - Motion - Mugimendua - - - High - Altua - - - Fast - Azkarra - - - Sensitivity: - Sentikortasuna: - - - Low - Baxua - - - Acceleration: - Azelerazioa: - - - Slow - Mantsoa - - - 0 - 0 - - - Mouse - Sagua - - - Character Repeat - Karaktere-errepikapena - - - Long - Luzea - - - Repeat delay: - Errepikatze atzerapena: - - - Short - Laburra - - - Repeat interval: - Errepikatze tartea: - - - Type in the following box to test your keyboard settings - Idatzi ondorengo testu-koadroan zure teklatuaren ezarpenak probatzeko - - - Keyboard - Teklatua - - - - MouseConfig - - - Form - - - - - <b>Mouse</b> - - - - - Motion - Mugimendua - - - - High - Altua - - - - Fast - Azkarra - - - - Sensitivity: - Sentikortasuna: - - - - Low - Baxua - - - - Acceleration: - Azelerazioa: - - - - Slow - Mantsoa - - - - - 0 - 0 - - - - Double click interval: - - - - - ms - - - - - Wheel scroll lines: - - - - - Left handed (Swap left and right mouse buttons) - - - - - Single click to activate items - - - - - QObject - - - Keyboard and Mouse Settings - - - - - Mouse - Sagua - - - - Cursor - - - - - Keyboard - Teklatua - - - - Keyboard Layout - - - - - SelectKeyboardLayoutDialog - - - Select a keyboard layout - - - - - Keyboard layout - - - - - Variant - - - - diff --git a/lxqt-config-input/translations/lxqt-config-input_fi.ts b/lxqt-config-input/translations/lxqt-config-input_fi.ts deleted file mode 100644 index f13541f..0000000 --- a/lxqt-config-input/translations/lxqt-config-input_fi.ts +++ /dev/null @@ -1,337 +0,0 @@ - - - - - KeyboardConfig - - - Form - - - - - Cursor flash time: - - - - - <b>Keyboard</b> - - - - - Beep when there is an error of keyboard input - Piippaa kun näppäimistön näppäilyssä tapahtuu virhe - - - - ms - - - - - Character Repeat - Merkin toisto - - - - - Long - Pitkä - - - - Repeat delay: - Toiston viive: - - - - - Short - Lyhyt - - - - Repeat interval: - Toistoväli: - - - - Type in the following box to test your keyboard settings - Voit kokeilla näppäimistön asetuksia alla olevaan laatikkoon - - - - - 0 - 0 - - - - Turn on NumLock after login - - - - - KeyboardLayoutConfig - - - <b>Keyboard Layout</b> - - - - - Layout - - - - - Variant - - - - - &Add - - - - - &Remove - - - - - up - - - - - down - - - - - Keyboard model: - - - - - Keys to change layout: - - - - - None - - - - - <html><head/><body><p><span style=" font-weight:600;">Note</span>: If you are using an <span style=" font-weight:600;">input method</span>, such as IBus, uim, fcitx, or gcin, the settings here <span style=" font-weight:600;">might not work</span> because they are overridden by the input methods.</p></body></html> - - - - - MainDialog - - Input Device Preferences - Syötelaitteiden asetukset - - - Motion - Liike - - - High - Suuri - - - Fast - Nopea - - - Sensitivity: - Herkkyys: - - - Low - Vähäinen - - - Acceleration: - Kiihdytys: - - - Slow - Hidas - - - 0 - 0 - - - Left handed (Swap left and right mouse buttons) - Vasenkätinen (vaihda oikean ja vasemman hiiren napin paikkoja) - - - Mouse - Hiiri - - - Character Repeat - Merkin toisto - - - Long - Pitkä - - - Repeat delay: - Toiston viive: - - - Short - Lyhyt - - - Repeat interval: - Toistoväli: - - - Type in the following box to test your keyboard settings - Voit kokeilla näppäimistön asetuksia alla olevaan laatikkoon - - - Beep when there is an error of keyboard input - Piippaa kun näppäimistön näppäilyssä tapahtuu virhe - - - Keyboard - Näppäimistö - - - - MouseConfig - - - Form - - - - - <b>Mouse</b> - - - - - Motion - Liike - - - - High - Suuri - - - - Fast - Nopea - - - - Sensitivity: - Herkkyys: - - - - Low - Vähäinen - - - - Acceleration: - Kiihdytys: - - - - Slow - Hidas - - - - - 0 - 0 - - - - Double click interval: - - - - - ms - - - - - Wheel scroll lines: - - - - - Left handed (Swap left and right mouse buttons) - Vasenkätinen (vaihda oikean ja vasemman hiiren napin paikkoja) - - - - Single click to activate items - - - - - QObject - - - Keyboard and Mouse Settings - - - - - Mouse - Hiiri - - - - Cursor - - - - - Keyboard - Näppäimistö - - - - Keyboard Layout - - - - - SelectKeyboardLayoutDialog - - - Select a keyboard layout - - - - - Keyboard layout - - - - - Variant - - - - diff --git a/lxqt-config-input/translations/lxqt-config-input_fr.ts b/lxqt-config-input/translations/lxqt-config-input_fr.ts deleted file mode 100644 index c8c8f9b..0000000 --- a/lxqt-config-input/translations/lxqt-config-input_fr.ts +++ /dev/null @@ -1,337 +0,0 @@ - - - - - KeyboardConfig - - - Form - - - - - Cursor flash time: - - - - - <b>Keyboard</b> - - - - - Beep when there is an error of keyboard input - Émettre un son lors d'une erreur d'entrée sur le clavier - - - - ms - - - - - Character Repeat - Répétition de caractère - - - - - Long - Long - - - - Repeat delay: - Délai de répétition : - - - - - Short - Court - - - - Repeat interval: - Intervalle de répétition : - - - - Type in the following box to test your keyboard settings - Tapez dans le champ ci-dessous pour tester vos paramètres clavier - - - - - 0 - 0 - - - - Turn on NumLock after login - - - - - KeyboardLayoutConfig - - - <b>Keyboard Layout</b> - - - - - Layout - - - - - Variant - - - - - &Add - - - - - &Remove - - - - - up - - - - - down - - - - - Keyboard model: - - - - - Keys to change layout: - - - - - None - - - - - <html><head/><body><p><span style=" font-weight:600;">Note</span>: If you are using an <span style=" font-weight:600;">input method</span>, such as IBus, uim, fcitx, or gcin, the settings here <span style=" font-weight:600;">might not work</span> because they are overridden by the input methods.</p></body></html> - - - - - MainDialog - - Input Device Preferences - Préférences des périphériques d'entrée - - - Motion - Mouvement - - - High - Forte - - - Fast - Rapide - - - Sensitivity: - Sensibilité : - - - Low - Faible - - - Acceleration: - Accélération : - - - Slow - Lente - - - 0 - 0 - - - Left handed (Swap left and right mouse buttons) - Gaucher (inverse les boutons droit et gauche de la souris) - - - Mouse - Souris - - - Character Repeat - Répétition de caractère - - - Long - Long - - - Repeat delay: - Délai de répétition : - - - Short - Court - - - Repeat interval: - Intervalle de répétition : - - - Type in the following box to test your keyboard settings - Tapez dans le champ ci-dessous pour tester vos paramètres clavier - - - Beep when there is an error of keyboard input - Émettre un son lors d'une erreur d'entrée sur le clavier - - - Keyboard - Clavier - - - - MouseConfig - - - Form - - - - - <b>Mouse</b> - - - - - Motion - Mouvement - - - - High - Forte - - - - Fast - Rapide - - - - Sensitivity: - Sensibilité : - - - - Low - Faible - - - - Acceleration: - Accélération : - - - - Slow - Lente - - - - - 0 - 0 - - - - Double click interval: - - - - - ms - - - - - Wheel scroll lines: - - - - - Left handed (Swap left and right mouse buttons) - Gaucher (inverse les boutons droit et gauche de la souris) - - - - Single click to activate items - - - - - QObject - - - Keyboard and Mouse Settings - - - - - Mouse - Souris - - - - Cursor - - - - - Keyboard - Clavier - - - - Keyboard Layout - - - - - SelectKeyboardLayoutDialog - - - Select a keyboard layout - - - - - Keyboard layout - - - - - Variant - - - - diff --git a/lxqt-config-input/translations/lxqt-config-input_gl.ts b/lxqt-config-input/translations/lxqt-config-input_gl.ts deleted file mode 100644 index 2beab8e..0000000 --- a/lxqt-config-input/translations/lxqt-config-input_gl.ts +++ /dev/null @@ -1,337 +0,0 @@ - - - - - KeyboardConfig - - - Form - - - - - Cursor flash time: - - - - - <b>Keyboard</b> - - - - - Beep when there is an error of keyboard input - Pitar cando se produza un erro de entrada de teclado - - - - ms - - - - - Character Repeat - Repetición de caracteres - - - - - Long - Longa - - - - Repeat delay: - Atraso da repetición: - - - - - Short - Curta - - - - Repeat interval: - Intervalo de repetición: - - - - Type in the following box to test your keyboard settings - Escriba na seguinte caixa para probar os axustes do teclado - - - - - 0 - 0 - - - - Turn on NumLock after login - - - - - KeyboardLayoutConfig - - - <b>Keyboard Layout</b> - - - - - Layout - - - - - Variant - - - - - &Add - - - - - &Remove - - - - - up - - - - - down - - - - - Keyboard model: - - - - - Keys to change layout: - - - - - None - - - - - <html><head/><body><p><span style=" font-weight:600;">Note</span>: If you are using an <span style=" font-weight:600;">input method</span>, such as IBus, uim, fcitx, or gcin, the settings here <span style=" font-weight:600;">might not work</span> because they are overridden by the input methods.</p></body></html> - - - - - MainDialog - - Input Device Preferences - Preferencias do dispositivos de entrada - - - Motion - Movemento - - - High - Alto - - - Fast - Rápido - - - Sensitivity: - Sensibilidade: - - - Low - Baixa - - - Acceleration: - Aceleración: - - - Slow - Lenta - - - 0 - 0 - - - Left handed (Swap left and right mouse buttons) - Zurdo (Intercambiar botóns dereito e esquerdo do rato) - - - Mouse - Rato - - - Character Repeat - Repetición de caracteres - - - Long - Longa - - - Repeat delay: - Atraso da repetición: - - - Short - Curta - - - Repeat interval: - Intervalo de repetición: - - - Type in the following box to test your keyboard settings - Escriba na seguinte caixa para probar os axustes do teclado - - - Beep when there is an error of keyboard input - Pitar cando se produza un erro de entrada de teclado - - - Keyboard - Teclado - - - - MouseConfig - - - Form - - - - - <b>Mouse</b> - - - - - Motion - Movemento - - - - High - Alto - - - - Fast - Rápido - - - - Sensitivity: - Sensibilidade: - - - - Low - Baixa - - - - Acceleration: - Aceleración: - - - - Slow - Lenta - - - - - 0 - 0 - - - - Double click interval: - - - - - ms - - - - - Wheel scroll lines: - - - - - Left handed (Swap left and right mouse buttons) - Zurdo (Intercambiar botóns dereito e esquerdo do rato) - - - - Single click to activate items - - - - - QObject - - - Keyboard and Mouse Settings - - - - - Mouse - Rato - - - - Cursor - - - - - Keyboard - Teclado - - - - Keyboard Layout - - - - - SelectKeyboardLayoutDialog - - - Select a keyboard layout - - - - - Keyboard layout - - - - - Variant - - - - diff --git a/lxqt-config-input/translations/lxqt-config-input_hr.ts b/lxqt-config-input/translations/lxqt-config-input_hr.ts deleted file mode 100644 index e91824f..0000000 --- a/lxqt-config-input/translations/lxqt-config-input_hr.ts +++ /dev/null @@ -1,333 +0,0 @@ - - - - - KeyboardConfig - - - Form - - - - - Cursor flash time: - - - - - <b>Keyboard</b> - - - - - Beep when there is an error of keyboard input - - - - - ms - - - - - Character Repeat - Ponavljanje znaka - - - - - Long - Dugačko - - - - Repeat delay: - Odgoda ponavljanja: - - - - - Short - Kratko - - - - Repeat interval: - Interval ponavljanja: - - - - Type in the following box to test your keyboard settings - Tipkajte u slijedeće polje da biste testirali postavke tipkovnice - - - - - 0 - 0 - - - - Turn on NumLock after login - - - - - KeyboardLayoutConfig - - - <b>Keyboard Layout</b> - - - - - Layout - - - - - Variant - - - - - &Add - - - - - &Remove - - - - - up - - - - - down - - - - - Keyboard model: - - - - - Keys to change layout: - - - - - None - - - - - <html><head/><body><p><span style=" font-weight:600;">Note</span>: If you are using an <span style=" font-weight:600;">input method</span>, such as IBus, uim, fcitx, or gcin, the settings here <span style=" font-weight:600;">might not work</span> because they are overridden by the input methods.</p></body></html> - - - - - MainDialog - - Input Device Preferences - Osobitosti ulaznog uređaja - - - Motion - Pokret: - - - High - Visok - - - Fast - Brzo - - - Sensitivity: - Osijetljivost: - - - Low - Nisko - - - Acceleration: - Ubrzanje: - - - Slow - Sporo - - - 0 - 0 - - - Left handed (Swap left and right mouse buttons) - Ljevoruki (premješta lijevo i desno dugme miša) - - - Mouse - Miš - - - Character Repeat - Ponavljanje znaka - - - Long - Dugačko - - - Repeat delay: - Odgoda ponavljanja: - - - Short - Kratko - - - Repeat interval: - Interval ponavljanja: - - - Type in the following box to test your keyboard settings - Tipkajte u slijedeće polje da biste testirali postavke tipkovnice - - - Keyboard - Tipkovnica - - - - MouseConfig - - - Form - - - - - <b>Mouse</b> - - - - - Motion - Pokret: - - - - High - Visok - - - - Fast - Brzo - - - - Sensitivity: - Osijetljivost: - - - - Low - Nisko - - - - Acceleration: - Ubrzanje: - - - - Slow - Sporo - - - - - 0 - 0 - - - - Double click interval: - - - - - ms - - - - - Wheel scroll lines: - - - - - Left handed (Swap left and right mouse buttons) - Ljevoruki (premješta lijevo i desno dugme miša) - - - - Single click to activate items - - - - - QObject - - - Keyboard and Mouse Settings - - - - - Mouse - Miš - - - - Cursor - - - - - Keyboard - Tipkovnica - - - - Keyboard Layout - - - - - SelectKeyboardLayoutDialog - - - Select a keyboard layout - - - - - Keyboard layout - - - - - Variant - - - - diff --git a/lxqt-config-input/translations/lxqt-config-input_hu.ts b/lxqt-config-input/translations/lxqt-config-input_hu.ts deleted file mode 100644 index d00fbc9..0000000 --- a/lxqt-config-input/translations/lxqt-config-input_hu.ts +++ /dev/null @@ -1,258 +0,0 @@ - - - - - KeyboardConfig - - - Form - Űrlap - - - - Cursor flash time: - Kurzos villogási idő - - - - <b>Keyboard</b> - <b>Billentyűzet</b> - - - - Beep when there is an error of keyboard input - Billentyű hibánál csipogás - - - - ms - - - - - Character Repeat - Ismétlés - - - - - Long - Sok - - - - Repeat delay: - Ismétlési késleltetés: - - - - - Short - Rövid - - - - Repeat interval: - Ismétlési időköz - - - - Type in the following box to test your keyboard settings - Írj ide valamit tesztelésre! - - - - - 0 - - - - - Turn on NumLock after login - - - - - KeyboardLayoutConfig - - - <b>Keyboard Layout</b> - <b>Billentyűkiosztás</b> - - - - Layout - Kiosztás - - - - Variant - Változat - - - - &Add - Hozzá&ad - - - - &Remove - Tö&röl - - - - up - föl - - - - down - le - - - - Keyboard model: - Billentyűzet modell: - - - - Keys to change layout: - Kiosztásváltoztató billentyű: - - - - None - Nincs - - - - <html><head/><body><p><span style=" font-weight:600;">Note</span>: If you are using an <span style=" font-weight:600;">input method</span>, such as IBus, uim, fcitx, or gcin, the settings here <span style=" font-weight:600;">might not work</span> because they are overridden by the input methods.</p></body></html> - <html><head/><body><p><span style=" font-weight:600;">Megjegyzés</span>: Ha bevitelként <span style=" font-weight:600;">például</span>, IBus, uim, fcitx, or gcin, szolgálnakl, ezek a beállítások <span style=" font-weight:600;">nem működnek</span> mert azok a beviteli módok ezt felülírják.</p></body></html> - - - - MouseConfig - - - Form - Űrlap - - - - <b>Mouse</b> - <b>Egér</b> - - - - Motion - Mozgás - - - - High - Nagy - - - - Fast - Gyors - - - - Sensitivity: - Érzékenység: - - - - Low - Kicsi - - - - Acceleration: - Gyorsulás: - - - - Slow - Lassú - - - - - 0 - - - - - Double click interval: - Duplakattintás: - - - - ms - - - - - Wheel scroll lines: - Gördítő sorok - - - - Left handed (Swap left and right mouse buttons) - Balkezes (Bal és jobb gombok cseréje) - - - - Single click to activate items - Egykattintásos aktiválás - - - - QObject - - - Keyboard and Mouse Settings - Billentyű és egérbeállítás - - - - Mouse - Egér - - - - Cursor - Kurzor - - - - Keyboard - Billentyűzet - - - - Keyboard Layout - Billentyűkiosztás - - - - SelectKeyboardLayoutDialog - - - Select a keyboard layout - Billentyűzetkiosztás választása - - - - Keyboard layout - Billentyűkiosztás - - - - Variant - Változat - - - diff --git a/lxqt-config-input/translations/lxqt-config-input_id.ts b/lxqt-config-input/translations/lxqt-config-input_id.ts deleted file mode 100644 index 172bd47..0000000 --- a/lxqt-config-input/translations/lxqt-config-input_id.ts +++ /dev/null @@ -1,337 +0,0 @@ - - - - - KeyboardConfig - - - Form - - - - - Cursor flash time: - - - - - <b>Keyboard</b> - - - - - Beep when there is an error of keyboard input - Bip ketika ada galat masukan papan tik - - - - ms - - - - - Character Repeat - Pengulangan Karakter - - - - - Long - Lama - - - - Repeat delay: - Tundaan pengulangan: - - - - - Short - Singkat - - - - Repeat interval: - Interval pengulangan: - - - - Type in the following box to test your keyboard settings - Ketik dalam kotak berikut untuk menguji pengaturan papan tik Anda - - - - - 0 - 0 - - - - Turn on NumLock after login - - - - - KeyboardLayoutConfig - - - <b>Keyboard Layout</b> - - - - - Layout - - - - - Variant - - - - - &Add - - - - - &Remove - - - - - up - - - - - down - - - - - Keyboard model: - - - - - Keys to change layout: - - - - - None - - - - - <html><head/><body><p><span style=" font-weight:600;">Note</span>: If you are using an <span style=" font-weight:600;">input method</span>, such as IBus, uim, fcitx, or gcin, the settings here <span style=" font-weight:600;">might not work</span> because they are overridden by the input methods.</p></body></html> - - - - - MainDialog - - Input Device Preferences - Preferensi Perangkat Masukan - - - Motion - Gerakan - - - High - Tinggi - - - Fast - Cepat - - - Sensitivity: - Sensitivitas: - - - Low - Rendah - - - Acceleration: - Akselerasi: - - - Slow - Lambat - - - 0 - 0 - - - Left handed (Swap left and right mouse buttons) - Kidal (Tukar tombol tetikus kiri dan kanan) - - - Mouse - Tetikus - - - Character Repeat - Pengulangan Karakter - - - Long - Lama - - - Repeat delay: - Tundaan pengulangan: - - - Short - Singkat - - - Repeat interval: - Interval pengulangan: - - - Type in the following box to test your keyboard settings - Ketik dalam kotak berikut untuk menguji pengaturan papan tik Anda - - - Beep when there is an error of keyboard input - Bip ketika ada galat masukan papan tik - - - Keyboard - Papan tik - - - - MouseConfig - - - Form - - - - - <b>Mouse</b> - - - - - Motion - Gerakan - - - - High - Tinggi - - - - Fast - Cepat - - - - Sensitivity: - Sensitivitas: - - - - Low - Rendah - - - - Acceleration: - Akselerasi: - - - - Slow - Lambat - - - - - 0 - 0 - - - - Double click interval: - - - - - ms - - - - - Wheel scroll lines: - - - - - Left handed (Swap left and right mouse buttons) - Kidal (Tukar tombol tetikus kiri dan kanan) - - - - Single click to activate items - - - - - QObject - - - Keyboard and Mouse Settings - - - - - Mouse - Tetikus - - - - Cursor - - - - - Keyboard - Papan tik - - - - Keyboard Layout - - - - - SelectKeyboardLayoutDialog - - - Select a keyboard layout - - - - - Keyboard layout - - - - - Variant - - - - diff --git a/lxqt-config-input/translations/lxqt-config-input_is.ts b/lxqt-config-input/translations/lxqt-config-input_is.ts deleted file mode 100644 index 4af639e..0000000 --- a/lxqt-config-input/translations/lxqt-config-input_is.ts +++ /dev/null @@ -1,258 +0,0 @@ - - - - - KeyboardConfig - - - Form - - - - - Cursor flash time: - - - - - <b>Keyboard</b> - - - - - Beep when there is an error of keyboard input - - - - - ms - - - - - Character Repeat - - - - - - Long - - - - - Repeat delay: - - - - - - Short - - - - - Repeat interval: - - - - - Type in the following box to test your keyboard settings - - - - - - 0 - - - - - Turn on NumLock after login - - - - - KeyboardLayoutConfig - - - <b>Keyboard Layout</b> - - - - - Layout - - - - - Variant - - - - - &Add - - - - - &Remove - - - - - up - - - - - down - - - - - Keyboard model: - - - - - Keys to change layout: - - - - - None - - - - - <html><head/><body><p><span style=" font-weight:600;">Note</span>: If you are using an <span style=" font-weight:600;">input method</span>, such as IBus, uim, fcitx, or gcin, the settings here <span style=" font-weight:600;">might not work</span> because they are overridden by the input methods.</p></body></html> - - - - - MouseConfig - - - Form - - - - - <b>Mouse</b> - - - - - Motion - - - - - High - - - - - Fast - - - - - Sensitivity: - - - - - Low - - - - - Acceleration: - - - - - Slow - - - - - - 0 - - - - - Double click interval: - - - - - ms - - - - - Wheel scroll lines: - - - - - Left handed (Swap left and right mouse buttons) - - - - - Single click to activate items - - - - - QObject - - - Keyboard and Mouse Settings - - - - - Mouse - - - - - Cursor - - - - - Keyboard - - - - - Keyboard Layout - - - - - SelectKeyboardLayoutDialog - - - Select a keyboard layout - - - - - Keyboard layout - - - - - Variant - - - - diff --git a/lxqt-config-input/translations/lxqt-config-input_it.desktop b/lxqt-config-input/translations/lxqt-config-input_it.desktop index f13522d..db4e585 100644 --- a/lxqt-config-input/translations/lxqt-config-input_it.desktop +++ b/lxqt-config-input/translations/lxqt-config-input_it.desktop @@ -1,6 +1,6 @@ # Translations Name[it]=Tastiera e mouse -GenericName[it]=Configurazione dei dispositivi di immissione +GenericName[it]=Configura i dispositivi di immissione Comment[it]=Configura tastiera, mouse e altri dispositivi di immissione diff --git a/lxqt-config-input/translations/lxqt-config-input_it.ts b/lxqt-config-input/translations/lxqt-config-input_it.ts deleted file mode 100644 index 1f4418d..0000000 --- a/lxqt-config-input/translations/lxqt-config-input_it.ts +++ /dev/null @@ -1,337 +0,0 @@ - - - - - KeyboardConfig - - - Form - - - - - Cursor flash time: - Intervallo lampeggio cursore: - - - - <b>Keyboard</b> - <b>Tastiera</b> - - - - Beep when there is an error of keyboard input - Emetti un beep per gli errori di input da tastiera - - - - ms - - - - - Character Repeat - Ripetizione caratteri - - - - - Long - Lungo - - - - Repeat delay: - Attesa ripetizione: - - - - - Short - Corto - - - - Repeat interval: - Intervallo ripetizione: - - - - Type in the following box to test your keyboard settings - Scrivere nella casella sottostante per provare le impostazioni della tastiera - - - - - 0 - 0 - - - - Turn on NumLock after login - - - - - KeyboardLayoutConfig - - - <b>Keyboard Layout</b> - Mappatura della tastiera - - - - Layout - Mappatura - - - - Variant - Variante - - - - &Add - &Aggiungi - - - - &Remove - &Rimuovi - - - - up - su - - - - down - giù - - - - Keyboard model: - Modello della tastiera: - - - - Keys to change layout: - Scorciatoia per cambio mappatura: - - - - None - Nessuna - - - - <html><head/><body><p><span style=" font-weight:600;">Note</span>: If you are using an <span style=" font-weight:600;">input method</span>, such as IBus, uim, fcitx, or gcin, the settings here <span style=" font-weight:600;">might not work</span> because they are overridden by the input methods.</p></body></html> - <b>Nota:</b> Se viene usato un metodo di input come IBus, uim, fcitx o gcin questi settaggi potrebbero non avere effetto. - - - - MainDialog - - Input Device Preferences - Preferenze dei dispositivi di ingresso - - - Motion - Movimento - - - High - Alta - - - Fast - Veloce - - - Sensitivity: - Sensibilità: - - - Low - Bassa - - - Acceleration: - Accelerazione: - - - Slow - Lenta - - - 0 - 0 - - - Left handed (Swap left and right mouse buttons) - Mancino (inverte tasto destro e sinistro del mouse) - - - Mouse - Mouse - - - Character Repeat - Ripetizione caratteri - - - Long - Lungo - - - Repeat delay: - Attesa ripetizione: - - - Short - Corto - - - Repeat interval: - Intervallo ripetizione: - - - Type in the following box to test your keyboard settings - Scrivere nella casella sottostante per provare le impostazioni della tastiera - - - Beep when there is an error of keyboard input - Emetti un beep per gli errori di input da tastiera - - - Keyboard - Tastiera - - - - MouseConfig - - - Form - - - - - <b>Mouse</b> - - - - - Motion - Movimento - - - - High - Alta - - - - Fast - Veloce - - - - Sensitivity: - Sensibilità: - - - - Low - Bassa - - - - Acceleration: - Accelerazione: - - - - Slow - Lenta - - - - - 0 - 0 - - - - Double click interval: - Intervallo doppio clic: - - - - ms - - - - - Wheel scroll lines: - Righe che scrolla la rotella: - - - - Left handed (Swap left and right mouse buttons) - Mancino (inverte tasto destro e sinistro del mouse) - - - - Single click to activate items - Clic singolo per attivare gli elementi - - - - QObject - - - Keyboard and Mouse Settings - Impostazioni per mouse e tastiera - - - - Mouse - Mouse - - - - Cursor - Cursore - - - - Keyboard - Tastiera - - - - Keyboard Layout - Mappatura della tastiera - - - - SelectKeyboardLayoutDialog - - - Select a keyboard layout - Selezione una mappatura - - - - Keyboard layout - <b>Mappatura della tastiera></b> - - - - Variant - Variante - - - diff --git a/lxqt-config-input/translations/lxqt-config-input_ja.ts b/lxqt-config-input/translations/lxqt-config-input_ja.ts deleted file mode 100644 index 18d41fd..0000000 --- a/lxqt-config-input/translations/lxqt-config-input_ja.ts +++ /dev/null @@ -1,258 +0,0 @@ - - - - - KeyboardConfig - - - Form - フォーム - - - - Cursor flash time: - カーソルの点滅時間 - - - - <b>Keyboard</b> - <b>キーボード</b> - - - - Beep when there is an error of keyboard input - キーボード入力にエラーがあるときはビープ音を出す - - - - ms - ms - - - - Character Repeat - 文字リピート - - - - - Long - 長い - - - - Repeat delay: - リピートするまでの遅延: - - - - - Short - 短い - - - - Repeat interval: - リピートの間隔: - - - - Type in the following box to test your keyboard settings - 下のボックスにタイプして、キーボード設定のテストをしてください - - - - - 0 - 0 - - - - Turn on NumLock after login - - - - - KeyboardLayoutConfig - - - <b>Keyboard Layout</b> - <b>キーボードレイアウト</b> - - - - Layout - レイアウト - - - - Variant - バリアント - - - - &Add - 追加(&A) - - - - &Remove - 削除(&R) - - - - up - 上へ - - - - down - 下へ - - - - Keyboard model: - キーボードの型式: - - - - Keys to change layout: - レイアウトを変更するためのキー - - - - None - なし - - - - <html><head/><body><p><span style=" font-weight:600;">Note</span>: If you are using an <span style=" font-weight:600;">input method</span>, such as IBus, uim, fcitx, or gcin, the settings here <span style=" font-weight:600;">might not work</span> because they are overridden by the input methods.</p></body></html> - <html><head/><body><p><span style=" font-weight:600;">注意</span>: <span style=" font-weight:600;">入力メソッド</span>(例: IBus や uim、fcitx、gcin)を使用している場合には, この設定は<span style=" font-weight:600;">機能しないことがあります</span>。入力メソッドが設定を上書きしてしまうためです。</p></body></html> - - - - MouseConfig - - - Form - フォーム - - - - <b>Mouse</b> - <b>マウス</b> - - - - Motion - 動作 - - - - High - 高い - - - - Fast - 速い - - - - Sensitivity: - 感度: - - - - Low - 低い - - - - Acceleration: - 加速: - - - - Slow - 遅い - - - - - 0 - 0 - - - - Double click interval: - ダブルクリックの間隔: - - - - ms - ms - - - - Wheel scroll lines: - ホイールでスクロールする行数: - - - - Left handed (Swap left and right mouse buttons) - 左利き (マウスボタンの左右を入れ替える) - - - - Single click to activate items - シングルクリックでアイテムを有効にする - - - - QObject - - - Keyboard and Mouse Settings - キーボードとマウスの設定 - - - - Mouse - マウス - - - - Cursor - カーソル - - - - Keyboard - キーボード - - - - Keyboard Layout - キーボードレイアウト - - - - SelectKeyboardLayoutDialog - - - Select a keyboard layout - キーボードレイアウトを選択 - - - - Keyboard layout - キーボードレイアウト - - - - Variant - バリアント - - - diff --git a/lxqt-config-input/translations/lxqt-config-input_nl.ts b/lxqt-config-input/translations/lxqt-config-input_nl.ts deleted file mode 100644 index ce3e93a..0000000 --- a/lxqt-config-input/translations/lxqt-config-input_nl.ts +++ /dev/null @@ -1,337 +0,0 @@ - - - - - KeyboardConfig - - - Form - - - - - Cursor flash time: - - - - - <b>Keyboard</b> - - - - - Beep when there is an error of keyboard input - Piep wanneer er een toetsenbordinvoerfout optreedt - - - - ms - - - - - Character Repeat - Tekenherhaling - - - - - Long - Lang - - - - Repeat delay: - Herhalingsvertraging: - - - - - Short - Kort - - - - Repeat interval: - Herhalingstussenpoze: - - - - Type in the following box to test your keyboard settings - Tik iets in het volgende vak om uw toetsenbordinstellingen uit te proberen - - - - - 0 - 0 - - - - Turn on NumLock after login - - - - - KeyboardLayoutConfig - - - <b>Keyboard Layout</b> - - - - - Layout - - - - - Variant - - - - - &Add - - - - - &Remove - - - - - up - - - - - down - - - - - Keyboard model: - - - - - Keys to change layout: - - - - - None - - - - - <html><head/><body><p><span style=" font-weight:600;">Note</span>: If you are using an <span style=" font-weight:600;">input method</span>, such as IBus, uim, fcitx, or gcin, the settings here <span style=" font-weight:600;">might not work</span> because they are overridden by the input methods.</p></body></html> - - - - - MainDialog - - Input Device Preferences - Voorkeuren van invoerapparaat - - - Motion - Beweging - - - High - Hoog - - - Fast - Snel - - - Sensitivity: - Gevoeligheid: - - - Low - Laag - - - Acceleration: - Versnelling: - - - Slow - Langzaam - - - 0 - 0 - - - Left handed (Swap left and right mouse buttons) - Linkshandig (wissel linkse en rechtse muisknoppen om) - - - Mouse - Muis - - - Character Repeat - Tekenherhaling - - - Long - Lang - - - Repeat delay: - Herhalingsvertraging: - - - Short - Kort - - - Repeat interval: - Herhalingstussenpoze: - - - Type in the following box to test your keyboard settings - Tik iets in het volgende vak om uw toetsenbordinstellingen uit te proberen - - - Beep when there is an error of keyboard input - Piep wanneer er een toetsenbordinvoerfout optreedt - - - Keyboard - Toetsenbord - - - - MouseConfig - - - Form - - - - - <b>Mouse</b> - - - - - Motion - Beweging - - - - High - Hoog - - - - Fast - Snel - - - - Sensitivity: - Gevoeligheid: - - - - Low - Laag - - - - Acceleration: - Versnelling: - - - - Slow - Langzaam - - - - - 0 - 0 - - - - Double click interval: - - - - - ms - - - - - Wheel scroll lines: - - - - - Left handed (Swap left and right mouse buttons) - Linkshandig (wissel linkse en rechtse muisknoppen om) - - - - Single click to activate items - - - - - QObject - - - Keyboard and Mouse Settings - - - - - Mouse - Muis - - - - Cursor - - - - - Keyboard - Toetsenbord - - - - Keyboard Layout - - - - - SelectKeyboardLayoutDialog - - - Select a keyboard layout - - - - - Keyboard layout - - - - - Variant - - - - diff --git a/lxqt-config-input/translations/lxqt-config-input_pa.ts b/lxqt-config-input/translations/lxqt-config-input_pa.ts deleted file mode 100644 index 7d6df7b..0000000 --- a/lxqt-config-input/translations/lxqt-config-input_pa.ts +++ /dev/null @@ -1,258 +0,0 @@ - - - - - KeyboardConfig - - - Form - - - - - Cursor flash time: - - - - - <b>Keyboard</b> - - - - - Beep when there is an error of keyboard input - - - - - ms - - - - - Character Repeat - - - - - - Long - - - - - Repeat delay: - - - - - - Short - - - - - Repeat interval: - - - - - Type in the following box to test your keyboard settings - - - - - - 0 - - - - - Turn on NumLock after login - - - - - KeyboardLayoutConfig - - - <b>Keyboard Layout</b> - - - - - Layout - - - - - Variant - - - - - &Add - - - - - &Remove - - - - - up - - - - - down - - - - - Keyboard model: - - - - - Keys to change layout: - - - - - None - - - - - <html><head/><body><p><span style=" font-weight:600;">Note</span>: If you are using an <span style=" font-weight:600;">input method</span>, such as IBus, uim, fcitx, or gcin, the settings here <span style=" font-weight:600;">might not work</span> because they are overridden by the input methods.</p></body></html> - - - - - MouseConfig - - - Form - - - - - <b>Mouse</b> - - - - - Motion - - - - - High - - - - - Fast - - - - - Sensitivity: - - - - - Low - - - - - Acceleration: - - - - - Slow - - - - - - 0 - - - - - Double click interval: - - - - - ms - - - - - Wheel scroll lines: - - - - - Left handed (Swap left and right mouse buttons) - - - - - Single click to activate items - - - - - QObject - - - Keyboard and Mouse Settings - - - - - Mouse - - - - - Cursor - - - - - Keyboard - - - - - Keyboard Layout - - - - - SelectKeyboardLayoutDialog - - - Select a keyboard layout - - - - - Keyboard layout - - - - - Variant - - - - diff --git a/lxqt-config-input/translations/lxqt-config-input_pl.ts b/lxqt-config-input/translations/lxqt-config-input_pl.ts deleted file mode 100644 index 5723ad3..0000000 --- a/lxqt-config-input/translations/lxqt-config-input_pl.ts +++ /dev/null @@ -1,337 +0,0 @@ - - - - - KeyboardConfig - - - Form - - - - - Cursor flash time: - Częstotliwość migania kursora: - - - - <b>Keyboard</b> - <b>Klawiatura</b> - - - - Beep when there is an error of keyboard input - Brzęczyk, gdy wystąpi błąd podczas wprowadzania z klawiatury - - - - ms - ms - - - - Character Repeat - Powtórzenia znaków - - - - - Long - Długie - - - - Repeat delay: - Opóźnienie powtórki: - - - - - Short - Krótkie - - - - Repeat interval: - Częstotliwość powtarzania: - - - - Type in the following box to test your keyboard settings - Zacznij pisać w okienku, aby przetestować ustawienia swojej klawiatury - - - - - 0 - 0 - - - - Turn on NumLock after login - - - - - KeyboardLayoutConfig - - - <b>Keyboard Layout</b> - <b>Układ klawiatury</b> - - - - Layout - Układ - - - - Variant - Wariant - - - - &Add - &Dodaj - - - - &Remove - &Usuń - - - - up - do góry - - - - down - w dół - - - - Keyboard model: - Model klawiatury: - - - - Keys to change layout: - Klawisze do zmiany układu: - - - - None - Brak - - - - <html><head/><body><p><span style=" font-weight:600;">Note</span>: If you are using an <span style=" font-weight:600;">input method</span>, such as IBus, uim, fcitx, or gcin, the settings here <span style=" font-weight:600;">might not work</span> because they are overridden by the input methods.</p></body></html> - <html><head/><body><p><span style=" font-weight:600;">Notka</span>: Jeśli używasz <span style=" font-weight:600;">metod wejścia</span>, jak IBus, uim, fcitx, lub gcin, te ustawienia <span style=" font-weight:600;">mogą nie działać</span> ponieważ będą nadpisywane przez ustawienia tamtych metod.</p></body></html> - - - - MainDialog - - Input Device Preferences - Preferencje urządzeń wejściowych - - - Motion - Ruch - - - High - Wysoka - - - Fast - Szybkie - - - Sensitivity: - Czułość: - - - Low - Niska - - - Acceleration: - Przyspieszenie: - - - Slow - Wolne - - - 0 - 0 - - - Left handed (Swap left and right mouse buttons) - Leworęczna (Zamiana lewego i prawego przycisku myszy) - - - Mouse - Mysz - - - Character Repeat - Powtórzenia znaków - - - Long - Długie - - - Repeat delay: - Opóźnienie powtórki: - - - Short - Krótkie - - - Repeat interval: - Częstotliwość powtarzania: - - - Type in the following box to test your keyboard settings - Zacznij pisać w okienku, aby przetestować ustawienia swojej klawiatury - - - Beep when there is an error of keyboard input - Brzęczyk, gdy wystąpi błąd podczas wprowadzania z klawiatury - - - Keyboard - Klawiatura - - - - MouseConfig - - - Form - - - - - <b>Mouse</b> - <b>Mysz</b> - - - - Motion - Ruch - - - - High - Wysoka - - - - Fast - Szybkie - - - - Sensitivity: - Czułość: - - - - Low - Niska - - - - Acceleration: - Przyspieszenie: - - - - Slow - Wolne - - - - - 0 - 0 - - - - Double click interval: - Okres podwójnego kliknięcia: - - - - ms - ms - - - - Wheel scroll lines: - Przwijanie kółkiem (linie): - - - - Left handed (Swap left and right mouse buttons) - Leworęczna (zamiana lewego i prawego przycisku myszy) - - - - Single click to activate items - Pojedyńcze kliknięcie wyzwala akcję - - - - QObject - - - Keyboard and Mouse Settings - Ustawienia myszy i klawiatury - - - - Mouse - Mysz - - - - Cursor - Kursor - - - - Keyboard - Klawiatura - - - - Keyboard Layout - Układ klawiatury - - - - SelectKeyboardLayoutDialog - - - Select a keyboard layout - Wybierz układ klawiatury - - - - Keyboard layout - Układ klawiatury - - - - Variant - Wariant - - - diff --git a/lxqt-config-input/translations/lxqt-config-input_pt.ts b/lxqt-config-input/translations/lxqt-config-input_pt.ts deleted file mode 100644 index 01ee5d1..0000000 --- a/lxqt-config-input/translations/lxqt-config-input_pt.ts +++ /dev/null @@ -1,337 +0,0 @@ - - - - - KeyboardConfig - - - Form - - - - - Cursor flash time: - - - - - <b>Keyboard</b> - - - - - Beep when there is an error of keyboard input - Reproduzir um som se ocorrer um erro de teclado - - - - ms - - - - - Character Repeat - Repetição de caracteres - - - - - Long - Longa - - - - Repeat delay: - Atraso de repetição: - - - - - Short - Curto - - - - Repeat interval: - Intervalo de repetição: - - - - Type in the following box to test your keyboard settings - Escreva algo na caixa de teste abaixo para testar o teclado - - - - - 0 - 0 - - - - Turn on NumLock after login - - - - - KeyboardLayoutConfig - - - <b>Keyboard Layout</b> - - - - - Layout - - - - - Variant - - - - - &Add - - - - - &Remove - - - - - up - - - - - down - - - - - Keyboard model: - - - - - Keys to change layout: - - - - - None - - - - - <html><head/><body><p><span style=" font-weight:600;">Note</span>: If you are using an <span style=" font-weight:600;">input method</span>, such as IBus, uim, fcitx, or gcin, the settings here <span style=" font-weight:600;">might not work</span> because they are overridden by the input methods.</p></body></html> - - - - - MainDialog - - Input Device Preferences - Preferências de dispositivos - - - Motion - Movimento - - - High - Muito rápido - - - Fast - Rápido - - - Sensitivity: - Sensibilidade: - - - Low - Baixa - - - Acceleration: - Aceleração: - - - Slow - Lenta - - - 0 - 0 - - - Left handed (Swap left and right mouse buttons) - Canhoto (inverter botões do rato) - - - Mouse - Rato - - - Character Repeat - Repetição de caracteres - - - Long - Longa - - - Repeat delay: - Atraso de repetição: - - - Short - Curto - - - Repeat interval: - Intervalo de repetição: - - - Type in the following box to test your keyboard settings - Escreva algo na caixa de teste abaixo para testar o teclado - - - Beep when there is an error of keyboard input - Reproduzir um som se ocorrer um erro de teclado - - - Keyboard - Teclado - - - - MouseConfig - - - Form - - - - - <b>Mouse</b> - - - - - Motion - Movimento - - - - High - Muito rápido - - - - Fast - Rápido - - - - Sensitivity: - Sensibilidade: - - - - Low - Baixa - - - - Acceleration: - Aceleração: - - - - Slow - Lenta - - - - - 0 - 0 - - - - Double click interval: - - - - - ms - - - - - Wheel scroll lines: - - - - - Left handed (Swap left and right mouse buttons) - Canhoto (inverter botões do rato) - - - - Single click to activate items - - - - - QObject - - - Keyboard and Mouse Settings - - - - - Mouse - Rato - - - - Cursor - - - - - Keyboard - Teclado - - - - Keyboard Layout - - - - - SelectKeyboardLayoutDialog - - - Select a keyboard layout - - - - - Keyboard layout - - - - - Variant - - - - diff --git a/lxqt-config-input/translations/lxqt-config-input_ru.desktop b/lxqt-config-input/translations/lxqt-config-input_ru.desktop index 6736259..6d441bb 100644 --- a/lxqt-config-input/translations/lxqt-config-input_ru.desktop +++ b/lxqt-config-input/translations/lxqt-config-input_ru.desktop @@ -1,4 +1,4 @@ # Translations -Comment[ru]=Настроить клавиатуру, мышь и доругие устройства ввода +Comment[ru]=Настроить клавиатуру, мышь и другие устройства ввода Name[ru]=Клавиатура и мышь GenericName[ru]=Настройки ввода \ No newline at end of file diff --git a/lxqt-config-input/translations/lxqt-config-input_ru.ts b/lxqt-config-input/translations/lxqt-config-input_ru.ts deleted file mode 100644 index c46f176..0000000 --- a/lxqt-config-input/translations/lxqt-config-input_ru.ts +++ /dev/null @@ -1,258 +0,0 @@ - - - - - KeyboardConfig - - - Form - - - - - Cursor flash time: - Частота мерцания курсора: - - - - <b>Keyboard</b> - <b>Клавиатура</b> - - - - Beep when there is an error of keyboard input - Пищать об ошибке ввода с клавиатуры - - - - ms - мс - - - - Character Repeat - Повтор символа - - - - - Long - Длинная - - - - Repeat delay: - Задержка повтора: - - - - - Short - Короткая - - - - Repeat interval: - Пауза между повтором: - - - - Type in the following box to test your keyboard settings - Поле для проверки настроек клавиатуры - - - - - 0 - - - - - Turn on NumLock after login - - - - - KeyboardLayoutConfig - - - <b>Keyboard Layout</b> - <b>Раскладка клавиатуры</b> - - - - Layout - Раскладка - - - - Variant - Вариант - - - - &Add - &Добавить - - - - &Remove - &Удалить - - - - up - выше - - - - down - ниже - - - - Keyboard model: - Модель клавиатуры: - - - - Keys to change layout: - Клавиши смены раскладки: - - - - None - Нет - - - - <html><head/><body><p><span style=" font-weight:600;">Note</span>: If you are using an <span style=" font-weight:600;">input method</span>, such as IBus, uim, fcitx, or gcin, the settings here <span style=" font-weight:600;">might not work</span> because they are overridden by the input methods.</p></body></html> - <html><head/><body><p><span style=" font-weight:600;">Внимание</span>: Если вы используете <span style=" font-weight:600;">метод ввода</span>, такой как IBus, uim, fcitx, или gcin, настройки здесь <span style=" font-weight:600;">могут не работать</span> поскольку они переопределятся этим методом ввода.</p></body></html> - - - - MouseConfig - - - Form - - - - - <b>Mouse</b> - <b>Мышь</b> - - - - Motion - Движение - - - - High - Высокая - - - - Fast - Быстро - - - - Sensitivity: - Чувствительность: - - - - Low - Низкая - - - - Acceleration: - Ускорение: - - - - Slow - Медленно - - - - - 0 - - - - - Double click interval: - Интервал двойного щелчка: - - - - ms - мс - - - - Wheel scroll lines: - Колёсико перематывает строк: - - - - Left handed (Swap left and right mouse buttons) - Для левшей (поменять функции левой и правой кнопок мыши) - - - - Single click to activate items - Один клик для активации элементов - - - - QObject - - - Keyboard and Mouse Settings - Настройки клавиатуры и мыши - - - - Mouse - Мышь - - - - Cursor - Курсор - - - - Keyboard - Клавиатура - - - - Keyboard Layout - Раскладка клавиатура - - - - SelectKeyboardLayoutDialog - - - Select a keyboard layout - Выбрать раскладку клавиатуры - - - - Keyboard layout - Раскладка клавиатуры - - - - Variant - Вариант - - - diff --git a/lxqt-config-input/translations/lxqt-config-input_ru_RU.desktop b/lxqt-config-input/translations/lxqt-config-input_ru_RU.desktop deleted file mode 100644 index d6c1de1..0000000 --- a/lxqt-config-input/translations/lxqt-config-input_ru_RU.desktop +++ /dev/null @@ -1,4 +0,0 @@ -# Translations -Comment[ru_RU]=Настроить клавиатуру, мышь и доругие устройства ввода -Name[ru_RU]=Клавиатура и мышь -GenericName[ru_RU]=Настройки ввода \ No newline at end of file diff --git a/lxqt-config-input/translations/lxqt-config-input_ru_RU.ts b/lxqt-config-input/translations/lxqt-config-input_ru_RU.ts deleted file mode 100644 index 1ce7a0e..0000000 --- a/lxqt-config-input/translations/lxqt-config-input_ru_RU.ts +++ /dev/null @@ -1,258 +0,0 @@ - - - - - KeyboardConfig - - - Form - - - - - Cursor flash time: - Частота мерцания курсора: - - - - <b>Keyboard</b> - <b>Клавиатура</b> - - - - Beep when there is an error of keyboard input - Пищать об ошибке ввода с клавиатуры - - - - ms - мс - - - - Character Repeat - Повтор символа - - - - - Long - Длинная - - - - Repeat delay: - Задержка повтора: - - - - - Short - Короткая - - - - Repeat interval: - Пауза между повтором: - - - - Type in the following box to test your keyboard settings - Поле для проверки настроек клавиатуры - - - - - 0 - - - - - Turn on NumLock after login - - - - - KeyboardLayoutConfig - - - <b>Keyboard Layout</b> - <b>Раскладка клавиатуры</b> - - - - Layout - Раскладка - - - - Variant - Вариант - - - - &Add - &Добавить - - - - &Remove - &Удалить - - - - up - выше - - - - down - ниже - - - - Keyboard model: - Модель клавиатуры: - - - - Keys to change layout: - Клавиши смены раскладки: - - - - None - Нет - - - - <html><head/><body><p><span style=" font-weight:600;">Note</span>: If you are using an <span style=" font-weight:600;">input method</span>, such as IBus, uim, fcitx, or gcin, the settings here <span style=" font-weight:600;">might not work</span> because they are overridden by the input methods.</p></body></html> - <html><head/><body><p><span style=" font-weight:600;">Внимание</span>: Если вы используете <span style=" font-weight:600;">метод ввода</span>, такой как IBus, uim, fcitx, или gcin, настройки здесь <span style=" font-weight:600;">могут не работать</span> поскольку они переопределятся этим методом ввода.</p></body></html> - - - - MouseConfig - - - Form - - - - - <b>Mouse</b> - <b>Мышь</b> - - - - Motion - Движение - - - - High - Высокая - - - - Fast - Быстро - - - - Sensitivity: - Чувствительность: - - - - Low - Низкая - - - - Acceleration: - Ускорение: - - - - Slow - Медленно - - - - - 0 - - - - - Double click interval: - Интервал двойного щелчка: - - - - ms - мс - - - - Wheel scroll lines: - Колёсико перематывает строк: - - - - Left handed (Swap left and right mouse buttons) - Для левшей (поменять функции левой и правой кнопок мыши) - - - - Single click to activate items - Один клик для активации элементов - - - - QObject - - - Keyboard and Mouse Settings - Настройки клавиатуры и мыши - - - - Mouse - Мышь - - - - Cursor - Курсор - - - - Keyboard - Клавиатура - - - - Keyboard Layout - Раскладка клавиатура - - - - SelectKeyboardLayoutDialog - - - Select a keyboard layout - Выбрать раскладку клавиатуры - - - - Keyboard layout - Раскладка клавиатуры - - - - Variant - Вариант - - - diff --git a/lxqt-config-input/translations/lxqt-config-input_sv.ts b/lxqt-config-input/translations/lxqt-config-input_sv.ts deleted file mode 100644 index dc53abc..0000000 --- a/lxqt-config-input/translations/lxqt-config-input_sv.ts +++ /dev/null @@ -1,337 +0,0 @@ - - - - - KeyboardConfig - - - Form - - - - - Cursor flash time: - - - - - <b>Keyboard</b> - - - - - Beep when there is an error of keyboard input - Avge ett pip när ett fel uppstår vid tangentbordsinmatning - - - - ms - - - - - Character Repeat - Teckenupprepning - - - - - Long - Lång - - - - Repeat delay: - Tid innan upprepning: - - - - - Short - Kort - - - - Repeat interval: - Tid mellan upprepningar: - - - - Type in the following box to test your keyboard settings - För att pröva dina inställningar kan du skriva i följande ruta - - - - - 0 - 0 - - - - Turn on NumLock after login - - - - - KeyboardLayoutConfig - - - <b>Keyboard Layout</b> - - - - - Layout - - - - - Variant - - - - - &Add - - - - - &Remove - - - - - up - - - - - down - - - - - Keyboard model: - - - - - Keys to change layout: - - - - - None - - - - - <html><head/><body><p><span style=" font-weight:600;">Note</span>: If you are using an <span style=" font-weight:600;">input method</span>, such as IBus, uim, fcitx, or gcin, the settings here <span style=" font-weight:600;">might not work</span> because they are overridden by the input methods.</p></body></html> - - - - - MainDialog - - Input Device Preferences - Egenskaper för inmatningsenhet - - - Motion - Rörelse - - - High - Hög - - - Fast - Snabb - - - Sensitivity: - Känslighet: - - - Low - Låg - - - Acceleration: - Acceleration: - - - Slow - Långsam - - - 0 - 0 - - - Left handed (Swap left and right mouse buttons) - Vänsterhänt (byt funktioner för vänster och höger musknapp) - - - Mouse - Mus - - - Character Repeat - Teckenupprepning - - - Long - Lång - - - Repeat delay: - Tid innan upprepning: - - - Short - Kort - - - Repeat interval: - Tid mellan upprepningar: - - - Type in the following box to test your keyboard settings - För att pröva dina inställningar kan du skriva i följande ruta - - - Beep when there is an error of keyboard input - Avge ett pip när ett fel uppstår vid tangentbordsinmatning - - - Keyboard - Tangentbord - - - - MouseConfig - - - Form - - - - - <b>Mouse</b> - - - - - Motion - Rörelse - - - - High - Hög - - - - Fast - Snabb - - - - Sensitivity: - Känslighet: - - - - Low - Låg - - - - Acceleration: - Acceleration: - - - - Slow - Långsam - - - - - 0 - 0 - - - - Double click interval: - - - - - ms - - - - - Wheel scroll lines: - - - - - Left handed (Swap left and right mouse buttons) - Vänsterhänt (byt funktioner för vänster och höger musknapp) - - - - Single click to activate items - - - - - QObject - - - Keyboard and Mouse Settings - - - - - Mouse - Mus - - - - Cursor - - - - - Keyboard - Tangentbord - - - - Keyboard Layout - - - - - SelectKeyboardLayoutDialog - - - Select a keyboard layout - - - - - Keyboard layout - - - - - Variant - - - - diff --git a/lxqt-config-input/translations/lxqt-config-input_uk.ts b/lxqt-config-input/translations/lxqt-config-input_uk.ts deleted file mode 100644 index c8d037e..0000000 --- a/lxqt-config-input/translations/lxqt-config-input_uk.ts +++ /dev/null @@ -1,258 +0,0 @@ - - - - - KeyboardConfig - - - Form - - - - - Cursor flash time: - - - - - <b>Keyboard</b> - - - - - Beep when there is an error of keyboard input - - - - - ms - - - - - Character Repeat - - - - - - Long - - - - - Repeat delay: - - - - - - Short - - - - - Repeat interval: - - - - - Type in the following box to test your keyboard settings - - - - - - 0 - - - - - Turn on NumLock after login - - - - - KeyboardLayoutConfig - - - <b>Keyboard Layout</b> - - - - - Layout - - - - - Variant - - - - - &Add - - - - - &Remove - - - - - up - - - - - down - - - - - Keyboard model: - - - - - Keys to change layout: - - - - - None - - - - - <html><head/><body><p><span style=" font-weight:600;">Note</span>: If you are using an <span style=" font-weight:600;">input method</span>, such as IBus, uim, fcitx, or gcin, the settings here <span style=" font-weight:600;">might not work</span> because they are overridden by the input methods.</p></body></html> - - - - - MouseConfig - - - Form - - - - - <b>Mouse</b> - - - - - Motion - - - - - High - - - - - Fast - - - - - Sensitivity: - - - - - Low - - - - - Acceleration: - - - - - Slow - - - - - - 0 - - - - - Double click interval: - - - - - ms - - - - - Wheel scroll lines: - - - - - Left handed (Swap left and right mouse buttons) - - - - - Single click to activate items - - - - - QObject - - - Keyboard and Mouse Settings - - - - - Mouse - - - - - Cursor - - - - - Keyboard - - - - - Keyboard Layout - - - - - SelectKeyboardLayoutDialog - - - Select a keyboard layout - - - - - Keyboard layout - - - - - Variant - - - - diff --git a/lxqt-config-input/translations/lxqt-config-input_zh_CN.ts b/lxqt-config-input/translations/lxqt-config-input_zh_CN.ts deleted file mode 100644 index 182366b..0000000 --- a/lxqt-config-input/translations/lxqt-config-input_zh_CN.ts +++ /dev/null @@ -1,337 +0,0 @@ - - - - - KeyboardConfig - - - Form - - - - - Cursor flash time: - - - - - <b>Keyboard</b> - - - - - Beep when there is an error of keyboard input - 键盘输入出错时蜂鸣 - - - - ms - - - - - Character Repeat - 字符重复 - - - - - Long - - - - - Repeat delay: - 重复延迟: - - - - - Short - - - - - Repeat interval: - 重复间隔: - - - - Type in the following box to test your keyboard settings - 在下面的框中输入字符,以测试键盘设置 - - - - - 0 - 0 - - - - Turn on NumLock after login - - - - - KeyboardLayoutConfig - - - <b>Keyboard Layout</b> - - - - - Layout - - - - - Variant - - - - - &Add - - - - - &Remove - - - - - up - - - - - down - - - - - Keyboard model: - - - - - Keys to change layout: - - - - - None - - - - - <html><head/><body><p><span style=" font-weight:600;">Note</span>: If you are using an <span style=" font-weight:600;">input method</span>, such as IBus, uim, fcitx, or gcin, the settings here <span style=" font-weight:600;">might not work</span> because they are overridden by the input methods.</p></body></html> - - - - - MainDialog - - Input Device Preferences - 输入设备首选项 - - - Motion - 运动 - - - High - - - - Fast - 快速 - - - Sensitivity: - 敏感度: - - - Low - - - - Acceleration: - 加速 : - - - Slow - - - - 0 - 0 - - - Left handed (Swap left and right mouse buttons) - 惯用左手(交换左右鼠标按键) - - - Mouse - 鼠标 - - - Character Repeat - 字符重复 - - - Long - - - - Repeat delay: - 重复延迟: - - - Short - - - - Repeat interval: - 重复间隔: - - - Type in the following box to test your keyboard settings - 在下面的框中输入字符,以测试键盘设置 - - - Beep when there is an error of keyboard input - 键盘输入出错时蜂鸣 - - - Keyboard - 键盘 - - - - MouseConfig - - - Form - - - - - <b>Mouse</b> - - - - - Motion - 运动 - - - - High - - - - - Fast - 快速 - - - - Sensitivity: - 敏感度: - - - - Low - - - - - Acceleration: - 加速 : - - - - Slow - - - - - - 0 - 0 - - - - Double click interval: - - - - - ms - - - - - Wheel scroll lines: - - - - - Left handed (Swap left and right mouse buttons) - 惯用左手(交换左右鼠标按键) - - - - Single click to activate items - - - - - QObject - - - Keyboard and Mouse Settings - - - - - Mouse - 鼠标 - - - - Cursor - - - - - Keyboard - 键盘 - - - - Keyboard Layout - - - - - SelectKeyboardLayoutDialog - - - Select a keyboard layout - - - - - Keyboard layout - - - - - Variant - - - - diff --git a/lxqt-config-input/translations/lxqt-config-input_zh_HK.ts b/lxqt-config-input/translations/lxqt-config-input_zh_HK.ts deleted file mode 100644 index 504462d..0000000 --- a/lxqt-config-input/translations/lxqt-config-input_zh_HK.ts +++ /dev/null @@ -1,258 +0,0 @@ - - - - - KeyboardConfig - - - Form - - - - - Cursor flash time: - - - - - <b>Keyboard</b> - - - - - Beep when there is an error of keyboard input - - - - - ms - - - - - Character Repeat - - - - - - Long - - - - - Repeat delay: - - - - - - Short - - - - - Repeat interval: - - - - - Type in the following box to test your keyboard settings - - - - - - 0 - - - - - Turn on NumLock after login - - - - - KeyboardLayoutConfig - - - <b>Keyboard Layout</b> - - - - - Layout - - - - - Variant - - - - - &Add - - - - - &Remove - - - - - up - - - - - down - - - - - Keyboard model: - - - - - Keys to change layout: - - - - - None - - - - - <html><head/><body><p><span style=" font-weight:600;">Note</span>: If you are using an <span style=" font-weight:600;">input method</span>, such as IBus, uim, fcitx, or gcin, the settings here <span style=" font-weight:600;">might not work</span> because they are overridden by the input methods.</p></body></html> - - - - - MouseConfig - - - Form - - - - - <b>Mouse</b> - - - - - Motion - - - - - High - - - - - Fast - - - - - Sensitivity: - - - - - Low - - - - - Acceleration: - - - - - Slow - - - - - - 0 - - - - - Double click interval: - - - - - ms - - - - - Wheel scroll lines: - - - - - Left handed (Swap left and right mouse buttons) - - - - - Single click to activate items - - - - - QObject - - - Keyboard and Mouse Settings - - - - - Mouse - - - - - Cursor - - - - - Keyboard - - - - - Keyboard Layout - - - - - SelectKeyboardLayoutDialog - - - Select a keyboard layout - - - - - Keyboard layout - - - - - Variant - - - - diff --git a/lxqt-config-input/translations/lxqt-config-input_zh_TW.ts b/lxqt-config-input/translations/lxqt-config-input_zh_TW.ts deleted file mode 100644 index 9870b93..0000000 --- a/lxqt-config-input/translations/lxqt-config-input_zh_TW.ts +++ /dev/null @@ -1,337 +0,0 @@ - - - - - KeyboardConfig - - - Form - - - - - Cursor flash time: - - - - - <b>Keyboard</b> - - - - - Beep when there is an error of keyboard input - 鍵盤輸入錯誤時發出嗶聲 - - - - ms - - - - - Character Repeat - 字元重複 - - - - - Long - - - - - Repeat delay: - 重複延遲: - - - - - Short - - - - - Repeat interval: - 重複間隔時間: - - - - Type in the following box to test your keyboard settings - 在下列方框裡輸入文字測試你的鍵盤設定 - - - - - 0 - 0 - - - - Turn on NumLock after login - - - - - KeyboardLayoutConfig - - - <b>Keyboard Layout</b> - - - - - Layout - - - - - Variant - - - - - &Add - - - - - &Remove - - - - - up - - - - - down - - - - - Keyboard model: - - - - - Keys to change layout: - - - - - None - - - - - <html><head/><body><p><span style=" font-weight:600;">Note</span>: If you are using an <span style=" font-weight:600;">input method</span>, such as IBus, uim, fcitx, or gcin, the settings here <span style=" font-weight:600;">might not work</span> because they are overridden by the input methods.</p></body></html> - - - - - MainDialog - - Input Device Preferences - 輸入裝置偏好設定 - - - Motion - 移動 - - - High - - - - Fast - - - - Sensitivity: - 敏感度: - - - Low - - - - Acceleration: - 加速: - - - Slow - - - - 0 - 0 - - - Left handed (Swap left and right mouse buttons) - 左撇子 (對換滑鼠左右鍵) - - - Mouse - 滑鼠 - - - Character Repeat - 字元重複 - - - Long - - - - Repeat delay: - 重複延遲: - - - Short - - - - Repeat interval: - 重複間隔時間: - - - Type in the following box to test your keyboard settings - 在下列方框裡輸入文字測試你的鍵盤設定 - - - Beep when there is an error of keyboard input - 鍵盤輸入錯誤時發出嗶聲 - - - Keyboard - 鍵盤 - - - - MouseConfig - - - Form - - - - - <b>Mouse</b> - - - - - Motion - 移動 - - - - High - - - - - Fast - - - - - Sensitivity: - 敏感度: - - - - Low - - - - - Acceleration: - 加速: - - - - Slow - - - - - - 0 - 0 - - - - Double click interval: - - - - - ms - - - - - Wheel scroll lines: - - - - - Left handed (Swap left and right mouse buttons) - 左撇子 (對換滑鼠左右鍵) - - - - Single click to activate items - - - - - QObject - - - Keyboard and Mouse Settings - - - - - Mouse - 滑鼠 - - - - Cursor - - - - - Keyboard - 鍵盤 - - - - Keyboard Layout - - - - - SelectKeyboardLayoutDialog - - - Select a keyboard layout - - - - - Keyboard layout - - - - - Variant - - - - diff --git a/lxqt-config-locale/CMakeLists.txt b/lxqt-config-locale/CMakeLists.txt index 0ec12db..efa8702 100644 --- a/lxqt-config-locale/CMakeLists.txt +++ b/lxqt-config-locale/CMakeLists.txt @@ -24,6 +24,16 @@ lxqt_translate_ts(QM_FILES ${UI_FILES} INSTALL_DIR "${LXQT_TRANSLATIONS_DIR}/${PROJECT_NAME}" + PULL_TRANSLATIONS + ${PULL_TRANSLATIONS} + CLEAN_TRANSLATIONS + ${CLEAN_TRANSLATIONS} + TRANSLATIONS_REPO + ${TRANSLATIONS_REPO} + TRANSLATIONS_REFSPEC + ${TRANSLATIONS_REFSPEC} + REPO_SUBDIR + "lxqt-config/${PROJECT_NAME}" ) lxqt_app_translation_loader(QM_LOADER ${PROJECT_NAME}) diff --git a/lxqt-config-locale/translations/lxqt-config-locale.ts b/lxqt-config-locale/translations/lxqt-config-locale.ts deleted file mode 100644 index af5e4f7..0000000 --- a/lxqt-config-locale/translations/lxqt-config-locale.ts +++ /dev/null @@ -1,110 +0,0 @@ - - - - - LocaleConfig - - - Re&gion: - - - - - De&tailed Settings - - - - - &Numbers: - - - - - &Time: - - - - - Currenc&y: - - - - - Measurement &Units: - - - - - Co&llation and Sorting: - - - - - <b>Examples</b> - - - - - Numbers: - - - - - Time: - - - - - Currency: - - - - - Measurement Units: - - - - - No change - - - - - Format Settings Changed - - - - - Save the settings ? (they will take effect the next time you log in) - - - - - Imperial UK - - - - - Imperial US - - - - - Metric - - - - - QObject - - - LXQt Locale Configuration - - - - - Locale Settings - - - - diff --git a/lxqt-config-locale/translations/lxqt-config-locale_de.desktop b/lxqt-config-locale/translations/lxqt-config-locale_de.desktop new file mode 100644 index 0000000..f286c87 --- /dev/null +++ b/lxqt-config-locale/translations/lxqt-config-locale_de.desktop @@ -0,0 +1,3 @@ +Name[de]=Regionaleinstellungen +GenericName[de]=Regionaleinstellungen +Comment[de]=Regionaleinstellungen für LXQt diff --git a/lxqt-config-locale/translations/lxqt-config-locale_it.desktop b/lxqt-config-locale/translations/lxqt-config-locale_it.desktop new file mode 100644 index 0000000..28e8bb0 --- /dev/null +++ b/lxqt-config-locale/translations/lxqt-config-locale_it.desktop @@ -0,0 +1,2 @@ +Name[it]=Lingua e Paese +Comment[it]=Preferenze della lingua e del paese diff --git a/lxqt-config-locale/translations/lxqt-config-locale_ru.desktop b/lxqt-config-locale/translations/lxqt-config-locale_ru.desktop new file mode 100644 index 0000000..a8706bc --- /dev/null +++ b/lxqt-config-locale/translations/lxqt-config-locale_ru.desktop @@ -0,0 +1,4 @@ +# Translations +Name[ru]=Локаль +GenericName[ru]=Настройки локали +Comment[ru]=Настройки локали для LXQt diff --git a/lxqt-config-monitor.png b/lxqt-config-monitor.png new file mode 100644 index 0000000000000000000000000000000000000000..0e4c3d14efbd0338303d9be64aa2f96af0e69d3f GIT binary patch literal 15403 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 n^ij + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + +#include "fastmenu.h" +#include "timeoutdialog.h" + +#include +#include +#include +#include +#include + +enum Options +{ + None=0, Extended=1, Unified=2, OnlyFirst=3, OnlySecond=4 +}; + +FastMenu::FastMenu(KScreen::ConfigPtr config, QWidget* parent) : + QGroupBox(parent) +{ + this->mConfig = config; + this->mOldConfig = mConfig->clone(); + + ui.setupUi(this); + + connect(ui.comboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(onSeleccionChanged(int))); +} + +FastMenu::~FastMenu() +{ +} + +void FastMenu::extended() +{ + int width = 0; + KScreen::OutputList outputs = mConfig->outputs(); + for (const KScreen::OutputPtr &output : outputs) + { + if( !output->isConnected() ) + continue; + QPoint pos = output->pos(); + pos.setX(width); + pos.setY(0); + output->setPos(pos); + output->setEnabled(true); + //first left one as primary + output->setPrimary(width == 0); + KScreen::ModePtr mode(output->currentMode()); + if (!mode) + { // set first mode + mode = output->modes().first(); + if (mode) + { + output->setCurrentModeId(mode->id()); + } + } + if (mode) { + width += mode->size().width(); + } + } +} + +static bool sizeBiggerThan(const QSize &sizeA, const QSize &sizeB) +{ + return sizeA.width() * sizeA.height() > sizeB.width() * sizeB.height(); +} + +void FastMenu::unified() +{ + KScreen::OutputList outputs = mConfig->outputs(); + // Look for common size + QList commonSizes; + for (const KScreen::OutputPtr &output : outputs) + { + if( !output->isConnected() ) + continue; + for(const KScreen::ModePtr &mode: output->modes()) + { + commonSizes.append(mode->size()); + } + break; + } + for (const KScreen::OutputPtr &output : outputs) + { + if( !output->isConnected() ) + continue; + QList sizes; + for(const KScreen::ModePtr &mode: output->modes()) + { + if( commonSizes.contains(mode->size()) ) + sizes.append(mode->size()); + } + commonSizes = sizes; + } + // Select the bigest common size + qSort(commonSizes.begin(), commonSizes.end(), sizeBiggerThan); + if(commonSizes.isEmpty()) + return; + QSize commonSize = commonSizes[0]; + // Put all monitors in (0,0) position and set size + for (const KScreen::OutputPtr &output : outputs) + { + if( !output->isConnected() ) + continue; + QPoint pos = output->pos(); + pos.setX(0); + pos.setY(0); + output->setPos(pos); + output->setEnabled(true); + // Select mode with the biggest refresh rate + float maxRefreshRate = 0.0; + for(const KScreen::ModePtr &mode: output->modes()) + { + if(mode->size() == commonSize && maxRefreshRate < mode->refreshRate()) + { + output->setCurrentModeId(mode->id()); + maxRefreshRate = mode->refreshRate(); + } + } + } +} + +void FastMenu::onlyFirst() +{ + bool foundOk = false; + KScreen::OutputList outputs = mConfig->outputs(); + for (const KScreen::OutputPtr &output : outputs) + { + if( !output->isConnected() ) + continue; + QPoint pos = output->pos(); + pos.setX(0); + pos.setY(0); + output->setPos(pos); + output->setEnabled(!foundOk); + foundOk = true; + } +} + +void FastMenu::onlySecond() +{ + bool foundOk = true; + KScreen::OutputList outputs = mConfig->outputs(); + for (const KScreen::OutputPtr &output : outputs) + { + if( !output->isConnected() ) + continue; + QPoint pos = output->pos(); + pos.setX(0); + pos.setY(0); + output->setPos(pos); + output->setEnabled(!foundOk); + foundOk = false; + } +} + +void FastMenu::onSeleccionChanged(int index) +{ + switch((Options) index) + { + case Extended: + extended(); + break; + case Unified: + unified(); + break; + case OnlyFirst: + onlyFirst(); + break; + case OnlySecond: + onlySecond(); + break; + case None: + return; + break; + }; + + if (mConfig && KScreen::Config::canBeApplied(mConfig)) + { + KScreen::SetConfigOperation(mConfig).exec(); + + TimeoutDialog mTimeoutDialog; + if (mTimeoutDialog.exec() == QDialog::Rejected) + KScreen::SetConfigOperation(mOldConfig).exec(); + else + mOldConfig = mConfig->clone(); + } +} diff --git a/lxqt-config-monitor/fastmenu.h b/lxqt-config-monitor/fastmenu.h new file mode 100644 index 0000000..f83a94f --- /dev/null +++ b/lxqt-config-monitor/fastmenu.h @@ -0,0 +1,55 @@ +/* + Copyright (C) 2016 P.L. Lucas + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + +#ifndef _FASTMENU_H_ +#define _FASTMENU_H_ + +#include "ui_fastmenu.h" + +#include +#include +#include +#include +#include + + + +class FastMenu : public QGroupBox +{ + Q_OBJECT + + +public: + FastMenu(KScreen::ConfigPtr config, QWidget* parent = 0); + ~FastMenu(); + +private Q_SLOTS: + void onSeleccionChanged(int index); + +private: + Ui::FastMenu ui; + KScreen::ConfigPtr mConfig; + KScreen::ConfigPtr mOldConfig; + + void extended(); + void unified(); + void onlyFirst(); + void onlySecond(); +}; + +#endif // _FASTMENU_H_ diff --git a/lxqt-config-monitor/fastmenu.ui b/lxqt-config-monitor/fastmenu.ui new file mode 100644 index 0000000..ee4ac03 --- /dev/null +++ b/lxqt-config-monitor/fastmenu.ui @@ -0,0 +1,80 @@ + + + FastMenu + + + + 0 + 0 + 298 + 164 + + + + Form + + + + + + Fast options + + + false + + + + + + + 20 + + + + + + + + + + ❶ ❷ Extended view + + + + + ❶ ❶ Unified view + + + + + ❶ Only first + + + + + ❷ Only second + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + diff --git a/lxqt-config-monitor/loadsettings.cpp b/lxqt-config-monitor/loadsettings.cpp index 01536e8..9f849ba 100644 --- a/lxqt-config-monitor/loadsettings.cpp +++ b/lxqt-config-monitor/loadsettings.cpp @@ -26,16 +26,16 @@ #include #include #include -#include +#include #include #include - - +#include LoadSettings::LoadSettings(QObject *parent):QObject(parent) { - KScreen::GetConfigOperation *operation = new KScreen::GetConfigOperation(); + QThread::sleep(10); // KScreen is slow loading screen modes + KScreen::GetConfigOperation *operation = new KScreen::GetConfigOperation(); connect(operation, &KScreen::GetConfigOperation::finished, [this, operation] (KScreen::ConfigOperation *op) { KScreen::GetConfigOperation *configOp = qobject_cast(op); if (configOp) @@ -48,42 +48,69 @@ LoadSettings::LoadSettings(QObject *parent):QObject(parent) void LoadSettings::loadConfiguration(KScreen::ConfigPtr config) { - QSettings settings("LXQt", "lxqt-config-monitor"); - QJsonDocument document = QJsonDocument::fromJson( settings.value("currentConfig").toByteArray() ); - QJsonObject json = document.object(); - QJsonArray array = json["outputs"].toArray(); + LXQt::Settings settings("lxqt-config-monitor"); + QList monitors; + settings.beginGroup("currentConfig"); + loadMonitorSettings(settings, monitors); + settings.endGroup(); + + applySettings(config, monitors); + + exit(0); +} + + +void applySettings(KScreen::ConfigPtr config, QList monitors) +{ KScreen::OutputList outputs = config->outputs(); for (const KScreen::OutputPtr &output : outputs) { qDebug() << "Output: " << output->name(); - for(int i=0;iname() ) + MonitorSettings monitor = monitors[i]; + if( monitor.name == output->name() ) { KScreen::Edid* edid = output->edid(); if (edid && edid->isValid()) - if( monitorSettings["hash"].toString() != edid->hash() ) + if( monitor.hash != edid->hash() ) { - qDebug() << "Hash: " << monitorSettings["hash"].toString() << "==" << edid->hash(); + qDebug() << "Hash: " << monitor.hash << "==" << edid->hash(); return exit(1); // Saved settings are from other monitor } - if( monitorSettings["connected"].toBool() != output->isConnected() ) + if( monitor.connected != output->isConnected() ) return exit(2); // Saved settings are from other monitor if( !output->isConnected() ) continue; - output->setEnabled( monitorSettings["enabled"].toBool() ); - output->setPrimary( monitorSettings["primary"].toBool() ); - output->setPos( QPoint(monitorSettings["xPos"].toInt(),monitorSettings["yPos"].toInt()) ); - output->setCurrentModeId( monitorSettings["currentMode"].toString() ); - output->setRotation( (KScreen::Output::Rotation)(monitorSettings["rotation"].toInt()) ); + output->setEnabled( monitor.enabled ); + output->setPrimary( monitor.primary ); + output->setPos( QPoint(monitor.xPos, monitor.yPos) ); + output->setRotation( (KScreen::Output::Rotation)(monitor.rotation) ); + // output->setCurrentModeId could fail. KScreen sometimes changes mode Id. + KScreen::ModeList modeList = output->modes(); + foreach(const KScreen::ModePtr &mode, modeList) + { + if( mode->id() == QString(monitor.currentMode) + || + ( + mode->size().width() == monitor.currentModeWidth + && + mode->size().height() == monitor.currentModeHeight + && + mode->refreshRate() == monitor.currentModeRate + ) + ) + { + output->setCurrentModeId( mode->id() ); + break; + } + } + } } } if (KScreen::Config::canBeApplied(config)) KScreen::SetConfigOperation(config).exec(); - - exit(0); } diff --git a/lxqt-config-monitor/loadsettings.h b/lxqt-config-monitor/loadsettings.h index 096de8b..9af3c95 100644 --- a/lxqt-config-monitor/loadsettings.h +++ b/lxqt-config-monitor/loadsettings.h @@ -22,6 +22,7 @@ #include #include +#include "monitor.h" class LoadSettings : public QObject { @@ -39,4 +40,9 @@ private: KScreen::ConfigPtr mConfig; }; +/*! Apply settings. + */ +void applySettings(KScreen::ConfigPtr config, QList monitors); + + #endif // __LOADSETTINGS_H__ diff --git a/lxqt-config-monitor/main.cpp b/lxqt-config-monitor/main.cpp index d8283cb..6a27861 100644 --- a/lxqt-config-monitor/main.cpp +++ b/lxqt-config-monitor/main.cpp @@ -66,6 +66,11 @@ int main(int argc, char** argv) dlg.setWindowIcon(QIcon::fromTheme("preferences-desktop-display")); dlg.show(); - return app.exec(); + int ok = app.exec(); + + // FIXME: kscreen backend doesn't close properly. + //system("killall kscreen_backend_launcher"); + + return ok; } diff --git a/lxqt-config-monitor/managesavedsettings.cpp b/lxqt-config-monitor/managesavedsettings.cpp new file mode 100644 index 0000000..94a43ae --- /dev/null +++ b/lxqt-config-monitor/managesavedsettings.cpp @@ -0,0 +1,196 @@ +/* + Copyright (C) 2015 P.L. Lucas + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + + +#include "managesavedsettings.h" +#include "loadsettings.h" +#include "configure.h" +#include "monitor.h" +#include +#include +#include + +Q_DECLARE_METATYPE(MonitorSavedSettings) + + +ManageSavedSettings::ManageSavedSettings(LXQt::Settings * applicationSettings, KScreen::ConfigPtr config, QWidget * parent): +QDialog(parent) +{ + + this->applicationSettings = applicationSettings; + this->config = config; + + ui.setupUi(this); + + connect(ui.allConfigs, SIGNAL(itemActivated(QListWidgetItem *)), SLOT(showSelectedConfig(QListWidgetItem *))); + connect(ui.deletePushButton, SIGNAL(clicked()), SLOT(onDeleteItem())); + connect(ui.renamePushButton, SIGNAL(clicked()), SLOT(onRenameItem())); + connect(ui.applyPushButton, SIGNAL(clicked()), SLOT(onApplyItem())); + + loadSettings(); +} + + +void ManageSavedSettings::showSelectedConfig(QListWidgetItem * item) +{ + MonitorSavedSettings o = item->data(Qt::UserRole).value(); + QString text; + for(int i=0; i < o.monitors.size(); i++) + { + MonitorSettings setting = o.monitors[i]; + if(! setting.connected ) + continue; + text += QString("%1:
").arg(setting.name); + text += QString(" Mode: %1x%2
").arg(setting.currentModeWidth).arg(setting.currentModeHeight); + text += QString(" Rate: %1 Hz
").arg(setting.currentModeRate); + switch(setting.rotation) + { + case KScreen::Output::Rotation::None: + text += QString(" Rotation: %1
").arg(tr("None")); + break; + case KScreen::Output::Rotation::Left: + text += QString(" Rotation: %1
").arg(tr("Left")); + break; + case KScreen::Output::Rotation::Inverted: + text += QString(" Rotation: %1
").arg(tr("Inverted")); + break; + case KScreen::Output::Rotation::Right: + text += QString(" Rotation: %1
").arg(tr("Right")); + break; + } + text += QString(" Position: %1x%2
").arg(setting.xPos).arg(setting.yPos); + text += QString(" Primary: %1
").arg(setting.primary?tr("True"):tr("False")); + text += QString(" Enabled: %1
").arg(setting.enabled?tr("True"):tr("False")); + } + text += "
"; + ui.selectedSettingsTextEdit->setText(text); + ui.applyPushButton->setEnabled(isHardwareCompatible(o)); +} + + +bool ManageSavedSettings::isHardwareCompatible(MonitorSavedSettings &settings) +{ + KScreen::OutputList outputs = config->outputs(); + for (const KScreen::OutputPtr &output : outputs) + { + bool ok = false; + for (int i=0; i < settings.monitors.size(); i++) + { + MonitorSettings o = settings.monitors[i]; + if(o.name != output->name()) + continue; + KScreen::Edid *edid = output->edid(); + if(edid && edid->isValid()) + if(o.hash != output->edid()->hash()) + return false; + ok = true; + break; + } + if(!ok) + return false; + } + return true; +} + +void ManageSavedSettings::onDeleteItem() +{ + if (ui.allConfigs->currentItem() == NULL) + return; + MonitorSavedSettings obj = ui.allConfigs->currentItem()->data(Qt::UserRole).value(); + + LXQt::Settings settings("lxqt-config-monitor"); + QList monitors; + settings.beginGroup("SavedConfigs"); + loadMonitorSettings(settings, monitors); + for (int i = 0; i < monitors.size(); i++) { + MonitorSavedSettings o = monitors[i]; + if (o == obj) { + monitors.removeAt(i); + break; + } + } + saveMonitorSettings(settings, monitors); + + settings.endGroup(); + + loadSettings(); +} + +void ManageSavedSettings::onRenameItem() +{ + if (ui.allConfigs->currentItem() == NULL) + return; + MonitorSavedSettings obj = ui.allConfigs->currentItem()->data(Qt::UserRole).value(); + bool ok; + QString configName = QInputDialog::getText(this, tr("Name"), tr("Name:"), + QLineEdit::Normal, + obj.name, &ok); + if (!ok || configName.isEmpty()) + return; + + LXQt::Settings settings("lxqt-config-monitor"); + QList monitors; + settings.beginGroup("SavedConfigs"); + loadMonitorSettings(settings, monitors); + for (int i = 0; i < monitors.size(); i++) { + MonitorSavedSettings o = monitors[i]; + if (o == obj) { + monitors.removeAt(i); + obj.name = configName; + monitors.append(obj); + break; + } + } + saveMonitorSettings(settings, monitors); + + settings.endGroup(); + + loadSettings(); +} + +void ManageSavedSettings::onApplyItem() +{ + if (ui.allConfigs->currentItem() == NULL) + return; + MonitorSavedSettings settings = ui.allConfigs->currentItem()->data(Qt::UserRole).value(); + applySettings(config, settings.monitors); +} + + + +void ManageSavedSettings::loadSettings() +{ + ui.allConfigs->clear(); + //ui.hardwareCompatibleConfigs->clear(); + LXQt::Settings settings("lxqt-config-monitor"); + QList monitors; + settings.beginGroup("SavedConfigs"); + loadMonitorSettings(settings, monitors); + settings.endGroup(); + foreach(MonitorSavedSettings o, monitors) { + QListWidgetItem *item = new QListWidgetItem(o.name+" - "+o.date, ui.allConfigs); + QVariant var; + var.setValue(o); + item->setData(Qt::UserRole, var); + if (isHardwareCompatible(o)) { + QFont font = ui.allConfigs->font(); + font.setBold(true); + item->setData(Qt::FontRole, font); + } + } +} diff --git a/lxqt-config-monitor/managesavedsettings.h b/lxqt-config-monitor/managesavedsettings.h new file mode 100644 index 0000000..4cbb305 --- /dev/null +++ b/lxqt-config-monitor/managesavedsettings.h @@ -0,0 +1,59 @@ +/* + Copyright (C) 2015 P.L. Lucas + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + + +#ifndef _SAVESETTINGS_H_ +#define _SAVESETTINGS_H_ + +#include "ui_managesavedsettings.h" +#include "monitor.h" +#include +#include +#include +#include + +class ManageSavedSettings : public QDialog { + Q_OBJECT + +public: + ManageSavedSettings(LXQt::Settings *applicationSettings, KScreen::ConfigPtr config, QWidget* parent = 0); + + Ui::ManageSavedSettings ui; + +public slots: + /*! Load settings to QListWidgets. + edids is hardware code to detect hardware compatible settings. + */ + void loadSettings(); + + void showSelectedConfig(QListWidgetItem * item); + + void onDeleteItem(); + + void onRenameItem(); + + void onApplyItem(); + +private: + LXQt::Settings *applicationSettings; + KScreen::ConfigPtr config; + bool isHardwareCompatible(MonitorSavedSettings &settings); + +}; + +#endif // _SAVESETTINGS_H_ diff --git a/lxqt-config-monitor/managesavedsettings.ui b/lxqt-config-monitor/managesavedsettings.ui new file mode 100644 index 0000000..55357e6 --- /dev/null +++ b/lxqt-config-monitor/managesavedsettings.ui @@ -0,0 +1,74 @@ + + + ManageSavedSettings + + + + 0 + 0 + 521 + 312 + + + + Monitor Settings + + + + + + + + + + + + + Saved settings + + + + + + + + + + + Rename + + + + + + + Delete + + + + + + + Apply + + + + + + + + + true + + + + + + + + + + + + + diff --git a/lxqt-config-monitor/monitor.cpp b/lxqt-config-monitor/monitor.cpp index 2e4f8e6..1afa4a3 100644 --- a/lxqt-config-monitor/monitor.cpp +++ b/lxqt-config-monitor/monitor.cpp @@ -18,56 +18,116 @@ #include "monitor.h" -bool MonitorInfo::LVDS_Ok = false; +bool MonitorSavedSettings::operator==(const MonitorSavedSettings &obj) +{ + if(name != obj.name) + return false; + if(date != obj.date) + return false; + // TODO: Check QList monitors. + return true; +} -QSize sizeFromString(QString str) +void saveMonitorSettings(QSettings & settings, QList monitors) { - int width = 0; - int height = 0; - int x = str.indexOf('x'); - if (x > 0) + settings.remove("settings"); + settings.beginWriteArray("settings"); + int i = 0; + Q_FOREACH(MonitorSettings monitor, monitors) { - width = str.left(x).toInt(); - height = str.mid(x + 1).toInt(); + settings.setArrayIndex(i++); + saveMonitorSettings(settings, monitor); } - return QSize(width, height); + settings.endArray(); } -MonitorSettings::MonitorSettings(QObject* parent) : - QObject(parent) +void saveMonitorSettings(QSettings &settings, MonitorSettings &monitor) { - position = None; - primaryOk = false; - enabledOk = false; + settings.setValue("name", monitor.name); + settings.setValue("hash", monitor.hash); + settings.setValue("connected", monitor.connected); + if(monitor.connected) + { + settings.setValue("enabled", monitor.enabled); + settings.setValue("primary", monitor.primary); + settings.setValue("xPos", monitor.xPos); + settings.setValue("yPos", monitor.yPos); + settings.setValue("currentMode", monitor.currentMode); + settings.setValue("currentModeWidth", monitor.currentModeWidth); + settings.setValue("currentModeHeight", monitor.currentModeHeight); + settings.setValue("currentModeRate", monitor.currentModeRate); + settings.setValue("rotation", monitor.rotation); + } } -MonitorInfo::MonitorInfo(QObject* parent) : - MonitorSettings(parent) +void loadMonitorSettings(QSettings & settings, QList &monitors) { + int size = settings.beginReadArray("settings"); + for(int i=0; i monitors) +{ + settings.remove("SavedSettings"); + settings.beginWriteArray("SavedSettings"); + int i = 0; + Q_FOREACH(MonitorSavedSettings monitor, monitors) + { + settings.setArrayIndex(i++); + saveMonitorSettings(settings, monitor); + } + settings.endArray(); } -QSize MonitorSettings::currentSize() +void saveMonitorSettings(QSettings &settings, MonitorSavedSettings &monitor) { - return sizeFromString(currentMode); + settings.setValue("name", monitor.name); + settings.setValue("date", monitor.date); + saveMonitorSettings(settings, monitor.monitors); } -QRect MonitorSettings::geometry() +void loadMonitorSettings(QSettings & settings, QList &monitors) { - return QRect(QPoint(xPos, yPos), currentSize()); + int size = settings.beginReadArray("SavedSettings"); + for(int i=0; i -#include -#include +#include +#include #include -#include -#include -//Settings to pass to backend -class MonitorSettings : public QObject -{ - Q_OBJECT - -public: - MonitorSettings(QObject* parent = 0); +//Settings to be stored or read from settings file. +struct MonitorSettings { QString name; + QString hash; + bool connected; + bool enabled; + bool primary; QString currentMode; - QString currentRate; - QString gamma; + int currentModeWidth; + int currentModeHeight; + float currentModeRate; int xPos; int yPos; - bool enabledOk; - enum Position {None = 0, Manual}; - Position position; - bool primaryOk; - - QSize currentSize(); - QRect geometry(); + int rotation; }; -// Monitor information from backend -class MonitorInfo : public MonitorSettings -{ - Q_OBJECT +struct MonitorSavedSettings { + QString name; + QString date; + QList monitors; + + bool operator==(const MonitorSavedSettings &obj); +}; -public: - KScreen::ConfigPtr mConfig; +/**This function saves a list of MonitorSettings in QSettings file. + * Before using this function, QSettings group must be opened. + */ +void saveMonitorSettings(QSettings &settings, QList monitors); +void saveMonitorSettings(QSettings &settings, MonitorSettings &monitor); - MonitorInfo(QObject* parent = 0); - QStringList modes; // Modes of this monitor in order - QHash modeLines; // Rates suported by each mode - QString preferredMode; - QString preferredRate; - QString edid; // EDID data, not used yet, can be used to detect vendor name of the monitor - QString vendor; +/**This function loads a list of MonitorSettings from QSettings file. + * Before using this function, QSettings group must be opened. + */ +void loadMonitorSettings(QSettings &settings, QList &monitors); +void loadMonitorSettings(QSettings &settings, MonitorSettings &monitor); - static bool LVDS_Ok; // Is true if LVDS (Laptop monitor) is connected. - QString humanReadableName(); -}; +/**This function saves a list of MonitorSavedSettings in QSettings file. + * Before using this function, QSettings group must be opened. + */ +void saveMonitorSettings(QSettings &settings, QList monitors); +void saveMonitorSettings(QSettings &settings, MonitorSavedSettings &monitor); -// Gets size from string rate. String rate format is "widthxheight". Example: 800x600 -QSize sizeFromString(QString str); +/**This function loads a list of MonitorSavedSettings in QSettings file. + * Before using this function, QSettings group must be opened. + */ +void loadMonitorSettings(QSettings &settings, QList &monitors); +void loadMonitorSettings(QSettings &settings, MonitorSavedSettings &monitor); #endif // _MONITOR_H_ diff --git a/lxqt-config-monitor/monitorpicture.cpp b/lxqt-config-monitor/monitorpicture.cpp index 814ff9a..3b5382c 100644 --- a/lxqt-config-monitor/monitorpicture.cpp +++ b/lxqt-config-monitor/monitorpicture.cpp @@ -23,8 +23,24 @@ #include #include #include +#include + #include "configure.h" +// Gets size from string rate. String rate format is "widthxheight". Example: 800x600 +static QSize sizeFromString(QString str) +{ + int width = 0; + int height = 0; + int x = str.indexOf('x'); + if (x > 0) + { + width = str.left(x).toInt(); + height = str.mid(x + 1).toInt(); + } + return QSize(width, height); +} + MonitorPictureProxy::MonitorPictureProxy(QObject *parent, MonitorPicture *monitorPicture):QObject(parent) { this->monitorPicture = monitorPicture; @@ -49,6 +65,8 @@ MonitorPictureDialog::MonitorPictureDialog(KScreen::ConfigPtr config, QWidget * QDialog(parent,f) { updatingOk = false; + firstShownOk = false; + maxMonitorSize = 0; mConfig = config; ui.setupUi(this); } @@ -72,12 +90,27 @@ void MonitorPictureDialog::setScene(QList monitors) } // The blue rectangle is maximum size of virtual screen (framebuffer) scene->addRect(0, 0, mConfig->screen()->maxSize().width(), mConfig->screen()->maxSize().height(), QPen(Qt::blue, 20))->setOpacity(0.5); - int minWidgetLength = qMin(ui.graphicsView->size().width(), ui.graphicsView->size().width()) / 1.5; - int maxMonitorSize = qMax(monitorsWidth, monitorsHeight); - ui.graphicsView->scale(minWidgetLength / (float) maxMonitorSize, minWidgetLength / (float) maxMonitorSize); + maxMonitorSize = qMax(monitorsWidth, monitorsHeight); ui.graphicsView->setScene(scene); } +void MonitorPictureDialog::showEvent(QShowEvent * event) +{ + QWidget::showEvent(event); + if( ! firstShownOk ) + { + // Update scale and set scrollbar position. + // Real widget size is not set, until widget is shown. + firstShownOk = true; + int minWidgetLength = qMin(ui.graphicsView->size().width(), ui.graphicsView->size().width()) / 1.5; + qDebug() << "minWidgetLength" << minWidgetLength << "maxMonitorSize" << maxMonitorSize << "scale" << minWidgetLength / (float) maxMonitorSize; + ui.graphicsView->scale(minWidgetLength / (float) maxMonitorSize, minWidgetLength / (float) maxMonitorSize); + updateScene(); + ui.graphicsView->verticalScrollBar()->setValue(0); + ui.graphicsView->horizontalScrollBar()->setValue(0); + } +} + void MonitorPictureDialog::updateScene() { ui.graphicsView->scene()->update(); @@ -157,7 +190,7 @@ MonitorPicture::MonitorPicture(QGraphicsItem * parent, // textItem->setX(x); // textItem->setY(y); // textItem->setParentItem(this); - + QSvgRenderer *renderer = new QSvgRenderer(QLatin1String(ICON_PATH "monitor.svg")); svgItem = new QGraphicsSvgItem(); svgItem->setSharedRenderer(renderer); diff --git a/lxqt-config-monitor/monitorpicture.h b/lxqt-config-monitor/monitorpicture.h index 6dcda52..8e85e94 100644 --- a/lxqt-config-monitor/monitorpicture.h +++ b/lxqt-config-monitor/monitorpicture.h @@ -42,11 +42,16 @@ public: void moveMonitorPictureToNearest(MonitorPicture* monitorPicture); void updateScene(); +protected: + virtual void showEvent(QShowEvent * event); + private: Ui::MonitorPictureDialog ui; QList pictures; bool updatingOk; - KScreen::ConfigPtr mConfig; + KScreen::ConfigPtr mConfig; + bool firstShownOk; + int maxMonitorSize; }; class MonitorPicture : public QGraphicsRectItem diff --git a/lxqt-config-monitor/monitorsettingsdialog.cpp b/lxqt-config-monitor/monitorsettingsdialog.cpp index d0283b7..2730413 100644 --- a/lxqt-config-monitor/monitorsettingsdialog.cpp +++ b/lxqt-config-monitor/monitorsettingsdialog.cpp @@ -20,20 +20,24 @@ #include "monitorsettingsdialog.h" #include "monitorwidget.h" +#include "monitor.h" #include "timeoutdialog.h" #include "monitorpicture.h" #include "settingsdialog.h" +#include "fastmenu.h" #include #include #include -#include +#include #include #include #include #include #include #include +#include +#include MonitorSettingsDialog::MonitorSettingsDialog() : QDialog(nullptr, 0) @@ -43,12 +47,28 @@ MonitorSettingsDialog::MonitorSettingsDialog() : KScreen::GetConfigOperation *operation = new KScreen::GetConfigOperation(); connect(operation, &KScreen::GetConfigOperation::finished, [this, operation] (KScreen::ConfigOperation *op) { KScreen::GetConfigOperation *configOp = qobject_cast(op); - if (configOp) + qDebug() << "Connecting to KScreen..."; + if (configOp && configOp->config() && configOp->config()->screen()) { mOldConfig = configOp->config()->clone(); loadConfiguration(configOp->config()); operation->deleteLater(); } + else if(configOp && !configOp->config()) + { + qDebug() << "Error: Config is invalid, probably backend couldn't load"; + exit(1); + } + else if(configOp && configOp->config() && !configOp->config()->screen()) + { + qDebug() << "Error: No screen in the configuration, broken backend"; + exit(2); + } + else + { + qDebug() << "Error: Connect to KScreen is not possible"; + exit(3); + } }); connect(ui.buttonBox, &QDialogButtonBox::clicked, [&] (QAbstractButton *button) { @@ -61,7 +81,6 @@ MonitorSettingsDialog::MonitorSettingsDialog() : }); - ui.settingsButton->hide(); // Hide settings button until daemon works OK. connect(ui.settingsButton, SIGNAL(clicked()), this, SLOT(showSettingsDialog())); } @@ -77,6 +96,7 @@ void MonitorSettingsDialog::loadConfiguration(KScreen::ConfigPtr config) mConfig = config; MonitorPictureDialog *monitorPicture = nullptr; + FastMenu *fastMenu = nullptr; KScreen::OutputList outputs = mConfig->outputs(); int nMonitors = 0; @@ -87,6 +107,10 @@ void MonitorSettingsDialog::loadConfiguration(KScreen::ConfigPtr config) if (nMonitors > 1) { + fastMenu = new FastMenu(config, this); + ui.monitorList->addItem(tr("Fast Menu")); + ui.stackedWidget->addWidget(fastMenu); + monitorPicture = new MonitorPictureDialog(config, this); ui.monitorList->addItem(tr("Set position")); ui.stackedWidget->addWidget(monitorPicture); @@ -106,6 +130,15 @@ void MonitorSettingsDialog::loadConfiguration(KScreen::ConfigPtr config) monitors.append(monitor); } } + + Q_FOREACH(MonitorWidget *monitor1, monitors) + { + Q_FOREACH(MonitorWidget *monitor, monitors) + { + if(monitor != monitor1) + connect(monitor, SIGNAL(primaryOutputChanged(MonitorWidget *)), monitor1, SLOT(onPrimaryOutputChanged(MonitorWidget *))); + } + } if (monitorPicture) monitorPicture->setScene(monitors); @@ -145,67 +178,60 @@ void MonitorSettingsDialog::reject() void MonitorSettingsDialog::saveConfiguration(KScreen::ConfigPtr config) { - QJsonObject json; - QJsonArray jsonArray; + + QList currentSettings; KScreen::OutputList outputs = config->outputs(); for (const KScreen::OutputPtr &output : outputs) { - QJsonObject monitorSettings; - monitorSettings["name"] = output->name(); + MonitorSettings monitor; + monitor.name = output->name(); KScreen::Edid* edid = output->edid(); if (edid && edid->isValid()) - monitorSettings["hash"] = edid->hash(); - monitorSettings["connected"] = output->isConnected(); + monitor.hash = edid->hash(); + monitor.connected = output->isConnected(); if ( output->isConnected() ) { - monitorSettings["enabled"] = output->isEnabled(); - monitorSettings["primary"] = output->isPrimary(); - monitorSettings["xPos"] = output->pos().x(); - monitorSettings["yPos"] = output->pos().y(); - monitorSettings["currentMode"] = output->currentMode()->id(); - monitorSettings["rotation"] = output->rotation(); + monitor.enabled = output->isEnabled(); + monitor.primary = output->isPrimary(); + monitor.xPos = output->pos().x(); + monitor.yPos = output->pos().y(); + monitor.currentMode = output->currentModeId(); + monitor.currentModeWidth = output->currentMode()->size().width(); + monitor.currentModeHeight = output->currentMode()->size().height(); + monitor.currentModeRate = output->currentMode()->refreshRate(); + monitor.rotation = output->rotation(); } - jsonArray.append(monitorSettings); + currentSettings.append(monitor); } - json["outputs"] = jsonArray; - QSettings settings("LXQt", "lxqt-config-monitor"); - settings.setValue("currentConfig", QVariant(QJsonDocument(json).toJson())); - - QString desktop = QString("[Desktop Entry]\n" - "Type=Application\n" - "Name=LXQt-config-monitor autostart\n" - "Comment=Autostart monitor settings for LXQt-config-monitor\n" - "Exec=%1\n" - "OnlyShowIn=LXQt\n").arg("lxqt-config-monitor -l"); + LXQt::Settings settings("lxqt-config-monitor"); + settings.beginGroup("currentConfig"); + saveMonitorSettings(settings, currentSettings); + settings.endGroup(); - // Check autostart path: $XDG_CONFIG_HOME or ~/.config/autostart - QString autostartPath; - bool ok = true; - if(qEnvironmentVariableIsSet("XDG_CONFIG_HOME")) - autostartPath = QString(qgetenv("XDG_CONFIG_HOME")); - else - { - autostartPath = QDir::homePath() + "/.config/autostart/"; - // Check if ~/.config/autostart/ exists - QFileInfo fileInfo(autostartPath); - if( ! fileInfo.exists() ) - ok = QDir::root().mkpath(autostartPath); - } - QFile file(autostartPath + "/lxqt-config-monitor-autostart.desktop"); - if(ok) - ok = file.open(QIODevice::WriteOnly | QIODevice::Text); - if(!ok) { - QMessageBox::critical(this, tr("Error"), tr("Config can not be saved")); - return; - } - QTextStream out(&file); - out << desktop; - out.flush(); - file.close(); - + QList monitors; + settings.beginGroup("SavedConfigs"); + loadMonitorSettings(settings, monitors); + qDebug() << "[ MonitorSettingsDialog::saveConfiguration] # monitors Read:" << monitors.size(); + MonitorSavedSettings monitor; + monitor.name = QDateTime::currentDateTime().toString(); + monitor.date = QDateTime::currentDateTime().toString(Qt::ISODate); + monitor.monitors = currentSettings; + monitors.append(monitor); + saveMonitorSettings(settings, monitors); + qDebug() << "[ MonitorSettingsDialog::saveConfiguration] # monitors Write:" << monitors.size(); + settings.endGroup(); + + LXQt::AutostartEntry autoStart("lxqt-config-monitor-autostart.desktop"); + XdgDesktopFile desktopFile(XdgDesktopFile::ApplicationType, "lxqt-config-monitor-autostart", "lxqt-config-monitor -l"); + //desktopFile.setValue("OnlyShowIn", QString(qgetenv("XDG_CURRENT_DESKTOP"))); + desktopFile.setValue("OnlyShowIn", "LXQt"); + desktopFile.setValue("Comment", "Autostart monitor settings for LXQt-config-monitor"); + autoStart.setFile(desktopFile); + autoStart.commit(); } + void MonitorSettingsDialog::showSettingsDialog() { QByteArray configName = qgetenv("LXQT_SESSION_CONFIG"); @@ -215,6 +241,6 @@ void MonitorSettingsDialog::showSettingsDialog() LXQt::Settings settings(configName); - SettingsDialog settingsDialog(tr("Advanced settings"), &settings); + SettingsDialog settingsDialog(tr("Advanced settings"), &settings, mConfig); settingsDialog.exec(); } diff --git a/lxqt-config-monitor/monitorwidget.cpp b/lxqt-config-monitor/monitorwidget.cpp index 5fa7430..d4de216 100644 --- a/lxqt-config-monitor/monitorwidget.cpp +++ b/lxqt-config-monitor/monitorwidget.cpp @@ -18,7 +18,6 @@ */ #include "monitorwidget.h" -#include "monitor.h" #include #include @@ -148,20 +147,6 @@ MonitorWidget::MonitorWidget(KScreen::OutputPtr output, KScreen::ConfigPtr confi // There isn't always a primary output. Gross. output->setPrimary(true); } - else - { - for (const KScreen::OutputPtr &other : config->connectedOutputs()) - { - // We can't clone ourselves, or an output that already clones another - if (other == output) - continue; - - ui.clonesCombo->addItem(other->name(), other->id()); - ui.relativeScreensCombo->addItem(other->name(), other->id()); - } - connect(ui.clonesCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(onCloneChanged(int))); - } - ui.xPosSpinBox->setValue(output->pos().x()); ui.yPosSpinBox->setValue(output->pos().y()); @@ -169,15 +154,6 @@ MonitorWidget::MonitorWidget(KScreen::OutputPtr output, KScreen::ConfigPtr confi // Behavior chooser if (output->isPrimary()) ui.behaviorCombo->setCurrentIndex(PrimaryDisplay); - else if (!output->clone()) - { - // Is this right? - ui.behaviorCombo->setCurrentIndex(CloneDisplay); - int idx = ui.resolutionCombo->findData(output->clone()->id()); - ui.clonesCombo->setCurrentIndex(idx); - } - else - ui.behaviorCombo->setCurrentIndex(ExtendDisplay); // Insert orientations ui.orientationCombo->addItem(tr("None"), KScreen::Output::None); @@ -202,7 +178,6 @@ MonitorWidget::MonitorWidget(KScreen::OutputPtr output, KScreen::ConfigPtr confi connect(ui.enabledCheckbox, SIGNAL(toggled(bool)), this, SLOT(onEnabledChanged(bool))); connect(ui.behaviorCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(onBehaviorChanged(int))); - connect(ui.positioningCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(onPositioningChanged(int))); connect(ui.xPosSpinBox, SIGNAL(valueChanged(int)), this, SLOT(onPositionChanged(int))); connect(ui.yPosSpinBox, SIGNAL(valueChanged(int)), this, SLOT(onPositionChanged(int))); connect(ui.orientationCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(onOrientationChanged(int))); @@ -225,7 +200,6 @@ void MonitorWidget::onEnabledChanged(bool enabled) // order here matters onResolutionChanged(ui.resolutionCombo->currentIndex()); onOrientationChanged(ui.orientationCombo->currentIndex()); - onPositioningChanged(ui.positioningCombo->currentIndex()); onBehaviorChanged(ui.behaviorCombo->currentIndex()); } } @@ -238,63 +212,12 @@ void MonitorWidget::onOrientationChanged(int idx) void MonitorWidget::onBehaviorChanged(int idx) { // Behavior should match the index of the selected element - ui.positioningCombo->setVisible(idx == ExtendDisplay); - ui.clonesCombo->setVisible(idx == CloneDisplay); - ui.relativeScreensCombo->setVisible(idx == ExtendDisplay); ui.xPosSpinBox->setVisible(idx == ExtendDisplay); ui.yPosSpinBox->setVisible(idx == ExtendDisplay); - ui.relativeScreensCombo->setEnabled(true); - if(idx == CloneDisplay) - onCloneChanged(ui.clonesCombo->currentIndex()); output->setPrimary(idx == PrimaryDisplay); -} - -void MonitorWidget::onCloneChanged(int idx) -{ - KScreen::OutputPtr other = getOutputById(ui.clonesCombo->currentData().toInt(), - config->outputs()); - output->setPos( other->pos() ); -} - -void MonitorWidget::onPositioningChanged(int idx) -{ - // Update the x/y spinboxes with the correct values - KScreen::OutputPtr other = getOutputById(ui.relativeScreensCombo->currentData().toInt(), - config->outputs()); - - // TODO: Figure out what to do here - if (!other->currentMode() || !output->currentMode()) - return; - - QSize otherSize = other->currentMode()->size(); - QSize thisSize = output->currentMode()->size(); - - int x = other->pos().x(); - int y = other->pos().y(); - - switch (idx) { - case RightOf: - x += otherSize.width(); - break; - case LeftOf: - x += thisSize.width(); - break; - case Above: - y += otherSize.height(); - break; - case Below: - y += thisSize.height(); - break; - case Manually: - default: - break; - } - - ui.xPosSpinBox->setValue(x); - ui.yPosSpinBox->setValue(y); - // Disable the other screens combo box if we don't need it - ui.relativeScreensCombo->setEnabled(idx && idx != Manually); + if(idx == PrimaryDisplay) + emit primaryOutputChanged(this); } void MonitorWidget::onPositionChanged(int value) @@ -342,6 +265,16 @@ void MonitorWidget::setOnlyMonitor(bool isOnlyMonitor) ui.behaviorCombo->setEnabled(!isOnlyMonitor); ui.xPosSpinBox->setVisible(!isOnlyMonitor); ui.yPosSpinBox->setVisible(!isOnlyMonitor); - ui.relativeScreensCombo->setVisible(!isOnlyMonitor); - ui.clonesCombo->setVisible(!isOnlyMonitor); + if(isOnlyMonitor) + { + ui.xPosSpinBox->setValue(0); + ui.yPosSpinBox->setValue(0); + } +} + +void MonitorWidget::onPrimaryOutputChanged(MonitorWidget *widget) +{ + if(widget == this) + return; + ui.behaviorCombo->setCurrentIndex(ExtendDisplay); } diff --git a/lxqt-config-monitor/monitorwidget.h b/lxqt-config-monitor/monitorwidget.h index 0e43c06..ced3caf 100644 --- a/lxqt-config-monitor/monitorwidget.h +++ b/lxqt-config-monitor/monitorwidget.h @@ -31,7 +31,6 @@ #define PrimaryDisplay 0 #define ExtendDisplay 1 -#define CloneDisplay 2 #define RightOf 0 #define LeftOf 1 @@ -54,6 +53,9 @@ public: KScreen::OutputPtr output; KScreen::ConfigPtr config; + +signals: + void primaryOutputChanged(MonitorWidget *widget); public Q_SLOTS: void setOnlyMonitor(bool isOnlyMonitor); @@ -61,12 +63,11 @@ public Q_SLOTS: private Q_SLOTS: void onEnabledChanged(bool); void onBehaviorChanged(int); - void onPositioningChanged(int); void onPositionChanged(int); void onResolutionChanged(int); void onRateChanged(int); void onOrientationChanged(int); - void onCloneChanged(int); + void onPrimaryOutputChanged(MonitorWidget *widget); private: Ui::MonitorWidget ui; diff --git a/lxqt-config-monitor/monitorwidget.ui b/lxqt-config-monitor/monitorwidget.ui index 38624e4..07488d1 100644 --- a/lxqt-config-monitor/monitorwidget.ui +++ b/lxqt-config-monitor/monitorwidget.ui @@ -21,7 +21,7 @@ Setup - + @@ -103,54 +103,9 @@ This screen extends another display - - - This screen clones another display - - - - - - - - - Right of... - - - - - Left of... - - - - - Above... - - - - - Below... - - - - - Positioned manually - - - - - - - - false - - - - - - + Qt::Vertical @@ -163,9 +118,6 @@ - - - diff --git a/lxqt-config-monitor/settingsdialog.cpp b/lxqt-config-monitor/settingsdialog.cpp index 9411d65..8ba7c9c 100644 --- a/lxqt-config-monitor/settingsdialog.cpp +++ b/lxqt-config-monitor/settingsdialog.cpp @@ -17,8 +17,10 @@ */ #include "settingsdialog.h" +#include "managesavedsettings.h" +#include -SettingsDialog::SettingsDialog(const QString &title, LXQt::Settings *settings, QWidget *parent) +SettingsDialog::SettingsDialog(const QString &title, LXQt::Settings *settings, KScreen::ConfigPtr config, QWidget *parent) : LXQt::ConfigDialog(title, settings, parent) { setButtons(QDialogButtonBox::QDialogButtonBox::Apply | QDialogButtonBox::Close); @@ -26,4 +28,7 @@ SettingsDialog::SettingsDialog(const QString &title, LXQt::Settings *settings, Q //DaemonSettings *daemon = new DaemonSettings(settings, this); //addPage(daemon, QObject::tr("Daemon"), "system-run"); + + ManageSavedSettings * savedSettings = new ManageSavedSettings(settings, config, this); + addPage(savedSettings, QObject::tr("Manage Saved Settings"), "system-run"); } diff --git a/lxqt-config-monitor/settingsdialog.h b/lxqt-config-monitor/settingsdialog.h index fe892db..3094f2f 100644 --- a/lxqt-config-monitor/settingsdialog.h +++ b/lxqt-config-monitor/settingsdialog.h @@ -21,6 +21,8 @@ #include #include +#include +#include class SettingsDialog : public LXQt::ConfigDialog @@ -28,7 +30,7 @@ class SettingsDialog : public LXQt::ConfigDialog Q_OBJECT public: - SettingsDialog(const QString &title, LXQt::Settings *settings, QWidget *parent = 0); + SettingsDialog(const QString &title, LXQt::Settings *settings, KScreen::ConfigPtr config, QWidget *parent = 0); private Q_SLOTS: diff --git a/lxqt-config-monitor/timeoutdialog.cpp b/lxqt-config-monitor/timeoutdialog.cpp index 3b86516..55302a9 100644 --- a/lxqt-config-monitor/timeoutdialog.cpp +++ b/lxqt-config-monitor/timeoutdialog.cpp @@ -59,7 +59,7 @@ void TimeoutDialog::onTimeout() else { int remaining = maximum / TIMER_DURATION - TIMER_DURATION * time / maximum; - ui.remainingTime->setText(tr("%1 second(s) remaining").arg(remaining)); + ui.remainingTime->setText(tr("%n second(s) remaining", nullptr, remaining).arg(remaining)); ui.progressBar->setValue(time); } } diff --git a/lxqt-config-monitor/translations/lxqt-config-monitor.ts b/lxqt-config-monitor/translations/lxqt-config-monitor.ts deleted file mode 100644 index ff4ae85..0000000 --- a/lxqt-config-monitor/translations/lxqt-config-monitor.ts +++ /dev/null @@ -1,260 +0,0 @@ - - - - - MonitorInfo - - - Laptop LCD Monitor - - - - - External VGA Monitor - - - - - VGA Monitor - - - - - External DVI Monitor - - - - - DVI Monitor - - - - - TV - - - - - Default Monitor - - - - - MonitorPictureDialog - - - Dialog - - - - - Keep monitors attached - - - - - MonitorSettingsDialog - - - Monitor Settings - - - - - Settings - - - - - Set position - - - - - Error - - - - - Config can not be saved - - - - - Advanced settings - - - - - MonitorWidget - - - Setup - - - - - (x) - - - - - (y) - - - - - Resolution: - - - - - Enable this display - - - - - This is my primary display - - - - - This screen extends another display - - - - - This screen clones another display - - - - - Right of... - - - - - Left of... - - - - - Above... - - - - - Below... - - - - - Positioned manually - - - - - Advanced - - - - - Refresh rate: - - - - - Rotation: - - - - - Info - - - - - Display information - - - - - Name: %1 - - - - - - Vendor: %1 - - - - - - Serial: %1 - - - - - - Display size: %1cm x %2cm - - - - - - Serial number: %1 - - - - - - EISA device ID: %1 - - - - - - None - - - - - Left - - - - - Right - - - - - Inverted - - - - - %1 Hz - - - - - TimeoutDialog - - - Settings are changed - - - - - Are the current settings OK for you? - - - - - %1 second(s) remaining - - - - diff --git a/lxqt-config-monitor/translations/lxqt-config-monitor_de.ts b/lxqt-config-monitor/translations/lxqt-config-monitor_de.ts deleted file mode 100644 index 2b362ef..0000000 --- a/lxqt-config-monitor/translations/lxqt-config-monitor_de.ts +++ /dev/null @@ -1,425 +0,0 @@ - - - - - MonitorInfo - - - Laptop LCD Monitor - Laptop-Bildschirm - - - - External VGA Monitor - Externer VGA-Bildschirm - - - - VGA Monitor - VGA-Bildschirm - - - - External DVI Monitor - Externer DVI-Bildschirm - - - - DVI Monitor - DVI-Bildschirm - - - - TV - Fernseher - - - - Default Monitor - Standardbildschirm - - - - MonitorPictureDialog - - - Dialog - Dialogfenster - - - - Keep monitors attached - - - - Magnetic attraction - Magnetische Anziehungskraft - - - - MonitorSettingsDialog - - - Monitor Settings - Bildschirmeinstellungen - - - - Settings - Einstellungen - - - Unify all monitors - Alle Bildschirme gleich behandeln - - - Monitor Position - Bildschirmposition - - - Primary monitor: - Hauptbildschirm: - - - Do you want to save changes? - Einstellungen sichern? - - - Please, check the settings before saving. - Bitte Konfiguration vor dem Sichern überprüfen. - - - Name - Name - - - Name: - Name: - - - Actual - Aktuell - - - - Set position - - - - - Error - Fehler - - - - Config can not be saved - Konfiguration kann nicht gespeichert werden - - - - Advanced settings - - - - - MonitorWidget - - Turn on - Einschalten - - - - Setup - - - - - (x) - - - - - (y) - - - - - Resolution: - Auflösung: - - - - Enable this display - - - - - This is my primary display - - - - - This screen extends another display - - - - - This screen clones another display - - - - - Right of... - - - - - Left of... - - - - - Above... - - - - - Below... - - - - - Positioned manually - - - - - Advanced - - - - - Refresh rate: - - - - - Rotation: - - - - - Info - - - - - Display information - - - - Rate: - Bildwiederholfrequenz: - - - Hz - Hz - - - Position: - Position: - - - x: - x: - - - y: - y: - - - Brightness: - Helligkeit: - - - Gamma: - Gamma: - - - : - : - - - Backlight: - Hintergrundbeleuchtung: - - - Auto - Automatisch - - - - Name: %1 - - - - - - Vendor: %1 - - - - - - Serial: %1 - - - - - - Display size: %1cm x %2cm - - - - - - Serial number: %1 - - - - - - EISA device ID: %1 - - - - - - None - - - - - Left - - - - - Right - - - - - Inverted - - - - - %1 Hz - - - - - QObject - - Auto - Automatisch - - - Monitor Settings - Bildschirmeinstellungen - - - Quick Options - Schnellwahl - - - Settings - Einstellungen - - - Save settings - Einstellungen sichern - - - - QuickOptions - - Monitor Settings - Bildschirmeinstellungen - - - Show the same screen on both laptop LCD and external monitor - Gleiches Bild auf Laptop und externem Bildschirm anzeigen - - - Extended view - Erweiterter Bildschirm - - - Turn off laptop LCD and use external monitor only - Laptop-Bildschirm ausschalten und nur den externen Monitor verwenden - - - Turn off external monitor and use laptop LCD only - Externen Monitor ausschalten und nur den Laptop-Bildschirm verwenden - - - - SaveSettings - - Monitor Settings - Bildschirmeinstellungen - - - Save - Speichern - - - Saved settings - Gespeicherte Einstellungen - - - All: - Alle: - - - Hardware compatible: - Mit der Hardware kompatibel: - - - Rename - Umbenennen - - - Delete - Löschen - - - Name - Name - - - Name: - Name: - - - - TimeoutDialog - - - Settings are changed - Einstellungen wurden geändert - - - - Are the current settings OK for you? - Sind die Einstellungen korrekt? - - - - %1 second(s) remaining - %1 Sekunde(n) verbleiben - - - diff --git a/lxqt-config-monitor/translations/lxqt-config-monitor_el.ts b/lxqt-config-monitor/translations/lxqt-config-monitor_el.ts deleted file mode 100644 index aa6a13f..0000000 --- a/lxqt-config-monitor/translations/lxqt-config-monitor_el.ts +++ /dev/null @@ -1,425 +0,0 @@ - - - - - MonitorInfo - - - Laptop LCD Monitor - Οθόνη LCD φορητού - - - - External VGA Monitor - Εξωτερική οθόνη VGA - - - - VGA Monitor - Οθόνη VGA - - - - External DVI Monitor - Εξωτερική οθόνη DVI - - - - DVI Monitor - Οθόνη DVI - - - - TV - Τηλεόραση - - - - Default Monitor - Οθόνη εξ ορισμού - - - - MonitorPictureDialog - - - Dialog - Διάλογος - - - - Keep monitors attached - - - - Magnetic attraction - Μαγνητική έλξη - - - - MonitorSettingsDialog - - - Monitor Settings - Ρυθμίσεις οθόνης - - - - Settings - Ρυθμίσεις - - - Unify all monitors - Ενοποίηση όλων των οθονών - - - Monitor Position - Θέση της οθόνης - - - Primary monitor: - Πρωτεύουσα οθόνη: - - - Do you want to save changes? - Επιθυμείτε την αποθήκευση των αλλαγών; - - - Please, check the settings before saving. - Παρακαλώ, ελέγξτε τις ρυθμίσεις πριν την αποθήκευση. - - - Name - Όνομα - - - Name: - Όνομα: - - - Actual - Τρέχον - - - - Set position - - - - - Error - Σφάλμα - - - - Config can not be saved - Δεν είναι δυνατή η αποθήκευση της διαμόρφωσης - - - - Advanced settings - - - - - MonitorWidget - - Turn on - Ενεργοποίηση - - - - Setup - - - - - (x) - - - - - (y) - - - - - Resolution: - Ανάλυση: - - - - Enable this display - - - - - This is my primary display - - - - - This screen extends another display - - - - - This screen clones another display - - - - - Right of... - - - - - Left of... - - - - - Above... - - - - - Below... - - - - - Positioned manually - - - - - Advanced - - - - - Refresh rate: - - - - - Rotation: - - - - - Info - - - - - Display information - - - - Rate: - Ρυθμός: - - - Hz - Hz - - - Position: - Θέση: - - - x: - x: - - - y: - y: - - - Brightness: - Φωτεινότητα: - - - Gamma: - Γάμμα: - - - : - : - - - Backlight: - Οπίσθιος φωτισμός: - - - Auto - Αυτόματο - - - - Name: %1 - - - - - - Vendor: %1 - - - - - - Serial: %1 - - - - - - Display size: %1cm x %2cm - - - - - - Serial number: %1 - - - - - - EISA device ID: %1 - - - - - - None - - - - - Left - - - - - Right - - - - - Inverted - - - - - %1 Hz - - - - - QObject - - Auto - Αυτόματο - - - Monitor Settings - Ρυθμίσεις οθόνης - - - Quick Options - Γρήγορες επιλογές - - - Settings - Ρυθμίσεις - - - Save settings - Αποθήκευση ρυθμίσεων - - - - QuickOptions - - Monitor Settings - Ρυθμίσεις οθόνης - - - Show the same screen on both laptop LCD and external monitor - Εμφάνιση της ίδιας οθόνης στο LCD του φορητού και στην εξωτερική οθόνη - - - Extended view - Εκτεταμένη προβολή - - - Turn off laptop LCD and use external monitor only - Απενεργοποίηση της οθόνης LCD του φορητού και χρήση μόνον της εξωτερικής οθόνης - - - Turn off external monitor and use laptop LCD only - Απενεργοποίηση της εξωτερικής οθόνης και χρήση μόνον της οθόνης LCD του φορητού - - - - SaveSettings - - Monitor Settings - Ρυθμίσεις οθόνης - - - Save - Αποθήκευση - - - Saved settings - Αποθηκευμένες ρυθμίσεις - - - All: - Όλα: - - - Hardware compatible: - Συμβατά με το υλικό: - - - Rename - Μετονομασία - - - Delete - Διαγραφή - - - Name - Όνομα - - - Name: - Όνομα: - - - - TimeoutDialog - - - Settings are changed - Οι ρυθμίσεις τροποποιήθηκαν - - - - Are the current settings OK for you? - Οι τρέχουσες ρυθμίσεις σας ικανοποιούν; - - - - %1 second(s) remaining - Υπολείπεται %1 δευτερόλεπτο(α) - - - diff --git a/lxqt-config-monitor/translations/lxqt-config-monitor_hu.ts b/lxqt-config-monitor/translations/lxqt-config-monitor_hu.ts deleted file mode 100644 index f1f3bf6..0000000 --- a/lxqt-config-monitor/translations/lxqt-config-monitor_hu.ts +++ /dev/null @@ -1,377 +0,0 @@ - - - - - MonitorInfo - - - Laptop LCD Monitor - Beépített LCD Monitor - - - - External VGA Monitor - Külső LCD Monitor - - - - VGA Monitor - VGA Monitor - - - - External DVI Monitor - Külső DVI Monitor - - - - DVI Monitor - - - - - TV - - - - - Default Monitor - Alapértelmezett Monitor - - - - MonitorPictureDialog - - - Dialog - Párbeszédablak - - - - Keep monitors attached - - - - Magnetic attraction - Mégneses elhajlás - - - - MonitorSettingsDialog - - - Monitor Settings - Monitor beállítás - - - Quick Options - Gyors lehetőségek - - - Show the same screen on both laptop LCD and external monitor - Azonos kép a beépített LCD és külső monitoron - - - Extended view - Bővített megjelenítés - - - Turn off laptop LCD and use external monitor only - Beépített LCD kikapcsolása és csak a külső használata - - - Turn off external monitor and use laptop LCD only - Külső monor lekapcsolása és csak a belső LCD használata - - - - Settings - beállítások - - - Unify all monitors - Monitorok összevonása - - - Monitor Position - Monitor helyzet - - - Primary monitor: - Elsődleges monitor: - - - Do you want to save changes? - Változtatások mentése? - - - Please, check your config before to save. - Mentés előtt ellenőrizd a beállításokat! - - - - Set position - - - - - Error - Hiba - - - - Config can not be saved - A beállítás mentetlen - - - - Advanced settings - - - - - MonitorWidget - - Turn on - Bekapcsolás - - - - Setup - - - - - (x) - - - - - (y) - - - - - Resolution: - Felbontás: - - - - Enable this display - - - - - This is my primary display - - - - - This screen extends another display - - - - - This screen clones another display - - - - - Right of... - - - - - Left of... - - - - - Above... - - - - - Below... - - - - - Positioned manually - - - - - Advanced - - - - - Refresh rate: - - - - - Rotation: - - - - - Info - - - - - Display information - - - - Rate: - Arány: - - - Position: - Helyzet: - - - Brightness: - Fényerő: - - - Backlight: - Háttérfény: - - - Auto - Automata - - - - Name: %1 - - - - - - Vendor: %1 - - - - - - Serial: %1 - - - - - - Display size: %1cm x %2cm - - - - - - Serial number: %1 - - - - - - EISA device ID: %1 - - - - - - None - - - - - Left - - - - - Right - - - - - Inverted - - - - - %1 Hz - - - - - QObject - - Auto - Automata - - - Monitor Settings - Monitor beállítás - - - Quick Options - Gyors lehetőségek - - - Settings - beállítások - - - - QuickOptions - - Monitor Settings - Monitor beállítás - - - Show the same screen on both laptop LCD and external monitor - Azonos kép a beépített LCD és külső monitoron - - - Extended view - Bővített megjelenítés - - - Turn off laptop LCD and use external monitor only - Beépített LCD kikapcsolása és csak a külső használata - - - Turn off external monitor and use laptop LCD only - Külső monor lekapcsolása és csak a belső LCD használata - - - - SaveSettings - - Monitor Settings - Monitor beállítás - - - - TimeoutDialog - - - Settings are changed - Beállítások változtatása - - - - Are the current settings OK for you? - Jók a beállítások? - - - - %1 second(s) remaining - %1 másodperc van hátra - - - diff --git a/lxqt-config-monitor/translations/lxqt-config-monitor_it.ts b/lxqt-config-monitor/translations/lxqt-config-monitor_it.ts deleted file mode 100644 index 54b8f6b..0000000 --- a/lxqt-config-monitor/translations/lxqt-config-monitor_it.ts +++ /dev/null @@ -1,377 +0,0 @@ - - - - - MonitorInfo - - - Laptop LCD Monitor - Monitor portatile LCD - - - - External VGA Monitor - Monitor esterno VGA - - - - VGA Monitor - Monitor VGA - - - - External DVI Monitor - Monitor esterno DVI - - - - DVI Monitor - Monitor DVI - - - - TV - TV - - - - Default Monitor - Monitor principale - - - - MonitorPictureDialog - - - Dialog - - - - - Keep monitors attached - - - - Magnetic attraction - Attrazione magnetica - - - - MonitorSettingsDialog - - - Monitor Settings - Impostazioni del monitor - - - Quick Options - Opzioni veloci - - - Show the same screen on both laptop LCD and external monitor - Unifica uscite - - - Extended view - Vista estesa - - - Turn off laptop LCD and use external monitor only - Spegni monitor portatile LCD e usa solo monitor esterno - - - Turn off external monitor and use laptop LCD only - Spegni monitor esterno e usa solo monitor LCD - - - - Settings - Impostazioni - - - Unify all monitors - Unisci tutte le uscite - - - Monitor Position - Posizione dello schermo - - - Primary monitor: - Monitor principale: - - - Do you want to save changes? - Salvare i cambiamenti? - - - Please, check your config before to save. - Per favore controlla la configurazione prima di salvare. - - - - Set position - - - - - Error - Errore - - - - Config can not be saved - La configurazione non può essere salvata - - - - Advanced settings - - - - - MonitorWidget - - Turn on - Accendi - - - - Setup - - - - - (x) - - - - - (y) - - - - - Resolution: - Risoluzione: - - - - Enable this display - - - - - This is my primary display - - - - - This screen extends another display - - - - - This screen clones another display - - - - - Right of... - - - - - Left of... - - - - - Above... - - - - - Below... - - - - - Positioned manually - - - - - Advanced - - - - - Refresh rate: - - - - - Rotation: - - - - - Info - - - - - Display information - - - - Rate: - Frequenza: - - - Position: - Posizione: - - - Brightness: - Luminosità: - - - Backlight: - Retroilluminazione: - - - Auto - Auto - - - - Name: %1 - - - - - - Vendor: %1 - - - - - - Serial: %1 - - - - - - Display size: %1cm x %2cm - - - - - - Serial number: %1 - - - - - - EISA device ID: %1 - - - - - - None - - - - - Left - - - - - Right - - - - - Inverted - - - - - %1 Hz - - - - - QObject - - Auto - Auto - - - Monitor Settings - Impostazioni del monitor - - - Quick Options - Opzioni veloci - - - Settings - Impostazioni - - - - QuickOptions - - Monitor Settings - Impostazioni del monitor - - - Show the same screen on both laptop LCD and external monitor - Unifica uscite - - - Extended view - Vista estesa - - - Turn off laptop LCD and use external monitor only - Spegni monitor portatile LCD e usa solo monitor esterno - - - Turn off external monitor and use laptop LCD only - Spegni monitor esterno e usa solo monitor LCD - - - - SaveSettings - - Monitor Settings - Impostazioni del monitor - - - - TimeoutDialog - - - Settings are changed - Impostazione modificate - - - - Are the current settings OK for you? - Mantenere questa configurazione? - - - - %1 second(s) remaining - %1 secondi rimanenti - - - diff --git a/lxqt-config-monitor/translations/lxqt-config-monitor_ja.ts b/lxqt-config-monitor/translations/lxqt-config-monitor_ja.ts deleted file mode 100644 index 3954b37..0000000 --- a/lxqt-config-monitor/translations/lxqt-config-monitor_ja.ts +++ /dev/null @@ -1,393 +0,0 @@ - - - - - MonitorInfo - - - Laptop LCD Monitor - ラップトップ液晶モニター - - - - External VGA Monitor - 外部VGAモニター - - - - VGA Monitor - VGAモニター - - - - External DVI Monitor - 外部DVIモニター - - - - DVI Monitor - DVIモニター - - - - TV - TV - - - - Default Monitor - デフォルトのモニター - - - - MonitorPictureDialog - - - Dialog - ダイアログ - - - - Keep monitors attached - - - - - MonitorSettingsDialog - - - Monitor Settings - モニターの設定 - - - Quick Options - クイックオプション - - - Show the same screen on both laptop LCD and external monitor - ラップトップ液晶パネルと外部モニターで同じ画面を表示 - - - Extended view - 拡張領域 - - - Turn off laptop LCD and use external monitor only - ラップトップ液晶画面を無効にし、外部モニターのみ使う - - - Turn off external monitor and use laptop LCD only - 外部モニターを無効にし、ラップトップ液晶画面のみ使う - - - - Settings - 設定 - - - Unify all monitors - すべてのモニターの表示を共通にする - - - Monitor Position - モニターの位置 - - - Primary monitor: - プライマリーモニター: - - - Do you want to save changes? - 変更を保存しますか? - - - Please, check your config before to save. - 保存する前に、設定結果を確認してください - - - - Set position - - - - - Error - エラー - - - - Config can not be saved - 設定を保存することができませんでした - - - - Advanced settings - - - - - MonitorWidget - - Turn on - 有効にする - - - - Setup - - - - - (x) - - - - - (y) - - - - - Resolution: - 解像度: - - - - Enable this display - - - - - This is my primary display - - - - - This screen extends another display - - - - - This screen clones another display - - - - - Right of... - - - - - Left of... - - - - - Above... - - - - - Below... - - - - - Positioned manually - - - - - Advanced - - - - - Refresh rate: - - - - - Rotation: - - - - - Info - - - - - Display information - - - - Rate: - リフレッシュレート: - - - Hz - Hz - - - Position: - 位置: - - - x: - X座標: - - - y: - Y座標: - - - Brightness: - 明るさ: - - - Gamma: - ガンマ: - - - : - : - - - Backlight: - バックライト: - - - Auto - 自動 - - - - Name: %1 - - - - - - Vendor: %1 - - - - - - Serial: %1 - - - - - - Display size: %1cm x %2cm - - - - - - Serial number: %1 - - - - - - EISA device ID: %1 - - - - - - None - - - - - Left - - - - - Right - - - - - Inverted - - - - - %1 Hz - - - - - QObject - - Auto - 自動 - - - Monitor Settings - モニターの設定 - - - Quick Options - クイックオプション - - - Settings - 設定 - - - - QuickOptions - - Monitor Settings - モニターの設定 - - - Show the same screen on both laptop LCD and external monitor - ラップトップ液晶パネルと外部モニターで同じ画面を表示 - - - Extended view - 拡張領域 - - - Turn off laptop LCD and use external monitor only - ラップトップ液晶画面を無効にし、外部モニターのみ使う - - - Turn off external monitor and use laptop LCD only - 外部モニターを無効にし、ラップトップ液晶画面のみ使う - - - - SaveSettings - - Monitor Settings - モニターの設定 - - - - TimeoutDialog - - - Settings are changed - 設定は変更されました - - - - Are the current settings OK for you? - この設定で問題ないですか? - - - - %1 second(s) remaining - 残り %1 秒 - - - diff --git a/lxqt-config-monitor/translations/lxqt-config-monitor_pl_PL.ts b/lxqt-config-monitor/translations/lxqt-config-monitor_pl_PL.ts deleted file mode 100644 index 33a3561..0000000 --- a/lxqt-config-monitor/translations/lxqt-config-monitor_pl_PL.ts +++ /dev/null @@ -1,381 +0,0 @@ - - - - - MonitorInfo - - - Laptop LCD Monitor - Monitor LCD laptopa - - - - External VGA Monitor - Zewnętrzny monitor VGA - - - - VGA Monitor - Monitor VGA - - - - External DVI Monitor - Zewnętrzny monitor DVI - - - - DVI Monitor - Monitor DVI - - - - TV - TV - - - - Default Monitor - Domyślny monitor - - - - MonitorPictureDialog - - - Dialog - - - - - Keep monitors attached - - - - - MonitorSettingsDialog - - - Monitor Settings - Ustawienia monitora - - - Quick Options - Opcje - - - Show the same screen on both laptop LCD and external monitor - Pokaż ten sam ekran na LCD laptopa oraz zewnętrznym monitorze - - - Extended view - Rozszerzony widok - - - Turn off laptop LCD and use external monitor only - Wyłącz LCD laptopa i użyj tylko zewnętrznego monitora - - - Turn off external monitor and use laptop LCD only - Wyłącz zewnętrzny monitor i użyj tylko LCD laptopa - - - - Settings - Ustawienia - - - Primary monitor: - Główny monitor: - - - Do you want to save changes? - Czy chcesz zachować zmiany? - - - Please, check your config before to save. - Proszę sprawdzić konfigurację przed zapisaniem. - - - - Set position - - - - - Error - Błąd - - - - Config can not be saved - Konfiguracja nie może być zapisana - - - - Advanced settings - - - - - MonitorWidget - - Turn on - Włącz - - - - Setup - - - - - (x) - - - - - (y) - - - - - Resolution: - Rozdzielczość: - - - - Enable this display - - - - - This is my primary display - - - - - This screen extends another display - - - - - This screen clones another display - - - - - Right of... - - - - - Left of... - - - - - Above... - - - - - Below... - - - - - Positioned manually - - - - - Advanced - - - - - Refresh rate: - - - - - Rotation: - - - - - Info - - - - - Display information - - - - Rate: - Odświeżanie: - - - Hz - Hz - - - Position: - Pozycja: - - - x: - x: - - - y: - y: - - - Brightness: - Jasność: - - - Gamma: - Gamma: - - - : - : - - - Auto - Auto - - - - Name: %1 - - - - - - Vendor: %1 - - - - - - Serial: %1 - - - - - - Display size: %1cm x %2cm - - - - - - Serial number: %1 - - - - - - EISA device ID: %1 - - - - - - None - - - - - Left - - - - - Right - - - - - Inverted - - - - - %1 Hz - - - - - QObject - - Auto - Auto - - - Monitor Settings - Ustawienia monitora - - - Quick Options - Opcje - - - Settings - Ustawienia - - - - QuickOptions - - Monitor Settings - Ustawienia monitora - - - Show the same screen on both laptop LCD and external monitor - Pokaż ten sam ekran na LCD laptopa oraz zewnętrznym monitorze - - - Extended view - Rozszerzony widok - - - Turn off laptop LCD and use external monitor only - Wyłącz LCD laptopa i użyj tylko zewnętrznego monitora - - - Turn off external monitor and use laptop LCD only - Wyłącz zewnętrzny monitor i użyj tylko LCD laptopa - - - - SaveSettings - - Monitor Settings - Ustawienia monitora - - - - TimeoutDialog - - - Settings are changed - Ustawienia zostały zmienione - - - - Are the current settings OK for you? - Czy aktualne ustawienia są prawidłowe? - - - - %1 second(s) remaining - pozostało sekund: %1 - - - diff --git a/lxqt-config-monitor/translations/lxqt-config-monitor_pt.ts b/lxqt-config-monitor/translations/lxqt-config-monitor_pt.ts deleted file mode 100644 index d554fc2..0000000 --- a/lxqt-config-monitor/translations/lxqt-config-monitor_pt.ts +++ /dev/null @@ -1,477 +0,0 @@ - - - - - MonitorInfo - - - Laptop LCD Monitor - Monitor LCD de portátil - - - - External VGA Monitor - Monitor externo VGA - - - - VGA Monitor - Monitor VGA - - - - External DVI Monitor - Monitor externo DVI - - - - DVI Monitor - Monitor DVI - - - - TV - TV - - - - Default Monitor - Monitor pré-definido - - - - MonitorPictureDialog - - - Dialog - Caixa de diálogo - - - - Keep monitors attached - - - - Magnetic attraction - Atração magnética - - - - MonitorSettingsDialog - - Laptop LCD Monitor - Monitor LCD de portátil - - - External VGA Monitor - Monitor externo VGA - - - VGA Monitor - Monitor VGA - - - External DVI Monitor - Monitor externo DVI - - - DVI Monitor - Monitor DVI - - - TV - TV - - - Default Monitor - Monitor pré-definido - - - Auto - Automático - - - OK? - Aceitar? - - - Yes - Sim - - - About - Sobre - - - Left of - Esquerda de - - - Right of - Direita de - - - Above of - Acima de - - - Below of - Abaixo de - - - Show the same screen on both - Mostrar o mesmo ecrã em ambos - - - Turn off first monitor and use second monitor only - Desligar o primeiro monitor e utilizar o segundo - - - Turn off second monitor and use first monitor only - Desligar o segundo monitor e utilizar o primeiro - - - LXQt-config-monitor - -Monitor configuration tool for LXQt. - LXQt-config-monitor - -Ferramenta de configuração de monitores do LXQt. - - - - Monitor Settings - Definições do monitor - - - Quick Options - Opções rápidas - - - Show the same screen on both laptop LCD and external monitor - Mostrar o mesmo ecrã no portátil e no monitor externo - - - Extended view - Vista detalhada - - - Turn off laptop LCD and use external monitor only - Desligar ecrã do portátil e utilizar o monitor externo - - - Turn off external monitor and use laptop LCD only - Desligar o monitor externo e utilizar o ecrã do portátil - - - - Settings - Definições - - - Unify all monitors - Unificar todos os monitores - - - Monitor Position - Posição do monitor - - - Primary monitor: - Monitor principal: - - - Do you want to save changes? - Quer guardar as alterações? - - - Please, check your config before to save. - Verifique a configuraçao antes de guardar. - - - - Set position - - - - - Error - Erro - - - - Config can not be saved - Não é possível guardar a configuração - - - - Advanced settings - - - - - MonitorWidget - - Turn on - Ligar - - - - Setup - - - - - (x) - - - - - (y) - - - - - Resolution: - Resolução: - - - - Enable this display - - - - - This is my primary display - - - - - This screen extends another display - - - - - This screen clones another display - - - - - Right of... - - - - - Left of... - - - - - Above... - - - - - Below... - - - - - Positioned manually - - - - - Advanced - - - - - Refresh rate: - - - - - Rotation: - - - - - Info - - - - - Display information - - - - Rate: - Taxa: - - - Hz - Hz - - - Position: - Posição: - - - x: - x: - - - y: - y: - - - Brightness: - Brilho: - - - Gamma: - Gama: - - - : - : - - - Backlight: - Luz de fundo: - - - Auto - Automático - - - - Name: %1 - - - - - - Vendor: %1 - - - - - - Serial: %1 - - - - - - Display size: %1cm x %2cm - - - - - - Serial number: %1 - - - - - - EISA device ID: %1 - - - - - - None - - - - - Left - - - - - Right - - - - - Inverted - - - - - %1 Hz - - - - - QObject - - Auto - Automático - - - Monitor Settings - Definições do monitor - - - Quick Options - Opções rápidas - - - Settings - Definições - - - - QuickOptions - - Monitor Settings - Definições do monitor - - - Show the same screen on both laptop LCD and external monitor - Mostrar o mesmo ecrã no portátil e no monitor externo - - - Extended view - Vista detalhada - - - Turn off laptop LCD and use external monitor only - Desligar ecrã do portátil e utilizar o monitor externo - - - Turn off external monitor and use laptop LCD only - Desligar o monitor externo e utilizar o ecrã do portátil - - - - SaveSettings - - Monitor Settings - Definições do monitor - - - - TimeoutDialog - - - Settings are changed - Definições alteradas - - - - Are the current settings OK for you? - As definições estão certas para si? - - - - %1 second(s) remaining - %1 segundo(s) em falta - - - diff --git a/lxqt-config-monitor/translations/lxqt-config-monitor_ru.ts b/lxqt-config-monitor/translations/lxqt-config-monitor_ru.ts deleted file mode 100644 index 4c12d9a..0000000 --- a/lxqt-config-monitor/translations/lxqt-config-monitor_ru.ts +++ /dev/null @@ -1,432 +0,0 @@ - - - - - ApplyDialog - - Monitor Settings - Настройки монитора - - - Save - Сохранить - - - Saved settings - Сохранённые настройки - - - All: - Все: - - - Hardware compatible: - Аппаратно-совместимые: - - - - MonitorInfo - - - Laptop LCD Monitor - ЖК-монитор лэптопа - - - - External VGA Monitor - Внешний VGA-монитор - - - - VGA Monitor - VGA-монитор - - - - External DVI Monitor - Внешний DVI-монитор - - - - DVI Monitor - DVI-монитор - - - - TV - ТВ - - - - Default Monitor - Монитор по умолчанию - - - - MonitorPictureDialog - - - Dialog - - - - - Keep monitors attached - - - - Magnetic attraction - Магнитное притяжение - - - - MonitorSettingsDialog - - - Monitor Settings - Настройки монитора - - - - Settings - Настройки - - - Unify all monitors - Объединить все мониторы - - - Monitor Position - Положение монитора - - - Primary monitor: - Первичный монитор: - - - Apply - Применить - - - Do you want to save changes? - Вы хотите сохранить изменения? - - - Please, check the settings before saving. - Проверьте, пожалуйста, настройки перед сохранением. - - - Name - Название - - - Name: - Название: - - - Actual - Текущие - - - - Set position - - - - - Error - Ошибка - - - - Config can not be saved - Не удалось сохранить конфигурацию - - - - Advanced settings - - - - - MonitorWidget - - Turn on - Включить - - - - Setup - - - - - (x) - - - - - (y) - - - - - Resolution: - Разрешение: - - - - Enable this display - - - - - This is my primary display - - - - - This screen extends another display - - - - - This screen clones another display - - - - - Right of... - - - - - Left of... - - - - - Above... - - - - - Below... - - - - - Positioned manually - - - - - Advanced - - - - - Refresh rate: - - - - - Rotation: - - - - - Info - - - - - Display information - - - - Rate: - Частота: - - - Hz - Гц - - - Position: - Положение: - - - Backlight: - Подсветка: - - - Brightness: - Яркость: - - - Gamma: - Гамма: - - - Auto - Авто - - - - Name: %1 - - - - - - Vendor: %1 - - - - - - Serial: %1 - - - - - - Display size: %1cm x %2cm - - - - - - Serial number: %1 - - - - - - EISA device ID: %1 - - - - - - None - - - - - Left - - - - - Right - - - - - Inverted - - - - - %1 Hz - - - - - QObject - - Auto - Авто - - - Monitor Settings - Настройки монитора - - - Quick Options - Быстрые настройки - - - Settings - Настройки - - - Save settings - Сохранить настройки - - - - QuickOptions - - Monitor Settings - Настройки монитора - - - Show the same screen on both laptop LCD and external monitor - Отображать одинаковый экран на внешнем мониторе и ЖК-мониторе лэптопа - - - Extended view - Расширенный вид - - - Turn off laptop LCD and use external monitor only - Выключить ЖК-монитор лэптопа и использовать только внешний монитор - - - Turn off external monitor and use laptop LCD only - Выключить внешний монитор и использовать только ЖК-монитор лэптопа - - - - SaveSettings - - Monitor Settings - Настройки монитора - - - Save - Сохранить - - - Saved settings - Сохранённые настройки - - - All: - Все: - - - Hardware compatible: - Аппаратно-совместимые: - - - Name - Название - - - Name: - Название: - - - - TimeoutDialog - - - Settings are changed - Настройки изменились - - - - Are the current settings OK for you? - Вам подходят текущие настройки? - - - - %1 second(s) remaining - Осталось %1 секунд(ы) - - - diff --git a/lxqt-config-monitor/translations/lxqt-config-monitor_ru_RU.desktop b/lxqt-config-monitor/translations/lxqt-config-monitor_ru_RU.desktop deleted file mode 100644 index a32362f..0000000 --- a/lxqt-config-monitor/translations/lxqt-config-monitor_ru_RU.desktop +++ /dev/null @@ -1,4 +0,0 @@ -# Translations -Comment[ru_RU]=Настроить мониторы -Name[ru_RU]=Настройки монитора -GenericName[ru_RU]=Настройки монитора \ No newline at end of file diff --git a/lxqt-config-monitor/translations/lxqt-config-monitor_ru_RU.ts b/lxqt-config-monitor/translations/lxqt-config-monitor_ru_RU.ts deleted file mode 100644 index 10cec65..0000000 --- a/lxqt-config-monitor/translations/lxqt-config-monitor_ru_RU.ts +++ /dev/null @@ -1,432 +0,0 @@ - - - - - ApplyDialog - - Monitor Settings - Настройки монитора - - - Save - Сохранить - - - Saved settings - Сохранённые настройки - - - All: - Все: - - - Hardware compatible: - Аппаратно-совместимые: - - - - MonitorInfo - - - Laptop LCD Monitor - ЖК-монитор лэптопа - - - - External VGA Monitor - Внешний VGA-монитор - - - - VGA Monitor - VGA-монитор - - - - External DVI Monitor - Внешний DVI-монитор - - - - DVI Monitor - DVI-монитор - - - - TV - ТВ - - - - Default Monitor - Монитор по умолчанию - - - - MonitorPictureDialog - - - Dialog - - - - - Keep monitors attached - - - - Magnetic attraction - Магнитное притяжение - - - - MonitorSettingsDialog - - - Monitor Settings - Настройки монитора - - - - Settings - Настройки - - - Unify all monitors - Объединить все мониторы - - - Monitor Position - Положение монитора - - - Primary monitor: - Первичный монитор: - - - Apply - Применить - - - Do you want to save changes? - Вы хотите сохранить изменения? - - - Please, check the settings before saving. - Проверьте, пожалуйста, настройки перед сохранением. - - - Name - Название - - - Name: - Название: - - - Actual - Текущие - - - - Set position - - - - - Error - Ошибка - - - - Config can not be saved - Не удалось сохранить конфигурацию - - - - Advanced settings - - - - - MonitorWidget - - Turn on - Включить - - - - Setup - - - - - (x) - - - - - (y) - - - - - Resolution: - Разрешение: - - - - Enable this display - - - - - This is my primary display - - - - - This screen extends another display - - - - - This screen clones another display - - - - - Right of... - - - - - Left of... - - - - - Above... - - - - - Below... - - - - - Positioned manually - - - - - Advanced - - - - - Refresh rate: - - - - - Rotation: - - - - - Info - - - - - Display information - - - - Rate: - Частота: - - - Hz - Гц - - - Position: - Положение: - - - Backlight: - Подсветка: - - - Brightness: - Яркость: - - - Gamma: - Гамма: - - - Auto - Авто - - - - Name: %1 - - - - - - Vendor: %1 - - - - - - Serial: %1 - - - - - - Display size: %1cm x %2cm - - - - - - Serial number: %1 - - - - - - EISA device ID: %1 - - - - - - None - - - - - Left - - - - - Right - - - - - Inverted - - - - - %1 Hz - - - - - QObject - - Auto - Авто - - - Monitor Settings - Настройки монитора - - - Quick Options - Быстрые настройки - - - Settings - Настройки - - - Save settings - Сохранить настройки - - - - QuickOptions - - Monitor Settings - Настройки монитора - - - Show the same screen on both laptop LCD and external monitor - Отображать одинаковый экран на внешнем мониторе и ЖК-мониторе лэптопа - - - Extended view - Расширенный вид - - - Turn off laptop LCD and use external monitor only - Выключить ЖК-монитор лэптопа и использовать только внешний монитор - - - Turn off external monitor and use laptop LCD only - Выключить внешний монитор и использовать только ЖК-монитор лэптопа - - - - SaveSettings - - Monitor Settings - Настройки монитора - - - Save - Сохранить - - - Saved settings - Сохранённые настройки - - - All: - Все: - - - Hardware compatible: - Аппаратно-совместимые: - - - Name - Название - - - Name: - Название: - - - - TimeoutDialog - - - Settings are changed - Настройки изменились - - - - Are the current settings OK for you? - Вам подходят текущие настройки? - - - - %1 second(s) remaining - Осталось %1 секунд(ы) - - - diff --git a/lxqt-config-monitor/translations/lxqt-config-monitor_zh_TW.ts b/lxqt-config-monitor/translations/lxqt-config-monitor_zh_TW.ts deleted file mode 100644 index e59aae0..0000000 --- a/lxqt-config-monitor/translations/lxqt-config-monitor_zh_TW.ts +++ /dev/null @@ -1,329 +0,0 @@ - - - - - MonitorInfo - - - Laptop LCD Monitor - 筆記型電腦液晶螢幕 - - - - External VGA Monitor - 外接VGA螢幕 - - - - VGA Monitor - VGA 螢幕 - - - - External DVI Monitor - 外接 DVI 螢幕 - - - - DVI Monitor - DVI 螢幕 - - - - TV - 電視 - - - - Default Monitor - 預設螢幕 - - - - MonitorPictureDialog - - - Dialog - - - - - Keep monitors attached - - - - - MonitorSettingsDialog - - Laptop LCD Monitor - 筆記型電腦液晶螢幕 - - - External VGA Monitor - 外接VGA螢幕 - - - VGA Monitor - VGA 螢幕 - - - External DVI Monitor - 外接 DVI 螢幕 - - - DVI Monitor - DVI 螢幕 - - - TV - 電視 - - - Default Monitor - 預設螢幕 - - - Auto - 自動 - - - Yes - - - - About - 關於 - - - Show the same screen on both - 在兩邊都顯示相同畫面 - - - Turn off first monitor and use second monitor only - 關掉第一個螢幕,只用第二個螢幕 - - - Turn off second monitor and use first monitor only - 關掉第二個螢幕,只用第一個螢幕 - - - LXQt-config-monitor - -Monitor configuration tool for LXQt. - LXQt-config-monitor 螢幕設定工具 - - - - Monitor Settings - - - - - Settings - - - - - Set position - - - - - Error - - - - - Config can not be saved - - - - - Advanced settings - - - - - MonitorWidget - - - Setup - - - - - (x) - - - - - (y) - - - - - Resolution: - - - - - Enable this display - - - - - This is my primary display - - - - - This screen extends another display - - - - - This screen clones another display - - - - - Right of... - - - - - Left of... - - - - - Above... - - - - - Below... - - - - - Positioned manually - - - - - Advanced - - - - - Refresh rate: - - - - - Rotation: - - - - - Info - - - - - Display information - - - - Auto - 自動 - - - - Name: %1 - - - - - - Vendor: %1 - - - - - - Serial: %1 - - - - - - Display size: %1cm x %2cm - - - - - - Serial number: %1 - - - - - - EISA device ID: %1 - - - - - - None - - - - - Left - - - - - Right - - - - - Inverted - - - - - %1 Hz - - - - - QObject - - Auto - 自動 - - - - TimeoutDialog - - - Settings are changed - - - - - Are the current settings OK for you? - - - - - %1 second(s) remaining - - - - diff --git a/lxqt-config-session.png b/lxqt-config-session.png new file mode 100644 index 0000000000000000000000000000000000000000..17e725b5a7160a2164ba9a0118b6146265609bc7 GIT binary patch literal 61671 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
yh+& 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 Uj*p5sOOx=+=zytyA=M%5e}lQKh5!Hn literal 0 HcmV?d00001 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d1e4e6e..1f9c86b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -30,6 +30,16 @@ lxqt_translate_ts(QM_FILES ${lxqt-config_UIS} INSTALL_DIR "${LXQT_TRANSLATIONS_DIR}/${PROJECT_NAME}" + PULL_TRANSLATIONS + ${PULL_TRANSLATIONS} + CLEAN_TRANSLATIONS + ${CLEAN_TRANSLATIONS} + TRANSLATIONS_REPO + ${TRANSLATIONS_REPO} + TRANSLATIONS_REFSPEC + ${TRANSLATIONS_REFSPEC} + REPO_SUBDIR + "lxqt-config/${PROJECT_NAME}" ) lxqt_app_translation_loader(QM_LOADER ${PROJECT_NAME}) diff --git a/src/main.cpp b/src/main.cpp index 0996b85..a9644e6 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -26,19 +26,30 @@ * END_COMMON_COPYRIGHT_HEADER */ #include +#include #include "mainwindow.h" int main(int argc, char **argv) { LXQt::SingleApplication app(argc, argv); + app.setOrganizationName(QStringLiteral("lxqt")); + app.setApplicationName(QStringLiteral("lxqt-config")); + app.setAttribute(Qt::AA_UseHighDpiPixmaps, true); // ensure that we use lxqt-config.menu file. qputenv("XDG_MENU_PREFIX", "lxqt-"); LXQtConfig::MainWindow w; app.setActivationWindow(&w); + QSize s = QSettings{}.value("size").toSize(); + if (!s.isEmpty()) + w.resize(s); w.show(); - return app.exec(); + int ret = app.exec(); + + QSettings{}.setValue("size", w.size()); + + return ret; } diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 4cc66bf..ebdedad 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -33,6 +33,8 @@ #include #include #include +#include +#include #include #include @@ -170,8 +172,16 @@ public: QSize sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const { - int height = QStyledItemDelegate::sizeHint(option, index).height(); - return QSize(mView->gridSize().width(), qMin(height, mView->gridSize().height())); + /* We let Qt calculate the real cell size but consider the 4-px margin + around each cell and try to add a 2-px margin around the selection + rectangle for styles that, unlike Fusion, highlight the whole item. */ + QStyleOptionViewItemV4 opt = option; + int delta = opt.rect.width() - (mView->gridSize().width() - 8); + if (delta > 0) + opt.rect.adjust(delta/2, 0 , -delta/2, 0); + QSize defaultSize = QStyledItemDelegate::sizeHint(opt, index); + return QSize(qMin(defaultSize.width() + 4, mView->gridSize().width() - 8), + qMin(defaultSize.height() + 4, mView->gridSize().height() - 8)); } protected: @@ -180,9 +190,16 @@ protected: QStyleOptionViewItemV4 opt = option; initStyleOption(&opt, index); - QSize size(mView->gridSize().width(), mView->iconSize().height()); - QPixmap pixmap = opt.icon.pixmap(mView->iconSize()); - opt.icon = QIcon(pixmap.copy(QRect(QPoint(0, 0), size))); + const QSize & iconSize = option.decorationSize; + QSize size(mView->gridSize().width() - 8, // 4-px margin around each cell + iconSize.height()); + // for having sharp non-scalable icons with HDPI + int dpr = qApp->devicePixelRatio(); + if (dpr < 1) dpr = 1; + QPixmap pixmap = opt.icon.pixmap(iconSize / dpr); // -> Qt doc -> QIcon::pixmap() + if (dpr > 1 && pixmap.size() == iconSize) // exceptional (scalable or not from icon set) + pixmap = opt.icon.pixmap(iconSize); + opt.icon = QIcon(pixmap.copy(QRect(QPoint(0, 0), size * dpr))); opt.decorationSize = size; QApplication::style()->drawControl(QStyle::CE_ItemViewItem, &opt, painter); @@ -197,50 +214,23 @@ LXQtConfig::MainWindow::MainWindow() : QMainWindow() { setupUi(this); + /* To always have the intended layout on startup, + the listview should be shown after it's fully formed. */ + view->hide(); + model = new ConfigPaneModel(); view->setViewMode(QListView::IconMode); - view->setIconSize(QSize(32, 32)); - view->setGridSize(QSize(100, 100)); view->setWordWrap(true); view->setUniformItemSizes(true); view->setCategoryDrawer(new QCategoryDrawerV3(view)); - // Qt bug: signal activated should respect the hint, but it doesn't - if (style()->styleHint(QStyle::SH_ItemView_ActivateItemOnSingleClick)) - connect(view, SIGNAL(clicked(const QModelIndex&)), SLOT(activateItem(const QModelIndex&))); - else - connect(view, SIGNAL(doubleClicked(const QModelIndex&)), SLOT(activateItem(const QModelIndex&))); + connect(view, &QAbstractItemView::activated, this, &MainWindow::activateItem); view->setFocus(); + QTimer::singleShot(0, [this] { setSizing(); }); QTimer::singleShot(1, this, SLOT(load())); -} - -bool LXQtConfig::MainWindow::event(QEvent* event) -{ - // LXQt's Qt5 plugin sends a ThemeChange event - if (event->type() == QEvent::ThemeChange) - { - // Qt bug: signal activated should respect the hint, but it doesn't - if (style()->styleHint(QStyle::SH_ItemView_ActivateItemOnSingleClick)) - { - view->disconnect(this); - connect(view, SIGNAL(clicked(const QModelIndex&)), SLOT(activateItem(const QModelIndex&))); - } - else - { - view->disconnect(this); - connect(view, SIGNAL(doubleClicked(const QModelIndex&)), SLOT(activateItem(const QModelIndex&))); - } - } - else if (event->type() == QEvent::KeyRelease) - { - int key = static_cast(event)->key(); - if (key == Qt::Key_Enter || key == Qt::Key_Return) - activateItem(view->selectionModel()->currentIndex()); - } - - return QMainWindow::event(event); + new QShortcut{QKeySequence{Qt::CTRL + Qt::Key_Q}, this, SLOT(close())}; } void LXQtConfig::MainWindow::load() @@ -254,6 +244,8 @@ void LXQtConfig::MainWindow::load() view->setModel(proxyModel); view->setItemDelegate(new ConfigItemDelegate(view)); + view->show(); + QApplication::restoreOverrideCursor(); } @@ -265,3 +257,35 @@ void LXQtConfig::MainWindow::activateItem(const QModelIndex &index) QModelIndex orig = proxyModel->mapToSource(index); model->activateItem(orig); } + +void LXQtConfig::MainWindow::setSizing() +{ + // consult the style to know the icon size + int iconSize = qBound(16, view->decorationSize().height(), 256); + // DPR is automatically taken into account in setIconSize() + // but wee need to consider it explicitly below + int dpr = qApp->devicePixelRatio(); + if (dpr < 1) dpr = 1; + iconSize *= dpr; + /* To have an appropriate grid size, we suppose that + * + * (1) The text has 3 lines and each line has 16 chars (for languages like German), at most; + * (2) The selection rect has a margin of 2 px, at most; + * (3) There is, at most, a 3-px spacing between text and icon; and + * (4) There is a 4-px margin around each cell. + */ + QFontMetrics fm = fontMetrics(); + int textWidth = fm.averageCharWidth() * 16; + int textHeight = fm.lineSpacing() * 3; + QSize grid; + grid.setWidth(qMax(iconSize, textWidth) + 4); + grid.setHeight(iconSize + textHeight + 4 + 3); + view->setGridSize(grid + QSize(8, 8)); +} + +bool LXQtConfig::MainWindow::event(QEvent * event) +{ + if (QEvent::StyleChange == event->type()) + setSizing(); + return QMainWindow::event(event); +} diff --git a/src/mainwindow.h b/src/mainwindow.h index e8952ee..ae97cc9 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -50,13 +50,16 @@ class MainWindow : public QMainWindow, public Ui::MainWindow public: MainWindow(); +protected: + virtual bool event(QEvent * event) override; + private: QCategorizedSortFilterProxyModel *proxyModel; ConfigPaneModel *model; private: void builGroup(const QDomElement& xml); - bool event(QEvent *event); + void setSizing(); private slots: void load(); diff --git a/src/qcategorizedview/qcategorizedview.cpp b/src/qcategorizedview/qcategorizedview.cpp index 4c3ca6e..fddb5f4 100644 --- a/src/qcategorizedview/qcategorizedview.cpp +++ b/src/qcategorizedview/qcategorizedview.cpp @@ -781,6 +781,11 @@ void QCategorizedView::reset() QListView::reset(); } +QSize QCategorizedView::decorationSize() const +{ + return viewOptions().decorationSize; +} + void QCategorizedView::paintEvent(QPaintEvent *event) { if (!d->isCategorized()) { @@ -1449,7 +1454,8 @@ void QCategorizedView::currentChanged(const QModelIndex ¤t, } void QCategorizedView::dataChanged(const QModelIndex &topLeft, - const QModelIndex &bottomRight) + const QModelIndex &bottomRight, + const QVector & roles) { QListView::dataChanged(topLeft, bottomRight); if (!d->isCategorized()) { diff --git a/src/qcategorizedview/qcategorizedview.h b/src/qcategorizedview/qcategorizedview.h index d889402..bc29ef3 100644 --- a/src/qcategorizedview/qcategorizedview.h +++ b/src/qcategorizedview/qcategorizedview.h @@ -213,6 +213,11 @@ public: */ virtual void reset(); + /** + * @return The icon size by considering all the styling + */ + QSize decorationSize() const; + protected: /** * Reimplemented from QWidget. @@ -303,7 +308,8 @@ protected: * Reimplemented from QAbstractItemView. */ virtual void dataChanged(const QModelIndex &topLeft, - const QModelIndex &bottomRight); + const QModelIndex &bottomRight, + const QVector & roles = QVector ()); /** * Reimplemented from QAbstractItemView. diff --git a/src/translations/lxqt-config.ts b/src/translations/lxqt-config.ts deleted file mode 100644 index cf20fd0..0000000 --- a/src/translations/lxqt-config.ts +++ /dev/null @@ -1,12 +0,0 @@ - - - - - MainWindow - - - Configuration Center - - - - diff --git a/src/translations/lxqt-config_cs.ts b/src/translations/lxqt-config_cs.ts deleted file mode 100644 index 77eee07..0000000 --- a/src/translations/lxqt-config_cs.ts +++ /dev/null @@ -1,12 +0,0 @@ - - - - - MainWindow - - - Configuration Center - Nastavení - - - diff --git a/src/translations/lxqt-config_cs_CZ.ts b/src/translations/lxqt-config_cs_CZ.ts deleted file mode 100644 index f078a65..0000000 --- a/src/translations/lxqt-config_cs_CZ.ts +++ /dev/null @@ -1,12 +0,0 @@ - - - - - MainWindow - - - Configuration Center - Nastavení - - - diff --git a/src/translations/lxqt-config_da_DK.ts b/src/translations/lxqt-config_da_DK.ts deleted file mode 100644 index 0c63869..0000000 --- a/src/translations/lxqt-config_da_DK.ts +++ /dev/null @@ -1,12 +0,0 @@ - - - - - MainWindow - - - Configuration Center - Konfigurationscenter - - - diff --git a/src/translations/lxqt-config_de.ts b/src/translations/lxqt-config_de.ts deleted file mode 100644 index d20bb8b..0000000 --- a/src/translations/lxqt-config_de.ts +++ /dev/null @@ -1,12 +0,0 @@ - - - - - MainWindow - - - Configuration Center - Konfigurationszentrum - - - diff --git a/src/translations/lxqt-config_el.ts b/src/translations/lxqt-config_el.ts deleted file mode 100644 index 295bb89..0000000 --- a/src/translations/lxqt-config_el.ts +++ /dev/null @@ -1,12 +0,0 @@ - - - - - MainWindow - - - Configuration Center - Κέντρο διαμόρφωσης - - - diff --git a/src/translations/lxqt-config_es.ts b/src/translations/lxqt-config_es.ts deleted file mode 100644 index fb092d1..0000000 --- a/src/translations/lxqt-config_es.ts +++ /dev/null @@ -1,12 +0,0 @@ - - - - - MainWindow - - - Configuration Center - Centro de configuración - - - diff --git a/src/translations/lxqt-config_es_VE.ts b/src/translations/lxqt-config_es_VE.ts deleted file mode 100644 index 1b2ffee..0000000 --- a/src/translations/lxqt-config_es_VE.ts +++ /dev/null @@ -1,12 +0,0 @@ - - - - - MainWindow - - - Configuration Center - Centro de preferencias - - - diff --git a/src/translations/lxqt-config_eu.ts b/src/translations/lxqt-config_eu.ts deleted file mode 100644 index 806a7f4..0000000 --- a/src/translations/lxqt-config_eu.ts +++ /dev/null @@ -1,12 +0,0 @@ - - - - - MainWindow - - - Configuration Center - Konfigurazio-zentroa - - - diff --git a/src/translations/lxqt-config_fi.ts b/src/translations/lxqt-config_fi.ts deleted file mode 100644 index 7aef321..0000000 --- a/src/translations/lxqt-config_fi.ts +++ /dev/null @@ -1,12 +0,0 @@ - - - - - MainWindow - - - Configuration Center - Asetuskeskus - - - diff --git a/src/translations/lxqt-config_hu.ts b/src/translations/lxqt-config_hu.ts deleted file mode 100644 index 3535324..0000000 --- a/src/translations/lxqt-config_hu.ts +++ /dev/null @@ -1,12 +0,0 @@ - - - - - MainWindow - - - Configuration Center - Beállító központ - - - diff --git a/src/translations/lxqt-config_it.desktop b/src/translations/lxqt-config_it.desktop index 40166fe..4c2c9d7 100644 --- a/src/translations/lxqt-config_it.desktop +++ b/src/translations/lxqt-config_it.desktop @@ -1,4 +1,4 @@ # Translations Comment[it]=Configura moduli di LXQt GenericName[it]=Configura LXQt -Name[it]=Centro di Configurazione LXQt +Name[it]=Centro di configurazione LXQt diff --git a/src/translations/lxqt-config_it.ts b/src/translations/lxqt-config_it.ts deleted file mode 100644 index 37bb554..0000000 --- a/src/translations/lxqt-config_it.ts +++ /dev/null @@ -1,12 +0,0 @@ - - - - - MainWindow - - - Configuration Center - Centro di configurazione - - - diff --git a/src/translations/lxqt-config_ja.ts b/src/translations/lxqt-config_ja.ts deleted file mode 100644 index 8ecd3cb..0000000 --- a/src/translations/lxqt-config_ja.ts +++ /dev/null @@ -1,12 +0,0 @@ - - - - - MainWindow - - - Configuration Center - コンフィグレーションセンター - - - diff --git a/src/translations/lxqt-config_pl.ts b/src/translations/lxqt-config_pl.ts deleted file mode 100644 index 3220cd4..0000000 --- a/src/translations/lxqt-config_pl.ts +++ /dev/null @@ -1,12 +0,0 @@ - - - - - MainWindow - - - Configuration Center - Centrum konfiguracji - - - diff --git a/src/translations/lxqt-config_pl_PL.ts b/src/translations/lxqt-config_pl_PL.ts deleted file mode 100644 index 35d7ed6..0000000 --- a/src/translations/lxqt-config_pl_PL.ts +++ /dev/null @@ -1,12 +0,0 @@ - - - - - MainWindow - - - Configuration Center - Panel sterowania - - - diff --git a/src/translations/lxqt-config_pt.ts b/src/translations/lxqt-config_pt.ts deleted file mode 100644 index 2078832..0000000 --- a/src/translations/lxqt-config_pt.ts +++ /dev/null @@ -1,12 +0,0 @@ - - - - - MainWindow - - - Configuration Center - Centro de configurações - - - diff --git a/src/translations/lxqt-config_pt_BR.ts b/src/translations/lxqt-config_pt_BR.ts deleted file mode 100644 index d9c6bc5..0000000 --- a/src/translations/lxqt-config_pt_BR.ts +++ /dev/null @@ -1,12 +0,0 @@ - - - - - MainWindow - - - Configuration Center - Centro De Configuração - - - diff --git a/src/translations/lxqt-config_ro_RO.ts b/src/translations/lxqt-config_ro_RO.ts deleted file mode 100644 index fa45423..0000000 --- a/src/translations/lxqt-config_ro_RO.ts +++ /dev/null @@ -1,12 +0,0 @@ - - - - - MainWindow - - - Configuration Center - Centru de configurare - - - diff --git a/src/translations/lxqt-config_ru.ts b/src/translations/lxqt-config_ru.ts deleted file mode 100644 index f991c62..0000000 --- a/src/translations/lxqt-config_ru.ts +++ /dev/null @@ -1,12 +0,0 @@ - - - - - MainWindow - - - Configuration Center - Центр настроек - - - diff --git a/src/translations/lxqt-config_ru_RU.desktop b/src/translations/lxqt-config_ru_RU.desktop deleted file mode 100644 index 7f910fb..0000000 --- a/src/translations/lxqt-config_ru_RU.desktop +++ /dev/null @@ -1,4 +0,0 @@ -# Translations -Comment[ru_RU]=Настроить вашу систему -GenericName[ru_RU]=Системные настройки -Name[ru_RU]=Системные настройки LXQt diff --git a/src/translations/lxqt-config_ru_RU.ts b/src/translations/lxqt-config_ru_RU.ts deleted file mode 100644 index 8a40e0b..0000000 --- a/src/translations/lxqt-config_ru_RU.ts +++ /dev/null @@ -1,12 +0,0 @@ - - - - - MainWindow - - - Configuration Center - Центр настроек - - - diff --git a/src/translations/lxqt-config_th_TH.ts b/src/translations/lxqt-config_th_TH.ts deleted file mode 100644 index 9ea9b8e..0000000 --- a/src/translations/lxqt-config_th_TH.ts +++ /dev/null @@ -1,12 +0,0 @@ - - - - - MainWindow - - - Configuration Center - ศูนย์การปรับแต่ง - - - diff --git a/src/translations/lxqt-config_uk.ts b/src/translations/lxqt-config_uk.ts deleted file mode 100644 index 7675d69..0000000 --- a/src/translations/lxqt-config_uk.ts +++ /dev/null @@ -1,12 +0,0 @@ - - - - - MainWindow - - - Configuration Center - Центр налаштувань - - - diff --git a/src/translations/lxqt-config_zh_CN.ts b/src/translations/lxqt-config_zh_CN.ts deleted file mode 100644 index dcbb52b..0000000 --- a/src/translations/lxqt-config_zh_CN.ts +++ /dev/null @@ -1,12 +0,0 @@ - - - - - MainWindow - - - Configuration Center - 配置中心 - - - diff --git a/src/translations/lxqt-config_zh_TW.ts b/src/translations/lxqt-config_zh_TW.ts deleted file mode 100644 index 6e1dc15..0000000 --- a/src/translations/lxqt-config_zh_TW.ts +++ /dev/null @@ -1,12 +0,0 @@ - - - - - MainWindow - - - Configuration Center - 設定中心 - - -