...
 
Commits (10)
Copyright:
Copyright (c) 2012-2014 LXQt team
Copyright (c) 2012-2017 LXQt team
This program is based on source code from the ObConf project
<http://openbox.org/wiki/ObConf:About>
......
obconf-qt-0.14.1 / 2019-02-25
=============================
* Bumped version to 0.14.1
* Only translations was changed.
obconf-qt-0.14.0 / 2019-01-25
=============================
* Bumped version to 0.14.0
* Implementation fixed:
- Don't use automatic string conversions
- Fixed disfunctional *.obt Archive generation
- Fixed reorder compiler warning
- Fixed usage of memory after freed
- Removed unused variables
* Improved cmake scripting
- Set cmake_minimum_required to 3.1.0
- Use lxqt-build-tools FindGLib CMake module
- Removed locale compile definitons
- Handle ldflags when the module library is not installed in a system dir.
* Moved translations from lxqt-l10n back to obconf-qt
- Removed obsolete translation fuctionality
- Added translation promo in README.md
* Translation updates
obconf-qt-0.13.0 / 2018-05-21
=============================
* Bumped minor version to 13
* Spanish translation update
* CMake: Prevent in-source builds
* fixed lxde mentions
* Add Traditional Chinese translation
* Add Traditional Chinese translation
* Add Simplified Chinese translation
* Fixes Qt4 build
* cmake: Use LXQtCompilerSettings
* cmake: Handle CMP0071
* cmake: Make it compile with Qt4
* cmake: Update CMake minimum required version
obconf-qt-0.12.0 / 2017-09-24
=============================
* Release 0.12.0: Update changelog
* Bump version to 0.12.0
* Don't export github templates
* Added Lithuanian language
* liblxqt dont make sense here
* Copied issue template
* Drops Qt5Core_VERSION_STRING
* set Qt::AA_UseHighDpiPixmaps to true
* Added default CMAKE_BUILD_TYPE and versioning (#29)
* added Polish translation
* Add obconf-qt_ca.desktop (Catalan)
* Update AUTHORS
* Added *da.desktop
obconf-qt-0.11.1 / 2016-12-11
=============================
* Release 0.11.1: Update changelog
* Create obconf-qt_fr.desktop
* Use the LXQtCompilerSettings
* Use lxqt-build-tools translation modules
* Use the new lxqt-build-tools package
* Remove cpack (#22)
* README.md: Update dependencies
obconf-qt-0.11.0 / 2016-09-24
=============================
* Release 0.11.0: Add changelog
* Bump version to 0.2.0 (#20)
* Extend README.md
* occured -> occurred
* build: Use external translations
* ts-files removal
* Bump year
* Work around grep 2.23 new behaviour
* Don't track $IDE settings
* Japanese translation update
* Reflect replacement README --> README.md in CMakeLists.txt
* Use markdown for README
* Update translations
* Fix license file
* Hungarian translations added
* src/CMakeLists.txt: do not completely overwrite CMAKE_CXX_FLAGS
* Use GNUInstallDirs
* Small build fix (themes dir path)
* Update German translation
* Update translations.
* Update the About dialog.
* Port missing "Dock" options from obconf gtk+ version.
* Support changing the name of desktops.
* German translation
* Default to Qt5
obconf-qt-0.9.0 / 2015-02-25
============================
* Generate .desktop file again
* Enhance Portuguese translations
* Portuguese update with fixes
* Fix COPYING and AUTHORS information. The license should be GPL2, not LGPL. * Also update AUTHORS file to include more information of upstream obconf project.
* remove the old and outdated packaging stub
* lxqt_translate_desktop: pass -h instead of --no-filename to grep which is compatible with Busybox
* lxqt_translate_desktop: Updates code to cope with the cmake-policy CMP0054
* Adds .gitigore
* Fixes the app icon install location
* Adds .desktop translations support
* Update translations
* Makes it extract and compile and load translations
* Renames the translations files to their proper names
* Translate to Russian .desktop file
* Update Russian translation
* Commit from LXDE Pootle server by user andika.: 611 of 611 strings translated (0 need review).
* Commit from LXDE Pootle server by user rago1975.: 611 of 611 strings translated (0 need review).
* Support Qt5.
obconf-qt-0.1.0 / 2014-05-07
============================
* Sync COPYING file with the actual used license
* Commit from LXDE Pootle server by user knedlyk.: 72 of 108 strings translated (0 fuzzy).
* Commit from LXDE Pootle server by user knedlyk.: 54 of 108 strings translated (1 fuzzy).
* Commit from LXDE Pootle server by user strebski.: 108 of 108 strings translated (0 fuzzy).
* Update AUTHORS and COPYING
* Do not re-generate *.ts files everytime
* Commit from LXDE Pootle server by user strebski.: 105 of 108 strings translated (0 fuzzy).
* Commit from LXDE Pootle server by user strebski.: 102 of 108 strings translated (0 fuzzy).
* Commit from LXDE Pootle server by user strebski.: 95 of 108 strings translated (1 fuzzy).
* Commit from LXDE Pootle server by user strebski.: 89 of 108 strings translated (1 fuzzy).
* Commit from LXDE Pootle server by user zvacet.: 73 of 108 strings translated (0 fuzzy).
* Commit from LXDE Pootle * Bumped version to 0.14.0
* Don't use automatic string conversions
* Translation updates
* Improved cmake scripting
- set cmake_minimum_required to 3.1.0
- removed locale compile definitons
- installed man page
* Moved translations from lxqt-l10n back to compton-conf
- removed obsolete translation fuctionality
server by user hirkmt.: 108 of 108 strings translated (0 fuzzy).
* New files added from LXDE Pootle server based on templates
* Handle translations correctly.
* Commit from LXDE Pootle server by user zvacet.: 72 of 108 strings translated (0 fuzzy).
* Commit from LXDE Pootle server by user Fitoschido.: 107 of 108 strings translated (0 fuzzy).
* Commit from LXDE Pootle server by user strebski.: 83 of 108 strings translated (1 fuzzy).
* Commit from LXDE Pootle server by user Fitoschido.: 103 of 108 strings translated (0 fuzzy).
* Commit from LXDE Pootle server by user mbouzada.: 108 of 108 strings translated (0 fuzzy).
* Commit from LXDE Pootle server by user Fitoschido.: 98 of 108 strings translated (0 fuzzy).
* Commit from LXDE Pootle server by user zvacet.: 64 of 108 strings translated (0 fuzzy).
* New files added from LXDE Pootle server based on templates
* New files added from LXDE Pootle server based on templates
* Commit from LXDE Pootle server by user strebski.: 82 of 108 strings translated (0 fuzzy).
* Commit from LXDE Pootle server by user smarquespt.: 106 of 108 strings translated (0 fuzzy).
* Commit from LXDE Pootle server by user andika.: 108 of 108 strings translated (0 fuzzy).
* Commit from LXDE Pootle server by user andika.: 65 of 108 strings translated (0 fuzzy).
* Commit from LXDE Pootle server by user Fitoschido.: 87 of 108 strings translated (0 fuzzy).
* New files added from LXDE Pootle server based on templates
* Commit from LXDE Pootle server by user smarquespt.: 56 of 108 strings translated (0 fuzzy).
* New files added from LXDE Pootle server based on templates
* Commit from LXDE Pootle server by user strebski.: 63 of 108 strings translated (0 fuzzy).
* Commit from LXDE Pootle server by user strebski.: 54 of 108 strings translated (0 fuzzy).
* New files added from LXDE Pootle server based on templates
* New files added from LXDE Pootle server based on templates
* New files added from LXDE Pootle server based on templates
* New files added from LXDE Pootle server based on templates
* New files added from LXDE Pootle server based on templates
* New files added from LXDE Pootle server based on templates
* New files added from LXDE Pootle server based on templates
* New files added from LXDE Pootle server based on templates
* Commit from LXDE Pootle server by user brother.: 108 of 108 strings translated (0 fuzzy).
* New files added from LXDE Pootle server based on templates
* Implement changing font and remove unnecessary files. This commit is done in front of our presidential palace during a protest.
* Add a debian directory
* Fix signal/slot auto-connection problems. Add contents for README and AUTHORS.
* Remove unnecessary files.
* Remove unused files.
* Implement theme configuration.
* Fix text labels. Replace _ with & for keyboard shortcuts.
* Fix mouse page.
* Fix move & resize page.
* Ask openbox to reload confie file correctly. * Remove unnecessary files.
* Split different tab page into different *.cpp files.
* Partially handle combobox.
* Little UI polishing.
* Partially implement config options.
* Initial import into git repo.
cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR)
# CMP0000: Call the cmake_minimum_required() command at the beginning of the top-level
# CMakeLists.txt file even before calling the project() command.
# The cmake_minimum_required(VERSION) command implicitly invokes the cmake_policy(VERSION)
# command to specify that the current project code is written for the given range of CMake
# versions.
project(obconf-qt)
# newer cmake is required for CMAKE_AUTOMOC Qt support
cmake_minimum_required(VERSION 2.8.6)
find_program(SED_PROGRAM sed)
# additional cmake files
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
include(GNUInstallDirs)
# Minimum Versions
set(GLIB_MINIMUM_VERSION "2.50.0")
set(LXQTBT_MINIMUM_VERSION "0.6.0")
set(QT_MINIMUM_VERSION "5.7.1")
set(OBCONFQT_MAJOR_VERSION 0)
set(OBCONFQT_MINOR_VERSION 14)
set(OBCONFQT_PATCH_VERSION 1)
set(OBCONFQT_VERSION ${OBCONFQT_MAJOR_VERSION}.${OBCONFQT_MINOR_VERSION}.${OBCONFQT_PATCH_VERSION})
add_definitions("-DOBCONFQT_VERSION=\"${OBCONFQT_VERSION}\"")
# Support Qt5
option(USE_QT5 "Build with Qt5." $ENV{USE_QT5})
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
set(CMAKE_AUTOMOC ON)
if(USE_QT5)
cmake_minimum_required(VERSION 2.8.11)
find_package(Qt5Widgets REQUIRED)
find_package(Qt5X11Extras REQUIRED)
find_package(Qt5LinguistTools REQUIRED QUIET)
message(STATUS "Building with Qt${Qt5Core_VERSION_STRING}")
else()
find_package(Qt4 REQUIRED QtCore QtGui) # Qt
include(${QT_USE_FILE})
message(STATUS "Building with Qt${QTVERSION}")
endif()
find_package(PkgConfig)
pkg_check_modules(GLIB REQUIRED
glib-2.0
)
find_package(Qt5Widgets ${QT_MINIMUM_VERSION} REQUIRED)
find_package(Qt5X11Extras ${QT_MINIMUM_VERSION} REQUIRED)
find_package(Qt5LinguistTools ${QT_MINIMUM_VERSION} REQUIRED)
message(STATUS "Building with Qt${Qt5Core_VERSION}")
find_package(lxqt-build-tools ${LXQTBT_MINIMUM_VERSION} REQUIRED)
find_package(GLIB ${GLIB_MINIMUM_VERSION} REQUIRED)
find_package(PkgConfig)
pkg_check_modules(OPENBOX REQUIRED
obrender-3.5
obt-3.5
)
include(LXQtPreventInSourceBuilds)
include(LXQtTranslateTs)
include(LXQtTranslateDesktop)
include(LXQtCompilerSettings NO_POLICY_SCOPE)
# add src subdirectory
add_subdirectory(src)
# install an icon for the application
install(
FILES data/obconf-qt.png
DESTINATION share/icons/hicolor/48x48/apps
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/48x48/apps"
)
# building tarball with CPack -------------------------------------------------
# To create a source distribution, type:
# make package_source
include (InstallRequiredSystemLibraries)
set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING")
set (CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README")
set (CPACK_PACKAGE_VENDOR "")
set (CPACK_PACKAGE_VERSION_MAJOR "0")
set (CPACK_PACKAGE_VERSION_MINOR "1")
set (CPACK_PACKAGE_VERSION_PATCH "0")
set (CPACK_GENERATOR TBZ2)
set (CPACK_SOURCE_GENERATOR TBZ2)
set (CPACK_SOURCE_IGNORE_FILES /build/;.gitignore;.*~;.git;.kdev4;temp)
# set (CPACK_SOURCE_PACKAGE_FILE_NAME pcmanfm-qt.0.1.0.tar.gz)
include (CPack)
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
......@@ -15,7 +15,7 @@ software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
......@@ -55,8 +55,8 @@ patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
......@@ -110,7 +110,7 @@ above, provided that you also meet all of these conditions:
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
......@@ -168,7 +168,7 @@ access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
......@@ -225,7 +225,7 @@ impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
......@@ -255,7 +255,7 @@ make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
......@@ -277,64 +277,4 @@ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.
END OF TERMS AND CONDITIONS
This is a Qt port of ObConf, configurator of OpenBox window manager.
# ObConf-Qt
## Overview
ObConf-Qt is a Qt port of [ObConf](http://openbox.org/wiki/ObConf:About), a configuration editor for window manager [OpenBox](http://openbox.org).
It is maintained by the LXQt project but can be used independently from this desktop environment.
## Installation
### Compiling source code
Runtime dependencies are Qt X11 Extras, gtk-update-icon-cache, hicolor-icon-theme and Openbox.
Additional build dependencies are CMake and [liblxqt](https://github.com/lxqt/liblxqt), optionally Git to pull latest VCS checkouts. The localization files were outsourced to repository [lxqt-l10n](https://github.com/lxqt/lxqt-l10n) so the corresponding dependencies are needed, too. Please refer to this repository's `README.md` for further information.
Code configuration is handled by CMake. CMake variable `CMAKE_INSTALL_PREFIX` has to be set to `/usr` on most operating systems.
To build run `make`, to install `make install` which accepts variable `DESTDIR` as usual.
### Binary packages
Official binary packages are available in Arch Linux and Debian (as of Debian stretch).
The tool is missing in Fedora so far. Same applies to openSUSE where it is about to be included, though.
### Translation (Weblate)
<a href="https://weblate.lxqt.org/projects/lxqt/obconf-qt/">
<img src="https://weblate.lxqt.org/widgets/lxqt/-/obconf-qt/multi-auto.svg" alt="Translation status" />
</a>
#=============================================================================
# The lxqt_translate_desktop() function was copied from the the
# LXQt LxQtTranste.cmake
#
# Original Author: Alexander Sokolov <sokoloff.a@gmail.com>
#
# funtion lxqt_translate_desktop(_RESULT
# SOURCES <sources>
# [TRANSLATION_DIR] translation_directory
# )
# Output:
# _RESULT The generated .desktop (.desktop) files
#
# Input:
#
# SOURCES List of input desktop files (.destktop.in) to be translated
# (merged), relative to the CMakeList.txt.
#
# TRANSLATION_DIR Optional path to the directory with the .ts files,
# relative to the CMakeList.txt. Defaults to
# "translations".
#
#=============================================================================
function(lxqt_translate_desktop _RESULT)
# Parse arguments ***************************************
set(oneValueArgs TRANSLATION_DIR)
set(multiValueArgs SOURCES)
cmake_parse_arguments(_ARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
# check for unknown arguments
set(_UNPARSED_ARGS ${_ARGS_UNPARSED_ARGUMENTS})
if (NOT ${_UNPARSED_ARGS} STREQUAL "")
MESSAGE(FATAL_ERROR
"Unknown arguments '${_UNPARSED_ARGS}'.\n"
"See lxqt_translate_desktop() documenation for more information.\n"
)
endif()
if (NOT DEFINED _ARGS_SOURCES)
set(${_RESULT} "" PARENT_SCOPE)
return()
else()
set(_sources ${_ARGS_SOURCES})
endif()
if (NOT DEFINED _ARGS_TRANSLATION_DIR)
set(_translationDir "translations")
else()
set(_translationDir ${_ARGS_TRANSLATION_DIR})
endif()
get_filename_component (_translationDir ${_translationDir} ABSOLUTE)
foreach (_inFile ${_sources})
get_filename_component(_inFile ${_inFile} ABSOLUTE)
get_filename_component(_fileName ${_inFile} NAME_WE)
#Extract the real extension ............
get_filename_component(_fileExt ${_inFile} EXT)
string(REPLACE ".in" "" _fileExt ${_fileExt})
#.......................................
set(_outFile "${CMAKE_CURRENT_BINARY_DIR}/${_fileName}${_fileExt}")
file(GLOB _translations
${_translationDir}/${_fileName}_*${_fileExt}
${_translationDir}/local/${_fileName}_*${_fileExt}
)
set(_pattern "'\\[.*]\\s*='")
if (_translations)
add_custom_command(OUTPUT ${_outFile}
COMMAND grep -v "'#TRANSLATIONS_DIR='" ${_inFile} > ${_outFile}
COMMAND grep -h ${_pattern} ${_translations} >> ${_outFile}
COMMENT "Generating ${_fileName}${_fileExt}"
)
else()
add_custom_command(OUTPUT ${_outFile}
COMMAND grep -v "'#TRANSLATIONS_DIR='" ${_inFile} > ${_outFile}
COMMENT "Generating ${_fileName}${_fileExt}"
)
endif()
set(__result ${__result} ${_outFile})
# TX file ***********************************************
set(_txFile "${CMAKE_BINARY_DIR}/tx/${_fileName}${_fileExt}.tx.sh")
string(REPLACE "${CMAKE_SOURCE_DIR}/" "" _tx_translationDir ${_translationDir})
string(REPLACE "${CMAKE_SOURCE_DIR}/" "" _tx_inFile ${_inFile})
string(REPLACE "." "" _fileType ${_fileExt})
file(WRITE ${_txFile}
"[ -f ${_inFile} ] || exit 0\n"
"echo '[lxde-qt.${_fileName}_${_fileType}]'\n"
"echo 'type = DESKTOP'\n"
"echo 'source_lang = en'\n"
"echo 'source_file = ${_tx_inFile}'\n"
"echo 'file_filter = ${_tx_translationDir}/${_fileName}_<lang>${_fileExt}'\n"
"echo ''\n"
)
endforeach()
set(${_RESULT} ${__result} PARENT_SCOPE)
endfunction(lxqt_translate_desktop)
[Project]
Name=obconf-qt
Manager=KDevCMakeManager
VersionControl=
# set visibility to hidden to hide symbols, unlesss they're exporeted manually in the code
set(CMAKE_CXX_FLAGS "-DQT_NO_KEYWORDS -fno-exceptions")
# set visibility to hidden to hide symbols, unlesss they're exporteted manually in the code
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DQT_NO_KEYWORDS")
if(USE_QT5)
set(QTX_INCLUDE_DIRS "")
set(QTX_LIBRARIES Qt5::Widgets Qt5::X11Extras)
else()
set(QTX_INCLUDE_DIRS ${QT_QTCORE_INCLUDE_DIR} ${QT_QTGUI_INCLUDE_DIR} ${QT_QTDBUS_DIR})
set(QTX_LIBRARIES ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY} ${QT_QTDBUS_LIBRARY})
endif()
set(QTX_INCLUDE_DIRS "")
set(QTX_LIBRARIES Qt5::Widgets Qt5::X11Extras)
include_directories(
${QTX_INCLUDE_DIRS}
......@@ -36,11 +31,9 @@ set(obconf-qt_UIS
obconf.ui
)
if(USE_QT5)
qt5_wrap_ui(obconf-qt_UI_H ${obconf-qt_UIS})
else()
qt4_wrap_ui(obconf-qt_UI_H ${obconf-qt_UIS})
endif()
qt5_wrap_ui(obconf-qt_UI_H ${obconf-qt_UIS})
set_property(SOURCE ${obconf-qt_UI_H} PROPERTY SKIP_AUTOMOC ON)
# The ui code generated by Qt uic contains QMetaObject::connectSlotsByName()
# but we don't want that. Fix it with sed.
......@@ -57,55 +50,23 @@ add_custom_command(
# add translation for obconf-qt
option (UPDATE_TRANSLATIONS "Update source translation translations/*.ts files" OFF)
set(TRANSLATION_TEMPLATE "translations/obconf-qt.ts")
file(GLOB TS_FILES translations/obconf-qt_*.ts)
if(USE_QT5)
if (UPDATE_TRANSLATIONS)
qt5_create_translation(QMS_FILES
${obconf-qt_SRCS}
${obconf-qt_UI_H}
${TRANSLATION_TEMPLATE}
OPTIONS -locations absolute)
qt5_create_translation(QM_FILES
${obconf-qt_SRCS}
${obconf-qt_UI_H}
${TS_FILES}
OPTIONS -locations absolute)
else (UPDATE_TRANSLATIONS)
qt5_add_translation(QM_FILES ${TS_FILES})
endif (UPDATE_TRANSLATIONS)
else(USE_QT5) # use qt4
if (UPDATE_TRANSLATIONS)
qt4_create_translation(QMS_FILES
${obconf-qt_SRCS}
${obconf-qt_UI_H}
${TRANSLATION_TEMPLATE}
OPTIONS -locations absolute)
qt4_create_translation(QMS_FILES
${obconf-qt_SRCS}
${obconf-qt_UI_H}
${TS_FILES}
OPTIONS -locations absolute)
else (UPDATE_TRANSLATIONS)
qt4_add_translation(QM_FILES ${TS_FILES})
endif (UPDATE_TRANSLATIONS)
endif(USE_QT5)
if(UPDATE_TRANSLATIONS)
add_custom_target(update_obconf-qt_translations ALL DEPENDS ${QMS})
endif()
lxqt_translate_ts(QM_FILES
UPDATE_TRANSLATIONS
${UPDATE_TRANSLATIONS}
SOURCES
${obconf-qt_SRCS}
${obconf-qt_UI_H}
INSTALL_DIR
"${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/translations"
)
# install a desktop entry file
include(LXQtTranslateDesktop)
lxqt_translate_desktop(DESKTOP_FILES
TRANSLATION_DIR "translations"
SOURCES obconf-qt.desktop.in
)
install(FILES ${DESKTOP_FILES} DESTINATION share/applications)
install(FILES ${QM_FILES} DESTINATION share/obconf-qt/translations)
# prevent the generated files from being deleted during make clean
set_directory_properties(PROPERTIES CLEAN_NO_CUSTOM true)
......@@ -117,15 +78,15 @@ add_executable(obconf-qt
)
add_definitions(
-DPACKAGE_DATA_DIR="${CMAKE_INSTALL_PREFIX}/share/obconf-qt"
-DPIXMAPS_DIR="${CMAKE_INSTALL_PREFIX}/share/pixmaps"
-DTHEME_DIR="{CMAKE_INSTALL_PREFIX}/share/openbox/themes"
-DPACKAGE_DATA_DIR="${CMAKE_INSTALL_FULL_DATAROOTDIR}/obconf-qt"
-DPIXMAPS_DIR="${CMAKE_INSTALL_FULL_DATAROOTDIR}/pixmaps"
-DTHEME_DIR="${CMAKE_INSTALL_FULL_DATAROOTDIR}/openbox/themes"
)
target_link_libraries(obconf-qt
${QTX_LIBRARIES}
${GLIB_LIBRARIES}
${OPENBOX_LIBRARIES}
${OPENBOX_LDFLAGS}
)
install(TARGETS obconf-qt RUNTIME DESTINATION bin)
......@@ -121,7 +121,7 @@ void MainDialog::on_font_inactive_display_changed() {
static RrFont* read_font(Fm::FontButton* button, const gchar* place,
gboolean use_default) {
RrFont* font;
gchar* fontstring, *node;
gchar* node;
gchar* name, **names;
gchar* size;
gchar* weight;
......@@ -180,7 +180,6 @@ static RrFont* read_font(Fm::FontButton* button, const gchar* place,
if(!g_ascii_strcasecmp(slant, "Oblique")) rr_slant = RR_FONTSLANT_OBLIQUE;
font = RrFontOpen(rrinst, name, atoi(size), rr_weight, rr_slant);
// g_free(fontstring);
g_free(slant);
g_free(weight);
g_free(size);
......@@ -190,7 +189,6 @@ static RrFont* read_font(Fm::FontButton* button, const gchar* place,
}
static RrFont* write_font(Fm::FontButton* button, const gchar* place) {
gchar *c;
gchar *node;
RrFontWeight weight = RR_FONTWEIGHT_NORMAL;
RrFontSlant slant = RR_FONTSLANT_NORMAL;
......
......@@ -25,7 +25,6 @@
#include "tree.h"
#include <QX11Info>
// FIXME: how to support XCB or Wayland?
#include <X11/Xlib.h>
using namespace Obconf;
......@@ -46,92 +45,28 @@ void MainDialog::desktops_setup_tab() {
gint i;
#if 0
// FIXME
GtkWidget* w;
GtkCellRenderer* render;
GtkTreeViewColumn* column;
w = get_widget("desktop_names");
desktop_store = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_BOOLEAN);
gtk_tree_view_set_model(GTK_TREE_VIEW(w), GTK_TREE_MODEL(desktop_store));
g_object_unref(desktop_store);
gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(w)),
GTK_SELECTION_SINGLE);
render = gtk_cell_renderer_text_new();
g_signal_connect(render, "edited",
G_CALLBACK(on_desktop_names_cell_edited),
NULL);
column = gtk_tree_view_column_new_with_attributes
("Name", render, "text", 0, "editable", 1, NULL);
gtk_tree_view_append_column(GTK_TREE_VIEW(w), column);
#endif
desktops_read_names();
i = tree_get_int("desktops/popupTime", 875);
ui.desktop_popup->setChecked(i != 0);
ui.desktop_popup_time->setValue(i ? i : 875);
// FIXME enable_stuff();
}
/* FIXME
* static void enable_stuff() {
* GtkWidget* w;
* gboolean b;
*
* w = get_widget("desktop_popup");
* b = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w));
* w = get_widget("desktop_popup_time");
* gtk_widget_set_sensitive(w, b);
}
*/
void MainDialog::on_desktop_num_valueChanged(int newValue) {
num_desktops = newValue;
desktops_write_number();
desktops_read_names();
}
#if 0
// FIXME
static void MainDialog::on_desktop_names_cell_edited(GtkCellRendererText* cell,
const gchar* path_string,
const gchar* new_text,
gpointer data) {
GtkTreePath* path;
GtkTreeIter it;
gchar* old_text;
GList* lit;
gint i;
path = gtk_tree_path_new_from_string(path_string);
gtk_tree_model_get_iter(GTK_TREE_MODEL(desktop_store), &it, path);
gtk_tree_model_get(GTK_TREE_MODEL(desktop_store), &it, 0, &old_text, -1);
g_free(old_text);
i = gtk_tree_path_get_indices(path)[0];
lit = g_list_nth(desktop_names, i);
g_free(lit->data);
lit->data = g_strdup(new_text);
void MainDialog::on_desktop_names_itemChanged(QListWidgetItem * item) {
QString new_text = item->text();
if(new_text[0]) /* not empty */
gtk_list_store_set(desktop_store, &it, 0, lit->data, -1);
else
gtk_list_store_set(desktop_store, &it, 0, _("(Unnamed desktop)"), -1);
if(new_text.isEmpty())
item->setText(tr("(Unnamed desktop)"));
desktops_write_names();
}
#endif
void MainDialog::desktops_read_names() {
xmlNodePtr n;
gint i;
......@@ -151,7 +86,9 @@ void MainDialog::desktops_read_names() {
if(desktop_name.isEmpty())
desktop_name = tr("(Unnamed desktop)");
ui.desktop_names->addItem(desktop_name);
QListWidgetItem* item = new QListWidgetItem(desktop_name);
item->setFlags(item->flags() | Qt::ItemIsEditable);
ui.desktop_names->addItem(item);
++i;
}
......@@ -159,15 +96,15 @@ void MainDialog::desktops_read_names() {
}
while(i < num_desktops) {
ui.desktop_names->addItem(tr("(Unnamed desktop)"));
QListWidgetItem* item = new QListWidgetItem(tr("(Unnamed desktop)"));
item->setFlags(item->flags() | Qt::ItemIsEditable);
ui.desktop_names->addItem(item);
++i;
}
}
void MainDialog::desktops_write_names() {
gchar** s;
xmlNodePtr n, c;
gint num = 0, last = -1;
// delete all existing keys
n = tree_get_node("desktops/names", NULL);
......@@ -216,10 +153,9 @@ void MainDialog::on_desktop_popup_toggled(bool checked) {
}
else
tree_set_int("desktops/popupTime", 0);
// FIXME enable_stuff();
}
void MainDialog::on_desktop_popup_time_valueChanged(int newValue) {
tree_set_int("desktops/popupTime", newValue);
}
......@@ -66,147 +66,84 @@ void MainDialog::dock_setup_tab() {
g_free(s);
#if 0
// FIXME
w = get_widget("dock_position");
gtk_option_menu_set_history(GTK_OPTION_MENU(w), pos);
ui.dock_position->setCurrentIndex(pos);
w = get_widget("dock_float_x");
gtk_spin_button_set_value(GTK_SPIN_BUTTON(w),
tree_get_int("dock/floatingX", 0));
bool is_floating = (pos == POSITION_FLOATING);
ui.dock_float_x->setEnabled(is_floating);
ui.dock_float_y->setEnabled(is_floating);
w = get_widget("dock_float_y");
gtk_spin_button_set_value(GTK_SPIN_BUTTON(w),
tree_get_int("dock/floatingY", 0));
ui.dock_float_x->setValue(tree_get_int("dock/floatingX", 0));
ui.dock_float_y->setValue(tree_get_int("dock/floatingY", 0));
s = tree_get_string("dock/stacking", "Above");
if(!strcasecmp(s, "Normal"))
w = get_widget("dock_stack_normal");
ui.dock_stack_normal->setChecked(true);
else if(!strcasecmp(s, "Below"))
w = get_widget("dock_stack_bottom");
ui.dock_stack_bottom->setChecked(true);
else
w = get_widget("dock_stack_top");
ui.dock_stack_top->setChecked(true);
g_free(s);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(w), TRUE);
w = get_widget("dock_direction");
s = tree_get_string("dock/direction", "Vertical");
if(!strcasecmp(s, "Horizontal")) pos = DIRECTION_HORIZONTAL;
else pos = DIRECTION_VERTICAL;
g_free(s);
gtk_option_menu_set_history(GTK_OPTION_MENU(w), pos);
w = get_widget("dock_nostrut");
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(w),
tree_get_bool("dock/noStrut", FALSE));
w = get_widget("dock_hide");
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(w),
tree_get_bool("dock/autoHide", FALSE));
w = get_widget("dock_hide_delay");
gtk_spin_button_set_value(GTK_SPIN_BUTTON(w),
tree_get_int("dock/hideDelay", 300));
w = get_widget("dock_show_delay");
gtk_spin_button_set_value(GTK_SPIN_BUTTON(w),
tree_get_int("dock/showDelay", 300));
dock_enable_stuff();
#endif
}
static void dock_enable_stuff() {
/* FIXME
* GtkWidget* w, *s;
* gboolean b;
*
* w = get_widget("dock_position");
* b = gtk_option_menu_get_history(GTK_OPTION_MENU(w)) == POSITION_FLOATING;
*
* s = get_widget("dock_float_x");
* gtk_widget_set_sensitive(s, b);
* s = get_widget("dock_float_y");
* gtk_widget_set_sensitive(s, b);
* s = get_widget("dock_float_label");
* gtk_widget_set_sensitive(s, b);
* s = get_widget("dock_float_label_x");
* gtk_widget_set_sensitive(s, b);
* s = get_widget("dock_nostrut");
* gtk_widget_set_sensitive(s, !b);
*
* w = get_widget("dock_hide");
* b = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w));
*
* s = get_widget("dock_hide_delay");
* gtk_widget_set_sensitive(s, b);
* s = get_widget("dock_hide_label");
* gtk_widget_set_sensitive(s, b);
* s = get_widget("dock_hide_label_units");
* gtk_widget_set_sensitive(s, b);
* s = get_widget("dock_show_delay");
* gtk_widget_set_sensitive(s, b);
* s = get_widget("dock_show_label");
* gtk_widget_set_sensitive(s, b);
* s = get_widget("dock_show_label_units");
* gtk_widget_set_sensitive(s, b);
*/
}
#if 0
//FIXME
void MainDialog::on_dock_top_left_activate(GtkMenuItem* w, gpointer data) {
tree_set_string("dock/position", "TopLeft");
dock_enable_stuff();
}
void MainDialog::on_dock_top_activate(GtkMenuItem* w, gpointer data) {
tree_set_string("dock/position", "Top");
dock_enable_stuff();
}
void MainDialog::on_dock_top_right_activate(GtkMenuItem* w, gpointer data) {
tree_set_string("dock/position", "TopRight");
dock_enable_stuff();
ui.dock_direction->setCurrentIndex(pos);
ui.dock_nostrut->setChecked(tree_get_bool("dock/noStrut", FALSE));
bool auto_hide = tree_get_bool("dock/autoHide", FALSE);
ui.dock_hide->setChecked(auto_hide);
ui.dock_hide_delay->setEnabled(auto_hide);
ui.dock_hide_delay->setValue(tree_get_int("dock/hideDelay", 300));
ui.dock_show_delay->setEnabled(auto_hide);
ui.dock_show_delay->setValue(tree_get_int("dock/showDelay", 300));
}
void MainDialog::on_dock_position_currentIndexChanged(int index) {
const char* val;
bool is_floating = false;
switch(index) {
case POSITION_TOPLEFT:
default:
val = "TopLeft";
break;
case POSITION_TOP:
val = "Top";
break;
case POSITION_TOPRIGHT:
val = "TopRight";
break;
case POSITION_LEFT:
val = "Left";
break;
case POSITION_RIGHT:
val = "Right";
break;
case POSITION_BOTTOMLEFT:
val = "BottomLeft";
break;
case POSITION_BOTTOM:
val = "Bottom";
break;
case POSITION_BOTTOMRIGHT:
val = "BottomRight";
break;
case POSITION_FLOATING:
val = "Floating";
is_floating = true;
break;
}
tree_set_string("dock/position", val);
ui.dock_float_x->setEnabled(is_floating);
ui.dock_float_y->setEnabled(is_floating);
}
void MainDialog::on_dock_left_activate(GtkMenuItem* w, gpointer data) {
tree_set_string("dock/position", "Left");
dock_enable_stuff();
}
void MainDialog::on_dock_right_activate(GtkMenuItem* w, gpointer data) {
tree_set_string("dock/position", "Right");
dock_enable_stuff();
}
void MainDialog::on_dock_bottom_left_activate(GtkMenuItem* w, gpointer data) {
tree_set_string("dock/position", "BottomLeft");
dock_enable_stuff();
}
void MainDialog::on_dock_bottom_activate(GtkMenuItem* w, gpointer data) {
tree_set_string("dock/position", "Bottom");
dock_enable_stuff();
}
void MainDialog::on_dock_bottom_right_activate(GtkMenuItem* w, gpointer data) {
tree_set_string("dock/position", "BottomRight");
dock_enable_stuff();
}
void MainDialog::on_dock_floating_activate(GtkMenuItem* w, gpointer data) {
tree_set_string("dock/position", "Floating");
dock_enable_stuff();
}
#endif
void MainDialog::on_dock_float_x_valueChanged(int newValue) {
tree_set_int("dock/floatingX", newValue);
}
......@@ -215,31 +152,25 @@ void MainDialog::on_dock_float_y_valueChanged(int newValue) {
tree_set_int("dock/floatingY", newValue);
}
void MainDialog::on_dock_stacking_top_toggled(bool checked) {
void MainDialog::on_dock_stack_top_toggled(bool checked) {
if(checked)
tree_set_string("dock/stacking", "Above");
}
void MainDialog::on_dock_stacking_normal_toggled(bool checked) {
void MainDialog::on_dock_stack_normal_toggled(bool checked) {
if(checked)
tree_set_string("dock/stacking", "Normal");
}
void MainDialog::on_dock_stacking_bottom_toggled(bool checked) {
void MainDialog::on_dock_stack_bottom_toggled(bool checked) {
if(checked)
tree_set_string("dock/stacking", "Below");
}
#if 0
// FIXME
void MainDialog::on_dock_horizontal_activate(GtkMenuItem* w, gpointer data) {
tree_set_string("dock/direction", "Horizontal");
}
void MainDialog::on_dock_vertical_activate(GtkMenuItem* w, gpointer data) {
tree_set_string("dock/direction", "Vertical");
void MainDialog::on_dock_direction_currentIndexChanged(int index) {
const char* val = (index == DIRECTION_VERTICAL ? "Vertical" : "Horizontal");
tree_set_string("dock/direction", val);
}
#endif
void MainDialog::on_dock_nostrut_toggled(bool checked) {
tree_set_bool("dock/noStrut", checked);
......@@ -247,7 +178,6 @@ void MainDialog::on_dock_nostrut_toggled(bool checked) {
void MainDialog::on_dock_hide_toggled(bool checked) {
tree_set_bool("dock/autoHide", checked);
dock_enable_stuff();
}
void MainDialog::on_dock_hide_delay_valueChanged(int newValue) {
......@@ -258,3 +188,4 @@ void MainDialog::on_dock_show_delay_valueChanged(int newValue) {
tree_set_int("dock/showDelay", newValue);
}
......@@ -28,9 +28,9 @@
using namespace Obconf;
MainDialog::MainDialog():
QDialog(),
themes(NULL),
themes_model(new QStandardItemModel()),
QDialog() {
themes_model(new QStandardItemModel()) {
ui.setupUi(this);
setWindowIcon(QIcon(PIXMAPS_DIR "/obconf-qt.png"));
......@@ -75,9 +75,10 @@ void MainDialog::reject() {
void MainDialog::on_about_clicked() {
QMessageBox::about(this, tr("About ObConf-Qt"),
tr("A preferences manager for Openbox\n\n"
"Copyright (c) 2003-2013\n\n"
"Copyright (c) 2014-2015\n\n"
"Authors:\n"
"* Hong Jen Yee (PCMan) <pcman.tw@gmail.com>\n"
"* Hong Jen Yee (PCMan) <pcman.tw@gmail.com>\n\n"
"The program is based on ObConf developed by the following developers.\n"
"* Dana Jansens <danakj@orodu.net>\n"
"* Tim Riley <tr@slackzone.org>\n"
"* Javeed Shaikh <syscrash2k@gmail.com>")
......
......@@ -141,17 +141,20 @@ private Q_SLOTS:
void on_desktop_num_valueChanged(int newValue);
void on_desktop_popup_toggled(bool checked);
void on_desktop_popup_time_valueChanged(int newValue);
void on_desktop_names_itemChanged(QListWidgetItem * item);
// docks
void on_dock_float_x_valueChanged(int newValue);
void on_dock_float_y_valueChanged(int newValue);
void on_dock_stacking_top_toggled(bool checked);
void on_dock_stacking_normal_toggled(bool checked);
void on_dock_stacking_bottom_toggled(bool checked);
void on_dock_stack_top_toggled(bool checked);
void on_dock_stack_normal_toggled(bool checked);
void on_dock_stack_bottom_toggled(bool checked);
void on_dock_nostrut_toggled(bool checked);
void on_dock_hide_toggled(bool checked);
void on_dock_hide_delay_valueChanged(int newValue);
void on_dock_show_delay_valueChanged(int newValue);
void on_dock_position_currentIndexChanged(int index);
void on_dock_direction_currentIndexChanged(int index);
private:
Ui::MainDialog ui;
......
......@@ -95,10 +95,10 @@ void MainDialog::moveresize_setup_tab() {
else if(opp) pos = EDGE_RIGHT;
else pos = EDGE_LEFT;
g_free(s);
ui.fixed_y_popup->setCurrentIndex(pos);
ui.fixed_y_pos->setValue(MAX(atoi(s), 0));
g_free(s);
i = tree_get_int("mouse/screenEdgeWarpTime", 400);
......
/* -*- indent-tabs-mode: nil; tab-width: 4; c-basic-offset: 4; -*-
*
*
* main.c for ObConf, the configuration tool for Openbox
* Copyright (c) 2003-2008 Dana Jansens
* Copyright (c) 2003 Tim Riley
* Copyright (C) 2013 Hong Jen Yee (PCMan) <pcman.tw@gmail.com>
*
*
* 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.
*
*
* See the COPYING file for a copy of the GNU General Public License.
*/
......@@ -180,18 +180,20 @@ static gboolean prop_get_string_utf8(Window win, Atom prop, gchar** ret) {
int main(int argc, char** argv) {
QApplication app(argc, argv);
app.setAttribute(Qt::AA_UseHighDpiPixmaps, true);
// load translations
QTranslator qtTranslator, translator;
// install the translations built-into Qt itself
qtTranslator.load("qt_" + QLocale::system().name(), QLibraryInfo::location(QLibraryInfo::TranslationsPath));
app.installTranslator(&qtTranslator);
// install our own tranlations
translator.load("obconf-qt_" + QLocale::system().name(), PACKAGE_DATA_DIR "/translations");
app.installTranslator(&translator);
// load configurations
gchar* p;
gboolean exit_with_error = FALSE;
parse_args(argc, argv);
......@@ -220,7 +222,6 @@ int main(int argc, char** argv) {
"openbox_config"))) {
QMessageBox::critical(NULL, QObject::tr("Error"),
QObject::tr("Failed to load an rc.xml. You have probably failed to install Openbox properly."));
exit_with_error = TRUE;
}
else {
doc = obt_xml_doc(parse_i);
......@@ -235,7 +236,6 @@ int main(int argc, char** argv) {
QString message = QObject::tr("Error while parsing the Openbox configuration file. Your configuration file is not valid XML.\n\nMessage: %1")
.arg(QString::fromUtf8(e->message));
QMessageBox::critical(NULL, QObject::tr("Error"), message);
exit_with_error = TRUE;
}
}
......
This diff is collapsed.
......@@ -48,7 +48,6 @@ void MainDialog::theme_load_all() {
gchar* p;
GList* it, *next;
gint i;
RrFont* active, *inactive, *menu_t, *menu_i, *osd;
QModelIndex currentItemIndex;
name = tree_get_string("theme/name", "TheBear");
......@@ -156,10 +155,11 @@ void MainDialog::on_install_theme_clicked() {
}
void MainDialog::on_theme_archive_clicked() {
QString filename = QFileDialog::getSaveFileName(this,
tr("Choose an Openbox theme"),
QString(),
"Openbox theme archives (*.obt);;");
QFileDialog* dialog = new QFileDialog();
dialog->setFileMode(QFileDialog::Directory);
QString filename="";
if(dialog->exec())
filename= dialog->selectedFiles()[0];
if(!filename.isEmpty()) {
archive_create(filename.toLocal8Bit().constData());
}
......
project(obconf-qt)
build_component("." "${CMAKE_INSTALL_FULL_DATADIR}/obconf-qt/translations")
This diff is collapsed.
Name[ca]=Ajusts d'Openbox
GenericName[ca]=Ajusts del gestor de finestres
Comment[ca]=Configureu el gestor de finestres Openbox
This diff is collapsed.
Name[cs]=Openbox nastavení
GenericName[cs]=Nastavení správce oken
Comment[cs]=Nastavit správce oken Openbox
This diff is collapsed.
This diff is collapsed.
Name[da]=Openbox-indstillinger
GenericName[da]=Indstillinger for Window Manager
Comment[da]=Konfigurér window manageren Openbox
This diff is collapsed.
Name[de]=Fenstermanager Openbox
GenericName[de]=Openbox Einstellungen
Comment[de]=Konfiguration des Fenstermanagers Openbox (Qt-Version)
This diff is collapsed.
This diff is collapsed.
Name[es]=Configuración de Openbox
GenericName[es]=Configuración del gestor de ventanas
Comment[es]=Configurar el gestor de ventanas Openbox
This diff is collapsed.
Name[fr]=Gestionnaire de fenêtres Openbox
GenericName[fr]=Paramétrage de Openbox
Comment[fr]=Paramétrage du gestionnaire de fenêtres Openbox (Version Qt)
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Name[hu]=Openbox beállítása
GenericName[hu]=Openbox beállítások
Comment[hu]=Az Openbox ablakkezelő beállítása (Qt-Verzió)
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Name[ja]=Openbox設定マネージャー (Qtバージョン)
GenericName[ja]=Obconf-qt
Comment[ja]=Openboxを設定します。
This diff is collapsed.
Name[lt]=Openbox nustatymai
GenericName[lt]=Langų tvarkytuvės nustatymai
Comment[lt]=Konfigūruoti Openbox langų tvarkytuvę
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Name[pl]=Edytor konfiguracji OpenBox
GenericName[pl]=Ustawienia menedżera okien
Comment[pl]=Edytor konfiguracji menedżera okien OpenBox (wersja Qt)
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Name[tr]=Openbox Ayarları
GenericName[tr]=Pencere Yöneticisi Ayarları
Comment[tr]=Openbox pencere yöneticisini yapılandırma
This diff is collapsed.
This diff is collapsed.
Name[zh_CN]=Openbox 设置
GenericName[zh_CN]=窗口管理器设置
Comment[zh_CN]=配置窗口管理器
This diff is collapsed.
Name[zh_TW]=Openbox 設定
GenericName[zh_TW]=視窗管理員設定
Comment[zh_TW]=設定視窗管理員
......@@ -106,7 +106,7 @@ void tree_apply()
if (!obt_xml_save_file(parse_i, p, TRUE)) {
gchar *s;
s = g_strdup_printf("An error occured while saving the "
s = g_strdup_printf("An error occurred while saving the "
"config file '%s'", p);
// obconf_error(s, FALSE);
QMessageBox::critical(NULL, QString(), QString::fromUtf8(s));
......