diff --git a/CMakeLists.txt b/CMakeLists.txt index 159d16e..5c83cff 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ project(compton-conf) -cmake_minimum_required(VERSION 2.8.12) +cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR) set(LXQTBT_MINIMUM_VERSION "0.4.0") option(UPDATE_TRANSLATIONS "Update source translation translations/*.ts files" OFF) @@ -33,7 +33,7 @@ if(USE_QT4) include(${QT_USE_FILE}) message(STATUS "Building with Qt${QTVERSION}") else() - cmake_minimum_required(VERSION 2.8.11) + cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) find_package(Qt5Widgets REQUIRED) find_package(Qt5DBus REQUIRED) find_package(Qt5LinguistTools REQUIRED QUIET) @@ -47,8 +47,9 @@ pkg_check_modules(LIBCONFIG REQUIRED ) include(GNUInstallDirs REQUIRED) +include(LXQtCompilerSettings NO_POLICY_SCOPE) # must be after cmake_minimum_required() -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DQT_NO_KEYWORDS -fno-exceptions") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DQT_NO_KEYWORDS") if(USE_QT4) set(QTX_INCLUDE_DIRS ${QT_QTCORE_INCLUDE_DIR} ${QT_QTGUI_INCLUDE_DIR} ${QT_QTDBUS_DIR}) @@ -110,6 +111,8 @@ else() qt5_wrap_ui(compton-conf_UI_H ${compton-conf_UIS}) endif() +set_property(SOURCE ${compton-conf_UI_H} PROPERTY SKIP_AUTOMOC ON) + add_definitions( -DCOMPTON_CONF_DATA_DIR="${CMAKE_INSTALL_FULL_DATADIR}/compton-conf" ) diff --git a/autostart/CMakeLists.txt b/autostart/CMakeLists.txt index 5f596a5..3f6e199 100644 --- a/autostart/CMakeLists.txt +++ b/autostart/CMakeLists.txt @@ -1,5 +1,3 @@ -cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) - file(GLOB DESKTOP_FILES_IN *.desktop.in) # Translations ********************************** diff --git a/compton.conf.example b/compton.conf.example index 9919602..d2d4589 100644 --- a/compton.conf.example +++ b/compton.conf.example @@ -14,7 +14,7 @@ shadow-exclude = [ "name = 'Notification'", "class_g = 'Conky'", "class_g ?= 'No # shadow-exclude = "n:e:Notification"; shadow-ignore-shaped = false; # shadow-exclude-reg = "x10+0+0"; -# xinerama-shadow-crop = true; +xinerama-shadow-crop = false; # Opacity menu-opacity = 0.8; diff --git a/maindialog.cpp b/maindialog.cpp index f6e33d5..7f523d5 100644 --- a/maindialog.cpp +++ b/maindialog.cpp @@ -95,6 +95,22 @@ MainDialog::MainDialog(QString userConfigFile) { static_cast<QSpinBox*>(child)->setValue(val); connect(child, SIGNAL(valueChanged(int)), SLOT(onSpinValueChanged(int))); } + else if(child->inherits("QRadioButton")) { + if(child->parent()->inherits("QGroupBox")) { + QByteArray groupKeyName = child->parent()->objectName().replace('_', '-').toLatin1(); + if(keyName.startsWith(groupKeyName)) { + const char *val; + if(config_lookup_string(&config_, groupKeyName.constData(), &val) == CONFIG_TRUE) + static_cast<QRadioButton*>(child)->setChecked(keyName == groupKeyName.append('-').append(val)); + connect(child, SIGNAL(toggled(bool)), SLOT(onRadioGroupToggled(bool))); + continue; + } + } + int val = -1; + if(config_lookup_bool(&config_, keyName.constData(), &val) == CONFIG_TRUE) + static_cast<QRadioButton*>(child)->setChecked((bool)val); + connect(child, SIGNAL(toggled(bool)), SLOT(onButtonToggled(bool))); + } } } @@ -127,6 +143,17 @@ void MainDialog::onSpinValueChanged(int i) { // saveConfig(); } +void MainDialog::onRadioGroupToggled(bool checked) { + if (checked) { + qDebug() << "toggled: " << sender()->objectName(); + // generate config key from objectName. + QByteArray keyName = sender()->parent()->objectName().replace('_', '-').toLatin1(); + QByteArray val = sender()->objectName().right(sender()->objectName().size() - (keyName.size() + 1)).replace('_', '-').toLatin1(); + configSetString(keyName.constData(), val); + // saveConfig(); + } +} + void MainDialog::saveConfig() { // ensure the existance of user config dir QString configDir = QFileInfo(userConfigFile_).dir().path(); @@ -216,3 +243,14 @@ void MainDialog::configSetBool(const char* key, bool val) { } config_setting_set_bool(setting, val); } + +void MainDialog::configSetString(const char *key, const char *val) +{ + config_setting_t* setting = config_lookup(&config_, key); + if(!setting) { // setting not found + // add a new setting for it + config_setting_t* root = config_root_setting(&config_); + setting = config_setting_add(root, key, CONFIG_TYPE_STRING); + } + config_setting_set_string(setting, val); +} diff --git a/maindialog.h b/maindialog.h index b0bdbc6..b88abc3 100644 --- a/maindialog.h +++ b/maindialog.h @@ -47,7 +47,8 @@ class MainDialog : public QDialog void configSetInt(const char* key, int val); void configSetFloat(const char* key, double val); void configSetBool(const char* key, bool val); - + void configSetString(const char* key, const char* val); + private Q_SLOTS: void onButtonToggled(bool checked); void onSpinValueChanged(double d); @@ -55,6 +56,7 @@ private Q_SLOTS: void onDialogButtonClicked(QAbstractButton* button); void onColorButtonClicked(); void onAboutButtonClicked(); + void onRadioGroupToggled(bool checked); private: Ui::MainDialog* ui; diff --git a/maindialog.ui b/maindialog.ui index 70994cb..39a2abd 100644 --- a/maindialog.ui +++ b/maindialog.ui @@ -6,8 +6,8 @@ <rect> <x>0</x> <y>0</y> - <width>493</width> - <height>371</height> + <width>569</width> + <height>424</height> </rect> </property> <property name="windowTitle"> @@ -24,6 +24,43 @@ <string>Shadow</string> </attribute> <layout class="QFormLayout" name="formLayout"> + <property name="verticalSpacing"> + <number>5</number> + </property> + <property name="bottomMargin"> + <number>3</number> + </property> + <item row="0" column="0" colspan="2"> + <widget class="QCheckBox" name="shadow"> + <property name="text"> + <string>Enable client-side shadows on windows</string> + </property> + </widget> + </item> + <item row="1" column="0" colspan="2"> + <widget class="QCheckBox" name="no_dock_shadow"> + <property name="text"> + <string>Avoid drawing shadows on dock/panel windows</string> + </property> + </widget> + </item> + <item row="2" column="0" colspan="2"> + <widget class="QCheckBox" name="no_dnd_shadow"> + <property name="text"> + <string>Don't draw shadows on DND windows</string> + </property> + </widget> + </item> + <item row="3" column="0" colspan="2"> + <widget class="QCheckBox" name="clear_shadow"> + <property name="toolTip"> + <string>Fix some weirdness with ARGB windows</string> + </property> + <property name="text"> + <string>Zero the part of the shadow's mask behind the window</string> + </property> + </widget> + </item> <item row="4" column="0"> <widget class="QLabel" name="shadow_radius_label"> <property name="text"> @@ -69,6 +106,16 @@ </property> </widget> </item> + <item row="7" column="1"> + <widget class="QDoubleSpinBox" name="shadow_opacity"> + <property name="maximum"> + <double>1.000000000000000</double> + </property> + <property name="singleStep"> + <double>0.050000000000000</double> + </property> + </widget> + </item> <item row="8" column="0"> <widget class="QLabel" name="label_5"> <property name="text"> @@ -83,37 +130,6 @@ </property> </widget> </item> - <item row="3" column="0" colspan="2"> - <widget class="QCheckBox" name="clear_shadow"> - <property name="toolTip"> - <string>Fix some weirdness with ARGB windows</string> - </property> - <property name="text"> - <string>Zero the part of the shadow's mask behind the window</string> - </property> - </widget> - </item> - <item row="2" column="0" colspan="2"> - <widget class="QCheckBox" name="no_dnd_shadow"> - <property name="text"> - <string>Don't draw shadows on DND windows</string> - </property> - </widget> - </item> - <item row="1" column="0" colspan="2"> - <widget class="QCheckBox" name="no_dock_shadow"> - <property name="text"> - <string>Avoid drawing shadows on dock/panel windows</string> - </property> - </widget> - </item> - <item row="0" column="0" colspan="2"> - <widget class="QCheckBox" name="shadow"> - <property name="text"> - <string>Enable client-side shadows on windows</string> - </property> - </widget> - </item> <item row="9" column="0" colspan="2"> <widget class="QCheckBox" name="shadow_ignore_shaped"> <property name="text"> @@ -121,13 +137,10 @@ </property> </widget> </item> - <item row="7" column="1"> - <widget class="QDoubleSpinBox" name="shadow_opacity"> - <property name="maximum"> - <double>1.000000000000000</double> - </property> - <property name="singleStep"> - <double>0.050000000000000</double> + <item row="10" column="0" colspan="2"> + <widget class="QCheckBox" name="xinerama_shadow_crop"> + <property name="text"> + <string>Crop shadows of maximized windows from extended displays</string> </property> </widget> </item> @@ -356,11 +369,39 @@ <string>Other</string> </attribute> <layout class="QFormLayout" name="formLayout_4"> - <item row="0" column="0"> - <widget class="QLabel" name="label_14"> - <property name="text"> - <string>Not implemented yet</string> - </property> + <item row="0" column="1"> + <widget class="QGroupBox" name="backend"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Minimum" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="title"> + <string>Rendering backend</string> + </property> + <property name="flat"> + <bool>false</bool> + </property> + <property name="checkable"> + <bool>false</bool> + </property> + <layout class="QVBoxLayout" name="verticalLayout_2"> + <item> + <widget class="QRadioButton" name="backend_xrender"> + <property name="text"> + <string>X Render</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="backend_glx"> + <property name="text"> + <string>GLX (OpenGL)</string> + </property> + </widget> + </item> + </layout> </widget> </item> </layout> diff --git a/translations/compton-conf_ca.desktop b/translations/compton-conf_ca.desktop new file mode 100644 index 0000000..d60762f --- /dev/null +++ b/translations/compton-conf_ca.desktop @@ -0,0 +1,3 @@ +Name[ca]=Efectes de les finestres +GenericName[ca]=ConfiguraciĆ³ de Compton +Comment[ca]=Configureu els efectes de les finestres de Compton