Compare commits

...

8 Commits

Author SHA1 Message Date
Alf Gaida
fa6e16c643 Adding upstream version 0.11.0. 2016-09-24 12:51:24 +02:00
Alf Gaida
9bfd04616c Adding upstream version 0.10.96~127-g699cf7a. 2016-07-20 20:26:08 +02:00
Alf Gaida
ff02d92934 Adding upstream version 0.10.0. 2015-11-03 00:36:02 +01:00
Alf Gaida
1a184961b6 Adding upstream version 0.9.0+20151101. 2015-11-01 03:16:38 +01:00
Alf Gaida
161a7316cf Adding upstream version 0.9.0+20151027. 2015-10-27 19:20:43 +01:00
Alf Gaida
c646cdaab7 Adding upstream version 0.9.0+20151024. 2015-10-25 02:26:00 +02:00
Alf Gaida
f591c66457 Adding upstream version 0.9.0+20150925. 2015-09-26 00:28:07 +02:00
Alf Gaida
bee030dd8b Adding upstream version 0.9.0+20150830. 2015-09-04 20:52:41 +02:00
1277 changed files with 8382 additions and 62843 deletions

4
.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
build
*.kdev4
CMakeLists.txt.user
*/translations/lxqt-panel

View File

@ -4,7 +4,7 @@ Upstream Authors:
Copyright: Copyright:
Copyright (c) 2010-2012 Razor team 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+ License: LGPL-2.1+
The full text of the licenses can be found in the 'COPYING' file. The full text of the licenses can be found in the 'COPYING' file.

1421
CHANGELOG Normal file

File diff suppressed because it is too large Load Diff

View File

@ -2,6 +2,8 @@ cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR)
project(lxqt-panel) project(lxqt-panel)
option(UPDATE_TRANSLATIONS "Update source translation translations/*.ts files" OFF) option(UPDATE_TRANSLATIONS "Update source translation translations/*.ts files" OFF)
option(PULL_TRANSLATIONS "Pull translations" ON)
option(WITH_SCREENSAVER_FALLBACK "Include support for converting the deprecated 'screensaver' plugin to 'quicklaunch'. This requires the lxqt-leave (lxqt-session) to be installed in runtime." ON)
# additional cmake files # additional cmake files
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
@ -34,8 +36,6 @@ if (CMAKE_COMPILER_IS_GNUCXX)
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-no-undefined") # set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-no-undefined")
endif() endif()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
######################################################################### #########################################################################
add_definitions (-Wall) add_definitions (-Wall)
@ -63,7 +63,10 @@ include(LXQtTranslate)
# Warning: This must be before add_subdirectory(panel). Move with caution. # Warning: This must be before add_subdirectory(panel). Move with caution.
set(PLUGIN_DIR "${CMAKE_INSTALL_FULL_LIBDIR}/lxqt-panel") set(PLUGIN_DIR "${CMAKE_INSTALL_FULL_LIBDIR}/lxqt-panel")
add_definitions(-DPLUGIN_DIR=\"${PLUGIN_DIR}\") add_definitions(
-DPLUGIN_DIR=\"${PLUGIN_DIR}\"
-DQT_USE_QSTRINGBUILDER
)
message(STATUS "Panel plugins location: ${PLUGIN_DIR}") message(STATUS "Panel plugins location: ${PLUGIN_DIR}")
######################################################################### #########################################################################
@ -96,14 +99,11 @@ setByDefault(CPULOAD_PLUGIN Yes)
if(CPULOAD_PLUGIN) if(CPULOAD_PLUGIN)
find_library(STATGRAB_LIB statgrab) find_library(STATGRAB_LIB statgrab)
if(NOT(${STATGRAB_LIB} MATCHES "NOTFOUND")) if(NOT STATGRAB_LIB)
message(FATAL_ERROR "CPU Load plugin requires libstatgrab")
endif()
list(APPEND ENABLED_PLUGINS "Cpu Load") list(APPEND ENABLED_PLUGINS "Cpu Load")
add_subdirectory(plugin-cpuload) add_subdirectory(plugin-cpuload)
else()
message(STATUS "")
message(STATUS "CPU Load plugin requires libstatgrab")
message(STATUS "")
endif()
endif() endif()
setByDefault(DIRECTORYMENU_PLUGIN Yes) setByDefault(DIRECTORYMENU_PLUGIN Yes)
@ -154,24 +154,15 @@ if(QUICKLAUNCH_PLUGIN)
add_subdirectory(plugin-quicklaunch) add_subdirectory(plugin-quicklaunch)
endif() endif()
setByDefault(SCREENSAVER_PLUGIN Yes)
if(SCREENSAVER_PLUGIN)
list(APPEND ENABLED_PLUGINS "Screensaver")
add_subdirectory(plugin-screensaver)
endif()
setByDefault(SENSORS_PLUGIN Yes) setByDefault(SENSORS_PLUGIN Yes)
if(SENSORS_PLUGIN) if(SENSORS_PLUGIN)
find_library(SENSORS_LIB sensors) find_library(SENSORS_LIB sensors)
if(NOT(${SENSORS_LIB} MATCHES "NOTFOUND")) if(NOT SENSORS_LIB)
message(FATAL_ERROR "Sensors plugin requires lm_sensors")
endif()
list(APPEND ENABLED_PLUGINS "Sensors") list(APPEND ENABLED_PLUGINS "Sensors")
add_subdirectory(plugin-sensors) add_subdirectory(plugin-sensors)
else()
message(STATUS "")
message(STATUS "Sensors plugin requires lm_sensors")
message(STATUS "")
endif()
endif() endif()
setByDefault(SHOWDESKTOP_PLUGIN Yes) setByDefault(SHOWDESKTOP_PLUGIN Yes)
@ -186,14 +177,11 @@ setByDefault(NETWORKMONITOR_PLUGIN Yes)
if(NETWORKMONITOR_PLUGIN) if(NETWORKMONITOR_PLUGIN)
find_library(STATGRAB_LIB statgrab) find_library(STATGRAB_LIB statgrab)
if(NOT(${STATGRAB_LIB} MATCHES "NOTFOUND")) if(NOT STATGRAB_LIB)
message(FATAL_ERROR "Network Monitor plugin requires libstatgrab")
endif()
list(APPEND ENABLED_PLUGINS "Network Monitor") list(APPEND ENABLED_PLUGINS "Network Monitor")
add_subdirectory(plugin-networkmonitor) add_subdirectory(plugin-networkmonitor)
else()
message(STATUS "")
message(STATUS "Network Monitor plugin requires libstatgrab")
message(STATUS "")
endif()
endif() endif()
setByDefault(SYSSTAT_PLUGIN Yes) setByDefault(SYSSTAT_PLUGIN Yes)
@ -232,13 +220,18 @@ setByDefault(VOLUME_USE_ALSA Yes)
if(VOLUME_PLUGIN) if(VOLUME_PLUGIN)
if (VOLUME_USE_PULSEAUDIO) if (VOLUME_USE_PULSEAUDIO)
find_package(PulseAudio) find_package(PulseAudio)
if (NOT PULSEAUDIO_FOUND)
message(FATAL_ERROR "PulseAudio not found, but required (VOLUME_USE_PULSEAUDIO) for Volume plugin!")
endif ()
endif(VOLUME_USE_PULSEAUDIO) endif(VOLUME_USE_PULSEAUDIO)
if(VOLUME_USE_ALSA) if(VOLUME_USE_ALSA)
find_package(ALSA) find_package(ALSA)
if (NOT ALSA_FOUND)
message(FATAL_ERROR "ALSA not found, but required (VOLUME_USE_ALSA) for Volume plugin!")
endif ()
endif() endif()
if(PULSEAUDIO_FOUND OR ALSA_FOUND)
list(APPEND ENABLED_PLUGINS "Volume") list(APPEND ENABLED_PLUGINS "Volume")
message(STATUS "") message(STATUS "")
message(STATUS "Volume plugin will be built") message(STATUS "Volume plugin will be built")
@ -246,13 +239,6 @@ if(VOLUME_PLUGIN)
message(STATUS " PulseAudio: ${PULSEAUDIO_FOUND}") message(STATUS " PulseAudio: ${PULSEAUDIO_FOUND}")
message(STATUS "") message(STATUS "")
add_subdirectory(plugin-volume) add_subdirectory(plugin-volume)
else()
message(STATUS "")
message(STATUS "Volume plugin requires pulseaudio or alsa")
message(STATUS " ALSA: ${ALSA_FOUND}")
message(STATUS " PulseAudio: ${PULSEAUDIO_FOUND}")
message(STATUS "")
endif()
endif() endif()
setByDefault(WORLDCLOCK_PLUGIN Yes) setByDefault(WORLDCLOCK_PLUGIN Yes)

View File

@ -1,9 +1,8 @@
GNU LESSER GENERAL PUBLIC LICENSE GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999 Version 2.1, February 1999
Copyright (C) 1991, 1999 Free Software Foundation, Inc. Copyright (C) 1991, 1999 Free Software Foundation, Inc.
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed. of this license document, but changing it is not allowed.
@ -23,8 +22,7 @@ specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it. You Free Software Foundation and other authors who decide to use it. You
can use it too, but we suggest you first think carefully about whether can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations strategy to use in any particular case, based on the explanations below.
below.
When we speak of free software, we are referring to freedom of use, When we speak of free software, we are referring to freedom of use,
not price. Our General Public Licenses are designed to make sure that not price. Our General Public Licenses are designed to make sure that
@ -89,9 +87,9 @@ libraries. However, the Lesser license provides advantages in certain
special circumstances. special circumstances.
For example, on rare occasions, there may be a special need to For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it encourage the widest possible use of a certain library, so that it becomes
becomes a de-facto standard. To achieve this, non-free programs must a de-facto standard. To achieve this, non-free programs must be
be allowed to use the library. A more frequent case is that a free allowed to use the library. A more frequent case is that a free
library does the same job as widely used non-free libraries. In this library does the same job as widely used non-free libraries. In this
case, there is little to gain by limiting the free library to free case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License. software only, so we use the Lesser General Public License.
@ -138,8 +136,8 @@ included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for "Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control interface definition files, plus the scripts used to control compilation
compilation and installation of the library. and installation of the library.
Activities other than copying, distribution and modification are not Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of covered by this License; they are outside its scope. The act of
@ -305,10 +303,10 @@ of these things:
the user installs one, as long as the modified version is the user installs one, as long as the modified version is
interface-compatible with the version that the work was made with. interface-compatible with the version that the work was made with.
c) Accompany the work with a written offer, valid for at least c) Accompany the work with a written offer, valid for at
three years, to give the same user the materials specified in least three years, to give the same user the materials
Subsection 6a, above, for a charge no more than the cost of specified in Subsection 6a, above, for a charge no more
performing this distribution. than the cost of performing this distribution.
d) If distribution of the work is made by offering access to copy d) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above from a designated place, offer equivalent access to copy the above
@ -386,10 +384,9 @@ all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library. refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under If any portion of this section is held invalid or unenforceable under any
any particular circumstance, the balance of the section is intended to particular circumstance, the balance of the section is intended to apply,
apply, and the section as a whole is intended to apply in other and the section as a whole is intended to apply in other circumstances.
circumstances.
It is not the purpose of this section to induce you to infringe any It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any patents or other property right claims or to contest validity of any
@ -407,11 +404,11 @@ be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in 12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License original copyright holder who places the Library under this License may add
may add an explicit geographical distribution limitation excluding those an explicit geographical distribution limitation excluding those countries,
countries, so that distribution is permitted only in or among so that distribution is permitted only in or among countries not thus
countries not thus excluded. In such case, this License incorporates excluded. In such case, this License incorporates the limitation as if
the limitation as if written in the body of this License. written in the body of this License.
13. The Free Software Foundation may publish revised and/or new 13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time. versions of the Lesser General Public License from time to time.

61
README.md Normal file
View File

@ -0,0 +1,61 @@
# lxqt-panel
## Overview
`lxqt-panel` represents the taskbar of LXQt.
The elements available in lxqt-panel are called "plugin" technically. This applies e. g. to the source code where they reside in directories `./plugin-<plugin>` like `plugin-mainmenu`. In contrast to this they are called "widgets" by the configuration GUI so far. Also, a more descriptive term is used to refer to distinct plugins within the GUI. E. g. the aforementioned `plugin-mainmenu` is called "Application menu" that way.
Configuration dialogue "Add Plugins", see [below](https://github.com/pmattern/lxqt-panel/tree/readme#customizing), is listing all available plugins plus a short description and hence provides an overview of the available ones.
Notes on some of the plugins, sorted by terms used within the GUI in alphabetical order, technical term in parenthesis:
#### Date & time (plugin-clock) / World clock (plugin-worldclock)
Both provide clock and calendar functionality. plugin-worldclock can display various time zones in addition but lacks a tooltip displaying current date und time upon hovering.
These plugins will probably be merged into one, see https://github.com/lxde/lxqt/issues/312.
#### Quick launch (plugin-quicklaunch)
A plugin to launch applications from the panel. By default it is empty and displays a message "Drop application icons here". Applications need to be available in panel's main menu and can be included into plugin-quicklaunch by drag & drop.
#### Status Notifier Plugin (plugin-statusnotifier) / System Tray (plugin-tray)
Both provide a notification area within the panel, that is an area where arbitrary applications can place informational icons. This is frequently used e. g. by chat or mail clients to inform about incoming messages or tools configuring the network to inform about connections. (So it's some kind of counterpart to the desktop notifications displayed by [lxqt-notificationd](https://github.com/lxde/lxqt-notificationd)).
The difference between the two plugins is a technical one. **plugin-tray** is implementing the so-called [System Tray Protocol](https://www.freedesktop.org/wiki/Specifications/systemtray-spec). It's a specification that has been around for years but has some serious technical limitations and in particular won't work under Wayland. **plugin-statusnotifier** on the other hand is implementing the so-called [StatusNotifierItem (SNI)](https://www.freedesktop.org/wiki/Specifications/StatusNotifierItem) specification which can be considered a successor of the System Tray Protocol.
Both plugins are maintained in parallel as not all relevant applications are compatible with SNI so far. In particular both Qt 4 and all GTK applications need some kind of wrapper to deal with it. Both plugins can be used in parallel without any issue, applications supporting both specifications will normally chose to display their icons in plugin-statusnotifier.
#### Volume control (plugin-volume)
As indicated by the name, a volume control. Technically Alsa, OSS and PulseAudio can be used as backend. The plugin itself is providing a control to adjust the main volume only but it allows for launching specific UIs of the backend in use like e. g. [pavucontrol-qt](https://github.com/lxde/pavucontrol-qt) to adjust PulseAudio.
## Installation
### Compiling source code
The runtime dependencies are libxcomposite, libdbusmenu-qt5, KGuiAddons, KWindowSystem, Solid, menu-cache, lxmenu-data, [liblxqt](https://github.com/lxde/liblxqt) and [lxqt-globalkeys](https://github.com/lxde/lxqt-globalkeys).
Several plugins or features thereof are optional and need additional runtime dependencies. Namely these are (plugin / feature in parenthesis) Alsa library (Alsa support in plugin-volume), PulseAudio client library (PulseAudio support in plugin-volume), lm-sensors (plugin-sensors), libstatgrab (plugin-cpuload, plugin-networkmonitor), [libsysstat](https://github.com/lxde/libsysstat) (plugin-sysstat). All of them are enabled by default and have to be disabled by CMake variables as required, see below.
In addition CMake is a mandatory build dependency. Git is optionally needed to pull latest VCS checkouts. The localization files were outsourced to repository [lxqt-l10n](https://github.com/lxde/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, depending on the way library paths are dealt with on 64bit systems variables like CMAKE_INSTALL_LIBDIR may have to be set as well.
By default all available plugins and features thereof are built and CMake fails when dependencies aren't met. Building particular plugins can be disabled by boolean CMake variables `<plugin>_PLUGIN` where the plugin is referred by its technical term like e. g. in `SYSSTAT_PLUGIN`. Alsa and PulseAudio support in plugin-volume can be disabled by boolean CMake variables `VOLUME_USE_ALSA` and `VOLUME_USE_PULSEAUDIO`.
To build run `make`, to install `make install` which accepts variable `DESTDIR` as usual.
### Binary packages
Official binary packages are provided by all major Linux distributions like Arch Linux, Debian (as of Debian stretch only), Fedora and openSUSE. Just use your package manager to search for string `lxqt-panel`.
## Configuration, Usage
### Launching
The panel is run as a daemon-like [LXQt Module](https://github.com/lxde/lxqt-session#lxqt-modules) the launch of which can be adjusted in section "Basic Settings" of configuration dialogue [LXQt Session Settings](https://github.com/lxde/lxqt-session#lxqt-session-settings) of [lxqt-session](https://github.com/lxde/lxqt-session).
### Customizing
To customize the panel itself there's a context menu, that is a menu opened by right-clicking the pointer device. It is comprising sections "\<plugin\>" and "Panel" which allow for configuring the plugin the pointer is currently over and the panel as a whole respectively.
In section "Panel" topics "Configure Panel" and "Manage Widgets" open different panes of a dialogue "Configure Panel" which allow for configuring the panel as a whole and the various plugins respectively.
Pane "Widgets" allows for configuring and removing all plugins currently included in lxqt-panel. The plus sign opens another dialogue "Add plugins" which is used to add plugins. It comes with a list of all plugins plus some short descriptions and can hence serve as overview what plugins are available.
Sometimes right-clicking over particular plugins may bring up a context menu dealing with the respective plugin's functionality *only* which means the plugin in question cannot be configured the usual way. This affects e. g. plugin-quicklaunch as soon as items were added (the context menu is limited to topics dealing with the items included in plugin-quicklaunch).
Currently there are two ways to deal with this. Some themes like e. g. `Frost` come with handles at the plugins' left end providing the regular context menu. Also, it can be assumed at least one plugin is included in the panel that's always featuring the regular context menu like e. g. plugin-mainmenu. Either way pane "Widgets" of "Configure Panel" can be accessed and used to configure the particular plugin.

View File

@ -17,6 +17,16 @@ MACRO (BUILD_LXQT_PLUGIN NAME)
${NAME} ${NAME}
INSTALL_DIR INSTALL_DIR
${LXQT_TRANSLATIONS_DIR}/${PROGRAM}/${NAME} ${LXQT_TRANSLATIONS_DIR}/${PROGRAM}/${NAME}
PULL_TRANSLATIONS
${PULL_TRANSLATIONS}
CLEAN_TRANSLATIONS
${CLEAN_TRANSLATIONS}
TRANSLATIONS_REPO
${TRANSLATIONS_REPO}
TRANSLATIONS_REFSPEC
${TRANSLATIONS_REFSPEC}
REPO_SUBDIR
"${PROGRAM}/plugin-${NAME}"
) )
#lxqt_translate_to(QM_FILES ${CMAKE_INSTALL_FULL_DATAROOTDIR}/lxqt/${PROGRAM}/${PROJECT_NAME}) #lxqt_translate_to(QM_FILES ${CMAKE_INSTALL_FULL_DATAROOTDIR}/lxqt/${PROGRAM}/${PROJECT_NAME})
@ -25,6 +35,8 @@ MACRO (BUILD_LXQT_PLUGIN NAME)
SOURCES SOURCES
${${PROJECT_NAME}_DESKTOP_FILES_IN} ${${PROJECT_NAME}_DESKTOP_FILES_IN}
) )
lxqt_plugin_translation_loader(QM_LOADER ${NAME} "lxqt-panel")
#************************************************ #************************************************
file (GLOB CONFIG_FILES resources/*.conf) file (GLOB CONFIG_FILES resources/*.conf)
@ -42,7 +54,7 @@ MACRO (BUILD_LXQT_PLUGIN NAME)
endif() endif()
list(FIND STATIC_PLUGINS ${NAME} IS_STATIC) list(FIND STATIC_PLUGINS ${NAME} IS_STATIC)
set(SRC ${HEADERS} ${SOURCES} ${MOC_SOURCES} ${${PROJECT_NAME}_QM_FILES} ${RESOURCES} ${UIS} ${DESKTOP_FILES}) set(SRC ${HEADERS} ${SOURCES} ${QM_LOADER} ${MOC_SOURCES} ${${PROJECT_NAME}_QM_FILES} ${RESOURCES} ${UIS} ${DESKTOP_FILES})
if (${IS_STATIC} EQUAL -1) # not static if (${IS_STATIC} EQUAL -1) # not static
add_library(${NAME} MODULE ${SRC}) # build dynamically loadable modules add_library(${NAME} MODULE ${SRC}) # build dynamically loadable modules
install(TARGETS ${NAME} DESTINATION ${PLUGIN_DIR}) # install the *.so file install(TARGETS ${NAME} DESTINATION ${PLUGIN_DIR}) # install the *.so file

View File

@ -2,10 +2,13 @@ set(PROJECT lxqt-panel)
set(PRIV_HEADERS set(PRIV_HEADERS
panelpluginsmodel.h panelpluginsmodel.h
windownotifier.h
lxqtpanel.h lxqtpanel.h
lxqtpanelapplication.h lxqtpanelapplication.h
lxqtpanelapplication_p.h
lxqtpanellayout.h lxqtpanellayout.h
plugin.h plugin.h
pluginsettings_p.h
lxqtpanellimits.h lxqtpanellimits.h
popupmenu.h popupmenu.h
pluginmoveprocessor.h pluginmoveprocessor.h
@ -19,6 +22,7 @@ set(PRIV_HEADERS
# using LXQt namespace in the public headers. # using LXQt namespace in the public headers.
set(PUB_HEADERS set(PUB_HEADERS
lxqtpanelglobals.h lxqtpanelglobals.h
pluginsettings.h
ilxqtpanelplugin.h ilxqtpanelplugin.h
ilxqtpanel.h ilxqtpanel.h
) )
@ -26,10 +30,12 @@ set(PUB_HEADERS
set(SOURCES set(SOURCES
main.cpp main.cpp
panelpluginsmodel.cpp panelpluginsmodel.cpp
windownotifier.cpp
lxqtpanel.cpp lxqtpanel.cpp
lxqtpanelapplication.cpp lxqtpanelapplication.cpp
lxqtpanellayout.cpp lxqtpanellayout.cpp
plugin.cpp plugin.cpp
pluginsettings.cpp
popupmenu.cpp popupmenu.cpp
pluginmoveprocessor.cpp pluginmoveprocessor.cpp
lxqtpanelpluginconfigdialog.cpp lxqtpanelpluginconfigdialog.cpp
@ -58,6 +64,11 @@ add_definitions(-DCOMPILE_LXQT_PANEL)
set(PLUGIN_DESKTOPS_DIR "${CMAKE_INSTALL_FULL_DATAROOTDIR}/lxqt/${PROJECT}") set(PLUGIN_DESKTOPS_DIR "${CMAKE_INSTALL_FULL_DATAROOTDIR}/lxqt/${PROJECT}")
add_definitions(-DPLUGIN_DESKTOPS_DIR=\"${PLUGIN_DESKTOPS_DIR}\") add_definitions(-DPLUGIN_DESKTOPS_DIR=\"${PLUGIN_DESKTOPS_DIR}\")
if (WITH_SCREENSAVER_FALLBACK)
message(STATUS "Building with conversion of deprecated 'screensaver' plugin")
add_definitions(-DWITH_SCREENSAVER_FALLBACK "-DLXQT_LOCK_DESKTOP=\"${CMAKE_INSTALL_FULL_DATAROOTDIR}/applications/lxqt-lockscreen.desktop\"")
endif ()
project(${PROJECT}) project(${PROJECT})
set(QTX_LIBRARIES Qt5::Widgets Qt5::Xml Qt5::DBus) set(QTX_LIBRARIES Qt5::Widgets Qt5::Xml Qt5::DBus)
@ -73,6 +84,16 @@ lxqt_translate_ts(QM_FILES SOURCES
${UI} ${UI}
INSTALL_DIR INSTALL_DIR
"${LXQT_TRANSLATIONS_DIR}/${PROJECT_NAME}" "${LXQT_TRANSLATIONS_DIR}/${PROJECT_NAME}"
PULL_TRANSLATIONS
${PULL_TRANSLATIONS}
CLEAN_TRANSLATIONS
${CLEAN_TRANSLATIONS}
TRANSLATIONS_REPO
${TRANSLATIONS_REPO}
TRANSLATIONS_REFSPEC
${TRANSLATIONS_REFSPEC}
REPO_SUBDIR
"${PROJECT_NAME}/panel"
) )
lxqt_app_translation_loader(SOURCES ${PROJECT_NAME}) lxqt_app_translation_loader(SOURCES ${PROJECT_NAME})
@ -95,3 +116,8 @@ target_link_libraries(${PROJECT}
install(TARGETS ${PROJECT} RUNTIME DESTINATION bin) install(TARGETS ${PROJECT} RUNTIME DESTINATION bin)
install(FILES ${CONFIG_FILES} DESTINATION ${LXQT_ETC_XDG_DIR}/lxqt) install(FILES ${CONFIG_FILES} DESTINATION ${LXQT_ETC_XDG_DIR}/lxqt)
install(FILES ${PUB_HEADERS} DESTINATION include/lxqt) install(FILES ${PUB_HEADERS} DESTINATION include/lxqt)
install(FILES
man/lxqt-panel.1
DESTINATION "${CMAKE_INSTALL_MANDIR}/man1"
COMPONENT Runtime
)

View File

@ -53,12 +53,12 @@ AddPluginDialog::AddPluginDialog(QWidget *parent):
desktopFilesDirs << QString("%1/%2").arg(XdgDirs::dataHome(), "/lxqt/lxqt-panel"); desktopFilesDirs << QString("%1/%2").arg(XdgDirs::dataHome(), "/lxqt/lxqt-panel");
desktopFilesDirs << PLUGIN_DESKTOPS_DIR; desktopFilesDirs << PLUGIN_DESKTOPS_DIR;
mPlugins = LxQt::PluginInfo::search(desktopFilesDirs, QStringLiteral("LxQtPanel/Plugin"), QStringLiteral("*")); mPlugins = LXQt::PluginInfo::search(desktopFilesDirs, QLatin1String("LXQtPanel/Plugin"), QLatin1String("*"));
std::sort(mPlugins.begin(), mPlugins.end(), [](const LxQt::PluginInfo &p1, const LxQt::PluginInfo &p2) { std::sort(mPlugins.begin(), mPlugins.end(), [](const LXQt::PluginInfo &p1, const LXQt::PluginInfo &p2) {
return p1.name() < p2.name() || (p1.name() == p2.name() && p1.comment() < p2.comment()); return p1.name() < p2.name() || (p1.name() == p2.name() && p1.comment() < p2.comment());
}); });
ui->pluginList->setItemDelegate(new LxQt::HtmlDelegate(QSize(32, 32), ui->pluginList)); ui->pluginList->setItemDelegate(new LXQt::HtmlDelegate(QSize(32, 32), ui->pluginList));
ui->pluginList->setContextMenuPolicy(Qt::CustomContextMenu); ui->pluginList->setContextMenuPolicy(Qt::CustomContextMenu);
filter(); filter();
@ -72,9 +72,9 @@ AddPluginDialog::AddPluginDialog(QWidget *parent):
connect(ui->pluginList, &QListWidget::doubleClicked, this, &AddPluginDialog::emitPluginSelected); connect(ui->pluginList, &QListWidget::doubleClicked, this, &AddPluginDialog::emitPluginSelected);
connect(ui->addButton, &QPushButton::clicked, this, &AddPluginDialog::emitPluginSelected); connect(ui->addButton, &QPushButton::clicked, this, &AddPluginDialog::emitPluginSelected);
connect(dynamic_cast<LxQtPanelApplication *>(qApp), &LxQtPanelApplication::pluginAdded connect(dynamic_cast<LXQtPanelApplication *>(qApp), &LXQtPanelApplication::pluginAdded
, this, &AddPluginDialog::filter); , this, &AddPluginDialog::filter);
connect(dynamic_cast<LxQtPanelApplication *>(qApp), &LxQtPanelApplication::pluginRemoved connect(dynamic_cast<LXQtPanelApplication *>(qApp), &LXQtPanelApplication::pluginRemoved
, this, &AddPluginDialog::filter); , this, &AddPluginDialog::filter);
} }
@ -95,25 +95,26 @@ void AddPluginDialog::filter()
int pluginCount = mPlugins.length(); int pluginCount = mPlugins.length();
for (int i = 0; i < pluginCount; ++i) for (int i = 0; i < pluginCount; ++i)
{ {
const LxQt::PluginInfo &plugin = mPlugins.at(i); const LXQt::PluginInfo &plugin = mPlugins.at(i);
QString s = QStringLiteral("%1 %2 %3 %4").arg(plugin.name(), QString s = QString("%1 %2 %3 %4 %5").arg(plugin.name(),
plugin.comment(), plugin.comment(),
plugin.value("Name").toString(), plugin.value("Name").toString(),
plugin.value("Comment").toString()); plugin.value("Comment").toString(),
plugin.id());
if (!s.contains(ui->searchEdit->text(), Qt::CaseInsensitive)) if (!s.contains(ui->searchEdit->text(), Qt::CaseInsensitive))
continue; continue;
QListWidgetItem* item = new QListWidgetItem(ui->pluginList); QListWidgetItem* item = new QListWidgetItem(ui->pluginList);
// disable single-instances plugins already in use // disable single-instances plugins already in use
if (dynamic_cast<LxQtPanelApplication const *>(qApp)->isPluginSingletonAndRunnig(plugin.id())) if (dynamic_cast<LXQtPanelApplication const *>(qApp)->isPluginSingletonAndRunnig(plugin.id()))
{ {
item->setFlags(item->flags() & ~Qt::ItemIsEnabled); item->setFlags(item->flags() & ~Qt::ItemIsEnabled);
item->setBackground(palette().brush(QPalette::Disabled, QPalette::Text)); item->setBackground(palette().brush(QPalette::Disabled, QPalette::Text));
item->setText(QStringLiteral("<b>%1</b><br>%2<br><small>%3</small>") item->setText(QString("<b>%1</b> (%2)<br>%3<br><small>%4</small>")
.arg(plugin.name(), plugin.comment(), tr("(only one instance can run at a time)"))); .arg(plugin.name(), plugin.id(), plugin.comment(), tr("(only one instance can run at a time)")));
} else } else
item->setText(QStringLiteral("<b>%1</b><br>%2").arg(plugin.name(), plugin.comment())); item->setText(QString("<b>%1</b> (%2)<br>%3").arg(plugin.name(), plugin.id(), plugin.comment()));
item->setIcon(plugin.icon(fallIco)); item->setIcon(plugin.icon(fallIco));
item->setData(INDEX_ROLE, i); item->setData(INDEX_ROLE, i);
} }
@ -127,7 +128,7 @@ void AddPluginDialog::emitPluginSelected()
QListWidget* pluginList = ui->pluginList; QListWidget* pluginList = ui->pluginList;
if (pluginList->currentItem() && pluginList->currentItem()->isSelected()) if (pluginList->currentItem() && pluginList->currentItem()->isSelected())
{ {
LxQt::PluginInfo plugin = mPlugins.at(pluginList->currentItem()->data(INDEX_ROLE).toInt()); LXQt::PluginInfo plugin = mPlugins.at(pluginList->currentItem()->data(INDEX_ROLE).toInt());
emit pluginSelected(plugin); emit pluginSelected(plugin);
} }
} }

View File

@ -48,11 +48,11 @@ public:
~AddPluginDialog(); ~AddPluginDialog();
signals: signals:
void pluginSelected(const LxQt::PluginInfo &plugin); void pluginSelected(const LXQt::PluginInfo &plugin);
private: private:
Ui::AddPluginDialog *ui; Ui::AddPluginDialog *ui;
LxQt::PluginInfoList mPlugins; LXQt::PluginInfoList mPlugins;
QTimer mSearchTimer; QTimer mSearchTimer;
private slots: private slots:

View File

@ -27,19 +27,19 @@
#include "configpaneldialog.h" #include "configpaneldialog.h"
ConfigPanelDialog::ConfigPanelDialog(LxQtPanel *panel, QWidget *parent): ConfigPanelDialog::ConfigPanelDialog(LXQtPanel *panel, QWidget *parent):
LxQt::ConfigDialog(tr("Configure Panel"), panel->settings(), parent), LXQt::ConfigDialog(tr("Configure Panel"), panel->settings(), parent),
mPanelPage(nullptr), mPanelPage(nullptr),
mPluginsPage(nullptr) mPluginsPage(nullptr)
{ {
setAttribute(Qt::WA_DeleteOnClose); setAttribute(Qt::WA_DeleteOnClose);
mPanelPage = new ConfigPanelWidget(panel, this); mPanelPage = new ConfigPanelWidget(panel, this);
addPage(mPanelPage, tr("Panel"), QStringLiteral("configure")); addPage(mPanelPage, tr("Panel"), QLatin1String("configure"));
connect(this, &ConfigPanelDialog::reset, mPanelPage, &ConfigPanelWidget::reset); connect(this, &ConfigPanelDialog::reset, mPanelPage, &ConfigPanelWidget::reset);
mPluginsPage = new ConfigPluginsWidget(panel, this); mPluginsPage = new ConfigPluginsWidget(panel, this);
addPage(mPluginsPage, tr("Widgets"), QStringLiteral("preferences-plugin")); addPage(mPluginsPage, tr("Widgets"), QLatin1String("preferences-plugin"));
connect(this, &ConfigPanelDialog::reset, mPluginsPage, &ConfigPluginsWidget::reset); connect(this, &ConfigPanelDialog::reset, mPluginsPage, &ConfigPluginsWidget::reset);
connect(this, &ConfigPanelDialog::accepted, [panel] { connect(this, &ConfigPanelDialog::accepted, [panel] {

View File

@ -34,12 +34,12 @@
#include <LXQt/ConfigDialog> #include <LXQt/ConfigDialog>
class ConfigPanelDialog : public LxQt::ConfigDialog class ConfigPanelDialog : public LXQt::ConfigDialog
{ {
Q_OBJECT Q_OBJECT
public: public:
ConfigPanelDialog(LxQtPanel *panel, QWidget *parent = 0); ConfigPanelDialog(LXQtPanel *panel, QWidget *parent = 0);
void showConfigPanelPage(); void showConfigPanelPage();
void showConfigPluginsPage(); void showConfigPluginsPage();

View File

@ -39,16 +39,16 @@
#include <QFileDialog> #include <QFileDialog>
#include <QStandardPaths> #include <QStandardPaths>
using namespace LxQt; using namespace LXQt;
struct ScreenPosition struct ScreenPosition
{ {
int screen; int screen;
ILxQtPanel::Position position; ILXQtPanel::Position position;
}; };
Q_DECLARE_METATYPE(ScreenPosition) Q_DECLARE_METATYPE(ScreenPosition)
ConfigPanelWidget::ConfigPanelWidget(LxQtPanel *panel, QWidget *parent) : ConfigPanelWidget::ConfigPanelWidget(LXQtPanel *panel, QWidget *parent) :
QWidget(parent), QWidget(parent),
ui(new Ui::ConfigPanelWidget), ui(new Ui::ConfigPanelWidget),
mPanel(panel) mPanel(panel)
@ -75,6 +75,8 @@ ConfigPanelWidget::ConfigPanelWidget(LxQtPanel *panel, QWidget *parent) :
mOldHidable = mPanel->hidable(); mOldHidable = mPanel->hidable();
mOldAnimation = mPanel->animationTime();
ui->spinBox_panelSize->setMinimum(PANEL_MINIMUM_SIZE); ui->spinBox_panelSize->setMinimum(PANEL_MINIMUM_SIZE);
ui->spinBox_panelSize->setMaximum(PANEL_MAXIMUM_SIZE); ui->spinBox_panelSize->setMaximum(PANEL_MAXIMUM_SIZE);
@ -98,6 +100,7 @@ ConfigPanelWidget::ConfigPanelWidget(LxQtPanel *panel, QWidget *parent) :
connect(ui->comboBox_alignment, SIGNAL(activated(int)), this, SLOT(editChanged())); connect(ui->comboBox_alignment, SIGNAL(activated(int)), this, SLOT(editChanged()));
connect(ui->comboBox_position, SIGNAL(activated(int)), this, SLOT(positionChanged())); connect(ui->comboBox_position, SIGNAL(activated(int)), this, SLOT(positionChanged()));
connect(ui->checkBox_hidable, SIGNAL(toggled(bool)), this, SLOT(editChanged())); connect(ui->checkBox_hidable, SIGNAL(toggled(bool)), this, SLOT(editChanged()));
connect(ui->spinBox_animation, SIGNAL(valueChanged(int)), this, SLOT(editChanged()));
connect(ui->checkBox_customFontColor, SIGNAL(toggled(bool)), this, SLOT(editChanged())); connect(ui->checkBox_customFontColor, SIGNAL(toggled(bool)), this, SLOT(editChanged()));
connect(ui->pushButton_customFontColor, SIGNAL(clicked(bool)), this, SLOT(pickFontColor())); connect(ui->pushButton_customFontColor, SIGNAL(clicked(bool)), this, SLOT(pickFontColor()));
@ -106,7 +109,7 @@ ConfigPanelWidget::ConfigPanelWidget(LxQtPanel *panel, QWidget *parent) :
connect(ui->checkBox_customBgImage, SIGNAL(toggled(bool)), this, SLOT(editChanged())); connect(ui->checkBox_customBgImage, SIGNAL(toggled(bool)), this, SLOT(editChanged()));
connect(ui->lineEdit_customBgImage, SIGNAL(textChanged(QString)), this, SLOT(editChanged())); connect(ui->lineEdit_customBgImage, SIGNAL(textChanged(QString)), this, SLOT(editChanged()));
connect(ui->pushButton_customBgImage, SIGNAL(clicked(bool)), this, SLOT(pickBackgroundImage())); connect(ui->pushButton_customBgImage, SIGNAL(clicked(bool)), this, SLOT(pickBackgroundImage()));
connect(ui->slider_opacity, SIGNAL(sliderReleased()), this, SLOT(editChanged())); connect(ui->slider_opacity, &QSlider::valueChanged, this, &ConfigPanelWidget::editChanged);
} }
@ -123,6 +126,8 @@ void ConfigPanelWidget::reset()
ui->checkBox_hidable->setChecked(mOldHidable); ui->checkBox_hidable->setChecked(mOldHidable);
ui->spinBox_animation->setValue(mOldAnimation);
fillComboBox_alignment(); fillComboBox_alignment();
ui->comboBox_alignment->setCurrentIndex(mOldAlignment + 1); ui->comboBox_alignment->setCurrentIndex(mOldAlignment + 1);
@ -153,10 +158,10 @@ void ConfigPanelWidget::fillComboBox_position()
int screenCount = QApplication::desktop()->screenCount(); int screenCount = QApplication::desktop()->screenCount();
if (screenCount == 1) if (screenCount == 1)
{ {
addPosition(tr("Top of desktop"), 0, LxQtPanel::PositionTop); addPosition(tr("Top of desktop"), 0, LXQtPanel::PositionTop);
addPosition(tr("Left of desktop"), 0, LxQtPanel::PositionLeft); addPosition(tr("Left of desktop"), 0, LXQtPanel::PositionLeft);
addPosition(tr("Right of desktop"), 0, LxQtPanel::PositionRight); addPosition(tr("Right of desktop"), 0, LXQtPanel::PositionRight);
addPosition(tr("Bottom of desktop"), 0, LxQtPanel::PositionBottom); addPosition(tr("Bottom of desktop"), 0, LXQtPanel::PositionBottom);
} }
else else
{ {
@ -165,10 +170,10 @@ void ConfigPanelWidget::fillComboBox_position()
if (screenNum) if (screenNum)
ui->comboBox_position->insertSeparator(9999); ui->comboBox_position->insertSeparator(9999);
addPosition(tr("Top of desktop %1").arg(screenNum +1), screenNum, LxQtPanel::PositionTop); addPosition(tr("Top of desktop %1").arg(screenNum +1), screenNum, LXQtPanel::PositionTop);
addPosition(tr("Left of desktop %1").arg(screenNum +1), screenNum, LxQtPanel::PositionLeft); addPosition(tr("Left of desktop %1").arg(screenNum +1), screenNum, LXQtPanel::PositionLeft);
addPosition(tr("Right of desktop %1").arg(screenNum +1), screenNum, LxQtPanel::PositionRight); addPosition(tr("Right of desktop %1").arg(screenNum +1), screenNum, LXQtPanel::PositionRight);
addPosition(tr("Bottom of desktop %1").arg(screenNum +1), screenNum, LxQtPanel::PositionBottom); addPosition(tr("Bottom of desktop %1").arg(screenNum +1), screenNum, LXQtPanel::PositionBottom);
} }
} }
} }
@ -179,13 +184,13 @@ void ConfigPanelWidget::fillComboBox_position()
************************************************/ ************************************************/
void ConfigPanelWidget::fillComboBox_alignment() void ConfigPanelWidget::fillComboBox_alignment()
{ {
ui->comboBox_alignment->setItemData(0, QVariant(LxQtPanel::AlignmentLeft)); ui->comboBox_alignment->setItemData(0, QVariant(LXQtPanel::AlignmentLeft));
ui->comboBox_alignment->setItemData(1, QVariant(LxQtPanel::AlignmentCenter)); ui->comboBox_alignment->setItemData(1, QVariant(LXQtPanel::AlignmentCenter));
ui->comboBox_alignment->setItemData(2, QVariant(LxQtPanel::AlignmentRight)); ui->comboBox_alignment->setItemData(2, QVariant(LXQtPanel::AlignmentRight));
if (mPosition == ILxQtPanel::PositionTop || if (mPosition == ILXQtPanel::PositionTop ||
mPosition == ILxQtPanel::PositionBottom) mPosition == ILXQtPanel::PositionBottom)
{ {
ui->comboBox_alignment->setItemText(0, tr("Left")); ui->comboBox_alignment->setItemText(0, tr("Left"));
ui->comboBox_alignment->setItemText(1, tr("Center")); ui->comboBox_alignment->setItemText(1, tr("Center"));
@ -203,9 +208,9 @@ void ConfigPanelWidget::fillComboBox_alignment()
/************************************************ /************************************************
* *
************************************************/ ************************************************/
void ConfigPanelWidget::addPosition(const QString& name, int screen, LxQtPanel::Position position) void ConfigPanelWidget::addPosition(const QString& name, int screen, LXQtPanel::Position position)
{ {
if (LxQtPanel::canPlacedOn(screen, position)) if (LXQtPanel::canPlacedOn(screen, position))
ui->comboBox_position->addItem(name, QVariant::fromValue((ScreenPosition){screen, position})); ui->comboBox_position->addItem(name, QVariant::fromValue((ScreenPosition){screen, position}));
} }
@ -213,7 +218,7 @@ void ConfigPanelWidget::addPosition(const QString& name, int screen, LxQtPanel::
/************************************************ /************************************************
* *
************************************************/ ************************************************/
int ConfigPanelWidget::indexForPosition(int screen, ILxQtPanel::Position position) int ConfigPanelWidget::indexForPosition(int screen, ILXQtPanel::Position position)
{ {
for (int i = 0; i < ui->comboBox_position->count(); i++) for (int i = 0; i < ui->comboBox_position->count(); i++)
{ {
@ -247,7 +252,7 @@ void ConfigPanelWidget::editChanged()
ui->comboBox_lenghtType->currentIndex() == 0, ui->comboBox_lenghtType->currentIndex() == 0,
true); true);
LxQtPanel::Alignment align = LxQtPanel::Alignment( LXQtPanel::Alignment align = LXQtPanel::Alignment(
ui->comboBox_alignment->itemData( ui->comboBox_alignment->itemData(
ui->comboBox_alignment->currentIndex() ui->comboBox_alignment->currentIndex()
).toInt()); ).toInt());
@ -255,6 +260,7 @@ void ConfigPanelWidget::editChanged()
mPanel->setAlignment(align, true); mPanel->setAlignment(align, true);
mPanel->setPosition(mScreenNum, mPosition, true); mPanel->setPosition(mScreenNum, mPosition, true);
mPanel->setHidable(ui->checkBox_hidable->isChecked(), true); mPanel->setHidable(ui->checkBox_hidable->isChecked(), true);
mPanel->setAnimationTime(ui->spinBox_animation->value(), true);
mPanel->setFontColor(ui->checkBox_customFontColor->isChecked() ? mFontColor : QColor(), true); mPanel->setFontColor(ui->checkBox_customFontColor->isChecked() ? mFontColor : QColor(), true);
if (ui->checkBox_customBgColor->isChecked()) if (ui->checkBox_customBgColor->isChecked())
@ -304,8 +310,8 @@ int ConfigPanelWidget::getMaxLength()
{ {
QDesktopWidget* dw = QApplication::desktop(); QDesktopWidget* dw = QApplication::desktop();
if (mPosition == ILxQtPanel::PositionTop || if (mPosition == ILXQtPanel::PositionTop ||
mPosition == ILxQtPanel::PositionBottom) mPosition == ILXQtPanel::PositionBottom)
return dw->screenGeometry(mScreenNum).width(); return dw->screenGeometry(mScreenNum).width();
else else
return dw->screenGeometry(mScreenNum).height(); return dw->screenGeometry(mScreenNum).height();
@ -320,10 +326,10 @@ void ConfigPanelWidget::positionChanged()
ScreenPosition sp = ui->comboBox_position->itemData( ScreenPosition sp = ui->comboBox_position->itemData(
ui->comboBox_position->currentIndex()).value<ScreenPosition>(); ui->comboBox_position->currentIndex()).value<ScreenPosition>();
bool updateAlig = (sp.position == ILxQtPanel::PositionTop || bool updateAlig = (sp.position == ILXQtPanel::PositionTop ||
sp.position == ILxQtPanel::PositionBottom) != sp.position == ILXQtPanel::PositionBottom) !=
(mPosition == ILxQtPanel::PositionTop || (mPosition == ILXQtPanel::PositionTop ||
mPosition == ILxQtPanel::PositionBottom); mPosition == ILXQtPanel::PositionBottom);
int oldMax = getMaxLength(); int oldMax = getMaxLength();
mPosition = sp.position; mPosition = sp.position;

View File

@ -33,7 +33,7 @@
#include <QTimer> #include <QTimer>
#include <LXQt/ConfigDialog> #include <LXQt/ConfigDialog>
class LxQtPanel; class LXQtPanel;
namespace Ui { namespace Ui {
class ConfigPanelWidget; class ConfigPanelWidget;
@ -44,11 +44,11 @@ class ConfigPanelWidget : public QWidget
Q_OBJECT Q_OBJECT
public: public:
explicit ConfigPanelWidget(LxQtPanel *panel, QWidget *parent = 0); explicit ConfigPanelWidget(LXQtPanel *panel, QWidget *parent = 0);
~ConfigPanelWidget(); ~ConfigPanelWidget();
int screenNum() const { return mScreenNum; } int screenNum() const { return mScreenNum; }
ILxQtPanel::Position position() const { return mPosition; } ILXQtPanel::Position position() const { return mPosition; }
signals: signals:
void changed(); void changed();
@ -66,14 +66,14 @@ private slots:
private: private:
Ui::ConfigPanelWidget *ui; Ui::ConfigPanelWidget *ui;
LxQtPanel *mPanel; LXQtPanel *mPanel;
int mScreenNum; int mScreenNum;
ILxQtPanel::Position mPosition; ILXQtPanel::Position mPosition;
void addPosition(const QString& name, int screen, LxQtPanel::Position position); void addPosition(const QString& name, int screen, LXQtPanel::Position position);
void fillComboBox_position(); void fillComboBox_position();
void fillComboBox_alignment(); void fillComboBox_alignment();
int indexForPosition(int screen, ILxQtPanel::Position position); int indexForPosition(int screen, ILXQtPanel::Position position);
int getMaxLength(); int getMaxLength();
// new values // new values
@ -86,9 +86,10 @@ private:
int mOldLineCount; int mOldLineCount;
int mOldLength; int mOldLength;
bool mOldLengthInPercents; bool mOldLengthInPercents;
LxQtPanel::Alignment mOldAlignment; LXQtPanel::Alignment mOldAlignment;
ILxQtPanel::Position mOldPosition; ILXQtPanel::Position mOldPosition;
bool mOldHidable; bool mOldHidable;
int mOldAnimation;
int mOldScreenNum; int mOldScreenNum;
QColor mOldFontColor; QColor mOldFontColor;
QColor mOldBackgroundColor; QColor mOldBackgroundColor;

View File

@ -202,39 +202,79 @@
<string>Alignment &amp;&amp; position</string> <string>Alignment &amp;&amp; position</string>
</property> </property>
<layout class="QGridLayout" name="gridLayout_2"> <layout class="QGridLayout" name="gridLayout_2">
<item row="4" column="0"> <item row="1" column="0">
<widget class="QCheckBox" name="checkBox_hidable">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Auto-hide</string>
</property>
</widget>
</item>
<item row="1" column="3">
<widget class="QSpinBox" name="spinBox_animation">
<property name="enabled">
<bool>false</bool>
</property>
<property name="toolTip">
<string>Zero means no animation</string>
</property>
<property name="suffix">
<string> ms</string>
</property>
<property name="maximum">
<number>500</number>
</property>
<property name="singleStep">
<number>50</number>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_position"> <widget class="QLabel" name="label_position">
<property name="text"> <property name="text">
<string>Position:</string> <string>Position:</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="4" column="1" colspan="3"> <item row="1" column="2">
<widget class="QComboBox" name="comboBox_position"/> <widget class="QLabel" name="label_animation">
<property name="enabled">
<bool>false</bool>
</property>
<property name="toolTip">
<string>Zero means no animation</string>
</property>
<property name="text">
<string>Animation duration:</string>
</property>
</widget>
</item> </item>
<item row="2" column="0"> <item row="0" column="0">
<widget class="QLabel" name="label_alignment"> <widget class="QLabel" name="label_alignment">
<property name="text"> <property name="text">
<string>Alignment:</string> <string>Alignment:</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="1" colspan="3"> <item row="1" column="1">
<widget class="QWidget" name="widget_7" native="true"> <spacer name="horizontalSpacer_3">
<layout class="QHBoxLayout" name="horizontalLayout_7"> <property name="orientation">
<property name="leftMargin"> <enum>Qt::Horizontal</enum>
<number>0</number>
</property> </property>
<property name="topMargin"> <property name="sizeHint" stdset="0">
<number>0</number> <size>
<width>5</width>
<height>5</height>
</size>
</property> </property>
<property name="rightMargin"> </spacer>
<number>0</number> </item>
</property> <item row="0" column="1" colspan="3">
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QComboBox" name="comboBox_alignment"> <widget class="QComboBox" name="comboBox_alignment">
<property name="currentIndex"> <property name="currentIndex">
<number>1</number> <number>1</number>
@ -256,37 +296,8 @@
</item> </item>
</widget> </widget>
</item> </item>
<item> <item row="2" column="1" colspan="3">
<spacer name="horizontalSpacer_3"> <widget class="QComboBox" name="comboBox_position"/>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Minimum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>15</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QCheckBox" name="checkBox_hidable">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Auto-hide</string>
</property>
</widget>
</item>
</layout>
</widget>
</item> </item>
</layout> </layout>
</widget> </widget>
@ -614,6 +625,48 @@
<signal>toggled(bool)</signal> <signal>toggled(bool)</signal>
<receiver>compositingL</receiver> <receiver>compositingL</receiver>
<slot>setEnabled(bool)</slot> <slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>20</x>
<y>20</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>checkBox_hidable</sender>
<signal>toggled(bool)</signal>
<receiver>label_animation</receiver>
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>59</x>
<y>198</y>
</hint>
<hint type="destinationlabel">
<x>211</x>
<y>198</y>
</hint>
</hints>
</connection>
<connection>
<sender>checkBox_hidable</sender>
<signal>toggled(bool)</signal>
<receiver>spinBox_animation</receiver>
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>59</x>
<y>198</y>
</hint>
<hint type="destinationlabel">
<x>319</x>
<y>198</y>
</hint>
</hints>
</connection> </connection>
</connections> </connections>
</ui> </ui>

View File

@ -36,7 +36,7 @@
#include <QPushButton> #include <QPushButton>
#include <QItemSelectionModel> #include <QItemSelectionModel>
ConfigPluginsWidget::ConfigPluginsWidget(LxQtPanel *panel, QWidget* parent) : ConfigPluginsWidget::ConfigPluginsWidget(LXQtPanel *panel, QWidget* parent) :
QWidget(parent), QWidget(parent),
ui(new Ui::ConfigPluginsWidget), ui(new Ui::ConfigPluginsWidget),
mPanel(panel) mPanel(panel)
@ -50,22 +50,21 @@ ConfigPluginsWidget::ConfigPluginsWidget(LxQtPanel *panel, QWidget* parent) :
} }
{ {
QScopedPointer<QAbstractItemDelegate> d(ui->listView_plugins->itemDelegate()); QScopedPointer<QAbstractItemDelegate> d(ui->listView_plugins->itemDelegate());
ui->listView_plugins->setItemDelegate(new LxQt::HtmlDelegate(QSize(16, 16), ui->listView_plugins)); ui->listView_plugins->setItemDelegate(new LXQt::HtmlDelegate(QSize(16, 16), ui->listView_plugins));
} }
resetButtons(); resetButtons();
connect(ui->listView_plugins, &QListView::activated, plugins, &PanelPluginsModel::onActivatedIndex);
connect(ui->listView_plugins->selectionModel(), &QItemSelectionModel::selectionChanged, connect(ui->listView_plugins->selectionModel(), &QItemSelectionModel::selectionChanged,
this, &ConfigPluginsWidget::resetButtons); this, &ConfigPluginsWidget::resetButtons);
connect(ui->pushButton_moveUp, &QToolButton::clicked, plugins, &PanelPluginsModel::onMovePluginUp); connect(ui->pushButton_moveUp, &QToolButton::clicked, [this, plugins] { plugins->onMovePluginUp(ui->listView_plugins->currentIndex()); });
connect(ui->pushButton_moveDown, &QToolButton::clicked, plugins, &PanelPluginsModel::onMovePluginDown); connect(ui->pushButton_moveDown, &QToolButton::clicked, [this, plugins] { plugins->onMovePluginDown(ui->listView_plugins->currentIndex()); });
connect(ui->pushButton_addPlugin, &QPushButton::clicked, this, &ConfigPluginsWidget::showAddPluginDialog); connect(ui->pushButton_addPlugin, &QPushButton::clicked, this, &ConfigPluginsWidget::showAddPluginDialog);
connect(ui->pushButton_removePlugin, &QToolButton::clicked, plugins, &PanelPluginsModel::onRemovePlugin); connect(ui->pushButton_removePlugin, &QToolButton::clicked, [this, plugins] { plugins->onRemovePlugin(ui->listView_plugins->currentIndex()); });
connect(ui->pushButton_pluginConfig, &QToolButton::clicked, plugins, &PanelPluginsModel::onConfigurePlugin); connect(ui->pushButton_pluginConfig, &QToolButton::clicked, [this, plugins] { plugins->onConfigurePlugin(ui->listView_plugins->currentIndex()); });
connect(plugins, &PanelPluginsModel::pluginAdded, this, &ConfigPluginsWidget::resetButtons); connect(plugins, &PanelPluginsModel::pluginAdded, this, &ConfigPluginsWidget::resetButtons);
connect(plugins, &PanelPluginsModel::pluginRemoved, this, &ConfigPluginsWidget::resetButtons); connect(plugins, &PanelPluginsModel::pluginRemoved, this, &ConfigPluginsWidget::resetButtons);
@ -109,7 +108,7 @@ void ConfigPluginsWidget::resetButtons()
Plugin const * plugin Plugin const * plugin
= ui->listView_plugins->model()->data(selectionModel->currentIndex(), Qt::UserRole).value<Plugin const *>(); = ui->listView_plugins->model()->data(selectionModel->currentIndex(), Qt::UserRole).value<Plugin const *>();
if (nullptr != plugin) if (nullptr != plugin)
hasConfigDialog = plugin->iPlugin()->flags().testFlag(ILxQtPanelPlugin::HaveConfigDialog); hasConfigDialog = plugin->iPlugin()->flags().testFlag(ILXQtPanelPlugin::HaveConfigDialog);
} }
ui->pushButton_removePlugin->setEnabled(hasSelection); ui->pushButton_removePlugin->setEnabled(hasSelection);

View File

@ -42,7 +42,7 @@ class ConfigPluginsWidget : public QWidget
Q_OBJECT Q_OBJECT
public: public:
ConfigPluginsWidget(LxQtPanel *panel, QWidget* parent = 0); ConfigPluginsWidget(LXQtPanel *panel, QWidget* parent = 0);
~ConfigPluginsWidget(); ~ConfigPluginsWidget();
signals: signals:
@ -58,7 +58,7 @@ private slots:
private: private:
Ui::ConfigPluginsWidget *ui; Ui::ConfigPluginsWidget *ui;
QScopedPointer<AddPluginDialog> mAddPluginDialog; QScopedPointer<AddPluginDialog> mAddPluginDialog;
LxQtPanel *mPanel; LXQtPanel *mPanel;
}; };
#endif #endif

View File

@ -31,49 +31,85 @@
#include <QRect> #include <QRect>
#include "lxqtpanelglobals.h" #include "lxqtpanelglobals.h"
class ILxQtPanelPlugin; class ILXQtPanelPlugin;
class QWidget;
/** /**
**/ **/
class LXQT_PANEL_API ILxQtPanel class LXQT_PANEL_API ILXQtPanel
{ {
public: public:
/** /**
Specifies the position of the panel on screen. * @brief Specifies the position of the panel on screen.
**/ */
enum Position{ enum Position{
PositionBottom, //! The bottom side of the screen. PositionBottom, //!< The bottom side of the screen.
PositionTop, //! The top side of the screen. PositionTop, //!< The top side of the screen.
PositionLeft, //! The left side of the screen. PositionLeft, //!< The left side of the screen.
PositionRight //! The right side of the screen. PositionRight //!< The right side of the screen.
}; };
/** /**
This property holds position of the panel. * @brief Returns the position of the panel. Possible values for the
Possible values for this property are described by the Position enum * return value are described by the Position enum.
**/ */
virtual Position position() const = 0; virtual Position position() const = 0;
/**
* @brief Returns the edge length of the icons that are shown on the panel
* in pixels. The icons are square.
*/
virtual int iconSize() const = 0; virtual int iconSize() const = 0;
/**
* @brief Returns the number of lines/rows of this panel.
*/
virtual int lineCount() const = 0; virtual int lineCount() const = 0;
/** /**
Helper functions for eazy direction checking. * @brief Helper function for convenient direction/alignment checking.
Retuns true if panel on the top or bottom of the screen; otherwise returns false. * @return True if the panel is on the top or the bottom of the
**/ * screen; otherwise returns false.
*/
bool isHorizontal() const { return position() == PositionBottom || position() == PositionTop; } bool isHorizontal() const { return position() == PositionBottom || position() == PositionTop; }
/** /**
Returns global screen coordinates of the panel. You no need to use mapToGlobal. * @brief Helper method that returns the global screen coordinates of the
**/ * panel, so you do not need to use QWidget::mapToGlobal() by yourself.
* @return The QRect where the panel is located in global screen
* coordinates.
*/
virtual QRect globalGometry() const = 0; virtual QRect globalGometry() const = 0;
/** /**
Helper functions for calculating global screen position of some popup window with windowSize size. * @brief Helper method for calculating the global screen position of a
If you need to show some popup window, you can use it, to get global screen position for the new window. * popup window with size windowSize.
**/ * @param absolutePos Contains the global screen coordinates where the
* popup should be appear, i.e. the point where the user has clicked.
* @param windowSize The size that the window will occupy.
* @return The global screen position where the popup window can be shown.
*/
virtual QRect calculatePopupWindowPos(const QPoint &absolutePos, const QSize &windowSize) const = 0; virtual QRect calculatePopupWindowPos(const QPoint &absolutePos, const QSize &windowSize) const = 0;
virtual QRect calculatePopupWindowPos(const ILxQtPanelPlugin *plugin, const QSize &windowSize) const = 0; /**
* @brief Helper method for calculating the global screen position of a
* popup window with size windowSize. The parameter plugin should be a
* plugin
* @param plugin Plugin that the popup window will belong to. The position
* will be calculated according to the position of the plugin in the panel.
* @param windowSize The size that the window will occupy.
* @return The global screen position where the popup window can be shown.
*/
virtual QRect calculatePopupWindowPos(const ILXQtPanelPlugin *plugin, const QSize &windowSize) const = 0;
/*!
* \brief By calling this function, a plugin (or any other object) notifies the panel
* about showing a (standalone) window/menu -> the panel needs this to avoid "hiding" in case any
* standalone window is shown. The widget/window must be shown later than this notification call because
* the panel needs to observe its show/hide/close events.
*
* \param w the window that will be shown
*
*/
virtual void willShowWindow(QWidget * w) = 0;
}; };
#endif // ILXQTPANEL_H #endif // ILXQTPANEL_H

View File

@ -30,17 +30,14 @@
#define ILXQTPANELPLUGIN_H #define ILXQTPANELPLUGIN_H
#include <QtPlugin> #include <QtPlugin>
#include <qwindowdefs.h> // For XEvent
#include <QSettings>
#include <LXQt/PluginInfo>
#include "ilxqtpanel.h" #include "ilxqtpanel.h"
#include "lxqtpanelglobals.h" #include "lxqtpanelglobals.h"
/** /**
LxQt panel plugins are standalone sharedlibraries LXQt panel plugins are standalone sharedlibraries
(*.so) located in PLUGIN_DIR (define provided by CMakeLists.txt). (*.so) located in PLUGIN_DIR (define provided by CMakeLists.txt).
Plugin for the panel is a library written on C++. One more necessary thing Plugin for the panel is a library written in C++. One more necessary thing
is a .desktop file describing this plugin. The same may be additional files, is a .desktop file describing this plugin. The same may be additional files,
like translations. Themselves plugins will be installed to like translations. Themselves plugins will be installed to
/usr/local/lib/lxqt-panel or /usr/lib/lxqt-panel (dependent on cmake option /usr/local/lib/lxqt-panel or /usr/lib/lxqt-panel (dependent on cmake option
@ -50,37 +47,39 @@ like translations. Themselves plugins will be installed to
**/ **/
class QDialog; class QDialog;
class PluginSettings;
struct LXQT_PANEL_API ILxQtPanelPluginStartupInfo namespace LXQt
{ {
ILxQtPanel *lxqtPanel; class PluginInfo;
QSettings *settings; }
const LxQt::PluginInfo *desktopFile;
struct LXQT_PANEL_API ILXQtPanelPluginStartupInfo
{
ILXQtPanel *lxqtPanel;
PluginSettings *settings;
const LXQt::PluginInfo *desktopFile;
}; };
/** \brief Base abstract class for LxQt panel widgets/plugins. /** \brief Base abstract class for LXQt panel widgets/plugins.
All plugins *must* be inherited from this one. All plugins *must* be inherited from this one.
This class provides some basic API and inherited/implemented This class provides some basic API and inherited/implemented
plugins GUIs will be responsible on the functionality itself. plugins GUIs will be responsible on the functionality itself.
See <a href=https://github.com/LXDE-Qt/lxde-qt/wiki/How-to-write-the-panel-plugin>
How to write the panel plugin</a> for more information about how to make your plugins.
**/ **/
class LXQT_PANEL_API ILxQtPanelPlugin class LXQT_PANEL_API ILXQtPanelPlugin
{ {
public: public:
/** /**
This enum describes the properties of an plugin. This enum describes the properties of a plugin.
**/ **/
enum Flag { enum Flag {
NoFlags = 0, ///< It does not have any properties set. NoFlags = 0, ///< It does not have any properties set.
PreferRightAlignment = 1, /**< The plugin is prefer right alignment (for example the clock plugin); PreferRightAlignment = 1, /**< The plugin prefers right alignment (for example the clock plugin);
otherwise plugin prefer left (like main menu). otherwise the plugin prefers left alignment (like main menu).
This flag is used only at the first start, later positions of all This flag is used only at the first start, later positions of all
plugins saved in a config, and this saved information is used. */ plugins are saved in a config, and this saved information is used. */
HaveConfigDialog = 2, ///< The plugin have a configuration dialog. HaveConfigDialog = 2, ///< The plugin have a configuration dialog.
SingleInstance = 4, ///< The plugin allows only one instance to run. SingleInstance = 4, ///< The plugin allows only one instance to run.
NeedsHandle = 8 ///< The plugin needs a handle for the context menu NeedsHandle = 8 ///< The plugin needs a handle for the context menu
@ -99,10 +98,10 @@ public:
}; };
/** /**
Constructs a ILxQtPanelPlugin object with the given startupInfo. You do not have to worry Constructs an ILXQtPanelPlugin object with the given startupInfo. You do not have to worry
about the startupInfo parameters, ILxQtPanelPlugin process the parameters yourself. about the startupInfo parameters, ILXQtPanelPlugin processes the parameters itself.
**/ **/
ILxQtPanelPlugin(const ILxQtPanelPluginStartupInfo &startupInfo): ILXQtPanelPlugin(const ILXQtPanelPluginStartupInfo &startupInfo):
mSettings(startupInfo.settings), mSettings(startupInfo.settings),
mPanel(startupInfo.lxqtPanel), mPanel(startupInfo.lxqtPanel),
mDesktopFile(startupInfo.desktopFile) mDesktopFile(startupInfo.desktopFile)
@ -111,7 +110,7 @@ public:
/** /**
Destroys the object. Destroys the object.
**/ **/
virtual ~ILxQtPanelPlugin() {} virtual ~ILXQtPanelPlugin() {}
/** /**
Returns the plugin flags. Returns the plugin flags.
@ -121,25 +120,25 @@ public:
/** /**
Returns the string that is used in the theme QSS file. Returns the string that is used in the theme QSS file.
If you retuns "WorldClock" string, theme author may write something like `#WorldClock { border: 1px solid red; }` If you return "WorldClock" string, theme author may write something like `#WorldClock { border: 1px solid red; }`
to set custom border for the your plugin. to set a custom border for your plugin.
**/ **/
virtual QString themeId() const = 0; virtual QString themeId() const = 0;
/** /**
From users point of view plugin is a some visual widget on the panel. This function retuns pointer to it. From the user's point of view, your plugin is some visual widget on the panel. This function returns a pointer to it.
This method called only once, so you are free to return pointer on class member, or create widget on the fly. This method is called only once, so you are free to return the pointer on a class member, or create the widget on the fly.
**/ **/
virtual QWidget *widget() = 0; virtual QWidget *widget() = 0;
/** /**
Returns the plugin settings dialog. Reimplement this function if your plugin has it. Returns the plugin settings dialog. Reimplement this function if your plugin has it.
The panel does not take ownership of the dialog, it would probably a good idea to set Qt::WA_DeleteOnClose The panel does not take ownership of the dialog, it is probably a good idea to set Qt::WA_DeleteOnClose
attribute for the dialog. attribute for the dialog.
The default implementation returns 0, no dialog; The default implementation returns 0, no dialog;
Note that the flags method has to return HaveConfigDialog flag. Note that the flags method has to return HaveConfigDialog flag.
To save the settings you should use a ready-to-use ILxQtPanelPlugin::settings() object. To save the settings you should use a ready-to-use ILXQtPanelPlugin::settings() object.
**/ **/
virtual QDialog *configureDialog() { return 0; } virtual QDialog *configureDialog() { return 0; }
@ -154,7 +153,7 @@ public:
/** /**
This function is called when the user activates the plugin. reason specifies the reason for activation. This function is called when the user activates the plugin. reason specifies the reason for activation.
ILxQtPanelPlugin::ActivationReason enumerates the various reasons. ILXQtPanelPlugin::ActivationReason enumerates the various reasons.
The default implementation do nothing. The default implementation do nothing.
**/ **/
@ -171,11 +170,11 @@ public:
/** /**
Returns the panel object. Returns the panel object.
**/ **/
ILxQtPanel *panel() const { return mPanel; } ILXQtPanel *panel() const { return mPanel; }
QSettings *settings() const { return mSettings; } PluginSettings *settings() const { return mSettings; }
const LxQt::PluginInfo *desktopFile() const { return mDesktopFile; } const LXQt::PluginInfo *desktopFile() const { return mDesktopFile; }
/** /**
Helper functions for calculating global screen position of some popup window with windowSize size. Helper functions for calculating global screen position of some popup window with windowSize size.
@ -186,47 +185,57 @@ public:
return mPanel->calculatePopupWindowPos(this, windowSize); return mPanel->calculatePopupWindowPos(this, windowSize);
} }
/*!
* \brief By calling this function plugin notifies the panel about showing a (standalone) window/menu.
*
* \param w the shown window
*
*/
inline void willShowWindow(QWidget * w)
{
mPanel->willShowWindow(w);
}
virtual bool isSeparate() const { return false; } virtual bool isSeparate() const { return false; }
virtual bool isExpandable() const { return false; } virtual bool isExpandable() const { return false; }
private: private:
QSettings *mSettings; PluginSettings *mSettings;
ILxQtPanel *mPanel; ILXQtPanel *mPanel;
const LxQt::PluginInfo *mDesktopFile; const LXQt::PluginInfo *mDesktopFile;
}; };
Q_DECLARE_OPERATORS_FOR_FLAGS(ILxQtPanelPlugin::Flags) Q_DECLARE_OPERATORS_FOR_FLAGS(ILXQtPanelPlugin::Flags)
/** /**
Every plugin must has the loader. You shoul only reimplement instance() method, and return your plugin. Every plugin must have the ILXQtPanelPluginLibrary loader. You should only reimplement the instance() method which should return your plugin.
Example: Example:
@code @code
class LxQtClockPluginLibrary: public QObject, public ILxQtPanelPluginLibrary class LXQtClockPluginLibrary: public QObject, public ILXQtPanelPluginLibrary
{ {
Q_OBJECT Q_OBJECT
Q_PLUGIN_METADATA(IID "lxde-qt.org/Panel/PluginInterface/3.0") Q_PLUGIN_METADATA(IID "lxde-qt.org/Panel/PluginInterface/3.0")
Q_INTERFACES(ILxQtPanelPluginLibrary) Q_INTERFACES(ILXQtPanelPluginLibrary)
public: public:
ILxQtPanelPlugin *instance(const ILxQtPanelPluginStartupInfo &startupInfo) { return new LxQtClock(startupInfo);} ILXQtPanelPlugin *instance(const ILXQtPanelPluginStartupInfo &startupInfo) { return new LXQtClock(startupInfo);}
}; };
@endcode @endcode
**/ **/
class LXQT_PANEL_API ILxQtPanelPluginLibrary class LXQT_PANEL_API ILXQtPanelPluginLibrary
{ {
public: public:
/** /**
Destroys the ILxQtPanelPluginLibrary object. Destroys the ILXQtPanelPluginLibrary object.
**/ **/
virtual ~ILxQtPanelPluginLibrary() {} virtual ~ILXQtPanelPluginLibrary() {}
/** /**
Returns the root component object of the plugin. When the library is finally unloaded, the root component will automatically be deleted. Returns the root component object of the plugin. When the library is finally unloaded, the root component will automatically be deleted.
**/ **/
virtual ILxQtPanelPlugin* instance(const ILxQtPanelPluginStartupInfo &startupInfo) const = 0; virtual ILXQtPanelPlugin* instance(const ILXQtPanelPluginStartupInfo &startupInfo) const = 0;
}; };
Q_DECLARE_INTERFACE(ILxQtPanelPluginLibrary, Q_DECLARE_INTERFACE(ILXQtPanelPluginLibrary,
"lxde-qt.org/Panel/PluginInterface/3.0") "lxde-qt.org/Panel/PluginInterface/3.0")
#endif // ILXQTPANELPLUGIN_H #endif // ILXQTPANELPLUGIN_H

View File

@ -35,7 +35,7 @@
#include "popupmenu.h" #include "popupmenu.h"
#include "plugin.h" #include "plugin.h"
#include "panelpluginsmodel.h" #include "panelpluginsmodel.h"
#include <LXQt/Settings> #include "windownotifier.h"
#include <LXQt/PluginInfo> #include <LXQt/PluginInfo>
#include <QScreen> #include <QScreen>
@ -45,6 +45,7 @@
#include <QString> #include <QString>
#include <QDesktopWidget> #include <QDesktopWidget>
#include <QMenu> #include <QMenu>
#include <QMessageBox>
#include <XdgIcon> #include <XdgIcon>
#include <XdgDirs> #include <XdgDirs>
@ -72,18 +73,20 @@
#define CFG_KEY_OPACITY "opacity" #define CFG_KEY_OPACITY "opacity"
#define CFG_KEY_PLUGINS "plugins" #define CFG_KEY_PLUGINS "plugins"
#define CFG_KEY_HIDABLE "hidable" #define CFG_KEY_HIDABLE "hidable"
#define CFG_KEY_ANIMATION "animation-duration"
#define CFG_KEY_LOCKPANEL "lockPanel"
/************************************************ /************************************************
Returns the Position by the string. Returns the Position by the string.
String is one of "Top", "Left", "Bottom", "Right", string is not case sensitive. String is one of "Top", "Left", "Bottom", "Right", string is not case sensitive.
If the string is not correct, returns defaultValue. If the string is not correct, returns defaultValue.
************************************************/ ************************************************/
ILxQtPanel::Position LxQtPanel::strToPosition(const QString& str, ILxQtPanel::Position defaultValue) ILXQtPanel::Position LXQtPanel::strToPosition(const QString& str, ILXQtPanel::Position defaultValue)
{ {
if (str.toUpper() == "TOP") return LxQtPanel::PositionTop; if (str.toUpper() == "TOP") return LXQtPanel::PositionTop;
if (str.toUpper() == "LEFT") return LxQtPanel::PositionLeft; if (str.toUpper() == "LEFT") return LXQtPanel::PositionLeft;
if (str.toUpper() == "RIGHT") return LxQtPanel::PositionRight; if (str.toUpper() == "RIGHT") return LXQtPanel::PositionRight;
if (str.toUpper() == "BOTTOM") return LxQtPanel::PositionBottom; if (str.toUpper() == "BOTTOM") return LXQtPanel::PositionBottom;
return defaultValue; return defaultValue;
} }
@ -91,17 +94,17 @@ ILxQtPanel::Position LxQtPanel::strToPosition(const QString& str, ILxQtPanel::Po
/************************************************ /************************************************
Return string representation of the position Return string representation of the position
************************************************/ ************************************************/
QString LxQtPanel::positionToStr(ILxQtPanel::Position position) QString LXQtPanel::positionToStr(ILXQtPanel::Position position)
{ {
switch (position) switch (position)
{ {
case LxQtPanel::PositionTop: case LXQtPanel::PositionTop:
return QString("Top"); return QString("Top");
case LxQtPanel::PositionLeft: case LXQtPanel::PositionLeft:
return QString("Left"); return QString("Left");
case LxQtPanel::PositionRight: case LXQtPanel::PositionRight:
return QString("Right"); return QString("Right");
case LxQtPanel::PositionBottom: case LXQtPanel::PositionBottom:
return QString("Bottom"); return QString("Bottom");
} }
@ -112,20 +115,32 @@ QString LxQtPanel::positionToStr(ILxQtPanel::Position position)
/************************************************ /************************************************
************************************************/ ************************************************/
LxQtPanel::LxQtPanel(const QString &configGroup, QWidget *parent) : LXQtPanel::LXQtPanel(const QString &configGroup, LXQt::Settings *settings, QWidget *parent) :
QFrame(parent), QFrame(parent),
mSettings(settings),
mConfigGroup(configGroup), mConfigGroup(configGroup),
mPlugins{nullptr}, mPlugins{nullptr},
mStandaloneWindows{new WindowNotifier},
mPanelSize(0), mPanelSize(0),
mIconSize(0), mIconSize(0),
mLineCount(0), mLineCount(0),
mLength(0), mLength(0),
mAlignment(AlignmentLeft), mAlignment(AlignmentLeft),
mPosition(ILxQtPanel::PositionBottom), mPosition(ILXQtPanel::PositionBottom),
mScreenNum(0), //whatever (avoid conditional on uninitialized value) mScreenNum(0), //whatever (avoid conditional on uninitialized value)
mActualScreenNum(0),
mHidable(false), mHidable(false),
mHidden(false) mHidden(false),
mAnimationTime(0),
mAnimation(nullptr),
mLockPanel(false)
{ {
//You can find information about the flags and widget attributes in your
//Qt documentation or at http://doc.qt.io/qt-5/qt.html
//Qt::FramelessWindowHint = Produces a borderless window. The user cannot
//move or resize a borderless window via the window system. On X11, ...
//Qt::WindowStaysOnTopHint = Informs the window system that the window
//should stay on top of all other windows. Note that on ...
Qt::WindowFlags flags = Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint; Qt::WindowFlags flags = Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint;
// NOTE: by PCMan: // NOTE: by PCMan:
@ -141,24 +156,29 @@ LxQtPanel::LxQtPanel(const QString &configGroup, QWidget *parent) :
flags |= Qt::WindowDoesNotAcceptFocus; flags |= Qt::WindowDoesNotAcceptFocus;
setWindowFlags(flags); setWindowFlags(flags);
//Adds _NET_WM_WINDOW_TYPE_DOCK to the window's _NET_WM_WINDOW_TYPE X11 window property. See http://standards.freedesktop.org/wm-spec/ for more details.
setAttribute(Qt::WA_X11NetWmWindowTypeDock); setAttribute(Qt::WA_X11NetWmWindowTypeDock);
//Enables tooltips for inactive windows.
setAttribute(Qt::WA_AlwaysShowToolTips); setAttribute(Qt::WA_AlwaysShowToolTips);
//Indicates that the widget should have a translucent background, i.e., any non-opaque regions of the widgets will be translucent because the widget will have an alpha channel. Setting this ...
setAttribute(Qt::WA_TranslucentBackground); setAttribute(Qt::WA_TranslucentBackground);
//Allows data from drag and drop operations to be dropped onto the widget (see QWidget::setAcceptDrops()).
setAttribute(Qt::WA_AcceptDrops); setAttribute(Qt::WA_AcceptDrops);
setWindowTitle("LxQt Panel"); setWindowTitle("LXQt Panel");
setObjectName(QString("LxQtPanel %1").arg(configGroup)); setObjectName(QString("LXQtPanel %1").arg(configGroup));
LxQtPanelWidget = new QFrame(this); //LXQtPanel (inherits QFrame) -> lav (QGridLayout) -> LXQtPanelWidget (QFrame) -> LXQtPanelLayout
LxQtPanelWidget->setObjectName("BackgroundWidget"); LXQtPanelWidget = new QFrame(this);
LXQtPanelWidget->setObjectName("BackgroundWidget");
QGridLayout* lav = new QGridLayout(); QGridLayout* lav = new QGridLayout();
lav->setMargin(0); lav->setContentsMargins(0, 0, 0, 0);
setLayout(lav); setLayout(lav);
this->layout()->addWidget(LxQtPanelWidget); this->layout()->addWidget(LXQtPanelWidget);
mLayout = new LxQtPanelLayout(LxQtPanelWidget); mLayout = new LXQtPanelLayout(LXQtPanelWidget);
connect(mLayout, &LxQtPanelLayout::pluginMoved, this, &LxQtPanel::pluginMoved); connect(mLayout, &LXQtPanelLayout::pluginMoved, this, &LXQtPanel::pluginMoved);
LxQtPanelWidget->setLayout(mLayout); LXQtPanelWidget->setLayout(mLayout);
mLayout->setLineCount(mLineCount); mLayout->setLineCount(mLineCount);
mDelaySave.setSingleShot(true); mDelaySave.setSingleShot(true);
@ -169,24 +189,33 @@ LxQtPanel::LxQtPanel(const QString &configGroup, QWidget *parent) :
mHideTimer.setInterval(PANEL_HIDE_DELAY); mHideTimer.setInterval(PANEL_HIDE_DELAY);
connect(&mHideTimer, SIGNAL(timeout()), this, SLOT(hidePanelWork())); connect(&mHideTimer, SIGNAL(timeout()), this, SLOT(hidePanelWork()));
connect(QApplication::desktop(), SIGNAL(workAreaResized(int)), this, SLOT(realign())); connect(QApplication::desktop(), &QDesktopWidget::resized, this, &LXQtPanel::ensureVisible);
connect(QApplication::desktop(), SIGNAL(screenCountChanged(int)), this, SLOT(ensureVisible())); connect(QApplication::desktop(), &QDesktopWidget::screenCountChanged, this, &LXQtPanel::ensureVisible);
connect(LxQt::Settings::globalSettings(), SIGNAL(settingsChanged()), this, SLOT(update()));
// connecting to QDesktopWidget::workAreaResized shouldn't be necessary,
// as we've already connceted to QDesktopWidget::resized, but it actually
// is. Read mode on https://github.com/lxde/lxqt-panel/pull/310
connect(QApplication::desktop(), &QDesktopWidget::workAreaResized,
this, &LXQtPanel::ensureVisible);
connect(LXQt::Settings::globalSettings(), SIGNAL(settingsChanged()), this, SLOT(update()));
connect(lxqtApp, SIGNAL(themeChanged()), this, SLOT(realign())); connect(lxqtApp, SIGNAL(themeChanged()), this, SLOT(realign()));
LxQtPanelApplication *app = reinterpret_cast<LxQtPanelApplication*>(qApp); connect(mStandaloneWindows.data(), &WindowNotifier::firstShown, [this] { showPanel(true); });
mSettings = app->settings(); connect(mStandaloneWindows.data(), &WindowNotifier::lastHidden, this, &LXQtPanel::hidePanel);
readSettings(); readSettings();
// the old position might be on a visible screen
ensureVisible(); ensureVisible();
loadPlugins(); loadPlugins();
show(); show();
// show it the first first time, despite setting // show it the first time, despite setting
if (mHidable) if (mHidable)
{ {
showPanel(); showPanel(false);
QTimer::singleShot(PANEL_HIDE_FIRST_TIME, this, SLOT(hidePanel())); QTimer::singleShot(PANEL_HIDE_FIRST_TIME, this, SLOT(hidePanel()));
} }
} }
@ -194,7 +223,7 @@ LxQtPanel::LxQtPanel(const QString &configGroup, QWidget *parent) :
/************************************************ /************************************************
************************************************/ ************************************************/
void LxQtPanel::readSettings() void LXQtPanel::readSettings()
{ {
// Read settings ...................................... // Read settings ......................................
mSettings->beginGroup(mConfigGroup); mSettings->beginGroup(mConfigGroup);
@ -204,6 +233,8 @@ void LxQtPanel::readSettings()
mHidable = mSettings->value(CFG_KEY_HIDABLE, mHidable).toBool(); mHidable = mSettings->value(CFG_KEY_HIDABLE, mHidable).toBool();
mHidden = mHidable; mHidden = mHidable;
mAnimationTime = mSettings->value(CFG_KEY_ANIMATION, mAnimationTime).toInt();
// By default we are using size & count from theme. // By default we are using size & count from theme.
setPanelSize(mSettings->value(CFG_KEY_PANELSIZE, PANEL_DEFAULT_SIZE).toInt(), false); setPanelSize(mSettings->value(CFG_KEY_PANELSIZE, PANEL_DEFAULT_SIZE).toInt(), false);
setIconSize(mSettings->value(CFG_KEY_ICONSIZE, PANEL_DEFAULT_ICON_SIZE).toInt(), false); setIconSize(mSettings->value(CFG_KEY_ICONSIZE, PANEL_DEFAULT_ICON_SIZE).toInt(), false);
@ -213,7 +244,8 @@ void LxQtPanel::readSettings()
mSettings->value(CFG_KEY_PERCENT, true).toBool(), mSettings->value(CFG_KEY_PERCENT, true).toBool(),
false); false);
setPosition(mSettings->value(CFG_KEY_SCREENNUM, QApplication::desktop()->primaryScreen()).toInt(), mScreenNum = mSettings->value(CFG_KEY_SCREENNUM, QApplication::desktop()->primaryScreen()).toInt();
setPosition(mScreenNum,
strToPosition(mSettings->value(CFG_KEY_POSITION).toString(), PositionBottom), strToPosition(mSettings->value(CFG_KEY_POSITION).toString(), PositionBottom),
false); false);
@ -232,6 +264,8 @@ void LxQtPanel::readSettings()
if (!image.isEmpty()) if (!image.isEmpty())
setBackgroundImage(image, false); setBackgroundImage(image, false);
mLockPanel = mSettings->value(CFG_KEY_LOCKPANEL, false).toBool();
mSettings->endGroup(); mSettings->endGroup();
} }
@ -239,7 +273,7 @@ void LxQtPanel::readSettings()
/************************************************ /************************************************
************************************************/ ************************************************/
void LxQtPanel::saveSettings(bool later) void LXQtPanel::saveSettings(bool later)
{ {
mDelaySave.stop(); mDelaySave.stop();
if (later) if (later)
@ -271,6 +305,9 @@ void LxQtPanel::saveSettings(bool later)
mSettings->setValue(CFG_KEY_OPACITY, mOpacity); mSettings->setValue(CFG_KEY_OPACITY, mOpacity);
mSettings->setValue(CFG_KEY_HIDABLE, mHidable); mSettings->setValue(CFG_KEY_HIDABLE, mHidable);
mSettings->setValue(CFG_KEY_ANIMATION, mAnimationTime);
mSettings->setValue(CFG_KEY_LOCKPANEL, mLockPanel);
mSettings->endGroup(); mSettings->endGroup();
} }
@ -279,22 +316,26 @@ void LxQtPanel::saveSettings(bool later)
/************************************************ /************************************************
************************************************/ ************************************************/
void LxQtPanel::ensureVisible() void LXQtPanel::ensureVisible()
{ {
if (!canPlacedOn(mScreenNum, mPosition)) if (!canPlacedOn(mScreenNum, mPosition))
setPosition(findAvailableScreen(mPosition), mPosition, true); setPosition(findAvailableScreen(mPosition), mPosition, false);
else
mActualScreenNum = mScreenNum;
// the screen size might be changed, let's update the reserved screen space. // the screen size might be changed
updateWmStrut(); realign();
} }
/************************************************ /************************************************
************************************************/ ************************************************/
LxQtPanel::~LxQtPanel() LXQtPanel::~LXQtPanel()
{ {
mLayout->setEnabled(false); mLayout->setEnabled(false);
delete mAnimation;
delete mConfigDialog.data();
// do not save settings because of "user deleted panel" functionality saveSettings(); // do not save settings because of "user deleted panel" functionality saveSettings();
} }
@ -302,7 +343,7 @@ LxQtPanel::~LxQtPanel()
/************************************************ /************************************************
************************************************/ ************************************************/
void LxQtPanel::show() void LXQtPanel::show()
{ {
QWidget::show(); QWidget::show();
KWindowSystem::setOnDesktop(effectiveWinId(), NET::OnAllDesktops); KWindowSystem::setOnDesktop(effectiveWinId(), NET::OnAllDesktops);
@ -325,18 +366,18 @@ QStringList pluginDesktopDirs()
/************************************************ /************************************************
************************************************/ ************************************************/
void LxQtPanel::loadPlugins() void LXQtPanel::loadPlugins()
{ {
QString names_key(mConfigGroup); QString names_key(mConfigGroup);
names_key += '/'; names_key += '/';
names_key += QLatin1String(CFG_KEY_PLUGINS); names_key += QLatin1String(CFG_KEY_PLUGINS);
mPlugins.reset(new PanelPluginsModel(this, names_key, pluginDesktopDirs())); mPlugins.reset(new PanelPluginsModel(this, names_key, pluginDesktopDirs()));
connect(mPlugins.data(), &PanelPluginsModel::pluginAdded, mLayout, &LxQtPanelLayout::addPlugin); connect(mPlugins.data(), &PanelPluginsModel::pluginAdded, mLayout, &LXQtPanelLayout::addPlugin);
connect(mPlugins.data(), &PanelPluginsModel::pluginMovedUp, mLayout, &LxQtPanelLayout::moveUpPlugin); connect(mPlugins.data(), &PanelPluginsModel::pluginMovedUp, mLayout, &LXQtPanelLayout::moveUpPlugin);
//reemit signals //reemit signals
connect(mPlugins.data(), &PanelPluginsModel::pluginAdded, this, &LxQtPanel::pluginAdded); connect(mPlugins.data(), &PanelPluginsModel::pluginAdded, this, &LXQtPanel::pluginAdded);
connect(mPlugins.data(), &PanelPluginsModel::pluginRemoved, this, &LxQtPanel::pluginRemoved); connect(mPlugins.data(), &PanelPluginsModel::pluginRemoved, this, &LXQtPanel::pluginRemoved);
for (auto const & plugin : mPlugins->plugins()) for (auto const & plugin : mPlugins->plugins())
mLayout->addPlugin(plugin); mLayout->addPlugin(plugin);
@ -345,20 +386,20 @@ void LxQtPanel::loadPlugins()
/************************************************ /************************************************
************************************************/ ************************************************/
int LxQtPanel::getReserveDimension() int LXQtPanel::getReserveDimension()
{ {
return mHidable ? PANEL_HIDE_SIZE : qMax(PANEL_MINIMUM_SIZE, mPanelSize); return mHidable ? PANEL_HIDE_SIZE : qMax(PANEL_MINIMUM_SIZE, mPanelSize);
} }
void LxQtPanel::setPanelGeometry() void LXQtPanel::setPanelGeometry(bool animate)
{ {
const QRect currentScreen = QApplication::desktop()->screenGeometry(mScreenNum); const QRect currentScreen = QApplication::desktop()->screenGeometry(mActualScreenNum);
QRect rect; QRect rect;
if (isHorizontal()) if (isHorizontal())
{ {
// Horiz panel *************************** // Horiz panel ***************************
rect.setHeight(mHidden ? PANEL_HIDE_SIZE : qMax(PANEL_MINIMUM_SIZE, mPanelSize)); rect.setHeight(qMax(PANEL_MINIMUM_SIZE, mPanelSize));
if (mLengthInPercents) if (mLengthInPercents)
rect.setWidth(currentScreen.width() * mLength / 100.0); rect.setWidth(currentScreen.width() * mLength / 100.0);
else else
@ -374,29 +415,39 @@ void LxQtPanel::setPanelGeometry()
// Horiz ...................... // Horiz ......................
switch (mAlignment) switch (mAlignment)
{ {
case LxQtPanel::AlignmentLeft: case LXQtPanel::AlignmentLeft:
rect.moveLeft(currentScreen.left()); rect.moveLeft(currentScreen.left());
break; break;
case LxQtPanel::AlignmentCenter: case LXQtPanel::AlignmentCenter:
rect.moveCenter(currentScreen.center()); rect.moveCenter(currentScreen.center());
break; break;
case LxQtPanel::AlignmentRight: case LXQtPanel::AlignmentRight:
rect.moveRight(currentScreen.right()); rect.moveRight(currentScreen.right());
break; break;
} }
// Vert ....................... // Vert .......................
if (mPosition == ILxQtPanel::PositionTop) if (mPosition == ILXQtPanel::PositionTop)
{
if (mHidden)
rect.moveBottom(currentScreen.top() + PANEL_HIDE_SIZE - 1);
else
rect.moveTop(currentScreen.top()); rect.moveTop(currentScreen.top());
}
else
{
if (mHidden)
rect.moveTop(currentScreen.bottom() - PANEL_HIDE_SIZE + 1);
else else
rect.moveBottom(currentScreen.bottom()); rect.moveBottom(currentScreen.bottom());
} }
}
else else
{ {
// Vert panel *************************** // Vert panel ***************************
rect.setWidth(mHidden ? PANEL_HIDE_SIZE : qMax(PANEL_MINIMUM_SIZE, mPanelSize)); rect.setWidth(qMax(PANEL_MINIMUM_SIZE, mPanelSize));
if (mLengthInPercents) if (mLengthInPercents)
rect.setHeight(currentScreen.height() * mLength / 100.0); rect.setHeight(currentScreen.height() * mLength / 100.0);
else else
@ -412,34 +463,87 @@ void LxQtPanel::setPanelGeometry()
// Vert ....................... // Vert .......................
switch (mAlignment) switch (mAlignment)
{ {
case LxQtPanel::AlignmentLeft: case LXQtPanel::AlignmentLeft:
rect.moveTop(currentScreen.top()); rect.moveTop(currentScreen.top());
break; break;
case LxQtPanel::AlignmentCenter: case LXQtPanel::AlignmentCenter:
rect.moveCenter(currentScreen.center()); rect.moveCenter(currentScreen.center());
break; break;
case LxQtPanel::AlignmentRight: case LXQtPanel::AlignmentRight:
rect.moveBottom(currentScreen.bottom()); rect.moveBottom(currentScreen.bottom());
break; break;
} }
// Horiz ...................... // Horiz ......................
if (mPosition == ILxQtPanel::PositionLeft) if (mPosition == ILXQtPanel::PositionLeft)
{
if (mHidden)
rect.moveRight(currentScreen.left() + PANEL_HIDE_SIZE - 1);
else
rect.moveLeft(currentScreen.left()); rect.moveLeft(currentScreen.left());
}
else
{
if (mHidden)
rect.moveLeft(currentScreen.right() - PANEL_HIDE_SIZE + 1);
else else
rect.moveRight(currentScreen.right()); rect.moveRight(currentScreen.right());
} }
mLayout->setMargin(mHidden ? PANEL_HIDE_MARGIN : 0); }
if (rect != geometry()) if (rect != geometry())
{ {
setGeometry(rect);
setFixedSize(rect.size()); setFixedSize(rect.size());
if (animate)
{
if (mAnimation == nullptr)
{
mAnimation = new QPropertyAnimation(this, "geometry");
mAnimation->setEasingCurve(QEasingCurve::Linear);
//Note: for hiding, the margins are set after animation is finished
connect(mAnimation, &QAbstractAnimation::finished, [this] { if (mHidden) setMargins(); });
}
mAnimation->setDuration(mAnimationTime);
mAnimation->setStartValue(geometry());
mAnimation->setEndValue(rect);
//Note: for showing-up, the margins are removed instantly
if (!mHidden)
setMargins();
mAnimation->start();
}
else
{
setMargins();
setGeometry(rect);
}
} }
} }
void LxQtPanel::realign() void LXQtPanel::setMargins()
{
if (mHidden)
{
if (isHorizontal())
{
if (mPosition == ILXQtPanel::PositionTop)
mLayout->setContentsMargins(0, 0, 0, PANEL_HIDE_SIZE);
else
mLayout->setContentsMargins(0, PANEL_HIDE_SIZE, 0, 0);
}
else
{
if (mPosition == ILXQtPanel::PositionLeft)
mLayout->setContentsMargins(0, 0, PANEL_HIDE_SIZE, 0);
else
mLayout->setContentsMargins(PANEL_HIDE_SIZE, 0, 0, 0);
}
}
else
mLayout->setContentsMargins(0, 0, 0, 0);
}
void LXQtPanel::realign()
{ {
if (!isVisible()) if (!isVisible())
return; return;
@ -464,12 +568,13 @@ void LxQtPanel::realign()
// Update the _NET_WM_PARTIAL_STRUT and _NET_WM_STRUT properties for the window // Update the _NET_WM_PARTIAL_STRUT and _NET_WM_STRUT properties for the window
void LxQtPanel::updateWmStrut() void LXQtPanel::updateWmStrut()
{ {
WId wid = effectiveWinId(); WId wid = effectiveWinId();
if(wid == 0 || !isVisible()) if(wid == 0 || !isVisible())
return; return;
const QRect wholeScreen = QApplication::desktop()->geometry();
const QRect rect = geometry(); const QRect rect = geometry();
// NOTE: http://standards.freedesktop.org/wm-spec/wm-spec-latest.html // NOTE: http://standards.freedesktop.org/wm-spec/wm-spec-latest.html
// Quote from the EWMH spec: " Note that the strut is relative to the screen edge, and not the edge of the xinerama monitor." // Quote from the EWMH spec: " Note that the strut is relative to the screen edge, and not the edge of the xinerama monitor."
@ -478,27 +583,27 @@ void LxQtPanel::updateWmStrut()
// At least openbox is implemented like this. // At least openbox is implemented like this.
switch (mPosition) switch (mPosition)
{ {
case LxQtPanel::PositionTop: case LXQtPanel::PositionTop:
KWindowSystem::setExtendedStrut(wid, KWindowSystem::setExtendedStrut(wid,
/* Left */ 0, 0, 0, /* Left */ 0, 0, 0,
/* Right */ 0, 0, 0, /* Right */ 0, 0, 0,
/* Top */ getReserveDimension(), rect.left(), rect.right(), /* Top */ rect.top() + getReserveDimension(), rect.left(), rect.right(),
/* Bottom */ 0, 0, 0 /* Bottom */ 0, 0, 0
); );
break; break;
case LxQtPanel::PositionBottom: case LXQtPanel::PositionBottom:
KWindowSystem::setExtendedStrut(wid, KWindowSystem::setExtendedStrut(wid,
/* Left */ 0, 0, 0, /* Left */ 0, 0, 0,
/* Right */ 0, 0, 0, /* Right */ 0, 0, 0,
/* Top */ 0, 0, 0, /* Top */ 0, 0, 0,
/* Bottom */ getReserveDimension(), rect.left(), rect.right() /* Bottom */ wholeScreen.bottom() - rect.bottom() + getReserveDimension(), rect.left(), rect.right()
); );
break; break;
case LxQtPanel::PositionLeft: case LXQtPanel::PositionLeft:
KWindowSystem::setExtendedStrut(wid, KWindowSystem::setExtendedStrut(wid,
/* Left */ getReserveDimension(), rect.top(), rect.bottom(), /* Left */ rect.left() + getReserveDimension(), rect.top(), rect.bottom(),
/* Right */ 0, 0, 0, /* Right */ 0, 0, 0,
/* Top */ 0, 0, 0, /* Top */ 0, 0, 0,
/* Bottom */ 0, 0, 0 /* Bottom */ 0, 0, 0
@ -506,10 +611,10 @@ void LxQtPanel::updateWmStrut()
break; break;
case LxQtPanel::PositionRight: case LXQtPanel::PositionRight:
KWindowSystem::setExtendedStrut(wid, KWindowSystem::setExtendedStrut(wid,
/* Left */ 0, 0, 0, /* Left */ 0, 0, 0,
/* Right */ getReserveDimension(), rect.top(), rect.bottom(), /* Right */ wholeScreen.right() - rect.right() + getReserveDimension(), rect.top(), rect.bottom(),
/* Top */ 0, 0, 0, /* Top */ 0, 0, 0,
/* Bottom */ 0, 0, 0 /* Bottom */ 0, 0, 0
); );
@ -520,34 +625,34 @@ void LxQtPanel::updateWmStrut()
/************************************************ /************************************************
The panel can't be placed on boundary of two displays. The panel can't be placed on boundary of two displays.
This function checks, is the panel can be placed on the display This function checks if the panel can be placed on the display
@displayNum on @position. @screenNum on @position.
************************************************/ ************************************************/
bool LxQtPanel::canPlacedOn(int screenNum, LxQtPanel::Position position) bool LXQtPanel::canPlacedOn(int screenNum, LXQtPanel::Position position)
{ {
QDesktopWidget* dw = QApplication::desktop(); QDesktopWidget* dw = QApplication::desktop();
switch (position) switch (position)
{ {
case LxQtPanel::PositionTop: case LXQtPanel::PositionTop:
for (int i = 0; i < dw->screenCount(); ++i) for (int i = 0; i < dw->screenCount(); ++i)
if (dw->screenGeometry(i).bottom() < dw->screenGeometry(screenNum).top()) if (dw->screenGeometry(i).bottom() < dw->screenGeometry(screenNum).top())
return false; return false;
return true; return true;
case LxQtPanel::PositionBottom: case LXQtPanel::PositionBottom:
for (int i = 0; i < dw->screenCount(); ++i) for (int i = 0; i < dw->screenCount(); ++i)
if (dw->screenGeometry(i).top() > dw->screenGeometry(screenNum).bottom()) if (dw->screenGeometry(i).top() > dw->screenGeometry(screenNum).bottom())
return false; return false;
return true; return true;
case LxQtPanel::PositionLeft: case LXQtPanel::PositionLeft:
for (int i = 0; i < dw->screenCount(); ++i) for (int i = 0; i < dw->screenCount(); ++i)
if (dw->screenGeometry(i).right() < dw->screenGeometry(screenNum).left()) if (dw->screenGeometry(i).right() < dw->screenGeometry(screenNum).left())
return false; return false;
return true; return true;
case LxQtPanel::PositionRight: case LXQtPanel::PositionRight:
for (int i = 0; i < dw->screenCount(); ++i) for (int i = 0; i < dw->screenCount(); ++i)
if (dw->screenGeometry(i).left() > dw->screenGeometry(screenNum).right()) if (dw->screenGeometry(i).left() > dw->screenGeometry(screenNum).right())
return false; return false;
@ -561,7 +666,7 @@ bool LxQtPanel::canPlacedOn(int screenNum, LxQtPanel::Position position)
/************************************************ /************************************************
************************************************/ ************************************************/
int LxQtPanel::findAvailableScreen(LxQtPanel::Position position) int LXQtPanel::findAvailableScreen(LXQtPanel::Position position)
{ {
int current = mScreenNum; int current = mScreenNum;
@ -580,12 +685,13 @@ int LxQtPanel::findAvailableScreen(LxQtPanel::Position position)
/************************************************ /************************************************
************************************************/ ************************************************/
void LxQtPanel::showConfigDialog() void LXQtPanel::showConfigDialog()
{ {
if (mConfigDialog.isNull()) if (mConfigDialog.isNull())
mConfigDialog = new ConfigPanelDialog(this, nullptr /*make it top level window*/); mConfigDialog = new ConfigPanelDialog(this, nullptr /*make it top level window*/);
mConfigDialog->showConfigPanelPage(); mConfigDialog->showConfigPanelPage();
mStandaloneWindows->observeWindow(mConfigDialog.data());
mConfigDialog->show(); mConfigDialog->show();
mConfigDialog->raise(); mConfigDialog->raise();
mConfigDialog->activateWindow(); mConfigDialog->activateWindow();
@ -599,12 +705,13 @@ void LxQtPanel::showConfigDialog()
/************************************************ /************************************************
************************************************/ ************************************************/
void LxQtPanel::showAddPluginDialog() void LXQtPanel::showAddPluginDialog()
{ {
if (mConfigDialog.isNull()) if (mConfigDialog.isNull())
mConfigDialog = new ConfigPanelDialog(this, nullptr /*make it top level window*/); mConfigDialog = new ConfigPanelDialog(this, nullptr /*make it top level window*/);
mConfigDialog->showConfigPluginsPage(); mConfigDialog->showConfigPluginsPage();
mStandaloneWindows->observeWindow(mConfigDialog.data());
mConfigDialog->show(); mConfigDialog->show();
mConfigDialog->raise(); mConfigDialog->raise();
mConfigDialog->activateWindow(); mConfigDialog->activateWindow();
@ -618,16 +725,16 @@ void LxQtPanel::showAddPluginDialog()
/************************************************ /************************************************
************************************************/ ************************************************/
void LxQtPanel::updateStyleSheet() void LXQtPanel::updateStyleSheet()
{ {
QStringList sheet; QStringList sheet;
sheet << QString("Plugin > QAbstractButton, LxQtTray { qproperty-iconSize: %1px %1px; }").arg(mIconSize); sheet << QString("Plugin > QAbstractButton, LXQtTray { qproperty-iconSize: %1px %1px; }").arg(mIconSize);
sheet << QString("Plugin > * > QAbstractButton, TrayIcon { qproperty-iconSize: %1px %1px; }").arg(mIconSize); sheet << QString("Plugin > * > QAbstractButton, TrayIcon { qproperty-iconSize: %1px %1px; }").arg(mIconSize);
if (mFontColor.isValid()) if (mFontColor.isValid())
sheet << QString("Plugin * { color: " + mFontColor.name() + "; }"); sheet << QString("Plugin * { color: " + mFontColor.name() + "; }");
QString object = LxQtPanelWidget->objectName(); QString object = LXQtPanelWidget->objectName();
if (mBackgroundColor.isValid()) if (mBackgroundColor.isValid())
{ {
@ -636,11 +743,11 @@ void LxQtPanel::updateStyleSheet()
.arg(mBackgroundColor.green()) .arg(mBackgroundColor.green())
.arg(mBackgroundColor.blue()) .arg(mBackgroundColor.blue())
.arg((float) mOpacity / 100); .arg((float) mOpacity / 100);
sheet << QString("LxQtPanel #BackgroundWidget { background-color: rgba(" + color + "); }"); sheet << QString("LXQtPanel #BackgroundWidget { background-color: rgba(" + color + "); }");
} }
if (QFileInfo(mBackgroundImage).exists()) if (QFileInfo(mBackgroundImage).exists())
sheet << QString("LxQtPanel #BackgroundWidget { background-image: url('" + mBackgroundImage + "');}"); sheet << QString("LXQtPanel #BackgroundWidget { background-image: url('" + mBackgroundImage + "');}");
setStyleSheet(sheet.join("\n")); setStyleSheet(sheet.join("\n"));
} }
@ -650,7 +757,7 @@ void LxQtPanel::updateStyleSheet()
/************************************************ /************************************************
************************************************/ ************************************************/
void LxQtPanel::setPanelSize(int value, bool save) void LXQtPanel::setPanelSize(int value, bool save)
{ {
if (mPanelSize != value) if (mPanelSize != value)
{ {
@ -667,7 +774,7 @@ void LxQtPanel::setPanelSize(int value, bool save)
/************************************************ /************************************************
************************************************/ ************************************************/
void LxQtPanel::setIconSize(int value, bool save) void LXQtPanel::setIconSize(int value, bool save)
{ {
if (mIconSize != value) if (mIconSize != value)
{ {
@ -686,7 +793,7 @@ void LxQtPanel::setIconSize(int value, bool save)
/************************************************ /************************************************
************************************************/ ************************************************/
void LxQtPanel::setLineCount(int value, bool save) void LXQtPanel::setLineCount(int value, bool save)
{ {
if (mLineCount != value) if (mLineCount != value)
{ {
@ -706,7 +813,7 @@ void LxQtPanel::setLineCount(int value, bool save)
/************************************************ /************************************************
************************************************/ ************************************************/
void LxQtPanel::setLength(int length, bool inPercents, bool save) void LXQtPanel::setLength(int length, bool inPercents, bool save)
{ {
if (mLength == length && if (mLength == length &&
mLengthInPercents == inPercents) mLengthInPercents == inPercents)
@ -725,18 +832,21 @@ void LxQtPanel::setLength(int length, bool inPercents, bool save)
/************************************************ /************************************************
************************************************/ ************************************************/
void LxQtPanel::setPosition(int screen, ILxQtPanel::Position position, bool save) void LXQtPanel::setPosition(int screen, ILXQtPanel::Position position, bool save)
{ {
if (mScreenNum == screen && if (mScreenNum == screen &&
mPosition == position) mPosition == position)
return; return;
mScreenNum = screen; mActualScreenNum = screen;
mPosition = position; mPosition = position;
mLayout->setPosition(mPosition); mLayout->setPosition(mPosition);
if (save) if (save)
{
mScreenNum = screen;
saveSettings(true); saveSettings(true);
}
// Qt 5 adds a new class QScreen and add API for setting the screen of a QWindow. // Qt 5 adds a new class QScreen and add API for setting the screen of a QWindow.
// so we had better use it. However, without this, our program should still work // so we had better use it. However, without this, our program should still work
@ -766,7 +876,7 @@ void LxQtPanel::setPosition(int screen, ILxQtPanel::Position position, bool save
/************************************************ /************************************************
* *
************************************************/ ************************************************/
void LxQtPanel::setAlignment(Alignment value, bool save) void LXQtPanel::setAlignment(Alignment value, bool save)
{ {
if (mAlignment == value) if (mAlignment == value)
return; return;
@ -782,7 +892,7 @@ void LxQtPanel::setAlignment(Alignment value, bool save)
/************************************************ /************************************************
* *
************************************************/ ************************************************/
void LxQtPanel::setFontColor(QColor color, bool save) void LXQtPanel::setFontColor(QColor color, bool save)
{ {
mFontColor = color; mFontColor = color;
updateStyleSheet(); updateStyleSheet();
@ -794,7 +904,7 @@ void LxQtPanel::setFontColor(QColor color, bool save)
/************************************************ /************************************************
************************************************/ ************************************************/
void LxQtPanel::setBackgroundColor(QColor color, bool save) void LXQtPanel::setBackgroundColor(QColor color, bool save)
{ {
mBackgroundColor = color; mBackgroundColor = color;
updateStyleSheet(); updateStyleSheet();
@ -806,7 +916,7 @@ void LxQtPanel::setBackgroundColor(QColor color, bool save)
/************************************************ /************************************************
************************************************/ ************************************************/
void LxQtPanel::setBackgroundImage(QString path, bool save) void LXQtPanel::setBackgroundImage(QString path, bool save)
{ {
mBackgroundImage = path; mBackgroundImage = path;
updateStyleSheet(); updateStyleSheet();
@ -819,7 +929,7 @@ void LxQtPanel::setBackgroundImage(QString path, bool save)
/************************************************ /************************************************
* *
************************************************/ ************************************************/
void LxQtPanel::setOpacity(int opacity, bool save) void LXQtPanel::setOpacity(int opacity, bool save)
{ {
mOpacity = opacity; mOpacity = opacity;
updateStyleSheet(); updateStyleSheet();
@ -832,7 +942,7 @@ void LxQtPanel::setOpacity(int opacity, bool save)
/************************************************ /************************************************
************************************************/ ************************************************/
QRect LxQtPanel::globalGometry() const QRect LXQtPanel::globalGometry() const
{ {
return QRect(mapToGlobal(QPoint(0, 0)), this->size()); return QRect(mapToGlobal(QPoint(0, 0)), this->size());
} }
@ -841,7 +951,7 @@ QRect LxQtPanel::globalGometry() const
/************************************************ /************************************************
************************************************/ ************************************************/
bool LxQtPanel::event(QEvent *event) bool LXQtPanel::event(QEvent *event)
{ {
switch (event->type()) switch (event->type())
{ {
@ -877,7 +987,7 @@ bool LxQtPanel::event(QEvent *event)
event->ignore(); event->ignore();
//no break intentionally //no break intentionally
case QEvent::Enter: case QEvent::Enter:
showPanel(); showPanel(mAnimationTime > 0);
break; break;
case QEvent::Leave: case QEvent::Leave:
@ -896,7 +1006,7 @@ bool LxQtPanel::event(QEvent *event)
************************************************/ ************************************************/
void LxQtPanel::showEvent(QShowEvent *event) void LXQtPanel::showEvent(QShowEvent *event)
{ {
QFrame::showEvent(event); QFrame::showEvent(event);
realign(); realign();
@ -906,7 +1016,7 @@ void LxQtPanel::showEvent(QShowEvent *event)
/************************************************ /************************************************
************************************************/ ************************************************/
void LxQtPanel::showPopupMenu(Plugin *plugin) void LXQtPanel::showPopupMenu(Plugin *plugin)
{ {
PopupMenu * menu = new PopupMenu(tr("Panel"), this); PopupMenu * menu = new PopupMenu(tr("Panel"), this);
menu->setAttribute(Qt::WA_DeleteOnClose); menu->setAttribute(Qt::WA_DeleteOnClose);
@ -921,8 +1031,13 @@ void LxQtPanel::showPopupMenu(Plugin *plugin)
if (m) if (m)
{ {
menu->addTitle(plugin->windowTitle()); menu->addTitle(plugin->windowTitle());
menu->addActions(m->actions()); for (auto const & action : m->actions())
qobject_cast<QObject*>(m)->setParent(menu); {
action->setParent(menu);
action->setDisabled(mLockPanel);
menu->addAction(action);
}
delete m;
} }
} }
@ -930,30 +1045,35 @@ void LxQtPanel::showPopupMenu(Plugin *plugin)
menu->addTitle(QIcon(), tr("Panel")); menu->addTitle(QIcon(), tr("Panel"));
menu->addAction(XdgIcon::fromTheme(QStringLiteral("configure")), menu->addAction(XdgIcon::fromTheme(QLatin1String("configure")),
tr("Configure Panel"), tr("Configure Panel"),
this, SLOT(showConfigDialog()) this, SLOT(showConfigDialog())
); )->setDisabled(mLockPanel);
menu->addAction(XdgIcon::fromTheme("preferences-plugin"), menu->addAction(XdgIcon::fromTheme("preferences-plugin"),
tr("Manage Widgets"), tr("Manage Widgets"),
this, SLOT(showAddPluginDialog()) this, SLOT(showAddPluginDialog())
); )->setDisabled(mLockPanel);
LxQtPanelApplication *a = reinterpret_cast<LxQtPanelApplication*>(qApp); LXQtPanelApplication *a = reinterpret_cast<LXQtPanelApplication*>(qApp);
menu->addAction(XdgIcon::fromTheme(QLatin1String("list-add")), menu->addAction(XdgIcon::fromTheme(QLatin1String("list-add")),
tr("Add Panel"), tr("Add New Panel"),
a, SLOT(addNewPanel()) a, SLOT(addNewPanel())
); );
if (a->count() > 1) if (a->count() > 1)
{ {
menu->addAction(XdgIcon::fromTheme(QStringLiteral("list-remove")), menu->addAction(XdgIcon::fromTheme(QLatin1String("list-remove")),
tr("Remove Panel"), tr("Remove Panel", "Menu Item"),
this, SLOT(userRequestForDeletion()) this, SLOT(userRequestForDeletion())
); )->setDisabled(mLockPanel);
} }
QAction * act_lock = menu->addAction(tr("Lock This Panel"));
act_lock->setCheckable(true);
act_lock->setChecked(mLockPanel);
connect(act_lock, &QAction::triggered, [this] { mLockPanel = !mLockPanel; saveSettings(false); });
#ifdef DEBUG #ifdef DEBUG
menu->addSeparator(); menu->addSeparator();
menu->addAction("Exit (debug only)", qApp, SLOT(quit())); menu->addAction("Exit (debug only)", qApp, SLOT(quit()));
@ -964,40 +1084,40 @@ void LxQtPanel::showPopupMenu(Plugin *plugin)
* of QDesktopWidget::availableGeometry) * of QDesktopWidget::availableGeometry)
*/ */
menu->setGeometry(calculatePopupWindowPos(QCursor::pos(), menu->sizeHint())); menu->setGeometry(calculatePopupWindowPos(QCursor::pos(), menu->sizeHint()));
willShowWindow(menu);
menu->show(); menu->show();
} }
Plugin* LxQtPanel::findPlugin(const ILxQtPanelPlugin* iPlugin) const Plugin* LXQtPanel::findPlugin(const ILXQtPanelPlugin* iPlugin) const
{ {
Plugin *plugin = nullptr; for (auto const & plug : mPlugins->plugins())
for (Plugin *plug : mPlugins->plugins())
if (plug->iPlugin() == iPlugin) if (plug->iPlugin() == iPlugin)
plugin = plug; return plug;
return plugin; return nullptr;
} }
/************************************************ /************************************************
************************************************/ ************************************************/
QRect LxQtPanel::calculatePopupWindowPos(QPoint const & absolutePos, QSize const & windowSize) const QRect LXQtPanel::calculatePopupWindowPos(QPoint const & absolutePos, QSize const & windowSize) const
{ {
int x = absolutePos.x(), y = absolutePos.y(); int x = absolutePos.x(), y = absolutePos.y();
switch (position()) switch (position())
{ {
case ILxQtPanel::PositionTop: case ILXQtPanel::PositionTop:
y = globalGometry().bottom(); y = globalGometry().bottom();
break; break;
case ILxQtPanel::PositionBottom: case ILXQtPanel::PositionBottom:
y = globalGometry().top() - windowSize.height(); y = globalGometry().top() - windowSize.height();
break; break;
case ILxQtPanel::PositionLeft: case ILXQtPanel::PositionLeft:
x = globalGometry().right(); x = globalGometry().right();
break; break;
case ILxQtPanel::PositionRight: case ILXQtPanel::PositionRight:
x = globalGometry().left() - windowSize.width(); x = globalGometry().left() - windowSize.width();
break; break;
} }
@ -1027,7 +1147,7 @@ QRect LxQtPanel::calculatePopupWindowPos(QPoint const & absolutePos, QSize const
/************************************************ /************************************************
************************************************/ ************************************************/
QRect LxQtPanel::calculatePopupWindowPos(const ILxQtPanelPlugin *plugin, const QSize &windowSize) const QRect LXQtPanel::calculatePopupWindowPos(const ILXQtPanelPlugin *plugin, const QSize &windowSize) const
{ {
Plugin *panel_plugin = findPlugin(plugin); Plugin *panel_plugin = findPlugin(plugin);
if (nullptr == panel_plugin) if (nullptr == panel_plugin)
@ -1040,7 +1160,15 @@ QRect LxQtPanel::calculatePopupWindowPos(const ILxQtPanelPlugin *plugin, const Q
/************************************************ /************************************************
************************************************/ ************************************************/
QString LxQtPanel::qssPosition() const void LXQtPanel::willShowWindow(QWidget * w)
{
mStandaloneWindows->observeWindow(w);
}
/************************************************
************************************************/
QString LXQtPanel::qssPosition() const
{ {
return positionToStr(position()); return positionToStr(position());
} }
@ -1048,7 +1176,7 @@ QString LxQtPanel::qssPosition() const
/************************************************ /************************************************
************************************************/ ************************************************/
void LxQtPanel::pluginMoved(Plugin * plug) void LXQtPanel::pluginMoved(Plugin * plug)
{ {
//get new position of the moved plugin //get new position of the moved plugin
bool found{false}; bool found{false};
@ -1074,8 +1202,17 @@ void LxQtPanel::pluginMoved(Plugin * plug)
/************************************************ /************************************************
************************************************/ ************************************************/
void LxQtPanel::userRequestForDeletion() void LXQtPanel::userRequestForDeletion()
{ {
const QMessageBox::StandardButton ret
= QMessageBox::warning(this, tr("Remove Panel", "Dialog Title") ,
tr("Removing a panel can not be undone.\nDo you want to remove this panel?"),
QMessageBox::Yes | QMessageBox::No);
if (ret != QMessageBox::Yes) {
return;
}
mSettings->beginGroup(mConfigGroup); mSettings->beginGroup(mConfigGroup);
QStringList plugins = mSettings->value("plugins").toStringList(); QStringList plugins = mSettings->value("plugins").toStringList();
mSettings->endGroup(); mSettings->endGroup();
@ -1089,7 +1226,7 @@ void LxQtPanel::userRequestForDeletion()
emit deletedByUser(this); emit deletedByUser(this);
} }
void LxQtPanel::showPanel() void LXQtPanel::showPanel(bool animate)
{ {
if (mHidable) if (mHidable)
{ {
@ -1097,35 +1234,40 @@ void LxQtPanel::showPanel()
if (mHidden) if (mHidden)
{ {
mHidden = false; mHidden = false;
setPanelGeometry(); setPanelGeometry(mAnimationTime > 0 && animate);
} }
} }
} }
void LxQtPanel::hidePanel() void LXQtPanel::hidePanel()
{ {
if (mHidable && !mHidden) if (mHidable && !mHidden
&& !mStandaloneWindows->isAnyWindowShown()
)
mHideTimer.start(); mHideTimer.start();
} }
void LxQtPanel::hidePanelWork() void LXQtPanel::hidePanelWork()
{ {
if (mHidable && !mHidden && !geometry().contains(QCursor::pos())) if (!geometry().contains(QCursor::pos()))
{
if (!mStandaloneWindows->isAnyWindowShown())
{ {
mHidden = true; mHidden = true;
setPanelGeometry(); setPanelGeometry(mAnimationTime > 0);
} else } else
{ {
mHideTimer.start(); mHideTimer.start();
} }
}
} }
void LxQtPanel::setHidable(bool hidable, bool save) void LXQtPanel::setHidable(bool hidable, bool save)
{ {
if (mHidable == hidable) if (mHidable == hidable)
return; return;
mHidable = mHidden = hidable; mHidable = hidable;
if (save) if (save)
saveSettings(true); saveSettings(true);
@ -1133,11 +1275,22 @@ void LxQtPanel::setHidable(bool hidable, bool save)
realign(); realign();
} }
bool LxQtPanel::isPluginSingletonAndRunnig(QString const & pluginId) const void LXQtPanel::setAnimationTime(int animationTime, bool save)
{
if (mAnimationTime == animationTime)
return;
mAnimationTime = animationTime;
if (save)
saveSettings(true);
}
bool LXQtPanel::isPluginSingletonAndRunnig(QString const & pluginId) const
{ {
Plugin const * plugin = mPlugins->pluginByID(pluginId); Plugin const * plugin = mPlugins->pluginByID(pluginId);
if (nullptr == plugin) if (nullptr == plugin)
return false; return false;
else else
return plugin->iPlugin()->flags().testFlag(ILxQtPanelPlugin::SingleInstance); return plugin->iPlugin()->flags().testFlag(ILXQtPanelPlugin::SingleInstance);
} }

View File

@ -32,7 +32,9 @@
#include <QFrame> #include <QFrame>
#include <QString> #include <QString>
#include <QTimer> #include <QTimer>
#include <QPropertyAnimation>
#include <QPointer> #include <QPointer>
#include <LXQt/Settings>
#include "ilxqtpanel.h" #include "ilxqtpanel.h"
#include "lxqtpanelglobals.h" #include "lxqtpanelglobals.h"
@ -40,17 +42,38 @@ class QMenu;
class Plugin; class Plugin;
class QAbstractItemModel; class QAbstractItemModel;
namespace LxQt { namespace LXQt {
class Settings; class Settings;
class PluginInfo; class PluginInfo;
} }
class LxQtPanelLayout; class LXQtPanelLayout;
class ConfigPanelDialog; class ConfigPanelDialog;
class PanelPluginsModel; class PanelPluginsModel;
class WindowNotifier;
/*! \brief The LxQtPanel class provides a single lxqt-panel. /*! \brief The LXQtPanel class provides a single lxqt-panel. All LXQtPanel
* instances should be created and handled by LXQtPanelApplication. In turn,
* all Plugins should be created and handled by LXQtPanels.
*
* LXQtPanel is just the panel, it does not incorporate any functionality.
* Each function of the panel is implemented by Plugins, even the mainmenu
* (plugin-mainmenu) and the taskbar (plugin-taskbar). So the LXQtPanel is
* just the container for several Plugins while the different Plugins
* incorporate the functions of the panel. Without the Plugins, the panel
* is quite useless because it is just a box occupying space on the screen.
*
* LXQtPanel itself is a window (QFrame/QWidget) and this class is mainly
* responsible for handling the size and position of this window on the
* screen(s) as well as the different settings. The handling of the plugins
* is outsourced in PanelPluginsModel and LXQtPanelLayout. PanelPluginsModel
* is responsible for loading/creating and handling the plugins.
* LXQtPanelLayout is inherited from QLayout and set as layout to the
* background of LXQtPanel, so LXQtPanelLayout is responsible for the
* layout of all the Plugins.
*
* \sa LXQtPanelApplication, Plugin, PanelPluginsModel, LXQtPanelLayout.
*/ */
class LXQT_PANEL_API LxQtPanel : public QFrame, public ILxQtPanel class LXQT_PANEL_API LXQtPanel : public QFrame, public ILXQtPanel
{ {
Q_OBJECT Q_OBJECT
@ -59,134 +82,579 @@ class LXQT_PANEL_API LxQtPanel : public QFrame, public ILxQtPanel
// for configuration dialog // for configuration dialog
friend class ConfigPanelWidget; friend class ConfigPanelWidget;
friend class ConfigPluginsWidget; friend class ConfigPluginsWidget;
friend class ConfigPanelDialog;
friend class PanelPluginsModel;
public: public:
/**
* @brief Stores how the panel should be aligned. Obviously, this applies
* only if the panel does not occupy 100 % of the available space. If the
* panel is vertical, AlignmentLeft means align to the top border of the
* screen, AlignmentRight means align to the bottom.
*/
enum Alignment { enum Alignment {
AlignmentLeft = -1, AlignmentLeft = -1, //!< Align the panel to the left or top
AlignmentCenter = 0, AlignmentCenter = 0, //!< Center the panel
AlignmentRight = 1 AlignmentRight = 1 //!< Align the panel to the right or bottom
}; };
LxQtPanel(const QString &configGroup, QWidget *parent = 0); /**
virtual ~LxQtPanel(); * @brief Creates and initializes the LXQtPanel. Performs the following
* steps:
* 1. Sets Qt window title, flags, attributes.
* 2. Creates the panel layout.
* 3. Prepares the timers.
* 4. Connects signals and slots.
* 5. Reads the settings for this panel.
* 6. Optionally moves the panel to a valid screen (position-dependent).
* 7. Loads the Plugins.
* 8. Shows the panel, even if it is hidable (but then, starts the timer).
* @param configGroup The name of the panel which is used as identifier
* in the config file.
* @param settings The settings instance of this lxqt panel application.
* @param parent Parent QWidget, can be omitted.
*/
LXQtPanel(const QString &configGroup, LXQt::Settings *settings, QWidget *parent = 0);
virtual ~LXQtPanel();
/**
* @brief Returns the name of this panel which is also used as identifier
* in the config file.
*/
QString name() { return mConfigGroup; } QString name() { return mConfigGroup; }
/**
* @brief Reads all the necessary settings from mSettings and stores them
* in local variables. Additionally, calls necessary methods like realign()
* or updateStyleSheet() which need to get called after changing settings.
*/
void readSettings(); void readSettings();
/**
* @brief Creates and shows the popup menu (right click menu). If a plugin
* is given as parameter, the menu will be divided in two groups:
* plugin-specific options and panel-related options. As these two are
* shown together, this menu has to be created by LXQtPanel.
* @param plugin The plugin whose menu options will be included in the
* context menu.
*/
void showPopupMenu(Plugin *plugin = 0); void showPopupMenu(Plugin *plugin = 0);
// ILxQtPanel ......................... // ILXQtPanel overrides ........
ILxQtPanel::Position position() const { return mPosition; } ILXQtPanel::Position position() const override { return mPosition; }
QRect globalGometry() const; QRect globalGometry() const override;
Plugin *findPlugin(const ILxQtPanelPlugin *iPlugin) const; QRect calculatePopupWindowPos(QPoint const & absolutePos, QSize const & windowSize) const override;
QRect calculatePopupWindowPos(QPoint const & absolutePos, QSize const & windowSize) const; QRect calculatePopupWindowPos(const ILXQtPanelPlugin *plugin, const QSize &windowSize) const override;
QRect calculatePopupWindowPos(const ILxQtPanelPlugin *plugin, const QSize &windowSize) const; void willShowWindow(QWidget * w) override;
// ........ end of ILXQtPanel overrides
/**
* @brief Searches for a Plugin in the Plugins-list of this panel. Takes
* an ILXQtPanelPlugin as parameter and returns the corresponding Plugin.
* @param iPlugin ILXQtPanelPlugin that we are looking for.
* @return The corresponding Plugin if it is loaded in this panel, nullptr
* otherwise.
*/
Plugin *findPlugin(const ILXQtPanelPlugin *iPlugin) const;
// For QSS properties .................. // For QSS properties ..................
/**
* @brief Returns the position as string
*
* \sa positionToStr().
*/
QString qssPosition() const; QString qssPosition() const;
static bool canPlacedOn(int screenNum, LxQtPanel::Position position); /**
static QString positionToStr(ILxQtPanel::Position position); * @brief Checks if this LXQtPanel can be placed at a given position
static ILxQtPanel::Position strToPosition(const QString &str, ILxQtPanel::Position defaultValue); * on the screen with the given screenNum. The condition for doing so
* is that the panel is not located between two screens.
*
* For example, if position is PositionRight, there should be no screen to
* the right of the given screen. That means that there should be no
* screen whose left border has a higher x-coordinate than the x-coordinate
* of the right border of the given screen. This method iterates over all
* screens and checks these conditions.
* @param screenNum screen index as it is used by QDesktopWidget methods
* @param position position where the panel should be placed
* @return true if this panel can be placed at the given position on the
* given screen.
*
* \sa findAvailableScreen(), mScreenNum, mActualScreenNum.
*/
static bool canPlacedOn(int screenNum, LXQtPanel::Position position);
/**
* @brief Returns a string representation of the given position. This
* string is human-readable and can be used in config files.
* @param position position that should be converted to a string.
* @return the string representation of the given position, i.e.
* "Top", "Left", "Right" or "Bottom".
*
* \sa strToPosition()
*/
static QString positionToStr(ILXQtPanel::Position position);
/**
* @brief Returns an ILXQtPanel::Position from the given string. This can
* be used to retrieve ILXQtPanel::Position values from the config files.
* @param str string that should be converted to ILXQtPanel::Position
* @param defaultValue value that will be returned if the string can not
* be converted to an ILXQtPanel::Position.
* @return ILXQtPanel::Position that was determined from str or
* defaultValue if str could not be converted.
*
* \sa positionToStr()
*/
static ILXQtPanel::Position strToPosition(const QString &str, ILXQtPanel::Position defaultValue);
// Settings // Settings
int iconSize() const override { return mIconSize; } //!< Implement ILXQtPanel::iconSize().
int lineCount() const override { return mLineCount; } //!< Implement ILXQtPanel::lineCount().
int panelSize() const { return mPanelSize; } int panelSize() const { return mPanelSize; }
int iconSize() const { return mIconSize; }
int lineCount() const { return mLineCount; }
int length() const { return mLength; } int length() const { return mLength; }
bool lengthInPercents() const { return mLengthInPercents; } bool lengthInPercents() const { return mLengthInPercents; }
LxQtPanel::Alignment alignment() const { return mAlignment; } LXQtPanel::Alignment alignment() const { return mAlignment; }
int screenNum() const { return mScreenNum; } int screenNum() const { return mScreenNum; }
QColor fontColor() const { return mFontColor; }; QColor fontColor() const { return mFontColor; }
QColor backgroundColor() const { return mBackgroundColor; }; QColor backgroundColor() const { return mBackgroundColor; }
QString backgroundImage() const { return mBackgroundImage; }; QString backgroundImage() const { return mBackgroundImage; }
int opacity() const { return mOpacity; }; int opacity() const { return mOpacity; }
bool hidable() const { return mHidable; } bool hidable() const { return mHidable; }
int animationTime() const { return mAnimationTime; }
LxQt::Settings *settings() const { return mSettings; } /*!
* \brief Checks if a given Plugin is running and has the
* ILXQtPanelPlugin::SingleInstance flag set.
* \param pluginId Plugin Identifier which is the basename of the
* .desktop file that specifies the plugin.
* \return true if the Plugin is running and has the
* ILXQtPanelPlugin::SingleInstance flag set, false otherwise.
*/
bool isPluginSingletonAndRunnig(QString const & pluginId) const; bool isPluginSingletonAndRunnig(QString const & pluginId) const;
public slots: public slots:
/**
* @brief Shows the QWidget and makes it visible on all desktops. This
* method is NOT related to showPanel(), hidePanel() and hidePanelWork()
* which handle the LXQt hiding by resizing the panel.
*/
void show(); void show();
void showPanel(); /**
* @brief Shows the panel (immediately) after it had been hidden before.
* Stops the QTimer mHideTimer. This it NOT the same as QWidget::show()
* because hiding the panel in LXQt is done by making it very thin. So
* this method in fact restores the original size of the panel.
* \param animate flag for the panel show-up animation disabling (\sa mAnimationTime).
*
* \sa mHidable, mHidden, mHideTimer, hidePanel(), hidePanelWork()
*/
void showPanel(bool animate);
/**
* @brief Hides the panel (delayed) by starting the QTimer mHideTimer.
* When this timer times out, hidePanelWork() will be called. So this
* method is called when the cursor leaves the panel area but the panel
* will be hidden later.
*
* \sa mHidable, mHidden, mHideTimer, showPanel(), hidePanelWork()
*/
void hidePanel(); void hidePanel();
/**
* @brief Actually hides the panel. Will be invoked when the QTimer
* mHideTimer times out. That timer will be started by showPanel(). This
* is NOT the same as QWidget::hide() because hiding the panel in LXQt is
* done by making the panel very thin. So this method in fact makes the
* panel very thin while the QWidget stays visible.
*
* \sa mHidable, mHidden, mHideTimer, showPanel(), hidePanel()
*/
void hidePanelWork(); void hidePanelWork();
// Settings // Settings
/**
* @brief All the setter methods are designed similar:
* 1. Check if the given value is different from the current value. If not,
* do not do anything and return.
* 2. Set the value.
* 3. If parameter save is true, call saveSettings(true) to store the
* new settings on the disk.
* 4. If necessary, propagate the new value to child objects, e.g. to
* mLayout.
* 5. If necessary, call update methods like realign() or
* updateStyleSheet().
* @param value The value that should be set.
* @param save If true, saveSettings(true) will be called.
*/
void setPanelSize(int value, bool save); void setPanelSize(int value, bool save);
void setIconSize(int value, bool save); void setIconSize(int value, bool save); //!< \sa setPanelSize()
void setLineCount(int value, bool save); void setLineCount(int value, bool save); //!< \sa setPanelSize()
void setLength(int length, bool inPercents, bool save); void setLength(int length, bool inPercents, bool save); //!< \sa setPanelSize()
void setPosition(int screen, ILxQtPanel::Position position, bool save); void setPosition(int screen, ILXQtPanel::Position position, bool save); //!< \sa setPanelSize()
void setAlignment(LxQtPanel::Alignment value, bool save); void setAlignment(LXQtPanel::Alignment value, bool save); //!< \sa setPanelSize()
void setFontColor(QColor color, bool save); void setFontColor(QColor color, bool save); //!< \sa setPanelSize()
void setBackgroundColor(QColor color, bool save); void setBackgroundColor(QColor color, bool save); //!< \sa setPanelSize()
void setBackgroundImage(QString path, bool save); void setBackgroundImage(QString path, bool save); //!< \sa setPanelSize()
void setOpacity(int opacity, bool save); void setOpacity(int opacity, bool save); //!< \sa setPanelSize()
void setHidable(bool hidable, bool save); void setHidable(bool hidable, bool save); //!< \sa setPanelSize()
void setAnimationTime(int animationTime, bool save); //!< \sa setPanelSize()
/**
* @brief Saves the current configuration, i.e. writes the current
* configuration varibles to mSettings.
* @param later Determines if the settings are written immediately or
* after a short delay. If later==true, the QTimer mDelaySave is started.
* As soon as this timer times out, saveSettings(false) will be called. If
* later==false, settings will be written.
*/
void saveSettings(bool later=false); void saveSettings(bool later=false);
/**
* @brief Checks if the panel can be placed on the current screen at the
* current position. If it can not, it will be moved on another screen
* where the desired position is possible.
*/
void ensureVisible(); void ensureVisible();
signals: signals:
/**
* @brief This signal gets emitted whenever this panel receives a
* QEvent::LayoutRequest, i.e. "Widget layout needs to be redone.".
* The PanelPluginsModel will connect this signal to the individual
* plugins so they can realign, too.
*/
void realigned(); void realigned();
void deletedByUser(LxQtPanel *self); /**
* @brief This signal gets emitted at the end of
* userRequestForDeletion() which in turn gets called when the user
* decides to remove a panel. This signal is used by
* LXQtPanelApplication to get notified whenever an LXQtPanel should
* be removed.
* @param self This LXQtPanel. LXQtPanelApplication will use this
* parameter to identify the LXQtPanel that should be removed.
*/
void deletedByUser(LXQtPanel *self);
/**
* @brief This signal is just a relay signal. The pluginAdded signal
* of the PanelPluginsModel (mPlugins) will be connected to this
* signal. Thereby, we can make this signal of a private member
* available as a public signal.
* Currently, this signal is used by LXQtPanelApplication which
* will further re-emit this signal.
*/
void pluginAdded(); void pluginAdded();
/**
* @brief This signal is just a relay signal. The pluginRemoved signal
* of the PanelPluginsModel (mPlugins) will be connected to this
* signal. Thereby, we can make this signal of a private member
* available as a public signal.
* Currently, this signal is used by LXQtPanelApplication which
* will further re-emit this signal.
*/
void pluginRemoved(); void pluginRemoved();
protected: protected:
bool event(QEvent *event); /**
void showEvent(QShowEvent *event); * @brief Overrides QObject::event(QEvent * e). Some functions of
* the panel will be triggered by these events, e.g. showing/hiding
* the panel or showing the context menu.
* @param event The event that was received.
* @return "QObject::event(QEvent *e) should return true if the event e
* was recognized and processed." This is done by passing the event to
* QFrame::event(QEvent *e) at the end.
*/
bool event(QEvent *event) override;
/**
* @brief Overrides QWidget::showEvent(QShowEvent * event). This
* method is called when a widget (in this case: the LXQtPanel) is
* shown. The call could happen before and after the widget is shown.
* This method is just overridden to get notified when the LXQtPanel
* will be shown. Then, LXQtPanel will call realign().
* @param event The QShowEvent sent by Qt.
*/
void showEvent(QShowEvent *event) override;
public slots: public slots:
/**
* @brief Shows the ConfigPanelDialog and shows the "Config Panel"
* page, i.e. calls showConfigPanelPage(). If the dialog does not
* exist yet, it will be created before.
*
* The "Configure Panel" button in the context menu of the panel will
* be connected to this slot so this method gets called whenever the
* user clicks that button.
*
* Furthermore, this method will be called by LXQtPanelApplication
* when a new plugin gets added (the LXQtPanel instances are handled
* by LXQtPanelApplication). That is why this method/slot has to be
* public.
*/
void showConfigDialog(); void showConfigDialog();
private slots: private slots:
/**
* @brief Shows the ConfigPanelDialog and shows the "Config Plugins"
* page, i.e. calls showConfigPluginsPage(). If the dialog does not
* exist yet, it will be created before.
*
* The "Manage Widgets" button in the context menu of the panel will
* be connected to this slot so this method gets called whenever the
* user clicks that button.
*/
void showAddPluginDialog(); void showAddPluginDialog();
/**
* @brief Recalculates the geometry of the panel and reserves the
* window manager strut, i.e. it calls setPanelGeometry() and
* updateWmStrut().
* Two signals will be connected to this slot:
* 1. QDesktopWidget::workAreaResized(int screen) which will be emitted
* when the work area available (on screen) changes.
* 2. LXQt::Application::themeChanged(), i.e. when the user changes
* the theme.
*/
void realign(); void realign();
/**
* @brief Moves a plugin in PanelPluginsModel, i.e. calls
* PanelPluginsModel::movePlugin(Plugin * plugin, QString const & nameAfter).
* LXQtPanelLayout::pluginMoved() will be connected to this slot so
* it gets called whenever a plugin was moved in the layout by the user.
* @param plug
*/
void pluginMoved(Plugin * plug); void pluginMoved(Plugin * plug);
/**
* @brief Removes this panel's entries from the config file and emits
* the deletedByUser signal.
* The "Remove Panel" button in the panel's contex menu will
* be connected to this slot, so this method will be called whenever
* the user clicks "Remove Panel".
*/
void userRequestForDeletion(); void userRequestForDeletion();
private: private:
LxQtPanelLayout* mLayout; /**
LxQt::Settings *mSettings; * @brief The LXQtPanelLayout of this panel. All the Plugins will be added
QFrame *LxQtPanelWidget; * to the UI via this layout.
*/
LXQtPanelLayout* mLayout;
/**
* @brief The LXQt::Settings instance as retrieved from
* LXQtPanelApplication.
*/
LXQt::Settings *mSettings;
/**
* @brief The background widget for the panel. This background widget will
* have the background color or the background image if any of these is
* set. This background widget will have the LXQtPanelLayout mLayout which
* will in turn contain all the Plugins.
*/
QFrame *LXQtPanelWidget;
/**
* @brief The name of the panel which will also be used as an identifier
* for config files.
*/
QString mConfigGroup; QString mConfigGroup;
/**
* @brief Pointer to the PanelPluginsModel which will store all the Plugins
* that are loaded.
*/
QScopedPointer<PanelPluginsModel> mPlugins; QScopedPointer<PanelPluginsModel> mPlugins;
/**
* @brief object for storing info if some standalone window is shown
* (for preventing hide)
*/
QScopedPointer<WindowNotifier> mStandaloneWindows;
int findAvailableScreen(LxQtPanel::Position position); /**
* @brief Returns the screen index of a screen on which this panel could
* be placed at the given position. If possible, the current screen index
* is preserved. So, if the panel can be placed on the current screen, the
* index of that screen will be returned.
* @param position position at which the panel should be placed.
* @return The current screen index if the panel can be placed on the
* current screen or the screen index of a screen that it can be placed on.
*
* \sa canPlacedOn(), mScreenNum, mActualScreenNum.
*/
int findAvailableScreen(LXQtPanel::Position position);
/**
* @brief Update the window manager struts _NET_WM_PARTIAL_STRUT and
* _NET_WM_STRUT for this widget. "The purpose of struts is to reserve
* space at the borders of the desktop. This is very useful for a
* docking area, a taskbar or a panel, for instance. The Window Manager
* should take this reserved area into account when constraining window
* positions - maximized windows, for example, should not cover that
* area."
* \sa http://standards.freedesktop.org/wm-spec/wm-spec-latest.html#NETWMSTRUT
*/
void updateWmStrut(); void updateWmStrut();
/**
* @brief Loads the plugins, i.e. creates a new PanelPluginsModel.
* Connects the signals and slots and adds all the plugins to the
* layout.
*/
void loadPlugins(); void loadPlugins();
void setPanelGeometry(); /**
* @brief Calculates and sets the geometry (i.e. the position and the size
* on the screen) of the panel. Considers alignment, position, if the panel
* is hidden and if its geometry should be set with animation.
* \param animate flag if showing/hiding the panel should be animated.
*/
void setPanelGeometry(bool animate = false);
/**
* @brief Sets the contents margins of the panel according to its position
* and hiddenness. All margins are zero for visible panels.
*/
void setMargins();
/**
* @brief Calculates the height of the panel if it is horizontal or the
* width if the panel is vertical. Considers if the panel is hidden and
* ensures that the result is at least PANEL_MINIMUM_SIZE.
* @return The height/width of the panel.
*/
int getReserveDimension(); int getReserveDimension();
/**
* @brief Stores the size of the panel, i.e. the height of a horizontal
* panel or the width of a vertical panel in pixels. If the panel is
* hidden (which is achieved by making the panel very thin), this value
* is unchanged. So this value stores the size of the non-hidden panel.
*
* \sa panelSize(), setPanelSize().
*/
int mPanelSize; int mPanelSize;
/**
* @brief Stores the edge length of the panel icons in pixels.
*
* \sa ILXQtPanel::iconSize(), setIconSize().
*/
int mIconSize; int mIconSize;
/**
* @brief Stores the number of lines/rows of the panel.
*
* \sa ILXQtPanel::lineCount(), setLineCount().
*/
int mLineCount; int mLineCount;
/**
* @brief Stores the length of the panel, i.e. the width of a horizontal
* panel or the height of a vertical panel. The unit of this value is
* determined by mLengthInPercents.
*
* \sa mLengthInPercents
*/
int mLength; int mLength;
/**
* @brief Stores if mLength is stored in pixels or relative to the
* screen size in percents. If true, the length is stored in percents,
* otherwise in pixels.
*
* \sa mLength
*/
bool mLengthInPercents; bool mLengthInPercents;
/**
* @brief Stores how this panel is aligned. The meaning of this value
* differs for horizontal and vertical panels.
*
* \sa Alignment.
*/
Alignment mAlignment; Alignment mAlignment;
ILxQtPanel::Position mPosition; /**
* @brief Stores the position where the panel is shown
*/
ILXQtPanel::Position mPosition;
/**
* @brief Returns the index of the screen on which this panel should be
* shown. This is the user configured value which can differ from the
* screen that the panel is actually shown on. If the panel can not be
* shown on the configured screen, LXQtPanel will determine another
* screen. The screen that the panel is actually shown on is stored in
* mActualScreenNum.
*
* @return The index of the screen on which this panel should be shown.
*
* \sa mActualScreenNum, canPlacedOn(), findAvailableScreen().
*/
int mScreenNum; int mScreenNum;
/**
* @brief screen that the panel is currently shown at (this could
* differ from mScreenNum).
*
* \sa mScreenNum, canPlacedOn(), findAvailableScreen().
*/
int mActualScreenNum;
/**
* @brief QTimer for delayed saving of changed settings. In many cases,
* instead of storing changes to disk immediately we start this timer.
* If this timer times out, we store the changes to disk. This has the
* advantage that we can store a couple of changes with only one write to
* disk.
*
* \sa saveSettings()
*/
QTimer mDelaySave; QTimer mDelaySave;
/**
* @brief Stores if the panel is hidable, i.e. if the panel will be
* hidden after the cursor has left the panel area.
*
* \sa mHidden, mHideTimer, showPanel(), hidePanel(), hidePanelWork()
*/
bool mHidable; bool mHidable;
/**
* @brief Stores if the panel is currently hidden.
*
* \sa mHidable, mHideTimer, showPanel(), hidePanel(), hidePanelWork()
*/
bool mHidden; bool mHidden;
/**
* @brief QTimer for hiding the panel. When the cursor leaves the panel
* area, this timer will be started. After this timer has timed out, the
* panel will actually be hidden.
*
* \sa mHidable, mHidden, showPanel(), hidePanel(), hidePanelWork()
*/
QTimer mHideTimer; QTimer mHideTimer;
/**
* @brief Stores the duration of auto-hide animation.
*
* \sa mHidden, mHideTimer, showPanel(), hidePanel(), hidePanelWork()
*/
int mAnimationTime;
QColor mFontColor; QColor mFontColor; //!< Font color that is used in the style sheet.
QColor mBackgroundColor; QColor mBackgroundColor; //!< Background color that is used in the style sheet.
QString mBackgroundImage; QString mBackgroundImage; //!< Background image that is used in the style sheet.
// 0 to 100 /**
* @brief Determines the opacity of the background color. The value
* should be in the range from 0 to 100. This will not affect the opacity
* of a background image.
*/
int mOpacity; int mOpacity;
/**
* @brief Pointer to the current ConfigPanelDialog if there is any. Make
* sure to test this pointer for validity because it is lazily loaded.
*/
QPointer<ConfigPanelDialog> mConfigDialog; QPointer<ConfigPanelDialog> mConfigDialog;
/**
* @brief The animation used for showing/hiding an auto-hiding panel.
*/
QPropertyAnimation *mAnimation;
/**
* @brief Flag for providing the configuration options in panel's context menu
*/
bool mLockPanel;
/**
* @brief Updates the style sheet for the panel. First, the stylesheet is
* created from the preferences. Then, it is set via
* QWidget::setStyleSheet().
*/
void updateStyleSheet(); void updateStyleSheet();
// settings should be kept private for security
LXQt::Settings *settings() const { return mSettings; }
}; };

View File

@ -27,6 +27,7 @@
#include "lxqtpanelapplication.h" #include "lxqtpanelapplication.h"
#include "lxqtpanelapplication_p.h"
#include "lxqtpanel.h" #include "lxqtpanel.h"
#include "config/configpaneldialog.h" #include "config/configpaneldialog.h"
#include <LXQt/Settings> #include <LXQt/Settings>
@ -36,19 +37,57 @@
#include <QWindow> #include <QWindow>
#include <QCommandLineParser> #include <QCommandLineParser>
LxQtPanelApplication::LxQtPanelApplication(int& argc, char** argv) LXQtPanelApplicationPrivate::LXQtPanelApplicationPrivate(LXQtPanelApplication *q)
: LxQt::Application(argc, argv, true) : mSettings(0),
q_ptr(q)
{ {
QCoreApplication::setApplicationName(QStringLiteral("lxqt-panel")); }
ILXQtPanel::Position LXQtPanelApplicationPrivate::computeNewPanelPosition(const LXQtPanel *p, const int screenNum)
{
Q_Q(LXQtPanelApplication);
QVector<bool> screenPositions(4, false); // false means not occupied
for (int i = 0; i < q->mPanels.size(); ++i) {
if (p != q->mPanels.at(i)) {
// We are not the newly added one
if (screenNum == q->mPanels.at(i)->screenNum()) { // Panels on the same screen
int p = static_cast<int> (q->mPanels.at(i)->position());
screenPositions[p] = true; // occupied
}
}
}
int availablePosition = 0;
for (int i = 0; i < 4; ++i) { // Bottom, Top, Left, Right
if (!screenPositions[i]) {
availablePosition = i;
break;
}
}
return static_cast<ILXQtPanel::Position> (availablePosition);
}
LXQtPanelApplication::LXQtPanelApplication(int& argc, char** argv)
: LXQt::Application(argc, argv, true),
d_ptr(new LXQtPanelApplicationPrivate(this))
{
Q_D(LXQtPanelApplication);
QCoreApplication::setApplicationName(QLatin1String("lxqt-panel"));
QCoreApplication::setApplicationVersion(LXQT_VERSION); QCoreApplication::setApplicationVersion(LXQT_VERSION);
QCommandLineParser parser; QCommandLineParser parser;
parser.setApplicationDescription(QStringLiteral("LXQt panel")); parser.setApplicationDescription(QLatin1String("LXQt panel"));
parser.addHelpOption(); parser.addHelpOption();
parser.addVersionOption(); parser.addVersionOption();
QCommandLineOption configFileOption(QStringList() QCommandLineOption configFileOption(QStringList()
<< QStringLiteral("c") << QStringLiteral("config") << QStringLiteral("configfile"), << QLatin1String("c") << QLatin1String("config") << QLatin1String("configfile"),
QCoreApplication::translate("main", "Use alternate configuration file."), QCoreApplication::translate("main", "Use alternate configuration file."),
QCoreApplication::translate("main", "Configuration file")); QCoreApplication::translate("main", "Configuration file"));
parser.addOption(configFileOption); parser.addOption(configFileOption);
@ -58,20 +97,20 @@ LxQtPanelApplication::LxQtPanelApplication(int& argc, char** argv)
const QString configFile = parser.value(configFileOption); const QString configFile = parser.value(configFileOption);
if (configFile.isEmpty()) if (configFile.isEmpty())
mSettings = new LxQt::Settings(QStringLiteral("panel"), this); d->mSettings = new LXQt::Settings(QLatin1String("panel"), this);
else else
mSettings = new LxQt::Settings(configFile, QSettings::IniFormat, this); d->mSettings = new LXQt::Settings(configFile, QSettings::IniFormat, this);
// This is a workaround for Qt 5 bug #40681. // This is a workaround for Qt 5 bug #40681.
Q_FOREACH(QScreen* screen, screens()) Q_FOREACH(QScreen* screen, screens())
{ {
connect(screen, &QScreen::destroyed, this, &LxQtPanelApplication::screenDestroyed); connect(screen, &QScreen::destroyed, this, &LXQtPanelApplication::screenDestroyed);
} }
connect(this, &QGuiApplication::screenAdded, this, &LxQtPanelApplication::handleScreenAdded); connect(this, &QGuiApplication::screenAdded, this, &LXQtPanelApplication::handleScreenAdded);
connect(this, &QCoreApplication::aboutToQuit, this, &LxQtPanelApplication::cleanup); connect(this, &QCoreApplication::aboutToQuit, this, &LXQtPanelApplication::cleanup);
QStringList panels = mSettings->value("panels").toStringList(); QStringList panels = d->mSettings->value("panels").toStringList();
if (panels.isEmpty()) if (panels.isEmpty())
{ {
@ -84,58 +123,69 @@ LxQtPanelApplication::LxQtPanelApplication(int& argc, char** argv)
} }
} }
LxQtPanelApplication::~LxQtPanelApplication() LXQtPanelApplication::~LXQtPanelApplication()
{ {
delete d_ptr;
} }
void LxQtPanelApplication::cleanup() void LXQtPanelApplication::cleanup()
{ {
qDeleteAll(mPanels); qDeleteAll(mPanels);
} }
void LxQtPanelApplication::addNewPanel() void LXQtPanelApplication::addNewPanel()
{ {
Q_D(LXQtPanelApplication);
QString name("panel_" + QUuid::createUuid().toString()); QString name("panel_" + QUuid::createUuid().toString());
LxQtPanel *p = addPanel(name);
QStringList panels = mSettings->value("panels").toStringList(); LXQtPanel *p = addPanel(name);
int screenNum = p->screenNum();
ILXQtPanel::Position newPanelPosition = d->computeNewPanelPosition(p, screenNum);
p->setPosition(screenNum, newPanelPosition, true);
QStringList panels = d->mSettings->value("panels").toStringList();
panels << name; panels << name;
mSettings->setValue("panels", panels); d->mSettings->setValue("panels", panels);
// Poupup the configuration dialog to allow user configuration right away // Poupup the configuration dialog to allow user configuration right away
p->showConfigDialog(); p->showConfigDialog();
} }
LxQtPanel* LxQtPanelApplication::addPanel(const QString& name) LXQtPanel* LXQtPanelApplication::addPanel(const QString& name)
{ {
LxQtPanel *panel = new LxQtPanel(name); Q_D(LXQtPanelApplication);
LXQtPanel *panel = new LXQtPanel(name, d->mSettings);
mPanels << panel; mPanels << panel;
connect(panel, SIGNAL(deletedByUser(LxQtPanel*)),
this, SLOT(removePanel(LxQtPanel*))); // reemit signals
//reemit signals connect(panel, &LXQtPanel::deletedByUser, this, &LXQtPanelApplication::removePanel);
connect(panel, &LxQtPanel::pluginAdded, this, &LxQtPanelApplication::pluginAdded); connect(panel, &LXQtPanel::pluginAdded, this, &LXQtPanelApplication::pluginAdded);
connect(panel, &LxQtPanel::pluginRemoved, this, &LxQtPanelApplication::pluginRemoved); connect(panel, &LXQtPanel::pluginRemoved, this, &LXQtPanelApplication::pluginRemoved);
return panel; return panel;
} }
void LxQtPanelApplication::handleScreenAdded(QScreen* newScreen) void LXQtPanelApplication::handleScreenAdded(QScreen* newScreen)
{ {
// qDebug() << "LxQtPanelApplication::handleScreenAdded" << newScreen; // qDebug() << "LXQtPanelApplication::handleScreenAdded" << newScreen;
connect(newScreen, &QScreen::destroyed, this, &LxQtPanelApplication::screenDestroyed); connect(newScreen, &QScreen::destroyed, this, &LXQtPanelApplication::screenDestroyed);
} }
void LxQtPanelApplication::reloadPanelsAsNeeded() void LXQtPanelApplication::reloadPanelsAsNeeded()
{ {
Q_D(LXQtPanelApplication);
// NOTE by PCMan: This is a workaround for Qt 5 bug #40681. // NOTE by PCMan: This is a workaround for Qt 5 bug #40681.
// Here we try to re-create the missing panels which are deleted in // Here we try to re-create the missing panels which are deleted in
// LxQtPanelApplication::screenDestroyed(). // LXQtPanelApplication::screenDestroyed().
// qDebug() << "LxQtPanelApplication::reloadPanelsAsNeeded()"; // qDebug() << "LXQtPanelApplication::reloadPanelsAsNeeded()";
QStringList names = mSettings->value("panels").toStringList(); QStringList names = d->mSettings->value("panels").toStringList();
Q_FOREACH(const QString& name, names) Q_FOREACH(const QString& name, names)
{ {
bool found = false; bool found = false;
Q_FOREACH(LxQtPanel* panel, mPanels) Q_FOREACH(LXQtPanel* panel, mPanels)
{ {
if(panel->name() == name) if(panel->name() == name)
{ {
@ -153,7 +203,7 @@ void LxQtPanelApplication::reloadPanelsAsNeeded()
qApp->setQuitOnLastWindowClosed(true); qApp->setQuitOnLastWindowClosed(true);
} }
void LxQtPanelApplication::screenDestroyed(QObject* screenObj) void LXQtPanelApplication::screenDestroyed(QObject* screenObj)
{ {
// NOTE by PCMan: This is a workaround for Qt 5 bug #40681. // NOTE by PCMan: This is a workaround for Qt 5 bug #40681.
// With this very dirty workaround, we can fix lxde/lxde-qt bug #204, #205, and #206. // With this very dirty workaround, we can fix lxde/lxde-qt bug #204, #205, and #206.
@ -182,7 +232,7 @@ void LxQtPanelApplication::screenDestroyed(QObject* screenObj)
QScreen* screen = static_cast<QScreen*>(screenObj); QScreen* screen = static_cast<QScreen*>(screenObj);
bool reloadNeeded = false; bool reloadNeeded = false;
qApp->setQuitOnLastWindowClosed(false); qApp->setQuitOnLastWindowClosed(false);
Q_FOREACH(LxQtPanel* panel, mPanels) Q_FOREACH(LXQtPanel* panel, mPanels)
{ {
QWindow* panelWindow = panel->windowHandle(); QWindow* panelWindow = panel->windowHandle();
if(panelWindow && panelWindow->screen() == screen) if(panelWindow && panelWindow->screen() == screen)
@ -203,20 +253,21 @@ void LxQtPanelApplication::screenDestroyed(QObject* screenObj)
qApp->setQuitOnLastWindowClosed(true); qApp->setQuitOnLastWindowClosed(true);
} }
void LxQtPanelApplication::removePanel(LxQtPanel* panel) void LXQtPanelApplication::removePanel(LXQtPanel* panel)
{ {
Q_D(LXQtPanelApplication);
Q_ASSERT(mPanels.contains(panel)); Q_ASSERT(mPanels.contains(panel));
mPanels.removeAll(panel); mPanels.removeAll(panel);
QStringList panels = mSettings->value("panels").toStringList(); QStringList panels = d->mSettings->value("panels").toStringList();
panels.removeAll(panel->name()); panels.removeAll(panel->name());
mSettings->setValue("panels", panels); d->mSettings->setValue("panels", panels);
panel->deleteLater(); panel->deleteLater();
} }
bool LxQtPanelApplication::isPluginSingletonAndRunnig(QString const & pluginId) const bool LXQtPanelApplication::isPluginSingletonAndRunnig(QString const & pluginId) const
{ {
for (auto const & panel : mPanels) for (auto const & panel : mPanels)
if (panel->isPluginSingletonAndRunnig(pluginId)) if (panel->isPluginSingletonAndRunnig(pluginId))

View File

@ -34,44 +34,149 @@
class QScreen; class QScreen;
class LxQtPanel; class LXQtPanel;
namespace LxQt { class LXQtPanelApplicationPrivate;
class Settings;
}
class LxQtPanelApplication : public LxQt::Application /*!
* \brief The LXQtPanelApplication class inherits from LXQt::Application and
* is therefore the QApplication that we will create and execute in our
* main()-function.
*
* LXQtPanelApplication itself is not a visible panel, rather it is only
* the container which holds the visible panels. These visible panels are
* LXQtPanel objects which are stored in mPanels. This approach enables us
* to have more than one panel (for example one panel at the top and one
* panel at the bottom of the screen) without additional effort.
*/
class LXQtPanelApplication : public LXQt::Application
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit LxQtPanelApplication(int& argc, char** argv); /*!
~LxQtPanelApplication(); * \brief Creates a new LXQtPanelApplication with the given command line
* arguments. Performs the following steps:
* 1. Initializes the LXQt::Application, sets application name and version.
* 2. Handles command line arguments. Currently, the only cmdline argument
* is -c = -config = -configfile which chooses a different config file
* for the LXQt::Settings.
* 3. Creates the LXQt::Settings.
* 4. Connects QCoreApplication::aboutToQuit to cleanup().
* 5. Calls addPanel() for each panel found in the config file. If there is
* none, adds a new panel.
* \param argc
* \param argv
*/
explicit LXQtPanelApplication(int& argc, char** argv);
~LXQtPanelApplication();
/*!
* \brief Determines the number of LXQtPanel objects
* \return the current number of LXQtPanel objects
*/
int count() { return mPanels.count(); } int count() { return mPanels.count(); }
LxQt::Settings *settings() { return mSettings; }
/*!
* \brief Checks if a given Plugin is running and has the
* ILXQtPanelPlugin::SingleInstance flag set. As Plugins are added to
* LXQtPanel instances, this method only iterates over these LXQtPanel
* instances and lets them check the conditions.
* \param pluginId Plugin Identifier which is the basename of the .desktop
* file that specifies the plugin.
* \return true if the Plugin is running and has the
* ILXQtPanelPlugin::SingleInstance flag set, false otherwise.
*/
bool isPluginSingletonAndRunnig(QString const & pluginId) const; bool isPluginSingletonAndRunnig(QString const & pluginId) const;
public slots: public slots:
/*!
* \brief Adds a new LXQtPanel which consists of the following steps:
* 1. Create id/name.
* 2. Create the LXQtPanel: call addPanel(name).
* 3. Update the config file (add the new panel id to the list of panels).
* 4. Show the panel configuration dialog so that the user can add plugins.
*
* This method will create a new LXQtPanel with a new name and add this
* to the config file. So this should only be used while the application
* is running and the user decides to add a new panel. At application
* startup, addPanel() should be used instead.
*
* \note This slot will be used from the LXQtPanel right-click menu. As we
* can only add new panels from a visible panel, we should never run
* lxqt-panel without an LXQtPanel. Without a panel, we have just an
* invisible application.
*/
void addNewPanel(); void addNewPanel();
signals: signals:
/*!
* \brief Signal that re-emits the signal pluginAdded() from LXQtPanel.
*/
void pluginAdded(); void pluginAdded();
/*!
* \brief Signal that re-emits the signal pluginRemoved() from LXQtPanel.
*/
void pluginRemoved(); void pluginRemoved();
private: private:
QList<LxQtPanel*> mPanels; /*!
* \brief Holds all the instances of LXQtPanel.
LxQtPanel* addPanel(const QString &name); */
QList<LXQtPanel*> mPanels;
/*!
* \brief Creates a new LXQtPanel with the given name and connects the
* appropriate signals and slots.
* This method can be used at application startup.
* \param name Name of the LXQtPanel as it is used in the config file.
* \return The newly created LXQtPanel.
*/
LXQtPanel* addPanel(const QString &name);
private slots: private slots:
void removePanel(LxQtPanel* panel); /*!
* \brief Removes the given LXQtPanel which consists of the following
* steps:
* 1. Remove the panel from mPanels.
* 2. Remove the panel from the config file.
* 3. Schedule the QObject for deletion: QObject::deleteLater().
* \param panel LXQtPanel instance that should be removed.
*/
void removePanel(LXQtPanel* panel);
/*!
* \brief Connects the QScreen::destroyed signal of a new screen to
* the screenDestroyed() slot so that we can handle this screens'
* destruction as soon as it happens.
* \param newScreen The QScreen that was created and added.
*/
void handleScreenAdded(QScreen* newScreen); void handleScreenAdded(QScreen* newScreen);
/*!
* \brief Handles screen destruction. This is a workaround for a Qt bug.
* For further information, see the implementation notes.
* \param screenObj The QScreen that was destroyed.
*/
void screenDestroyed(QObject* screenObj); void screenDestroyed(QObject* screenObj);
/*!
* \brief Reloads the panels. This is the second part of the workaround
* mentioned above.
*/
void reloadPanelsAsNeeded(); void reloadPanelsAsNeeded();
/*!
* \brief Deletes all LXQtPanel instances that are stored in mPanels.
*/
void cleanup(); void cleanup();
private: private:
LxQt::Settings *mSettings; /*!
* \brief mSettings is the LXQt::Settings object that is used for the
* current instance of lxqt-panel. Normally, this refers to the config file
* $HOME/.config/lxqt/panel.conf (on Unix systems). This behaviour can be
* changed with the -c command line option.
*/
LXQtPanelApplicationPrivate *const d_ptr;
Q_DECLARE_PRIVATE(LXQtPanelApplication)
Q_DISABLE_COPY(LXQtPanelApplication)
}; };

View File

@ -0,0 +1,45 @@
/*
* LXQt - a lightweight, Qt based, desktop toolset
* Copyright (C) 2016 Luís Pereira <luis.artur.pereira@gmail.com>
*
* 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 LXQTPANELAPPLICATION_P_H
#define LXQTPANELAPPLICATION_P_H
#include "lxqtpanelapplication.h"
namespace LXQt {
class Settings;
}
class LXQtPanelApplicationPrivate {
Q_DECLARE_PUBLIC(LXQtPanelApplication)
public:
LXQtPanelApplicationPrivate(LXQtPanelApplication *q);
~LXQtPanelApplicationPrivate() {};
LXQt::Settings *mSettings;
ILXQtPanel::Position computeNewPanelPosition(const LXQtPanel *p, const int screenNum);
private:
LXQtPanelApplication *const q_ptr;
};
#endif // LXQTPANELAPPLICATION_P_H

View File

@ -118,6 +118,7 @@ class LayoutItemGrid
{ {
public: public:
explicit LayoutItemGrid(); explicit LayoutItemGrid();
~LayoutItemGrid();
void addItem(QLayoutItem *item); void addItem(QLayoutItem *item);
int count() const { return mItems.count(); } int count() const { return mItems.count(); }
@ -188,6 +189,11 @@ LayoutItemGrid::LayoutItemGrid()
clear(); clear();
} }
LayoutItemGrid::~LayoutItemGrid()
{
qDeleteAll(mItems);
}
/************************************************ /************************************************
@ -409,21 +415,21 @@ void LayoutItemGrid::setHoriz(bool value)
/************************************************ /************************************************
************************************************/ ************************************************/
LxQtPanelLayout::LxQtPanelLayout(QWidget *parent) : LXQtPanelLayout::LXQtPanelLayout(QWidget *parent) :
QLayout(parent), QLayout(parent),
mLeftGrid(new LayoutItemGrid()), mLeftGrid(new LayoutItemGrid()),
mRightGrid(new LayoutItemGrid()), mRightGrid(new LayoutItemGrid()),
mPosition(ILxQtPanel::PositionBottom), mPosition(ILXQtPanel::PositionBottom),
mAnimate(false) mAnimate(false)
{ {
setMargin(0); setContentsMargins(0, 0, 0, 0);
} }
/************************************************ /************************************************
************************************************/ ************************************************/
LxQtPanelLayout::~LxQtPanelLayout() LXQtPanelLayout::~LXQtPanelLayout()
{ {
delete mLeftGrid; delete mLeftGrid;
delete mRightGrid; delete mRightGrid;
@ -433,7 +439,7 @@ LxQtPanelLayout::~LxQtPanelLayout()
/************************************************ /************************************************
************************************************/ ************************************************/
void LxQtPanelLayout::addItem(QLayoutItem *item) void LXQtPanelLayout::addItem(QLayoutItem *item)
{ {
LayoutItemGrid *grid = mRightGrid; LayoutItemGrid *grid = mRightGrid;
@ -448,7 +454,7 @@ void LxQtPanelLayout::addItem(QLayoutItem *item)
/************************************************ /************************************************
************************************************/ ************************************************/
void LxQtPanelLayout::globalIndexToLocal(int index, LayoutItemGrid **grid, int *gridIndex) void LXQtPanelLayout::globalIndexToLocal(int index, LayoutItemGrid **grid, int *gridIndex)
{ {
if (index < mLeftGrid->count()) if (index < mLeftGrid->count())
{ {
@ -464,7 +470,7 @@ void LxQtPanelLayout::globalIndexToLocal(int index, LayoutItemGrid **grid, int *
/************************************************ /************************************************
************************************************/ ************************************************/
void LxQtPanelLayout::globalIndexToLocal(int index, LayoutItemGrid **grid, int *gridIndex) const void LXQtPanelLayout::globalIndexToLocal(int index, LayoutItemGrid **grid, int *gridIndex) const
{ {
if (index < mLeftGrid->count()) if (index < mLeftGrid->count())
{ {
@ -481,7 +487,7 @@ void LxQtPanelLayout::globalIndexToLocal(int index, LayoutItemGrid **grid, int *
/************************************************ /************************************************
************************************************/ ************************************************/
QLayoutItem *LxQtPanelLayout::itemAt(int index) const QLayoutItem *LXQtPanelLayout::itemAt(int index) const
{ {
if (index < 0 || index >= count()) if (index < 0 || index >= count())
return 0; return 0;
@ -497,7 +503,7 @@ QLayoutItem *LxQtPanelLayout::itemAt(int index) const
/************************************************ /************************************************
************************************************/ ************************************************/
QLayoutItem *LxQtPanelLayout::takeAt(int index) QLayoutItem *LXQtPanelLayout::takeAt(int index)
{ {
if (index < 0 || index >= count()) if (index < 0 || index >= count())
return 0; return 0;
@ -513,7 +519,7 @@ QLayoutItem *LxQtPanelLayout::takeAt(int index)
/************************************************ /************************************************
************************************************/ ************************************************/
int LxQtPanelLayout::count() const int LXQtPanelLayout::count() const
{ {
return mLeftGrid->count() + mRightGrid->count(); return mLeftGrid->count() + mRightGrid->count();
} }
@ -522,7 +528,7 @@ int LxQtPanelLayout::count() const
/************************************************ /************************************************
************************************************/ ************************************************/
void LxQtPanelLayout::moveItem(int from, int to, bool withAnimation) void LXQtPanelLayout::moveItem(int from, int to, bool withAnimation)
{ {
if (from != to) if (from != to)
{ {
@ -558,7 +564,7 @@ void LxQtPanelLayout::moveItem(int from, int to, bool withAnimation)
/************************************************ /************************************************
************************************************/ ************************************************/
QSize LxQtPanelLayout::sizeHint() const QSize LXQtPanelLayout::sizeHint() const
{ {
if (!mLeftGrid->isValid()) if (!mLeftGrid->isValid())
mLeftGrid->update(); mLeftGrid->update();
@ -585,7 +591,7 @@ QSize LxQtPanelLayout::sizeHint() const
/************************************************ /************************************************
************************************************/ ************************************************/
void LxQtPanelLayout::setGeometry(const QRect &geometry) void LXQtPanelLayout::setGeometry(const QRect &geometry)
{ {
if (!mLeftGrid->isValid()) if (!mLeftGrid->isValid())
mLeftGrid->update(); mLeftGrid->update();
@ -611,7 +617,7 @@ void LxQtPanelLayout::setGeometry(const QRect &geometry)
/************************************************ /************************************************
************************************************/ ************************************************/
void LxQtPanelLayout::setItemGeometry(QLayoutItem *item, const QRect &geometry, bool withAnimation) void LXQtPanelLayout::setItemGeometry(QLayoutItem *item, const QRect &geometry, bool withAnimation)
{ {
Plugin *plugin = qobject_cast<Plugin*>(item->widget()); Plugin *plugin = qobject_cast<Plugin*>(item->widget());
if (withAnimation && plugin) if (withAnimation && plugin)
@ -631,8 +637,9 @@ void LxQtPanelLayout::setItemGeometry(QLayoutItem *item, const QRect &geometry,
/************************************************ /************************************************
************************************************/ ************************************************/
void LxQtPanelLayout::setGeometryHoriz(const QRect &geometry) void LXQtPanelLayout::setGeometryHoriz(const QRect &geometry)
{ {
const bool visual_h_reversed = parentWidget() && parentWidget()->isRightToLeft();
// Calc expFactor for expandable plugins like TaskBar. // Calc expFactor for expandable plugins like TaskBar.
double expFactor; double expFactor;
{ {
@ -644,9 +651,11 @@ void LxQtPanelLayout::setGeometryHoriz(const QRect &geometry)
// Calc baselines for plugins like button. // Calc baselines for plugins like button.
QVector<int> baseLines(qMax(mLeftGrid->colCount(), mRightGrid->colCount())); QVector<int> baseLines(qMax(mLeftGrid->colCount(), mRightGrid->colCount()));
const int bh = geometry.height() / baseLines.count();
const int base_center = bh >> 1;
const int height_remain = 0 < bh ? geometry.height() % baseLines.size() : 0;
{ {
int bh = geometry.height() / baseLines.count(); int base = geometry.top();
int base = geometry.top() + (bh >> 1);
for (auto i = baseLines.begin(), i_e = baseLines.end(); i_e != i; ++i, base += bh) for (auto i = baseLines.begin(), i_e = baseLines.end(); i_e != i; ++i, base += bh)
{ {
*i = base; *i = base;
@ -654,7 +663,7 @@ void LxQtPanelLayout::setGeometryHoriz(const QRect &geometry)
} }
#if 0 #if 0
qDebug() << "** LxQtPanelLayout::setGeometryHoriz **************"; qDebug() << "** LXQtPanelLayout::setGeometryHoriz **************";
qDebug() << "geometry: " << geometry; qDebug() << "geometry: " << geometry;
qDebug() << "Left grid"; qDebug() << "Left grid";
@ -672,6 +681,7 @@ void LxQtPanelLayout::setGeometryHoriz(const QRect &geometry)
for (int r=0; r<mLeftGrid->rowCount(); ++r) for (int r=0; r<mLeftGrid->rowCount(); ++r)
{ {
int rw = 0; int rw = 0;
int remain = height_remain;
for (int c=0; c<mLeftGrid->usedColCount(); ++c) for (int c=0; c<mLeftGrid->usedColCount(); ++c)
{ {
const LayoutItemInfo &info = mLeftGrid->itemInfo(r, c); const LayoutItemInfo &info = mLeftGrid->itemInfo(r, c);
@ -691,13 +701,19 @@ void LxQtPanelLayout::setGeometryHoriz(const QRect &geometry)
} }
else else
{ {
rect.setHeight(qMin(info.geometry.height(), geometry.height())); const int height = qMin(qMin(info.geometry.height(), geometry.height()), bh + (0 < remain-- ? 1 : 0));
rect.setHeight(height);
rect.setWidth(qMin(info.geometry.width(), geometry.width())); rect.setWidth(qMin(info.geometry.width(), geometry.width()));
rect.moveCenter(QPoint(0, baseLines[c])); if (height < bh)
rect.moveCenter(QPoint(0, baseLines[c] + base_center));
else
rect.moveTop(baseLines[c]);
rect.moveLeft(left); rect.moveLeft(left);
} }
rw = qMax(rw, rect.width()); rw = qMax(rw, rect.width());
if (visual_h_reversed)
rect.moveLeft(geometry.left() + geometry.right() - rect.x() - rect.width() + 1);
setItemGeometry(info.item, rect, mAnimate); setItemGeometry(info.item, rect, mAnimate);
} }
} }
@ -709,6 +725,7 @@ void LxQtPanelLayout::setGeometryHoriz(const QRect &geometry)
for (int r=mRightGrid->rowCount()-1; r>=0; --r) for (int r=mRightGrid->rowCount()-1; r>=0; --r)
{ {
int rw = 0; int rw = 0;
int remain = height_remain;
for (int c=0; c<mRightGrid->usedColCount(); ++c) for (int c=0; c<mRightGrid->usedColCount(); ++c)
{ {
const LayoutItemInfo &info = mRightGrid->itemInfo(r, c); const LayoutItemInfo &info = mRightGrid->itemInfo(r, c);
@ -729,13 +746,19 @@ void LxQtPanelLayout::setGeometryHoriz(const QRect &geometry)
} }
else else
{ {
rect.setHeight(qMin(info.geometry.height(), geometry.height())); const int height = qMin(qMin(info.geometry.height(), geometry.height()), bh + (0 < remain-- ? 1 : 0));
rect.setHeight(height);
rect.setWidth(qMin(info.geometry.width(), geometry.width())); rect.setWidth(qMin(info.geometry.width(), geometry.width()));
rect.moveCenter(QPoint(0, baseLines[c])); if (height < bh)
rect.moveCenter(QPoint(0, baseLines[c] + base_center));
else
rect.moveTop(baseLines[c]);
rect.moveRight(right); rect.moveRight(right);
} }
rw = qMax(rw, rect.width()); rw = qMax(rw, rect.width());
if (visual_h_reversed)
rect.moveLeft(geometry.left() + geometry.right() - rect.x() - rect.width() + 1);
setItemGeometry(info.item, rect, mAnimate); setItemGeometry(info.item, rect, mAnimate);
} }
} }
@ -747,8 +770,9 @@ void LxQtPanelLayout::setGeometryHoriz(const QRect &geometry)
/************************************************ /************************************************
************************************************/ ************************************************/
void LxQtPanelLayout::setGeometryVert(const QRect &geometry) void LXQtPanelLayout::setGeometryVert(const QRect &geometry)
{ {
const bool visual_h_reversed = parentWidget() && parentWidget()->isRightToLeft();
// Calc expFactor for expandable plugins like TaskBar. // Calc expFactor for expandable plugins like TaskBar.
double expFactor; double expFactor;
{ {
@ -760,9 +784,11 @@ void LxQtPanelLayout::setGeometryVert(const QRect &geometry)
// Calc baselines for plugins like button. // Calc baselines for plugins like button.
QVector<int> baseLines(qMax(mLeftGrid->colCount(), mRightGrid->colCount())); QVector<int> baseLines(qMax(mLeftGrid->colCount(), mRightGrid->colCount()));
const int bw = geometry.width() / baseLines.count();
const int base_center = bw >> 1;
const int width_remain = 0 < bw ? geometry.width() % baseLines.size() : 0;
{ {
int bw = geometry.width() / baseLines.count(); int base = geometry.left();
int base = geometry.left() + (bw >> 1);
for (auto i = baseLines.begin(), i_e = baseLines.end(); i_e != i; ++i, base += bw) for (auto i = baseLines.begin(), i_e = baseLines.end(); i_e != i; ++i, base += bw)
{ {
*i = base; *i = base;
@ -770,7 +796,7 @@ void LxQtPanelLayout::setGeometryVert(const QRect &geometry)
} }
#if 0 #if 0
qDebug() << "** LxQtPanelLayout::setGeometryVert **************"; qDebug() << "** LXQtPanelLayout::setGeometryVert **************";
qDebug() << "geometry: " << geometry; qDebug() << "geometry: " << geometry;
qDebug() << "Left grid"; qDebug() << "Left grid";
@ -787,6 +813,7 @@ void LxQtPanelLayout::setGeometryVert(const QRect &geometry)
for (int r=0; r<mLeftGrid->rowCount(); ++r) for (int r=0; r<mLeftGrid->rowCount(); ++r)
{ {
int rh = 0; int rh = 0;
int remain = width_remain;
for (int c=0; c<mLeftGrid->usedColCount(); ++c) for (int c=0; c<mLeftGrid->usedColCount(); ++c)
{ {
const LayoutItemInfo &info = mLeftGrid->itemInfo(r, c); const LayoutItemInfo &info = mLeftGrid->itemInfo(r, c);
@ -807,12 +834,18 @@ void LxQtPanelLayout::setGeometryVert(const QRect &geometry)
else else
{ {
rect.setHeight(qMin(info.geometry.height(), geometry.height())); rect.setHeight(qMin(info.geometry.height(), geometry.height()));
rect.setWidth(qMin(info.geometry.width(), geometry.width())); const int width = qMin(qMin(info.geometry.width(), geometry.width()), bw + (0 < remain-- ? 1 : 0));
rect.moveCenter(QPoint(baseLines[c], 0)); rect.setWidth(width);
if (width < bw)
rect.moveCenter(QPoint(baseLines[c] + base_center, 0));
else
rect.moveLeft(baseLines[c]);
rect.moveTop(top); rect.moveTop(top);
} }
rh = qMax(rh, rect.height()); rh = qMax(rh, rect.height());
if (visual_h_reversed)
rect.moveLeft(geometry.left() + geometry.right() - rect.x() - rect.width() + 1);
setItemGeometry(info.item, rect, mAnimate); setItemGeometry(info.item, rect, mAnimate);
} }
} }
@ -825,6 +858,7 @@ void LxQtPanelLayout::setGeometryVert(const QRect &geometry)
for (int r=mRightGrid->rowCount()-1; r>=0; --r) for (int r=mRightGrid->rowCount()-1; r>=0; --r)
{ {
int rh = 0; int rh = 0;
int remain = width_remain;
for (int c=0; c<mRightGrid->usedColCount(); ++c) for (int c=0; c<mRightGrid->usedColCount(); ++c)
{ {
const LayoutItemInfo &info = mRightGrid->itemInfo(r, c); const LayoutItemInfo &info = mRightGrid->itemInfo(r, c);
@ -845,12 +879,18 @@ void LxQtPanelLayout::setGeometryVert(const QRect &geometry)
else else
{ {
rect.setHeight(qMin(info.geometry.height(), geometry.height())); rect.setHeight(qMin(info.geometry.height(), geometry.height()));
rect.setWidth(qMin(info.geometry.width(), geometry.width())); const int width = qMin(qMin(info.geometry.width(), geometry.width()), bw + (0 < remain-- ? 1 : 0));
rect.moveCenter(QPoint(baseLines[c], 0)); rect.setWidth(width);
if (width < bw)
rect.moveCenter(QPoint(baseLines[c] + base_center, 0));
else
rect.moveLeft(baseLines[c]);
rect.moveBottom(bottom); rect.moveBottom(bottom);
} }
rh = qMax(rh, rect.height()); rh = qMax(rh, rect.height());
if (visual_h_reversed)
rect.moveLeft(geometry.left() + geometry.right() - rect.x() - rect.width() + 1);
setItemGeometry(info.item, rect, mAnimate); setItemGeometry(info.item, rect, mAnimate);
} }
} }
@ -862,7 +902,7 @@ void LxQtPanelLayout::setGeometryVert(const QRect &geometry)
/************************************************ /************************************************
************************************************/ ************************************************/
void LxQtPanelLayout::invalidate() void LXQtPanelLayout::invalidate()
{ {
mLeftGrid->invalidate(); mLeftGrid->invalidate();
mRightGrid->invalidate(); mRightGrid->invalidate();
@ -874,7 +914,7 @@ void LxQtPanelLayout::invalidate()
/************************************************ /************************************************
************************************************/ ************************************************/
int LxQtPanelLayout::lineCount() const int LXQtPanelLayout::lineCount() const
{ {
return mLeftGrid->colCount(); return mLeftGrid->colCount();
} }
@ -883,7 +923,7 @@ int LxQtPanelLayout::lineCount() const
/************************************************ /************************************************
************************************************/ ************************************************/
void LxQtPanelLayout::setLineCount(int value) void LXQtPanelLayout::setLineCount(int value)
{ {
mLeftGrid->setColCount(value); mLeftGrid->setColCount(value);
mRightGrid->setColCount(value); mRightGrid->setColCount(value);
@ -894,7 +934,7 @@ void LxQtPanelLayout::setLineCount(int value)
/************************************************ /************************************************
************************************************/ ************************************************/
int LxQtPanelLayout::lineSize() const int LXQtPanelLayout::lineSize() const
{ {
return mLeftGrid->lineSize(); return mLeftGrid->lineSize();
} }
@ -903,7 +943,7 @@ int LxQtPanelLayout::lineSize() const
/************************************************ /************************************************
************************************************/ ************************************************/
void LxQtPanelLayout::setLineSize(int value) void LXQtPanelLayout::setLineSize(int value)
{ {
mLeftGrid->setLineSize(value); mLeftGrid->setLineSize(value);
mRightGrid->setLineSize(value); mRightGrid->setLineSize(value);
@ -914,7 +954,7 @@ void LxQtPanelLayout::setLineSize(int value)
/************************************************ /************************************************
************************************************/ ************************************************/
void LxQtPanelLayout::setPosition(ILxQtPanel::Position value) void LXQtPanelLayout::setPosition(ILXQtPanel::Position value)
{ {
mPosition = value; mPosition = value;
mLeftGrid->setHoriz(isHorizontal()); mLeftGrid->setHoriz(isHorizontal());
@ -925,17 +965,17 @@ void LxQtPanelLayout::setPosition(ILxQtPanel::Position value)
/************************************************ /************************************************
************************************************/ ************************************************/
bool LxQtPanelLayout::isHorizontal() const bool LXQtPanelLayout::isHorizontal() const
{ {
return mPosition == ILxQtPanel::PositionTop || return mPosition == ILXQtPanel::PositionTop ||
mPosition == ILxQtPanel::PositionBottom; mPosition == ILXQtPanel::PositionBottom;
} }
/************************************************ /************************************************
************************************************/ ************************************************/
bool LxQtPanelLayout::itemIsSeparate(QLayoutItem *item) bool LXQtPanelLayout::itemIsSeparate(QLayoutItem *item)
{ {
if (!item) if (!item)
return true; return true;
@ -951,7 +991,7 @@ bool LxQtPanelLayout::itemIsSeparate(QLayoutItem *item)
/************************************************ /************************************************
************************************************/ ************************************************/
void LxQtPanelLayout::startMovePlugin() void LXQtPanelLayout::startMovePlugin()
{ {
Plugin *plugin = qobject_cast<Plugin*>(sender()); Plugin *plugin = qobject_cast<Plugin*>(sender());
if (plugin) if (plugin)
@ -968,7 +1008,7 @@ void LxQtPanelLayout::startMovePlugin()
/************************************************ /************************************************
************************************************/ ************************************************/
void LxQtPanelLayout::finishMovePlugin() void LXQtPanelLayout::finishMovePlugin()
{ {
PluginMoveProcessor *moveProcessor = qobject_cast<PluginMoveProcessor*>(sender()); PluginMoveProcessor *moveProcessor = qobject_cast<PluginMoveProcessor*>(sender());
if (moveProcessor) if (moveProcessor)
@ -983,7 +1023,7 @@ void LxQtPanelLayout::finishMovePlugin()
/************************************************ /************************************************
************************************************/ ************************************************/
void LxQtPanelLayout::moveUpPlugin(Plugin * plugin) void LXQtPanelLayout::moveUpPlugin(Plugin * plugin)
{ {
const int i = indexOf(plugin); const int i = indexOf(plugin);
if (0 < i) if (0 < i)
@ -993,9 +1033,9 @@ void LxQtPanelLayout::moveUpPlugin(Plugin * plugin)
/************************************************ /************************************************
************************************************/ ************************************************/
void LxQtPanelLayout::addPlugin(Plugin * plugin) void LXQtPanelLayout::addPlugin(Plugin * plugin)
{ {
connect(plugin, &Plugin::startMove, this, &LxQtPanelLayout::startMovePlugin); connect(plugin, &Plugin::startMove, this, &LXQtPanelLayout::startMovePlugin);
const int prev_count = count(); const int prev_count = count();
addWidget(plugin); addWidget(plugin);

View File

@ -43,12 +43,12 @@ class QEvent;
class Plugin; class Plugin;
class LayoutItemGrid; class LayoutItemGrid;
class LXQT_PANEL_API LxQtPanelLayout : public QLayout class LXQT_PANEL_API LXQtPanelLayout : public QLayout
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit LxQtPanelLayout(QWidget *parent); explicit LXQtPanelLayout(QWidget *parent);
~LxQtPanelLayout(); ~LXQtPanelLayout();
void addItem(QLayoutItem *item); void addItem(QLayoutItem *item);
QLayoutItem *itemAt(int index) const; QLayoutItem *itemAt(int index) const;
@ -70,8 +70,8 @@ public:
int lineSize() const; int lineSize() const;
void setLineSize(int value); void setLineSize(int value);
ILxQtPanel::Position position() const { return mPosition; } ILXQtPanel::Position position() const { return mPosition; }
void setPosition(ILxQtPanel::Position value); void setPosition(ILXQtPanel::Position value);
static bool itemIsSeparate(QLayoutItem *item); static bool itemIsSeparate(QLayoutItem *item);
signals: signals:
@ -87,7 +87,7 @@ private:
mutable QSize mMinPluginSize; mutable QSize mMinPluginSize;
LayoutItemGrid *mLeftGrid; LayoutItemGrid *mLeftGrid;
LayoutItemGrid *mRightGrid; LayoutItemGrid *mRightGrid;
ILxQtPanel::Position mPosition; ILXQtPanel::Position mPosition;
bool mAnimate; bool mAnimate;

View File

@ -32,7 +32,6 @@
#define PANEL_MINIMUM_SIZE 16 #define PANEL_MINIMUM_SIZE 16
#define PANEL_MAXIMUM_SIZE 200 #define PANEL_MAXIMUM_SIZE 200
#define PANEL_HIDE_SIZE 4 #define PANEL_HIDE_SIZE 4
#define PANEL_HIDE_MARGIN (PANEL_HIDE_SIZE / 2)
#define PANEL_DEFAULT_ICON_SIZE 22 #define PANEL_DEFAULT_ICON_SIZE 22
#define PANEL_DEFAULT_LINE_COUNT 1 #define PANEL_DEFAULT_LINE_COUNT 1

View File

@ -36,10 +36,9 @@
/************************************************ /************************************************
************************************************/ ************************************************/
LxQtPanelPluginConfigDialog::LxQtPanelPluginConfigDialog(QSettings &settings, QWidget *parent) : LXQtPanelPluginConfigDialog::LXQtPanelPluginConfigDialog(PluginSettings &settings, QWidget *parent) :
QDialog(parent), QDialog(parent),
mSettings(settings), mSettings(settings)
mOldSettings(settings)
{ {
} }
@ -47,7 +46,7 @@ LxQtPanelPluginConfigDialog::LxQtPanelPluginConfigDialog(QSettings &settings, QW
/************************************************ /************************************************
************************************************/ ************************************************/
LxQtPanelPluginConfigDialog::~LxQtPanelPluginConfigDialog() LXQtPanelPluginConfigDialog::~LXQtPanelPluginConfigDialog()
{ {
} }
@ -55,7 +54,7 @@ LxQtPanelPluginConfigDialog::~LxQtPanelPluginConfigDialog()
/************************************************ /************************************************
************************************************/ ************************************************/
QSettings& LxQtPanelPluginConfigDialog::settings() const PluginSettings& LXQtPanelPluginConfigDialog::settings() const
{ {
return mSettings; return mSettings;
} }
@ -65,13 +64,13 @@ QSettings& LxQtPanelPluginConfigDialog::settings() const
/************************************************ /************************************************
************************************************/ ************************************************/
void LxQtPanelPluginConfigDialog::dialogButtonsAction(QAbstractButton *btn) void LXQtPanelPluginConfigDialog::dialogButtonsAction(QAbstractButton *btn)
{ {
QDialogButtonBox *box = qobject_cast<QDialogButtonBox*>(btn->parent()); QDialogButtonBox *box = qobject_cast<QDialogButtonBox*>(btn->parent());
if (box && box->buttonRole(btn) == QDialogButtonBox::ResetRole) if (box && box->buttonRole(btn) == QDialogButtonBox::ResetRole)
{ {
mOldSettings.loadToSettings(); mSettings.loadFromCache();
loadSettings(); loadSettings();
} }
else else
@ -84,7 +83,7 @@ void LxQtPanelPluginConfigDialog::dialogButtonsAction(QAbstractButton *btn)
/************************************************ /************************************************
************************************************/ ************************************************/
void LxQtPanelPluginConfigDialog::setComboboxIndexByData(QComboBox *comboBox, const QVariant &data, int defaultIndex) const void LXQtPanelPluginConfigDialog::setComboboxIndexByData(QComboBox *comboBox, const QVariant &data, int defaultIndex) const
{ {
int index = comboBox ->findData(data); int index = comboBox ->findData(data);
if (index < 0) if (index < 0)

View File

@ -31,19 +31,20 @@
#include <QAbstractButton> #include <QAbstractButton>
#include <QDialog> #include <QDialog>
#include <LXQt/Settings>
#include "lxqtpanelglobals.h" #include "lxqtpanelglobals.h"
#include "pluginsettings.h"
class QComboBox; class QComboBox;
class LXQT_PANEL_API LxQtPanelPluginConfigDialog : public QDialog class LXQT_PANEL_API LXQtPanelPluginConfigDialog : public QDialog
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit LxQtPanelPluginConfigDialog(QSettings &settings, QWidget *parent = 0); explicit LXQtPanelPluginConfigDialog(PluginSettings &settings, QWidget *parent = nullptr);
virtual ~LxQtPanelPluginConfigDialog(); explicit LXQtPanelPluginConfigDialog(PluginSettings *settings, QWidget *parent = nullptr) : LXQtPanelPluginConfigDialog(*settings, parent) {}
virtual ~LXQtPanelPluginConfigDialog();
QSettings& settings() const; PluginSettings &settings() const;
protected slots: protected slots:
/* /*
@ -56,8 +57,7 @@ protected:
void setComboboxIndexByData(QComboBox *comboBox, const QVariant &data, int defaultIndex = 0) const; void setComboboxIndexByData(QComboBox *comboBox, const QVariant &data, int defaultIndex = 0) const;
private: private:
QSettings &mSettings; PluginSettings &mSettings;
LxQt::SettingsCache mOldSettings;
}; };

View File

@ -36,7 +36,7 @@
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
LxQtPanelApplication app(argc, argv); LXQtPanelApplication app(argc, argv);
return app.exec(); return app.exec();
} }

View File

@ -1,57 +1,35 @@
.TH lxqt-panel "1" "September 2012" "LXQt\ 0.5.0" "LXQt\ Module" .TH lxqt-panel "1" "2015-11-05" "LXQt 0.10.0" "LXQt Desktop Panel Module"
.SH NAME .SH NAME
lxqt-panel \- Panel of \fBLXQt\fR: the faster and lighter QT Desktop Environment lxqt-panel \- Desktop panel for \fBLXQt\fR: The Lightweight Qt Desktop Environment
.SH SYNOPSIS .SH SYNOPSIS
.B lxqt-panel .B lxqt-panel
.br .br
.SH DESCRIPTION .SH DESCRIPTION
This module adds a panel to the desktop. This module adds a panel, with optional plugins, to the desktop.
.P
.P
The \fBLXQt modules\fR are desktop independent tools,
and operate as daemons for the local user for desktop specific operations.
.P
\fBLXQt\fR is an advanced, easy-to-use, and fast desktop environment based on Qt
technologies, ships several core desktop components, all of which are optional:
.P
* Panel \fI(this)\fR
* Desktop
* Application launcher
* Settings center
* Session handler
* Polkit handler
* SSH password access
* Display manager handler
.P
These components perform similar actions to those available in other desktop
environments, and their name is self-descriptive. They are usually not launched
by hand but automatically, when choosing a \fBLXQt\fR session in the Display
Manager.
.SH BEHAVIOR .SH BEHAVIOR
The module can be run standard alone, and also autostarted at logon. Show a bar panel The panel can be run independently of \fBLXQt\fR, autostarted at logon, and have
by default in bottom of desktop. multiple instances. A horizontal bottom panel shows by default on the desktop,
but the alignment, size, autohide, transparency (requires compositor), and other
attributes are user configurable.
.P .P
The panel works with plugins, each component are a plugin, like the menu or the volume icon. The panel is comprised of plugins which provide a visual widget; like the menu,
clock, or volume. They can be added or removed in the panel Widget settings.
.P .P
Several plugins are loaded by default, the desktop menu and windows workspaces can also managed here. Several plugins are loaded by default; the desktop menu and windows workspaces
are also managed here.
.SH CONFIGURATIONS .SH CONFIGURATIONS
By right clickin over there show config setting options for each plugins and also panel itsefl. Right-click over any plugin to reach the panel Configure settings option, or
.SH AUTOSTART that of each respective plugin.
The module only are showed on \fBLXQt\fR desktop environment, but you can create an autostart action
for you prefered desktop environment.
.SH "REPORTING BUGS" .SH "REPORTING BUGS"
Report bugs to https://github.com/LXDE/LXQt/issues Report bugs to https://github.com/LXDE/LXQt/issues
.SH "SEE ALSO" .SH "SEE ALSO"
\fBLXQt\fR it has been tailored for users who value simplicity, speed, and .\" any module must refer to the session application, for module overview and initiation
an intuitive interface, also intended for less powerful machines. See: \fBstartlxqt.1\fR LXQt session initialization and launch script (e.g. in \fB.xinitrc\fR)
.\" any module must refers to session app, for more info on start it
.P .P
\fBlxqt-session.1\fR LXQt for manage LXQt complete environment \fBlxqt-session.1\fR LXQt \fIoverview\fR and complete session environment
.P .P
\fBstart-lxqt.1\fR LXQt display management independient starup. \fBlxqt-config-session.1\fR LXQt default and autostart applications settings,
plus environment settings
.P .P
\fBlxqt-config.1\fR LXQt config center application for performing settings \fBlxqt-config.1\fR LXQt settings Configuration Center interface
.P .P
.SH AUTHOR
This manual page was created by \fBPICCORO Lenz McKAY\fR \fI<mckaygerhard@gmail.com>\fR
for \fBLXQt\fR project and VENENUX GNU/Linux but can be used by others.

View File

@ -34,7 +34,7 @@
#include <QDebug> #include <QDebug>
PanelPluginsModel::PanelPluginsModel(LxQtPanel * panel, PanelPluginsModel::PanelPluginsModel(LXQtPanel * panel,
QString const & namesKey, QString const & namesKey,
QStringList const & desktopDirs, QStringList const & desktopDirs,
QObject * parent/* = nullptr*/) QObject * parent/* = nullptr*/)
@ -69,9 +69,9 @@ QVariant PanelPluginsModel::data(const QModelIndex & index, int role/* = Qt::Dis
{ {
case Qt::DisplayRole: case Qt::DisplayRole:
if (plugin.second.isNull()) if (plugin.second.isNull())
ret = QStringLiteral("<b>Unknown</b> (%1)").arg(plugin.first); ret = QString("<b>Unknown</b> (%1)").arg(plugin.first);
else else
ret = QStringLiteral("<b>%1</b> (%2)").arg(plugin.second->name(), plugin.first); ret = QString("<b>%1</b> (%2)").arg(plugin.second->name(), plugin.first);
break; break;
case Qt::DecorationRole: case Qt::DecorationRole:
if (plugin.second.isNull()) if (plugin.second.isNull())
@ -96,7 +96,7 @@ QStringList PanelPluginsModel::pluginNames() const
QStringList names; QStringList names;
for (auto const & p : mPlugins) for (auto const & p : mPlugins)
names.append(p.first); names.append(p.first);
return std::move(names); return names;
} }
QList<Plugin *> PanelPluginsModel::plugins() const QList<Plugin *> PanelPluginsModel::plugins() const
@ -105,7 +105,7 @@ QList<Plugin *> PanelPluginsModel::plugins() const
for (auto const & p : mPlugins) for (auto const & p : mPlugins)
if (!p.second.isNull()) if (!p.second.isNull())
plugins.append(p.second.data()); plugins.append(p.second.data());
return std::move(plugins); return plugins;
} }
Plugin* PanelPluginsModel::pluginByName(QString name) const Plugin* PanelPluginsModel::pluginByName(QString name) const
@ -127,9 +127,9 @@ Plugin const * PanelPluginsModel::pluginByID(QString id) const
return nullptr; return nullptr;
} }
void PanelPluginsModel::addPlugin(const LxQt::PluginInfo &desktopFile) void PanelPluginsModel::addPlugin(const LXQt::PluginInfo &desktopFile)
{ {
if (dynamic_cast<LxQtPanelApplication const *>(qApp)->isPluginSingletonAndRunnig(desktopFile.id())) if (dynamic_cast<LXQtPanelApplication const *>(qApp)->isPluginSingletonAndRunnig(desktopFile.id()))
return; return;
QString name = findNewPluginSettingsGroup(desktopFile.id()); QString name = findNewPluginSettingsGroup(desktopFile.id());
@ -155,7 +155,6 @@ void PanelPluginsModel::removePlugin(pluginslist_t::iterator plugin)
beginRemoveRows(QModelIndex(), row, row); beginRemoveRows(QModelIndex(), row, row);
mPlugins.erase(plugin); mPlugins.erase(plugin);
endRemoveRows(); endRemoveRows();
mActive = mPlugins.isEmpty() ? QModelIndex() : createIndex(mPlugins.size() > row ? row : row - 1, 0);
emit pluginRemoved(p); // p can be nullptr emit pluginRemoved(p); // p can be nullptr
mPanel->settings()->setValue(mNamesKey, pluginNames()); mPanel->settings()->setValue(mNamesKey, pluginNames());
if (nullptr != p) if (nullptr != p)
@ -174,17 +173,41 @@ void PanelPluginsModel::removePlugin()
void PanelPluginsModel::movePlugin(Plugin * plugin, QString const & nameAfter) void PanelPluginsModel::movePlugin(Plugin * plugin, QString const & nameAfter)
{ {
//merge list of plugins (try to preserve original position) //merge list of plugins (try to preserve original position)
//subtract mPlugin.begin() from the found Plugins to get the model index
const int from = const int from =
std::find_if(mPlugins.begin(), mPlugins.end(), [plugin] (pluginslist_t::const_reference obj) { return plugin == obj.second.data(); }) std::find_if(mPlugins.begin(), mPlugins.end(), [plugin] (pluginslist_t::const_reference obj) { return plugin == obj.second.data(); })
- mPlugins.begin(); - mPlugins.begin();
const int to = const int to =
std::find_if(mPlugins.begin(), mPlugins.end(), [nameAfter] (pluginslist_t::const_reference obj) { return nameAfter == obj.first; }) std::find_if(mPlugins.begin(), mPlugins.end(), [nameAfter] (pluginslist_t::const_reference obj) { return nameAfter == obj.first; })
- mPlugins.begin(); - mPlugins.begin();
/* 'from' is the current position of the Plugin to be moved ("moved Plugin"),
* 'to' is the position of the Plugin behind the one that is being moved
* ("behind Plugin"). There are several cases to distinguish:
* 1. from > to: The moved Plugin had been behind the behind Plugin before
* and is moved to the front of the behind Plugin. The moved Plugin will
* be inserted at position 'to', the behind Plugin and all the following
* Plugins (until the former position of the moved Plugin) will increment
* their indexes.
* 2. from < to: The moved Plugin had already been located before the
* behind Plugin. In this case, the move operation only reorders the
* Plugins before the behind Plugin. All the Plugins between the moved
* Plugin and the behind Plugin will decrement their index. Therefore, the
* movedPlugin will not be at position 'to' but rather on position 'to-1'.
* 3. from == to: This does not make sense, we catch this case to prevent
* errors.
* 4. from == to-1: The moved Plugin has not moved because it had already
* been located in front of the behind Plugin.
*/
const int to_plugins = from < to ? to - 1 : to; const int to_plugins = from < to ? to - 1 : to;
if (from != to && from != to_plugins) if (from != to && from != to_plugins)
{ {
/* Although the new position of the moved Plugin will be 'to-1' if
* from < to, we insert 'to' here. This is exactly how it is done
* in the Qt documentation.
*/
beginMoveRows(QModelIndex(), from, from, QModelIndex(), to); beginMoveRows(QModelIndex(), from, from, QModelIndex(), to);
// For the QList::move method, use the right position
mPlugins.move(from, to_plugins); mPlugins.move(from, to_plugins);
endMoveRows(); endMoveRows();
emit pluginMoved(plugin); emit pluginMoved(plugin);
@ -210,8 +233,27 @@ void PanelPluginsModel::loadPlugins(QStringList const & desktopDirs)
qWarning() << QString("Section \"%1\" not found in %2.").arg(name, mPanel->settings()->fileName()); qWarning() << QString("Section \"%1\" not found in %2.").arg(name, mPanel->settings()->fileName());
continue; continue;
} }
#ifdef WITH_SCREENSAVER_FALLBACK
if (QStringLiteral("screensaver") == type)
{
//plugin-screensaver was dropped
//convert settings to plugin-quicklaunch
const QString & lock_desktop = QStringLiteral(LXQT_LOCK_DESKTOP);
qWarning().noquote() << "Found deprecated plugin of type 'screensaver', migrating to 'quicklaunch' with '" << lock_desktop << '\'';
type = QStringLiteral("quicklaunch");
LXQt::Settings * settings = mPanel->settings();
settings->beginGroup(name);
settings->remove(QString{});//remove all existing keys
settings->setValue(QStringLiteral("type"), type);
settings->beginWriteArray(QStringLiteral("apps"), 1);
settings->setArrayIndex(0);
settings->setValue(QStringLiteral("desktop"), lock_desktop);
settings->endArray();
settings->endGroup();
}
#endif
LxQt::PluginInfoList list = LxQt::PluginInfo::search(desktopDirs, "LxQtPanel/Plugin", QString("%1.desktop").arg(type)); LXQt::PluginInfoList list = LXQt::PluginInfo::search(desktopDirs, "LXQtPanel/Plugin", QString("%1.desktop").arg(type));
if( !list.count()) if( !list.count())
{ {
qWarning() << QString("Plugin \"%1\" not found.").arg(type); qWarning() << QString("Plugin \"%1\" not found.").arg(type);
@ -226,12 +268,12 @@ void PanelPluginsModel::loadPlugins(QStringList const & desktopDirs)
} }
} }
QPointer<Plugin> PanelPluginsModel::loadPlugin(LxQt::PluginInfo const & desktopFile, QString const & settingsGroup) QPointer<Plugin> PanelPluginsModel::loadPlugin(LXQt::PluginInfo const & desktopFile, QString const & settingsGroup)
{ {
std::unique_ptr<Plugin> plugin(new Plugin(desktopFile, mPanel->settings()->fileName(), settingsGroup, mPanel)); std::unique_ptr<Plugin> plugin(new Plugin(desktopFile, mPanel->settings(), settingsGroup, mPanel));
if (plugin->isLoaded()) if (plugin->isLoaded())
{ {
connect(mPanel, &LxQtPanel::realigned, plugin.get(), &Plugin::realign); connect(mPanel, &LXQtPanel::realigned, plugin.get(), &Plugin::realign);
connect(plugin.get(), &Plugin::remove, connect(plugin.get(), &Plugin::remove,
this, static_cast<void (PanelPluginsModel::*)()>(&PanelPluginsModel::removePlugin)); this, static_cast<void (PanelPluginsModel::*)()>(&PanelPluginsModel::removePlugin));
return plugin.release(); return plugin.release();
@ -246,28 +288,33 @@ QString PanelPluginsModel::findNewPluginSettingsGroup(const QString &pluginType)
groups.sort(); groups.sort();
// Generate new section name // Generate new section name
QString pluginName = QString("%1").arg(pluginType);
if (!groups.contains(pluginName))
return pluginName;
else
{
for (int i = 2; true; ++i) for (int i = 2; true; ++i)
if (!groups.contains(QStringLiteral("%1%2").arg(pluginType).arg(i))) {
return QStringLiteral("%1%2").arg(pluginType).arg(i); pluginName = QString("%1%2").arg(pluginType).arg(i);
if (!groups.contains(pluginName))
return pluginName;
}
}
} }
void PanelPluginsModel::onActivatedIndex(QModelIndex const & index) bool PanelPluginsModel::isIndexValid(QModelIndex const & index) const
{ {
mActive = index; return index.isValid() && QModelIndex() == index.parent()
&& 0 == index.column() && mPlugins.size() > index.row();
} }
bool PanelPluginsModel::isActiveIndexValid() const void PanelPluginsModel::onMovePluginUp(QModelIndex const & index)
{ {
return mActive.isValid() && QModelIndex() == mActive.parent() if (!isIndexValid(index))
&& 0 == mActive.column() && mPlugins.size() > mActive.row();
}
void PanelPluginsModel::onMovePluginUp()
{
if (!isActiveIndexValid())
return; return;
const int row = mActive.row(); const int row = index.row();
if (0 >= row) if (0 >= row)
return; //can't move up return; //can't move up
@ -285,12 +332,12 @@ void PanelPluginsModel::onMovePluginUp()
mPanel->settings()->setValue(mNamesKey, pluginNames()); mPanel->settings()->setValue(mNamesKey, pluginNames());
} }
void PanelPluginsModel::onMovePluginDown() void PanelPluginsModel::onMovePluginDown(QModelIndex const & index)
{ {
if (!isActiveIndexValid()) if (!isIndexValid(index))
return; return;
const int row = mActive.row(); const int row = index.row();
if (mPlugins.size() <= row + 1) if (mPlugins.size() <= row + 1)
return; //can't move down return; //can't move down
@ -308,22 +355,22 @@ void PanelPluginsModel::onMovePluginDown()
mPanel->settings()->setValue(mNamesKey, pluginNames()); mPanel->settings()->setValue(mNamesKey, pluginNames());
} }
void PanelPluginsModel::onConfigurePlugin() void PanelPluginsModel::onConfigurePlugin(QModelIndex const & index)
{ {
if (!isActiveIndexValid()) if (!isIndexValid(index))
return; return;
Plugin * const plugin = mPlugins[mActive.row()].second.data(); Plugin * const plugin = mPlugins[index.row()].second.data();
if (nullptr != plugin && (ILxQtPanelPlugin::HaveConfigDialog & plugin->iPlugin()->flags())) if (nullptr != plugin && (ILXQtPanelPlugin::HaveConfigDialog & plugin->iPlugin()->flags()))
plugin->showConfigureDialog(); plugin->showConfigureDialog();
} }
void PanelPluginsModel::onRemovePlugin() void PanelPluginsModel::onRemovePlugin(QModelIndex const & index)
{ {
if (!isActiveIndexValid()) if (!isIndexValid(index))
return; return;
auto plugin = mPlugins.begin() + mActive.row(); auto plugin = mPlugins.begin() + index.row();
if (plugin->second.isNull()) if (plugin->second.isNull())
removePlugin(std::move(plugin)); removePlugin(std::move(plugin));
else else

View File

@ -29,74 +29,311 @@
#include <QAbstractListModel> #include <QAbstractListModel>
#include <memory> #include <memory>
namespace LxQt namespace LXQt
{ {
class PluginInfo; class PluginInfo;
struct PluginData; struct PluginData;
} }
class LxQtPanel; class LXQtPanel;
class Plugin; class Plugin;
/*!
* \brief The PanelPluginsModel class implements the Model part of the
* Qt Model/View architecture for the Plugins, i.e. it is the interface
* to access the Plugin data associated with this Panel. The
* PanelPluginsModel takes care for read-access as well as changes
* like adding, removing or moving Plugins.
*/
class PanelPluginsModel : public QAbstractListModel class PanelPluginsModel : public QAbstractListModel
{ {
Q_OBJECT Q_OBJECT
public: public:
PanelPluginsModel(LxQtPanel * panel, PanelPluginsModel(LXQtPanel * panel,
QString const & namesKey, QString const & namesKey,
QStringList const & desktopDirs, QStringList const & desktopDirs,
QObject * parent = nullptr); QObject * parent = nullptr);
~PanelPluginsModel(); ~PanelPluginsModel();
/*!
* \brief rowCount returns the number of Plugins. It overrides/implements
* QAbstractListModel::rowCount().
* \param parent The parameter parent should be omitted to get the number of
* Plugins. If it is given and a valid model index, the method returns 0
* because PanelPluginsModel is not a hierarchical model.
*/
virtual int rowCount(const QModelIndex & parent = QModelIndex()) const override; virtual int rowCount(const QModelIndex & parent = QModelIndex()) const override;
/*!
* \brief data returns the Plugin data as defined by the Model/View
* architecture. The Plugins itself can be accessed with the role
* Qt::UserRole but they can also be accessed by the methods plugins(),
* pluginByName() and pluginByID(). This method overrides/implements
* QAbstractListModel::data().
* \param index should be a valid model index to determine the Plugin
* that should be read.
* \param role The Qt::ItemDataRole to determine what kind of data should
* be read, can be one of the following:
* 1. Qt::DisplayRole to return a string that describes the Plugin.
* 2. Qt::DecorationRole to return an icon for the Plugin.
* 3. Qt::UserRole to return a Plugin*.
* \return The data as determined by index and role.
*/
virtual QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const override; virtual QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const override;
/*!
* \brief flags returns the item flags for the given model index. For
* all Plugins, this is the same:
* Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemNeverHasChildren.
*/
virtual Qt::ItemFlags flags(const QModelIndex & index) const override; virtual Qt::ItemFlags flags(const QModelIndex & index) const override;
/*!
* \brief pluginNames returns a list of names for all the Plugins in
* this panel. The names are not the human-readable names but the names
* that are used to identify the Plugins, e.g. in the config files. These
* names can be used in the method pluginByName() to get a corresponding
* Plugin.
*
* The plugin names are normally chosen to be equal to the
* filename of the corresponding *.desktop-file. If multiple instances
* of a single plugin-type are created, their names are created by
* appending increasing numbers, e.g. 'mainmenu' and 'mainmenu2'.
*
* \sa findNewPluginSettingsGroup
*/
QStringList pluginNames() const; QStringList pluginNames() const;
/*!
* \brief plugins returns a list of Plugins in this panel.
*/
QList<Plugin *> plugins() const; QList<Plugin *> plugins() const;
/*!
* \brief pluginByName gets a Plugin by its name.
* \param name is the name of the plugin as it is used in the
* config files. A list of names can be retrieved with the
* method pluginNames().
* \return the Plugin with the given name.
*
* \sa pluginNames
*/
Plugin *pluginByName(QString name) const; Plugin *pluginByName(QString name) const;
/*!
* \brief pluginByID gets a Plugin by its ID.
* \param id is the *.desktop-file-ID of the plugin which in turn is the
* QFileInfo::completeBaseName() of the desktop-file, e.g. "mainmenu".
*
* As these IDs are chosen according to the corresponding
* desktop-file, these IDs are not unique. If multiple
* instances of a single plugin-type are created, they share
* the same ID in this sense. Then, this method will return
* the first plugin of the given type.
* \return the first Plugin found with the given ID.
*/
Plugin const *pluginByID(QString id) const; Plugin const *pluginByID(QString id) const;
/*! /*!
* \param plugin plugin that has been moved * \brief movePlugin moves a Plugin in the underlying data.
* \param nameAfter name of plugin that is right after moved plugin *
* This method is useful whenever a Plugin should be moved several
* positions at once. If a Plugin should only be moved one position
* up or down, consider using onMovePluginUp or onMovePluginDown.
*
* \param plugin Plugin that has been moved
* \param nameAfter name of the Plugin that should be located after
* the moved Plugin after the move operation, so this parameter
* determines the new position of plugin. If an empty string is
* given, plugin will be moved to the end of the list.
*
* \note This method is especially useful for drag and drop reordering.
* Therefore, it will be called whenever the user moves a Plugin in
* the panel ("Move Plugin" in the context menu of the panel).
*
* \sa onMovePluginUp, onMovePluginDown
*/ */
void movePlugin(Plugin * plugin, QString const & nameAfter); void movePlugin(Plugin * plugin, QString const & nameAfter);
signals: signals:
/*!
* \brief pluginAdded gets emitted whenever a new Plugin is added
* to the panel.
*/
void pluginAdded(Plugin * plugin); void pluginAdded(Plugin * plugin);
/*!
* \brief pluginRemoved gets emitted whenever a Plugin is removed.
* \param plugin The Plugin that was removed. This could be a nullptr.
*/
void pluginRemoved(Plugin * plugin); void pluginRemoved(Plugin * plugin);
/*!
* \brief pluginMoved gets emitted whenever a Plugin is moved.
*
* This signal gets emitted in movePlugin, onMovePluginUp and
* onMovePluginDown.
*
* \param plugin The Plugin that was moved. This could be a nullptr.
*
* \sa pluginMovedUp
*/
void pluginMoved(Plugin * plugin); //plugin can be nullptr in case of move of not loaded plugin void pluginMoved(Plugin * plugin); //plugin can be nullptr in case of move of not loaded plugin
/*! /*!
* Emiting only move-up for simplification of using (and problematic layout/list move) * \brief pluginMovedUp gets emitted whenever a Plugin is moved a single
* slot upwards.
*
* When a Plugin is moved a single slot upwards, this signal will be
* emitted additionally to the pluginMoved signal so that two signals
* get emitted.
*
* If a Plugin is moved downwards, that Plugin will swap places with
* the following Plugin so that the result equals moving the following
* Plugin a single slot upwards. So, whenever two adjacent Plugins
* swap their places, this signal gets emitted with the Plugin that
* moves upwards as parameter.
*
* For simplified use, only this signal is implemented. There is no
* similar pluginMovedDown-signal.
*
* This signal gets emitted from onMovePluginUp and onMovePluginDown.
*
* \param plugin The Plugin that moved a slot upwards.
*
* \sa pluginMoved
*/ */
void pluginMovedUp(Plugin * plugin); void pluginMovedUp(Plugin * plugin);
public slots: public slots:
void addPlugin(const LxQt::PluginInfo &desktopFile); /*!
* \brief addPlugin Adds a new Plugin to the model.
*
* \param desktopFile The PluginInfo (which inherits XdgDesktopFile)
* for the Plugin that should be added.
*
* \note AddPluginDialog::pluginSelected is connected to this slot.
*/
void addPlugin(const LXQt::PluginInfo &desktopFile);
/*!
* \brief removePlugin Removes a Plugin from the model.
*
* The Plugin to remove is identified by the QObject::sender() method
* when the slot is called. Therefore, this method should only be called
* by connecting a signal that a Plugin will emit to this slot.
* Otherwise, nothing will happen.
*
* \note Plugin::remove is connected to this slot as soon as the
* Plugin is loaded in the PanelPluginsModel.
*/
void removePlugin(); void removePlugin();
// slots for configuration dialog // slots for configuration dialog
void onActivatedIndex(QModelIndex const & index); /*!
void onMovePluginUp(); * \brief onMovePluginUp Moves the Plugin corresponding to the given
void onMovePluginDown(); * model index a slot upwards.
void onConfigurePlugin(); *
void onRemovePlugin(); * \note The 'Up' button in the configuration widget is connected to this
* slot.
*/
void onMovePluginUp(QModelIndex const & index);
/*!
* \brief onMovePluginDown Moves the Plugin corresponding to the given
* model index a slot downwards.
*
* \note The 'Down' button in the configuration widget is connected to this
* slot.
*/
void onMovePluginDown(QModelIndex const & index);
/*!
* \brief onConfigurePlugin If the Plugin corresponding to the given
* model index has a config dialog (checked via the flag
* ILXQtPanelPlugin::HaveConfigDialog), this method shows
* it by calling plugin->showConfigureDialog().
*
* \note The 'Configure' button in the configuration widget is connected to
* this slot.
*/
void onConfigurePlugin(QModelIndex const & index);
/*!
* \brief onRemovePlugin Removes the Plugin corresponding to the given
* model index from the Model.
*
* \note The 'Remove' button in the configuration widget is connected to
* this slot.
*/
void onRemovePlugin(QModelIndex const & index);
private: private:
/*!
* \brief pluginslist_t is the data type used for mPlugins which stores
* all the Plugins.
*
* \sa mPlugins
*/
typedef QList<QPair <QString/*name*/, QPointer<Plugin> > > pluginslist_t; typedef QList<QPair <QString/*name*/, QPointer<Plugin> > > pluginslist_t;
private: private:
/*!
* \brief loadPlugins Loads all the Plugins.
* \param desktopDirs These directories are scanned for corresponding
* .desktop-files which are necessary to load the plugins.
*/
void loadPlugins(QStringList const & desktopDirs); void loadPlugins(QStringList const & desktopDirs);
QPointer<Plugin> loadPlugin(LxQt::PluginInfo const & desktopFile, QString const & settingsGroup); /*!
* \brief loadPlugin Loads a Plugin and connects signals and slots.
* \param desktopFile The desktop file that specifies how to load the
* Plugin.
* \param settingsGroup QString which specifies the settings group. This
* will only be redirected to the Plugin so that it knows how to read
* its settings.
* \return A QPointer to the Plugin that was loaded.
*/
QPointer<Plugin> loadPlugin(LXQt::PluginInfo const & desktopFile, QString const & settingsGroup);
/*!
* \brief findNewPluginSettingsGroup Creates a name for a new Plugin
* that is not yet present in the settings file. Whenever multiple
* instances of a single Plugin type are created, they have to be
* distinguished by this name.
*
* The first Plugin of a given type will be named like the type, e.g.
* "mainmenu". If a name is already present, this method tries to
* find a free name by appending increasing integers (starting with 2),
* e.g. "mainmenu2". If, for example, only "mainmenu2" exists because
* "mainmenu" was deleted, "mainmenu" would be returned. So, the method
* always finds the first suitable name that is not yet present in the
* settings file.
* \param pluginType Type of the Plugin.
* \return The created name for the Plugin.
*/
QString findNewPluginSettingsGroup(const QString &pluginType) const; QString findNewPluginSettingsGroup(const QString &pluginType) const;
bool isActiveIndexValid() const; /*!
* \brief isIndexValid Checks if a given model index is valid for the
* underlying data (column 0, row lower than number of Plugins and
* so on).
*/
bool isIndexValid(QModelIndex const & index) const;
/*!
* \brief removePlugin Removes a given Plugin from the model.
*/
void removePlugin(pluginslist_t::iterator plugin); void removePlugin(pluginslist_t::iterator plugin);
/*!
* \brief mNamesKey The key to the settings-entry that stores the
* names of the Plugins in a panel. Set upon creation, passed as
* a parameter by the panel.
*/
const QString mNamesKey; const QString mNamesKey;
/*!
* \brief mPlugins Stores all the Plugins.
*
* mPlugins is a QList of elements while each element corresponds to a
* single Plugin. Each element is a QPair of a QString and a QPointer
* while the QPointer points to a Plugin.
*
* To access the elements, you can use indexing or an iterator on the
* list. For each element p, p.first is the name of the Plugin as it
* is used in the configuration files, p.second.data() is the Plugin.
*
* \sa pluginslist_t
*/
pluginslist_t mPlugins; pluginslist_t mPlugins;
LxQtPanel * mPanel; /*!
QPersistentModelIndex mActive; * \brief mPanel Stores a reference to the LXQtPanel.
*/
LXQtPanel * mPanel;
}; };
Q_DECLARE_METATYPE(Plugin const *) Q_DECLARE_METATYPE(Plugin const *)

View File

@ -28,6 +28,7 @@
#include "plugin.h" #include "plugin.h"
#include "ilxqtpanelplugin.h" #include "ilxqtpanelplugin.h"
#include "pluginsettings_p.h"
#include "lxqtpanel.h" #include "lxqtpanel.h"
#include <QDebug> #include <QDebug>
#include <QProcessEnvironment> #include <QProcessEnvironment>
@ -41,7 +42,7 @@
#include <QMenu> #include <QMenu>
#include <QMouseEvent> #include <QMouseEvent>
#include <QApplication> #include <QApplication>
#include <QCryptographicHash> #include <QWindow>
#include <memory> #include <memory>
#include <LXQt/Settings> #include <LXQt/Settings>
@ -50,37 +51,41 @@
// statically linked built-in plugins // statically linked built-in plugins
#include "../plugin-clock/lxqtclock.h" // clock #include "../plugin-clock/lxqtclock.h" // clock
extern void * loadPluginTranslation_clock_helper;
#include "../plugin-desktopswitch/desktopswitch.h" // desktopswitch #include "../plugin-desktopswitch/desktopswitch.h" // desktopswitch
extern void * loadPluginTranslation_desktopswitch_helper;
#include "../plugin-mainmenu/lxqtmainmenu.h" // mainmenu #include "../plugin-mainmenu/lxqtmainmenu.h" // mainmenu
extern void * loadPluginTranslation_mainmenu_helper;
#include "../plugin-quicklaunch/lxqtquicklaunchplugin.h" // quicklaunch #include "../plugin-quicklaunch/lxqtquicklaunchplugin.h" // quicklaunch
extern void * loadPluginTranslation_quicklaunch_helper;
#include "../plugin-showdesktop/showdesktop.h" // showdesktop #include "../plugin-showdesktop/showdesktop.h" // showdesktop
extern void * loadPluginTranslation_showdesktop_helper;
#include "../plugin-spacer/spacer.h" // spacer #include "../plugin-spacer/spacer.h" // spacer
extern void * loadPluginTranslation_spacer_helper;
#include "../plugin-statusnotifier/statusnotifier.h" // statusnotifier #include "../plugin-statusnotifier/statusnotifier.h" // statusnotifier
extern void * loadPluginTranslation_statusnotifier_helper;
#include "../plugin-taskbar/lxqttaskbarplugin.h" // taskbar #include "../plugin-taskbar/lxqttaskbarplugin.h" // taskbar
extern void * loadPluginTranslation_taskbar_helper;
#include "../plugin-tray/lxqttrayplugin.h" // tray #include "../plugin-tray/lxqttrayplugin.h" // tray
extern void * loadPluginTranslation_tray_helper;
#include "../plugin-worldclock/lxqtworldclock.h" // worldclock #include "../plugin-worldclock/lxqtworldclock.h" // worldclock
extern void * loadPluginTranslation_worldclock_helper;
QColor Plugin::mMoveMarkerColor= QColor(255, 0, 0, 255); QColor Plugin::mMoveMarkerColor= QColor(255, 0, 0, 255);
/************************************************ /************************************************
************************************************/ ************************************************/
Plugin::Plugin(const LxQt::PluginInfo &desktopFile, const QString &settingsFile, const QString &settingsGroup, LxQtPanel *panel) : Plugin::Plugin(const LXQt::PluginInfo &desktopFile, LXQt::Settings *settings, const QString &settingsGroup, LXQtPanel *panel) :
QFrame(panel), QFrame(panel),
mDesktopFile(desktopFile), mDesktopFile(desktopFile),
mPluginLoader(0), mPluginLoader(0),
mPlugin(0), mPlugin(0),
mPluginWidget(0), mPluginWidget(0),
mAlignment(AlignLeft), mAlignment(AlignLeft),
mSettingsGroup(settingsGroup),
mPanel(panel) mPanel(panel)
{ {
mSettings = PluginSettingsFactory::create(settings, settingsGroup);
mSettings = new LxQt::Settings(settingsFile, QSettings::IniFormat, this);
connect(mSettings, SIGNAL(settingsChanged()), this, SLOT(settingsChanged()));
mSettings->beginGroup(settingsGroup);
mSettingsHash = calcSettingsHash();
setWindowTitle(desktopFile.name()); setWindowTitle(desktopFile.name());
mName = desktopFile.name(); mName = desktopFile.name();
@ -90,7 +95,7 @@ Plugin::Plugin(const LxQt::PluginInfo &desktopFile, const QString &settingsFile,
dirs << PLUGIN_DIR; dirs << PLUGIN_DIR;
bool found = false; bool found = false;
if(ILxQtPanelPluginLibrary const * pluginLib = findStaticPlugin(desktopFile.id())) if(ILXQtPanelPluginLibrary const * pluginLib = findStaticPlugin(desktopFile.id()))
{ {
// this is a static plugin // this is a static plugin
found = true; found = true;
@ -99,7 +104,7 @@ Plugin::Plugin(const LxQt::PluginInfo &desktopFile, const QString &settingsFile,
else { else {
// this plugin is a dynamically loadable module // this plugin is a dynamically loadable module
QString baseName = QString("lib%1.so").arg(desktopFile.id()); QString baseName = QString("lib%1.so").arg(desktopFile.id());
foreach(QString dirName, dirs) foreach(const QString &dirName, dirs)
{ {
QFileInfo fi(QDir(dirName), baseName); QFileInfo fi(QDir(dirName), baseName);
if (fi.exists()) if (fi.exists())
@ -119,20 +124,17 @@ Plugin::Plugin(const LxQt::PluginInfo &desktopFile, const QString &settingsFile,
return; return;
} }
// Load plugin translations
LxQt::Translator::translatePlugin(desktopFile.id(), QLatin1String("lxqt-panel"));
setObjectName(mPlugin->themeId() + "Plugin"); setObjectName(mPlugin->themeId() + "Plugin");
// plugin handle for easy context menu // plugin handle for easy context menu
setProperty("NeedsHandle", mPlugin->flags().testFlag(ILxQtPanelPlugin::NeedsHandle)); setProperty("NeedsHandle", mPlugin->flags().testFlag(ILXQtPanelPlugin::NeedsHandle));
QString s = mSettings->value("alignment").toString(); QString s = mSettings->value("alignment").toString();
// Retrun default value // Retrun default value
if (s.isEmpty()) if (s.isEmpty())
{ {
mAlignment = (mPlugin->flags().testFlag(ILxQtPanelPlugin::PreferRightAlignment)) ? mAlignment = (mPlugin->flags().testFlag(ILXQtPanelPlugin::PreferRightAlignment)) ?
Plugin::AlignRight : Plugin::AlignRight :
Plugin::AlignLeft; Plugin::AlignLeft;
} }
@ -148,12 +150,15 @@ Plugin::Plugin(const LxQt::PluginInfo &desktopFile, const QString &settingsFile,
{ {
QGridLayout* layout = new QGridLayout(this); QGridLayout* layout = new QGridLayout(this);
layout->setSpacing(0); layout->setSpacing(0);
layout->setMargin(0);
layout->setContentsMargins(0, 0, 0, 0); layout->setContentsMargins(0, 0, 0, 0);
setLayout(layout); setLayout(layout);
layout->addWidget(mPluginWidget, 0, 0); layout->addWidget(mPluginWidget, 0, 0);
} }
// delay the connection to settingsChanged to avoid conflicts
// while the plugin is still being initialized
connect(mSettings, &PluginSettings::settingsChanged,
this, &Plugin::settingsChanged);
saveSettings(); saveSettings();
} }
@ -164,11 +169,8 @@ Plugin::Plugin(const LxQt::PluginInfo &desktopFile, const QString &settingsFile,
Plugin::~Plugin() Plugin::~Plugin()
{ {
delete mPlugin; delete mPlugin;
if (mPluginLoader)
{
mPluginLoader->unload();
delete mPluginLoader; delete mPluginLoader;
} delete mSettings;
} }
void Plugin::setAlignment(Plugin::Alignment alignment) void Plugin::setAlignment(Plugin::Alignment alignment)
@ -184,70 +186,72 @@ void Plugin::setAlignment(Plugin::Alignment alignment)
namespace namespace
{ {
//helper types for static plugins storage & binary search //helper types for static plugins storage & binary search
typedef std::unique_ptr<ILxQtPanelPluginLibrary> plugin_ptr_t; typedef std::unique_ptr<ILXQtPanelPluginLibrary> plugin_ptr_t;
typedef std::pair<QString, plugin_ptr_t > plugin_pair_t; typedef std::tuple<QString, plugin_ptr_t, void *> plugin_tuple_t;
//NOTE: Please keep the plugins sorted by name while adding new plugins. //NOTE: Please keep the plugins sorted by name while adding new plugins.
static plugin_pair_t const static_plugins[] = { //NOTE2: we need to reference some (dummy) symbol from (autogenerated) LXQtPluginTranslationLoader.cpp
// to be not stripped (as unused/unreferenced) in static linking time
static plugin_tuple_t const static_plugins[] = {
#if defined(WITH_CLOCK_PLUGIN) #if defined(WITH_CLOCK_PLUGIN)
{ QStringLiteral("clock"), plugin_ptr_t{new LxQtClockPluginLibrary} },// clock std::make_tuple(QLatin1String("clock"), plugin_ptr_t{new LXQtClockPluginLibrary}, loadPluginTranslation_clock_helper),// clock
#endif #endif
#if defined(WITH_DESKTOPSWITCH_PLUGIN) #if defined(WITH_DESKTOPSWITCH_PLUGIN)
{ QStringLiteral("desktopswitch"), plugin_ptr_t{new DesktopSwitchPluginLibrary} },// desktopswitch std::make_tuple(QLatin1String("desktopswitch"), plugin_ptr_t{new DesktopSwitchPluginLibrary}, loadPluginTranslation_desktopswitch_helper),// desktopswitch
#endif #endif
#if defined(WITH_MAINMENU_PLUGIN) #if defined(WITH_MAINMENU_PLUGIN)
{ QStringLiteral("mainmenu"), plugin_ptr_t{new LxQtMainMenuPluginLibrary} },// mainmenu std::make_tuple(QLatin1String("mainmenu"), plugin_ptr_t{new LXQtMainMenuPluginLibrary}, loadPluginTranslation_mainmenu_helper),// mainmenu
#endif #endif
#if defined(WITH_QUICKLAUNCH_PLUGIN) #if defined(WITH_QUICKLAUNCH_PLUGIN)
{ QStringLiteral("quicklaunch"), plugin_ptr_t{new LxQtQuickLaunchPluginLibrary} },// quicklaunch std::make_tuple(QLatin1String("quicklaunch"), plugin_ptr_t{new LXQtQuickLaunchPluginLibrary}, loadPluginTranslation_quicklaunch_helper),// quicklaunch
#endif #endif
#if defined(WITH_SHOWDESKTOP_PLUGIN) #if defined(WITH_SHOWDESKTOP_PLUGIN)
{ QStringLiteral("showdesktop"), plugin_ptr_t{new ShowDesktopLibrary} },// showdesktop std::make_tuple(QLatin1String("showdesktop"), plugin_ptr_t{new ShowDesktopLibrary}, loadPluginTranslation_showdesktop_helper),// showdesktop
#endif #endif
#if defined(WITH_SPACER_PLUGIN) #if defined(WITH_SPACER_PLUGIN)
{ QStringLiteral("spacer"), plugin_ptr_t{new SpacerPluginLibrary} },// spacer std::make_tuple(QLatin1String("spacer"), plugin_ptr_t{new SpacerPluginLibrary}, loadPluginTranslation_spacer_helper),// spacer
#endif #endif
#if defined(WITH_STATUSNOTIFIER_PLUGIN) #if defined(WITH_STATUSNOTIFIER_PLUGIN)
{ QStringLiteral("statusnotifier"), plugin_ptr_t{new StatusNotifierLibrary} },// statusnotifier std::make_tuple(QLatin1String("statusnotifier"), plugin_ptr_t{new StatusNotifierLibrary}, loadPluginTranslation_statusnotifier_helper),// statusnotifier
#endif #endif
#if defined(WITH_TASKBAR_PLUGIN) #if defined(WITH_TASKBAR_PLUGIN)
{ QStringLiteral("taskbar"), plugin_ptr_t{new LxQtTaskBarPluginLibrary} },// taskbar std::make_tuple(QLatin1String("taskbar"), plugin_ptr_t{new LXQtTaskBarPluginLibrary}, loadPluginTranslation_taskbar_helper),// taskbar
#endif #endif
#if defined(WITH_TRAY_PLUGIN) #if defined(WITH_TRAY_PLUGIN)
{ QStringLiteral("tray"), plugin_ptr_t{new LxQtTrayPluginLibrary} },// tray std::make_tuple(QLatin1String("tray"), plugin_ptr_t{new LXQtTrayPluginLibrary}, loadPluginTranslation_tray_helper),// tray
#endif #endif
#if defined(WITH_WORLDCLOCK_PLUGIN) #if defined(WITH_WORLDCLOCK_PLUGIN)
{ QStringLiteral("worldclock"), plugin_ptr_t{new LxQtWorldClockLibrary} },// worldclock std::make_tuple(QLatin1String("worldclock"), plugin_ptr_t{new LXQtWorldClockLibrary}, loadPluginTranslation_worldclock_helper),// worldclock
#endif #endif
}; };
static constexpr plugin_pair_t const * const plugins_begin = static_plugins; static constexpr plugin_tuple_t const * const plugins_begin = static_plugins;
static constexpr plugin_pair_t const * const plugins_end = static_plugins + sizeof (static_plugins) / sizeof (static_plugins[0]); static constexpr plugin_tuple_t const * const plugins_end = static_plugins + sizeof (static_plugins) / sizeof (static_plugins[0]);
struct assert_helper struct assert_helper
{ {
assert_helper() assert_helper()
{ {
Q_ASSERT(std::is_sorted(plugins_begin, plugins_end Q_ASSERT(std::is_sorted(plugins_begin, plugins_end
, [] (plugin_pair_t const & p1, plugin_pair_t const & p2) -> bool { return p1.first < p2.first; })); , [] (plugin_tuple_t const & p1, plugin_tuple_t const & p2) -> bool { return std::get<0>(p1) < std::get<0>(p2); }));
} }
}; };
static assert_helper h; static assert_helper h;
} }
ILxQtPanelPluginLibrary const * Plugin::findStaticPlugin(const QString &libraryName) ILXQtPanelPluginLibrary const * Plugin::findStaticPlugin(const QString &libraryName)
{ {
// find a static plugin library by name -> binary search // find a static plugin library by name -> binary search
plugin_pair_t const * plugin = std::lower_bound(plugins_begin, plugins_end, libraryName plugin_tuple_t const * plugin = std::lower_bound(plugins_begin, plugins_end, libraryName
, [] (plugin_pair_t const & plugin, QString const & name) -> bool { return plugin.first < name; }); , [] (plugin_tuple_t const & plugin, QString const & name) -> bool { return std::get<0>(plugin) < name; });
if (plugins_end != plugin && libraryName == plugin->first) if (plugins_end != plugin && libraryName == std::get<0>(*plugin))
return plugin->second.get(); return std::get<1>(*plugin).get();
return nullptr; return nullptr;
} }
// load a plugin from a library // load a plugin from a library
bool Plugin::loadLib(ILxQtPanelPluginLibrary const * pluginLib) bool Plugin::loadLib(ILXQtPanelPluginLibrary const * pluginLib)
{ {
ILxQtPanelPluginStartupInfo startupInfo; ILXQtPanelPluginStartupInfo startupInfo;
startupInfo.settings = mSettings; startupInfo.settings = mSettings;
startupInfo.desktopFile = &mDesktopFile; startupInfo.desktopFile = &mDesktopFile;
startupInfo.lxqtPanel = mPanel; startupInfo.lxqtPanel = mPanel;
@ -255,7 +259,7 @@ bool Plugin::loadLib(ILxQtPanelPluginLibrary const * pluginLib)
mPlugin = pluginLib->instance(startupInfo); mPlugin = pluginLib->instance(startupInfo);
if (!mPlugin) if (!mPlugin)
{ {
qWarning() << QString("Can't load plugin \"%1\". Plugin can't build ILxQtPanelPlugin.").arg(mPluginLoader->fileName()); qWarning() << QString("Can't load plugin \"%1\". Plugin can't build ILXQtPanelPlugin.").arg(mPluginLoader->fileName());
return false; return false;
} }
@ -286,10 +290,10 @@ bool Plugin::loadModule(const QString &libraryName)
return false; return false;
} }
ILxQtPanelPluginLibrary* pluginLib= qobject_cast<ILxQtPanelPluginLibrary*>(obj); ILXQtPanelPluginLibrary* pluginLib= qobject_cast<ILXQtPanelPluginLibrary*>(obj);
if (!pluginLib) if (!pluginLib)
{ {
qWarning() << QString("Can't load plugin \"%1\". Plugin is not a ILxQtPanelPluginLibrary.").arg(mPluginLoader->fileName()); qWarning() << QString("Can't load plugin \"%1\". Plugin is not a ILXQtPanelPluginLibrary.").arg(mPluginLoader->fileName());
delete obj; delete obj;
return false; return false;
} }
@ -297,33 +301,12 @@ bool Plugin::loadModule(const QString &libraryName)
} }
/************************************************
************************************************/
QByteArray Plugin::calcSettingsHash()
{
QCryptographicHash hash(QCryptographicHash::Md5);
QStringList keys = mSettings->allKeys();
foreach (const QString &key, keys)
{
hash.addData(key.toUtf8());
hash.addData(mSettings->value(key).toByteArray());
}
return hash.result();
}
/************************************************ /************************************************
************************************************/ ************************************************/
void Plugin::settingsChanged() void Plugin::settingsChanged()
{ {
QByteArray hash = calcSettingsHash();
if (mSettingsHash != hash)
{
mSettingsHash = hash;
mPlugin->settingsChanged(); mPlugin->settingsChanged();
}
} }
@ -356,11 +339,11 @@ void Plugin::mousePressEvent(QMouseEvent *event)
switch (event->button()) switch (event->button())
{ {
case Qt::LeftButton: case Qt::LeftButton:
mPlugin->activated(ILxQtPanelPlugin::Trigger); mPlugin->activated(ILXQtPanelPlugin::Trigger);
break; break;
case Qt::MidButton: case Qt::MidButton:
mPlugin->activated(ILxQtPanelPlugin::MiddleClick); mPlugin->activated(ILXQtPanelPlugin::MiddleClick);
break; break;
default: default:
@ -374,7 +357,7 @@ void Plugin::mousePressEvent(QMouseEvent *event)
************************************************/ ************************************************/
void Plugin::mouseDoubleClickEvent(QMouseEvent*) void Plugin::mouseDoubleClickEvent(QMouseEvent*)
{ {
mPlugin->activated(ILxQtPanelPlugin::DoubleClick); mPlugin->activated(ILXQtPanelPlugin::DoubleClick);
} }
@ -396,10 +379,10 @@ QMenu *Plugin::popupMenu() const
QString name = this->name().replace("&", "&&"); QString name = this->name().replace("&", "&&");
QMenu* menu = new QMenu(windowTitle()); QMenu* menu = new QMenu(windowTitle());
if (mPlugin->flags().testFlag(ILxQtPanelPlugin::HaveConfigDialog)) if (mPlugin->flags().testFlag(ILXQtPanelPlugin::HaveConfigDialog))
{ {
QAction* configAction = new QAction( QAction* configAction = new QAction(
XdgIcon::fromTheme(QStringLiteral("preferences-other")), XdgIcon::fromTheme(QLatin1String("preferences-other")),
tr("Configure \"%1\"").arg(name), menu); tr("Configure \"%1\"").arg(name), menu);
menu->addAction(configAction); menu->addAction(configAction);
connect(configAction, SIGNAL(triggered()), this, SLOT(showConfigureDialog())); connect(configAction, SIGNAL(triggered()), this, SLOT(showConfigureDialog()));
@ -412,7 +395,7 @@ QMenu *Plugin::popupMenu() const
menu->addSeparator(); menu->addSeparator();
QAction* removeAction = new QAction( QAction* removeAction = new QAction(
XdgIcon::fromTheme(QStringLiteral("list-remove")), XdgIcon::fromTheme(QLatin1String("list-remove")),
tr("Remove \"%1\"").arg(name), menu); tr("Remove \"%1\"").arg(name), menu);
menu->addAction(removeAction); menu->addAction(removeAction);
connect(removeAction, SIGNAL(triggered()), this, SLOT(requestRemove())); connect(removeAction, SIGNAL(triggered()), this, SLOT(requestRemove()));
@ -454,23 +437,21 @@ void Plugin::realign()
************************************************/ ************************************************/
void Plugin::showConfigureDialog() void Plugin::showConfigureDialog()
{ {
// store a pointer to each plugin using the plugins' names if (!mConfigDialog)
static QHash<QString, QPointer<QDialog> > refs; mConfigDialog = mPlugin->configureDialog();
QDialog *dialog = refs[name()].data();
if (!dialog) if (!mConfigDialog)
{
dialog = mPlugin->configureDialog();
refs[name()] = dialog;
connect(this, SIGNAL(destroyed()), dialog, SLOT(close()));
}
if (!dialog)
return; return;
dialog->show(); connect(this, &Plugin::destroyed, mConfigDialog.data(), &QWidget::close);
dialog->raise(); mPanel->willShowWindow(mConfigDialog);
dialog->activateWindow(); mConfigDialog->show();
mConfigDialog->raise();
mConfigDialog->activateWindow();
WId wid = mConfigDialog->windowHandle()->winId();
KWindowSystem::activateWindow(wid);
KWindowSystem::setOnDesktop(wid, KWindowSystem::currentDesktop());
} }

View File

@ -31,15 +31,18 @@
#include <QFrame> #include <QFrame>
#include <QString> #include <QString>
#include <QPointer>
#include <LXQt/PluginInfo> #include <LXQt/PluginInfo>
#include <LXQt/Settings>
#include "ilxqtpanel.h" #include "ilxqtpanel.h"
#include "lxqtpanelglobals.h" #include "lxqtpanelglobals.h"
#include "pluginsettings.h"
class QPluginLoader; class QPluginLoader;
class QSettings; class QSettings;
class ILxQtPanelPlugin; class ILXQtPanelPlugin;
class ILxQtPanelPluginLibrary; class ILXQtPanelPluginLibrary;
class LxQtPanel; class LXQtPanel;
class QMenu; class QMenu;
@ -55,21 +58,21 @@ public:
}; };
explicit Plugin(const LxQt::PluginInfo &desktopFile, const QString &settingsFile, const QString &settingsGroup, LxQtPanel *panel); explicit Plugin(const LXQt::PluginInfo &desktopFile, LXQt::Settings *settings, const QString &settingsGroup, LXQtPanel *panel);
~Plugin(); ~Plugin();
bool isLoaded() const { return mPlugin != 0; } bool isLoaded() const { return mPlugin != 0; }
Alignment alignment() const { return mAlignment; } Alignment alignment() const { return mAlignment; }
void setAlignment(Alignment alignment); void setAlignment(Alignment alignment);
QString settingsGroup() const { return mSettingsGroup; } QString settingsGroup() const { return mSettings->group(); }
void saveSettings(); void saveSettings();
QMenu* popupMenu() const; QMenu* popupMenu() const;
const ILxQtPanelPlugin * iPlugin() const { return mPlugin; } const ILXQtPanelPlugin * iPlugin() const { return mPlugin; }
const LxQt::PluginInfo desktopFile() const { return mDesktopFile; } const LXQt::PluginInfo desktopFile() const { return mDesktopFile; }
bool isSeparate() const; bool isSeparate() const;
bool isExpandable() const; bool isExpandable() const;
@ -98,22 +101,20 @@ protected:
void showEvent(QShowEvent *event); void showEvent(QShowEvent *event);
private: private:
bool loadLib(ILxQtPanelPluginLibrary const * pluginLib); bool loadLib(ILXQtPanelPluginLibrary const * pluginLib);
bool loadModule(const QString &libraryName); bool loadModule(const QString &libraryName);
ILxQtPanelPluginLibrary const * findStaticPlugin(const QString &libraryName); ILXQtPanelPluginLibrary const * findStaticPlugin(const QString &libraryName);
const LxQt::PluginInfo mDesktopFile; const LXQt::PluginInfo mDesktopFile;
QByteArray calcSettingsHash();
QPluginLoader *mPluginLoader; QPluginLoader *mPluginLoader;
ILxQtPanelPlugin *mPlugin; ILXQtPanelPlugin *mPlugin;
QWidget *mPluginWidget; QWidget *mPluginWidget;
Alignment mAlignment; Alignment mAlignment;
QSettings *mSettings; PluginSettings *mSettings;
QString mSettingsGroup; LXQtPanel *mPanel;
LxQtPanel *mPanel;
QByteArray mSettingsHash;
static QColor mMoveMarkerColor; static QColor mMoveMarkerColor;
QString mName; QString mName;
QPointer<QDialog> mConfigDialog; //!< plugin's config dialog (if any)
private slots: private slots:
void settingsChanged(); void settingsChanged();

View File

@ -35,7 +35,7 @@
/************************************************ /************************************************
************************************************/ ************************************************/
PluginMoveProcessor::PluginMoveProcessor(LxQtPanelLayout *layout, Plugin *plugin): PluginMoveProcessor::PluginMoveProcessor(LXQtPanelLayout *layout, Plugin *plugin):
QWidget(plugin), QWidget(plugin),
mLayout(layout), mLayout(layout),
mPlugin(plugin) mPlugin(plugin)
@ -108,8 +108,8 @@ void PluginMoveProcessor::mouseMoveEvent(QMouseEvent *event)
} }
bool plugSep = mPlugin->isSeparate(); bool plugSep = mPlugin->isSeparate();
bool prevSep = LxQtPanelLayout::itemIsSeparate(prevItem); bool prevSep = LXQtPanelLayout::itemIsSeparate(prevItem);
bool nextSep = LxQtPanelLayout::itemIsSeparate(nextItem); bool nextSep = LXQtPanelLayout::itemIsSeparate(nextItem);
if (!nextItem) if (!nextItem)
{ {
@ -178,13 +178,13 @@ PluginMoveProcessor::MousePosInfo PluginMoveProcessor::itemByMousePos(const QPoi
ret.item = item; ret.item = item;
if (mLayout->isHorizontal()) if (mLayout->isHorizontal())
{ {
ret.after = LxQtPanelLayout::itemIsSeparate(item) ? ret.after = LXQtPanelLayout::itemIsSeparate(item) ?
mouse.x() > itemRect.center().x() : mouse.x() > itemRect.center().x() :
mouse.y() > itemRect.center().y() ; mouse.y() > itemRect.center().y() ;
} }
else else
{ {
ret.after = LxQtPanelLayout::itemIsSeparate(item) ? ret.after = LXQtPanelLayout::itemIsSeparate(item) ?
mouse.y() > itemRect.center().y() : mouse.y() > itemRect.center().y() :
mouse.x() > itemRect.center().x() ; mouse.x() > itemRect.center().x() ;
} }

View File

@ -35,7 +35,7 @@
#include "plugin.h" #include "plugin.h"
#include "lxqtpanelglobals.h" #include "lxqtpanelglobals.h"
class LxQtPanelLayout; class LXQtPanelLayout;
class QLayoutItem; class QLayoutItem;
@ -43,7 +43,7 @@ class LXQT_PANEL_API PluginMoveProcessor : public QWidget
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit PluginMoveProcessor(LxQtPanelLayout *layout, Plugin *plugin); explicit PluginMoveProcessor(LXQtPanelLayout *layout, Plugin *plugin);
~PluginMoveProcessor(); ~PluginMoveProcessor();
Plugin *plugin() const { return mPlugin; } Plugin *plugin() const { return mPlugin; }
@ -80,7 +80,7 @@ private:
bool after; bool after;
}; };
LxQtPanelLayout *mLayout; LXQtPanelLayout *mLayout;
Plugin *mPlugin; Plugin *mPlugin;
int mDestIndex; int mDestIndex;

216
panel/pluginsettings.cpp Normal file
View File

@ -0,0 +1,216 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://lxqt.org
*
* Copyright: 2015 LXQt team
* Authors:
* Paulo Lieuthier <paulolieuthier@gmail.com>
*
* This program or 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
*
* END_COMMON_COPYRIGHT_HEADER */
#include "pluginsettings.h"
#include "pluginsettings_p.h"
#include <LXQt/Settings>
class PluginSettingsPrivate
{
public:
PluginSettingsPrivate(LXQt::Settings* settings, const QString &group)
: mSettings(settings)
, mOldSettings(settings)
, mGroup(group)
{
}
QString prefix() const;
inline QString fullPrefix() const
{
return mGroup + "/" + prefix();
}
LXQt::Settings *mSettings;
LXQt::SettingsCache mOldSettings;
QString mGroup;
QStringList mSubGroups;
};
QString PluginSettingsPrivate::prefix() const
{
if (!mSubGroups.empty())
return mSubGroups.join('/');
return QString();
}
PluginSettings::PluginSettings(LXQt::Settings* settings, const QString &group, QObject *parent)
: QObject(parent)
, d_ptr(new PluginSettingsPrivate{settings, group})
{
Q_D(PluginSettings);
connect(d->mSettings, &LXQt::Settings::settingsChangedFromExternal, this, &PluginSettings::settingsChanged);
}
QString PluginSettings::group() const
{
Q_D(const PluginSettings);
return d->mGroup;
}
PluginSettings::~PluginSettings()
{
}
QVariant PluginSettings::value(const QString &key, const QVariant &defaultValue) const
{
Q_D(const PluginSettings);
d->mSettings->beginGroup(d->fullPrefix());
QVariant value = d->mSettings->value(key, defaultValue);
d->mSettings->endGroup();
return value;
}
void PluginSettings::setValue(const QString &key, const QVariant &value)
{
Q_D(PluginSettings);
d->mSettings->beginGroup(d->fullPrefix());
d->mSettings->setValue(key, value);
d->mSettings->endGroup();
emit settingsChanged();
}
void PluginSettings::remove(const QString &key)
{
Q_D(PluginSettings);
d->mSettings->beginGroup(d->fullPrefix());
d->mSettings->remove(key);
d->mSettings->endGroup();
emit settingsChanged();
}
bool PluginSettings::contains(const QString &key) const
{
Q_D(const PluginSettings);
d->mSettings->beginGroup(d->fullPrefix());
bool ret = d->mSettings->contains(key);
d->mSettings->endGroup();
return ret;
}
QList<QMap<QString, QVariant> > PluginSettings::readArray(const QString& prefix)
{
Q_D(PluginSettings);
d->mSettings->beginGroup(d->fullPrefix());
QList<QMap<QString, QVariant> > array;
int size = d->mSettings->beginReadArray(prefix);
for (int i = 0; i < size; ++i)
{
d->mSettings->setArrayIndex(i);
QMap<QString, QVariant> hash;
for (const QString &key : d->mSettings->childKeys())
hash[key] = d->mSettings->value(key);
array << hash;
}
d->mSettings->endArray();
d->mSettings->endGroup();
return array;
}
void PluginSettings::setArray(const QString &prefix, const QList<QMap<QString, QVariant> > &hashList)
{
Q_D(PluginSettings);
d->mSettings->beginGroup(d->fullPrefix());
d->mSettings->beginWriteArray(prefix);
int size = hashList.size();
for (int i = 0; i < size; ++i)
{
d->mSettings->setArrayIndex(i);
QMapIterator<QString, QVariant> it(hashList.at(i));
while (it.hasNext())
{
it.next();
d->mSettings->setValue(it.key(), it.value());
}
}
d->mSettings->endArray();
d->mSettings->endGroup();
emit settingsChanged();
}
void PluginSettings::clear()
{
Q_D(PluginSettings);
d->mSettings->beginGroup(d->mGroup);
d->mSettings->clear();
d->mSettings->endGroup();
emit settingsChanged();
}
void PluginSettings::sync()
{
Q_D(PluginSettings);
d->mSettings->beginGroup(d->mGroup);
d->mSettings->sync();
d->mOldSettings.loadFromSettings();
d->mSettings->endGroup();
emit settingsChanged();
}
QStringList PluginSettings::allKeys() const
{
Q_D(const PluginSettings);
d->mSettings->beginGroup(d->fullPrefix());
QStringList keys = d->mSettings->allKeys();
d->mSettings->endGroup();
return keys;
}
QStringList PluginSettings::childGroups() const
{
Q_D(const PluginSettings);
d->mSettings->beginGroup(d->fullPrefix());
QStringList groups = d->mSettings->childGroups();
d->mSettings->endGroup();
return groups;
}
void PluginSettings::beginGroup(const QString &subGroup)
{
Q_D(PluginSettings);
d->mSubGroups.append(subGroup);
}
void PluginSettings::endGroup()
{
Q_D(PluginSettings);
if (!d->mSubGroups.empty())
d->mSubGroups.removeLast();
}
void PluginSettings::loadFromCache()
{
Q_D(PluginSettings);
d->mSettings->beginGroup(d->mGroup);
d->mOldSettings.loadToSettings();
d->mSettings->endGroup();
}
PluginSettings* PluginSettingsFactory::create(LXQt::Settings *settings, const QString &group, QObject *parent/* = nullptr*/)
{
return new PluginSettings{settings, group, parent};
}

96
panel/pluginsettings.h Normal file
View File

@ -0,0 +1,96 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://lxqt.org
*
* Copyright: 2015 LXQt team
* Authors:
* Paulo Lieuthier <paulolieuthier@gmail.com>
*
* This program or 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
*
* END_COMMON_COPYRIGHT_HEADER */
#ifndef PLUGIN_SETTINGS_H
#define PLUGIN_SETTINGS_H
#include <QObject>
#include <QString>
#include <QVariant>
#include "lxqtpanelglobals.h"
namespace LXQt
{
class Settings;
}
class PluginSettingsFactory;
class PluginSettingsPrivate;
/*!
* \brief
* Settings for particular plugin. This object/class can be used similarly as \sa QSettings.
* Object cannot be constructed direcly (it is the panel's responsibility to construct it for each plugin).
*
*
* \note
* We are relying here on so called "back linking" (calling a function defined in executable
* back from an external library)...
*/
class LXQT_PANEL_API PluginSettings : public QObject
{
Q_OBJECT
//for instantiation
friend class PluginSettingsFactory;
public:
~PluginSettings();
QString group() const;
QVariant value(const QString &key, const QVariant &defaultValue = QVariant()) const;
void setValue(const QString &key, const QVariant &value);
void remove(const QString &key);
bool contains(const QString &key) const;
QList<QMap<QString, QVariant> > readArray(const QString &prefix);
void setArray(const QString &prefix, const QList<QMap<QString, QVariant> > &hashList);
void clear();
void sync();
QStringList allKeys() const;
QStringList childGroups() const;
void beginGroup(const QString &subGroup);
void endGroup();
void loadFromCache();
signals:
void settingsChanged();
private:
explicit PluginSettings(LXQt::Settings *settings, const QString &group, QObject *parent = nullptr);
private:
QScopedPointer<PluginSettingsPrivate> d_ptr;
Q_DECLARE_PRIVATE(PluginSettings)
};
#endif

39
panel/pluginsettings_p.h Normal file
View File

@ -0,0 +1,39 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://lxqt.org
*
* Copyright: 2015 LXQt team
* Authors:
* Paulo Lieuthier <paulolieuthier@gmail.com>
*
* This program or 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
*
* END_COMMON_COPYRIGHT_HEADER */
#ifndef PLUGIN_SETTINGS_P_H
#define PLUGIN_SETTINGS_P_H
#include "pluginsettings.h"
class PluginSettingsFactory
{
public:
static PluginSettings * create(LXQt::Settings *settings, const QString &group, QObject *parent = nullptr);
};
#endif //PLUGIN_SETTINGS_P_H

View File

@ -13,11 +13,7 @@ type=desktopswitch
[quicklaunch] [quicklaunch]
type=quicklaunch type=quicklaunch
apps/size=5 alignment=Left
apps/1/desktop=firefox.desktop
apps/2/desktop=chromium-browser.desktop
apps/3/desktop=pcmanfm-qt.desktop
apps/5/desktop=lxqt-config.desktop
[taskbar] [taskbar]
type=taskbar type=taskbar

0
panel/translations/.gitignore vendored Normal file
View File

View File

@ -1,346 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1">
<context>
<name>AddPluginDialog</name>
<message>
<location filename="../config/addplugindialog.ui" line="14"/>
<source>Add Plugins</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/addplugindialog.ui" line="22"/>
<source>Search:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/addplugindialog.ui" line="98"/>
<source>Add Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/addplugindialog.ui" line="105"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/addplugindialog.cpp" line="114"/>
<source>(only one instance can run at a time)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConfigPanelDialog</name>
<message>
<location filename="../config/configpaneldialog.cpp" line="31"/>
<source>Configure Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="38"/>
<source>Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="42"/>
<source>Widgets</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConfigPanelWidget</name>
<message>
<location filename="../config/configpanelwidget.ui" line="20"/>
<source>Configure panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="44"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="68"/>
<source>&lt;p&gt;Negative pixel value sets the panel length to that many pixels less than available screen space.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.g. &quot;Length&quot; set to -100px, screen size is 1000px, then real panel length will be 900 px.&lt;/i&gt;&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="81"/>
<source>Size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="88"/>
<source>Length:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="96"/>
<source>%</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="101"/>
<source>px</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="109"/>
<location filename="../config/configpanelwidget.ui" line="153"/>
<source> px</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="166"/>
<source>Icon size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="173"/>
<source>Rows count:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="202"/>
<source>Alignment &amp;&amp; position</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="208"/>
<source>Position:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="218"/>
<source>Alignment:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="244"/>
<location filename="../config/configpanelwidget.cpp" line="190"/>
<source>Left</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="249"/>
<location filename="../config/configpanelwidget.cpp" line="191"/>
<location filename="../config/configpanelwidget.cpp" line="197"/>
<source>Center</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="254"/>
<location filename="../config/configpanelwidget.cpp" line="192"/>
<source>Right</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="284"/>
<source>Auto-hide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="303"/>
<source>Custom styling</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="324"/>
<source>Font color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="364"/>
<source>Background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="403"/>
<source>Background opacity:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="435"/>
<source>&lt;small&gt;Compositing is required for panel transparency.&lt;/small&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="463"/>
<source>Background image:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="156"/>
<source>Top of desktop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="157"/>
<source>Left of desktop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="158"/>
<source>Right of desktop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="159"/>
<source>Bottom of desktop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="168"/>
<source>Top of desktop %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="169"/>
<source>Left of desktop %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="170"/>
<source>Right of desktop %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="171"/>
<source>Bottom of desktop %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="196"/>
<source>Top</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="198"/>
<source>Bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="354"/>
<location filename="../config/configpanelwidget.cpp" line="370"/>
<source>Pick color</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="388"/>
<source>Pick image</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="388"/>
<source>Images (*.png *.gif *.jpg)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConfigPluginsWidget</name>
<message>
<location filename="../config/configpluginswidget.ui" line="14"/>
<source>Configure Plugins</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpluginswidget.ui" line="84"/>
<source>Note: changes made in this page cannot be reset.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpluginswidget.ui" line="112"/>
<source>Move up</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpluginswidget.ui" line="115"/>
<location filename="../config/configpluginswidget.ui" line="129"/>
<location filename="../config/configpluginswidget.ui" line="150"/>
<location filename="../config/configpluginswidget.ui" line="164"/>
<location filename="../config/configpluginswidget.ui" line="185"/>
<source>...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpluginswidget.ui" line="126"/>
<source>Move down</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpluginswidget.ui" line="147"/>
<source>Add</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpluginswidget.ui" line="161"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpluginswidget.ui" line="182"/>
<source>Configure</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQtPanel</name>
<message>
<location filename="../lxqtpanel.cpp" line="912"/>
<location filename="../lxqtpanel.cpp" line="931"/>
<source>Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="934"/>
<source>Configure Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="939"/>
<source>Manage Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="945"/>
<source>Add Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="952"/>
<source>Remove Panel</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Plugin</name>
<message>
<location filename="../plugin.cpp" line="403"/>
<source>Configure &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="408"/>
<source>Move &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="416"/>
<source>Remove &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="../lxqtpanelapplication.cpp" line="52"/>
<source>Use alternate configuration file.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanelapplication.cpp" line="53"/>
<source>Configuration file</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -1,358 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="ar">
<context>
<name>ConfigPanelDialog</name>
<message>
<source>Configure panel</source>
<translation type="vanished">تهيئة اللوحة</translation>
</message>
<message>
<source>Panel size</source>
<translation type="vanished">حجم اللوحة</translation>
</message>
<message>
<source>Size:</source>
<translation type="vanished">الحجم:</translation>
</message>
<message>
<source>px</source>
<translation type="vanished">نقطة ضوئيَّة</translation>
</message>
<message>
<source>Use automatic sizing</source>
<translation type="vanished">استخدم التَّحجيم الي</translation>
</message>
<message>
<source>Panel length &amp;&amp; position</source>
<translation type="vanished">طول وموقع اللوحة</translation>
</message>
<message>
<source>Left</source>
<translation type="vanished">اليسار</translation>
</message>
<message>
<source>Center</source>
<translation type="vanished">الوسظ</translation>
</message>
<message>
<source>Right</source>
<translation type="vanished">اليمين</translation>
</message>
<message>
<source>%</source>
<translation type="vanished">%</translation>
</message>
<message>
<source>Alignment:</source>
<translation type="vanished">المحاذاة:</translation>
</message>
<message>
<source>Length:</source>
<translation type="vanished">الطُّول:</translation>
</message>
<message>
<source>Position:</source>
<translation type="vanished">الموقع:</translation>
</message>
<message>
<source>Top of desktop</source>
<translation type="vanished">أعلى سطح المكتب</translation>
</message>
<message>
<source>Left of desktop</source>
<translation type="vanished">يسار سطح المكتب</translation>
</message>
<message>
<source>Right of desktop</source>
<translation type="vanished">يمين سطح المكتب</translation>
</message>
<message>
<source>Bottom of desktop</source>
<translation type="vanished">أسفل سطح المكتب</translation>
</message>
<message>
<source>Top of desktop %1</source>
<translation type="vanished">أعلى سطح المكتب %1</translation>
</message>
<message>
<source>Left of desktop %1</source>
<translation type="vanished">يسار سطح المكتب %1</translation>
</message>
<message>
<source>Right of desktop %1</source>
<translation type="vanished">يمين سطح المكتب %1</translation>
</message>
<message>
<source>Bottom of desktop %1</source>
<translation type="vanished">أسفل سطح المكتب %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="80"/>
<location filename="../config/configpaneldialog.cpp" line="86"/>
<source>Configure Panel</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConfigPanelWidget</name>
<message>
<location filename="../config/configpaneldialog.ui" line="20"/>
<source>Configure panel</source>
<translation type="unfinished">تهيئة اللوحة</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="32"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="41"/>
<source>Size:</source>
<translation type="unfinished">الحجم:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="48"/>
<location filename="../config/configpaneldialog.ui" line="82"/>
<source> px</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="58"/>
<source>Icon size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="65"/>
<source>Length:</source>
<translation type="unfinished">الطُّول:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="110"/>
<source>&lt;p&gt;Negative pixel value sets the panel length to that many pixels less than available screen space.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.g. &quot;Length&quot; set to -100px, screen size is 1000px, then real panel length will be 900 px.&lt;/i&gt;&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="124"/>
<source>%</source>
<translation type="unfinished">%</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="129"/>
<source>px</source>
<translation type="unfinished">نقطة ضوئيَّة</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="140"/>
<source>Rows count:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="172"/>
<source>Alignment &amp;&amp; position</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="182"/>
<location filename="../config/configpaneldialog.cpp" line="234"/>
<source>Left</source>
<translation type="unfinished">اليسار</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="187"/>
<location filename="../config/configpaneldialog.cpp" line="235"/>
<location filename="../config/configpaneldialog.cpp" line="241"/>
<source>Center</source>
<translation type="unfinished">الوسظ</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="192"/>
<location filename="../config/configpaneldialog.cpp" line="236"/>
<source>Right</source>
<translation type="unfinished">اليمين</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="200"/>
<source>Alignment:</source>
<translation type="unfinished">المحاذاة:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="210"/>
<source>Position:</source>
<translation type="unfinished">الموقع:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="217"/>
<source>Auto-hide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="233"/>
<source>Styling</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="239"/>
<source>Custom font color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="246"/>
<source>Custom background image:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="260"/>
<source>Custom background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="351"/>
<source>Opacity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="200"/>
<source>Top of desktop</source>
<translation type="unfinished">أعلى سطح المكتب</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="201"/>
<source>Left of desktop</source>
<translation type="unfinished">يسار سطح المكتب</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="202"/>
<source>Right of desktop</source>
<translation type="unfinished">يمين سطح المكتب</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="203"/>
<source>Bottom of desktop</source>
<translation type="unfinished">أسفل سطح المكتب</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="212"/>
<source>Top of desktop %1</source>
<translation type="unfinished">أعلى سطح المكتب %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="213"/>
<source>Left of desktop %1</source>
<translation type="unfinished">يسار سطح المكتب %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="214"/>
<source>Right of desktop %1</source>
<translation type="unfinished">يمين سطح المكتب %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="215"/>
<source>Bottom of desktop %1</source>
<translation type="unfinished">أسفل سطح المكتب %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="240"/>
<source>Top</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="242"/>
<source>Bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="397"/>
<location filename="../config/configpaneldialog.cpp" line="411"/>
<source>Pick color</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="431"/>
<source>Images (*.png *.gif *.jpg)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQtPanel</name>
<message>
<location filename="../lxqtpanel.cpp" line="623"/>
<source>Add Panel Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="951"/>
<location filename="../lxqtpanel.cpp" line="970"/>
<source>Panel</source>
<translation>قائمة التطبيقات</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="973"/>
<source>Configure Panel...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="978"/>
<source>Add Panel Widgets...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="984"/>
<source>Add Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="991"/>
<source>Remove Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Configure panel...</source>
<translation type="vanished">تهيئة اللوحة...</translation>
</message>
<message>
<source>Add plugins ...</source>
<translation type="vanished">ضمُّ إضافات...</translation>
</message>
</context>
<context>
<name>LxQtPanelPlugin</name>
<message>
<source>Configure</source>
<translation type="vanished">تهيئة</translation>
</message>
<message>
<source>Move</source>
<translation type="vanished">تحريك</translation>
</message>
<message>
<source>Remove</source>
<translation type="vanished">إزالة</translation>
</message>
</context>
<context>
<name>LxQtPanelPrivate</name>
<message>
<source>Configure panel</source>
<translation type="vanished">تهيئة اللوحة</translation>
</message>
</context>
<context>
<name>Plugin</name>
<message>
<location filename="../plugin.cpp" line="395"/>
<source>Configure &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="400"/>
<source>Move &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="408"/>
<source>Remove &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -1,358 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="cs">
<context>
<name>ConfigPanelDialog</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Nastavit panel</translation>
</message>
<message>
<source>Panel size</source>
<translation type="vanished">Velikost panelu</translation>
</message>
<message>
<source>Size:</source>
<translation type="vanished">Velikost:</translation>
</message>
<message>
<source>px</source>
<translation type="vanished">px</translation>
</message>
<message>
<source>Use automatic sizing</source>
<translation type="vanished">Použít automatickou velikost</translation>
</message>
<message>
<source>Panel length &amp;&amp; position</source>
<translation type="vanished">Délka &amp;a poloha panelu</translation>
</message>
<message>
<source>Left</source>
<translation type="vanished">Zarovnat vlevo</translation>
</message>
<message>
<source>Center</source>
<translation type="vanished">Zarovnat na střed</translation>
</message>
<message>
<source>Right</source>
<translation type="vanished">Zarovnat vpravo</translation>
</message>
<message>
<source>%</source>
<translation type="vanished">%</translation>
</message>
<message>
<source>Alignment:</source>
<translation type="vanished">Zarovnání:</translation>
</message>
<message>
<source>Length:</source>
<translation type="vanished">Délka:</translation>
</message>
<message>
<source>Position:</source>
<translation type="vanished">Poloha:</translation>
</message>
<message>
<source>Top of desktop</source>
<translation type="vanished">Horní strana pracovní plochy</translation>
</message>
<message>
<source>Left of desktop</source>
<translation type="vanished">Levá strana pracovní plochy</translation>
</message>
<message>
<source>Right of desktop</source>
<translation type="vanished">Pravá strana pracovní plochy</translation>
</message>
<message>
<source>Bottom of desktop</source>
<translation type="vanished">Dolní strana pracovní plochy</translation>
</message>
<message>
<source>Top of desktop %1</source>
<translation type="vanished">Horní strana pracovní plochy %1</translation>
</message>
<message>
<source>Left of desktop %1</source>
<translation type="vanished">Levá strana pracovní plochy %1</translation>
</message>
<message>
<source>Right of desktop %1</source>
<translation type="vanished">Pravá strana pracovní plochy %1</translation>
</message>
<message>
<source>Bottom of desktop %1</source>
<translation type="vanished">Dolní strana pracovní plochy %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="80"/>
<location filename="../config/configpaneldialog.cpp" line="86"/>
<source>Configure Panel</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConfigPanelWidget</name>
<message>
<location filename="../config/configpaneldialog.ui" line="20"/>
<source>Configure panel</source>
<translation type="unfinished">Nastavit panel</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="32"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="41"/>
<source>Size:</source>
<translation type="unfinished">Velikost:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="48"/>
<location filename="../config/configpaneldialog.ui" line="82"/>
<source> px</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="58"/>
<source>Icon size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="65"/>
<source>Length:</source>
<translation type="unfinished">Délka:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="110"/>
<source>&lt;p&gt;Negative pixel value sets the panel length to that many pixels less than available screen space.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.g. &quot;Length&quot; set to -100px, screen size is 1000px, then real panel length will be 900 px.&lt;/i&gt;&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="124"/>
<source>%</source>
<translation type="unfinished">%</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="129"/>
<source>px</source>
<translation type="unfinished">px</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="140"/>
<source>Rows count:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="172"/>
<source>Alignment &amp;&amp; position</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="182"/>
<location filename="../config/configpaneldialog.cpp" line="234"/>
<source>Left</source>
<translation type="unfinished">Zarovnat vlevo</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="187"/>
<location filename="../config/configpaneldialog.cpp" line="235"/>
<location filename="../config/configpaneldialog.cpp" line="241"/>
<source>Center</source>
<translation type="unfinished">Zarovnat na střed</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="192"/>
<location filename="../config/configpaneldialog.cpp" line="236"/>
<source>Right</source>
<translation type="unfinished">Zarovnat vpravo</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="200"/>
<source>Alignment:</source>
<translation type="unfinished">Zarovnání:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="210"/>
<source>Position:</source>
<translation type="unfinished">Poloha:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="217"/>
<source>Auto-hide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="233"/>
<source>Styling</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="239"/>
<source>Custom font color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="246"/>
<source>Custom background image:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="260"/>
<source>Custom background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="351"/>
<source>Opacity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="200"/>
<source>Top of desktop</source>
<translation type="unfinished">Horní strana pracovní plochy</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="201"/>
<source>Left of desktop</source>
<translation type="unfinished">Levá strana pracovní plochy</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="202"/>
<source>Right of desktop</source>
<translation type="unfinished">Pravá strana pracovní plochy</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="203"/>
<source>Bottom of desktop</source>
<translation type="unfinished">Dolní strana pracovní plochy</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="212"/>
<source>Top of desktop %1</source>
<translation type="unfinished">Horní strana pracovní plochy %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="213"/>
<source>Left of desktop %1</source>
<translation type="unfinished">Levá strana pracovní plochy %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="214"/>
<source>Right of desktop %1</source>
<translation type="unfinished">Pravá strana pracovní plochy %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="215"/>
<source>Bottom of desktop %1</source>
<translation type="unfinished">Dolní strana pracovní plochy %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="240"/>
<source>Top</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="242"/>
<source>Bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="397"/>
<location filename="../config/configpaneldialog.cpp" line="411"/>
<source>Pick color</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="431"/>
<source>Images (*.png *.gif *.jpg)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQtPanel</name>
<message>
<location filename="../lxqtpanel.cpp" line="623"/>
<source>Add Panel Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="951"/>
<location filename="../lxqtpanel.cpp" line="970"/>
<source>Panel</source>
<translation>Panel</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="973"/>
<source>Configure Panel...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="978"/>
<source>Add Panel Widgets...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="984"/>
<source>Add Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="991"/>
<source>Remove Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Configure panel...</source>
<translation type="vanished">Nastavit panel...</translation>
</message>
<message>
<source>Add plugins ...</source>
<translation type="vanished">Přidat přídavné moduly...</translation>
</message>
</context>
<context>
<name>LxQtPanelPlugin</name>
<message>
<source>Configure</source>
<translation type="vanished">Nastavit</translation>
</message>
<message>
<source>Move</source>
<translation type="vanished">Přesunout</translation>
</message>
<message>
<source>Remove</source>
<translation type="vanished">Odstranit</translation>
</message>
</context>
<context>
<name>LxQtPanelPrivate</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Nastavit panel</translation>
</message>
</context>
<context>
<name>Plugin</name>
<message>
<location filename="../plugin.cpp" line="395"/>
<source>Configure &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="400"/>
<source>Move &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="408"/>
<source>Remove &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -1,358 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="cs_CZ">
<context>
<name>ConfigPanelDialog</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Nastavit panel</translation>
</message>
<message>
<source>Panel size</source>
<translation type="vanished">Velikost panelu</translation>
</message>
<message>
<source>Size:</source>
<translation type="vanished">Velikost:</translation>
</message>
<message>
<source>px</source>
<translation type="vanished">px</translation>
</message>
<message>
<source>Use automatic sizing</source>
<translation type="vanished">Použít automatickou velikost</translation>
</message>
<message>
<source>Panel length &amp;&amp; position</source>
<translation type="vanished">Délka &amp;a poloha panelu</translation>
</message>
<message>
<source>Left</source>
<translation type="vanished">Zarovnat vlevo</translation>
</message>
<message>
<source>Center</source>
<translation type="vanished">Zarovnat na střed</translation>
</message>
<message>
<source>Right</source>
<translation type="vanished">Zarovnat vpravo</translation>
</message>
<message>
<source>%</source>
<translation type="vanished">%</translation>
</message>
<message>
<source>Alignment:</source>
<translation type="vanished">Zarovnání:</translation>
</message>
<message>
<source>Length:</source>
<translation type="vanished">Délka:</translation>
</message>
<message>
<source>Position:</source>
<translation type="vanished">Poloha:</translation>
</message>
<message>
<source>Top of desktop</source>
<translation type="vanished">Horní strana pracovní plochy</translation>
</message>
<message>
<source>Left of desktop</source>
<translation type="vanished">Levá strana pracovní plochy</translation>
</message>
<message>
<source>Right of desktop</source>
<translation type="vanished">Pravá strana pracovní plochy</translation>
</message>
<message>
<source>Bottom of desktop</source>
<translation type="vanished">Dolní strana pracovní plochy</translation>
</message>
<message>
<source>Top of desktop %1</source>
<translation type="vanished">Horní strana pracovní plochy %1</translation>
</message>
<message>
<source>Left of desktop %1</source>
<translation type="vanished">Levá strana pracovní plochy %1</translation>
</message>
<message>
<source>Right of desktop %1</source>
<translation type="vanished">Pravá strana pracovní plochy %1</translation>
</message>
<message>
<source>Bottom of desktop %1</source>
<translation type="vanished">Dolní strana pracovní plochy %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="80"/>
<location filename="../config/configpaneldialog.cpp" line="86"/>
<source>Configure Panel</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConfigPanelWidget</name>
<message>
<location filename="../config/configpaneldialog.ui" line="20"/>
<source>Configure panel</source>
<translation type="unfinished">Nastavit panel</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="32"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="41"/>
<source>Size:</source>
<translation type="unfinished">Velikost:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="48"/>
<location filename="../config/configpaneldialog.ui" line="82"/>
<source> px</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="58"/>
<source>Icon size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="65"/>
<source>Length:</source>
<translation type="unfinished">Délka:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="110"/>
<source>&lt;p&gt;Negative pixel value sets the panel length to that many pixels less than available screen space.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.g. &quot;Length&quot; set to -100px, screen size is 1000px, then real panel length will be 900 px.&lt;/i&gt;&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="124"/>
<source>%</source>
<translation type="unfinished">%</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="129"/>
<source>px</source>
<translation type="unfinished">px</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="140"/>
<source>Rows count:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="172"/>
<source>Alignment &amp;&amp; position</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="182"/>
<location filename="../config/configpaneldialog.cpp" line="234"/>
<source>Left</source>
<translation type="unfinished">Zarovnat vlevo</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="187"/>
<location filename="../config/configpaneldialog.cpp" line="235"/>
<location filename="../config/configpaneldialog.cpp" line="241"/>
<source>Center</source>
<translation type="unfinished">Zarovnat na střed</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="192"/>
<location filename="../config/configpaneldialog.cpp" line="236"/>
<source>Right</source>
<translation type="unfinished">Zarovnat vpravo</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="200"/>
<source>Alignment:</source>
<translation type="unfinished">Zarovnání:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="210"/>
<source>Position:</source>
<translation type="unfinished">Poloha:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="217"/>
<source>Auto-hide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="233"/>
<source>Styling</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="239"/>
<source>Custom font color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="246"/>
<source>Custom background image:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="260"/>
<source>Custom background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="351"/>
<source>Opacity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="200"/>
<source>Top of desktop</source>
<translation type="unfinished">Horní strana pracovní plochy</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="201"/>
<source>Left of desktop</source>
<translation type="unfinished">Levá strana pracovní plochy</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="202"/>
<source>Right of desktop</source>
<translation type="unfinished">Pravá strana pracovní plochy</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="203"/>
<source>Bottom of desktop</source>
<translation type="unfinished">Dolní strana pracovní plochy</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="212"/>
<source>Top of desktop %1</source>
<translation type="unfinished">Horní strana pracovní plochy %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="213"/>
<source>Left of desktop %1</source>
<translation type="unfinished">Levá strana pracovní plochy %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="214"/>
<source>Right of desktop %1</source>
<translation type="unfinished">Pravá strana pracovní plochy %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="215"/>
<source>Bottom of desktop %1</source>
<translation type="unfinished">Dolní strana pracovní plochy %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="240"/>
<source>Top</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="242"/>
<source>Bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="397"/>
<location filename="../config/configpaneldialog.cpp" line="411"/>
<source>Pick color</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="431"/>
<source>Images (*.png *.gif *.jpg)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQtPanel</name>
<message>
<location filename="../lxqtpanel.cpp" line="623"/>
<source>Add Panel Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="951"/>
<location filename="../lxqtpanel.cpp" line="970"/>
<source>Panel</source>
<translation>Panel</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="973"/>
<source>Configure Panel...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="978"/>
<source>Add Panel Widgets...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="984"/>
<source>Add Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="991"/>
<source>Remove Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Configure panel...</source>
<translation type="vanished">Nastavit panel...</translation>
</message>
<message>
<source>Add plugins ...</source>
<translation type="vanished">Přidat přídavné moduly...</translation>
</message>
</context>
<context>
<name>LxQtPanelPlugin</name>
<message>
<source>Configure</source>
<translation type="vanished">Nastavit</translation>
</message>
<message>
<source>Move</source>
<translation type="vanished">Přesunout</translation>
</message>
<message>
<source>Remove</source>
<translation type="vanished">Odstranit</translation>
</message>
</context>
<context>
<name>LxQtPanelPrivate</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Nastavit panel</translation>
</message>
</context>
<context>
<name>Plugin</name>
<message>
<location filename="../plugin.cpp" line="395"/>
<source>Configure &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="400"/>
<source>Move &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="408"/>
<source>Remove &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -1,377 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="da">
<context>
<name>ConfigPanelDialog</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Indstil panel</translation>
</message>
<message>
<source>Panel size</source>
<translation type="vanished">Panelstørrelse</translation>
</message>
<message>
<source>Size:</source>
<translation type="vanished">Størrelse:</translation>
</message>
<message>
<source>px</source>
<translation type="vanished">pkt</translation>
</message>
<message>
<source>Use theme size</source>
<translation type="vanished">Brug tema-størrelse</translation>
</message>
<message>
<source>Panel lenght &amp; position</source>
<translation type="vanished">Panel længde &amp; position</translation>
</message>
<message>
<source>Length:</source>
<translation type="vanished">Længde:</translation>
</message>
<message>
<source>Alignment:</source>
<translation type="vanished">Placering:</translation>
</message>
<message>
<source>Left</source>
<translation type="vanished">Venstre</translation>
</message>
<message>
<source>Center</source>
<translation type="vanished">Midtpå</translation>
</message>
<message>
<source>Right</source>
<translation type="vanished">Højre</translation>
</message>
<message>
<source>%</source>
<translation type="vanished">%</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="80"/>
<location filename="../config/configpaneldialog.cpp" line="86"/>
<source>Configure Panel</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConfigPanelWidget</name>
<message>
<location filename="../config/configpaneldialog.ui" line="20"/>
<source>Configure panel</source>
<translation type="unfinished">Indstil panel</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="32"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="41"/>
<source>Size:</source>
<translation type="unfinished">Størrelse:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="48"/>
<location filename="../config/configpaneldialog.ui" line="82"/>
<source> px</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="58"/>
<source>Icon size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="65"/>
<source>Length:</source>
<translation type="unfinished">Længde:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="110"/>
<source>&lt;p&gt;Negative pixel value sets the panel length to that many pixels less than available screen space.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.g. &quot;Length&quot; set to -100px, screen size is 1000px, then real panel length will be 900 px.&lt;/i&gt;&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="124"/>
<source>%</source>
<translation type="unfinished">%</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="129"/>
<source>px</source>
<translation type="unfinished">pkt</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="140"/>
<source>Rows count:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="172"/>
<source>Alignment &amp;&amp; position</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="182"/>
<location filename="../config/configpaneldialog.cpp" line="234"/>
<source>Left</source>
<translation type="unfinished">Venstre</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="187"/>
<location filename="../config/configpaneldialog.cpp" line="235"/>
<location filename="../config/configpaneldialog.cpp" line="241"/>
<source>Center</source>
<translation type="unfinished">Midtpå</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="192"/>
<location filename="../config/configpaneldialog.cpp" line="236"/>
<source>Right</source>
<translation type="unfinished">Højre</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="200"/>
<source>Alignment:</source>
<translation type="unfinished">Placering:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="210"/>
<source>Position:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="217"/>
<source>Auto-hide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="233"/>
<source>Styling</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="239"/>
<source>Custom font color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="246"/>
<source>Custom background image:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="260"/>
<source>Custom background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="351"/>
<source>Opacity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="200"/>
<source>Top of desktop</source>
<translation type="unfinished">Toppen af skrivebordet</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="201"/>
<source>Left of desktop</source>
<translation type="unfinished">Venstre side af skrivebordet</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="202"/>
<source>Right of desktop</source>
<translation type="unfinished">Højre side af skrivebordet</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="203"/>
<source>Bottom of desktop</source>
<translation type="unfinished">Bunden af skrivebordet</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="212"/>
<source>Top of desktop %1</source>
<translation type="unfinished">Toppen af skrivebord %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="213"/>
<source>Left of desktop %1</source>
<translation type="unfinished">Venstre side af skrivebord %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="214"/>
<source>Right of desktop %1</source>
<translation type="unfinished">Højre side af skrivebord %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="215"/>
<source>Bottom of desktop %1</source>
<translation type="unfinished">Bunden af skrivebord %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="240"/>
<source>Top</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="242"/>
<source>Bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="397"/>
<location filename="../config/configpaneldialog.cpp" line="411"/>
<source>Pick color</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="431"/>
<source>Images (*.png *.gif *.jpg)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQtPanel</name>
<message>
<location filename="../lxqtpanel.cpp" line="623"/>
<source>Add Panel Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="951"/>
<location filename="../lxqtpanel.cpp" line="970"/>
<source>Panel</source>
<translation type="unfinished">Panel</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="973"/>
<source>Configure Panel...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="978"/>
<source>Add Panel Widgets...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="984"/>
<source>Add Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="991"/>
<source>Remove Panel</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQtPanelPluginPrivate</name>
<message>
<source>Configure</source>
<translation type="vanished">Indstil</translation>
</message>
<message>
<source>Move</source>
<translation type="vanished">Flyt</translation>
</message>
<message>
<source>Delete</source>
<translation type="vanished">Slet</translation>
</message>
</context>
<context>
<name>LxQtPanelPrivate</name>
<message>
<source>Panel</source>
<translation type="vanished">Panel</translation>
</message>
<message>
<source>Plugins</source>
<translation type="vanished">Udvidelsesmoduler</translation>
</message>
<message>
<source>Add plugins ...</source>
<translation type="vanished">Tilføj udvidelsesmoduler ...</translation>
</message>
<message>
<source>Move plugin</source>
<translation type="vanished">Flyt udvidelsesmodul</translation>
</message>
<message>
<source>Configure plugin</source>
<translation type="vanished">Indstil udvidelsesmodul</translation>
</message>
<message>
<source>Delete plugin</source>
<translation type="vanished">Fjern udvidelsesmodul</translation>
</message>
<message>
<source>Show this panel at</source>
<translation type="vanished">Vis dette panel ved</translation>
</message>
<message>
<source>Configure panel</source>
<translation type="vanished">Indstil panel</translation>
</message>
</context>
<context>
<name>Plugin</name>
<message>
<location filename="../plugin.cpp" line="395"/>
<source>Configure &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="400"/>
<source>Move &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="408"/>
<source>Remove &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PositionAction</name>
<message>
<source>Top of desktop</source>
<translation type="vanished">Toppen af skrivebordet</translation>
</message>
<message>
<source>Bottom of desktop</source>
<translation type="vanished">Bunden af skrivebordet</translation>
</message>
<message>
<source>Left of desktop</source>
<translation type="vanished">Venstre side af skrivebordet</translation>
</message>
<message>
<source>Right of desktop</source>
<translation type="vanished">Højre side af skrivebordet</translation>
</message>
<message>
<source>Top of desktop %1</source>
<translation type="vanished">Toppen af skrivebord %1</translation>
</message>
<message>
<source>Bottom of desktop %1</source>
<translation type="vanished">Bunden af skrivebord %1</translation>
</message>
<message>
<source>Left of desktop %1</source>
<translation type="vanished">Venstre side af skrivebord %1</translation>
</message>
<message>
<source>Right of desktop %1</source>
<translation type="vanished">Højre side af skrivebord %1</translation>
</message>
</context>
</TS>

View File

@ -1,358 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="da_DK">
<context>
<name>ConfigPanelDialog</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Panelindstillinger</translation>
</message>
<message>
<source>Panel size</source>
<translation type="vanished">Panelstørrelse</translation>
</message>
<message>
<source>Size:</source>
<translation type="vanished">Størrelse:</translation>
</message>
<message>
<source>px</source>
<translation type="vanished">px</translation>
</message>
<message>
<source>Use automatic sizing</source>
<translation type="vanished">Brug automatisk dimensionering</translation>
</message>
<message>
<source>Panel length &amp;&amp; position</source>
<translation type="vanished">Panel længde &amp;&amp; position</translation>
</message>
<message>
<source>Left</source>
<translation type="vanished">Venstrestillet</translation>
</message>
<message>
<source>Center</source>
<translation type="vanished">Midterstillet</translation>
</message>
<message>
<source>Right</source>
<translation type="vanished">Højrestillet</translation>
</message>
<message>
<source>%</source>
<translation type="vanished">%</translation>
</message>
<message>
<source>Alignment:</source>
<translation type="vanished">Tilpasning:</translation>
</message>
<message>
<source>Length:</source>
<translation type="vanished">Længde:</translation>
</message>
<message>
<source>Position:</source>
<translation type="vanished">Position:</translation>
</message>
<message>
<source>Top of desktop</source>
<translation type="vanished">Toppen af skrivebordet</translation>
</message>
<message>
<source>Left of desktop</source>
<translation type="vanished">Venstre side af skrivebordet</translation>
</message>
<message>
<source>Right of desktop</source>
<translation type="vanished">Højre side af skrivebordet</translation>
</message>
<message>
<source>Bottom of desktop</source>
<translation type="vanished">Bunden af skrivebordet</translation>
</message>
<message>
<source>Top of desktop %1</source>
<translation type="vanished">Toppen af skrivebord %1</translation>
</message>
<message>
<source>Left of desktop %1</source>
<translation type="vanished">Venstre side af skrivebord %1</translation>
</message>
<message>
<source>Right of desktop %1</source>
<translation type="vanished">Højre side af skrivebord %1</translation>
</message>
<message>
<source>Bottom of desktop %1</source>
<translation type="vanished">Bunden af skrivebord %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="80"/>
<location filename="../config/configpaneldialog.cpp" line="86"/>
<source>Configure Panel</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConfigPanelWidget</name>
<message>
<location filename="../config/configpaneldialog.ui" line="20"/>
<source>Configure panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="32"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="41"/>
<source>Size:</source>
<translation type="unfinished">Størrelse:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="48"/>
<location filename="../config/configpaneldialog.ui" line="82"/>
<source> px</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="58"/>
<source>Icon size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="65"/>
<source>Length:</source>
<translation type="unfinished">Længde:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="110"/>
<source>&lt;p&gt;Negative pixel value sets the panel length to that many pixels less than available screen space.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.g. &quot;Length&quot; set to -100px, screen size is 1000px, then real panel length will be 900 px.&lt;/i&gt;&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="124"/>
<source>%</source>
<translation type="unfinished">%</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="129"/>
<source>px</source>
<translation type="unfinished">px</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="140"/>
<source>Rows count:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="172"/>
<source>Alignment &amp;&amp; position</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="182"/>
<location filename="../config/configpaneldialog.cpp" line="234"/>
<source>Left</source>
<translation type="unfinished">Venstrestillet</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="187"/>
<location filename="../config/configpaneldialog.cpp" line="235"/>
<location filename="../config/configpaneldialog.cpp" line="241"/>
<source>Center</source>
<translation type="unfinished">Midterstillet</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="192"/>
<location filename="../config/configpaneldialog.cpp" line="236"/>
<source>Right</source>
<translation type="unfinished">Højrestillet</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="200"/>
<source>Alignment:</source>
<translation type="unfinished">Tilpasning:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="210"/>
<source>Position:</source>
<translation type="unfinished">Position:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="217"/>
<source>Auto-hide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="233"/>
<source>Styling</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="239"/>
<source>Custom font color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="246"/>
<source>Custom background image:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="260"/>
<source>Custom background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="351"/>
<source>Opacity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="200"/>
<source>Top of desktop</source>
<translation type="unfinished">Toppen af skrivebordet</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="201"/>
<source>Left of desktop</source>
<translation type="unfinished">Venstre side af skrivebordet</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="202"/>
<source>Right of desktop</source>
<translation type="unfinished">Højre side af skrivebordet</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="203"/>
<source>Bottom of desktop</source>
<translation type="unfinished">Bunden af skrivebordet</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="212"/>
<source>Top of desktop %1</source>
<translation type="unfinished">Toppen af skrivebord %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="213"/>
<source>Left of desktop %1</source>
<translation type="unfinished">Venstre side af skrivebord %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="214"/>
<source>Right of desktop %1</source>
<translation type="unfinished">Højre side af skrivebord %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="215"/>
<source>Bottom of desktop %1</source>
<translation type="unfinished">Bunden af skrivebord %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="240"/>
<source>Top</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="242"/>
<source>Bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="397"/>
<location filename="../config/configpaneldialog.cpp" line="411"/>
<source>Pick color</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="431"/>
<source>Images (*.png *.gif *.jpg)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQtPanel</name>
<message>
<location filename="../lxqtpanel.cpp" line="623"/>
<source>Add Panel Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="951"/>
<location filename="../lxqtpanel.cpp" line="970"/>
<source>Panel</source>
<translation>Hej Verden</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="973"/>
<source>Configure Panel...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="978"/>
<source>Add Panel Widgets...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="984"/>
<source>Add Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="991"/>
<source>Remove Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Configure panel...</source>
<translation type="vanished">Indstil panelet...</translation>
</message>
<message>
<source>Add plugins ...</source>
<translation type="vanished">Tilføj plugins ...</translation>
</message>
</context>
<context>
<name>LxQtPanelPlugin</name>
<message>
<source>Configure</source>
<translation type="vanished">Indstil</translation>
</message>
<message>
<source>Move</source>
<translation type="vanished">Flyt</translation>
</message>
<message>
<source>Remove</source>
<translation type="vanished">Fjern</translation>
</message>
</context>
<context>
<name>LxQtPanelPrivate</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Indstil panel</translation>
</message>
</context>
<context>
<name>Plugin</name>
<message>
<location filename="../plugin.cpp" line="395"/>
<source>Configure &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="400"/>
<source>Move &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="408"/>
<source>Remove &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -1,346 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="de">
<context>
<name>AddPluginDialog</name>
<message>
<location filename="../config/addplugindialog.ui" line="14"/>
<source>Add Plugins</source>
<translation>Plugins hinzufügen</translation>
</message>
<message>
<location filename="../config/addplugindialog.ui" line="22"/>
<source>Search:</source>
<translation>Suchen:</translation>
</message>
<message>
<location filename="../config/addplugindialog.ui" line="98"/>
<source>Add Widget</source>
<translation>Widget hinzufügen</translation>
</message>
<message>
<location filename="../config/addplugindialog.ui" line="105"/>
<source>Close</source>
<translation>Schließen</translation>
</message>
<message>
<location filename="../config/addplugindialog.cpp" line="114"/>
<source>(only one instance can run at a time)</source>
<translation>(es kann nur eine Instanz gleichzeitig ausgeführt werden)</translation>
</message>
</context>
<context>
<name>ConfigPanelDialog</name>
<message>
<location filename="../config/configpaneldialog.cpp" line="31"/>
<source>Configure Panel</source>
<translation>Leiste konfigurieren</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="38"/>
<source>Panel</source>
<translation>Leiste</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="42"/>
<source>Widgets</source>
<translation>Widgets</translation>
</message>
</context>
<context>
<name>ConfigPanelWidget</name>
<message>
<location filename="../config/configpanelwidget.ui" line="20"/>
<source>Configure panel</source>
<translation>Leiste konfigurieren</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="44"/>
<source>Size</source>
<translation>Größe</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="68"/>
<source>&lt;p&gt;Negative pixel value sets the panel length to that many pixels less than available screen space.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.g. &quot;Length&quot; set to -100px, screen size is 1000px, then real panel length will be 900 px.&lt;/i&gt;&lt;/p&gt;</source>
<translation>&lt;p&gt;Negative Pixelwerte setzen die Leistenlänge auf den Wert verfügbare Größe minus angegebener Größe.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;Z.B. bei &quot;Länge&quot; gesetzt auf -100px und einer Bildschirmgröße von 1000px hat die Leiste eine Größe von 900 px.&lt;/i&gt;&lt;/p&gt;</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="81"/>
<source>Size:</source>
<translation>Größe:</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="88"/>
<source>Length:</source>
<translation>Länge:</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="96"/>
<source>%</source>
<translation>%</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="101"/>
<source>px</source>
<translation>px</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="109"/>
<location filename="../config/configpanelwidget.ui" line="153"/>
<source> px</source>
<translation> px</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="166"/>
<source>Icon size:</source>
<translation>Symbolgröße:</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="173"/>
<source>Rows count:</source>
<translation>Zeilenzahl:</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="202"/>
<source>Alignment &amp;&amp; position</source>
<translation>Ausrichtung und Position</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="208"/>
<source>Position:</source>
<translation>Position:</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="218"/>
<source>Alignment:</source>
<translation>Ausrichtung:</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="244"/>
<location filename="../config/configpanelwidget.cpp" line="190"/>
<source>Left</source>
<translation>Links</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="249"/>
<location filename="../config/configpanelwidget.cpp" line="191"/>
<location filename="../config/configpanelwidget.cpp" line="197"/>
<source>Center</source>
<translation>Mitte</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="254"/>
<location filename="../config/configpanelwidget.cpp" line="192"/>
<source>Right</source>
<translation>Rechts</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="284"/>
<source>Auto-hide</source>
<translation>Automatisch ausblenden</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="303"/>
<source>Custom styling</source>
<translation>Eigener Stil</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="324"/>
<source>Font color:</source>
<translation>Schriftfarbe:</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="364"/>
<source>Background color:</source>
<translation>Hintergrundfarbe:</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="403"/>
<source>Background opacity:</source>
<translation>Deckkraft:</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="435"/>
<source>&lt;small&gt;Compositing is required for panel transparency.&lt;/small&gt;</source>
<translation>&lt;small&gt;Für Transparenzeffekt wird Compositing benötigt.&lt;/small&gt;</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="463"/>
<source>Background image:</source>
<translation>Hintergrundbild:</translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="156"/>
<source>Top of desktop</source>
<translation>Oben auf der Arbeitsfläche</translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="157"/>
<source>Left of desktop</source>
<translation>Links auf der Arbeitsfläche</translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="158"/>
<source>Right of desktop</source>
<translation>Rechts auf der Arbeitsfläche</translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="159"/>
<source>Bottom of desktop</source>
<translation>Unten auf der Arbeitsfläche</translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="168"/>
<source>Top of desktop %1</source>
<translation>Oben auf Arbeitsfläche %1</translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="169"/>
<source>Left of desktop %1</source>
<translation>Links auf Arbeitsfläche %1</translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="170"/>
<source>Right of desktop %1</source>
<translation>Rechts auf Arbeitsfläche %1</translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="171"/>
<source>Bottom of desktop %1</source>
<translation>Unten auf Arbeitsfläche %1</translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="196"/>
<source>Top</source>
<translation>Oben</translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="198"/>
<source>Bottom</source>
<translation>Unten</translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="354"/>
<location filename="../config/configpanelwidget.cpp" line="370"/>
<source>Pick color</source>
<translation>Farbe auswählen</translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="388"/>
<source>Pick image</source>
<translation>Bild auswählen</translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="388"/>
<source>Images (*.png *.gif *.jpg)</source>
<translation>Bilder (*.png *.gif *.jpg)</translation>
</message>
</context>
<context>
<name>ConfigPluginsWidget</name>
<message>
<location filename="../config/configpluginswidget.ui" line="14"/>
<source>Configure Plugins</source>
<translation>Plugins konfigurieren</translation>
</message>
<message>
<location filename="../config/configpluginswidget.ui" line="84"/>
<source>Note: changes made in this page cannot be reset.</source>
<translation>Hinweis: Hier gemachte Änderungen können nicht rückgängig gemacht werden.</translation>
</message>
<message>
<location filename="../config/configpluginswidget.ui" line="112"/>
<source>Move up</source>
<translation>Nach oben schieben</translation>
</message>
<message>
<location filename="../config/configpluginswidget.ui" line="115"/>
<location filename="../config/configpluginswidget.ui" line="129"/>
<location filename="../config/configpluginswidget.ui" line="150"/>
<location filename="../config/configpluginswidget.ui" line="164"/>
<location filename="../config/configpluginswidget.ui" line="185"/>
<source>...</source>
<translation>...</translation>
</message>
<message>
<location filename="../config/configpluginswidget.ui" line="126"/>
<source>Move down</source>
<translation>Nach unten schieben</translation>
</message>
<message>
<location filename="../config/configpluginswidget.ui" line="147"/>
<source>Add</source>
<translation>Hinzufügen</translation>
</message>
<message>
<location filename="../config/configpluginswidget.ui" line="161"/>
<source>Remove</source>
<translation>Entfernen</translation>
</message>
<message>
<location filename="../config/configpluginswidget.ui" line="182"/>
<source>Configure</source>
<translation>Konfigurieren</translation>
</message>
</context>
<context>
<name>LxQtPanel</name>
<message>
<location filename="../lxqtpanel.cpp" line="912"/>
<location filename="../lxqtpanel.cpp" line="931"/>
<source>Panel</source>
<translation>Leiste</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="934"/>
<source>Configure Panel</source>
<translation>Leiste konfigurieren</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="939"/>
<source>Manage Widgets</source>
<translation>Widgets verwalten</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="945"/>
<source>Add Panel</source>
<translation>Leiste hinzufügen</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="952"/>
<source>Remove Panel</source>
<translation>Leiste entfernen</translation>
</message>
</context>
<context>
<name>Plugin</name>
<message>
<location filename="../plugin.cpp" line="403"/>
<source>Configure &quot;%1&quot;</source>
<translation>&quot;%1&quot; konfigurieren</translation>
</message>
<message>
<location filename="../plugin.cpp" line="408"/>
<source>Move &quot;%1&quot;</source>
<translation>&quot;%1&quot; verschieben</translation>
</message>
<message>
<location filename="../plugin.cpp" line="416"/>
<source>Remove &quot;%1&quot;</source>
<translation>&quot;%1&quot; entfernen</translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="../lxqtpanelapplication.cpp" line="52"/>
<source>Use alternate configuration file.</source>
<translation>Alternative Konfigurationsdatei verwenden.</translation>
</message>
<message>
<location filename="../lxqtpanelapplication.cpp" line="53"/>
<source>Configuration file</source>
<translation>Konfigurationsdatei</translation>
</message>
</context>
</TS>

View File

@ -1,358 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="el_GR">
<context>
<name>ConfigPanelDialog</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Διαμόρφωση πίνακα</translation>
</message>
<message>
<source>Panel size</source>
<translation type="vanished">Μέγεθος πίνακα</translation>
</message>
<message>
<source>Size:</source>
<translation type="vanished">Μέγεθος:</translation>
</message>
<message>
<source>px</source>
<translation type="vanished">px</translation>
</message>
<message>
<source>Use automatic sizing</source>
<translation type="vanished">Χρήση αυτόματου μεγέθους</translation>
</message>
<message>
<source>Panel length &amp;&amp; position</source>
<translation type="vanished">Μήκος &amp;&amp; θέση πίνακα</translation>
</message>
<message>
<source>Left</source>
<translation type="vanished">Αριστερά</translation>
</message>
<message>
<source>Center</source>
<translation type="vanished">Κέντρο</translation>
</message>
<message>
<source>Right</source>
<translation type="vanished">Δεξιά</translation>
</message>
<message>
<source>%</source>
<translation type="vanished">%</translation>
</message>
<message>
<source>Alignment:</source>
<translation type="vanished">Στοίχιση:</translation>
</message>
<message>
<source>Length:</source>
<translation type="vanished">Μήκος:</translation>
</message>
<message>
<source>Position:</source>
<translation type="vanished">Θέση:</translation>
</message>
<message>
<source>Top of desktop</source>
<translation type="vanished">Επάνω στην επιφάνεια εργασίας</translation>
</message>
<message>
<source>Left of desktop</source>
<translation type="vanished">Αριστερά στην επιφάνεια εργασίας</translation>
</message>
<message>
<source>Right of desktop</source>
<translation type="vanished">Δεξιά στην επιφάνεια εργασίας</translation>
</message>
<message>
<source>Bottom of desktop</source>
<translation type="vanished">Κάτω στην επιφάνεια εργασίας</translation>
</message>
<message>
<source>Top of desktop %1</source>
<translation type="vanished">Επάνω στην επιφάνεια εργασίας %1</translation>
</message>
<message>
<source>Left of desktop %1</source>
<translation type="vanished">Αριστερά στην επιφάνεια εργασίας %1</translation>
</message>
<message>
<source>Right of desktop %1</source>
<translation type="vanished">Δεξιά στην επιφάνεια εργασίας %1</translation>
</message>
<message>
<source>Bottom of desktop %1</source>
<translation type="vanished">Κάτω στην επιφάνεια εργασίας %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="80"/>
<location filename="../config/configpaneldialog.cpp" line="86"/>
<source>Configure Panel</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConfigPanelWidget</name>
<message>
<location filename="../config/configpaneldialog.ui" line="20"/>
<source>Configure panel</source>
<translation type="unfinished">Διαμόρφωση πίνακα</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="32"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="41"/>
<source>Size:</source>
<translation type="unfinished">Μέγεθος:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="48"/>
<location filename="../config/configpaneldialog.ui" line="82"/>
<source> px</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="58"/>
<source>Icon size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="65"/>
<source>Length:</source>
<translation type="unfinished">Μήκος:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="110"/>
<source>&lt;p&gt;Negative pixel value sets the panel length to that many pixels less than available screen space.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.g. &quot;Length&quot; set to -100px, screen size is 1000px, then real panel length will be 900 px.&lt;/i&gt;&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="124"/>
<source>%</source>
<translation type="unfinished">%</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="129"/>
<source>px</source>
<translation type="unfinished">px</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="140"/>
<source>Rows count:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="172"/>
<source>Alignment &amp;&amp; position</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="182"/>
<location filename="../config/configpaneldialog.cpp" line="234"/>
<source>Left</source>
<translation type="unfinished">Αριστερά</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="187"/>
<location filename="../config/configpaneldialog.cpp" line="235"/>
<location filename="../config/configpaneldialog.cpp" line="241"/>
<source>Center</source>
<translation type="unfinished">Κέντρο</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="192"/>
<location filename="../config/configpaneldialog.cpp" line="236"/>
<source>Right</source>
<translation type="unfinished">Δεξιά</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="200"/>
<source>Alignment:</source>
<translation type="unfinished">Στοίχιση:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="210"/>
<source>Position:</source>
<translation type="unfinished">Θέση:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="217"/>
<source>Auto-hide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="233"/>
<source>Styling</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="239"/>
<source>Custom font color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="246"/>
<source>Custom background image:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="260"/>
<source>Custom background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="351"/>
<source>Opacity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="200"/>
<source>Top of desktop</source>
<translation type="unfinished">Επάνω στην επιφάνεια εργασίας</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="201"/>
<source>Left of desktop</source>
<translation type="unfinished">Αριστερά στην επιφάνεια εργασίας</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="202"/>
<source>Right of desktop</source>
<translation type="unfinished">Δεξιά στην επιφάνεια εργασίας</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="203"/>
<source>Bottom of desktop</source>
<translation type="unfinished">Κάτω στην επιφάνεια εργασίας</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="212"/>
<source>Top of desktop %1</source>
<translation type="unfinished">Επάνω στην επιφάνεια εργασίας %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="213"/>
<source>Left of desktop %1</source>
<translation type="unfinished">Αριστερά στην επιφάνεια εργασίας %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="214"/>
<source>Right of desktop %1</source>
<translation type="unfinished">Δεξιά στην επιφάνεια εργασίας %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="215"/>
<source>Bottom of desktop %1</source>
<translation type="unfinished">Κάτω στην επιφάνεια εργασίας %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="240"/>
<source>Top</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="242"/>
<source>Bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="397"/>
<location filename="../config/configpaneldialog.cpp" line="411"/>
<source>Pick color</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="431"/>
<source>Images (*.png *.gif *.jpg)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQtPanel</name>
<message>
<location filename="../lxqtpanel.cpp" line="623"/>
<source>Add Panel Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="951"/>
<location filename="../lxqtpanel.cpp" line="970"/>
<source>Panel</source>
<translation>Πίνακας</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="973"/>
<source>Configure Panel...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="978"/>
<source>Add Panel Widgets...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="984"/>
<source>Add Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="991"/>
<source>Remove Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Configure panel...</source>
<translation type="vanished">Διαμόρφωση πίνακα...</translation>
</message>
<message>
<source>Add plugins ...</source>
<translation type="vanished">Προσθήκη επεκτάσεων...</translation>
</message>
</context>
<context>
<name>LxQtPanelPlugin</name>
<message>
<source>Configure</source>
<translation type="vanished">Διαμόρφωση</translation>
</message>
<message>
<source>Move</source>
<translation type="vanished">Μετακίνηση</translation>
</message>
<message>
<source>Remove</source>
<translation type="vanished">Αφαίρεση</translation>
</message>
</context>
<context>
<name>LxQtPanelPrivate</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Διαμόρφωση πίνακα</translation>
</message>
</context>
<context>
<name>Plugin</name>
<message>
<location filename="../plugin.cpp" line="395"/>
<source>Configure &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="400"/>
<source>Move &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="408"/>
<source>Remove &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -1,358 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="eo">
<context>
<name>ConfigPanelDialog</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Agordi panelon</translation>
</message>
<message>
<source>Panel size</source>
<translation type="vanished">Grando de panelo</translation>
</message>
<message>
<source>Size:</source>
<translation type="vanished">Grando:</translation>
</message>
<message>
<source>px</source>
<translation type="vanished">rastr</translation>
</message>
<message>
<source>Use automatic sizing</source>
<translation type="vanished">Uzi aŭtomatan grandigon</translation>
</message>
<message>
<source>Panel length &amp;&amp; position</source>
<translation type="vanished">Longo kaj loko de panelo</translation>
</message>
<message>
<source>Left</source>
<translation type="vanished">Maldekstre</translation>
</message>
<message>
<source>Center</source>
<translation type="vanished">Centre</translation>
</message>
<message>
<source>Right</source>
<translation type="vanished">Dekstre</translation>
</message>
<message>
<source>%</source>
<translation type="vanished">%</translation>
</message>
<message>
<source>Alignment:</source>
<translation type="vanished">Loko:</translation>
</message>
<message>
<source>Length:</source>
<translation type="vanished">Longo:</translation>
</message>
<message>
<source>Position:</source>
<translation type="vanished">Loko:</translation>
</message>
<message>
<source>Top of desktop</source>
<translation type="vanished">Supre de labortablo</translation>
</message>
<message>
<source>Left of desktop</source>
<translation type="vanished">Maldekstre de labortablo</translation>
</message>
<message>
<source>Right of desktop</source>
<translation type="vanished">Dekstre de labortablo</translation>
</message>
<message>
<source>Bottom of desktop</source>
<translation type="vanished">Malsupre de labortablo</translation>
</message>
<message>
<source>Top of desktop %1</source>
<translation type="vanished">Supre de labortablo %1</translation>
</message>
<message>
<source>Left of desktop %1</source>
<translation type="vanished">Maldekstre de labortablo %1</translation>
</message>
<message>
<source>Right of desktop %1</source>
<translation type="vanished">Dekstre de labortablo %1</translation>
</message>
<message>
<source>Bottom of desktop %1</source>
<translation type="vanished">Malsupre de labortablo %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="80"/>
<location filename="../config/configpaneldialog.cpp" line="86"/>
<source>Configure Panel</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConfigPanelWidget</name>
<message>
<location filename="../config/configpaneldialog.ui" line="20"/>
<source>Configure panel</source>
<translation type="unfinished">Agordi panelon</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="32"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="41"/>
<source>Size:</source>
<translation type="unfinished">Grando:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="48"/>
<location filename="../config/configpaneldialog.ui" line="82"/>
<source> px</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="58"/>
<source>Icon size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="65"/>
<source>Length:</source>
<translation type="unfinished">Longo:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="110"/>
<source>&lt;p&gt;Negative pixel value sets the panel length to that many pixels less than available screen space.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.g. &quot;Length&quot; set to -100px, screen size is 1000px, then real panel length will be 900 px.&lt;/i&gt;&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="124"/>
<source>%</source>
<translation type="unfinished">%</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="129"/>
<source>px</source>
<translation type="unfinished">rastr</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="140"/>
<source>Rows count:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="172"/>
<source>Alignment &amp;&amp; position</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="182"/>
<location filename="../config/configpaneldialog.cpp" line="234"/>
<source>Left</source>
<translation type="unfinished">Maldekstre</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="187"/>
<location filename="../config/configpaneldialog.cpp" line="235"/>
<location filename="../config/configpaneldialog.cpp" line="241"/>
<source>Center</source>
<translation type="unfinished">Centre</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="192"/>
<location filename="../config/configpaneldialog.cpp" line="236"/>
<source>Right</source>
<translation type="unfinished">Dekstre</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="200"/>
<source>Alignment:</source>
<translation type="unfinished">Loko:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="210"/>
<source>Position:</source>
<translation type="unfinished">Loko:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="217"/>
<source>Auto-hide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="233"/>
<source>Styling</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="239"/>
<source>Custom font color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="246"/>
<source>Custom background image:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="260"/>
<source>Custom background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="351"/>
<source>Opacity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="200"/>
<source>Top of desktop</source>
<translation type="unfinished">Supre de labortablo</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="201"/>
<source>Left of desktop</source>
<translation type="unfinished">Maldekstre de labortablo</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="202"/>
<source>Right of desktop</source>
<translation type="unfinished">Dekstre de labortablo</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="203"/>
<source>Bottom of desktop</source>
<translation type="unfinished">Malsupre de labortablo</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="212"/>
<source>Top of desktop %1</source>
<translation type="unfinished">Supre de labortablo %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="213"/>
<source>Left of desktop %1</source>
<translation type="unfinished">Maldekstre de labortablo %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="214"/>
<source>Right of desktop %1</source>
<translation type="unfinished">Dekstre de labortablo %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="215"/>
<source>Bottom of desktop %1</source>
<translation type="unfinished">Malsupre de labortablo %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="240"/>
<source>Top</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="242"/>
<source>Bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="397"/>
<location filename="../config/configpaneldialog.cpp" line="411"/>
<source>Pick color</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="431"/>
<source>Images (*.png *.gif *.jpg)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQtPanel</name>
<message>
<location filename="../lxqtpanel.cpp" line="623"/>
<source>Add Panel Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="951"/>
<location filename="../lxqtpanel.cpp" line="970"/>
<source>Panel</source>
<translation>Agordoj de muso por LxQto</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="973"/>
<source>Configure Panel...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="978"/>
<source>Add Panel Widgets...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="984"/>
<source>Add Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="991"/>
<source>Remove Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Configure panel...</source>
<translation type="vanished">Agordi panelon...</translation>
</message>
<message>
<source>Add plugins ...</source>
<translation type="vanished">Aldoni kromprogramojn...</translation>
</message>
</context>
<context>
<name>LxQtPanelPlugin</name>
<message>
<source>Configure</source>
<translation type="vanished">Agordi</translation>
</message>
<message>
<source>Move</source>
<translation type="vanished">Movi</translation>
</message>
<message>
<source>Remove</source>
<translation type="vanished">Forigi</translation>
</message>
</context>
<context>
<name>LxQtPanelPrivate</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Agordi panelon</translation>
</message>
</context>
<context>
<name>Plugin</name>
<message>
<location filename="../plugin.cpp" line="395"/>
<source>Configure &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="400"/>
<source>Move &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="408"/>
<source>Remove &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -1,358 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="es">
<context>
<name>ConfigPanelDialog</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Configurar panel</translation>
</message>
<message>
<source>Panel size</source>
<translation type="vanished">Tamaño del panel</translation>
</message>
<message>
<source>Size:</source>
<translation type="vanished">Tamaño:</translation>
</message>
<message>
<source>px</source>
<translation type="vanished">px</translation>
</message>
<message>
<source>Use automatic sizing</source>
<translation type="vanished">Usar tamaño automático</translation>
</message>
<message>
<source>Panel length &amp;&amp; position</source>
<translation type="vanished">Largo y posición del panel</translation>
</message>
<message>
<source>Left</source>
<translation type="vanished">Izquierda</translation>
</message>
<message>
<source>Center</source>
<translation type="vanished">Centro</translation>
</message>
<message>
<source>Right</source>
<translation type="vanished">Derecha</translation>
</message>
<message>
<source>%</source>
<translation type="vanished">%</translation>
</message>
<message>
<source>Alignment:</source>
<translation type="vanished">Alineación:</translation>
</message>
<message>
<source>Length:</source>
<translation type="vanished">Largo:</translation>
</message>
<message>
<source>Position:</source>
<translation type="vanished">Posición:</translation>
</message>
<message>
<source>Top of desktop</source>
<translation type="vanished">Extremo superior del escritorio</translation>
</message>
<message>
<source>Left of desktop</source>
<translation type="vanished">Extremo izquierdo del escritorio</translation>
</message>
<message>
<source>Right of desktop</source>
<translation type="vanished">Extremo derecho del escritorio</translation>
</message>
<message>
<source>Bottom of desktop</source>
<translation type="vanished">Extremo inferior del escritorio</translation>
</message>
<message>
<source>Top of desktop %1</source>
<translation type="vanished">Extremo superior del escritorio %1</translation>
</message>
<message>
<source>Left of desktop %1</source>
<translation type="vanished">Extremo izquierdo del escritorio %1</translation>
</message>
<message>
<source>Right of desktop %1</source>
<translation type="vanished">Extremo derecho del escritorio %1</translation>
</message>
<message>
<source>Bottom of desktop %1</source>
<translation type="vanished">Extremo inferior del escritorio %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="80"/>
<location filename="../config/configpaneldialog.cpp" line="86"/>
<source>Configure Panel</source>
<translation>Configurar Panel</translation>
</message>
</context>
<context>
<name>ConfigPanelWidget</name>
<message>
<location filename="../config/configpaneldialog.ui" line="20"/>
<source>Configure panel</source>
<translation>Configurar panel</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="32"/>
<source>Size</source>
<translation>Tamaño</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="41"/>
<source>Size:</source>
<translation>Tamaño:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="48"/>
<location filename="../config/configpaneldialog.ui" line="82"/>
<source> px</source>
<translation>px</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="58"/>
<source>Icon size:</source>
<translation>Tamaño de ícono:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="65"/>
<source>Length:</source>
<translation>Largo:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="110"/>
<source>&lt;p&gt;Negative pixel value sets the panel length to that many pixels less than available screen space.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.g. &quot;Length&quot; set to -100px, screen size is 1000px, then real panel length will be 900 px.&lt;/i&gt;&lt;/p&gt;</source>
<translation>&lt;p&gt;Un largo negativo en píxeles configura el largo del panel a esa cantidad de píxeles menos que el espacio disponible en la pantalla.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.j. &quot;Largo&quot; configurado a -100px, el tamaño de la pantalla es 1000px, entonces el largo real del panel será de 900 px.&lt;/i&gt;&lt;/p&gt;</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="124"/>
<source>%</source>
<translation>%</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="129"/>
<source>px</source>
<translation>px</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="140"/>
<source>Rows count:</source>
<translation>Cantidad de filas:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="172"/>
<source>Alignment &amp;&amp; position</source>
<translation>Alineación y posición</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="182"/>
<location filename="../config/configpaneldialog.cpp" line="234"/>
<source>Left</source>
<translation>Izquierda</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="187"/>
<location filename="../config/configpaneldialog.cpp" line="235"/>
<location filename="../config/configpaneldialog.cpp" line="241"/>
<source>Center</source>
<translation>Centro</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="192"/>
<location filename="../config/configpaneldialog.cpp" line="236"/>
<source>Right</source>
<translation>Derecha</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="200"/>
<source>Alignment:</source>
<translation>Alineación:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="210"/>
<source>Position:</source>
<translation>Posición:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="217"/>
<source>Auto-hide</source>
<translation>Ocultar automáticamente</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="233"/>
<source>Styling</source>
<translation>Estilo</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="239"/>
<source>Custom font color:</source>
<translation>Color de fuente personalizado:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="246"/>
<source>Custom background image:</source>
<translation>Imagen de fondo personalizada:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="260"/>
<source>Custom background color:</source>
<translation>Color de fondo personalizado:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="351"/>
<source>Opacity</source>
<translation>Opacidad</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="200"/>
<source>Top of desktop</source>
<translation>Extremo superior del escritorio</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="201"/>
<source>Left of desktop</source>
<translation>Extremo izquierdo del escritorio</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="202"/>
<source>Right of desktop</source>
<translation>Extremo derecho del escritorio</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="203"/>
<source>Bottom of desktop</source>
<translation>Extremo inferior del escritorio</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="212"/>
<source>Top of desktop %1</source>
<translation>Extremo superior del escritorio %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="213"/>
<source>Left of desktop %1</source>
<translation>Extremo izquierdo del escritorio %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="214"/>
<source>Right of desktop %1</source>
<translation>Extremo derecho del escritorio %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="215"/>
<source>Bottom of desktop %1</source>
<translation>Extremo inferior del escritorio %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="240"/>
<source>Top</source>
<translation>Arriba</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="242"/>
<source>Bottom</source>
<translation>Abajo</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="397"/>
<location filename="../config/configpaneldialog.cpp" line="411"/>
<source>Pick color</source>
<translation>Seleccione un color</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="431"/>
<source>Images (*.png *.gif *.jpg)</source>
<translation>Imágenes (*.png *.gif *.jpg)</translation>
</message>
</context>
<context>
<name>LxQtPanel</name>
<message>
<location filename="../lxqtpanel.cpp" line="623"/>
<source>Add Panel Widgets</source>
<translation>Agregar Widgets al Panel</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="951"/>
<location filename="../lxqtpanel.cpp" line="970"/>
<source>Panel</source>
<translation>Panel</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="973"/>
<source>Configure Panel...</source>
<translation>Configurar Panel...</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="978"/>
<source>Add Panel Widgets...</source>
<translation>Agregar Widgets al Panel...</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="984"/>
<source>Add Panel</source>
<translation>Agregar Panel</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="991"/>
<source>Remove Panel</source>
<translation>Eliminar Panel</translation>
</message>
<message>
<source>Configure panel...</source>
<translation type="vanished">Configuración del panel...</translation>
</message>
<message>
<source>Add plugins ...</source>
<translation type="vanished">Añadir extensiones...</translation>
</message>
</context>
<context>
<name>LxQtPanelPlugin</name>
<message>
<source>Configure</source>
<translation type="vanished">Configurar</translation>
</message>
<message>
<source>Move</source>
<translation type="vanished">Mover</translation>
</message>
<message>
<source>Remove</source>
<translation type="vanished">Quitar</translation>
</message>
</context>
<context>
<name>LxQtPanelPrivate</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Configurar panel</translation>
</message>
</context>
<context>
<name>Plugin</name>
<message>
<location filename="../plugin.cpp" line="395"/>
<source>Configure &quot;%1&quot;</source>
<translation>Configurar &quot;%1&quot;</translation>
</message>
<message>
<location filename="../plugin.cpp" line="400"/>
<source>Move &quot;%1&quot;</source>
<translation>Mover &quot;%1&quot;</translation>
</message>
<message>
<location filename="../plugin.cpp" line="408"/>
<source>Remove &quot;%1&quot;</source>
<translation>Eliminar &quot;%1&quot;</translation>
</message>
</context>
</TS>

View File

@ -1,310 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="es_UY">
<context>
<name>ConfigPanelDialog</name>
<message>
<location filename="../config/configpaneldialog.cpp" line="80"/>
<location filename="../config/configpaneldialog.cpp" line="86"/>
<source>Configure Panel</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConfigPanelWidget</name>
<message>
<location filename="../config/configpaneldialog.ui" line="20"/>
<source>Configure panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="32"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="41"/>
<source>Size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="48"/>
<location filename="../config/configpaneldialog.ui" line="82"/>
<source> px</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="58"/>
<source>Icon size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="65"/>
<source>Length:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="110"/>
<source>&lt;p&gt;Negative pixel value sets the panel length to that many pixels less than available screen space.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.g. &quot;Length&quot; set to -100px, screen size is 1000px, then real panel length will be 900 px.&lt;/i&gt;&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="124"/>
<source>%</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="129"/>
<source>px</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="140"/>
<source>Rows count:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="172"/>
<source>Alignment &amp;&amp; position</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="182"/>
<location filename="../config/configpaneldialog.cpp" line="234"/>
<source>Left</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="187"/>
<location filename="../config/configpaneldialog.cpp" line="235"/>
<location filename="../config/configpaneldialog.cpp" line="241"/>
<source>Center</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="192"/>
<location filename="../config/configpaneldialog.cpp" line="236"/>
<source>Right</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="200"/>
<source>Alignment:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="210"/>
<source>Position:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="217"/>
<source>Auto-hide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="233"/>
<source>Styling</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="239"/>
<source>Custom font color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="246"/>
<source>Custom background image:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="260"/>
<source>Custom background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="351"/>
<source>Opacity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="200"/>
<source>Top of desktop</source>
<translation type="unfinished">Arriba del escritorio</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="201"/>
<source>Left of desktop</source>
<translation type="unfinished">A la izquierda del escritorio</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="202"/>
<source>Right of desktop</source>
<translation type="unfinished">A la derecha del escritorio</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="203"/>
<source>Bottom of desktop</source>
<translation type="unfinished">Abajo del escritorio</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="212"/>
<source>Top of desktop %1</source>
<translation type="unfinished">Arriba del escritorio %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="213"/>
<source>Left of desktop %1</source>
<translation type="unfinished">A la izquierda del escritorio %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="214"/>
<source>Right of desktop %1</source>
<translation type="unfinished">A la derecha del excritorio %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="215"/>
<source>Bottom of desktop %1</source>
<translation type="unfinished">Abajo del escritorio %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="240"/>
<source>Top</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="242"/>
<source>Bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="397"/>
<location filename="../config/configpaneldialog.cpp" line="411"/>
<source>Pick color</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="431"/>
<source>Images (*.png *.gif *.jpg)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQtPanel</name>
<message>
<location filename="../lxqtpanel.cpp" line="623"/>
<source>Add Panel Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="951"/>
<location filename="../lxqtpanel.cpp" line="970"/>
<source>Panel</source>
<translation type="unfinished">Panel</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="973"/>
<source>Configure Panel...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="978"/>
<source>Add Panel Widgets...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="984"/>
<source>Add Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="991"/>
<source>Remove Panel</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQtPanelPrivate</name>
<message>
<source>Panel</source>
<translation type="vanished">Panel</translation>
</message>
<message>
<source>Plugins</source>
<translation type="vanished">Complementos</translation>
</message>
<message>
<source>Add plugins ...</source>
<translation type="vanished">Agregar complemento ...</translation>
</message>
<message>
<source>Move plugin</source>
<translation type="vanished">Mover complemento</translation>
</message>
<message>
<source>Configure plugin</source>
<translation type="vanished">Configurar complemento</translation>
</message>
<message>
<source>Delete plugin</source>
<translation type="vanished">Borrar complemento</translation>
</message>
<message>
<source>Show this panel at</source>
<translation type="vanished">Mostrar este complemento</translation>
</message>
</context>
<context>
<name>Plugin</name>
<message>
<location filename="../plugin.cpp" line="395"/>
<source>Configure &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="400"/>
<source>Move &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="408"/>
<source>Remove &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PositionAction</name>
<message>
<source>Top of desktop</source>
<translation type="vanished">Arriba del escritorio</translation>
</message>
<message>
<source>Bottom of desktop</source>
<translation type="vanished">Abajo del escritorio</translation>
</message>
<message>
<source>Left of desktop</source>
<translation type="vanished">A la izquierda del escritorio</translation>
</message>
<message>
<source>Right of desktop</source>
<translation type="vanished">A la derecha del escritorio</translation>
</message>
<message>
<source>Top of desktop %1</source>
<translation type="vanished">Arriba del escritorio %1</translation>
</message>
<message>
<source>Bottom of desktop %1</source>
<translation type="vanished">Abajo del escritorio %1</translation>
</message>
<message>
<source>Left of desktop %1</source>
<translation type="vanished">A la izquierda del escritorio %1</translation>
</message>
<message>
<source>Right of desktop %1</source>
<translation type="vanished">A la derecha del excritorio %1</translation>
</message>
</context>
</TS>

View File

@ -1,358 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="es_VE">
<context>
<name>ConfigPanelDialog</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Configurar panel</translation>
</message>
<message>
<source>Panel size</source>
<translation type="vanished">Tamaño de panel</translation>
</message>
<message>
<source>Size:</source>
<translation type="vanished">Tamaño:</translation>
</message>
<message>
<source>px</source>
<translation type="vanished">px</translation>
</message>
<message>
<source>Use automatic sizing</source>
<translation type="vanished">Tamaño automatico</translation>
</message>
<message>
<source>Panel length &amp;&amp; position</source>
<translation type="vanished">Tamaño &amp; posicion el panel</translation>
</message>
<message>
<source>Left</source>
<translation type="vanished">Izquierda</translation>
</message>
<message>
<source>Center</source>
<translation type="vanished">Centrado</translation>
</message>
<message>
<source>Right</source>
<translation type="vanished">Derecha</translation>
</message>
<message>
<source>%</source>
<translation type="vanished">%</translation>
</message>
<message>
<source>Alignment:</source>
<translation type="vanished">Alineacion:</translation>
</message>
<message>
<source>Length:</source>
<translation type="vanished">Largo:</translation>
</message>
<message>
<source>Position:</source>
<translation type="vanished">Posicion:</translation>
</message>
<message>
<source>Top of desktop</source>
<translation type="vanished">Tope del escritorio</translation>
</message>
<message>
<source>Left of desktop</source>
<translation type="vanished">Izquierda del escritorio</translation>
</message>
<message>
<source>Right of desktop</source>
<translation type="vanished">Derecha del escritorio</translation>
</message>
<message>
<source>Bottom of desktop</source>
<translation type="vanished">Inferior del escritorio</translation>
</message>
<message>
<source>Top of desktop %1</source>
<translation type="vanished">Tope del escritorio %1</translation>
</message>
<message>
<source>Left of desktop %1</source>
<translation type="vanished">Izquierda del escritorio %1</translation>
</message>
<message>
<source>Right of desktop %1</source>
<translation type="vanished">Derecha del escritorio %1</translation>
</message>
<message>
<source>Bottom of desktop %1</source>
<translation type="vanished">Inferior del escritorio %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="80"/>
<location filename="../config/configpaneldialog.cpp" line="86"/>
<source>Configure Panel</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConfigPanelWidget</name>
<message>
<location filename="../config/configpaneldialog.ui" line="20"/>
<source>Configure panel</source>
<translation type="unfinished">Configurar panel</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="32"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="41"/>
<source>Size:</source>
<translation type="unfinished">Tamaño:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="48"/>
<location filename="../config/configpaneldialog.ui" line="82"/>
<source> px</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="58"/>
<source>Icon size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="65"/>
<source>Length:</source>
<translation type="unfinished">Largo:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="110"/>
<source>&lt;p&gt;Negative pixel value sets the panel length to that many pixels less than available screen space.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.g. &quot;Length&quot; set to -100px, screen size is 1000px, then real panel length will be 900 px.&lt;/i&gt;&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="124"/>
<source>%</source>
<translation type="unfinished">%</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="129"/>
<source>px</source>
<translation type="unfinished">px</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="140"/>
<source>Rows count:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="172"/>
<source>Alignment &amp;&amp; position</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="182"/>
<location filename="../config/configpaneldialog.cpp" line="234"/>
<source>Left</source>
<translation type="unfinished">Izquierda</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="187"/>
<location filename="../config/configpaneldialog.cpp" line="235"/>
<location filename="../config/configpaneldialog.cpp" line="241"/>
<source>Center</source>
<translation type="unfinished">Centrado</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="192"/>
<location filename="../config/configpaneldialog.cpp" line="236"/>
<source>Right</source>
<translation type="unfinished">Derecha</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="200"/>
<source>Alignment:</source>
<translation type="unfinished">Alineacion:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="210"/>
<source>Position:</source>
<translation type="unfinished">Posicion:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="217"/>
<source>Auto-hide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="233"/>
<source>Styling</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="239"/>
<source>Custom font color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="246"/>
<source>Custom background image:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="260"/>
<source>Custom background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="351"/>
<source>Opacity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="200"/>
<source>Top of desktop</source>
<translation type="unfinished">Tope del escritorio</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="201"/>
<source>Left of desktop</source>
<translation type="unfinished">Izquierda del escritorio</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="202"/>
<source>Right of desktop</source>
<translation type="unfinished">Derecha del escritorio</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="203"/>
<source>Bottom of desktop</source>
<translation type="unfinished">Inferior del escritorio</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="212"/>
<source>Top of desktop %1</source>
<translation type="unfinished">Tope del escritorio %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="213"/>
<source>Left of desktop %1</source>
<translation type="unfinished">Izquierda del escritorio %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="214"/>
<source>Right of desktop %1</source>
<translation type="unfinished">Derecha del escritorio %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="215"/>
<source>Bottom of desktop %1</source>
<translation type="unfinished">Inferior del escritorio %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="240"/>
<source>Top</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="242"/>
<source>Bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="397"/>
<location filename="../config/configpaneldialog.cpp" line="411"/>
<source>Pick color</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="431"/>
<source>Images (*.png *.gif *.jpg)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQtPanel</name>
<message>
<location filename="../lxqtpanel.cpp" line="623"/>
<source>Add Panel Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="951"/>
<location filename="../lxqtpanel.cpp" line="970"/>
<source>Panel</source>
<translation>Panel</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="973"/>
<source>Configure Panel...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="978"/>
<source>Add Panel Widgets...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="984"/>
<source>Add Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="991"/>
<source>Remove Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Configure panel...</source>
<translation type="vanished">Configura el panel</translation>
</message>
<message>
<source>Add plugins ...</source>
<translation type="vanished">Agregar plugins</translation>
</message>
</context>
<context>
<name>LxQtPanelPlugin</name>
<message>
<source>Configure</source>
<translation type="vanished">Configurar</translation>
</message>
<message>
<source>Move</source>
<translation type="vanished">Mover</translation>
</message>
<message>
<source>Remove</source>
<translation type="vanished">Remover</translation>
</message>
</context>
<context>
<name>LxQtPanelPrivate</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Configurar panel</translation>
</message>
</context>
<context>
<name>Plugin</name>
<message>
<location filename="../plugin.cpp" line="395"/>
<source>Configure &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="400"/>
<source>Move &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="408"/>
<source>Remove &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -1,358 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="eu">
<context>
<name>ConfigPanelDialog</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Konfiguratu panela</translation>
</message>
<message>
<source>Panel size</source>
<translation type="vanished">Panelaren tamaina</translation>
</message>
<message>
<source>Size:</source>
<translation type="vanished">Tamaina:</translation>
</message>
<message>
<source>px</source>
<translation type="vanished">px</translation>
</message>
<message>
<source>Use automatic sizing</source>
<translation type="vanished">Erabili tamaina automatikoa</translation>
</message>
<message>
<source>Panel length &amp;&amp; position</source>
<translation type="vanished">Panelaren luzera eta posizioa</translation>
</message>
<message>
<source>Left</source>
<translation type="vanished">Ezkerra</translation>
</message>
<message>
<source>Center</source>
<translation type="vanished">Erdia</translation>
</message>
<message>
<source>Right</source>
<translation type="vanished">Eskuina</translation>
</message>
<message>
<source>%</source>
<translation type="vanished">%</translation>
</message>
<message>
<source>Alignment:</source>
<translation type="vanished">Lerrokatzea:</translation>
</message>
<message>
<source>Length:</source>
<translation type="vanished">Luzera:</translation>
</message>
<message>
<source>Position:</source>
<translation type="vanished">Posizioa:</translation>
</message>
<message>
<source>Top of desktop</source>
<translation type="vanished">Mahaigainaren goialdea</translation>
</message>
<message>
<source>Left of desktop</source>
<translation type="vanished">Mahaigainaren ezkerraldea</translation>
</message>
<message>
<source>Right of desktop</source>
<translation type="vanished">Mahaigainaren eskuinaldea</translation>
</message>
<message>
<source>Bottom of desktop</source>
<translation type="vanished">Mahaigainaren behealdea</translation>
</message>
<message>
<source>Top of desktop %1</source>
<translation type="vanished">%1 mahaigainaren goialdea</translation>
</message>
<message>
<source>Left of desktop %1</source>
<translation type="vanished">%1 mahaigainaren ezkerraldea</translation>
</message>
<message>
<source>Right of desktop %1</source>
<translation type="vanished">%1 mahaigainaren eskuinaldea</translation>
</message>
<message>
<source>Bottom of desktop %1</source>
<translation type="vanished">%1 mahaigainaren behealdea</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="80"/>
<location filename="../config/configpaneldialog.cpp" line="86"/>
<source>Configure Panel</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConfigPanelWidget</name>
<message>
<location filename="../config/configpaneldialog.ui" line="20"/>
<source>Configure panel</source>
<translation type="unfinished">Konfiguratu panela</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="32"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="41"/>
<source>Size:</source>
<translation type="unfinished">Tamaina:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="48"/>
<location filename="../config/configpaneldialog.ui" line="82"/>
<source> px</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="58"/>
<source>Icon size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="65"/>
<source>Length:</source>
<translation type="unfinished">Luzera:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="110"/>
<source>&lt;p&gt;Negative pixel value sets the panel length to that many pixels less than available screen space.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.g. &quot;Length&quot; set to -100px, screen size is 1000px, then real panel length will be 900 px.&lt;/i&gt;&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="124"/>
<source>%</source>
<translation type="unfinished">%</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="129"/>
<source>px</source>
<translation type="unfinished">px</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="140"/>
<source>Rows count:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="172"/>
<source>Alignment &amp;&amp; position</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="182"/>
<location filename="../config/configpaneldialog.cpp" line="234"/>
<source>Left</source>
<translation type="unfinished">Ezkerra</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="187"/>
<location filename="../config/configpaneldialog.cpp" line="235"/>
<location filename="../config/configpaneldialog.cpp" line="241"/>
<source>Center</source>
<translation type="unfinished">Erdia</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="192"/>
<location filename="../config/configpaneldialog.cpp" line="236"/>
<source>Right</source>
<translation type="unfinished">Eskuina</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="200"/>
<source>Alignment:</source>
<translation type="unfinished">Lerrokatzea:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="210"/>
<source>Position:</source>
<translation type="unfinished">Posizioa:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="217"/>
<source>Auto-hide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="233"/>
<source>Styling</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="239"/>
<source>Custom font color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="246"/>
<source>Custom background image:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="260"/>
<source>Custom background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="351"/>
<source>Opacity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="200"/>
<source>Top of desktop</source>
<translation type="unfinished">Mahaigainaren goialdea</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="201"/>
<source>Left of desktop</source>
<translation type="unfinished">Mahaigainaren ezkerraldea</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="202"/>
<source>Right of desktop</source>
<translation type="unfinished">Mahaigainaren eskuinaldea</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="203"/>
<source>Bottom of desktop</source>
<translation type="unfinished">Mahaigainaren behealdea</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="212"/>
<source>Top of desktop %1</source>
<translation type="unfinished">%1 mahaigainaren goialdea</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="213"/>
<source>Left of desktop %1</source>
<translation type="unfinished">%1 mahaigainaren ezkerraldea</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="214"/>
<source>Right of desktop %1</source>
<translation type="unfinished">%1 mahaigainaren eskuinaldea</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="215"/>
<source>Bottom of desktop %1</source>
<translation type="unfinished">%1 mahaigainaren behealdea</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="240"/>
<source>Top</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="242"/>
<source>Bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="397"/>
<location filename="../config/configpaneldialog.cpp" line="411"/>
<source>Pick color</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="431"/>
<source>Images (*.png *.gif *.jpg)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQtPanel</name>
<message>
<location filename="../lxqtpanel.cpp" line="623"/>
<source>Add Panel Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="951"/>
<location filename="../lxqtpanel.cpp" line="970"/>
<source>Panel</source>
<translation>Panela</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="973"/>
<source>Configure Panel...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="978"/>
<source>Add Panel Widgets...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="984"/>
<source>Add Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="991"/>
<source>Remove Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Configure panel...</source>
<translation type="vanished">Konfiguratu panela...</translation>
</message>
<message>
<source>Add plugins ...</source>
<translation type="vanished">Gehitu pluginak...</translation>
</message>
</context>
<context>
<name>LxQtPanelPlugin</name>
<message>
<source>Configure</source>
<translation type="vanished">Konfiguratu</translation>
</message>
<message>
<source>Move</source>
<translation type="vanished">Mugitu</translation>
</message>
<message>
<source>Remove</source>
<translation type="vanished">Kendu</translation>
</message>
</context>
<context>
<name>LxQtPanelPrivate</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Konfiguratu panela</translation>
</message>
</context>
<context>
<name>Plugin</name>
<message>
<location filename="../plugin.cpp" line="395"/>
<source>Configure &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="400"/>
<source>Move &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="408"/>
<source>Remove &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -1,358 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="fi">
<context>
<name>ConfigPanelDialog</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Muokkaa paneelia</translation>
</message>
<message>
<source>Panel size</source>
<translation type="vanished">Paneelin koko</translation>
</message>
<message>
<source>Size:</source>
<translation type="vanished">Koko:</translation>
</message>
<message>
<source>px</source>
<translation type="vanished">pikseliä</translation>
</message>
<message>
<source>Use automatic sizing</source>
<translation type="vanished">Käytä automaattista kokoa</translation>
</message>
<message>
<source>Panel length &amp;&amp; position</source>
<translation type="vanished">Paneelin pituus &amp;&amp; sijainti</translation>
</message>
<message>
<source>Left</source>
<translation type="vanished">Vasemmalla</translation>
</message>
<message>
<source>Center</source>
<translation type="vanished">Keskellä</translation>
</message>
<message>
<source>Right</source>
<translation type="vanished">Oikealla</translation>
</message>
<message>
<source>%</source>
<translation type="vanished">%</translation>
</message>
<message>
<source>Alignment:</source>
<translation type="vanished">Kohdistus:</translation>
</message>
<message>
<source>Length:</source>
<translation type="vanished">Leveys:</translation>
</message>
<message>
<source>Position:</source>
<translation type="vanished">Sijainti:</translation>
</message>
<message>
<source>Top of desktop</source>
<translation type="vanished">Työpöydän yläosassa</translation>
</message>
<message>
<source>Left of desktop</source>
<translation type="vanished">Työpöydän vasemmassa laidassa</translation>
</message>
<message>
<source>Right of desktop</source>
<translation type="vanished">Työpöydän oikeassa laidassa</translation>
</message>
<message>
<source>Bottom of desktop</source>
<translation type="vanished">Työpöydän alaosassa</translation>
</message>
<message>
<source>Top of desktop %1</source>
<translation type="vanished">Työpöydän %1 yläosassa</translation>
</message>
<message>
<source>Left of desktop %1</source>
<translation type="vanished">Työpöydän %1 vasemmassa laidassa</translation>
</message>
<message>
<source>Right of desktop %1</source>
<translation type="vanished">Työpöydän %1 oikeassa laidassa</translation>
</message>
<message>
<source>Bottom of desktop %1</source>
<translation type="vanished">Työpöydän %1 alaosassa</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="80"/>
<location filename="../config/configpaneldialog.cpp" line="86"/>
<source>Configure Panel</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConfigPanelWidget</name>
<message>
<location filename="../config/configpaneldialog.ui" line="20"/>
<source>Configure panel</source>
<translation type="unfinished">Muokkaa paneelia</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="32"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="41"/>
<source>Size:</source>
<translation type="unfinished">Koko:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="48"/>
<location filename="../config/configpaneldialog.ui" line="82"/>
<source> px</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="58"/>
<source>Icon size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="65"/>
<source>Length:</source>
<translation type="unfinished">Leveys:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="110"/>
<source>&lt;p&gt;Negative pixel value sets the panel length to that many pixels less than available screen space.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.g. &quot;Length&quot; set to -100px, screen size is 1000px, then real panel length will be 900 px.&lt;/i&gt;&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="124"/>
<source>%</source>
<translation type="unfinished">%</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="129"/>
<source>px</source>
<translation type="unfinished">pikseliä</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="140"/>
<source>Rows count:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="172"/>
<source>Alignment &amp;&amp; position</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="182"/>
<location filename="../config/configpaneldialog.cpp" line="234"/>
<source>Left</source>
<translation type="unfinished">Vasemmalla</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="187"/>
<location filename="../config/configpaneldialog.cpp" line="235"/>
<location filename="../config/configpaneldialog.cpp" line="241"/>
<source>Center</source>
<translation type="unfinished">Keskellä</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="192"/>
<location filename="../config/configpaneldialog.cpp" line="236"/>
<source>Right</source>
<translation type="unfinished">Oikealla</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="200"/>
<source>Alignment:</source>
<translation type="unfinished">Kohdistus:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="210"/>
<source>Position:</source>
<translation type="unfinished">Sijainti:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="217"/>
<source>Auto-hide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="233"/>
<source>Styling</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="239"/>
<source>Custom font color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="246"/>
<source>Custom background image:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="260"/>
<source>Custom background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="351"/>
<source>Opacity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="200"/>
<source>Top of desktop</source>
<translation type="unfinished">Työpöydän yläosassa</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="201"/>
<source>Left of desktop</source>
<translation type="unfinished">Työpöydän vasemmassa laidassa</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="202"/>
<source>Right of desktop</source>
<translation type="unfinished">Työpöydän oikeassa laidassa</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="203"/>
<source>Bottom of desktop</source>
<translation type="unfinished">Työpöydän alaosassa</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="212"/>
<source>Top of desktop %1</source>
<translation type="unfinished">Työpöydän %1 yläosassa</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="213"/>
<source>Left of desktop %1</source>
<translation type="unfinished">Työpöydän %1 vasemmassa laidassa</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="214"/>
<source>Right of desktop %1</source>
<translation type="unfinished">Työpöydän %1 oikeassa laidassa</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="215"/>
<source>Bottom of desktop %1</source>
<translation type="unfinished">Työpöydän %1 alaosassa</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="240"/>
<source>Top</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="242"/>
<source>Bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="397"/>
<location filename="../config/configpaneldialog.cpp" line="411"/>
<source>Pick color</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="431"/>
<source>Images (*.png *.gif *.jpg)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQtPanel</name>
<message>
<location filename="../lxqtpanel.cpp" line="623"/>
<source>Add Panel Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="951"/>
<location filename="../lxqtpanel.cpp" line="970"/>
<source>Panel</source>
<translation>Paneeli</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="973"/>
<source>Configure Panel...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="978"/>
<source>Add Panel Widgets...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="984"/>
<source>Add Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="991"/>
<source>Remove Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Configure panel...</source>
<translation type="vanished">Muokkaa paneelia...</translation>
</message>
<message>
<source>Add plugins ...</source>
<translation type="vanished">Lisää liitännäisiä...</translation>
</message>
</context>
<context>
<name>LxQtPanelPlugin</name>
<message>
<source>Configure</source>
<translation type="vanished">Muokkaa</translation>
</message>
<message>
<source>Move</source>
<translation type="vanished">Siirrä</translation>
</message>
<message>
<source>Remove</source>
<translation type="vanished">Poista</translation>
</message>
</context>
<context>
<name>LxQtPanelPrivate</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Muokkaa paneelia</translation>
</message>
</context>
<context>
<name>Plugin</name>
<message>
<location filename="../plugin.cpp" line="395"/>
<source>Configure &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="400"/>
<source>Move &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="408"/>
<source>Remove &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -1,358 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="fr_FR">
<context>
<name>ConfigPanelDialog</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Configurer le tableau de bord</translation>
</message>
<message>
<source>Panel size</source>
<translation type="vanished">Taille du tableau de bord</translation>
</message>
<message>
<source>Size:</source>
<translation type="vanished">Taille :</translation>
</message>
<message>
<source>px</source>
<translation type="vanished">px</translation>
</message>
<message>
<source>Use automatic sizing</source>
<translation type="vanished">Utiliser le dimensionnement automatique</translation>
</message>
<message>
<source>Panel length &amp;&amp; position</source>
<translation type="vanished">Longueur et position du tableau de bord</translation>
</message>
<message>
<source>Left</source>
<translation type="vanished">Gauche</translation>
</message>
<message>
<source>Center</source>
<translation type="vanished">Centre</translation>
</message>
<message>
<source>Right</source>
<translation type="vanished">Droite</translation>
</message>
<message>
<source>%</source>
<translation type="vanished">%</translation>
</message>
<message>
<source>Alignment:</source>
<translation type="vanished">Alignement :</translation>
</message>
<message>
<source>Length:</source>
<translation type="vanished">Longueur :</translation>
</message>
<message>
<source>Position:</source>
<translation type="vanished">Position :</translation>
</message>
<message>
<source>Top of desktop</source>
<translation type="vanished">Haut du bureau</translation>
</message>
<message>
<source>Left of desktop</source>
<translation type="vanished">Gauche du bureau</translation>
</message>
<message>
<source>Right of desktop</source>
<translation type="vanished">Droite du bureau</translation>
</message>
<message>
<source>Bottom of desktop</source>
<translation type="vanished">Bas du bureau</translation>
</message>
<message>
<source>Top of desktop %1</source>
<translation type="vanished">Haut du bureau %1</translation>
</message>
<message>
<source>Left of desktop %1</source>
<translation type="vanished">Gauche du bureau %1</translation>
</message>
<message>
<source>Right of desktop %1</source>
<translation type="vanished">Droite du bureau %1</translation>
</message>
<message>
<source>Bottom of desktop %1</source>
<translation type="vanished">Bas du bureau %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="80"/>
<location filename="../config/configpaneldialog.cpp" line="86"/>
<source>Configure Panel</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConfigPanelWidget</name>
<message>
<location filename="../config/configpaneldialog.ui" line="20"/>
<source>Configure panel</source>
<translation type="unfinished">Configurer le tableau de bord</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="32"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="41"/>
<source>Size:</source>
<translation type="unfinished">Taille :</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="48"/>
<location filename="../config/configpaneldialog.ui" line="82"/>
<source> px</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="58"/>
<source>Icon size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="65"/>
<source>Length:</source>
<translation type="unfinished">Longueur :</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="110"/>
<source>&lt;p&gt;Negative pixel value sets the panel length to that many pixels less than available screen space.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.g. &quot;Length&quot; set to -100px, screen size is 1000px, then real panel length will be 900 px.&lt;/i&gt;&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="124"/>
<source>%</source>
<translation type="unfinished">%</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="129"/>
<source>px</source>
<translation type="unfinished">px</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="140"/>
<source>Rows count:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="172"/>
<source>Alignment &amp;&amp; position</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="182"/>
<location filename="../config/configpaneldialog.cpp" line="234"/>
<source>Left</source>
<translation type="unfinished">Gauche</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="187"/>
<location filename="../config/configpaneldialog.cpp" line="235"/>
<location filename="../config/configpaneldialog.cpp" line="241"/>
<source>Center</source>
<translation type="unfinished">Centre</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="192"/>
<location filename="../config/configpaneldialog.cpp" line="236"/>
<source>Right</source>
<translation type="unfinished">Droite</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="200"/>
<source>Alignment:</source>
<translation type="unfinished">Alignement :</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="210"/>
<source>Position:</source>
<translation type="unfinished">Position :</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="217"/>
<source>Auto-hide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="233"/>
<source>Styling</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="239"/>
<source>Custom font color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="246"/>
<source>Custom background image:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="260"/>
<source>Custom background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="351"/>
<source>Opacity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="200"/>
<source>Top of desktop</source>
<translation type="unfinished">Haut du bureau</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="201"/>
<source>Left of desktop</source>
<translation type="unfinished">Gauche du bureau</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="202"/>
<source>Right of desktop</source>
<translation type="unfinished">Droite du bureau</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="203"/>
<source>Bottom of desktop</source>
<translation type="unfinished">Bas du bureau</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="212"/>
<source>Top of desktop %1</source>
<translation type="unfinished">Haut du bureau %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="213"/>
<source>Left of desktop %1</source>
<translation type="unfinished">Gauche du bureau %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="214"/>
<source>Right of desktop %1</source>
<translation type="unfinished">Droite du bureau %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="215"/>
<source>Bottom of desktop %1</source>
<translation type="unfinished">Bas du bureau %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="240"/>
<source>Top</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="242"/>
<source>Bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="397"/>
<location filename="../config/configpaneldialog.cpp" line="411"/>
<source>Pick color</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="431"/>
<source>Images (*.png *.gif *.jpg)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQtPanel</name>
<message>
<location filename="../lxqtpanel.cpp" line="623"/>
<source>Add Panel Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="951"/>
<location filename="../lxqtpanel.cpp" line="970"/>
<source>Panel</source>
<translation>Bloc-notes</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="973"/>
<source>Configure Panel...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="978"/>
<source>Add Panel Widgets...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="984"/>
<source>Add Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="991"/>
<source>Remove Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Configure panel...</source>
<translation type="vanished">Configurer le tableau de bord...</translation>
</message>
<message>
<source>Add plugins ...</source>
<translation type="vanished">Ajouter des extensions...</translation>
</message>
</context>
<context>
<name>LxQtPanelPlugin</name>
<message>
<source>Configure</source>
<translation type="vanished">Configurer</translation>
</message>
<message>
<source>Move</source>
<translation type="vanished">Déplacer</translation>
</message>
<message>
<source>Remove</source>
<translation type="vanished">Supprimer</translation>
</message>
</context>
<context>
<name>LxQtPanelPrivate</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Configurer le tableau de bord</translation>
</message>
</context>
<context>
<name>Plugin</name>
<message>
<location filename="../plugin.cpp" line="395"/>
<source>Configure &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="400"/>
<source>Move &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="408"/>
<source>Remove &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -1,280 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="hu">
<context>
<name>ConfigPanelDialog</name>
<message>
<source>Top of desktop</source>
<translation>Az asztal tetejére</translation>
</message>
<message>
<source>Left of desktop</source>
<translation>Az asztal bal oldalára</translation>
</message>
<message>
<source>Right of desktop</source>
<translation>Az asztal jobb oldalára</translation>
</message>
<message>
<source>Bottom of desktop</source>
<translation>Az asztal aljára</translation>
</message>
<message>
<source>Top of desktop %1</source>
<translation>A(z) %1. asztal tetejére</translation>
</message>
<message>
<source>Left of desktop %1</source>
<translation>A(z) %1. asztal bal oldalára</translation>
</message>
<message>
<source>Right of desktop %1</source>
<translation>A(z) %1. asztal jobb oldalára</translation>
</message>
<message>
<source>Bottom of desktop %1</source>
<translation>A(z) %1. asztal aljára</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="80"/>
<location filename="../config/configpaneldialog.cpp" line="86"/>
<source>Configure Panel</source>
<translation>Panelbeállítás</translation>
</message>
</context>
<context>
<name>ConfigPanelWidget</name>
<message>
<location filename="../config/configpaneldialog.ui" line="20"/>
<source>Configure panel</source>
<translation>Panelbeállítás</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="32"/>
<source>Size</source>
<translation>Méret</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="41"/>
<source>Size:</source>
<translation>Méret:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="48"/>
<location filename="../config/configpaneldialog.ui" line="82"/>
<source> px</source>
<translation> pixel</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="58"/>
<source>Icon size:</source>
<translation>Ikonméret:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="65"/>
<source>Length:</source>
<translation>Hossz:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="110"/>
<source>&lt;p&gt;Negative pixel value sets the panel length to that many pixels less than available screen space.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.g. &quot;Length&quot; set to -100px, screen size is 1000px, then real panel length will be 900 px.&lt;/i&gt;&lt;/p&gt;</source>
<translation>&lt;p&gt;Negatív pixel érték azt jelöli, hogy mennyivel rövidebb a panel a képernyőnél.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;Például -100px érték esetén az 1000px széles képernyőnél a panel hossza 900px.&lt;/i&gt;&lt;/p</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="124"/>
<source>%</source>
<translation></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="129"/>
<source>px</source>
<translation>pixel</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="140"/>
<source>Rows count:</source>
<translation>Sorszámláló:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="172"/>
<source>Alignment &amp;&amp; position</source>
<translation>Igazítás &amp;&amp; helyzet</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="182"/>
<location filename="../config/configpaneldialog.cpp" line="234"/>
<source>Left</source>
<translation>Balra</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="187"/>
<location filename="../config/configpaneldialog.cpp" line="235"/>
<location filename="../config/configpaneldialog.cpp" line="241"/>
<source>Center</source>
<translation>Középre</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="192"/>
<location filename="../config/configpaneldialog.cpp" line="236"/>
<source>Right</source>
<translation>Jobbra</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="200"/>
<source>Alignment:</source>
<translation>Igazítás:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="210"/>
<source>Position:</source>
<translation>Pozíció:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="217"/>
<source>Auto-hide</source>
<translation>Automata elrejtés</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="233"/>
<source>Styling</source>
<translation>Hangolás</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="239"/>
<source>Custom font color:</source>
<translation>Egyéni betűszín:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="246"/>
<source>Custom background image:</source>
<translation>Egyéni háttérkép:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="260"/>
<source>Custom background color:</source>
<translation>Egyéni háttérszín:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="351"/>
<source>Opacity</source>
<translation>Áttetszőség</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="200"/>
<source>Top of desktop</source>
<translation>Az asztal tetejére</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="201"/>
<source>Left of desktop</source>
<translation>Az asztal bal oldalára</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="202"/>
<source>Right of desktop</source>
<translation>Az asztal jobb oldalára</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="203"/>
<source>Bottom of desktop</source>
<translation>Az asztal aljára</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="212"/>
<source>Top of desktop %1</source>
<translation>A(z) %1. asztal tetejére</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="213"/>
<source>Left of desktop %1</source>
<translation>A(z) %1. asztal bal oldalára</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="214"/>
<source>Right of desktop %1</source>
<translation>A(z) %1. asztal jobb oldalára</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="215"/>
<source>Bottom of desktop %1</source>
<translation>A(z) %1. asztal aljára</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="240"/>
<source>Top</source>
<translation>Fenn</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="242"/>
<source>Bottom</source>
<translation>Lenn</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="397"/>
<location filename="../config/configpaneldialog.cpp" line="411"/>
<source>Pick color</source>
<translation>Színválasztás</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="431"/>
<source>Images (*.png *.gif *.jpg)</source>
<translation>Képek (*.png *.gif *.jpg)</translation>
</message>
</context>
<context>
<name>LxQtPanel</name>
<message>
<location filename="../lxqtpanel.cpp" line="623"/>
<source>Add Panel Widgets</source>
<translation>Panelelem hozzáadás</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="951"/>
<location filename="../lxqtpanel.cpp" line="970"/>
<source>Panel</source>
<translation>Panel</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="973"/>
<source>Configure Panel...</source>
<translation>Panel beállítása</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="978"/>
<source>Add Panel Widgets...</source>
<translation>Panelelem hozzáadás...</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="984"/>
<source>Add Panel</source>
<translation>Panel hozzáadás</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="991"/>
<source>Remove Panel</source>
<translation>Panel törlése</translation>
</message>
<message>
<source>Add plugins ...</source>
<translation>Bővítmények hozzáadása</translation>
</message>
</context>
<context>
<name>Plugin</name>
<message>
<location filename="../plugin.cpp" line="395"/>
<source>Configure &quot;%1&quot;</source>
<translation>&quot;%1&quot; beállítása</translation>
</message>
<message>
<location filename="../plugin.cpp" line="400"/>
<source>Move &quot;%1&quot;</source>
<translation>&quot;%1&quot; mozgatása</translation>
</message>
<message>
<location filename="../plugin.cpp" line="408"/>
<source>Remove &quot;%1&quot;</source>
<translation>&quot;%1&quot; törlése</translation>
</message>
</context>
</TS>

View File

@ -1,280 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="hu_HU">
<context>
<name>ConfigPanelDialog</name>
<message>
<source>Top of desktop</source>
<translation>Az asztal tetejére</translation>
</message>
<message>
<source>Left of desktop</source>
<translation>Az asztal bal oldalára</translation>
</message>
<message>
<source>Right of desktop</source>
<translation>Az asztal jobb oldalára</translation>
</message>
<message>
<source>Bottom of desktop</source>
<translation>Az asztal aljára</translation>
</message>
<message>
<source>Top of desktop %1</source>
<translation>A(z) %1. asztal tetejére</translation>
</message>
<message>
<source>Left of desktop %1</source>
<translation>A(z) %1. asztal bal oldalára</translation>
</message>
<message>
<source>Right of desktop %1</source>
<translation>A(z) %1. asztal jobb oldalára</translation>
</message>
<message>
<source>Bottom of desktop %1</source>
<translation>A(z) %1. asztal aljára</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="80"/>
<location filename="../config/configpaneldialog.cpp" line="86"/>
<source>Configure Panel</source>
<translation>Panelbeállítás</translation>
</message>
</context>
<context>
<name>ConfigPanelWidget</name>
<message>
<location filename="../config/configpaneldialog.ui" line="20"/>
<source>Configure panel</source>
<translation>Panelbeállítás</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="32"/>
<source>Size</source>
<translation>Méret</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="41"/>
<source>Size:</source>
<translation>Méret:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="48"/>
<location filename="../config/configpaneldialog.ui" line="82"/>
<source> px</source>
<translation> pixel</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="58"/>
<source>Icon size:</source>
<translation>Ikonméret:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="65"/>
<source>Length:</source>
<translation>Hossz:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="110"/>
<source>&lt;p&gt;Negative pixel value sets the panel length to that many pixels less than available screen space.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.g. &quot;Length&quot; set to -100px, screen size is 1000px, then real panel length will be 900 px.&lt;/i&gt;&lt;/p&gt;</source>
<translation>&lt;p&gt;Negatív pixel érték azt jelöli, hogy mennyivel rövidebb a panel a képernyőnél.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;Például -100px érték esetén az 1000px széles képernyőnél a panel hossza 900px.&lt;/i&gt;&lt;/p</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="124"/>
<source>%</source>
<translation></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="129"/>
<source>px</source>
<translation>pixel</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="140"/>
<source>Rows count:</source>
<translation>Sorszámláló:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="172"/>
<source>Alignment &amp;&amp; position</source>
<translation>Igazítás &amp;&amp; helyzet</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="182"/>
<location filename="../config/configpaneldialog.cpp" line="234"/>
<source>Left</source>
<translation>Balra</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="187"/>
<location filename="../config/configpaneldialog.cpp" line="235"/>
<location filename="../config/configpaneldialog.cpp" line="241"/>
<source>Center</source>
<translation>Középre</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="192"/>
<location filename="../config/configpaneldialog.cpp" line="236"/>
<source>Right</source>
<translation>Jobbra</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="200"/>
<source>Alignment:</source>
<translation>Igazítás:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="210"/>
<source>Position:</source>
<translation>Pozíció:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="217"/>
<source>Auto-hide</source>
<translation>Automata elrejtés</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="233"/>
<source>Styling</source>
<translation>Hangolás</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="239"/>
<source>Custom font color:</source>
<translation>Egyéni betűszín:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="246"/>
<source>Custom background image:</source>
<translation>Egyéni háttérkép:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="260"/>
<source>Custom background color:</source>
<translation>Egyéni háttérszín:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="351"/>
<source>Opacity</source>
<translation>Áttetszőség</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="200"/>
<source>Top of desktop</source>
<translation>Az asztal tetejére</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="201"/>
<source>Left of desktop</source>
<translation>Az asztal bal oldalára</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="202"/>
<source>Right of desktop</source>
<translation>Az asztal jobb oldalára</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="203"/>
<source>Bottom of desktop</source>
<translation>Az asztal aljára</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="212"/>
<source>Top of desktop %1</source>
<translation>A(z) %1. asztal tetejére</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="213"/>
<source>Left of desktop %1</source>
<translation>A(z) %1. asztal bal oldalára</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="214"/>
<source>Right of desktop %1</source>
<translation>A(z) %1. asztal jobb oldalára</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="215"/>
<source>Bottom of desktop %1</source>
<translation>A(z) %1. asztal aljára</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="240"/>
<source>Top</source>
<translation>Fenn</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="242"/>
<source>Bottom</source>
<translation>Lenn</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="397"/>
<location filename="../config/configpaneldialog.cpp" line="411"/>
<source>Pick color</source>
<translation>Színválasztás</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="431"/>
<source>Images (*.png *.gif *.jpg)</source>
<translation>Képek (*.png *.gif *.jpg)</translation>
</message>
</context>
<context>
<name>LxQtPanel</name>
<message>
<location filename="../lxqtpanel.cpp" line="623"/>
<source>Add Panel Widgets</source>
<translation>Panelelem hozzáadás</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="951"/>
<location filename="../lxqtpanel.cpp" line="970"/>
<source>Panel</source>
<translation>Panel</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="973"/>
<source>Configure Panel...</source>
<translation>Panel beállítása</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="978"/>
<source>Add Panel Widgets...</source>
<translation>Panelelem hozzáadás...</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="984"/>
<source>Add Panel</source>
<translation>Panel hozzáadás</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="991"/>
<source>Remove Panel</source>
<translation>Panel törlése</translation>
</message>
<message>
<source>Add plugins ...</source>
<translation>Bővítmények hozzáadása</translation>
</message>
</context>
<context>
<name>Plugin</name>
<message>
<location filename="../plugin.cpp" line="395"/>
<source>Configure &quot;%1&quot;</source>
<translation>&quot;%1&quot; beállítása</translation>
</message>
<message>
<location filename="../plugin.cpp" line="400"/>
<source>Move &quot;%1&quot;</source>
<translation>&quot;%1&quot; mozgatása</translation>
</message>
<message>
<location filename="../plugin.cpp" line="408"/>
<source>Remove &quot;%1&quot;</source>
<translation>&quot;%1&quot; törlése</translation>
</message>
</context>
</TS>

View File

@ -1,252 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="ia">
<context>
<name>ConfigPanelDialog</name>
<message>
<source>Panel size</source>
<translation type="vanished">Dimension de pannello</translation>
</message>
<message>
<source>Size:</source>
<translation type="vanished">Dimension</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="80"/>
<location filename="../config/configpaneldialog.cpp" line="86"/>
<source>Configure Panel</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConfigPanelWidget</name>
<message>
<location filename="../config/configpaneldialog.ui" line="20"/>
<source>Configure panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="32"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="41"/>
<source>Size:</source>
<translation type="unfinished">Dimension</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="48"/>
<location filename="../config/configpaneldialog.ui" line="82"/>
<source> px</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="58"/>
<source>Icon size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="65"/>
<source>Length:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="110"/>
<source>&lt;p&gt;Negative pixel value sets the panel length to that many pixels less than available screen space.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.g. &quot;Length&quot; set to -100px, screen size is 1000px, then real panel length will be 900 px.&lt;/i&gt;&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="124"/>
<source>%</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="129"/>
<source>px</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="140"/>
<source>Rows count:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="172"/>
<source>Alignment &amp;&amp; position</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="182"/>
<location filename="../config/configpaneldialog.cpp" line="234"/>
<source>Left</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="187"/>
<location filename="../config/configpaneldialog.cpp" line="235"/>
<location filename="../config/configpaneldialog.cpp" line="241"/>
<source>Center</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="192"/>
<location filename="../config/configpaneldialog.cpp" line="236"/>
<source>Right</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="200"/>
<source>Alignment:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="210"/>
<source>Position:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="217"/>
<source>Auto-hide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="233"/>
<source>Styling</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="239"/>
<source>Custom font color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="246"/>
<source>Custom background image:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="260"/>
<source>Custom background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="351"/>
<source>Opacity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="200"/>
<source>Top of desktop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="201"/>
<source>Left of desktop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="202"/>
<source>Right of desktop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="203"/>
<source>Bottom of desktop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="212"/>
<source>Top of desktop %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="213"/>
<source>Left of desktop %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="214"/>
<source>Right of desktop %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="215"/>
<source>Bottom of desktop %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="240"/>
<source>Top</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="242"/>
<source>Bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="397"/>
<location filename="../config/configpaneldialog.cpp" line="411"/>
<source>Pick color</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="431"/>
<source>Images (*.png *.gif *.jpg)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQtPanel</name>
<message>
<location filename="../lxqtpanel.cpp" line="623"/>
<source>Add Panel Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="951"/>
<location filename="../lxqtpanel.cpp" line="970"/>
<source>Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="973"/>
<source>Configure Panel...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="978"/>
<source>Add Panel Widgets...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="984"/>
<source>Add Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="991"/>
<source>Remove Panel</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Plugin</name>
<message>
<location filename="../plugin.cpp" line="395"/>
<source>Configure &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="400"/>
<source>Move &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="408"/>
<source>Remove &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -1,244 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="id_ID">
<context>
<name>ConfigPanelDialog</name>
<message>
<location filename="../config/configpaneldialog.cpp" line="80"/>
<location filename="../config/configpaneldialog.cpp" line="86"/>
<source>Configure Panel</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConfigPanelWidget</name>
<message>
<location filename="../config/configpaneldialog.ui" line="20"/>
<source>Configure panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="32"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="41"/>
<source>Size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="48"/>
<location filename="../config/configpaneldialog.ui" line="82"/>
<source> px</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="58"/>
<source>Icon size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="65"/>
<source>Length:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="110"/>
<source>&lt;p&gt;Negative pixel value sets the panel length to that many pixels less than available screen space.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.g. &quot;Length&quot; set to -100px, screen size is 1000px, then real panel length will be 900 px.&lt;/i&gt;&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="124"/>
<source>%</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="129"/>
<source>px</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="140"/>
<source>Rows count:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="172"/>
<source>Alignment &amp;&amp; position</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="182"/>
<location filename="../config/configpaneldialog.cpp" line="234"/>
<source>Left</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="187"/>
<location filename="../config/configpaneldialog.cpp" line="235"/>
<location filename="../config/configpaneldialog.cpp" line="241"/>
<source>Center</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="192"/>
<location filename="../config/configpaneldialog.cpp" line="236"/>
<source>Right</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="200"/>
<source>Alignment:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="210"/>
<source>Position:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="217"/>
<source>Auto-hide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="233"/>
<source>Styling</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="239"/>
<source>Custom font color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="246"/>
<source>Custom background image:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="260"/>
<source>Custom background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="351"/>
<source>Opacity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="200"/>
<source>Top of desktop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="201"/>
<source>Left of desktop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="202"/>
<source>Right of desktop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="203"/>
<source>Bottom of desktop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="212"/>
<source>Top of desktop %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="213"/>
<source>Left of desktop %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="214"/>
<source>Right of desktop %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="215"/>
<source>Bottom of desktop %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="240"/>
<source>Top</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="242"/>
<source>Bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="397"/>
<location filename="../config/configpaneldialog.cpp" line="411"/>
<source>Pick color</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="431"/>
<source>Images (*.png *.gif *.jpg)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQtPanel</name>
<message>
<location filename="../lxqtpanel.cpp" line="623"/>
<source>Add Panel Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="951"/>
<location filename="../lxqtpanel.cpp" line="970"/>
<source>Panel</source>
<translation>Hell World</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="973"/>
<source>Configure Panel...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="978"/>
<source>Add Panel Widgets...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="984"/>
<source>Add Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="991"/>
<source>Remove Panel</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Plugin</name>
<message>
<location filename="../plugin.cpp" line="395"/>
<source>Configure &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="400"/>
<source>Move &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="408"/>
<source>Remove &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -1,359 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="it">
<context>
<name>ConfigPanelDialog</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Configura il pannello</translation>
</message>
<message>
<source>Panel size</source>
<translation type="vanished">Dimensione pannello</translation>
</message>
<message>
<source>Size:</source>
<translation type="vanished">Dimensione:</translation>
</message>
<message>
<source>px</source>
<translation type="vanished">px</translation>
</message>
<message>
<source>Use automatic sizing</source>
<translation type="vanished">Usa dimensionamento automatico</translation>
</message>
<message>
<source>Panel length &amp;&amp; position</source>
<translation type="vanished">Lunghezza e posizione del pannello</translation>
</message>
<message>
<source>Left</source>
<translation type="vanished">Sinistra</translation>
</message>
<message>
<source>Center</source>
<translation type="vanished">Centro</translation>
</message>
<message>
<source>Right</source>
<translation type="vanished">Destra</translation>
</message>
<message>
<source>%</source>
<translation type="vanished">%</translation>
</message>
<message>
<source>Alignment:</source>
<translation type="vanished">Allineamento:</translation>
</message>
<message>
<source>Length:</source>
<translation type="vanished">Lunghezza:</translation>
</message>
<message>
<source>Position:</source>
<translation type="vanished">Posizione:</translation>
</message>
<message>
<source>Top of desktop</source>
<translation type="vanished">Alto del desktop</translation>
</message>
<message>
<source>Left of desktop</source>
<translation type="vanished">Sinistra del desktop</translation>
</message>
<message>
<source>Right of desktop</source>
<translation type="vanished">Destra del desktop</translation>
</message>
<message>
<source>Bottom of desktop</source>
<translation type="vanished">Basso del desktop</translation>
</message>
<message>
<source>Top of desktop %1</source>
<translation type="vanished">Alto del desktop %1</translation>
</message>
<message>
<source>Left of desktop %1</source>
<translation type="vanished">Sinistra del desktop %1</translation>
</message>
<message>
<source>Right of desktop %1</source>
<translation type="vanished">Destra del desktop %1</translation>
</message>
<message>
<source>Bottom of desktop %1</source>
<translation type="vanished">Basso del desktop %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="80"/>
<location filename="../config/configpaneldialog.cpp" line="86"/>
<source>Configure Panel</source>
<translation>Configura panello</translation>
</message>
</context>
<context>
<name>ConfigPanelWidget</name>
<message>
<location filename="../config/configpaneldialog.ui" line="20"/>
<source>Configure panel</source>
<translation>Configura panello</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="32"/>
<source>Size</source>
<translation>Dimensione</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="41"/>
<source>Size:</source>
<translation>Dimensione:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="48"/>
<location filename="../config/configpaneldialog.ui" line="82"/>
<source> px</source>
<translation></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="58"/>
<source>Icon size:</source>
<translation>Dimensione icone:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="65"/>
<source>Length:</source>
<translation>Lunghezza:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="110"/>
<source>&lt;p&gt;Negative pixel value sets the panel length to that many pixels less than available screen space.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.g. &quot;Length&quot; set to -100px, screen size is 1000px, then real panel length will be 900 px.&lt;/i&gt;&lt;/p&gt;</source>
<translation>&lt;p&gt;Valori negativi impongano una lunghezza del panello di quel numero di pixel meno dello spazio disponibile. &lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;Esempio: -100px e schermo di 1280px = 1180px&lt;/i&gt;&lt;/p&gt;</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="124"/>
<source>%</source>
<translation>%</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="129"/>
<source>px</source>
<translation>px</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="140"/>
<source>Rows count:</source>
<translation>Numero righe:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="172"/>
<source>Alignment &amp;&amp; position</source>
<translation>Allineamento e posizione</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="182"/>
<location filename="../config/configpaneldialog.cpp" line="234"/>
<source>Left</source>
<translation>Sinistra</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="187"/>
<location filename="../config/configpaneldialog.cpp" line="235"/>
<location filename="../config/configpaneldialog.cpp" line="241"/>
<source>Center</source>
<translation>Centro</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="192"/>
<location filename="../config/configpaneldialog.cpp" line="236"/>
<source>Right</source>
<translation>Destra</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="200"/>
<source>Alignment:</source>
<translation>Allineamento:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="210"/>
<source>Position:</source>
<translation>Posizione:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="217"/>
<source>Auto-hide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="233"/>
<source>Styling</source>
<translation>Aspetto</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="239"/>
<source>Custom font color:</source>
<translation>Colore carattere personalizzato:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="246"/>
<source>Custom background image:</source>
<translation>Immagine sfondo:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="260"/>
<source>Custom background color:</source>
<translation>Colore sfondo personalizzato:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="351"/>
<source>Opacity</source>
<translation>Trasparenza</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="200"/>
<source>Top of desktop</source>
<translation>Alto del desktop</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="201"/>
<source>Left of desktop</source>
<translation>Sinistra del desktop</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="202"/>
<source>Right of desktop</source>
<translation>Destra del desktop</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="203"/>
<source>Bottom of desktop</source>
<translation>Basso del desktop</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="212"/>
<source>Top of desktop %1</source>
<translation>Alto del desktop %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="213"/>
<source>Left of desktop %1</source>
<translation>Sinistra del desktop %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="214"/>
<source>Right of desktop %1</source>
<translation>Destra del desktop %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="215"/>
<source>Bottom of desktop %1</source>
<translation>Basso del desktop %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="240"/>
<source>Top</source>
<translation>In cima</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="242"/>
<source>Bottom</source>
<translation>In fondo</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="397"/>
<location filename="../config/configpaneldialog.cpp" line="411"/>
<source>Pick color</source>
<translation>Scegli colore</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="431"/>
<source>Images (*.png *.gif *.jpg)</source>
<translation>Immagini (*.png *.gif *.jpg)</translation>
</message>
</context>
<context>
<name>LxQtPanel</name>
<message>
<location filename="../lxqtpanel.cpp" line="623"/>
<source>Add Panel Widgets</source>
<translation>Aggiungi elementi</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="951"/>
<location filename="../lxqtpanel.cpp" line="970"/>
<source>Panel</source>
<translation>Panello</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="973"/>
<source>Configure Panel...</source>
<translation>Configura pannello...</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="978"/>
<source>Add Panel Widgets...</source>
<translatorcomment>Call them &quot;plugins&quot; better?</translatorcomment>
<translation>Aggiungi elementi...</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="984"/>
<source>Add Panel</source>
<translation>Aggiungi panello</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="991"/>
<source>Remove Panel</source>
<translation>Rimuovi panello</translation>
</message>
<message>
<source>Configure panel...</source>
<translation type="vanished">Configura pannello...</translation>
</message>
<message>
<source>Add plugins ...</source>
<translation type="vanished">Aggiungi plugin...</translation>
</message>
</context>
<context>
<name>LxQtPanelPlugin</name>
<message>
<source>Configure</source>
<translation type="vanished">Configura</translation>
</message>
<message>
<source>Move</source>
<translation type="vanished">Sposta</translation>
</message>
<message>
<source>Remove</source>
<translation type="vanished">Rimuovi</translation>
</message>
</context>
<context>
<name>LxQtPanelPrivate</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Configura pannello</translation>
</message>
</context>
<context>
<name>Plugin</name>
<message>
<location filename="../plugin.cpp" line="395"/>
<source>Configure &quot;%1&quot;</source>
<translation>Configura &quot;%1&quot;</translation>
</message>
<message>
<location filename="../plugin.cpp" line="400"/>
<source>Move &quot;%1&quot;</source>
<translation>Sposta &quot;%1&quot;</translation>
</message>
<message>
<location filename="../plugin.cpp" line="408"/>
<source>Remove &quot;%1&quot;</source>
<translation>Rimuovi &quot;%1&quot;</translation>
</message>
</context>
</TS>

View File

@ -1,359 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="it_IT">
<context>
<name>ConfigPanelDialog</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Configura il pannello</translation>
</message>
<message>
<source>Panel size</source>
<translation type="vanished">Dimensione pannello</translation>
</message>
<message>
<source>Size:</source>
<translation type="vanished">Dimensione:</translation>
</message>
<message>
<source>px</source>
<translation type="vanished">px</translation>
</message>
<message>
<source>Use automatic sizing</source>
<translation type="vanished">Usa dimensionamento automatico</translation>
</message>
<message>
<source>Panel length &amp;&amp; position</source>
<translation type="vanished">Lunghezza e posizione del pannello</translation>
</message>
<message>
<source>Left</source>
<translation type="vanished">Sinistra</translation>
</message>
<message>
<source>Center</source>
<translation type="vanished">Centro</translation>
</message>
<message>
<source>Right</source>
<translation type="vanished">Destra</translation>
</message>
<message>
<source>%</source>
<translation type="vanished">%</translation>
</message>
<message>
<source>Alignment:</source>
<translation type="vanished">Allineamento:</translation>
</message>
<message>
<source>Length:</source>
<translation type="vanished">Lunghezza:</translation>
</message>
<message>
<source>Position:</source>
<translation type="vanished">Posizione:</translation>
</message>
<message>
<source>Top of desktop</source>
<translation type="vanished">Alto del desktop</translation>
</message>
<message>
<source>Left of desktop</source>
<translation type="vanished">Sinistra del desktop</translation>
</message>
<message>
<source>Right of desktop</source>
<translation type="vanished">Destra del desktop</translation>
</message>
<message>
<source>Bottom of desktop</source>
<translation type="vanished">Basso del desktop</translation>
</message>
<message>
<source>Top of desktop %1</source>
<translation type="vanished">Alto del desktop %1</translation>
</message>
<message>
<source>Left of desktop %1</source>
<translation type="vanished">Sinistra del desktop %1</translation>
</message>
<message>
<source>Right of desktop %1</source>
<translation type="vanished">Destra del desktop %1</translation>
</message>
<message>
<source>Bottom of desktop %1</source>
<translation type="vanished">Basso del desktop %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="80"/>
<location filename="../config/configpaneldialog.cpp" line="86"/>
<source>Configure Panel</source>
<translation>Configura panello</translation>
</message>
</context>
<context>
<name>ConfigPanelWidget</name>
<message>
<location filename="../config/configpaneldialog.ui" line="20"/>
<source>Configure panel</source>
<translation>Configura panello</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="32"/>
<source>Size</source>
<translation>Dimensione</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="41"/>
<source>Size:</source>
<translation>Dimensione:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="48"/>
<location filename="../config/configpaneldialog.ui" line="82"/>
<source> px</source>
<translation></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="58"/>
<source>Icon size:</source>
<translation>Dimensione icone:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="65"/>
<source>Length:</source>
<translation>Lunghezza:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="110"/>
<source>&lt;p&gt;Negative pixel value sets the panel length to that many pixels less than available screen space.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.g. &quot;Length&quot; set to -100px, screen size is 1000px, then real panel length will be 900 px.&lt;/i&gt;&lt;/p&gt;</source>
<translation>&lt;p&gt;Valori negativi impongano una lunghezza del panello di quel numero di pixel meno dello spazio disponibile. &lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;Esempio: -100px e schermo di 1280px = 1180px&lt;/i&gt;&lt;/p&gt;</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="124"/>
<source>%</source>
<translation>%</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="129"/>
<source>px</source>
<translation>px</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="140"/>
<source>Rows count:</source>
<translation>Numero righe:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="172"/>
<source>Alignment &amp;&amp; position</source>
<translation>Allineamento e posizione</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="182"/>
<location filename="../config/configpaneldialog.cpp" line="234"/>
<source>Left</source>
<translation>Sinistra</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="187"/>
<location filename="../config/configpaneldialog.cpp" line="235"/>
<location filename="../config/configpaneldialog.cpp" line="241"/>
<source>Center</source>
<translation>Centro</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="192"/>
<location filename="../config/configpaneldialog.cpp" line="236"/>
<source>Right</source>
<translation>Destra</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="200"/>
<source>Alignment:</source>
<translation>Allineamento:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="210"/>
<source>Position:</source>
<translation>Posizione:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="217"/>
<source>Auto-hide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="233"/>
<source>Styling</source>
<translation>Aspetto</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="239"/>
<source>Custom font color:</source>
<translation>Colore carattere personalizzato:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="246"/>
<source>Custom background image:</source>
<translation>Immagine sfondo:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="260"/>
<source>Custom background color:</source>
<translation>Colore sfondo personalizzato:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="351"/>
<source>Opacity</source>
<translation>Trasparenza</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="200"/>
<source>Top of desktop</source>
<translation>Alto del desktop</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="201"/>
<source>Left of desktop</source>
<translation>Sinistra del desktop</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="202"/>
<source>Right of desktop</source>
<translation>Destra del desktop</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="203"/>
<source>Bottom of desktop</source>
<translation>Basso del desktop</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="212"/>
<source>Top of desktop %1</source>
<translation>Alto del desktop %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="213"/>
<source>Left of desktop %1</source>
<translation>Sinistra del desktop %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="214"/>
<source>Right of desktop %1</source>
<translation>Destra del desktop %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="215"/>
<source>Bottom of desktop %1</source>
<translation>Basso del desktop %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="240"/>
<source>Top</source>
<translation>In cima</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="242"/>
<source>Bottom</source>
<translation>In fondo</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="397"/>
<location filename="../config/configpaneldialog.cpp" line="411"/>
<source>Pick color</source>
<translation>Scegli colore</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="431"/>
<source>Images (*.png *.gif *.jpg)</source>
<translation>Immagini (*.png *.gif *.jpg)</translation>
</message>
</context>
<context>
<name>LxQtPanel</name>
<message>
<location filename="../lxqtpanel.cpp" line="623"/>
<source>Add Panel Widgets</source>
<translation>Aggiungi elementi</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="951"/>
<location filename="../lxqtpanel.cpp" line="970"/>
<source>Panel</source>
<translation>Panello</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="973"/>
<source>Configure Panel...</source>
<translation>Configura pannello...</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="978"/>
<source>Add Panel Widgets...</source>
<translatorcomment>Call them &quot;plugins&quot; better?</translatorcomment>
<translation>Aggiungi elementi...</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="984"/>
<source>Add Panel</source>
<translation>Aggiungi panello</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="991"/>
<source>Remove Panel</source>
<translation>Rimuovi panello</translation>
</message>
<message>
<source>Configure panel...</source>
<translation type="vanished">Configura pannello...</translation>
</message>
<message>
<source>Add plugins ...</source>
<translation type="vanished">Aggiungi plugin...</translation>
</message>
</context>
<context>
<name>LxQtPanelPlugin</name>
<message>
<source>Configure</source>
<translation type="vanished">Configura</translation>
</message>
<message>
<source>Move</source>
<translation type="vanished">Sposta</translation>
</message>
<message>
<source>Remove</source>
<translation type="vanished">Rimuovi</translation>
</message>
</context>
<context>
<name>LxQtPanelPrivate</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Configura pannello</translation>
</message>
</context>
<context>
<name>Plugin</name>
<message>
<location filename="../plugin.cpp" line="395"/>
<source>Configure &quot;%1&quot;</source>
<translation>Configura &quot;%1&quot;</translation>
</message>
<message>
<location filename="../plugin.cpp" line="400"/>
<source>Move &quot;%1&quot;</source>
<translation>Sposta &quot;%1&quot;</translation>
</message>
<message>
<location filename="../plugin.cpp" line="408"/>
<source>Remove &quot;%1&quot;</source>
<translation>Rimuovi &quot;%1&quot;</translation>
</message>
</context>
</TS>

View File

@ -1,244 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="ja">
<context>
<name>ConfigPanelDialog</name>
<message>
<location filename="../config/configpaneldialog.cpp" line="80"/>
<location filename="../config/configpaneldialog.cpp" line="86"/>
<source>Configure Panel</source>
<translation></translation>
</message>
</context>
<context>
<name>ConfigPanelWidget</name>
<message>
<location filename="../config/configpaneldialog.ui" line="20"/>
<source>Configure panel</source>
<translation></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="32"/>
<source>Size</source>
<translation></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="41"/>
<source>Size:</source>
<translation>:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="48"/>
<location filename="../config/configpaneldialog.ui" line="82"/>
<source> px</source>
<translation> </translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="58"/>
<source>Icon size:</source>
<translation>:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="65"/>
<source>Length:</source>
<translation>:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="110"/>
<source>&lt;p&gt;Negative pixel value sets the panel length to that many pixels less than available screen space.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.g. &quot;Length&quot; set to -100px, screen size is 1000px, then real panel length will be 900 px.&lt;/i&gt;&lt;/p&gt;</source>
<translation>&lt;p&gt;&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;: スクリーンの大きさが 1000 -100 900 &lt;/i&gt;&lt;/p&gt;</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="124"/>
<source>%</source>
<translation>%</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="129"/>
<source>px</source>
<translation></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="140"/>
<source>Rows count:</source>
<translation></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="172"/>
<source>Alignment &amp;&amp; position</source>
<translation></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="182"/>
<location filename="../config/configpaneldialog.cpp" line="234"/>
<source>Left</source>
<translation></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="187"/>
<location filename="../config/configpaneldialog.cpp" line="235"/>
<location filename="../config/configpaneldialog.cpp" line="241"/>
<source>Center</source>
<translation></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="192"/>
<location filename="../config/configpaneldialog.cpp" line="236"/>
<source>Right</source>
<translation></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="200"/>
<source>Alignment:</source>
<translation>:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="210"/>
<source>Position:</source>
<translation type="unfinished">:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="217"/>
<source>Auto-hide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="233"/>
<source>Styling</source>
<translation></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="239"/>
<source>Custom font color:</source>
<translation>:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="246"/>
<source>Custom background image:</source>
<translation></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="260"/>
<source>Custom background color:</source>
<translation>:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="351"/>
<source>Opacity</source>
<translation></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="200"/>
<source>Top of desktop</source>
<translation></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="201"/>
<source>Left of desktop</source>
<translation></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="202"/>
<source>Right of desktop</source>
<translation></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="203"/>
<source>Bottom of desktop</source>
<translation></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="212"/>
<source>Top of desktop %1</source>
<translation> %1 </translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="213"/>
<source>Left of desktop %1</source>
<translation> %1 </translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="214"/>
<source>Right of desktop %1</source>
<translation> %1 </translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="215"/>
<source>Bottom of desktop %1</source>
<translation> %1 </translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="240"/>
<source>Top</source>
<translation></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="242"/>
<source>Bottom</source>
<translation></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="397"/>
<location filename="../config/configpaneldialog.cpp" line="411"/>
<source>Pick color</source>
<translation></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="431"/>
<source>Images (*.png *.gif *.jpg)</source>
<translation> (*.png *.gif *.jpg)</translation>
</message>
</context>
<context>
<name>LxQtPanel</name>
<message>
<location filename="../lxqtpanel.cpp" line="623"/>
<source>Add Panel Widgets</source>
<translation></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="951"/>
<location filename="../lxqtpanel.cpp" line="970"/>
<source>Panel</source>
<translation></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="973"/>
<source>Configure Panel...</source>
<translation></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="978"/>
<source>Add Panel Widgets...</source>
<translation></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="984"/>
<source>Add Panel</source>
<translation></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="991"/>
<source>Remove Panel</source>
<translation></translation>
</message>
</context>
<context>
<name>Plugin</name>
<message>
<location filename="../plugin.cpp" line="395"/>
<source>Configure &quot;%1&quot;</source>
<translation>&quot;%1&quot; </translation>
</message>
<message>
<location filename="../plugin.cpp" line="400"/>
<source>Move &quot;%1&quot;</source>
<translation>&quot;%1&quot; </translation>
</message>
<message>
<location filename="../plugin.cpp" line="408"/>
<source>Remove &quot;%1&quot;</source>
<translation>&quot;%1&quot; </translation>
</message>
</context>
</TS>

View File

@ -1,244 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="ko">
<context>
<name>ConfigPanelDialog</name>
<message>
<location filename="../config/configpaneldialog.cpp" line="80"/>
<location filename="../config/configpaneldialog.cpp" line="86"/>
<source>Configure Panel</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConfigPanelWidget</name>
<message>
<location filename="../config/configpaneldialog.ui" line="20"/>
<source>Configure panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="32"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="41"/>
<source>Size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="48"/>
<location filename="../config/configpaneldialog.ui" line="82"/>
<source> px</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="58"/>
<source>Icon size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="65"/>
<source>Length:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="110"/>
<source>&lt;p&gt;Negative pixel value sets the panel length to that many pixels less than available screen space.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.g. &quot;Length&quot; set to -100px, screen size is 1000px, then real panel length will be 900 px.&lt;/i&gt;&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="124"/>
<source>%</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="129"/>
<source>px</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="140"/>
<source>Rows count:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="172"/>
<source>Alignment &amp;&amp; position</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="182"/>
<location filename="../config/configpaneldialog.cpp" line="234"/>
<source>Left</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="187"/>
<location filename="../config/configpaneldialog.cpp" line="235"/>
<location filename="../config/configpaneldialog.cpp" line="241"/>
<source>Center</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="192"/>
<location filename="../config/configpaneldialog.cpp" line="236"/>
<source>Right</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="200"/>
<source>Alignment:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="210"/>
<source>Position:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="217"/>
<source>Auto-hide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="233"/>
<source>Styling</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="239"/>
<source>Custom font color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="246"/>
<source>Custom background image:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="260"/>
<source>Custom background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="351"/>
<source>Opacity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="200"/>
<source>Top of desktop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="201"/>
<source>Left of desktop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="202"/>
<source>Right of desktop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="203"/>
<source>Bottom of desktop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="212"/>
<source>Top of desktop %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="213"/>
<source>Left of desktop %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="214"/>
<source>Right of desktop %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="215"/>
<source>Bottom of desktop %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="240"/>
<source>Top</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="242"/>
<source>Bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="397"/>
<location filename="../config/configpaneldialog.cpp" line="411"/>
<source>Pick color</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="431"/>
<source>Images (*.png *.gif *.jpg)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQtPanel</name>
<message>
<location filename="../lxqtpanel.cpp" line="623"/>
<source>Add Panel Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="951"/>
<location filename="../lxqtpanel.cpp" line="970"/>
<source>Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="973"/>
<source>Configure Panel...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="978"/>
<source>Add Panel Widgets...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="984"/>
<source>Add Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="991"/>
<source>Remove Panel</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Plugin</name>
<message>
<location filename="../plugin.cpp" line="395"/>
<source>Configure &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="400"/>
<source>Move &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="408"/>
<source>Remove &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -1,358 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="lt">
<context>
<name>ConfigPanelDialog</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Skydelio konfigūravimas</translation>
</message>
<message>
<source>Panel size</source>
<translation type="vanished">Skydelio dydis</translation>
</message>
<message>
<source>Size:</source>
<translation type="vanished">Dydis:</translation>
</message>
<message>
<source>px</source>
<translation type="vanished">taškeliai</translation>
</message>
<message>
<source>Use automatic sizing</source>
<translation type="vanished">Automatinis dydis</translation>
</message>
<message>
<source>Panel length &amp;&amp; position</source>
<translation type="vanished">Skydelio ilgis ir padėtis</translation>
</message>
<message>
<source>Left</source>
<translation type="vanished">Kairinė</translation>
</message>
<message>
<source>Center</source>
<translation type="vanished">Centrinė</translation>
</message>
<message>
<source>Right</source>
<translation type="vanished">Dešininė</translation>
</message>
<message>
<source>%</source>
<translation type="vanished">%</translation>
</message>
<message>
<source>Alignment:</source>
<translation type="vanished">Lygiuotė:</translation>
</message>
<message>
<source>Length:</source>
<translation type="vanished">Ilgis:</translation>
</message>
<message>
<source>Position:</source>
<translation type="vanished">Padėtis:</translation>
</message>
<message>
<source>Top of desktop</source>
<translation type="vanished">Darbalaukio viršuje</translation>
</message>
<message>
<source>Left of desktop</source>
<translation type="vanished">Darbalaukio kairėje</translation>
</message>
<message>
<source>Right of desktop</source>
<translation type="vanished">Darbalaukio dešinėje</translation>
</message>
<message>
<source>Bottom of desktop</source>
<translation type="vanished">Darbalaukio apačioje</translation>
</message>
<message>
<source>Top of desktop %1</source>
<translation type="vanished">%1 darbalaukio viršuje</translation>
</message>
<message>
<source>Left of desktop %1</source>
<translation type="vanished">%1 darbalaukio kairėje</translation>
</message>
<message>
<source>Right of desktop %1</source>
<translation type="vanished">%1 darbalaukio dešinėje</translation>
</message>
<message>
<source>Bottom of desktop %1</source>
<translation type="vanished">%1 darbalaukio apačioje</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="80"/>
<location filename="../config/configpaneldialog.cpp" line="86"/>
<source>Configure Panel</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConfigPanelWidget</name>
<message>
<location filename="../config/configpaneldialog.ui" line="20"/>
<source>Configure panel</source>
<translation type="unfinished">Skydelio konfigūravimas</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="32"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="41"/>
<source>Size:</source>
<translation type="unfinished">Dydis:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="48"/>
<location filename="../config/configpaneldialog.ui" line="82"/>
<source> px</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="58"/>
<source>Icon size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="65"/>
<source>Length:</source>
<translation type="unfinished">Ilgis:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="110"/>
<source>&lt;p&gt;Negative pixel value sets the panel length to that many pixels less than available screen space.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.g. &quot;Length&quot; set to -100px, screen size is 1000px, then real panel length will be 900 px.&lt;/i&gt;&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="124"/>
<source>%</source>
<translation type="unfinished">%</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="129"/>
<source>px</source>
<translation type="unfinished">taškeliai</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="140"/>
<source>Rows count:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="172"/>
<source>Alignment &amp;&amp; position</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="182"/>
<location filename="../config/configpaneldialog.cpp" line="234"/>
<source>Left</source>
<translation type="unfinished">Kairinė</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="187"/>
<location filename="../config/configpaneldialog.cpp" line="235"/>
<location filename="../config/configpaneldialog.cpp" line="241"/>
<source>Center</source>
<translation type="unfinished">Centrinė</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="192"/>
<location filename="../config/configpaneldialog.cpp" line="236"/>
<source>Right</source>
<translation type="unfinished">Dešininė</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="200"/>
<source>Alignment:</source>
<translation type="unfinished">Lygiuotė:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="210"/>
<source>Position:</source>
<translation type="unfinished">Padėtis:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="217"/>
<source>Auto-hide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="233"/>
<source>Styling</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="239"/>
<source>Custom font color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="246"/>
<source>Custom background image:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="260"/>
<source>Custom background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="351"/>
<source>Opacity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="200"/>
<source>Top of desktop</source>
<translation type="unfinished">Darbalaukio viršuje</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="201"/>
<source>Left of desktop</source>
<translation type="unfinished">Darbalaukio kairėje</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="202"/>
<source>Right of desktop</source>
<translation type="unfinished">Darbalaukio dešinėje</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="203"/>
<source>Bottom of desktop</source>
<translation type="unfinished">Darbalaukio apačioje</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="212"/>
<source>Top of desktop %1</source>
<translation type="unfinished">%1 darbalaukio viršuje</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="213"/>
<source>Left of desktop %1</source>
<translation type="unfinished">%1 darbalaukio kairėje</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="214"/>
<source>Right of desktop %1</source>
<translation type="unfinished">%1 darbalaukio dešinėje</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="215"/>
<source>Bottom of desktop %1</source>
<translation type="unfinished">%1 darbalaukio apačioje</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="240"/>
<source>Top</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="242"/>
<source>Bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="397"/>
<location filename="../config/configpaneldialog.cpp" line="411"/>
<source>Pick color</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="431"/>
<source>Images (*.png *.gif *.jpg)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQtPanel</name>
<message>
<location filename="../lxqtpanel.cpp" line="623"/>
<source>Add Panel Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="951"/>
<location filename="../lxqtpanel.cpp" line="970"/>
<source>Panel</source>
<translation>Qlipper</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="973"/>
<source>Configure Panel...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="978"/>
<source>Add Panel Widgets...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="984"/>
<source>Add Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="991"/>
<source>Remove Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Configure panel...</source>
<translation type="vanished">Konfigūruoti skydelį...</translation>
</message>
<message>
<source>Add plugins ...</source>
<translation type="vanished">Įdėti papildinių...</translation>
</message>
</context>
<context>
<name>LxQtPanelPlugin</name>
<message>
<source>Configure</source>
<translation type="vanished">Konfigūruoti</translation>
</message>
<message>
<source>Move</source>
<translation type="vanished">Perkelti</translation>
</message>
<message>
<source>Remove</source>
<translation type="vanished">Pašalinti</translation>
</message>
</context>
<context>
<name>LxQtPanelPrivate</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Skydelio konfigūravimas</translation>
</message>
</context>
<context>
<name>Plugin</name>
<message>
<location filename="../plugin.cpp" line="395"/>
<source>Configure &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="400"/>
<source>Move &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="408"/>
<source>Remove &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -1,358 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="nl">
<context>
<name>ConfigPanelDialog</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Paneel instellen</translation>
</message>
<message>
<source>Panel size</source>
<translation type="vanished">Paneelgrootte</translation>
</message>
<message>
<source>Size:</source>
<translation type="vanished">Grootte:</translation>
</message>
<message>
<source>px</source>
<translation type="vanished">px</translation>
</message>
<message>
<source>Use automatic sizing</source>
<translation type="vanished">Gebruik automatische afmetingen</translation>
</message>
<message>
<source>Panel length &amp;&amp; position</source>
<translation type="vanished">Lengte &amp;&amp; positie van paneel</translation>
</message>
<message>
<source>Left</source>
<translation type="vanished">Links</translation>
</message>
<message>
<source>Center</source>
<translation type="vanished">Midden</translation>
</message>
<message>
<source>Right</source>
<translation type="vanished">Rechts</translation>
</message>
<message>
<source>%</source>
<translation type="vanished">%</translation>
</message>
<message>
<source>Alignment:</source>
<translation type="vanished">Uitlijning:</translation>
</message>
<message>
<source>Length:</source>
<translation type="vanished">Lengte:</translation>
</message>
<message>
<source>Position:</source>
<translation type="vanished">Positie:</translation>
</message>
<message>
<source>Top of desktop</source>
<translation type="vanished">Bovenaan bureaublad</translation>
</message>
<message>
<source>Left of desktop</source>
<translation type="vanished">Linkerzijkant van bureaublad</translation>
</message>
<message>
<source>Right of desktop</source>
<translation type="vanished">Rechterzijkant van bureaublad</translation>
</message>
<message>
<source>Bottom of desktop</source>
<translation type="vanished">Onderkant van bureaublad</translation>
</message>
<message>
<source>Top of desktop %1</source>
<translation type="vanished">Bovenkant van bureaublad %1</translation>
</message>
<message>
<source>Left of desktop %1</source>
<translation type="vanished">Linkerzijkant van bureaublad %1</translation>
</message>
<message>
<source>Right of desktop %1</source>
<translation type="vanished">Rechterzijkant van bureaublad %1</translation>
</message>
<message>
<source>Bottom of desktop %1</source>
<translation type="vanished">Onderkant van bureaublad %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="80"/>
<location filename="../config/configpaneldialog.cpp" line="86"/>
<source>Configure Panel</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConfigPanelWidget</name>
<message>
<location filename="../config/configpaneldialog.ui" line="20"/>
<source>Configure panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="32"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="41"/>
<source>Size:</source>
<translation type="unfinished">Grootte:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="48"/>
<location filename="../config/configpaneldialog.ui" line="82"/>
<source> px</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="58"/>
<source>Icon size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="65"/>
<source>Length:</source>
<translation type="unfinished">Lengte:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="110"/>
<source>&lt;p&gt;Negative pixel value sets the panel length to that many pixels less than available screen space.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.g. &quot;Length&quot; set to -100px, screen size is 1000px, then real panel length will be 900 px.&lt;/i&gt;&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="124"/>
<source>%</source>
<translation type="unfinished">%</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="129"/>
<source>px</source>
<translation type="unfinished">px</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="140"/>
<source>Rows count:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="172"/>
<source>Alignment &amp;&amp; position</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="182"/>
<location filename="../config/configpaneldialog.cpp" line="234"/>
<source>Left</source>
<translation type="unfinished">Links</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="187"/>
<location filename="../config/configpaneldialog.cpp" line="235"/>
<location filename="../config/configpaneldialog.cpp" line="241"/>
<source>Center</source>
<translation type="unfinished">Midden</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="192"/>
<location filename="../config/configpaneldialog.cpp" line="236"/>
<source>Right</source>
<translation type="unfinished">Rechts</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="200"/>
<source>Alignment:</source>
<translation type="unfinished">Uitlijning:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="210"/>
<source>Position:</source>
<translation type="unfinished">Positie:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="217"/>
<source>Auto-hide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="233"/>
<source>Styling</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="239"/>
<source>Custom font color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="246"/>
<source>Custom background image:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="260"/>
<source>Custom background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="351"/>
<source>Opacity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="200"/>
<source>Top of desktop</source>
<translation type="unfinished">Bovenaan bureaublad</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="201"/>
<source>Left of desktop</source>
<translation type="unfinished">Linkerzijkant van bureaublad</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="202"/>
<source>Right of desktop</source>
<translation type="unfinished">Rechterzijkant van bureaublad</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="203"/>
<source>Bottom of desktop</source>
<translation type="unfinished">Onderkant van bureaublad</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="212"/>
<source>Top of desktop %1</source>
<translation type="unfinished">Bovenkant van bureaublad %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="213"/>
<source>Left of desktop %1</source>
<translation type="unfinished">Linkerzijkant van bureaublad %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="214"/>
<source>Right of desktop %1</source>
<translation type="unfinished">Rechterzijkant van bureaublad %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="215"/>
<source>Bottom of desktop %1</source>
<translation type="unfinished">Onderkant van bureaublad %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="240"/>
<source>Top</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="242"/>
<source>Bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="397"/>
<location filename="../config/configpaneldialog.cpp" line="411"/>
<source>Pick color</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="431"/>
<source>Images (*.png *.gif *.jpg)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQtPanel</name>
<message>
<location filename="../lxqtpanel.cpp" line="623"/>
<source>Add Panel Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="951"/>
<location filename="../lxqtpanel.cpp" line="970"/>
<source>Panel</source>
<translation>Paneel</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="973"/>
<source>Configure Panel...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="978"/>
<source>Add Panel Widgets...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="984"/>
<source>Add Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="991"/>
<source>Remove Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Configure panel...</source>
<translation type="vanished">Paneel instellen...</translation>
</message>
<message>
<source>Add plugins ...</source>
<translation type="vanished">Invoegtoepassingen toevoegen...</translation>
</message>
</context>
<context>
<name>LxQtPanelPlugin</name>
<message>
<source>Configure</source>
<translation type="vanished">Instellen</translation>
</message>
<message>
<source>Move</source>
<translation type="vanished">Verplaatsen</translation>
</message>
<message>
<source>Remove</source>
<translation type="vanished">Verwijderen</translation>
</message>
</context>
<context>
<name>LxQtPanelPrivate</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Paneel instellingen</translation>
</message>
</context>
<context>
<name>Plugin</name>
<message>
<location filename="../plugin.cpp" line="395"/>
<source>Configure &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="400"/>
<source>Move &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="408"/>
<source>Remove &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -1,244 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="pl">
<context>
<name>ConfigPanelDialog</name>
<message>
<location filename="../config/configpaneldialog.cpp" line="80"/>
<location filename="../config/configpaneldialog.cpp" line="86"/>
<source>Configure Panel</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConfigPanelWidget</name>
<message>
<location filename="../config/configpaneldialog.ui" line="20"/>
<source>Configure panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="32"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="41"/>
<source>Size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="48"/>
<location filename="../config/configpaneldialog.ui" line="82"/>
<source> px</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="58"/>
<source>Icon size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="65"/>
<source>Length:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="110"/>
<source>&lt;p&gt;Negative pixel value sets the panel length to that many pixels less than available screen space.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.g. &quot;Length&quot; set to -100px, screen size is 1000px, then real panel length will be 900 px.&lt;/i&gt;&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="124"/>
<source>%</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="129"/>
<source>px</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="140"/>
<source>Rows count:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="172"/>
<source>Alignment &amp;&amp; position</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="182"/>
<location filename="../config/configpaneldialog.cpp" line="234"/>
<source>Left</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="187"/>
<location filename="../config/configpaneldialog.cpp" line="235"/>
<location filename="../config/configpaneldialog.cpp" line="241"/>
<source>Center</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="192"/>
<location filename="../config/configpaneldialog.cpp" line="236"/>
<source>Right</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="200"/>
<source>Alignment:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="210"/>
<source>Position:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="217"/>
<source>Auto-hide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="233"/>
<source>Styling</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="239"/>
<source>Custom font color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="246"/>
<source>Custom background image:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="260"/>
<source>Custom background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="351"/>
<source>Opacity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="200"/>
<source>Top of desktop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="201"/>
<source>Left of desktop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="202"/>
<source>Right of desktop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="203"/>
<source>Bottom of desktop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="212"/>
<source>Top of desktop %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="213"/>
<source>Left of desktop %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="214"/>
<source>Right of desktop %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="215"/>
<source>Bottom of desktop %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="240"/>
<source>Top</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="242"/>
<source>Bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="397"/>
<location filename="../config/configpaneldialog.cpp" line="411"/>
<source>Pick color</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="431"/>
<source>Images (*.png *.gif *.jpg)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQtPanel</name>
<message>
<location filename="../lxqtpanel.cpp" line="623"/>
<source>Add Panel Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="951"/>
<location filename="../lxqtpanel.cpp" line="970"/>
<source>Panel</source>
<translation>Menu</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="973"/>
<source>Configure Panel...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="978"/>
<source>Add Panel Widgets...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="984"/>
<source>Add Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="991"/>
<source>Remove Panel</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Plugin</name>
<message>
<location filename="../plugin.cpp" line="395"/>
<source>Configure &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="400"/>
<source>Move &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="408"/>
<source>Remove &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -1,358 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="pl_PL">
<context>
<name>ConfigPanelDialog</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Konfiguruj panel</translation>
</message>
<message>
<source>Panel size</source>
<translation type="vanished">Rozmiar panelu</translation>
</message>
<message>
<source>Size:</source>
<translation type="vanished">Rozmiar:</translation>
</message>
<message>
<source>px</source>
<translation type="vanished">px</translation>
</message>
<message>
<source>Use automatic sizing</source>
<translation type="vanished">Użyj automatycznego dopasowywania</translation>
</message>
<message>
<source>Panel length &amp;&amp; position</source>
<translation type="vanished">Długość i położenie panelu</translation>
</message>
<message>
<source>Left</source>
<translation type="vanished">Lewa</translation>
</message>
<message>
<source>Center</source>
<translation type="vanished">Środek</translation>
</message>
<message>
<source>Right</source>
<translation type="vanished">Prawa</translation>
</message>
<message>
<source>%</source>
<translation type="vanished">%</translation>
</message>
<message>
<source>Alignment:</source>
<translation type="vanished">Wyrównanie:</translation>
</message>
<message>
<source>Length:</source>
<translation type="vanished">Długość:</translation>
</message>
<message>
<source>Position:</source>
<translation type="vanished">Pozycja:</translation>
</message>
<message>
<source>Top of desktop</source>
<translation type="vanished">Górna krawędź pulpitu</translation>
</message>
<message>
<source>Left of desktop</source>
<translation type="vanished">Lewa krawędź pulpitu</translation>
</message>
<message>
<source>Right of desktop</source>
<translation type="vanished">Prawa krawędź pulpitu</translation>
</message>
<message>
<source>Bottom of desktop</source>
<translation type="vanished">Dolna krawędź pulpitu</translation>
</message>
<message>
<source>Top of desktop %1</source>
<translation type="vanished">Górna krawędź pulpitu %1</translation>
</message>
<message>
<source>Left of desktop %1</source>
<translation type="vanished">Lewa krawędź pulpitu %1</translation>
</message>
<message>
<source>Right of desktop %1</source>
<translation type="vanished">Prawa krawędź pulpitu %1</translation>
</message>
<message>
<source>Bottom of desktop %1</source>
<translation type="vanished">Dolna krawędź pulpitu %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="80"/>
<location filename="../config/configpaneldialog.cpp" line="86"/>
<source>Configure Panel</source>
<translation>KOnfiguruj Panel</translation>
</message>
</context>
<context>
<name>ConfigPanelWidget</name>
<message>
<location filename="../config/configpaneldialog.ui" line="20"/>
<source>Configure panel</source>
<translation>Konfiguruj panel</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="32"/>
<source>Size</source>
<translation>Rozmiar</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="41"/>
<source>Size:</source>
<translation>Rozmiar:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="48"/>
<location filename="../config/configpaneldialog.ui" line="82"/>
<source> px</source>
<translation> px</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="58"/>
<source>Icon size:</source>
<translation>Rozmiar ikon:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="65"/>
<source>Length:</source>
<translation>Długość:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="110"/>
<source>&lt;p&gt;Negative pixel value sets the panel length to that many pixels less than available screen space.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.g. &quot;Length&quot; set to -100px, screen size is 1000px, then real panel length will be 900 px.&lt;/i&gt;&lt;/p&gt;</source>
<translation>&lt;p&gt;Ujemna ilość pikseli powoduje zmniejszenie panelu .&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;Np. &quot;Długość&quot; ustawiona na -100px, rozmiar ekranu 1000px, długość panelu wyniesie 900 px.&lt;/i&gt;&lt;/p&gt;</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="124"/>
<source>%</source>
<translation>%</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="129"/>
<source>px</source>
<translation>px</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="140"/>
<source>Rows count:</source>
<translation>Ilość wierszy:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="172"/>
<source>Alignment &amp;&amp; position</source>
<translation>Wyrównanie i pozycja</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="182"/>
<location filename="../config/configpaneldialog.cpp" line="234"/>
<source>Left</source>
<translation>Lewa</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="187"/>
<location filename="../config/configpaneldialog.cpp" line="235"/>
<location filename="../config/configpaneldialog.cpp" line="241"/>
<source>Center</source>
<translation>Środek</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="192"/>
<location filename="../config/configpaneldialog.cpp" line="236"/>
<source>Right</source>
<translation>Prawa</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="200"/>
<source>Alignment:</source>
<translation>Wyrównanie:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="210"/>
<source>Position:</source>
<translation>Pozycja:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="217"/>
<source>Auto-hide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="233"/>
<source>Styling</source>
<translation>Wygląd</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="239"/>
<source>Custom font color:</source>
<translation>Własny kolor czcionki:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="246"/>
<source>Custom background image:</source>
<translation>Własny obrazek tła:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="260"/>
<source>Custom background color:</source>
<translation>Własny kolor tła:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="351"/>
<source>Opacity</source>
<translation>Przezroczystość</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="200"/>
<source>Top of desktop</source>
<translation>Górna krawędź pulpitu</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="201"/>
<source>Left of desktop</source>
<translation>Lewa krawędź pulpitu</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="202"/>
<source>Right of desktop</source>
<translation>Prawa krawędź pulpitu</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="203"/>
<source>Bottom of desktop</source>
<translation>Dolna krawędź pulpitu</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="212"/>
<source>Top of desktop %1</source>
<translation>Górna krawędź pulpitu %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="213"/>
<source>Left of desktop %1</source>
<translation>Lewa krawędź pulpitu %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="214"/>
<source>Right of desktop %1</source>
<translation>Prawa krawędź pulpitu %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="215"/>
<source>Bottom of desktop %1</source>
<translation>Dolna krawędź pulpitu %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="240"/>
<source>Top</source>
<translation>Góra</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="242"/>
<source>Bottom</source>
<translation>Dół</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="397"/>
<location filename="../config/configpaneldialog.cpp" line="411"/>
<source>Pick color</source>
<translation>Wybierz kolor</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="431"/>
<source>Images (*.png *.gif *.jpg)</source>
<translation>Obrazki (*.png *.gif *.jpg)</translation>
</message>
</context>
<context>
<name>LxQtPanel</name>
<message>
<location filename="../lxqtpanel.cpp" line="623"/>
<source>Add Panel Widgets</source>
<translation>DOdaj Widgety</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="951"/>
<location filename="../lxqtpanel.cpp" line="970"/>
<source>Panel</source>
<translation>Panel</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="973"/>
<source>Configure Panel...</source>
<translation>Konfiguruj Panel...</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="978"/>
<source>Add Panel Widgets...</source>
<translation>Dodaj Widgety...</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="984"/>
<source>Add Panel</source>
<translation>Dodaj Panel</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="991"/>
<source>Remove Panel</source>
<translation>Usuń panel</translation>
</message>
<message>
<source>Configure panel...</source>
<translation type="vanished">Konfiguruj panel...</translation>
</message>
<message>
<source>Add plugins ...</source>
<translation type="vanished">Dodaj wtyczkę ...</translation>
</message>
</context>
<context>
<name>LxQtPanelPlugin</name>
<message>
<source>Configure</source>
<translation type="vanished">Konfiguruj</translation>
</message>
<message>
<source>Move</source>
<translation type="vanished">Przesuń</translation>
</message>
<message>
<source>Remove</source>
<translation type="vanished">Usuń</translation>
</message>
</context>
<context>
<name>LxQtPanelPrivate</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Konfiguruj panel</translation>
</message>
</context>
<context>
<name>Plugin</name>
<message>
<location filename="../plugin.cpp" line="395"/>
<source>Configure &quot;%1&quot;</source>
<translation>Konfiguruj &quot;%1&quot;</translation>
</message>
<message>
<location filename="../plugin.cpp" line="400"/>
<source>Move &quot;%1&quot;</source>
<translation>Przesuń &quot;%1&quot;</translation>
</message>
<message>
<location filename="../plugin.cpp" line="408"/>
<source>Remove &quot;%1&quot;</source>
<translation>Usuń &quot;%1&quot;</translation>
</message>
</context>
</TS>

View File

@ -1,358 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="pt">
<context>
<name>ConfigPanelDialog</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Configurar painel</translation>
</message>
<message>
<source>Panel size</source>
<translation type="vanished">Tamanho do painel</translation>
</message>
<message>
<source>Size:</source>
<translation type="vanished">Tamanho:</translation>
</message>
<message>
<source>px</source>
<translation type="vanished">px</translation>
</message>
<message>
<source>Use automatic sizing</source>
<translation type="vanished">Tamanho automático</translation>
</message>
<message>
<source>Panel length &amp;&amp; position</source>
<translation type="vanished">Posição e comprimento do painel</translation>
</message>
<message>
<source>Left</source>
<translation type="vanished">À esquerda</translation>
</message>
<message>
<source>Center</source>
<translation type="vanished">Ao centro</translation>
</message>
<message>
<source>Right</source>
<translation type="vanished">À direita</translation>
</message>
<message>
<source>%</source>
<translation type="vanished">%</translation>
</message>
<message>
<source>Alignment:</source>
<translation type="vanished">Alinhamento</translation>
</message>
<message>
<source>Length:</source>
<translation type="vanished">Comprimento:</translation>
</message>
<message>
<source>Position:</source>
<translation type="vanished">Posição:</translation>
</message>
<message>
<source>Top of desktop</source>
<translation type="vanished">Em cima</translation>
</message>
<message>
<source>Left of desktop</source>
<translation type="vanished">À esquerda</translation>
</message>
<message>
<source>Right of desktop</source>
<translation type="vanished">À direita</translation>
</message>
<message>
<source>Bottom of desktop</source>
<translation type="vanished">Em baixo</translation>
</message>
<message>
<source>Top of desktop %1</source>
<translation type="vanished">Em cima, área de trabalho %1</translation>
</message>
<message>
<source>Left of desktop %1</source>
<translation type="vanished">À esquerda, área de trabalho %1</translation>
</message>
<message>
<source>Right of desktop %1</source>
<translation type="vanished">À direita, área de trabalho %1</translation>
</message>
<message>
<source>Bottom of desktop %1</source>
<translation type="vanished">Em baixo, área de trabalho %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="80"/>
<location filename="../config/configpaneldialog.cpp" line="86"/>
<source>Configure Panel</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConfigPanelWidget</name>
<message>
<location filename="../config/configpaneldialog.ui" line="20"/>
<source>Configure panel</source>
<translation type="unfinished">Configurar painel</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="32"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="41"/>
<source>Size:</source>
<translation type="unfinished">Tamanho:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="48"/>
<location filename="../config/configpaneldialog.ui" line="82"/>
<source> px</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="58"/>
<source>Icon size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="65"/>
<source>Length:</source>
<translation type="unfinished">Comprimento:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="110"/>
<source>&lt;p&gt;Negative pixel value sets the panel length to that many pixels less than available screen space.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.g. &quot;Length&quot; set to -100px, screen size is 1000px, then real panel length will be 900 px.&lt;/i&gt;&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="124"/>
<source>%</source>
<translation type="unfinished">%</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="129"/>
<source>px</source>
<translation type="unfinished">px</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="140"/>
<source>Rows count:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="172"/>
<source>Alignment &amp;&amp; position</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="182"/>
<location filename="../config/configpaneldialog.cpp" line="234"/>
<source>Left</source>
<translation type="unfinished">À esquerda</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="187"/>
<location filename="../config/configpaneldialog.cpp" line="235"/>
<location filename="../config/configpaneldialog.cpp" line="241"/>
<source>Center</source>
<translation type="unfinished">Ao centro</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="192"/>
<location filename="../config/configpaneldialog.cpp" line="236"/>
<source>Right</source>
<translation type="unfinished">À direita</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="200"/>
<source>Alignment:</source>
<translation type="unfinished">Alinhamento</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="210"/>
<source>Position:</source>
<translation type="unfinished">Posição:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="217"/>
<source>Auto-hide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="233"/>
<source>Styling</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="239"/>
<source>Custom font color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="246"/>
<source>Custom background image:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="260"/>
<source>Custom background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="351"/>
<source>Opacity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="200"/>
<source>Top of desktop</source>
<translation type="unfinished">Em cima</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="201"/>
<source>Left of desktop</source>
<translation type="unfinished">À esquerda</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="202"/>
<source>Right of desktop</source>
<translation type="unfinished">À direita</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="203"/>
<source>Bottom of desktop</source>
<translation type="unfinished">Em baixo</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="212"/>
<source>Top of desktop %1</source>
<translation type="unfinished">Em cima, área de trabalho %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="213"/>
<source>Left of desktop %1</source>
<translation type="unfinished">À esquerda, área de trabalho %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="214"/>
<source>Right of desktop %1</source>
<translation type="unfinished">À direita, área de trabalho %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="215"/>
<source>Bottom of desktop %1</source>
<translation type="unfinished">Em baixo, área de trabalho %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="240"/>
<source>Top</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="242"/>
<source>Bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="397"/>
<location filename="../config/configpaneldialog.cpp" line="411"/>
<source>Pick color</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="431"/>
<source>Images (*.png *.gif *.jpg)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQtPanel</name>
<message>
<location filename="../lxqtpanel.cpp" line="623"/>
<source>Add Panel Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="951"/>
<location filename="../lxqtpanel.cpp" line="970"/>
<source>Panel</source>
<translation>Painel</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="973"/>
<source>Configure Panel...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="978"/>
<source>Add Panel Widgets...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="984"/>
<source>Add Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="991"/>
<source>Remove Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Configure panel...</source>
<translation type="vanished">Configurar painel...</translation>
</message>
<message>
<source>Add plugins ...</source>
<translation type="vanished">Adicionar extras...</translation>
</message>
</context>
<context>
<name>LxQtPanelPlugin</name>
<message>
<source>Configure</source>
<translation type="vanished">Configurar</translation>
</message>
<message>
<source>Move</source>
<translation type="vanished">Mover</translation>
</message>
<message>
<source>Remove</source>
<translation type="vanished">Remover</translation>
</message>
</context>
<context>
<name>LxQtPanelPrivate</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Configurar painel</translation>
</message>
</context>
<context>
<name>Plugin</name>
<message>
<location filename="../plugin.cpp" line="395"/>
<source>Configure &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="400"/>
<source>Move &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="408"/>
<source>Remove &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -1,358 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="pt_BR">
<context>
<name>ConfigPanelDialog</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Configurar painel</translation>
</message>
<message>
<source>Panel size</source>
<translation type="vanished">Tamanho do painel</translation>
</message>
<message>
<source>Size:</source>
<translation type="vanished">Tamanho:</translation>
</message>
<message>
<source>px</source>
<translation type="vanished">px</translation>
</message>
<message>
<source>Use automatic sizing</source>
<translation type="vanished">Usar dimensionamento automático</translation>
</message>
<message>
<source>Panel length &amp;&amp; position</source>
<translation type="vanished">Comprimento e posição do painel</translation>
</message>
<message>
<source>Left</source>
<translation type="vanished">Esquerda</translation>
</message>
<message>
<source>Center</source>
<translation type="vanished">Centro</translation>
</message>
<message>
<source>Right</source>
<translation type="vanished">Direita</translation>
</message>
<message>
<source>%</source>
<translation type="vanished">%</translation>
</message>
<message>
<source>Alignment:</source>
<translation type="vanished">Alinhamento:</translation>
</message>
<message>
<source>Length:</source>
<translation type="vanished">Comprimento:</translation>
</message>
<message>
<source>Position:</source>
<translation type="vanished">Posição:</translation>
</message>
<message>
<source>Top of desktop</source>
<translation type="vanished">Na parte superior da área de trabalho</translation>
</message>
<message>
<source>Left of desktop</source>
<translation type="vanished">À esquerda da área de trabalho</translation>
</message>
<message>
<source>Right of desktop</source>
<translation type="vanished">À direita da área de trabalho</translation>
</message>
<message>
<source>Bottom of desktop</source>
<translation type="vanished">Na parte inferior da área de trabalho</translation>
</message>
<message>
<source>Top of desktop %1</source>
<translation type="vanished">Na parte superior da área de trabalho %1</translation>
</message>
<message>
<source>Left of desktop %1</source>
<translation type="vanished">A esquerda da área de trabalho %1</translation>
</message>
<message>
<source>Right of desktop %1</source>
<translation type="vanished">À direita da área de trabalho %1</translation>
</message>
<message>
<source>Bottom of desktop %1</source>
<translation type="vanished">Na parte inferior da área de trabalho %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="80"/>
<location filename="../config/configpaneldialog.cpp" line="86"/>
<source>Configure Panel</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConfigPanelWidget</name>
<message>
<location filename="../config/configpaneldialog.ui" line="20"/>
<source>Configure panel</source>
<translation type="unfinished">Configurar painel</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="32"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="41"/>
<source>Size:</source>
<translation type="unfinished">Tamanho:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="48"/>
<location filename="../config/configpaneldialog.ui" line="82"/>
<source> px</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="58"/>
<source>Icon size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="65"/>
<source>Length:</source>
<translation type="unfinished">Comprimento:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="110"/>
<source>&lt;p&gt;Negative pixel value sets the panel length to that many pixels less than available screen space.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.g. &quot;Length&quot; set to -100px, screen size is 1000px, then real panel length will be 900 px.&lt;/i&gt;&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="124"/>
<source>%</source>
<translation type="unfinished">%</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="129"/>
<source>px</source>
<translation type="unfinished">px</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="140"/>
<source>Rows count:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="172"/>
<source>Alignment &amp;&amp; position</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="182"/>
<location filename="../config/configpaneldialog.cpp" line="234"/>
<source>Left</source>
<translation type="unfinished">Esquerda</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="187"/>
<location filename="../config/configpaneldialog.cpp" line="235"/>
<location filename="../config/configpaneldialog.cpp" line="241"/>
<source>Center</source>
<translation type="unfinished">Centro</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="192"/>
<location filename="../config/configpaneldialog.cpp" line="236"/>
<source>Right</source>
<translation type="unfinished">Direita</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="200"/>
<source>Alignment:</source>
<translation type="unfinished">Alinhamento:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="210"/>
<source>Position:</source>
<translation type="unfinished">Posição:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="217"/>
<source>Auto-hide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="233"/>
<source>Styling</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="239"/>
<source>Custom font color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="246"/>
<source>Custom background image:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="260"/>
<source>Custom background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="351"/>
<source>Opacity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="200"/>
<source>Top of desktop</source>
<translation type="unfinished">Na parte superior da área de trabalho</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="201"/>
<source>Left of desktop</source>
<translation type="unfinished">À esquerda da área de trabalho</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="202"/>
<source>Right of desktop</source>
<translation type="unfinished">À direita da área de trabalho</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="203"/>
<source>Bottom of desktop</source>
<translation type="unfinished">Na parte inferior da área de trabalho</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="212"/>
<source>Top of desktop %1</source>
<translation type="unfinished">Na parte superior da área de trabalho %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="213"/>
<source>Left of desktop %1</source>
<translation type="unfinished">A esquerda da área de trabalho %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="214"/>
<source>Right of desktop %1</source>
<translation type="unfinished">À direita da área de trabalho %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="215"/>
<source>Bottom of desktop %1</source>
<translation type="unfinished">Na parte inferior da área de trabalho %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="240"/>
<source>Top</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="242"/>
<source>Bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="397"/>
<location filename="../config/configpaneldialog.cpp" line="411"/>
<source>Pick color</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="431"/>
<source>Images (*.png *.gif *.jpg)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQtPanel</name>
<message>
<location filename="../lxqtpanel.cpp" line="623"/>
<source>Add Panel Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="951"/>
<location filename="../lxqtpanel.cpp" line="970"/>
<source>Panel</source>
<translation>Suspender Automaticamente</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="973"/>
<source>Configure Panel...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="978"/>
<source>Add Panel Widgets...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="984"/>
<source>Add Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="991"/>
<source>Remove Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Configure panel...</source>
<translation type="vanished">Configurar painel...</translation>
</message>
<message>
<source>Add plugins ...</source>
<translation type="vanished">Adicionar plug-ins...</translation>
</message>
</context>
<context>
<name>LxQtPanelPlugin</name>
<message>
<source>Configure</source>
<translation type="vanished">Configurar</translation>
</message>
<message>
<source>Move</source>
<translation type="vanished">Mover</translation>
</message>
<message>
<source>Remove</source>
<translation type="vanished">Remover</translation>
</message>
</context>
<context>
<name>LxQtPanelPrivate</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Configurar painel</translation>
</message>
</context>
<context>
<name>Plugin</name>
<message>
<location filename="../plugin.cpp" line="395"/>
<source>Configure &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="400"/>
<source>Move &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="408"/>
<source>Remove &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -1,358 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="ro_RO">
<context>
<name>ConfigPanelDialog</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Configurează panoul</translation>
</message>
<message>
<source>Panel size</source>
<translation type="vanished">Dimensiune panou</translation>
</message>
<message>
<source>Size:</source>
<translation type="vanished">Dimensiune:</translation>
</message>
<message>
<source>px</source>
<translation type="vanished">px</translation>
</message>
<message>
<source>Use automatic sizing</source>
<translation type="vanished">Utilizează dimensionarea automată</translation>
</message>
<message>
<source>Panel length &amp;&amp; position</source>
<translation type="vanished">Lungime &amp;&amp; poziție panou</translation>
</message>
<message>
<source>Left</source>
<translation type="vanished">Stânga</translation>
</message>
<message>
<source>Center</source>
<translation type="vanished">Centru</translation>
</message>
<message>
<source>Right</source>
<translation type="vanished">Dreapta</translation>
</message>
<message>
<source>%</source>
<translation type="vanished">%</translation>
</message>
<message>
<source>Alignment:</source>
<translation type="vanished">Aliniere:</translation>
</message>
<message>
<source>Length:</source>
<translation type="vanished">Lungime:</translation>
</message>
<message>
<source>Position:</source>
<translation type="vanished">Poziție:</translation>
</message>
<message>
<source>Top of desktop</source>
<translation type="vanished">Partea de sus a ecranului</translation>
</message>
<message>
<source>Left of desktop</source>
<translation type="vanished">Stânga ecranului</translation>
</message>
<message>
<source>Right of desktop</source>
<translation type="vanished">Dreapta ecranului</translation>
</message>
<message>
<source>Bottom of desktop</source>
<translation type="vanished">Partea de jos a ecranului</translation>
</message>
<message>
<source>Top of desktop %1</source>
<translation type="vanished">Partea de sus a ecranului %1</translation>
</message>
<message>
<source>Left of desktop %1</source>
<translation type="vanished">Stânga ecranului %1</translation>
</message>
<message>
<source>Right of desktop %1</source>
<translation type="vanished">Dreapta ecranului %1</translation>
</message>
<message>
<source>Bottom of desktop %1</source>
<translation type="vanished">Partea de jos a ecranului %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="80"/>
<location filename="../config/configpaneldialog.cpp" line="86"/>
<source>Configure Panel</source>
<translation type="unfinished">Configurează panoul</translation>
</message>
</context>
<context>
<name>ConfigPanelWidget</name>
<message>
<location filename="../config/configpaneldialog.ui" line="20"/>
<source>Configure panel</source>
<translation type="unfinished">Configurează panoul</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="32"/>
<source>Size</source>
<translation type="unfinished">Dimensiune</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="41"/>
<source>Size:</source>
<translation type="unfinished">Dimensiune:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="48"/>
<location filename="../config/configpaneldialog.ui" line="82"/>
<source> px</source>
<translation type="unfinished"> px</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="58"/>
<source>Icon size:</source>
<translation type="unfinished">Dimensiune pictograme:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="65"/>
<source>Length:</source>
<translation type="unfinished">Lungime:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="110"/>
<source>&lt;p&gt;Negative pixel value sets the panel length to that many pixels less than available screen space.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.g. &quot;Length&quot; set to -100px, screen size is 1000px, then real panel length will be 900 px.&lt;/i&gt;&lt;/p&gt;</source>
<translation type="unfinished">&lt;p&gt;Pentru valori negative, dimensiunea panoului va fi calculată ca diferenta dintre marimea disponibilă a ecranului și valoarea introdusă.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;De ex. introducând o &quot;lungime&quot; de -100 px si o dimensiune a ecranului de 1000 px, dimensiunea reala a panoului va fi de 900 px.&lt;/i&gt;&lt;/p&gt;</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="124"/>
<source>%</source>
<translation type="unfinished">%</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="129"/>
<source>px</source>
<translation type="unfinished">px</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="140"/>
<source>Rows count:</source>
<translation type="unfinished">Număr coloane:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="172"/>
<source>Alignment &amp;&amp; position</source>
<translation type="unfinished">Aliniere și poziție</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="182"/>
<location filename="../config/configpaneldialog.cpp" line="234"/>
<source>Left</source>
<translation type="unfinished">Stânga</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="187"/>
<location filename="../config/configpaneldialog.cpp" line="235"/>
<location filename="../config/configpaneldialog.cpp" line="241"/>
<source>Center</source>
<translation type="unfinished">Centru</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="192"/>
<location filename="../config/configpaneldialog.cpp" line="236"/>
<source>Right</source>
<translation type="unfinished">Dreapta</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="200"/>
<source>Alignment:</source>
<translation type="unfinished">Aliniere:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="210"/>
<source>Position:</source>
<translation type="unfinished">Poziție:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="217"/>
<source>Auto-hide</source>
<translation type="unfinished">Auto-ascundere</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="233"/>
<source>Styling</source>
<translation type="unfinished">Stil</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="239"/>
<source>Custom font color:</source>
<translation type="unfinished">Culoare de font personalizată</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="246"/>
<source>Custom background image:</source>
<translation type="unfinished">Imagine de fundal personalizată</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="260"/>
<source>Custom background color:</source>
<translation type="unfinished">Culoare de fundal personalizată</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="351"/>
<source>Opacity</source>
<translation type="unfinished">Opacitate</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="200"/>
<source>Top of desktop</source>
<translation type="unfinished">Partea de sus a ecranului</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="201"/>
<source>Left of desktop</source>
<translation type="unfinished">Stânga ecranului</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="202"/>
<source>Right of desktop</source>
<translation type="unfinished">Dreapta ecranului</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="203"/>
<source>Bottom of desktop</source>
<translation type="unfinished">Partea de jos a ecranului</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="212"/>
<source>Top of desktop %1</source>
<translation type="unfinished">Partea de sus a ecranului %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="213"/>
<source>Left of desktop %1</source>
<translation type="unfinished">Stânga ecranului %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="214"/>
<source>Right of desktop %1</source>
<translation type="unfinished">Dreapta ecranului %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="215"/>
<source>Bottom of desktop %1</source>
<translation type="unfinished">Partea de jos a ecranului %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="240"/>
<source>Top</source>
<translation type="unfinished">Sus</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="242"/>
<source>Bottom</source>
<translation type="unfinished">Jos</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="397"/>
<location filename="../config/configpaneldialog.cpp" line="411"/>
<source>Pick color</source>
<translation type="unfinished">Alege culoare</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="431"/>
<source>Images (*.png *.gif *.jpg)</source>
<translation type="unfinished">Imagini (*.png *.gif *.jpg)</translation>
</message>
</context>
<context>
<name>LxQtPanel</name>
<message>
<location filename="../lxqtpanel.cpp" line="623"/>
<source>Add Panel Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="951"/>
<location filename="../lxqtpanel.cpp" line="970"/>
<source>Panel</source>
<translation>Panou</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="973"/>
<source>Configure Panel...</source>
<translation type="unfinished">Configurează panoul...</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="978"/>
<source>Add Panel Widgets...</source>
<translation type="unfinished">Adaugă widget de panou</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="984"/>
<source>Add Panel</source>
<translation type="unfinished">Adaugă panou</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="991"/>
<source>Remove Panel</source>
<translation type="unfinished">Îndepărtează panou</translation>
</message>
<message>
<source>Configure panel...</source>
<translation type="vanished">Configurează panoul...</translation>
</message>
<message>
<source>Add plugins ...</source>
<translation type="vanished">Adaugă module....</translation>
</message>
</context>
<context>
<name>LxQtPanelPlugin</name>
<message>
<source>Configure</source>
<translation type="vanished">Configurează</translation>
</message>
<message>
<source>Move</source>
<translation type="vanished">Mută</translation>
</message>
<message>
<source>Remove</source>
<translation type="vanished">Îndepărtează</translation>
</message>
</context>
<context>
<name>LxQtPanelPrivate</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Configurează panoul</translation>
</message>
</context>
<context>
<name>Plugin</name>
<message>
<location filename="../plugin.cpp" line="395"/>
<source>Configure &quot;%1&quot;</source>
<translation type="unfinished">Configurează &quot;%1&quot;</translation>
</message>
<message>
<location filename="../plugin.cpp" line="400"/>
<source>Move &quot;%1&quot;</source>
<translation type="unfinished">Mută &quot;%1&quot;</translation>
</message>
<message>
<location filename="../plugin.cpp" line="408"/>
<source>Remove &quot;%1&quot;</source>
<translation type="unfinished">Îndepărtează &quot;%1&quot;</translation>
</message>
</context>
</TS>

View File

@ -1,346 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="ru">
<context>
<name>AddPluginDialog</name>
<message>
<location filename="../config/addplugindialog.ui" line="14"/>
<source>Add Plugins</source>
<translation>Добавить плагины</translation>
</message>
<message>
<location filename="../config/addplugindialog.ui" line="22"/>
<source>Search:</source>
<translation>Найти:</translation>
</message>
<message>
<location filename="../config/addplugindialog.ui" line="98"/>
<source>Add Widget</source>
<translation>Добавить виджет</translation>
</message>
<message>
<location filename="../config/addplugindialog.ui" line="105"/>
<source>Close</source>
<translation>Закрыть</translation>
</message>
<message>
<location filename="../config/addplugindialog.cpp" line="114"/>
<source>(only one instance can run at a time)</source>
<translation>(только одна копия может быть запущена за раз)</translation>
</message>
</context>
<context>
<name>ConfigPanelDialog</name>
<message>
<location filename="../config/configpaneldialog.cpp" line="31"/>
<source>Configure Panel</source>
<translation>Настроить панель</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="38"/>
<source>Panel</source>
<translation>Панель</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="42"/>
<source>Widgets</source>
<translation>Виджеты</translation>
</message>
</context>
<context>
<name>ConfigPanelWidget</name>
<message>
<location filename="../config/configpanelwidget.ui" line="20"/>
<source>Configure panel</source>
<translation>Настроить панель</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="101"/>
<source>px</source>
<translation>пикс</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="173"/>
<source>Rows count:</source>
<translation>Количество строк:</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="166"/>
<source>Icon size:</source>
<translation>Размер иконок:</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="68"/>
<source>&lt;p&gt;Negative pixel value sets the panel length to that many pixels less than available screen space.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.g. &quot;Length&quot; set to -100px, screen size is 1000px, then real panel length will be 900 px.&lt;/i&gt;&lt;/p&gt;</source>
<translation>&lt;p&gt;Отрицательное число пикселей устанавливает длину панели на столько же пикселей меньше, чем доступное место экрана.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;Т.е. «Длина» выставленная на -100 пикс, размер экрана 1000 пикс, тогда реальная длина панели будет 900 пикс.&lt;/i&gt;&lt;/p&gt;</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="244"/>
<location filename="../config/configpanelwidget.cpp" line="190"/>
<source>Left</source>
<translation>Слева</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="249"/>
<location filename="../config/configpanelwidget.cpp" line="191"/>
<location filename="../config/configpanelwidget.cpp" line="197"/>
<source>Center</source>
<translation>По центру</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="254"/>
<location filename="../config/configpanelwidget.cpp" line="192"/>
<source>Right</source>
<translation>Справа</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="96"/>
<source>%</source>
<translation>%</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="44"/>
<source>Size</source>
<translation>Размер</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="81"/>
<source>Size:</source>
<translation>Размер:</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="109"/>
<location filename="../config/configpanelwidget.ui" line="153"/>
<source> px</source>
<translation> пикс</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="202"/>
<source>Alignment &amp;&amp; position</source>
<translation>Выравнивание &amp;&amp; расположение</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="218"/>
<source>Alignment:</source>
<translation>Выравнивание:</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="303"/>
<source>Custom styling</source>
<translation>Пользовательский стиль</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="324"/>
<source>Font color:</source>
<translation>Цвет шрифта:</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="403"/>
<source>Background opacity:</source>
<translation>Непрозрачность фона:</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="435"/>
<source>&lt;small&gt;Compositing is required for panel transparency.&lt;/small&gt;</source>
<translation>&lt;small&gt;Композиция необходима для прозрачности панели.&lt;/small&gt;</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="463"/>
<source>Background image:</source>
<translation>Фоновое изображение:</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="364"/>
<source>Background color:</source>
<translation>Цвет фона:</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="284"/>
<source>Auto-hide</source>
<translation>Автоматически скрывать</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="88"/>
<source>Length:</source>
<translation>Длина:</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="208"/>
<source>Position:</source>
<translation>Расположение:</translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="156"/>
<source>Top of desktop</source>
<translation>Вверху</translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="157"/>
<source>Left of desktop</source>
<translation>Слева</translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="158"/>
<source>Right of desktop</source>
<translation>Справа</translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="159"/>
<source>Bottom of desktop</source>
<translation>Внизу</translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="168"/>
<source>Top of desktop %1</source>
<translation>Вверху %1 рабочего стола</translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="169"/>
<source>Left of desktop %1</source>
<translation>Слева на %1 рабочем столе</translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="170"/>
<source>Right of desktop %1</source>
<translation>Справа на %1 рабочем столе</translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="171"/>
<source>Bottom of desktop %1</source>
<translation>Внизу %1 рабочего стола</translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="196"/>
<source>Top</source>
<translation>Вверху</translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="198"/>
<source>Bottom</source>
<translation>Внизу</translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="354"/>
<location filename="../config/configpanelwidget.cpp" line="370"/>
<source>Pick color</source>
<translation>Выбрать цвет</translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="388"/>
<source>Images (*.png *.gif *.jpg)</source>
<translation>Изображения (*.png *.gif *.jpg)</translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="388"/>
<source>Pick image</source>
<translation>Выберите изображение</translation>
</message>
</context>
<context>
<name>ConfigPluginsWidget</name>
<message>
<location filename="../config/configpluginswidget.ui" line="14"/>
<source>Configure Plugins</source>
<translation>Настроить плагины</translation>
</message>
<message>
<location filename="../config/configpluginswidget.ui" line="84"/>
<source>Note: changes made in this page cannot be reset.</source>
<translation>Примечание: изменения, сделанные на этой странице, нельзя сбросить.</translation>
</message>
<message>
<location filename="../config/configpluginswidget.ui" line="112"/>
<source>Move up</source>
<translation>Переместить выше</translation>
</message>
<message>
<location filename="../config/configpluginswidget.ui" line="115"/>
<location filename="../config/configpluginswidget.ui" line="129"/>
<location filename="../config/configpluginswidget.ui" line="150"/>
<location filename="../config/configpluginswidget.ui" line="164"/>
<location filename="../config/configpluginswidget.ui" line="185"/>
<source>...</source>
<translation></translation>
</message>
<message>
<location filename="../config/configpluginswidget.ui" line="126"/>
<source>Move down</source>
<translation>Переместить ниже</translation>
</message>
<message>
<location filename="../config/configpluginswidget.ui" line="147"/>
<source>Add</source>
<translation>Добавить</translation>
</message>
<message>
<location filename="../config/configpluginswidget.ui" line="161"/>
<source>Remove</source>
<translation>Удалить</translation>
</message>
<message>
<location filename="../config/configpluginswidget.ui" line="182"/>
<source>Configure</source>
<translation>Настроить</translation>
</message>
</context>
<context>
<name>LxQtPanel</name>
<message>
<location filename="../lxqtpanel.cpp" line="912"/>
<location filename="../lxqtpanel.cpp" line="931"/>
<source>Panel</source>
<translation>Панель</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="934"/>
<source>Configure Panel</source>
<translation>Настроить панель</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="939"/>
<source>Manage Widgets</source>
<translation>Управление виджетами</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="945"/>
<source>Add Panel</source>
<translation>Добавить панель</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="952"/>
<source>Remove Panel</source>
<translation>Удалить панель</translation>
</message>
</context>
<context>
<name>Plugin</name>
<message>
<location filename="../plugin.cpp" line="403"/>
<source>Configure &quot;%1&quot;</source>
<translation>Настроить «%1»</translation>
</message>
<message>
<location filename="../plugin.cpp" line="408"/>
<source>Move &quot;%1&quot;</source>
<translation>Переместить «%1»</translation>
</message>
<message>
<location filename="../plugin.cpp" line="416"/>
<source>Remove &quot;%1&quot;</source>
<translation>Удалить «%1»</translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="../lxqtpanelapplication.cpp" line="52"/>
<source>Use alternate configuration file.</source>
<translation>Использовать альтернативный конфигурационный файл.</translation>
</message>
<message>
<location filename="../lxqtpanelapplication.cpp" line="53"/>
<source>Configuration file</source>
<translation>Файл настроек</translation>
</message>
</context>
</TS>

View File

@ -1,346 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="ru_RU">
<context>
<name>AddPluginDialog</name>
<message>
<location filename="../config/addplugindialog.ui" line="14"/>
<source>Add Plugins</source>
<translation>Добавить плагины</translation>
</message>
<message>
<location filename="../config/addplugindialog.ui" line="22"/>
<source>Search:</source>
<translation>Найти:</translation>
</message>
<message>
<location filename="../config/addplugindialog.ui" line="98"/>
<source>Add Widget</source>
<translation>Добавить виджет</translation>
</message>
<message>
<location filename="../config/addplugindialog.ui" line="105"/>
<source>Close</source>
<translation>Закрыть</translation>
</message>
<message>
<location filename="../config/addplugindialog.cpp" line="114"/>
<source>(only one instance can run at a time)</source>
<translation>(только одна копия может быть запущена за раз)</translation>
</message>
</context>
<context>
<name>ConfigPanelDialog</name>
<message>
<location filename="../config/configpaneldialog.cpp" line="31"/>
<source>Configure Panel</source>
<translation>Настроить панель</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="38"/>
<source>Panel</source>
<translation>Панель</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="42"/>
<source>Widgets</source>
<translation>Виджеты</translation>
</message>
</context>
<context>
<name>ConfigPanelWidget</name>
<message>
<location filename="../config/configpanelwidget.ui" line="20"/>
<source>Configure panel</source>
<translation>Настроить панель</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="101"/>
<source>px</source>
<translation>пикс</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="173"/>
<source>Rows count:</source>
<translation>Количество строк:</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="166"/>
<source>Icon size:</source>
<translation>Размер иконок:</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="68"/>
<source>&lt;p&gt;Negative pixel value sets the panel length to that many pixels less than available screen space.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.g. &quot;Length&quot; set to -100px, screen size is 1000px, then real panel length will be 900 px.&lt;/i&gt;&lt;/p&gt;</source>
<translation>&lt;p&gt;Отрицательное число пикселей устанавливает длину панели на столько же пикселей меньше, чем доступное место экрана.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;Т.е. «Длина» выставленная на -100 пикс, размер экрана 1000 пикс, тогда реальная длина панели будет 900 пикс.&lt;/i&gt;&lt;/p&gt;</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="244"/>
<location filename="../config/configpanelwidget.cpp" line="190"/>
<source>Left</source>
<translation>Слева</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="249"/>
<location filename="../config/configpanelwidget.cpp" line="191"/>
<location filename="../config/configpanelwidget.cpp" line="197"/>
<source>Center</source>
<translation>По центру</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="254"/>
<location filename="../config/configpanelwidget.cpp" line="192"/>
<source>Right</source>
<translation>Справа</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="96"/>
<source>%</source>
<translation>%</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="44"/>
<source>Size</source>
<translation>Размер</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="81"/>
<source>Size:</source>
<translation>Размер:</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="109"/>
<location filename="../config/configpanelwidget.ui" line="153"/>
<source> px</source>
<translation> пикс</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="202"/>
<source>Alignment &amp;&amp; position</source>
<translation>Выравнивание &amp;&amp; расположение</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="218"/>
<source>Alignment:</source>
<translation>Выравнивание:</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="303"/>
<source>Custom styling</source>
<translation>Пользовательский стиль</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="324"/>
<source>Font color:</source>
<translation>Цвет шрифта:</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="403"/>
<source>Background opacity:</source>
<translation>Непрозрачность фона:</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="435"/>
<source>&lt;small&gt;Compositing is required for panel transparency.&lt;/small&gt;</source>
<translation>&lt;small&gt;Композиция необходима для прозрачности панели.&lt;/small&gt;</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="463"/>
<source>Background image:</source>
<translation>Фоновое изображение:</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="364"/>
<source>Background color:</source>
<translation>Цвет фона:</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="284"/>
<source>Auto-hide</source>
<translation>Автоматически скрывать</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="88"/>
<source>Length:</source>
<translation>Длина:</translation>
</message>
<message>
<location filename="../config/configpanelwidget.ui" line="208"/>
<source>Position:</source>
<translation>Расположение:</translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="156"/>
<source>Top of desktop</source>
<translation>Вверху</translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="157"/>
<source>Left of desktop</source>
<translation>Слева</translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="158"/>
<source>Right of desktop</source>
<translation>Справа</translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="159"/>
<source>Bottom of desktop</source>
<translation>Внизу</translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="168"/>
<source>Top of desktop %1</source>
<translation>Вверху %1 рабочего стола</translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="169"/>
<source>Left of desktop %1</source>
<translation>Слева на %1 рабочем столе</translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="170"/>
<source>Right of desktop %1</source>
<translation>Справа на %1 рабочем столе</translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="171"/>
<source>Bottom of desktop %1</source>
<translation>Внизу %1 рабочего стола</translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="196"/>
<source>Top</source>
<translation>Вверху</translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="198"/>
<source>Bottom</source>
<translation>Внизу</translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="354"/>
<location filename="../config/configpanelwidget.cpp" line="370"/>
<source>Pick color</source>
<translation>Выбрать цвет</translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="388"/>
<source>Images (*.png *.gif *.jpg)</source>
<translation>Изображения (*.png *.gif *.jpg)</translation>
</message>
<message>
<location filename="../config/configpanelwidget.cpp" line="388"/>
<source>Pick image</source>
<translation>Выберите изображение</translation>
</message>
</context>
<context>
<name>ConfigPluginsWidget</name>
<message>
<location filename="../config/configpluginswidget.ui" line="14"/>
<source>Configure Plugins</source>
<translation>Настроить плагины</translation>
</message>
<message>
<location filename="../config/configpluginswidget.ui" line="84"/>
<source>Note: changes made in this page cannot be reset.</source>
<translation>Примечание: изменения, сделанные на этой странице, нельзя сбросить.</translation>
</message>
<message>
<location filename="../config/configpluginswidget.ui" line="112"/>
<source>Move up</source>
<translation>Переместить выше</translation>
</message>
<message>
<location filename="../config/configpluginswidget.ui" line="115"/>
<location filename="../config/configpluginswidget.ui" line="129"/>
<location filename="../config/configpluginswidget.ui" line="150"/>
<location filename="../config/configpluginswidget.ui" line="164"/>
<location filename="../config/configpluginswidget.ui" line="185"/>
<source>...</source>
<translation></translation>
</message>
<message>
<location filename="../config/configpluginswidget.ui" line="126"/>
<source>Move down</source>
<translation>Переместить ниже</translation>
</message>
<message>
<location filename="../config/configpluginswidget.ui" line="147"/>
<source>Add</source>
<translation>Добавить</translation>
</message>
<message>
<location filename="../config/configpluginswidget.ui" line="161"/>
<source>Remove</source>
<translation>Удалить</translation>
</message>
<message>
<location filename="../config/configpluginswidget.ui" line="182"/>
<source>Configure</source>
<translation>Настроить</translation>
</message>
</context>
<context>
<name>LxQtPanel</name>
<message>
<location filename="../lxqtpanel.cpp" line="912"/>
<location filename="../lxqtpanel.cpp" line="931"/>
<source>Panel</source>
<translation>Панель</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="934"/>
<source>Configure Panel</source>
<translation>Настроить панель</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="939"/>
<source>Manage Widgets</source>
<translation>Управление виджетами</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="945"/>
<source>Add Panel</source>
<translation>Добавить панель</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="952"/>
<source>Remove Panel</source>
<translation>Удалить панель</translation>
</message>
</context>
<context>
<name>Plugin</name>
<message>
<location filename="../plugin.cpp" line="403"/>
<source>Configure &quot;%1&quot;</source>
<translation>Настроить «%1»</translation>
</message>
<message>
<location filename="../plugin.cpp" line="408"/>
<source>Move &quot;%1&quot;</source>
<translation>Переместить «%1»</translation>
</message>
<message>
<location filename="../plugin.cpp" line="416"/>
<source>Remove &quot;%1&quot;</source>
<translation>Удалить «%1»</translation>
</message>
</context>
<context>
<name>main</name>
<message>
<location filename="../lxqtpanelapplication.cpp" line="52"/>
<source>Use alternate configuration file.</source>
<translation>Использовать альтернативный конфигурационный файл.</translation>
</message>
<message>
<location filename="../lxqtpanelapplication.cpp" line="53"/>
<source>Configuration file</source>
<translation>Файл настроек</translation>
</message>
</context>
</TS>

View File

@ -1,311 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="sk_SK">
<context>
<name>ConfigPanelDialog</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Nastaviť panel</translation>
</message>
<message>
<source>px</source>
<translation type="vanished">px</translation>
</message>
<message>
<source>Left</source>
<translation type="vanished">Vľavo</translation>
</message>
<message>
<source>Center</source>
<translation type="vanished">Stred</translation>
</message>
<message>
<source>Right</source>
<translation type="vanished">Vpravo</translation>
</message>
<message>
<source>%</source>
<translation type="vanished">%</translation>
</message>
<message>
<source>Top of desktop</source>
<translation type="vanished">Vrch plochy</translation>
</message>
<message>
<source>Left of desktop</source>
<translation type="vanished">Ľavá strana plochy</translation>
</message>
<message>
<source>Right of desktop</source>
<translation type="vanished">Pravá strana plochy</translation>
</message>
<message>
<source>Bottom of desktop</source>
<translation type="vanished">Spodok plochy</translation>
</message>
<message>
<source>Top of desktop %1</source>
<translation type="vanished">Vrch plochy %1</translation>
</message>
<message>
<source>Left of desktop %1</source>
<translation type="vanished">Ľavá strana plochy %1</translation>
</message>
<message>
<source>Right of desktop %1</source>
<translation type="vanished">Pravá strana plochy %1</translation>
</message>
<message>
<source>Bottom of desktop %1</source>
<translation type="vanished">Spodok plochy %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="80"/>
<location filename="../config/configpaneldialog.cpp" line="86"/>
<source>Configure Panel</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConfigPanelWidget</name>
<message>
<location filename="../config/configpaneldialog.ui" line="20"/>
<source>Configure panel</source>
<translation type="unfinished">Nastaviť panel</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="32"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="41"/>
<source>Size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="48"/>
<location filename="../config/configpaneldialog.ui" line="82"/>
<source> px</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="58"/>
<source>Icon size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="65"/>
<source>Length:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="110"/>
<source>&lt;p&gt;Negative pixel value sets the panel length to that many pixels less than available screen space.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.g. &quot;Length&quot; set to -100px, screen size is 1000px, then real panel length will be 900 px.&lt;/i&gt;&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="124"/>
<source>%</source>
<translation type="unfinished">%</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="129"/>
<source>px</source>
<translation type="unfinished">px</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="140"/>
<source>Rows count:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="172"/>
<source>Alignment &amp;&amp; position</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="182"/>
<location filename="../config/configpaneldialog.cpp" line="234"/>
<source>Left</source>
<translation type="unfinished">Vľavo</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="187"/>
<location filename="../config/configpaneldialog.cpp" line="235"/>
<location filename="../config/configpaneldialog.cpp" line="241"/>
<source>Center</source>
<translation type="unfinished">Stred</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="192"/>
<location filename="../config/configpaneldialog.cpp" line="236"/>
<source>Right</source>
<translation type="unfinished">Vpravo</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="200"/>
<source>Alignment:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="210"/>
<source>Position:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="217"/>
<source>Auto-hide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="233"/>
<source>Styling</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="239"/>
<source>Custom font color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="246"/>
<source>Custom background image:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="260"/>
<source>Custom background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="351"/>
<source>Opacity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="200"/>
<source>Top of desktop</source>
<translation type="unfinished">Vrch plochy</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="201"/>
<source>Left of desktop</source>
<translation type="unfinished">Ľavá strana plochy</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="202"/>
<source>Right of desktop</source>
<translation type="unfinished">Pravá strana plochy</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="203"/>
<source>Bottom of desktop</source>
<translation type="unfinished">Spodok plochy</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="212"/>
<source>Top of desktop %1</source>
<translation type="unfinished">Vrch plochy %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="213"/>
<source>Left of desktop %1</source>
<translation type="unfinished">Ľavá strana plochy %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="214"/>
<source>Right of desktop %1</source>
<translation type="unfinished">Pravá strana plochy %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="215"/>
<source>Bottom of desktop %1</source>
<translation type="unfinished">Spodok plochy %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="240"/>
<source>Top</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="242"/>
<source>Bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="397"/>
<location filename="../config/configpaneldialog.cpp" line="411"/>
<source>Pick color</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="431"/>
<source>Images (*.png *.gif *.jpg)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQtPanel</name>
<message>
<location filename="../lxqtpanel.cpp" line="623"/>
<source>Add Panel Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="951"/>
<location filename="../lxqtpanel.cpp" line="970"/>
<source>Panel</source>
<translation>Panel</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="973"/>
<source>Configure Panel...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="978"/>
<source>Add Panel Widgets...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="984"/>
<source>Add Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="991"/>
<source>Remove Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Add plugins ...</source>
<translation type="vanished">Pridať moduly...</translation>
</message>
</context>
<context>
<name>LxQtPanelPrivate</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Nastaviť panel</translation>
</message>
</context>
<context>
<name>Plugin</name>
<message>
<location filename="../plugin.cpp" line="395"/>
<source>Configure &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="400"/>
<source>Move &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="408"/>
<source>Remove &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -1,358 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="sl">
<context>
<name>ConfigPanelDialog</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Nastavitev pulta</translation>
</message>
<message>
<source>Panel size</source>
<translation type="vanished">Velikost pulta</translation>
</message>
<message>
<source>Size:</source>
<translation type="vanished">Velikost:</translation>
</message>
<message>
<source>px</source>
<translation type="vanished">pik</translation>
</message>
<message>
<source>Use automatic sizing</source>
<translation type="vanished">Uporabi samodejno prilagajanje velikosti</translation>
</message>
<message>
<source>Panel length &amp;&amp; position</source>
<translation type="vanished">Dolžina in položaj pulta</translation>
</message>
<message>
<source>Left</source>
<translation type="vanished">Levo</translation>
</message>
<message>
<source>Center</source>
<translation type="vanished">Na sredini</translation>
</message>
<message>
<source>Right</source>
<translation type="vanished">Desno</translation>
</message>
<message>
<source>%</source>
<translation type="vanished"> %</translation>
</message>
<message>
<source>Alignment:</source>
<translation type="vanished">Poravnava:</translation>
</message>
<message>
<source>Length:</source>
<translation type="vanished">Dolžina:</translation>
</message>
<message>
<source>Position:</source>
<translation type="vanished">Položaj:</translation>
</message>
<message>
<source>Top of desktop</source>
<translation type="vanished">Vrh namizja</translation>
</message>
<message>
<source>Left of desktop</source>
<translation type="vanished">Leva stran namizja</translation>
</message>
<message>
<source>Right of desktop</source>
<translation type="vanished">Desna stran namizja</translation>
</message>
<message>
<source>Bottom of desktop</source>
<translation type="vanished">Dno namizja</translation>
</message>
<message>
<source>Top of desktop %1</source>
<translation type="vanished">Vrh namizja %1</translation>
</message>
<message>
<source>Left of desktop %1</source>
<translation type="vanished">Leva stran namizja %1</translation>
</message>
<message>
<source>Right of desktop %1</source>
<translation type="vanished">Desna stran namizja %1</translation>
</message>
<message>
<source>Bottom of desktop %1</source>
<translation type="vanished">Dno namizja %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="80"/>
<location filename="../config/configpaneldialog.cpp" line="86"/>
<source>Configure Panel</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConfigPanelWidget</name>
<message>
<location filename="../config/configpaneldialog.ui" line="20"/>
<source>Configure panel</source>
<translation type="unfinished">Nastavitev pulta</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="32"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="41"/>
<source>Size:</source>
<translation type="unfinished">Velikost:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="48"/>
<location filename="../config/configpaneldialog.ui" line="82"/>
<source> px</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="58"/>
<source>Icon size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="65"/>
<source>Length:</source>
<translation type="unfinished">Dolžina:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="110"/>
<source>&lt;p&gt;Negative pixel value sets the panel length to that many pixels less than available screen space.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.g. &quot;Length&quot; set to -100px, screen size is 1000px, then real panel length will be 900 px.&lt;/i&gt;&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="124"/>
<source>%</source>
<translation type="unfinished"> %</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="129"/>
<source>px</source>
<translation type="unfinished">pik</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="140"/>
<source>Rows count:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="172"/>
<source>Alignment &amp;&amp; position</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="182"/>
<location filename="../config/configpaneldialog.cpp" line="234"/>
<source>Left</source>
<translation type="unfinished">Levo</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="187"/>
<location filename="../config/configpaneldialog.cpp" line="235"/>
<location filename="../config/configpaneldialog.cpp" line="241"/>
<source>Center</source>
<translation type="unfinished">Na sredini</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="192"/>
<location filename="../config/configpaneldialog.cpp" line="236"/>
<source>Right</source>
<translation type="unfinished">Desno</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="200"/>
<source>Alignment:</source>
<translation type="unfinished">Poravnava:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="210"/>
<source>Position:</source>
<translation type="unfinished">Položaj:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="217"/>
<source>Auto-hide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="233"/>
<source>Styling</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="239"/>
<source>Custom font color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="246"/>
<source>Custom background image:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="260"/>
<source>Custom background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="351"/>
<source>Opacity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="200"/>
<source>Top of desktop</source>
<translation type="unfinished">Vrh namizja</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="201"/>
<source>Left of desktop</source>
<translation type="unfinished">Leva stran namizja</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="202"/>
<source>Right of desktop</source>
<translation type="unfinished">Desna stran namizja</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="203"/>
<source>Bottom of desktop</source>
<translation type="unfinished">Dno namizja</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="212"/>
<source>Top of desktop %1</source>
<translation type="unfinished">Vrh namizja %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="213"/>
<source>Left of desktop %1</source>
<translation type="unfinished">Leva stran namizja %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="214"/>
<source>Right of desktop %1</source>
<translation type="unfinished">Desna stran namizja %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="215"/>
<source>Bottom of desktop %1</source>
<translation type="unfinished">Dno namizja %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="240"/>
<source>Top</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="242"/>
<source>Bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="397"/>
<location filename="../config/configpaneldialog.cpp" line="411"/>
<source>Pick color</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="431"/>
<source>Images (*.png *.gif *.jpg)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQtPanel</name>
<message>
<location filename="../lxqtpanel.cpp" line="623"/>
<source>Add Panel Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="951"/>
<location filename="../lxqtpanel.cpp" line="970"/>
<source>Panel</source>
<translation>Pult</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="973"/>
<source>Configure Panel...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="978"/>
<source>Add Panel Widgets...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="984"/>
<source>Add Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="991"/>
<source>Remove Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Configure panel...</source>
<translation type="vanished">Nastavitev pulta ...</translation>
</message>
<message>
<source>Add plugins ...</source>
<translation type="vanished">Dodaj vstavke ...</translation>
</message>
</context>
<context>
<name>LxQtPanelPlugin</name>
<message>
<source>Configure</source>
<translation type="vanished">Nastavitev</translation>
</message>
<message>
<source>Move</source>
<translation type="vanished">Premakni</translation>
</message>
<message>
<source>Remove</source>
<translation type="vanished">Odstrani</translation>
</message>
</context>
<context>
<name>LxQtPanelPrivate</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Nastavitev pulta</translation>
</message>
</context>
<context>
<name>Plugin</name>
<message>
<location filename="../plugin.cpp" line="395"/>
<source>Configure &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="400"/>
<source>Move &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="408"/>
<source>Remove &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -1,244 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="sr@latin">
<context>
<name>ConfigPanelDialog</name>
<message>
<location filename="../config/configpaneldialog.cpp" line="80"/>
<location filename="../config/configpaneldialog.cpp" line="86"/>
<source>Configure Panel</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConfigPanelWidget</name>
<message>
<location filename="../config/configpaneldialog.ui" line="20"/>
<source>Configure panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="32"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="41"/>
<source>Size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="48"/>
<location filename="../config/configpaneldialog.ui" line="82"/>
<source> px</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="58"/>
<source>Icon size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="65"/>
<source>Length:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="110"/>
<source>&lt;p&gt;Negative pixel value sets the panel length to that many pixels less than available screen space.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.g. &quot;Length&quot; set to -100px, screen size is 1000px, then real panel length will be 900 px.&lt;/i&gt;&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="124"/>
<source>%</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="129"/>
<source>px</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="140"/>
<source>Rows count:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="172"/>
<source>Alignment &amp;&amp; position</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="182"/>
<location filename="../config/configpaneldialog.cpp" line="234"/>
<source>Left</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="187"/>
<location filename="../config/configpaneldialog.cpp" line="235"/>
<location filename="../config/configpaneldialog.cpp" line="241"/>
<source>Center</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="192"/>
<location filename="../config/configpaneldialog.cpp" line="236"/>
<source>Right</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="200"/>
<source>Alignment:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="210"/>
<source>Position:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="217"/>
<source>Auto-hide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="233"/>
<source>Styling</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="239"/>
<source>Custom font color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="246"/>
<source>Custom background image:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="260"/>
<source>Custom background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="351"/>
<source>Opacity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="200"/>
<source>Top of desktop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="201"/>
<source>Left of desktop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="202"/>
<source>Right of desktop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="203"/>
<source>Bottom of desktop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="212"/>
<source>Top of desktop %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="213"/>
<source>Left of desktop %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="214"/>
<source>Right of desktop %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="215"/>
<source>Bottom of desktop %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="240"/>
<source>Top</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="242"/>
<source>Bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="397"/>
<location filename="../config/configpaneldialog.cpp" line="411"/>
<source>Pick color</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="431"/>
<source>Images (*.png *.gif *.jpg)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQtPanel</name>
<message>
<location filename="../lxqtpanel.cpp" line="623"/>
<source>Add Panel Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="951"/>
<location filename="../lxqtpanel.cpp" line="970"/>
<source>Panel</source>
<translation>Automatsko suspendovanje</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="973"/>
<source>Configure Panel...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="978"/>
<source>Add Panel Widgets...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="984"/>
<source>Add Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="991"/>
<source>Remove Panel</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Plugin</name>
<message>
<location filename="../plugin.cpp" line="395"/>
<source>Configure &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="400"/>
<source>Move &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="408"/>
<source>Remove &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -1,377 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="sr_BA">
<context>
<name>ConfigPanelDialog</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Подешавање панела</translation>
</message>
<message>
<source>%</source>
<translation type="vanished">%</translation>
</message>
<message>
<source>px</source>
<translation type="vanished">px</translation>
</message>
<message>
<source>Left</source>
<translation type="vanished">Лијево</translation>
</message>
<message>
<source>Right</source>
<translation type="vanished">Десно</translation>
</message>
<message>
<source>Center</source>
<translation type="vanished">Центар</translation>
</message>
<message>
<source>Panel size</source>
<translation type="vanished">Величина панела</translation>
</message>
<message>
<source>Size:</source>
<translation type="vanished">Величина:</translation>
</message>
<message>
<source>Use theme size</source>
<translation type="vanished">Величина постављена темом</translation>
</message>
<message>
<source>Panel lenght &amp; position</source>
<translation type="vanished">Дужина и положај панела</translation>
</message>
<message>
<source>Length:</source>
<translation type="vanished">Дужина:</translation>
</message>
<message>
<source>Alignment:</source>
<translation type="vanished">Поравнање:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="80"/>
<location filename="../config/configpaneldialog.cpp" line="86"/>
<source>Configure Panel</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConfigPanelWidget</name>
<message>
<location filename="../config/configpaneldialog.ui" line="20"/>
<source>Configure panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="32"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="41"/>
<source>Size:</source>
<translation type="unfinished">Величина:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="48"/>
<location filename="../config/configpaneldialog.ui" line="82"/>
<source> px</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="58"/>
<source>Icon size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="65"/>
<source>Length:</source>
<translation type="unfinished">Дужина:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="110"/>
<source>&lt;p&gt;Negative pixel value sets the panel length to that many pixels less than available screen space.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.g. &quot;Length&quot; set to -100px, screen size is 1000px, then real panel length will be 900 px.&lt;/i&gt;&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="124"/>
<source>%</source>
<translation type="unfinished">%</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="129"/>
<source>px</source>
<translation type="unfinished">px</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="140"/>
<source>Rows count:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="172"/>
<source>Alignment &amp;&amp; position</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="182"/>
<location filename="../config/configpaneldialog.cpp" line="234"/>
<source>Left</source>
<translation type="unfinished">Лијево</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="187"/>
<location filename="../config/configpaneldialog.cpp" line="235"/>
<location filename="../config/configpaneldialog.cpp" line="241"/>
<source>Center</source>
<translation type="unfinished">Центар</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="192"/>
<location filename="../config/configpaneldialog.cpp" line="236"/>
<source>Right</source>
<translation type="unfinished">Десно</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="200"/>
<source>Alignment:</source>
<translation type="unfinished">Поравнање:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="210"/>
<source>Position:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="217"/>
<source>Auto-hide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="233"/>
<source>Styling</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="239"/>
<source>Custom font color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="246"/>
<source>Custom background image:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="260"/>
<source>Custom background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="351"/>
<source>Opacity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="200"/>
<source>Top of desktop</source>
<translation type="unfinished">врху површи</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="201"/>
<source>Left of desktop</source>
<translation type="unfinished">лијевој страни површи</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="202"/>
<source>Right of desktop</source>
<translation type="unfinished">десној страни површи</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="203"/>
<source>Bottom of desktop</source>
<translation type="unfinished">дну површи</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="212"/>
<source>Top of desktop %1</source>
<translation type="unfinished">врху површи %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="213"/>
<source>Left of desktop %1</source>
<translation type="unfinished">лијевој страни површи %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="214"/>
<source>Right of desktop %1</source>
<translation type="unfinished">десној страни површи %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="215"/>
<source>Bottom of desktop %1</source>
<translation type="unfinished">дну површи %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="240"/>
<source>Top</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="242"/>
<source>Bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="397"/>
<location filename="../config/configpaneldialog.cpp" line="411"/>
<source>Pick color</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="431"/>
<source>Images (*.png *.gif *.jpg)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQtPanel</name>
<message>
<location filename="../lxqtpanel.cpp" line="623"/>
<source>Add Panel Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="951"/>
<location filename="../lxqtpanel.cpp" line="970"/>
<source>Panel</source>
<translation type="unfinished">Панел</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="973"/>
<source>Configure Panel...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="978"/>
<source>Add Panel Widgets...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="984"/>
<source>Add Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="991"/>
<source>Remove Panel</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQtPanelPluginPrivate</name>
<message>
<source>Configure</source>
<translation type="vanished">Подеси</translation>
</message>
<message>
<source>Move</source>
<translation type="vanished">Помјери</translation>
</message>
<message>
<source>Delete</source>
<translation type="vanished">Обриши</translation>
</message>
</context>
<context>
<name>LxQtPanelPrivate</name>
<message>
<source>Panel</source>
<translation type="vanished">Панел</translation>
</message>
<message>
<source>Plugins</source>
<translation type="vanished">Модули</translation>
</message>
<message>
<source>Add plugins ...</source>
<translation type="vanished">Додај модуле...</translation>
</message>
<message>
<source>Move plugin</source>
<translation type="vanished">Помјери модул</translation>
</message>
<message>
<source>Configure plugin</source>
<translation type="vanished">Подеси модул</translation>
</message>
<message>
<source>Delete plugin</source>
<translation type="vanished">Обриши модул</translation>
</message>
<message>
<source>Show this panel at</source>
<translation type="vanished">Прикажи овај панел на</translation>
</message>
<message>
<source>Configure panel</source>
<translation type="vanished">Подеси панел</translation>
</message>
</context>
<context>
<name>Plugin</name>
<message>
<location filename="../plugin.cpp" line="395"/>
<source>Configure &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="400"/>
<source>Move &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="408"/>
<source>Remove &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PositionAction</name>
<message>
<source>Top of desktop</source>
<translation type="vanished">врху површи</translation>
</message>
<message>
<source>Bottom of desktop</source>
<translation type="vanished">дну површи</translation>
</message>
<message>
<source>Left of desktop</source>
<translation type="vanished">лијевој страни површи</translation>
</message>
<message>
<source>Right of desktop</source>
<translation type="vanished">десној страни површи</translation>
</message>
<message>
<source>Top of desktop %1</source>
<translation type="vanished">врху површи %1</translation>
</message>
<message>
<source>Bottom of desktop %1</source>
<translation type="vanished">дну површи %1</translation>
</message>
<message>
<source>Left of desktop %1</source>
<translation type="vanished">лијевој страни површи %1</translation>
</message>
<message>
<source>Right of desktop %1</source>
<translation type="vanished">десној страни површи %1</translation>
</message>
</context>
</TS>

View File

@ -1,338 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="sr_RS">
<context>
<name>ConfigPanelDialog</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Подешавање панела</translation>
</message>
<message>
<source>Panel size</source>
<translation type="vanished">Величина панела</translation>
</message>
<message>
<source>Size:</source>
<translation type="vanished">Величина:</translation>
</message>
<message>
<source>px</source>
<translation type="vanished">px</translation>
</message>
<message>
<source>Left</source>
<translation type="vanished">Лево</translation>
</message>
<message>
<source>Center</source>
<translation type="vanished">Центар</translation>
</message>
<message>
<source>Right</source>
<translation type="vanished">Десно</translation>
</message>
<message>
<source>%</source>
<translation type="vanished">%</translation>
</message>
<message>
<source>Alignment:</source>
<translation type="vanished">Поравнање:</translation>
</message>
<message>
<source>Length:</source>
<translation type="vanished">Дужина:</translation>
</message>
<message>
<source>Top of desktop</source>
<translation type="vanished">врху површи</translation>
</message>
<message>
<source>Left of desktop</source>
<translation type="vanished">левој страни површи</translation>
</message>
<message>
<source>Right of desktop</source>
<translation type="vanished">десној страни површи</translation>
</message>
<message>
<source>Bottom of desktop</source>
<translation type="vanished">дну површи</translation>
</message>
<message>
<source>Top of desktop %1</source>
<translation type="vanished">врху површи %1</translation>
</message>
<message>
<source>Left of desktop %1</source>
<translation type="vanished">левој страни површи %1</translation>
</message>
<message>
<source>Right of desktop %1</source>
<translation type="vanished">десној страни површи %1</translation>
</message>
<message>
<source>Bottom of desktop %1</source>
<translation type="vanished">дну површи %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="80"/>
<location filename="../config/configpaneldialog.cpp" line="86"/>
<source>Configure Panel</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConfigPanelWidget</name>
<message>
<location filename="../config/configpaneldialog.ui" line="20"/>
<source>Configure panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="32"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="41"/>
<source>Size:</source>
<translation type="unfinished">Величина:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="48"/>
<location filename="../config/configpaneldialog.ui" line="82"/>
<source> px</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="58"/>
<source>Icon size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="65"/>
<source>Length:</source>
<translation type="unfinished">Дужина:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="110"/>
<source>&lt;p&gt;Negative pixel value sets the panel length to that many pixels less than available screen space.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.g. &quot;Length&quot; set to -100px, screen size is 1000px, then real panel length will be 900 px.&lt;/i&gt;&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="124"/>
<source>%</source>
<translation type="unfinished">%</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="129"/>
<source>px</source>
<translation type="unfinished">px</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="140"/>
<source>Rows count:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="172"/>
<source>Alignment &amp;&amp; position</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="182"/>
<location filename="../config/configpaneldialog.cpp" line="234"/>
<source>Left</source>
<translation type="unfinished">Лево</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="187"/>
<location filename="../config/configpaneldialog.cpp" line="235"/>
<location filename="../config/configpaneldialog.cpp" line="241"/>
<source>Center</source>
<translation type="unfinished">Центар</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="192"/>
<location filename="../config/configpaneldialog.cpp" line="236"/>
<source>Right</source>
<translation type="unfinished">Десно</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="200"/>
<source>Alignment:</source>
<translation type="unfinished">Поравнање:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="210"/>
<source>Position:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="217"/>
<source>Auto-hide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="233"/>
<source>Styling</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="239"/>
<source>Custom font color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="246"/>
<source>Custom background image:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="260"/>
<source>Custom background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="351"/>
<source>Opacity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="200"/>
<source>Top of desktop</source>
<translation type="unfinished">врху површи</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="201"/>
<source>Left of desktop</source>
<translation type="unfinished">левој страни површи</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="202"/>
<source>Right of desktop</source>
<translation type="unfinished">десној страни површи</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="203"/>
<source>Bottom of desktop</source>
<translation type="unfinished">дну површи</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="212"/>
<source>Top of desktop %1</source>
<translation type="unfinished">врху површи %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="213"/>
<source>Left of desktop %1</source>
<translation type="unfinished">левој страни површи %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="214"/>
<source>Right of desktop %1</source>
<translation type="unfinished">десној страни површи %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="215"/>
<source>Bottom of desktop %1</source>
<translation type="unfinished">дну површи %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="240"/>
<source>Top</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="242"/>
<source>Bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="397"/>
<location filename="../config/configpaneldialog.cpp" line="411"/>
<source>Pick color</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="431"/>
<source>Images (*.png *.gif *.jpg)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQtPanel</name>
<message>
<location filename="../lxqtpanel.cpp" line="623"/>
<source>Add Panel Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="951"/>
<location filename="../lxqtpanel.cpp" line="970"/>
<source>Panel</source>
<translation>Панел</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="973"/>
<source>Configure Panel...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="978"/>
<source>Add Panel Widgets...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="984"/>
<source>Add Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="991"/>
<source>Remove Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Add plugins ...</source>
<translation type="vanished">Додај модуле...</translation>
</message>
</context>
<context>
<name>LxQtPanelPlugin</name>
<message>
<source>Configure</source>
<translation type="vanished">Подеси</translation>
</message>
<message>
<source>Move</source>
<translation type="vanished">Помери</translation>
</message>
</context>
<context>
<name>LxQtPanelPrivate</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Подеси панел</translation>
</message>
</context>
<context>
<name>Plugin</name>
<message>
<location filename="../plugin.cpp" line="395"/>
<source>Configure &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="400"/>
<source>Move &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="408"/>
<source>Remove &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -1,358 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="th_TH">
<context>
<name>ConfigPanelDialog</name>
<message>
<source>Configure panel</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Panel size</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Size:</source>
<translation type="vanished">:</translation>
</message>
<message>
<source>px</source>
<translation type="vanished">px</translation>
</message>
<message>
<source>Use automatic sizing</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Panel length &amp;&amp; position</source>
<translation type="vanished"> &amp;&amp; </translation>
</message>
<message>
<source>Left</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Center</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Right</source>
<translation type="vanished"></translation>
</message>
<message>
<source>%</source>
<translation type="vanished">%</translation>
</message>
<message>
<source>Alignment:</source>
<translation type="vanished">:</translation>
</message>
<message>
<source>Length:</source>
<translation type="vanished">:</translation>
</message>
<message>
<source>Position:</source>
<translation type="vanished">:</translation>
</message>
<message>
<source>Top of desktop</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Left of desktop</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Right of desktop</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Bottom of desktop</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Top of desktop %1</source>
<translation type="vanished"> %1</translation>
</message>
<message>
<source>Left of desktop %1</source>
<translation type="vanished"> %1</translation>
</message>
<message>
<source>Right of desktop %1</source>
<translation type="vanished"> %1</translation>
</message>
<message>
<source>Bottom of desktop %1</source>
<translation type="vanished"> %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="80"/>
<location filename="../config/configpaneldialog.cpp" line="86"/>
<source>Configure Panel</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConfigPanelWidget</name>
<message>
<location filename="../config/configpaneldialog.ui" line="20"/>
<source>Configure panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="32"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="41"/>
<source>Size:</source>
<translation type="unfinished">:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="48"/>
<location filename="../config/configpaneldialog.ui" line="82"/>
<source> px</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="58"/>
<source>Icon size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="65"/>
<source>Length:</source>
<translation type="unfinished">:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="110"/>
<source>&lt;p&gt;Negative pixel value sets the panel length to that many pixels less than available screen space.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.g. &quot;Length&quot; set to -100px, screen size is 1000px, then real panel length will be 900 px.&lt;/i&gt;&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="124"/>
<source>%</source>
<translation type="unfinished">%</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="129"/>
<source>px</source>
<translation type="unfinished">px</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="140"/>
<source>Rows count:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="172"/>
<source>Alignment &amp;&amp; position</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="182"/>
<location filename="../config/configpaneldialog.cpp" line="234"/>
<source>Left</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="187"/>
<location filename="../config/configpaneldialog.cpp" line="235"/>
<location filename="../config/configpaneldialog.cpp" line="241"/>
<source>Center</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="192"/>
<location filename="../config/configpaneldialog.cpp" line="236"/>
<source>Right</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="200"/>
<source>Alignment:</source>
<translation type="unfinished">:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="210"/>
<source>Position:</source>
<translation type="unfinished">:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="217"/>
<source>Auto-hide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="233"/>
<source>Styling</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="239"/>
<source>Custom font color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="246"/>
<source>Custom background image:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="260"/>
<source>Custom background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="351"/>
<source>Opacity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="200"/>
<source>Top of desktop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="201"/>
<source>Left of desktop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="202"/>
<source>Right of desktop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="203"/>
<source>Bottom of desktop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="212"/>
<source>Top of desktop %1</source>
<translation type="unfinished"> %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="213"/>
<source>Left of desktop %1</source>
<translation type="unfinished"> %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="214"/>
<source>Right of desktop %1</source>
<translation type="unfinished"> %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="215"/>
<source>Bottom of desktop %1</source>
<translation type="unfinished"> %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="240"/>
<source>Top</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="242"/>
<source>Bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="397"/>
<location filename="../config/configpaneldialog.cpp" line="411"/>
<source>Pick color</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="431"/>
<source>Images (*.png *.gif *.jpg)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQtPanel</name>
<message>
<location filename="../lxqtpanel.cpp" line="623"/>
<source>Add Panel Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="951"/>
<location filename="../lxqtpanel.cpp" line="970"/>
<source>Panel</source>
<translation></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="973"/>
<source>Configure Panel...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="978"/>
<source>Add Panel Widgets...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="984"/>
<source>Add Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="991"/>
<source>Remove Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Configure panel...</source>
<translation type="vanished">...</translation>
</message>
<message>
<source>Add plugins ...</source>
<translation type="vanished"></translation>
</message>
</context>
<context>
<name>LxQtPanelPlugin</name>
<message>
<source>Configure</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Move</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Remove</source>
<translation type="vanished"></translation>
</message>
</context>
<context>
<name>LxQtPanelPrivate</name>
<message>
<source>Configure panel</source>
<translation type="vanished"></translation>
</message>
</context>
<context>
<name>Plugin</name>
<message>
<location filename="../plugin.cpp" line="395"/>
<source>Configure &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="400"/>
<source>Move &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="408"/>
<source>Remove &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -1,358 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="tr">
<context>
<name>ConfigPanelDialog</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Paneli yapılandır</translation>
</message>
<message>
<source>Panel size</source>
<translation type="vanished">Panel boyutu</translation>
</message>
<message>
<source>Size:</source>
<translation type="vanished">Boyut:</translation>
</message>
<message>
<source>px</source>
<translation type="vanished">px</translation>
</message>
<message>
<source>Use automatic sizing</source>
<translation type="vanished">Otomatik boyutlandırmayı kullan</translation>
</message>
<message>
<source>Panel length &amp;&amp; position</source>
<translation type="vanished">Panel uzunluğu &amp;&amp; konumu</translation>
</message>
<message>
<source>Left</source>
<translation type="vanished">Sol</translation>
</message>
<message>
<source>Center</source>
<translation type="vanished">Merkez</translation>
</message>
<message>
<source>Right</source>
<translation type="vanished">Sağ</translation>
</message>
<message>
<source>%</source>
<translation type="vanished">%</translation>
</message>
<message>
<source>Alignment:</source>
<translation type="vanished">Yerleştirme:</translation>
</message>
<message>
<source>Length:</source>
<translation type="vanished">Uzunluk:</translation>
</message>
<message>
<source>Position:</source>
<translation type="vanished">Konum:</translation>
</message>
<message>
<source>Top of desktop</source>
<translation type="vanished">Masasüstünün üst kısmı</translation>
</message>
<message>
<source>Left of desktop</source>
<translation type="vanished">Masaüstünün sol kısmı</translation>
</message>
<message>
<source>Right of desktop</source>
<translation type="vanished">Masaüstünün sağ kısmı</translation>
</message>
<message>
<source>Bottom of desktop</source>
<translation type="vanished">Masaüstünün alt kısmı</translation>
</message>
<message>
<source>Top of desktop %1</source>
<translation type="vanished">Masaüstünün üst kısmı %1</translation>
</message>
<message>
<source>Left of desktop %1</source>
<translation type="vanished">Masaüstünün sol kısmı %1</translation>
</message>
<message>
<source>Right of desktop %1</source>
<translation type="vanished">Masaüstünün sağ kısmı %1</translation>
</message>
<message>
<source>Bottom of desktop %1</source>
<translation type="vanished">Masaüstünün alt kısmı %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="80"/>
<location filename="../config/configpaneldialog.cpp" line="86"/>
<source>Configure Panel</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConfigPanelWidget</name>
<message>
<location filename="../config/configpaneldialog.ui" line="20"/>
<source>Configure panel</source>
<translation type="unfinished">Paneli yapılandır</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="32"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="41"/>
<source>Size:</source>
<translation type="unfinished">Boyut:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="48"/>
<location filename="../config/configpaneldialog.ui" line="82"/>
<source> px</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="58"/>
<source>Icon size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="65"/>
<source>Length:</source>
<translation type="unfinished">Uzunluk:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="110"/>
<source>&lt;p&gt;Negative pixel value sets the panel length to that many pixels less than available screen space.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.g. &quot;Length&quot; set to -100px, screen size is 1000px, then real panel length will be 900 px.&lt;/i&gt;&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="124"/>
<source>%</source>
<translation type="unfinished">%</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="129"/>
<source>px</source>
<translation type="unfinished">px</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="140"/>
<source>Rows count:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="172"/>
<source>Alignment &amp;&amp; position</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="182"/>
<location filename="../config/configpaneldialog.cpp" line="234"/>
<source>Left</source>
<translation type="unfinished">Sol</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="187"/>
<location filename="../config/configpaneldialog.cpp" line="235"/>
<location filename="../config/configpaneldialog.cpp" line="241"/>
<source>Center</source>
<translation type="unfinished">Merkez</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="192"/>
<location filename="../config/configpaneldialog.cpp" line="236"/>
<source>Right</source>
<translation type="unfinished">Sağ</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="200"/>
<source>Alignment:</source>
<translation type="unfinished">Yerleştirme:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="210"/>
<source>Position:</source>
<translation type="unfinished">Konum:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="217"/>
<source>Auto-hide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="233"/>
<source>Styling</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="239"/>
<source>Custom font color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="246"/>
<source>Custom background image:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="260"/>
<source>Custom background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="351"/>
<source>Opacity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="200"/>
<source>Top of desktop</source>
<translation type="unfinished">Masasüstünün üst kısmı</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="201"/>
<source>Left of desktop</source>
<translation type="unfinished">Masaüstünün sol kısmı</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="202"/>
<source>Right of desktop</source>
<translation type="unfinished">Masaüstünün sağ kısmı</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="203"/>
<source>Bottom of desktop</source>
<translation type="unfinished">Masaüstünün alt kısmı</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="212"/>
<source>Top of desktop %1</source>
<translation type="unfinished">Masaüstünün üst kısmı %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="213"/>
<source>Left of desktop %1</source>
<translation type="unfinished">Masaüstünün sol kısmı %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="214"/>
<source>Right of desktop %1</source>
<translation type="unfinished">Masaüstünün sağ kısmı %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="215"/>
<source>Bottom of desktop %1</source>
<translation type="unfinished">Masaüstünün alt kısmı %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="240"/>
<source>Top</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="242"/>
<source>Bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="397"/>
<location filename="../config/configpaneldialog.cpp" line="411"/>
<source>Pick color</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="431"/>
<source>Images (*.png *.gif *.jpg)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQtPanel</name>
<message>
<location filename="../lxqtpanel.cpp" line="623"/>
<source>Add Panel Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="951"/>
<location filename="../lxqtpanel.cpp" line="970"/>
<source>Panel</source>
<translation>Not Defteri</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="973"/>
<source>Configure Panel...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="978"/>
<source>Add Panel Widgets...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="984"/>
<source>Add Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="991"/>
<source>Remove Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Configure panel...</source>
<translation type="vanished">Paneli yapılandır...</translation>
</message>
<message>
<source>Add plugins ...</source>
<translation type="vanished">Eklenti ekle...</translation>
</message>
</context>
<context>
<name>LxQtPanelPlugin</name>
<message>
<source>Configure</source>
<translation type="vanished">Yapılandır</translation>
</message>
<message>
<source>Move</source>
<translation type="vanished">Taşı</translation>
</message>
<message>
<source>Remove</source>
<translation type="vanished">Sil</translation>
</message>
</context>
<context>
<name>LxQtPanelPrivate</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Paneli yapılandır</translation>
</message>
</context>
<context>
<name>Plugin</name>
<message>
<location filename="../plugin.cpp" line="395"/>
<source>Configure &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="400"/>
<source>Move &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="408"/>
<source>Remove &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -1,358 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="uk">
<context>
<name>ConfigPanelDialog</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Налаштувати панель</translation>
</message>
<message>
<source>Panel size</source>
<translation type="vanished">Розмір панелі</translation>
</message>
<message>
<source>Size:</source>
<translation type="vanished">Розмір:</translation>
</message>
<message>
<source>px</source>
<translation type="vanished">px</translation>
</message>
<message>
<source>Use automatic sizing</source>
<translation type="vanished">Використовувати автоматичний розмір</translation>
</message>
<message>
<source>Panel length &amp;&amp; position</source>
<translation type="vanished">Довжина та місце панелі</translation>
</message>
<message>
<source>Left</source>
<translation type="vanished">Зліва</translation>
</message>
<message>
<source>Center</source>
<translation type="vanished">Посередині</translation>
</message>
<message>
<source>Right</source>
<translation type="vanished">Справа</translation>
</message>
<message>
<source>%</source>
<translation type="vanished">%</translation>
</message>
<message>
<source>Alignment:</source>
<translation type="vanished">Вирівнювання:</translation>
</message>
<message>
<source>Length:</source>
<translation type="vanished">Довжина:</translation>
</message>
<message>
<source>Position:</source>
<translation type="vanished">Місце:</translation>
</message>
<message>
<source>Top of desktop</source>
<translation type="vanished">Згори стільниці</translation>
</message>
<message>
<source>Left of desktop</source>
<translation type="vanished">Зліва стільниці</translation>
</message>
<message>
<source>Right of desktop</source>
<translation type="vanished">Справа стільниці</translation>
</message>
<message>
<source>Bottom of desktop</source>
<translation type="vanished">Знизу стільниці</translation>
</message>
<message>
<source>Top of desktop %1</source>
<translation type="vanished">Згори стільниці %1</translation>
</message>
<message>
<source>Left of desktop %1</source>
<translation type="vanished">Зліва стільниці %1</translation>
</message>
<message>
<source>Right of desktop %1</source>
<translation type="vanished">Справа стільниці %1</translation>
</message>
<message>
<source>Bottom of desktop %1</source>
<translation type="vanished">Знизу стільниці %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="80"/>
<location filename="../config/configpaneldialog.cpp" line="86"/>
<source>Configure Panel</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConfigPanelWidget</name>
<message>
<location filename="../config/configpaneldialog.ui" line="20"/>
<source>Configure panel</source>
<translation type="unfinished">Налаштувати панель</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="32"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="41"/>
<source>Size:</source>
<translation type="unfinished">Розмір:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="48"/>
<location filename="../config/configpaneldialog.ui" line="82"/>
<source> px</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="58"/>
<source>Icon size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="65"/>
<source>Length:</source>
<translation type="unfinished">Довжина:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="110"/>
<source>&lt;p&gt;Negative pixel value sets the panel length to that many pixels less than available screen space.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.g. &quot;Length&quot; set to -100px, screen size is 1000px, then real panel length will be 900 px.&lt;/i&gt;&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="124"/>
<source>%</source>
<translation type="unfinished">%</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="129"/>
<source>px</source>
<translation type="unfinished">px</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="140"/>
<source>Rows count:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="172"/>
<source>Alignment &amp;&amp; position</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="182"/>
<location filename="../config/configpaneldialog.cpp" line="234"/>
<source>Left</source>
<translation type="unfinished">Зліва</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="187"/>
<location filename="../config/configpaneldialog.cpp" line="235"/>
<location filename="../config/configpaneldialog.cpp" line="241"/>
<source>Center</source>
<translation type="unfinished">Посередині</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="192"/>
<location filename="../config/configpaneldialog.cpp" line="236"/>
<source>Right</source>
<translation type="unfinished">Справа</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="200"/>
<source>Alignment:</source>
<translation type="unfinished">Вирівнювання:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="210"/>
<source>Position:</source>
<translation type="unfinished">Місце:</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="217"/>
<source>Auto-hide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="233"/>
<source>Styling</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="239"/>
<source>Custom font color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="246"/>
<source>Custom background image:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="260"/>
<source>Custom background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="351"/>
<source>Opacity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="200"/>
<source>Top of desktop</source>
<translation type="unfinished">Згори стільниці</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="201"/>
<source>Left of desktop</source>
<translation type="unfinished">Зліва стільниці</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="202"/>
<source>Right of desktop</source>
<translation type="unfinished">Справа стільниці</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="203"/>
<source>Bottom of desktop</source>
<translation type="unfinished">Знизу стільниці</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="212"/>
<source>Top of desktop %1</source>
<translation type="unfinished">Згори стільниці %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="213"/>
<source>Left of desktop %1</source>
<translation type="unfinished">Зліва стільниці %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="214"/>
<source>Right of desktop %1</source>
<translation type="unfinished">Справа стільниці %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="215"/>
<source>Bottom of desktop %1</source>
<translation type="unfinished">Знизу стільниці %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="240"/>
<source>Top</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="242"/>
<source>Bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="397"/>
<location filename="../config/configpaneldialog.cpp" line="411"/>
<source>Pick color</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="431"/>
<source>Images (*.png *.gif *.jpg)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQtPanel</name>
<message>
<location filename="../lxqtpanel.cpp" line="623"/>
<source>Add Panel Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="951"/>
<location filename="../lxqtpanel.cpp" line="970"/>
<source>Panel</source>
<translation>Панель</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="973"/>
<source>Configure Panel...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="978"/>
<source>Add Panel Widgets...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="984"/>
<source>Add Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="991"/>
<source>Remove Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Configure panel...</source>
<translation type="vanished">Налаштувати панель...</translation>
</message>
<message>
<source>Add plugins ...</source>
<translation type="vanished">Додати плаґіни...</translation>
</message>
</context>
<context>
<name>LxQtPanelPlugin</name>
<message>
<source>Configure</source>
<translation type="vanished">Налаштувати</translation>
</message>
<message>
<source>Move</source>
<translation type="vanished">Пересунути</translation>
</message>
<message>
<source>Remove</source>
<translation type="vanished">Вилучити</translation>
</message>
</context>
<context>
<name>LxQtPanelPrivate</name>
<message>
<source>Configure panel</source>
<translation type="vanished">Налаштувати панель</translation>
</message>
</context>
<context>
<name>Plugin</name>
<message>
<location filename="../plugin.cpp" line="395"/>
<source>Configure &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="400"/>
<source>Move &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="408"/>
<source>Remove &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -1,358 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="zh_CN">
<context>
<name>ConfigPanelDialog</name>
<message>
<source>Configure panel</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Panel size</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Size:</source>
<translation type="vanished"></translation>
</message>
<message>
<source>px</source>
<translation type="vanished">px</translation>
</message>
<message>
<source>Use automatic sizing</source>
<translation type="vanished">使</translation>
</message>
<message>
<source>Panel length &amp;&amp; position</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Left</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Center</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Right</source>
<translation type="vanished"></translation>
</message>
<message>
<source>%</source>
<translation type="vanished">%</translation>
</message>
<message>
<source>Alignment:</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Length:</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Position:</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Top of desktop</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Left of desktop</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Right of desktop</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Bottom of desktop</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Top of desktop %1</source>
<translation type="vanished"> %1</translation>
</message>
<message>
<source>Left of desktop %1</source>
<translation type="vanished"> %1</translation>
</message>
<message>
<source>Right of desktop %1</source>
<translation type="vanished"> %1</translation>
</message>
<message>
<source>Bottom of desktop %1</source>
<translation type="vanished"> %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="80"/>
<location filename="../config/configpaneldialog.cpp" line="86"/>
<source>Configure Panel</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConfigPanelWidget</name>
<message>
<location filename="../config/configpaneldialog.ui" line="20"/>
<source>Configure panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="32"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="41"/>
<source>Size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="48"/>
<location filename="../config/configpaneldialog.ui" line="82"/>
<source> px</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="58"/>
<source>Icon size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="65"/>
<source>Length:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="110"/>
<source>&lt;p&gt;Negative pixel value sets the panel length to that many pixels less than available screen space.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.g. &quot;Length&quot; set to -100px, screen size is 1000px, then real panel length will be 900 px.&lt;/i&gt;&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="124"/>
<source>%</source>
<translation type="unfinished">%</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="129"/>
<source>px</source>
<translation type="unfinished">px</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="140"/>
<source>Rows count:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="172"/>
<source>Alignment &amp;&amp; position</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="182"/>
<location filename="../config/configpaneldialog.cpp" line="234"/>
<source>Left</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="187"/>
<location filename="../config/configpaneldialog.cpp" line="235"/>
<location filename="../config/configpaneldialog.cpp" line="241"/>
<source>Center</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="192"/>
<location filename="../config/configpaneldialog.cpp" line="236"/>
<source>Right</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="200"/>
<source>Alignment:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="210"/>
<source>Position:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="217"/>
<source>Auto-hide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="233"/>
<source>Styling</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="239"/>
<source>Custom font color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="246"/>
<source>Custom background image:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="260"/>
<source>Custom background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="351"/>
<source>Opacity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="200"/>
<source>Top of desktop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="201"/>
<source>Left of desktop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="202"/>
<source>Right of desktop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="203"/>
<source>Bottom of desktop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="212"/>
<source>Top of desktop %1</source>
<translation type="unfinished"> %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="213"/>
<source>Left of desktop %1</source>
<translation type="unfinished"> %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="214"/>
<source>Right of desktop %1</source>
<translation type="unfinished"> %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="215"/>
<source>Bottom of desktop %1</source>
<translation type="unfinished"> %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="240"/>
<source>Top</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="242"/>
<source>Bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="397"/>
<location filename="../config/configpaneldialog.cpp" line="411"/>
<source>Pick color</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="431"/>
<source>Images (*.png *.gif *.jpg)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQtPanel</name>
<message>
<location filename="../lxqtpanel.cpp" line="623"/>
<source>Add Panel Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="951"/>
<location filename="../lxqtpanel.cpp" line="970"/>
<source>Panel</source>
<translation>qxkb</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="973"/>
<source>Configure Panel...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="978"/>
<source>Add Panel Widgets...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="984"/>
<source>Add Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="991"/>
<source>Remove Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Configure panel...</source>
<translation type="vanished">...</translation>
</message>
<message>
<source>Add plugins ...</source>
<translation type="vanished"> ...</translation>
</message>
</context>
<context>
<name>LxQtPanelPlugin</name>
<message>
<source>Configure</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Move</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Remove</source>
<translation type="vanished"></translation>
</message>
</context>
<context>
<name>LxQtPanelPrivate</name>
<message>
<source>Configure panel</source>
<translation type="vanished"></translation>
</message>
</context>
<context>
<name>Plugin</name>
<message>
<location filename="../plugin.cpp" line="395"/>
<source>Configure &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="400"/>
<source>Move &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="408"/>
<source>Remove &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -1,358 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="zh_TW">
<context>
<name>ConfigPanelDialog</name>
<message>
<source>Configure panel</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Panel size</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Size:</source>
<translation type="vanished"></translation>
</message>
<message>
<source>px</source>
<translation type="vanished">px</translation>
</message>
<message>
<source>Use automatic sizing</source>
<translation type="vanished">調</translation>
</message>
<message>
<source>Panel length &amp;&amp; position</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Left</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Center</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Right</source>
<translation type="vanished"></translation>
</message>
<message>
<source>%</source>
<translation type="vanished">%</translation>
</message>
<message>
<source>Alignment:</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Length:</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Position:</source>
<translation type="vanished"> : </translation>
</message>
<message>
<source>Top of desktop</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Left of desktop</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Right of desktop</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Bottom of desktop</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Top of desktop %1</source>
<translation type="vanished"> %1</translation>
</message>
<message>
<source>Left of desktop %1</source>
<translation type="vanished"> %1</translation>
</message>
<message>
<source>Right of desktop %1</source>
<translation type="vanished"> %1</translation>
</message>
<message>
<source>Bottom of desktop %1</source>
<translation type="vanished"> %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="80"/>
<location filename="../config/configpaneldialog.cpp" line="86"/>
<source>Configure Panel</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ConfigPanelWidget</name>
<message>
<location filename="../config/configpaneldialog.ui" line="20"/>
<source>Configure panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="32"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="41"/>
<source>Size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="48"/>
<location filename="../config/configpaneldialog.ui" line="82"/>
<source> px</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="58"/>
<source>Icon size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="65"/>
<source>Length:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="110"/>
<source>&lt;p&gt;Negative pixel value sets the panel length to that many pixels less than available screen space.&lt;/p&gt;&lt;p/&gt;&lt;p&gt;&lt;i&gt;E.g. &quot;Length&quot; set to -100px, screen size is 1000px, then real panel length will be 900 px.&lt;/i&gt;&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="124"/>
<source>%</source>
<translation type="unfinished">%</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="129"/>
<source>px</source>
<translation type="unfinished">px</translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="140"/>
<source>Rows count:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="172"/>
<source>Alignment &amp;&amp; position</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="182"/>
<location filename="../config/configpaneldialog.cpp" line="234"/>
<source>Left</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="187"/>
<location filename="../config/configpaneldialog.cpp" line="235"/>
<location filename="../config/configpaneldialog.cpp" line="241"/>
<source>Center</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="192"/>
<location filename="../config/configpaneldialog.cpp" line="236"/>
<source>Right</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="200"/>
<source>Alignment:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="210"/>
<source>Position:</source>
<translation type="unfinished"> : </translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="217"/>
<source>Auto-hide</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="233"/>
<source>Styling</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="239"/>
<source>Custom font color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="246"/>
<source>Custom background image:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="260"/>
<source>Custom background color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.ui" line="351"/>
<source>Opacity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="200"/>
<source>Top of desktop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="201"/>
<source>Left of desktop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="202"/>
<source>Right of desktop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="203"/>
<source>Bottom of desktop</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="212"/>
<source>Top of desktop %1</source>
<translation type="unfinished"> %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="213"/>
<source>Left of desktop %1</source>
<translation type="unfinished"> %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="214"/>
<source>Right of desktop %1</source>
<translation type="unfinished"> %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="215"/>
<source>Bottom of desktop %1</source>
<translation type="unfinished"> %1</translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="240"/>
<source>Top</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="242"/>
<source>Bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="397"/>
<location filename="../config/configpaneldialog.cpp" line="411"/>
<source>Pick color</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../config/configpaneldialog.cpp" line="431"/>
<source>Images (*.png *.gif *.jpg)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQtPanel</name>
<message>
<location filename="../lxqtpanel.cpp" line="623"/>
<source>Add Panel Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="951"/>
<location filename="../lxqtpanel.cpp" line="970"/>
<source>Panel</source>
<translation>LxQt滑鼠設定</translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="973"/>
<source>Configure Panel...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="978"/>
<source>Add Panel Widgets...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="984"/>
<source>Add Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtpanel.cpp" line="991"/>
<source>Remove Panel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Configure panel...</source>
<translation type="vanished">...</translation>
</message>
<message>
<source>Add plugins ...</source>
<translation type="vanished">...</translation>
</message>
</context>
<context>
<name>LxQtPanelPlugin</name>
<message>
<source>Configure</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Move</source>
<translation type="vanished"></translation>
</message>
<message>
<source>Remove</source>
<translation type="vanished"></translation>
</message>
</context>
<context>
<name>LxQtPanelPrivate</name>
<message>
<source>Configure panel</source>
<translation type="vanished"></translation>
</message>
</context>
<context>
<name>Plugin</name>
<message>
<location filename="../plugin.cpp" line="395"/>
<source>Configure &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="400"/>
<source>Move &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../plugin.cpp" line="408"/>
<source>Remove &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

65
panel/windownotifier.cpp Normal file
View File

@ -0,0 +1,65 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://lxqt.org
*
* Copyright: 2015 LXQt team
* Authors:
* Palo Kisa <palo.kisa@gmail.com>
*
* This program or 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
*
* END_COMMON_COPYRIGHT_HEADER */
#include "windownotifier.h"
#include <QWidget>
#include <QEvent>
void WindowNotifier::observeWindow(QWidget * w)
{
//installing the same filter object multiple times doesn't harm
w->installEventFilter(this);
}
bool WindowNotifier::eventFilter(QObject * watched, QEvent * event)
{
QWidget * widget = qobject_cast<QWidget *>(watched); //we're observing only QWidgetw
auto it = std::lower_bound(mShownWindows.begin(), mShownWindows.end(), widget);
switch (event->type())
{
case QEvent::Close:
watched->removeEventFilter(this);
//no break
case QEvent::Hide:
Q_ASSERT(mShownWindows.end() != it);
mShownWindows.erase(it);
if (mShownWindows.isEmpty())
emit lastHidden();
break;
case QEvent::Show:
{
const bool first_shown = mShownWindows.isEmpty();
mShownWindows.insert(it, widget); //we keep the mShownWindows sorted
if (first_shown)
emit firstShown();
}
default:
break;
}
return false;
}

53
panel/windownotifier.h Normal file
View File

@ -0,0 +1,53 @@
/* BEGIN_COMMON_COPYRIGHT_HEADER
* (c)LGPL2+
*
* LXQt - a lightweight, Qt based, desktop toolset
* http://lxqt.org
*
* Copyright: 2015 LXQt team
* Authors:
* Palo Kisa <palo.kisa@gmail.com>
*
* This program or 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
*
* END_COMMON_COPYRIGHT_HEADER */
#if !defined(WINDOWNOTIFIER_H)
#define WINDOWNOTIFIER_H
#include <QObject>
class QWidget;
class WindowNotifier : public QObject
{
Q_OBJECT
public:
using QObject::QObject;
void observeWindow(QWidget * w);
inline bool isAnyWindowShown() const { return !mShownWindows.isEmpty(); }
virtual bool eventFilter(QObject * watched, QEvent * event) override;
signals:
void lastHidden();
void firstShown();
private:
QList<QWidget *> mShownWindows; //!< known shown windows (sorted)
};
#endif

View File

@ -30,7 +30,7 @@
#include <QEvent> #include <QEvent>
CalendarPopup::CalendarPopup(QWidget *parent): CalendarPopup::CalendarPopup(QWidget *parent):
QDialog(parent, Qt::Dialog | Qt::WindowStaysOnTopHint | Qt::CustomizeWindowHint | Qt::Popup | Qt::X11BypassWindowManagerHint) QDialog(parent, Qt::Window | Qt::WindowStaysOnTopHint | Qt::CustomizeWindowHint | Qt::Popup | Qt::X11BypassWindowManagerHint)
{ {
setLayout(new QHBoxLayout(this)); setLayout(new QHBoxLayout(this));
layout()->setMargin(1); layout()->setMargin(1);
@ -51,14 +51,6 @@ void CalendarPopup::show()
QDialog::show(); QDialog::show();
} }
bool CalendarPopup::event(QEvent *event)
{
if (event->type() == QEvent::WindowDeactivate)
hide();
return QDialog::event(event);
}
void CalendarPopup::setFirstDayOfWeek(Qt::DayOfWeek wday) void CalendarPopup::setFirstDayOfWeek(Qt::DayOfWeek wday)
{ {
cal->setFirstDayOfWeek(wday); cal->setFirstDayOfWeek(wday);

View File

@ -42,9 +42,6 @@ public:
void show(); void show();
protected:
virtual bool event(QEvent* );
private: private:
QCalendarWidget *cal; QCalendarWidget *cal;
}; };

View File

@ -47,7 +47,7 @@
/** /**
* @file lxqtclock.cpp * @file lxqtclock.cpp
* @brief implements LxQtclock and LxQtclockgui * @brief implements LXQtclock and LXQtclockgui
* @author Christopher "VdoP" Regali * @author Christopher "VdoP" Regali
* @author Kuzma Shapran * @author Kuzma Shapran
*/ */
@ -75,15 +75,15 @@ public:
/** /**
* @brief constructor * @brief constructor
*/ */
LxQtClock::LxQtClock(const ILxQtPanelPluginStartupInfo &startupInfo): LXQtClock::LXQtClock(const ILXQtPanelPluginStartupInfo &startupInfo):
QObject(), QObject(),
ILxQtPanelPlugin(startupInfo), ILXQtPanelPlugin(startupInfo),
mAutoRotate(true), mAutoRotate(true),
mTextStyle{new DownscaleFontStyle}, mTextStyle{new DownscaleFontStyle},
mCurrentCharCount(0) mCurrentCharCount(0)
{ {
mMainWidget = new QWidget(); mMainWidget = new QWidget();
mRotatedWidget = new LxQt::RotatedWidget(*(new QWidget()), mMainWidget); mRotatedWidget = new LXQt::RotatedWidget(*(new QWidget()), mMainWidget);
mContent = mRotatedWidget->content(); mContent = mRotatedWidget->content();
mContent->setStyle(mTextStyle.data()); mContent->setStyle(mTextStyle.data());
mTimeLabel = new QLabel(mContent); mTimeLabel = new QLabel(mContent);
@ -121,12 +121,12 @@ LxQtClock::LxQtClock(const ILxQtPanelPluginStartupInfo &startupInfo):
/** /**
* @brief destructor * @brief destructor
*/ */
LxQtClock::~LxQtClock() LXQtClock::~LXQtClock()
{ {
delete mMainWidget; delete mMainWidget;
} }
QDateTime LxQtClock::currentDateTime() QDateTime LXQtClock::currentDateTime()
{ {
return QDateTime(mUseUTC ? QDateTime::currentDateTimeUtc() : QDateTime::currentDateTime()); return QDateTime(mUseUTC ? QDateTime::currentDateTimeUtc() : QDateTime::currentDateTime());
} }
@ -135,7 +135,7 @@ QDateTime LxQtClock::currentDateTime()
* @brief updates the time * @brief updates the time
* Color and font settings can be configured in Qt CSS * Color and font settings can be configured in Qt CSS
*/ */
void LxQtClock::updateTime() void LXQtClock::updateTime()
{ {
//XXX: do we need this with PreciseTimer ? //XXX: do we need this with PreciseTimer ?
if (currentDateTime().time().msec() > 500) if (currentDateTime().time().msec() > 500)
@ -144,7 +144,7 @@ void LxQtClock::updateTime()
showTime(); showTime();
} }
void LxQtClock::showTime() void LXQtClock::showTime()
{ {
QDateTime now{currentDateTime()}; QDateTime now{currentDateTime()};
int new_char_count; int new_char_count;
@ -163,6 +163,10 @@ void LxQtClock::showTime()
mTimeLabel->setText(new_time); mTimeLabel->setText(new_time);
} }
//Note: if transformation (custom rendering) is enabled we need the explicit update
//(update doesn't cause superfluous paint events)
mRotatedWidget->update();
if (mCurrentCharCount != new_char_count) if (mCurrentCharCount != new_char_count)
{ {
mCurrentCharCount = new_char_count; mCurrentCharCount = new_char_count;
@ -170,7 +174,7 @@ void LxQtClock::showTime()
} }
} }
void LxQtClock::restartTimer() void LXQtClock::restartTimer()
{ {
if (mClockTimer->isActive()) if (mClockTimer->isActive())
mClockTimer->stop(); mClockTimer->stop();
@ -181,7 +185,7 @@ void LxQtClock::restartTimer()
QTimer::singleShot(delay, Qt::PreciseTimer, this, SLOT(updateTime())); QTimer::singleShot(delay, Qt::PreciseTimer, this, SLOT(updateTime()));
} }
void LxQtClock::settingsChanged() void LXQtClock::settingsChanged()
{ {
mFirstDayOfWeek = settings()->value("firstDayOfWeek", -1).toInt(); mFirstDayOfWeek = settings()->value("firstDayOfWeek", -1).toInt();
if (-1 == mFirstDayOfWeek) if (-1 == mFirstDayOfWeek)
@ -227,7 +231,7 @@ void LxQtClock::settingsChanged()
} }
} }
void LxQtClock::realign() void LXQtClock::realign()
{ {
QSize size{QWIDGETSIZE_MAX, QWIDGETSIZE_MAX}; QSize size{QWIDGETSIZE_MAX, QWIDGETSIZE_MAX};
Qt::Corner origin = Qt::TopLeftCorner; Qt::Corner origin = Qt::TopLeftCorner;
@ -235,16 +239,16 @@ void LxQtClock::realign()
{ {
switch (panel()->position()) switch (panel()->position())
{ {
case ILxQtPanel::PositionTop: case ILXQtPanel::PositionTop:
case ILxQtPanel::PositionBottom: case ILXQtPanel::PositionBottom:
origin = Qt::TopLeftCorner; origin = Qt::TopLeftCorner;
break; break;
case ILxQtPanel::PositionLeft: case ILXQtPanel::PositionLeft:
origin = Qt::BottomLeftCorner; origin = Qt::BottomLeftCorner;
break; break;
case ILxQtPanel::PositionRight: case ILXQtPanel::PositionRight:
origin = Qt::TopRightCorner; origin = Qt::TopRightCorner;
break; break;
} }
@ -277,15 +281,16 @@ void LxQtClock::realign()
} }
} }
void LxQtClock::activated(ActivationReason reason) void LXQtClock::activated(ActivationReason reason)
{ {
if (reason != ILxQtPanelPlugin::Trigger) if (reason != ILXQtPanelPlugin::Trigger)
return; return;
if (!mCalendarPopup->isVisible()) if (!mCalendarPopup->isVisible())
{ {
QRect pos = calculatePopupWindowPos(mCalendarPopup->size()); QRect pos = calculatePopupWindowPos(mCalendarPopup->size());
mCalendarPopup->move(pos.topLeft()); mCalendarPopup->move(pos.topLeft());
willShowWindow(mCalendarPopup);
mCalendarPopup->show(); mCalendarPopup->show();
} }
else else
@ -294,12 +299,12 @@ void LxQtClock::activated(ActivationReason reason)
} }
} }
QDialog * LxQtClock::configureDialog() QDialog * LXQtClock::configureDialog()
{ {
return new LxQtClockConfiguration(*settings()); return new LXQtClockConfiguration(settings());
} }
bool LxQtClock::eventFilter(QObject *watched, QEvent *event) bool LXQtClock::eventFilter(QObject *watched, QEvent *event)
{ {
if (watched == mMainWidget) if (watched == mMainWidget)
{ {

View File

@ -43,12 +43,12 @@ class QDialog;
class QTimer; class QTimer;
class QProxyStyle; class QProxyStyle;
class LxQtClock : public QObject, public ILxQtPanelPlugin class LXQtClock : public QObject, public ILXQtPanelPlugin
{ {
Q_OBJECT Q_OBJECT
public: public:
LxQtClock(const ILxQtPanelPluginStartupInfo &startupInfo); LXQtClock(const ILXQtPanelPluginStartupInfo &startupInfo);
~LxQtClock(); ~LXQtClock();
virtual Flags flags() const { return PreferRightAlignment | HaveConfigDialog ; } virtual Flags flags() const { return PreferRightAlignment | HaveConfigDialog ; }
QString themeId() const { return "Clock"; } QString themeId() const { return "Clock"; }
@ -71,7 +71,7 @@ private:
QTimer* mClockTimer; QTimer* mClockTimer;
QWidget *mMainWidget; QWidget *mMainWidget;
QWidget *mContent; QWidget *mContent;
LxQt::RotatedWidget* mRotatedWidget; LXQt::RotatedWidget* mRotatedWidget;
QLabel* mTimeLabel; QLabel* mTimeLabel;
QLabel* mDateLabel; QLabel* mDateLabel;
QString mClockFormat; QString mClockFormat;
@ -92,13 +92,13 @@ private:
}; };
class LxQtClockPluginLibrary: public QObject, public ILxQtPanelPluginLibrary class LXQtClockPluginLibrary: public QObject, public ILXQtPanelPluginLibrary
{ {
Q_OBJECT Q_OBJECT
// Q_PLUGIN_METADATA(IID "lxde-qt.org/Panel/PluginInterface/3.0") // Q_PLUGIN_METADATA(IID "lxde-qt.org/Panel/PluginInterface/3.0")
Q_INTERFACES(ILxQtPanelPluginLibrary) Q_INTERFACES(ILXQtPanelPluginLibrary)
public: public:
ILxQtPanelPlugin *instance(const ILxQtPanelPluginStartupInfo &startupInfo) const { return new LxQtClock(startupInfo);} ILXQtPanelPlugin *instance(const ILXQtPanelPluginStartupInfo &startupInfo) const { return new LXQtClock(startupInfo);}
}; };

View File

@ -33,7 +33,6 @@
#include "lxqtclockconfiguration.h" #include "lxqtclockconfiguration.h"
#include "ui_lxqtclockconfiguration.h" #include "ui_lxqtclockconfiguration.h"
namespace namespace
{ {
class FirstDayCombo : public QStandardItemModel class FirstDayCombo : public QStandardItemModel
@ -75,11 +74,9 @@ namespace
}; };
} }
LxQtClockConfiguration::LxQtClockConfiguration(QSettings &settings, QWidget *parent) : LXQtClockConfiguration::LXQtClockConfiguration(PluginSettings *settings, QWidget *parent) :
QDialog(parent), LXQtPanelPluginConfigDialog(settings, parent),
ui(new Ui::LxQtClockConfiguration), ui(new Ui::LXQtClockConfiguration),
mSettings(settings),
oldSettings(settings),
mOldIndex(1) mOldIndex(1)
{ {
setAttribute(Qt::WA_DeleteOnClose); setAttribute(Qt::WA_DeleteOnClose);
@ -109,20 +106,20 @@ LxQtClockConfiguration::LxQtClockConfiguration(QSettings &settings, QWidget *par
connect(ui->firstDayOfWeekCB, SIGNAL(activated(int)), SLOT(saveSettings())); connect(ui->firstDayOfWeekCB, SIGNAL(activated(int)), SLOT(saveSettings()));
} }
LxQtClockConfiguration::~LxQtClockConfiguration() LXQtClockConfiguration::~LXQtClockConfiguration()
{ {
delete ui; delete ui;
} }
static int currentYear = QDate::currentDate().year(); static int currentYear = QDate::currentDate().year();
void LxQtClockConfiguration::addDateFormat(const QString &format) void LXQtClockConfiguration::addDateFormat(const QString &format)
{ {
if (ui->dateFormatCOB->findData(QVariant(format)) == -1) if (ui->dateFormatCOB->findData(QVariant(format)) == -1)
ui->dateFormatCOB->addItem(QDate(currentYear, 1, 1).toString(format), QVariant(format)); ui->dateFormatCOB->addItem(QDate(currentYear, 1, 1).toString(format), QVariant(format));
} }
void LxQtClockConfiguration::createDateFormats() void LXQtClockConfiguration::createDateFormats()
{ {
ui->dateFormatCOB->clear(); ui->dateFormatCOB->clear();
@ -200,26 +197,26 @@ void LxQtClockConfiguration::createDateFormats()
ui->dateFormatCOB->addItem(QString("Custom (%1) ...").arg(QDate(currentYear, 1, 1).toString(mCustomDateFormat)), QVariant(mCustomDateFormat)); ui->dateFormatCOB->addItem(QString("Custom (%1) ...").arg(QDate(currentYear, 1, 1).toString(mCustomDateFormat)), QVariant(mCustomDateFormat));
} }
void LxQtClockConfiguration::loadSettings() void LXQtClockConfiguration::loadSettings()
{ {
QString systemDateLocale = QLocale::system().dateFormat(QLocale::ShortFormat).toUpper(); QString systemDateLocale = QLocale::system().dateFormat(QLocale::ShortFormat).toUpper();
QString systemTimeLocale = QLocale::system().timeFormat(QLocale::ShortFormat).toUpper(); QString systemTimeLocale = QLocale::system().timeFormat(QLocale::ShortFormat).toUpper();
QString timeFormat = mSettings.value("timeFormat", systemTimeLocale.contains("AP") ? "h:mm AP" : "HH:mm").toString(); QString timeFormat = settings().value("timeFormat", systemTimeLocale.contains("AP") ? "h:mm AP" : "HH:mm").toString();
ui->showSecondsCB->setChecked(timeFormat.indexOf("ss") > -1); ui->showSecondsCB->setChecked(timeFormat.indexOf("ss") > -1);
ui->ampmClockCB->setChecked(timeFormat.toUpper().indexOf("AP") > -1); ui->ampmClockCB->setChecked(timeFormat.toUpper().indexOf("AP") > -1);
ui->useUtcCB->setChecked(mSettings.value("UTC", false).toBool()); ui->useUtcCB->setChecked(settings().value("UTC", false).toBool());
ui->dontShowDateRB->setChecked(true); ui->dontShowDateRB->setChecked(true);
ui->showDateBeforeTimeRB->setChecked(mSettings.value("showDate", "no").toString().toLower() == "before"); ui->showDateBeforeTimeRB->setChecked(settings().value("showDate", "no").toString().toLower() == "before");
ui->showDateAfterTimeRB->setChecked(mSettings.value("showDate", "no").toString().toLower() == "after"); ui->showDateAfterTimeRB->setChecked(settings().value("showDate", "no").toString().toLower() == "after");
ui->showDateBelowTimeRB->setChecked(mSettings.value("showDate", "no").toString().toLower() == "below"); ui->showDateBelowTimeRB->setChecked(settings().value("showDate", "no").toString().toLower() == "below");
mCustomDateFormat = mSettings.value("customDateFormat", QString()).toString(); mCustomDateFormat = settings().value("customDateFormat", QString()).toString();
QString dateFormat = mSettings.value("dateFormat", QLocale::system().dateFormat(QLocale::ShortFormat)).toString(); QString dateFormat = settings().value("dateFormat", QLocale::system().dateFormat(QLocale::ShortFormat)).toString();
createDateFormats(); createDateFormats();
@ -233,50 +230,37 @@ void LxQtClockConfiguration::loadSettings()
} }
mOldIndex = ui->dateFormatCOB->currentIndex(); mOldIndex = ui->dateFormatCOB->currentIndex();
ui->autorotateCB->setChecked(mSettings.value("autoRotate", true).toBool()); ui->autorotateCB->setChecked(settings().value("autoRotate", true).toBool());
ui->firstDayOfWeekCB->setCurrentIndex(dynamic_cast<FirstDayCombo&>(*(ui->firstDayOfWeekCB->model())).findIndex(mSettings.value("firstDayOfWeek", -1).toInt())); ui->firstDayOfWeekCB->setCurrentIndex(dynamic_cast<FirstDayCombo&>(*(ui->firstDayOfWeekCB->model())).findIndex(settings().value("firstDayOfWeek", -1).toInt()));
} }
void LxQtClockConfiguration::saveSettings() void LXQtClockConfiguration::saveSettings()
{ {
QString timeFormat(ui->ampmClockCB->isChecked() ? "h:mm AP" : "HH:mm"); QString timeFormat(ui->ampmClockCB->isChecked() ? "h:mm AP" : "HH:mm");
if (ui->showSecondsCB->isChecked()) if (ui->showSecondsCB->isChecked())
timeFormat.insert(timeFormat.indexOf("mm") + 2, ":ss"); timeFormat.insert(timeFormat.indexOf("mm") + 2, ":ss");
mSettings.setValue("timeFormat", timeFormat); settings().setValue("timeFormat", timeFormat);
mSettings.setValue("UTC", ui->useUtcCB->isChecked()); settings().setValue("UTC", ui->useUtcCB->isChecked());
mSettings.setValue("showDate", settings().setValue("showDate",
ui->showDateBeforeTimeRB->isChecked() ? "before" : ui->showDateBeforeTimeRB->isChecked() ? "before" :
(ui->showDateAfterTimeRB->isChecked() ? "after" : (ui->showDateAfterTimeRB->isChecked() ? "after" :
(ui->showDateBelowTimeRB->isChecked() ? "below" : "no" ))); (ui->showDateBelowTimeRB->isChecked() ? "below" : "no" )));
mSettings.setValue("customDateFormat", mCustomDateFormat); settings().setValue("customDateFormat", mCustomDateFormat);
if (ui->dateFormatCOB->currentIndex() == (ui->dateFormatCOB->count() - 1)) if (ui->dateFormatCOB->currentIndex() == (ui->dateFormatCOB->count() - 1))
mSettings.setValue("dateFormat", mCustomDateFormat); settings().setValue("dateFormat", mCustomDateFormat);
else else
mSettings.setValue("dateFormat", ui->dateFormatCOB->itemData(ui->dateFormatCOB->currentIndex())); settings().setValue("dateFormat", ui->dateFormatCOB->itemData(ui->dateFormatCOB->currentIndex()));
mSettings.setValue("autoRotate", ui->autorotateCB->isChecked()); settings().setValue("autoRotate", ui->autorotateCB->isChecked());
mSettings.setValue("firstDayOfWeek", dynamic_cast<QStandardItemModel&>(*ui->firstDayOfWeekCB->model()).item(ui->firstDayOfWeekCB->currentIndex(), 0)->data(Qt::UserRole)); settings().setValue("firstDayOfWeek", dynamic_cast<QStandardItemModel&>(*ui->firstDayOfWeekCB->model()).item(ui->firstDayOfWeekCB->currentIndex(), 0)->data(Qt::UserRole));
} }
void LxQtClockConfiguration::dialogButtonsAction(QAbstractButton *btn) void LXQtClockConfiguration::dateFormatActivated(int index)
{
if (ui->buttons->buttonRole(btn) == QDialogButtonBox::ResetRole)
{
oldSettings.loadToSettings();
loadSettings();
}
else
{
close();
}
}
void LxQtClockConfiguration::dateFormatActivated(int index)
{ {
if (index == ui->dateFormatCOB->count() - 1) if (index == ui->dateFormatCOB->count() - 1)
{ {

View File

@ -29,30 +29,28 @@
#ifndef LXQTCLOCKCONFIGURATION_H #ifndef LXQTCLOCKCONFIGURATION_H
#define LXQTCLOCKCONFIGURATION_H #define LXQTCLOCKCONFIGURATION_H
#include <QDialog> #include "../panel/lxqtpanelpluginconfigdialog.h"
#include "../panel/pluginsettings.h"
#include <QAbstractButton> #include <QAbstractButton>
#include <QButtonGroup> #include <QButtonGroup>
#include <QLocale> #include <QLocale>
#include <QDateTime> #include <QDateTime>
#include <LXQt/Settings>
namespace Ui { namespace Ui {
class LxQtClockConfiguration; class LXQtClockConfiguration;
} }
class LxQtClockConfiguration : public QDialog class LXQtClockConfiguration : public LXQtPanelPluginConfigDialog
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit LxQtClockConfiguration(QSettings &settings, QWidget *parent = 0); explicit LXQtClockConfiguration(PluginSettings *settings, QWidget *parent = 0);
~LxQtClockConfiguration(); ~LXQtClockConfiguration();
private: private:
Ui::LxQtClockConfiguration *ui; Ui::LXQtClockConfiguration *ui;
QSettings &mSettings;
LxQt::SettingsCache oldSettings;
/* /*
Read settings from conf file and put data into controls. Read settings from conf file and put data into controls.
@ -69,7 +67,6 @@ private slots:
Saves settings in conf file. Saves settings in conf file.
*/ */
void saveSettings(); void saveSettings();
void dialogButtonsAction(QAbstractButton *btn);
void dateFormatActivated(int); void dateFormatActivated(int);
private: private:

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0"> <ui version="4.0">
<class>LxQtClockConfiguration</class> <class>LXQtClockConfiguration</class>
<widget class="QDialog" name="LxQtClockConfiguration"> <widget class="QDialog" name="LXQtClockConfiguration">
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>0</x> <x>0</x>
@ -167,7 +167,7 @@
<connection> <connection>
<sender>buttons</sender> <sender>buttons</sender>
<signal>accepted()</signal> <signal>accepted()</signal>
<receiver>LxQtClockConfiguration</receiver> <receiver>LXQtClockConfiguration</receiver>
<slot>accept()</slot> <slot>accept()</slot>
<hints> <hints>
<hint type="sourcelabel"> <hint type="sourcelabel">
@ -183,7 +183,7 @@
<connection> <connection>
<sender>buttons</sender> <sender>buttons</sender>
<signal>rejected()</signal> <signal>rejected()</signal>
<receiver>LxQtClockConfiguration</receiver> <receiver>LXQtClockConfiguration</receiver>
<slot>reject()</slot> <slot>reject()</slot>
<hints> <hints>
<hint type="sourcelabel"> <hint type="sourcelabel">

View File

@ -1,6 +1,6 @@
[Desktop Entry] [Desktop Entry]
Type=Service Type=Service
ServiceTypes=LxQtPanel/Plugin ServiceTypes=LXQtPanel/Plugin
Name=Date & time Name=Date & time
Comment=Displays the current time. Comes with a calendar. Comment=Displays the current time. Comes with a calendar.
Icon=preferences-system-time Icon=preferences-system-time

View File

@ -1,113 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="en_US">
<context>
<name>FirstDayCombo</name>
<message>
<location filename="../lxqtclockconfiguration.cpp" line="50"/>
<source>&lt;locale based&gt;</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQtClockConfiguration</name>
<message>
<location filename="../lxqtclockconfiguration.ui" line="14"/>
<source>Clock Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.ui" line="20"/>
<source>Time</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.ui" line="26"/>
<source>&amp;Show seconds</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.ui" line="33"/>
<source>12 &amp;hour style</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.ui" line="40"/>
<source>&amp;Use UTC</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.ui" line="76"/>
<source>&amp;Do not show date</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.ui" line="86"/>
<source>Show date &amp;before time</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.ui" line="93"/>
<source>Show date &amp;after time</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.ui" line="100"/>
<source>Show date below time on new &amp;line</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.ui" line="107"/>
<source>First day of week in calendar</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.ui" line="124"/>
<source>Orientation</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.ui" line="130"/>
<source>Auto&amp;rotate when the panel is vertical</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.ui" line="50"/>
<source>Date</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.ui" line="59"/>
<source>Date &amp;format</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.cpp" line="284"/>
<source>Input custom date format</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.cpp" line="284"/>
<source>Interpreted sequences of date format are:
d the day as number without a leading zero (1 to 31)
dd the day as number with a leading zero (01 to 31)
ddd the abbreviated localized day name (e.g. &apos;Mon&apos; to &apos;Sun&apos;).
dddd the long localized day name (e.g. &apos;Monday&apos; to &apos;Sunday&apos;).
M the month as number without a leading zero (1-12)
MM the month as number with a leading zero (01-12)
MMM the abbreviated localized month name (e.g. &apos;Jan&apos; to &apos;Dec&apos;).
MMMM the long localized month name (e.g. &apos;January&apos; to &apos;December&apos;).
yy the year as two digit number (00-99)
yyyy the year as four digit number
All other input characters will be treated as text.
Any sequence of characters that are enclosed in single quotes (&apos;)
will also be treated as text and not be used as an expression.
Custom date format:</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -1,12 +1,2 @@
[Desktop Entry] Name[ar]=التّاريخ والوقت
Type=Service Comment[ar]=تعرض الوقت الحاليّ. فيها تقويم.
ServiceTypes=LxQtPanel/Plugin
Name=Date & time
Comment=Displays the current time. Comes with a calendar.
#TRANSLATIONS_DIR=../translations
# Translations
Comment[ar]=السَّاعة والتَّقويم
Name[ar]=السَّاعة

View File

@ -1,181 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="ar">
<context>
<name>FirstDayCombo</name>
<message>
<location filename="../lxqtclockconfiguration.cpp" line="50"/>
<source>&lt;locale based&gt;</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQtClockConfiguration</name>
<message>
<source>LxQt Clock Settings</source>
<translation type="vanished">إعدادات ساعة ريزر</translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.ui" line="14"/>
<source>Clock Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.ui" line="20"/>
<source>Time</source>
<translation>الوقت</translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.ui" line="26"/>
<source>&amp;Show seconds</source>
<translation>إ&amp;ظهار الثَّواني</translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.ui" line="33"/>
<source>12 &amp;hour style</source>
<translation>عرض 12 سا&amp;عة</translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.ui" line="40"/>
<source>&amp;Use UTC</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.ui" line="59"/>
<source>Date &amp;format</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.ui" line="76"/>
<source>&amp;Do not show date</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.ui" line="86"/>
<source>Show date &amp;before time</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.ui" line="93"/>
<source>Show date &amp;after time</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.ui" line="100"/>
<source>Show date below time on new &amp;line</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.ui" line="107"/>
<source>First day of week in calendar</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.ui" line="124"/>
<source>Orientation</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.ui" line="130"/>
<source>Auto&amp;rotate when the panel is vertical</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Font</source>
<translation type="vanished">ال&amp;خطُّ</translation>
</message>
<message>
<source>Font</source>
<translation type="vanished">الخطُّ</translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.ui" line="50"/>
<source>Date</source>
<translation>التَّاريخ</translation>
</message>
<message>
<source>Show &amp;date</source>
<translation type="vanished">إظهار ال&amp;تَّاريخ</translation>
</message>
<message>
<source>D&amp;ate format</source>
<translation type="vanished">تنسيق التَّ&amp;أريخ</translation>
</message>
<message>
<source>Fon&amp;t</source>
<translation type="vanished">الخ&amp;طُّ</translation>
</message>
<message>
<source>Show date in &amp;new line</source>
<translation type="vanished">إظهار التَّارخ في سطرٍ &amp;جديدٍ</translation>
</message>
<message>
<source>&amp;Use theme fonts</source>
<translation type="vanished">استخد&amp;م خطوط الواجهة المخصَّصة</translation>
</message>
<message>
<source>Time font</source>
<translation type="vanished">الخطُّ المستخدم للوقت</translation>
</message>
<message>
<source>Date font</source>
<translation type="vanished">الخطُّ المستخدم للتَّاريخ</translation>
</message>
<message>
<source>Ultra light</source>
<translation type="vanished">فاتحٌ زيادة</translation>
</message>
<message>
<source>Light</source>
<translation type="vanished">فاتح</translation>
</message>
<message>
<source>Ultra black</source>
<translation type="vanished">أسود دامس</translation>
</message>
<message>
<source>Black</source>
<translation type="vanished">أسود</translation>
</message>
<message>
<source>Bold</source>
<translation type="vanished">ثخين</translation>
</message>
<message>
<source>Demi bold</source>
<translation type="vanished">نصف ثخين</translation>
</message>
<message>
<source>Italic</source>
<translation type="vanished">مائل</translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.cpp" line="284"/>
<source>Input custom date format</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.cpp" line="284"/>
<source>Interpreted sequences of date format are:
d the day as number without a leading zero (1 to 31)
dd the day as number with a leading zero (01 to 31)
ddd the abbreviated localized day name (e.g. &apos;Mon&apos; to &apos;Sun&apos;).
dddd the long localized day name (e.g. &apos;Monday&apos; to &apos;Sunday&apos;).
M the month as number without a leading zero (1-12)
MM the month as number with a leading zero (01-12)
MMM the abbreviated localized month name (e.g. &apos;Jan&apos; to &apos;Dec&apos;).
MMMM the long localized month name (e.g. &apos;January&apos; to &apos;December&apos;).
yy the year as two digit number (00-99)
yyyy the year as four digit number
All other input characters will be treated as text.
Any sequence of characters that are enclosed in single quotes (&apos;)
will also be treated as text and not be used as an expression.
Custom date format:</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -1,6 +1,6 @@
[Desktop Entry] [Desktop Entry]
Type=Service Type=Service
ServiceTypes=LxQtPanel/Plugin ServiceTypes=LXQtPanel/Plugin
Name=Date & time Name=Date & time
Comment=Displays the current time. Comes with a calendar. Comment=Displays the current time. Comes with a calendar.

View File

@ -1,181 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="cs">
<context>
<name>FirstDayCombo</name>
<message>
<location filename="../lxqtclockconfiguration.cpp" line="50"/>
<source>&lt;locale based&gt;</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LxQtClockConfiguration</name>
<message>
<source>LxQt Clock Settings</source>
<translation type="vanished">Nastavení hodin</translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.ui" line="14"/>
<source>Clock Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.ui" line="20"/>
<source>Time</source>
<translation>Čas</translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.ui" line="26"/>
<source>&amp;Show seconds</source>
<translation>&amp;Ukázat sekundy</translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.ui" line="33"/>
<source>12 &amp;hour style</source>
<translation>12 &amp;hodinový styl</translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.ui" line="40"/>
<source>&amp;Use UTC</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.ui" line="59"/>
<source>Date &amp;format</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.ui" line="76"/>
<source>&amp;Do not show date</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.ui" line="86"/>
<source>Show date &amp;before time</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.ui" line="93"/>
<source>Show date &amp;after time</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.ui" line="100"/>
<source>Show date below time on new &amp;line</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.ui" line="107"/>
<source>First day of week in calendar</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.ui" line="124"/>
<source>Orientation</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.ui" line="130"/>
<source>Auto&amp;rotate when the panel is vertical</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Font</source>
<translation type="vanished">&amp;Písmo</translation>
</message>
<message>
<source>Font</source>
<translation type="vanished">Písmo</translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.ui" line="50"/>
<source>Date</source>
<translation>Datum</translation>
</message>
<message>
<source>Show &amp;date</source>
<translation type="vanished">Ukázat &amp;datum</translation>
</message>
<message>
<source>D&amp;ate format</source>
<translation type="vanished">Formát d&amp;ata</translation>
</message>
<message>
<source>Fon&amp;t</source>
<translation type="vanished">&amp;smo</translation>
</message>
<message>
<source>Show date in &amp;new line</source>
<translation type="vanished">Ukázat datum na &amp;novém řádku</translation>
</message>
<message>
<source>&amp;Use theme fonts</source>
<translation type="vanished">&amp;Použít písma motivu</translation>
</message>
<message>
<source>Time font</source>
<translation type="vanished">Písmo pro čas</translation>
</message>
<message>
<source>Date font</source>
<translation type="vanished">Písmo pro datum</translation>
</message>
<message>
<source>Ultra light</source>
<translation type="vanished">Hodně světlé</translation>
</message>
<message>
<source>Light</source>
<translation type="vanished">Světlé</translation>
</message>
<message>
<source>Ultra black</source>
<translation type="vanished">Hodně černé</translation>
</message>
<message>
<source>Black</source>
<translation type="vanished">Černé</translation>
</message>
<message>
<source>Bold</source>
<translation type="vanished">Tučné</translation>
</message>
<message>
<source>Demi bold</source>
<translation type="vanished">Polotučné</translation>
</message>
<message>
<source>Italic</source>
<translation type="vanished">Kurzíva</translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.cpp" line="284"/>
<source>Input custom date format</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../lxqtclockconfiguration.cpp" line="284"/>
<source>Interpreted sequences of date format are:
d the day as number without a leading zero (1 to 31)
dd the day as number with a leading zero (01 to 31)
ddd the abbreviated localized day name (e.g. &apos;Mon&apos; to &apos;Sun&apos;).
dddd the long localized day name (e.g. &apos;Monday&apos; to &apos;Sunday&apos;).
M the month as number without a leading zero (1-12)
MM the month as number with a leading zero (01-12)
MMM the abbreviated localized month name (e.g. &apos;Jan&apos; to &apos;Dec&apos;).
MMMM the long localized month name (e.g. &apos;January&apos; to &apos;December&apos;).
yy the year as two digit number (00-99)
yyyy the year as four digit number
All other input characters will be treated as text.
Any sequence of characters that are enclosed in single quotes (&apos;)
will also be treated as text and not be used as an expression.
Custom date format:</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

View File

@ -1,6 +1,6 @@
[Desktop Entry] [Desktop Entry]
Type=Service Type=Service
ServiceTypes=LxQtPanel/Plugin ServiceTypes=LXQtPanel/Plugin
Name=Date & time Name=Date & time
Comment=Displays the current time. Comes with a calendar. Comment=Displays the current time. Comes with a calendar.

Some files were not shown because too many files have changed in this diff Show More