20 Commits

Author SHA1 Message Date
ceca889be4 release 1.3.0 2014-08-25 16:06:31 +04:00
696283b1e1 update readme/prepare to release 2014-08-25 15:06:03 +04:00
15cc3a8595 rename wifi tab 2014-08-25 14:59:34 +04:00
e8c3441f29 add profile reading description 2014-08-25 11:53:14 +04:00
2de7b26f66 change name to id in html docs 2014-08-25 11:42:50 +04:00
8f35aeb88f rewrite actions to qtoolbutton 2014-08-25 11:34:08 +04:00
b49188c104 remove kde runtime from optdep list 2014-08-25 10:56:45 +04:00
f8bf8830be fix mans 2014-08-25 10:55:34 +04:00
6e6c547460 unify configuration names 2014-08-25 10:54:18 +04:00
d287f52ba5 rename layout 2014-08-25 10:48:01 +04:00
8cc02a07fb update translations 2014-08-24 16:45:19 +04:00
28d51484b1 fix update toolboxes 2014-08-24 16:40:01 +04:00
e7d2e0bd38 change menu to toolboxes 2014-08-24 16:30:37 +04:00
999914926a add force* slots 2014-08-24 13:08:13 +04:00
e21b2201ab small tray fixes 2014-08-24 13:00:50 +04:00
d65ded6072 update messages 2014-08-20 23:37:37 +04:00
16662f697b cleanup!
(remove symlinks)
2014-08-20 22:16:06 +04:00
35d740b778 update build script 2014-08-20 21:25:56 +04:00
0a16364a7a update docs
change building
2014-08-20 21:16:31 +04:00
e9090ab4a9 remove suid bit to use capabilities 2014-08-20 20:21:34 +04:00
84 changed files with 1372 additions and 1399 deletions

2
.gitignore vendored
View File

@ -25,3 +25,5 @@ usr/
# translations # translations
*.qm *.qm
# temporary bckps
*~

View File

@ -21,10 +21,13 @@ Ver.1.3.0
+ add ability to use helper + add ability to use helper
+ add ability to start minimized/maximized/detached + add ability to start minimized/maximized/detached
+ add ability to don't save profile from WiFi tab + add ability to don't save profile from WiFi tab
+ add ability to skip external components checking
- remove buttons
* more correct actions into SettingsWindow * more correct actions into SettingsWindow
* update to library changes * update to library changes
* rewrite tables to use toolTip * rewrite tables to use toolTip
* edit about window * edit about window
* change menuBar
* helper: * helper:
+ create daemon DBus system interface org.netctlgui.helper to the library: + create daemon DBus system interface org.netctlgui.helper to the library:
self control slots, netctl control slots and netctl information slots self control slots, netctl control slots and netctl information slots
@ -36,13 +39,14 @@ Ver.1.3.0
+ add slot stopAllProfiles() + add slot stopAllProfiles()
+ add slot reenableProfile() + add slot reenableProfile()
+ add slots getRecommendedConfiguration() + add slots getRecommendedConfiguration()
+ add slots forceStartProfile() and forceStopProfile()
+ add double quotes to profile names + add double quotes to profile names
+ add tests + add tests
- remove functions getProfileDescriptions() and getProfileStatuses()
- remove SleepThread class
* rewrite to use [tasks](https://github.com/mhogomchungu/tasks) (see #7) * rewrite to use [tasks](https://github.com/mhogomchungu/tasks) (see #7)
* rename getInterfaceList() to getWirelessInterfaceList() * rename getInterfaceList() to getWirelessInterfaceList()
* change temporaty directory from $HOME/.cache to system one * change temporaty directory from $HOME/.cache to system one
- remove functions getProfileDescriptions() and getProfileStatuses()
- remove SleepThread class
* plasmoid: * plasmoid:
+ add 3rd party license information + add 3rd party license information
+ allow plasmoid to use system tray + allow plasmoid to use system tray

View File

@ -11,7 +11,12 @@ Qt4/Qt5 graphical interface for netctl. It may work with profiles and may create
Configuration Configuration
------------- -------------
It is recommended to use graphical interface for widget and DataEngine configuration. All settings of GUI are stored in `$HOME/.config/netctl-gui.conf`. It is highly recommended to edit it from graphical interface. It is recommended to use graphical interface for configuration. Configuration files are:
* `$HOME/.config/netctl-gui.conf` - GUI/helper user configuration
* `/etc/netctl-gui.conf` - helper system-wide configuration
* `$KDEHOME/share/config/netctl.conf` - DataEngine user configuration
* `$KDESYSTEM/share/config/netctl.conf` - DataEngine system-wide configuration
Instruction Instruction
=========== ===========
@ -50,14 +55,20 @@ Installation
Available cmake flags: Available cmake flags:
* `-DBUILD_DATAENGINE:BOOL=0` - do not build DataEngine * components:
* `-DBUILD_DOCS:BOOL=0` - do not build developer documentation * `-DBUILD_DATAENGINE:BOOL=0` - do not build DataEngine
* `-DBUILD_GUI:BOOL=0` - do not build GUI * `-DBUILD_GUI:BOOL=0` - do not build GUI
* `-DBUILD_HELPER:BOOL=0` - do not build helper daemon * `-DBUILD_HELPER:BOOL=0` - do not build helper daemon
* `-DBUILD_LIBRARY:BOOL=0` - do not build library * `-DBUILD_LIBRARY:BOOL=0` - do not build library
* `-DBUILD_PLASMOID:BOOL=0` - do not build Plasmoid * `-DBUILD_PLASMOID:BOOL=0` - do not build Plasmoid
* `-DBUILD_TEST:BOOL=1` - build auto tests for the library and the helper * additional components:
* `-DUSE_QT5:BOOL=0` - use Qt4 instead of Qt5 for GUI * `-DBUILD_DOCS:BOOL=0` - do not build developer documentation
* `-DBUILD_TEST:BOOL=1` - build auto tests for the library and the helper
* project properties:
* `-DDBUS_SYSTEMCONF_PATH=/etc/dbus-1/system.d/` - path to dbus system configuration files
* `-DSYSTEMD_SERVICE_PATH=lib/systemd/system` - path to systemd services
* `-DUSE_CAPABILITIES:BOOL=0` - do not use setcap to get privileges to the helper
* `-DUSE_QT5:BOOL=0` - use Qt4 instead of Qt5 for GUI
Additional information Additional information
====================== ======================
@ -65,9 +76,6 @@ Additional information
TODO (wish list) TODO (wish list)
---------------- ----------------
* remove suid bit from helper (polkit/logind/etc)
* check/update documentation
Links Links
----- -----

View File

@ -12,8 +12,7 @@ url="http://arcanis.name/projects/netctl-gui"
license=('GPL3') license=('GPL3')
makedepends=('automoc4' 'cmake' 'kdelibs' 'qt5-base' 'qt5-tools') makedepends=('automoc4' 'cmake' 'kdelibs' 'qt5-base' 'qt5-tools')
source=("https://github.com/arcan1s/netctl-gui/releases/download/V.${pkgver}/${pkgbase}-${pkgver}-src.tar.xz") source=("https://github.com/arcan1s/netctl-gui/releases/download/V.${pkgver}/${pkgbase}-${pkgver}-src.tar.xz")
install="${pkgbase}.install" md5sums=('9b56b04258855258ed30549f1039b8f8')
md5sums=('d99eba4101fee42ebbfa5735aa706bc9')
prepare() { prepare() {
@ -54,13 +53,12 @@ build() {
package_kdeplasma-applets-netctl-gui() { package_kdeplasma-applets-netctl-gui() {
pkgdesc="A plasmoid, which interacts with netctl. A part of netctl-gui" pkgdesc="A plasmoid, which interacts with netctl. A part of netctl-gui"
depends=('netctl' 'kdebase-workspace') depends=('netctl' 'kdebase-workspace')
optdepends=('kdebase-runtime: sudo support' optdepends=('netctlgui-helper: DBus helper daemon'
'netctlgui-helper: DBus helper daemon'
'netctlgui-helper-qt4: DBus helper daemon' 'netctlgui-helper-qt4: DBus helper daemon'
'netctl-gui: graphical front-end' 'netctl-gui: graphical front-end'
'netctl-gui-qt4: graphical front-end' 'netctl-gui-qt4: graphical front-end'
'sudo: sudo support') 'sudo: sudo support')
install="${pkgbase}.install" install="kdeplasma-applets-netctl-gui.install"
cd "${srcdir}/build-plasmoid" cd "${srcdir}/build-plasmoid"
make DESTDIR="${pkgdir}" install make DESTDIR="${pkgdir}" install
@ -87,6 +85,7 @@ package_netctlgui-helper() {
provides=('netctlgui-helper-qt4') provides=('netctlgui-helper-qt4')
conflicts=('netctlgui-helper-qt4') conflicts=('netctlgui-helper-qt4')
backup=('etc/netctlgui-helper.conf') backup=('etc/netctlgui-helper.conf')
install="netctlgui-helper.install"
cd "${srcdir}/build-qt5/helper" cd "${srcdir}/build-qt5/helper"
make DESTDIR="${pkgdir}" install make DESTDIR="${pkgdir}" install
@ -100,7 +99,7 @@ package_netctl-gui() {
'netctlgui-helper: DBus helper daemon') 'netctlgui-helper: DBus helper daemon')
provides=('netctl-gui-qt4') provides=('netctl-gui-qt4')
conflicts=('netctl-gui-qt4') conflicts=('netctl-gui-qt4')
install="${pkgbase}.install" install="netctl-gui.install"
cd "${srcdir}/build-qt5/gui" cd "${srcdir}/build-qt5/gui"
make DESTDIR="${pkgdir}" install make DESTDIR="${pkgdir}" install
@ -115,6 +114,7 @@ package_libnetctlgui-qt4() {
'wpa_supplicant: wifi support') 'wpa_supplicant: wifi support')
provides=('libnetctlgui') provides=('libnetctlgui')
conflicts=('libnetctlgui') conflicts=('libnetctlgui')
install=""
cd "${srcdir}/build-qt4/netctlgui" cd "${srcdir}/build-qt4/netctlgui"
make DESTDIR="${pkgdir}" install make DESTDIR="${pkgdir}" install
@ -127,6 +127,7 @@ package_netctlgui-helper-qt4() {
provides=('netctlgui-helper') provides=('netctlgui-helper')
conflicts=('netctlgui-helper') conflicts=('netctlgui-helper')
backup=('etc/netctlgui-helper.conf') backup=('etc/netctlgui-helper.conf')
install="netctlgui-helper.install"
cd "${srcdir}/build-qt4/helper" cd "${srcdir}/build-qt4/helper"
make DESTDIR="${pkgdir}" install make DESTDIR="${pkgdir}" install
@ -140,7 +141,7 @@ package_netctl-gui-qt4() {
'netctlgui-helper-qt4: DBus helper daemon') 'netctlgui-helper-qt4: DBus helper daemon')
provides=('netctl-gui') provides=('netctl-gui')
conflicts=('netctl-gui') conflicts=('netctl-gui')
install="${pkgbase}.install" install="netctl-gui.install"
cd "${srcdir}/build-qt4/gui" cd "${srcdir}/build-qt4/gui"
make DESTDIR="${pkgdir}" install make DESTDIR="${pkgdir}" install

View File

@ -0,0 +1,14 @@
post_install() {
cat << EOF
Update plasmoids...
EOF
kbuildsycoca4 > /dev/null 2>&1
}
post_upgrade() {
post_install "$1"
}
post_remove() {
post_install "$1"
}

11
arch/libnetctlgui.install Normal file
View File

@ -0,0 +1,11 @@
post_install() {
xdg-icon-resource forceupdate --theme hicolor 2> /dev/null
}
post_upgrade() {
post_install "$1"
}
post_remove() {
post_install "$1"
}

View File

@ -4,9 +4,9 @@ post_install() {
} }
post_upgrade() { post_upgrade() {
post_install post_install "$1"
} }
post_remove() { post_remove() {
post_install post_install "$1"
} }

View File

@ -0,0 +1,7 @@
post_install() {
setcap cap_setuid=ep usr/bin/netctlgui-helper 2>/dev/null || chmod +s usr/bin/ping
}
post_upgrade() {
post_install "$1"
}

View File

@ -14,8 +14,12 @@ cp -r "${SRCDIR}" "${ARCHIVE}"
for FILE in ${FILES[*]}; do cp -r "$FILE" "${ARCHIVE}"; done for FILE in ${FILES[*]}; do cp -r "$FILE" "${ARCHIVE}"; done
for FILE in ${IGNORELIST[*]}; do find "${ARCHIVE}" -name "${FILE}" -exec rm -rf {} \;; done for FILE in ${IGNORELIST[*]}; do find "${ARCHIVE}" -name "${FILE}" -exec rm -rf {} \;; done
tar cJf "${ARCHIVE}-${VERSION}-src.tar.xz" "${ARCHIVE}" tar cJf "${ARCHIVE}-${VERSION}-src.tar.xz" "${ARCHIVE}"
ln -sf "../${ARCHIVE}-${VERSION}-src.tar.xz" arch
rm -rf "${ARCHIVE}" rm -rf "${ARCHIVE}"
# update md5sum # update md5sum
MD5SUMS=$(md5sum ${ARCHIVE}-${VERSION}-src.tar.xz | awk '{print $1}') MD5SUMS=$(md5sum ${ARCHIVE}-${VERSION}-src.tar.xz | awk '{print $1}')
sed -i "/md5sums=('[0-9A-Fa-f]*/s/[^'][^)]*/md5sums=('${MD5SUMS}'/" PKGBUILD sed -i "/md5sums=('[0-9A-Fa-f]*/s/[^'][^)]*/md5sums=('${MD5SUMS}'/" arch/PKGBUILD
sed -i "s/pkgver=[0-9.]*/pkgver=${VERSION}/" PKGBUILD sed -i "s/pkgver=[0-9.]*/pkgver=${VERSION}/" arch/PKGBUILD
# clear
find . -type f -name '*src.tar.xz' -not -name "*${VERSION}-src.tar.xz" -exec rm -rf {} \;
find arch -type l -xtype l -exec rm -rf {} \;

View File

@ -21,6 +21,7 @@ message (STATUS "Version: ${PROJECT_VERSION}")
message (STATUS "Build date: ${CURRENT_DATE}") message (STATUS "Build date: ${CURRENT_DATE}")
# install options # install options
option (USE_CAPABILITIES "Use setcap to set capabilities for the helper" ON)
option (USE_QT5 "Use Qt5 instead of Qt4" ON) option (USE_QT5 "Use Qt5 instead of Qt4" ON)
# components # components
option (BUILD_GUI "Build GUI" ON) option (BUILD_GUI "Build GUI" ON)
@ -60,6 +61,7 @@ endif ()
configure_file (${CMAKE_SOURCE_DIR}/version.h.in ${CMAKE_CURRENT_BINARY_DIR}/version.h) configure_file (${CMAKE_SOURCE_DIR}/version.h.in ${CMAKE_CURRENT_BINARY_DIR}/version.h)
# resources # resources
set (PROJECT_TRDPARTY_DIR ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty)
set (PROJECT_LIBRARY netctlgui) set (PROJECT_LIBRARY netctlgui)
set (PROJECT_RESOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/resources) set (PROJECT_RESOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/resources)
add_subdirectory (${PROJECT_RESOURCE_DIR}) add_subdirectory (${PROJECT_RESOURCE_DIR})

View File

@ -7,13 +7,18 @@ find_package (KDE4 REQUIRED)
include (KDE4Defaults) include (KDE4Defaults)
add_definitions (${QT_DEFINITIONS} ${KDE4_DEFINITIONS}) add_definitions (${QT_DEFINITIONS} ${KDE4_DEFINITIONS})
include_directories (${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} ${KDE4_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}/../) include_directories (${CMAKE_SOURCE_DIR}
${CMAKE_BINARY_DIR}
${KDE4_INCLUDES}
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_BINARY_DIR}/../
${PROJECT_TRDPARTY_DIR})
set (PLUGIN_NAME ${SUBPROJECT}) set (PLUGIN_NAME ${SUBPROJECT})
file (GLOB SUBPROJECT_DESKTOP_IN *.desktop) file (GLOB SUBPROJECT_DESKTOP_IN *.desktop)
file (RELATIVE_PATH SUBPROJECT_DESKTOP ${CMAKE_SOURCE_DIR} ${SUBPROJECT_DESKTOP_IN}) file (RELATIVE_PATH SUBPROJECT_DESKTOP ${CMAKE_SOURCE_DIR} ${SUBPROJECT_DESKTOP_IN})
file (GLOB SUBPROJECT_SOURCE *.cpp) file (GLOB_RECURSE SUBPROJECT_SOURCE *.cpp ${PROJECT_TRDPARTY_DIR}/task/*.cpp)
set (TASK_HEADER ${CMAKE_CURRENT_SOURCE_DIR}/task.h) set (TASK_HEADER ${PROJECT_TRDPARTY_DIR}/task/task.h)
file (GLOB SUBPROJECT_CONF *.conf) file (GLOB SUBPROJECT_CONF *.conf)
# prepare # prepare

View File

@ -15,6 +15,8 @@
* along with netctl-gui. If not, see http://www.gnu.org/licenses/ * * along with netctl-gui. If not, see http://www.gnu.org/licenses/ *
***************************************************************************/ ***************************************************************************/
#include "netctl.h"
#include <KGlobal> #include <KGlobal>
#include <KStandardDirs> #include <KStandardDirs>
#include <Plasma/DataContainer> #include <Plasma/DataContainer>
@ -25,9 +27,8 @@
#include <QProcessEnvironment> #include <QProcessEnvironment>
#include <QTextCodec> #include <QTextCodec>
#include "netctl.h" #include <pdebug/pdebug.h>
#include "pdebug.h" #include <task/taskadds.h>
#include "taskadds.h"
Netctl::Netctl(QObject *parent, const QVariantList &args) Netctl::Netctl(QObject *parent, const QVariantList &args)
@ -219,6 +220,7 @@ QString Netctl::getIntIp(const QAbstractSocket::NetworkLayerProtocol protocol)
QList<QHostAddress> rawList = QNetworkInterface::allAddresses(); QList<QHostAddress> rawList = QNetworkInterface::allAddresses();
for (int i=0; i<rawList.count(); i++) { for (int i=0; i<rawList.count(); i++) {
if(rawList[i] == QHostAddress(QHostAddress::LocalHost)) continue; if(rawList[i] == QHostAddress(QHostAddress::LocalHost)) continue;
if(rawList[i] == QHostAddress(QHostAddress::LocalHostIPv6)) continue;
if (rawList[i].protocol() == protocol) { if (rawList[i].protocol() == protocol) {
intIp = rawList[i].toString(); intIp = rawList[i].toString();
break; break;

View File

@ -1 +0,0 @@
../3rdparty/pdebug/pdebug.h

View File

@ -1 +0,0 @@
../3rdparty/task/task.h

View File

@ -1 +0,0 @@
../3rdparty/task/taskadds.cpp

View File

@ -1 +0,0 @@
../3rdparty/task/taskadds.h

View File

@ -63,6 +63,7 @@ _netctl_gui_settings=(
'PREFERED_IFACE' 'PREFERED_IFACE'
'PROFILE_DIR' 'PROFILE_DIR'
'RFKILL_DIR' 'RFKILL_DIR'
'SKIPCOMPONENTS'
'STARTTOTRAY' 'STARTTOTRAY'
'SUDO_PATH' 'SUDO_PATH'
'SYSTEMCTL_PATH' 'SYSTEMCTL_PATH'

View File

@ -40,7 +40,7 @@ th.sub {
</head> </head>
<body> <body>
<h2><a href="#api" class="anchor" name="api"></a>DBus API</h2> <h2><a href="#api" class="anchor" id="api"></a>DBus API</h2>
<table> <table>
<tbody><tr> <tbody><tr>
<th>method</th> <th>method</th>
@ -49,11 +49,11 @@ th.sub {
</tr> </tr>
<!-- helper service --> <!-- helper service -->
<tr> <tr>
<th colspan="3"><a href="#helper" class="anchor" name="helper"></a><code>org.netctlgui.helper</code> service (system bus)</th> <th colspan="3"><a href="#helper" class="anchor" id="helper"></a><code>org.netctlgui.helper</code> service (system bus)</th>
</tr> </tr>
<!-- /ctrl path --> <!-- /ctrl path -->
<tr> <tr>
<th colspan="3" class="sub"><a href="#ctrl" class="anchor" name="ctrl"></a><code>/ctrl</code> path</th> <th colspan="3" class="sub"><a href="#ctrl" class="anchor" id="ctrl"></a><code>/ctrl</code> path</th>
</tr> </tr>
<!-- helper actions --> <!-- helper actions -->
<tr> <tr>
@ -112,6 +112,16 @@ th.sub {
<td>enables or disables the profile. Returns <code>true</code> if action has been performed successfully</td> <td>enables or disables the profile. Returns <code>true</code> if action has been performed successfully</td>
<td>yes</td> <td>yes</td>
</tr> </tr>
<tr>
<td>bool forceStart(QString profile)</td>
<td>force starts the profile. Returns <code>true</code> if action has been performed successfully</td>
<td>yes</td>
</tr>
<tr>
<td>bool forceStop(QString profile)</td>
<td>force stops the profile. Returns <code>true</code> if action has been performed successfully</td>
<td>yes</td>
</tr>
<tr> <tr>
<td>bool Reenable(QString profile)</td> <td>bool Reenable(QString profile)</td>
<td>reenables the profile. Returns <code>true</code> if action has been performed successfully</td> <td>reenables the profile. Returns <code>true</code> if action has been performed successfully</td>
@ -192,7 +202,7 @@ th.sub {
</tr> </tr>
<!-- /netctl path --> <!-- /netctl path -->
<tr> <tr>
<th colspan="3" class="sub"><a href="#netctl" class="anchor" name="netctl"></a><code>/netctl</code> path</th> <th colspan="3" class="sub"><a href="#netctl" class="anchor" id="netctl"></a><code>/netctl</code> path</th>
</tr> </tr>
<!-- general information --> <!-- general information -->
<tr> <tr>
@ -270,11 +280,11 @@ th.sub {
</tr> </tr>
<!-- gui service --> <!-- gui service -->
<tr> <tr>
<th colspan="3"><a href="#gui" class="anchor" name="gui"></a><code>org.netctlgui.netctlgui</code> service (session bus)</th> <th colspan="3"><a href="#gui" class="anchor" id="gui"></a><code>org.netctlgui.netctlgui</code> service (session bus)</th>
</tr> </tr>
<!-- /netctlgui path --> <!-- /netctlgui path -->
<tr> <tr>
<th colspan="3" class="sub"><a href="#netctlgui" class="anchor" name="netctlgui"></a><code>/netctlgui</code> path</th> <th colspan="3" class="sub"><a href="#netctlgui" class="anchor" id="netctlgui"></a><code>/netctlgui</code> path</th>
</tr> </tr>
<!-- gui actions --> <!-- gui actions -->
<tr> <tr>
@ -354,7 +364,7 @@ th.sub {
</tr> </tr>
</table> </table>
<h2><a href="#links" class="anchor" name="links"></a>External links</h2> <h2><a href="#links" class="anchor" id="links"></a>External links</h2>
<ul> <ul>
<li><a href="http://arcanis.name/projects/netctl-gui/">Homepage</a></li> <li><a href="http://arcanis.name/projects/netctl-gui/">Homepage</a></li>
<li><a href="https://github.com/arcan1s/netctl-gui">Repository</a></li> <li><a href="https://github.com/arcan1s/netctl-gui">Repository</a></li>

View File

@ -19,13 +19,13 @@
</head> </head>
<body> <body>
<h2><a href="#description" class="anchor" name="description"></a>Description</h2> <h2><a href="#description" class="anchor" id="description"></a>Description</h2>
<p></p> <p></p>
<h2><a href="#arch" class="anchor" name="arch"></a>Architecture</h2> <h2><a href="#arch" class="anchor" id="arch"></a>Architecture</h2>
<img src="architecture.png" alt="architecture" align="middle"> <img src="architecture.png" alt="architecture" align="middle">
<h2><a href="#library" class="anchor" name="library"></a>Library</h2> <h2><a href="#library" class="anchor" id="library"></a>Library</h2>
<p>According to <a href="#arch">the scheme<a> the library gets information from netctl and can control it. Also it provides some additional functions such as a profile creation and removal and access to wpa_supplicant functions. Some functions do not require additional permissions, but other ones do it. All dynamic arguments including profile names and paths are in double quotes to avoid white spaces problem. The functions which <b>require</b> root privileges are:</p> <p>According to <a href="#arch">the scheme<a> the library gets information from netctl and can control it. Also it provides some additional functions such as a profile creation and removal and access to wpa_supplicant functions. Some functions do not require additional permissions, but other ones do it. All dynamic arguments including profile names and paths are in double quotes to avoid white spaces problem. The functions which <b>require</b> root privileges are:</p>
<ul> <ul>
<li>Netctl control module</li> <li>Netctl control module</li>
@ -46,17 +46,27 @@
<p>If library will be initialized with <code>FORCE_SUDO=true</code> than it will use <code>sudo</code> command (which can be transferred to the library by <code>SUDO_PATH</code> option). Otherwise it will try to set UID of children processes to 0. Please note that <code>sudo</code> command and UID setting will be used only for those commands which require it.</p> <p>If library will be initialized with <code>FORCE_SUDO=true</code> than it will use <code>sudo</code> command (which can be transferred to the library by <code>SUDO_PATH</code> option). Otherwise it will try to set UID of children processes to 0. Please note that <code>sudo</code> command and UID setting will be used only for those commands which require it.</p>
<h2><a href="#helper" class="anchor" name="helper"></a>Helper</h2> <p>Profiles reading should be described. Since profiles has shell-like syntax some variables (which provide an array) cannot be reading by usual ways. To do it library uses bash:</p>
<pre>
# define system variables
env -i bash -c "set"
# get profile and system variable list
env -i bash -c "source '&lt;profile&gt;'; set"
# get profile variables
env -i bash -c "source '&lt;profile&gt;'; for i in &#36;{!&lt;key&gt;[@]}; do echo &#36;{&lt;key&gt;[$i]}; done"
</pre>
<h2><a href="#helper" class="anchor" id="helper"></a>Helper</h2>
<p>First of all the helper <b>does not interact</b> with netctl directly, it uses the library to do it. So all library security notes are applicable here. To start the helper and to create DBus services user must be in <code>network</code> group by default (or must be root). But you may change it by editing <code>$DBUS_SYSTEMCONF_PATH/org.netctlgui.helper.conf</code> policy file (<code>/etc/dbus-1/system.d/org.netctlgui.helper.conf</code> by default). Please refer to DBus documentation to do it.</p> <p>First of all the helper <b>does not interact</b> with netctl directly, it uses the library to do it. So all library security notes are applicable here. To start the helper and to create DBus services user must be in <code>network</code> group by default (or must be root). But you may change it by editing <code>$DBUS_SYSTEMCONF_PATH/org.netctlgui.helper.conf</code> policy file (<code>/etc/dbus-1/system.d/org.netctlgui.helper.conf</code> by default). Please refer to DBus documentation to do it.</p>
<p>There are two binaries <code>netctgui-helper</code> and <code>netctlgui-helper-suid</code>. They are the same, but the second one has SUID bit, so it can be running by normal user without any password. Please note that <b>it is dangerous</b> and recommended way is to use systemd daemon. In this case you may not install <code>netctlgui-helper-suid</code> binary.</p> <p>By default <code>netctgui-helper</code> binary has capabilities to set UID to the children processes (<code>CAP_SETUID</code>). If you do not want to get these capabilities you may use <code>-DUSE_CAPABILITIES</code> cmake flag. Please refer to <code>man 7 capabilities</code> for more details.</p>
<p>There are two configuration files <code>$HOME/.config/netctl-gui.conf</code> and <code>/etc/netctl-gui.conf</code>. The first one is a user configuration and the second one is a system-wide. Please note that by default user configuration has higher priority than system-wide, but running with <code>--system</code> flag user configuration will not be reading. The helper and GUI configurations are the same (although some keys aren't needed).</p> <p>There are two configuration files <code>$HOME/.config/netctl-gui.conf</code> and <code>/etc/netctl-gui.conf</code>. The first one is a user configuration and the second one is a system-wide. Please note that by default user configuration has higher priority than system-wide, but running with <code>--system</code> flag user configuration will not be reading. The helper and GUI configurations are the same (although some keys aren't needed).</p>
<h2><a href="#gui" class="anchor" name="gui"></a>Graphical interface</h2> <h2><a href="#gui" class="anchor" id="gui"></a>Graphical interface</h2>
<p>Graphical interface may interact with netctl over <a href="#helper">DBus (the helper)</a> and over <a href="#library">the library</a>. Please refer to their notes to any additional information. If user uses helper he should have permissions to run it.</p> <p>Graphical interface may interact with netctl over <a href="#helper">DBus (the helper)</a> and over <a href="#library">the library</a>. Please refer to their notes to any additional information. If user uses helper he should have permissions to run it.</p>
<h2><a href="#kde" class="anchor" name="kde"></a>KDE components</h2> <h2><a href="#kde" class="anchor" id="kde"></a>KDE components</h2>
<p>There are two netctl-based commands which are run from the DataEngine</p> <p>There are two netctl-based commands which are run from the DataEngine</p>
<ul> <ul>
<li><code>&lt;cmd&gt; list</code></li> <li><code>&lt;cmd&gt; list</code></li>
@ -79,7 +89,7 @@
<p>The other way is to use DBus communication with <a href="#helper">the helper</a>. In this case user should have rights to start the helper.</p> <p>The other way is to use DBus communication with <a href="#helper">the helper</a>. In this case user should have rights to start the helper.</p>
<h2><a href="#links" class="anchor" name="links"></a>External links</h2> <h2><a href="#links" class="anchor" id="links"></a>External links</h2>
<ul> <ul>
<li><a href="http://arcanis.name/projects/netctl-gui/">Homepage</a></li> <li><a href="http://arcanis.name/projects/netctl-gui/">Homepage</a></li>
<li><a href="https://github.com/arcan1s/netctl-gui">Repository</a></li> <li><a href="https://github.com/arcan1s/netctl-gui">Repository</a></li>

View File

@ -64,7 +64,7 @@ Configuration file
.RE .RE
.SH SEE ALSO .SH SEE ALSO
.BR netctlgui-helper (1) .BR netctlgui-helper (1)
.BR netctlgui-helper.conf (5) .BR netctl-gui.conf (5)
.SH STANDARDS .SH STANDARDS
See See
.B @CMAKE_INSTALL_PREFIX@/share/doc/netctl-gui/netctl-gui-dbus-api.html .B @CMAKE_INSTALL_PREFIX@/share/doc/netctl-gui/netctl-gui-dbus-api.html

View File

@ -1,7 +1,9 @@
# set files # set files
file (GLOB SOURCES *.cpp) file (GLOB_RECURSE SOURCES *.cpp ${PROJECT_TRDPARTY_DIR}/task/*.cpp
file (GLOB HEADERS *.h) ${PROJECT_TRDPARTY_DIR}/language/*.cpp)
file (GLOB FORMS *.ui) file (GLOB_RECURSE HEADERS *.h ${PROJECT_TRDPARTY_DIR}/task/*.h
${PROJECT_TRDPARTY_DIR}/language/*.h)
file (GLOB_RECURSE FORMS *.ui ${PROJECT_TRDPARTY_DIR}/about/*.ui)
file (GLOB LANGUAGES ${SUBPROJECT_TRANSLATION_DIR}/*.ts) file (GLOB LANGUAGES ${SUBPROJECT_TRANSLATION_DIR}/*.ts)
set (RESOURCES ${SUBPROJECT_RESOURCE_DIR}/resources.qrc) set (RESOURCES ${SUBPROJECT_RESOURCE_DIR}/resources.qrc)
@ -11,7 +13,8 @@ include_directories (${CMAKE_CURRENT_SOURCE_DIR}/../../${PROJECT_LIBRARY}/includ
${CMAKE_CURRENT_BINARY_DIR}/../ ${CMAKE_CURRENT_BINARY_DIR}/../
${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}
${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}
${CMAKE_CURRENT_BINARY_DIR}) ${CMAKE_CURRENT_BINARY_DIR}
${PROJECT_TRDPARTY_DIR})
link_directories (${PROJECT_LIBRARY}/src/lib) link_directories (${PROJECT_LIBRARY}/src/lib)
if (USE_QT5) if (USE_QT5)

View File

@ -22,7 +22,8 @@
#include <QDialogButtonBox> #include <QDialogButtonBox>
#include <QPushButton> #include <QPushButton>
#include "pdebug.h" #include <pdebug/pdebug.h>
#include "version.h" #include "version.h"

View File

@ -21,7 +21,7 @@
#include <QDBusMessage> #include <QDBusMessage>
#include <QDebug> #include <QDebug>
#include "pdebug.h" #include <pdebug/pdebug.h>
QList<netctlProfileInfo> parseOutputNetctl(const QList<QVariant> raw, QList<netctlProfileInfo> parseOutputNetctl(const QList<QVariant> raw,

View File

@ -22,7 +22,7 @@
#include <QSpacerItem> #include <QSpacerItem>
#include <QDebug> #include <QDebug>
#include "pdebug.h" #include <pdebug/pdebug.h>
ErrorWindow::ErrorWindow(QWidget *parent, const bool debugCmd) ErrorWindow::ErrorWindow(QWidget *parent, const bool debugCmd)

View File

@ -25,7 +25,8 @@
#include <iostream> #include <iostream>
#include <unistd.h> #include <unistd.h>
#include "language.h" #include <language/language.h>
#include "mainwindow.h" #include "mainwindow.h"
#include "messages.h" #include "messages.h"
#include "version.h" #include "version.h"

View File

@ -24,6 +24,8 @@
#include <QFileInfo> #include <QFileInfo>
#include <QUrl> #include <QUrl>
#include <pdebug/pdebug.h>
#include "bridgewidget.h" #include "bridgewidget.h"
#include "dbusoperation.h" #include "dbusoperation.h"
#include "errorwindow.h" #include "errorwindow.h"
@ -33,7 +35,6 @@
#include "macvlanwidget.h" #include "macvlanwidget.h"
#include "mobilewidget.h" #include "mobilewidget.h"
#include "passwdwidget.h" #include "passwdwidget.h"
#include "pdebug.h"
#include "pppoewidget.h" #include "pppoewidget.h"
#include "tunnelwidget.h" #include "tunnelwidget.h"
#include "tuntapwidget.h" #include "tuntapwidget.h"
@ -60,72 +61,76 @@ void MainWindow::setMenuActionsShown(const bool state)
if (debug) qDebug() << PDEBUG << ":" << "State" << state; if (debug) qDebug() << PDEBUG << ":" << "State" << state;
// main // main
ui->actionMainEdit->setVisible(state); toolBarActions[QString("mainRefresh")]->setVisible(state);
ui->actionMainEnable->setVisible(state); toolBarActions[QString("mainStart")]->setVisible(state);
ui->actionMainRefresh->setVisible(state); toolBarActions[QString("mainSwitch")]->setVisible(state);
ui->actionMainRemove->setVisible(state); toolBarActions[QString("mainRestart")]->setVisible(state);
ui->actionMainRestart->setVisible(state); toolBarActions[QString("mainEnable")]->setVisible(state);
ui->actionMainStart->setVisible(state); toolBarActions[QString("mainStopAll")]->setVisible(state);
ui->actionMainStopAll->setVisible(state); toolBarActions[QString("mainEdit")]->setVisible(state);
ui->actionMainSwitch->setVisible(state); toolBarActions[QString("mainRemove")]->setVisible(state);
// profile // profile
ui->actionProfileClear->setVisible(state); toolBarActions[QString("profileClear")]->setVisible(state);
ui->actionProfileLoad->setVisible(state); toolBarActions[QString("profileLoad")]->setVisible(state);
ui->actionProfileRemove->setVisible(state); toolBarActions[QString("profileSave")]->setVisible(state);
ui->actionProfileSave->setVisible(state); toolBarActions[QString("profileRemove")]->setVisible(state);
// wifi // wifi
ui->actionWifiRefresh->setVisible(state); toolBarActions[QString("wifiRefresh")]->setVisible(state);
ui->actionWifiStart->setVisible(state); toolBarActions[QString("wifiStart")]->setVisible(state);
} }
void MainWindow::updateMenuMain() void MainWindow::updateMenuMain()
{ {
if (debug) qDebug() << PDEBUG; if (debug) qDebug() << PDEBUG;
setMenuActionsShown(false);
actionMenu->setDefaultAction(toolBarActions[QString("mainStart")]);
ui->actionMainRefresh->setVisible(true); toolBarActions[QString("mainRefresh")]->setVisible(true);
if (ui->tableWidget_main->currentItem() == 0) return; if (ui->tableWidget_main->currentItem() == 0) return;
if (!ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 2)->text().isEmpty()) { if (!ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 2)->text().isEmpty()) {
ui->actionMainRestart->setVisible(true); toolBarActions[QString("mainRestart")]->setVisible(true);
ui->actionMainStart->setText(QApplication::translate("MainWindow", "Stop profile")); toolBarActions[QString("mainStart")]->setText(QApplication::translate("MainWindow", "Stop"));
ui->actionMainStart->setIcon(QIcon::fromTheme("process-stop")); toolBarActions[QString("mainStart")]->setIcon(QIcon::fromTheme("process-stop"));
} else { } else {
ui->actionMainStart->setText(QApplication::translate("MainWindow", "Start profile")); toolBarActions[QString("mainStart")]->setText(QApplication::translate("MainWindow", "Start"));
ui->actionMainStart->setIcon(QIcon::fromTheme("system-run")); toolBarActions[QString("mainStart")]->setIcon(QIcon::fromTheme("system-run"));
} }
if (!mainTabGetActiveProfiles().isEmpty()) { if (!mainTabGetActiveProfiles().isEmpty()) {
if (!mainTabGetActiveProfiles() if (!mainTabGetActiveProfiles()
.contains(ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 0)->text())) .contains(ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 0)->text()))
ui->actionMainSwitch->setVisible(true); toolBarActions[QString("mainSwitch")]->setVisible(true);
ui->actionMainStopAll->setVisible(true); toolBarActions[QString("mainStopAll")]->setVisible(true);
} }
ui->actionMainStart->setVisible(true); toolBarActions[QString("mainStart")]->setVisible(true);
if (!ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 3)->text().isEmpty()) { if (!ui->tableWidget_main->item(ui->tableWidget_main->currentItem()->row(), 3)->text().isEmpty()) {
ui->actionMainEnable->setText(QApplication::translate("MainWindow", "Disable profile")); toolBarActions[QString("mainEnable")]->setText(QApplication::translate("MainWindow", "Disable"));
ui->actionMainEnable->setIcon(QIcon::fromTheme("edit-remove")); toolBarActions[QString("mainEnable")]->setIcon(QIcon::fromTheme("edit-remove"));
} else { } else {
ui->actionMainEnable->setText(QApplication::translate("MainWindow", "Enable profile")); toolBarActions[QString("mainEnable")]->setText(QApplication::translate("MainWindow", "Enable"));
ui->actionMainEnable->setIcon(QIcon::fromTheme("edit-add")); toolBarActions[QString("mainEnable")]->setIcon(QIcon::fromTheme("edit-add"));
} }
ui->actionMainEnable->setVisible(true); toolBarActions[QString("mainEnable")]->setVisible(true);
ui->actionMainEdit->setVisible(true); toolBarActions[QString("mainEdit")]->setVisible(true);
ui->actionMainRemove->setVisible(true); toolBarActions[QString("mainRemove")]->setVisible(true);
} }
void MainWindow::updateMenuProfile() void MainWindow::updateMenuProfile()
{ {
if (debug) qDebug() << PDEBUG; if (debug) qDebug() << PDEBUG;
setMenuActionsShown(false);
actionMenu->setDefaultAction(toolBarActions[QString("profileSave")]);
ui->actionProfileClear->setVisible(true); toolBarActions[QString("profileClear")]->setVisible(true);
if (ui->comboBox_profile->currentText().isEmpty()) { if (ui->comboBox_profile->currentText().isEmpty()) {
ui->actionProfileLoad->setVisible(false); toolBarActions[QString("profileLoad")]->setVisible(false);
ui->actionProfileRemove->setVisible(false); toolBarActions[QString("profileRemove")]->setVisible(false);
ui->actionProfileSave->setVisible(false); toolBarActions[QString("profileSave")]->setVisible(false);
} else { } else {
ui->actionProfileLoad->setVisible(true); toolBarActions[QString("profileLoad")]->setVisible(true);
ui->actionProfileRemove->setVisible(true); toolBarActions[QString("profileRemove")]->setVisible(true);
ui->actionProfileSave->setVisible(true); toolBarActions[QString("profileSave")]->setVisible(true);
} }
} }
@ -133,22 +138,46 @@ void MainWindow::updateMenuProfile()
void MainWindow::updateMenuWifi() void MainWindow::updateMenuWifi()
{ {
if (debug) qDebug() << PDEBUG; if (debug) qDebug() << PDEBUG;
setMenuActionsShown(false);
actionMenu->setDefaultAction(toolBarActions[QString("wifiStart")]);
ui->actionWifiRefresh->setVisible(true); toolBarActions[QString("wifiRefresh")]->setVisible(true);
if (ui->tableWidget_wifi->currentItem() == 0) return; if (ui->tableWidget_wifi->currentItem() == 0) return;
if (!ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 4)->text().isEmpty()) { if (!ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 4)->text().isEmpty()) {
if (!ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 3)->text().isEmpty()) { if (!ui->tableWidget_wifi->item(ui->tableWidget_wifi->currentItem()->row(), 3)->text().isEmpty()) {
ui->actionWifiStart->setText(QApplication::translate("MainWindow", "Stop WiFi")); toolBarActions[QString("wifiStart")]->setText(QApplication::translate("MainWindow", "Stop"));
ui->actionWifiStart->setIcon(QIcon::fromTheme("process-stop")); toolBarActions[QString("wifiStart")]->setIcon(QIcon::fromTheme("process-stop"));
} else { } else {
ui->actionWifiStart->setText(QApplication::translate("MainWindow", "Start WiFi")); toolBarActions[QString("wifiStart")]->setText(QApplication::translate("MainWindow", "Start"));
ui->actionWifiStart->setIcon(QIcon::fromTheme("system-run")); toolBarActions[QString("wifiStart")]->setIcon(QIcon::fromTheme("system-run"));
} }
} else { } else {
ui->actionWifiStart->setText(QApplication::translate("MainWindow", "Start WiFi")); toolBarActions[QString("wifiStart")]->setText(QApplication::translate("MainWindow", "Start"));
ui->actionWifiStart->setIcon(QIcon::fromTheme("system-run")); toolBarActions[QString("wifiStart")]->setIcon(QIcon::fromTheme("system-run"));
}
toolBarActions[QString("wifiStart")]->setVisible(true);
}
void MainWindow::updateToolBars()
{
if (debug) qDebug() << PDEBUG;
if (sender() == toolBarActions[QString("menu")]) {
mainToolBar->setHidden(false);
actionToolBar->setHidden(true);
helpToolBar->setHidden(true);
} else if (sender() == toolBarActions[QString("actions")]) {
mainToolBar->setHidden(true);
actionToolBar->setHidden(false);
helpToolBar->setHidden(true);
updateMenu();
} else if (sender() == toolBarActions[QString("help")]) {
mainToolBar->setHidden(true);
actionToolBar->setHidden(true);
helpToolBar->setHidden(false);
} }
ui->actionWifiStart->setVisible(true);
} }
@ -542,32 +571,6 @@ void MainWindow::mainTabSwitchToProfile()
} }
void MainWindow::mainTabRefreshButtons(QTableWidgetItem *current, QTableWidgetItem *previous)
{
Q_UNUSED(previous);
if (debug) qDebug() << PDEBUG;
if (!checkExternalApps(QString("netctl")))
return errorWin->showWindow(1, QString(PDEBUG));
if (current == 0) {
ui->pushButton_mainRestart->setDisabled(true);
ui->pushButton_mainStart->setDisabled(true);
return;
}
ui->pushButton_mainStart->setEnabled(true);
if (!ui->tableWidget_main->item(current->row(), 2)->text().isEmpty()) {
ui->pushButton_mainRestart->setEnabled(true);
ui->pushButton_mainStart->setText(QApplication::translate("MainWindow", "Stop"));
ui->pushButton_mainStart->setIcon(QIcon::fromTheme("process-stop"));
} else {
ui->pushButton_mainRestart->setDisabled(true);
ui->pushButton_mainStart->setText(QApplication::translate("MainWindow", "Start"));
ui->pushButton_mainStart->setIcon(QIcon::fromTheme("system-run"));
}
}
// profile tab slots // profile tab slots
void MainWindow::profileTabChangeState(const QString current) void MainWindow::profileTabChangeState(const QString current)
{ {
@ -1041,12 +1044,9 @@ void MainWindow::wifiTabSetEnabled(const bool state)
if (state) { if (state) {
ui->tableWidget_wifi->show(); ui->tableWidget_wifi->show();
ui->pushButton_wifiRefresh->setEnabled(true);
ui->label_wifi->hide(); ui->label_wifi->hide();
} else { } else {
ui->tableWidget_wifi->hide(); ui->tableWidget_wifi->hide();
ui->pushButton_wifiRefresh->setDisabled(true);
ui->pushButton_wifiStart->setDisabled(true);
ui->label_wifi->show(); ui->label_wifi->show();
} }
} }
@ -1124,34 +1124,3 @@ void MainWindow::wifiTabStart()
updateWifiTab(); updateWifiTab();
} }
void MainWindow::wifiTabRefreshButtons(QTableWidgetItem *current, QTableWidgetItem *previous)
{
Q_UNUSED(previous);
if (debug) qDebug() << PDEBUG;
if (!checkExternalApps(QString("wpasup")))
return errorWin->showWindow(1, QString(PDEBUG));
if (current == 0) {
ui->pushButton_wifiStart->setDisabled(true);
return;
}
if (ui->tableWidget_wifi->item(current->row(), 0)->text() == QString("<hidden>")) {
ui->pushButton_wifiStart->setDisabled(true);
return;
}
ui->pushButton_wifiStart->setEnabled(true);
if (!ui->tableWidget_wifi->item(current->row(), 4)->text().isEmpty()) {
if (!ui->tableWidget_wifi->item(current->row(), 3)->text().isEmpty()) {
ui->pushButton_wifiStart->setText(QApplication::translate("MainWindow", "Stop"));
ui->pushButton_wifiStart->setIcon(QIcon::fromTheme("process-stop"));
} else {
ui->pushButton_wifiStart->setText(QApplication::translate("MainWindow", "Start"));
ui->pushButton_wifiStart->setIcon(QIcon::fromTheme("system-run"));
}
} else {
ui->pushButton_wifiStart->setText(QApplication::translate("MainWindow", "Start"));
ui->pushButton_wifiStart->setIcon(QIcon::fromTheme("system-run"));
}
}

View File

@ -24,15 +24,16 @@
#include <QTranslator> #include <QTranslator>
#include <QUrl> #include <QUrl>
#include <language/language.h>
#include <pdebug/pdebug.h>
#include <task/taskadds.h>
#include "aboutwindow.h" #include "aboutwindow.h"
#include "dbusoperation.h" #include "dbusoperation.h"
#include "errorwindow.h" #include "errorwindow.h"
#include "language.h"
#include "netctlautowindow.h" #include "netctlautowindow.h"
#include "passwdwidget.h" #include "passwdwidget.h"
#include "pdebug.h"
#include "settingswindow.h" #include "settingswindow.h"
#include "taskadds.h"
#include "trayicon.h" #include "trayicon.h"
#include "version.h" #include "version.h"

View File

@ -22,6 +22,9 @@
#include <QDBusMessage> #include <QDBusMessage>
#include <QDebug> #include <QDebug>
#include <pdebug/pdebug.h>
#include <task/taskadds.h>
#include "aboutwindow.h" #include "aboutwindow.h"
#include "bridgewidget.h" #include "bridgewidget.h"
#include "dbusoperation.h" #include "dbusoperation.h"
@ -34,10 +37,8 @@
#include "netctlautowindow.h" #include "netctlautowindow.h"
#include "netctlguiadaptor.h" #include "netctlguiadaptor.h"
#include "passwdwidget.h" #include "passwdwidget.h"
#include "pdebug.h"
#include "pppoewidget.h" #include "pppoewidget.h"
#include "settingswindow.h" #include "settingswindow.h"
#include "taskadds.h"
#include "trayicon.h" #include "trayicon.h"
#include "tunnelwidget.h" #include "tunnelwidget.h"
#include "tuntapwidget.h" #include "tuntapwidget.h"
@ -273,6 +274,7 @@ bool MainWindow::checkExternalApps(const QString apps = QString("all"))
{ {
if (debug) qDebug() << PDEBUG; if (debug) qDebug() << PDEBUG;
if (configuration[QString("SKIPCOMPONENTS")] == QString("true")) return true;
QStringList cmd; QStringList cmd;
cmd.append("which"); cmd.append("which");
cmd.append(configuration[QString("SUDO_PATH")]); cmd.append(configuration[QString("SUDO_PATH")]);
@ -343,52 +345,23 @@ void MainWindow::createActions()
if (debug) qDebug() << PDEBUG; if (debug) qDebug() << PDEBUG;
connect(ui->tabWidget, SIGNAL(currentChanged(int)), this, SLOT(updateTabs(int))); connect(ui->tabWidget, SIGNAL(currentChanged(int)), this, SLOT(updateTabs(int)));
connect(ui->actionAbout, SIGNAL(triggered(bool)), this, SLOT(showAboutWindow()));
connect(ui->actionApi, SIGNAL(triggered(bool)), this, SLOT(showApi()));
connect(ui->actionLibrary, SIGNAL(triggered(bool)), this, SLOT(showLibrary()));
connect(ui->actionNetctlAuto, SIGNAL(triggered(bool)), this, SLOT(showNetctlAutoWindow()));
connect(ui->actionReport, SIGNAL(triggered(bool)), this, SLOT(reportABug()));
connect(ui->actionSecurity, SIGNAL(triggered(bool)), this, SLOT(showSecurityNotes()));
connect(ui->actionSettings, SIGNAL(triggered(bool)), this, SLOT(showSettingsWindow()));
connect(ui->actionQuit, SIGNAL(triggered(bool)), this, SLOT(closeMainWindow()));
// actions menu
connect(ui->menuActions, SIGNAL(aboutToShow()), this, SLOT(updateMenu()));
connect(ui->actionMainEdit, SIGNAL(triggered(bool)), this, SLOT(mainTabEditProfile()));
connect(ui->actionMainEnable, SIGNAL(triggered(bool)), this, SLOT(mainTabEnableProfile()));
connect(ui->actionMainRefresh, SIGNAL(triggered(bool)), this, SLOT(updateMainTab()));
connect(ui->actionMainRemove, SIGNAL(triggered(bool)), this, SLOT(mainTabRemoveProfile()));
connect(ui->actionMainRestart, SIGNAL(triggered(bool)), this, SLOT(mainTabRestartProfile()));
connect(ui->actionMainStart, SIGNAL(triggered(bool)), this, SLOT(mainTabStartProfile()));
connect(ui->actionMainStopAll, SIGNAL(triggered(bool)), this, SLOT(mainTabStopAllProfiles()));
connect(ui->actionMainSwitch, SIGNAL(triggered(bool)), this, SLOT(mainTabSwitchToProfile()));
connect(ui->actionProfileClear, SIGNAL(triggered(bool)), this, SLOT(profileTabClear()));
connect(ui->actionProfileLoad, SIGNAL(triggered(bool)), this, SLOT(profileTabLoadProfile()));
connect(ui->actionProfileRemove, SIGNAL(triggered(bool)), this, SLOT(profileTabRemoveProfile()));
connect(ui->actionProfileSave, SIGNAL(triggered(bool)), this, SLOT(profileTabCreateProfile()));
connect(ui->actionWifiRefresh, SIGNAL(triggered(bool)), this, SLOT(updateWifiTab()));
connect(ui->actionWifiStart, SIGNAL(triggered(bool)), this, SLOT(wifiTabStart()));
// main tab events // main tab events
connect(ui->pushButton_mainRefresh, SIGNAL(clicked(bool)), this, SLOT(updateMainTab()));
connect(ui->pushButton_mainRestart, SIGNAL(clicked(bool)), this, SLOT(mainTabRestartProfile()));
connect(ui->pushButton_mainStart, SIGNAL(clicked(bool)), this, SLOT(mainTabStartProfile()));
connect(ui->pushButton_netctlAuto, SIGNAL(clicked(bool)), this, SLOT(showNetctlAutoWindow())); connect(ui->pushButton_netctlAuto, SIGNAL(clicked(bool)), this, SLOT(showNetctlAutoWindow()));
connect(ui->tableWidget_main, SIGNAL(itemActivated(QTableWidgetItem *)), this, SLOT(mainTabStartProfile())); connect(ui->tableWidget_main, SIGNAL(itemActivated(QTableWidgetItem *)), this, SLOT(mainTabStartProfile()));
connect(ui->tableWidget_main, SIGNAL(currentItemChanged(QTableWidgetItem *, QTableWidgetItem *)), this, SLOT(mainTabRefreshButtons(QTableWidgetItem *, QTableWidgetItem *))); connect(ui->tableWidget_main, SIGNAL(currentItemChanged(QTableWidgetItem *, QTableWidgetItem *)),
this, SLOT(updateMenuMain()));
connect(ui->tableWidget_main, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(mainTabContextualMenu(QPoint))); connect(ui->tableWidget_main, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(mainTabContextualMenu(QPoint)));
// profile tab events // profile tab events
connect(ui->comboBox_profile, SIGNAL(currentIndexChanged(QString)), this, SLOT(profileTabLoadProfile())); connect(ui->comboBox_profile, SIGNAL(currentIndexChanged(QString)), this, SLOT(profileTabLoadProfile()));
connect(ui->pushButton_profileClear, SIGNAL(clicked(bool)), this, SLOT(profileTabClear())); connect(ui->comboBox_profile, SIGNAL(editTextChanged(QString)), this, SLOT(updateMenuProfile()));
connect(ui->pushButton_profileSave, SIGNAL(clicked(bool)), this, SLOT(profileTabCreateProfile()));
connect(generalWid->connectionType, SIGNAL(currentIndexChanged(QString)), this, SLOT(profileTabChangeState(QString))); connect(generalWid->connectionType, SIGNAL(currentIndexChanged(QString)), this, SLOT(profileTabChangeState(QString)));
// wifi tab events // wifi tab events
connect(ui->pushButton_wifiRefresh, SIGNAL(clicked(bool)), this, SLOT(updateWifiTab()));
connect(ui->pushButton_wifiStart, SIGNAL(clicked(bool)), this, SLOT(wifiTabStart()));
connect(ui->tableWidget_wifi, SIGNAL(itemActivated(QTableWidgetItem *)), this, SLOT(wifiTabStart())); connect(ui->tableWidget_wifi, SIGNAL(itemActivated(QTableWidgetItem *)), this, SLOT(wifiTabStart()));
connect(ui->tableWidget_wifi, SIGNAL(currentItemChanged(QTableWidgetItem *, QTableWidgetItem *)), this, SLOT(wifiTabRefreshButtons(QTableWidgetItem *, QTableWidgetItem *))); connect(ui->tableWidget_wifi, SIGNAL(currentItemChanged(QTableWidgetItem *, QTableWidgetItem *)),
this, SLOT(updateMenuWifi()));
connect(ui->tableWidget_wifi, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(wifiTabContextualMenu(QPoint))); connect(ui->tableWidget_wifi, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(wifiTabContextualMenu(QPoint)));
} }
@ -464,6 +437,114 @@ void MainWindow::createObjects()
ui->scrollAreaWidgetContents->layout()->addWidget(vlanWid); ui->scrollAreaWidgetContents->layout()->addWidget(vlanWid);
wirelessWid = new WirelessWidget(this, configuration); wirelessWid = new WirelessWidget(this, configuration);
ui->scrollAreaWidgetContents->layout()->addWidget(wirelessWid); ui->scrollAreaWidgetContents->layout()->addWidget(wirelessWid);
createToolBars();
}
void MainWindow::createToolBars()
{
if (debug) qDebug() << PDEBUG;
toolBarActions[QString("menu")] = ui->menuBar->addAction(QApplication::translate("MainWindow", "Menu"),
this, SLOT(updateToolBars()));
toolBarActions[QString("actions")] = ui->menuBar->addAction(QApplication::translate("MainWindow", "Actions"),
this, SLOT(updateToolBars()));
toolBarActions[QString("help")] = ui->menuBar->addAction(QApplication::translate("MainWindow", "Help"),
this, SLOT(updateToolBars()));
mainToolBar = new QToolBar(this);
mainToolBar->setToolButtonStyle(Qt::ToolButtonFollowStyle);
toolBarActions[QString("netctlAuto")] = mainToolBar->addAction(QApplication::translate("MainWindow", "netctl-auto"),
this, SLOT(showNetctlAutoWindow()));
toolBarActions[QString("settings")] = mainToolBar->addAction(QIcon::fromTheme(QString("configure")),
QApplication::translate("MainWindow", "Settings"),
this, SLOT(showSettingsWindow()));
appShortcuts[QString("settingsShortcut")] = new QShortcut(QKeySequence(QApplication::translate("MainWindow", "Ctrl+S")),
this, SLOT(showSettingsWindow()));
toolBarActions[QString("quit")] = mainToolBar->addAction(QIcon::fromTheme(QString("exit")),
QApplication::translate("MainWindow", "Quit"),
this, SLOT(closeMainWindow()));
appShortcuts[QString("quitShortcut")] = new QShortcut(QKeySequence(QApplication::translate("MainWindow", "Ctrl+Q")),
this, SLOT(closeMainWindow()));
ui->centralLayout->insertWidget(0, mainToolBar);
mainToolBar->setHidden(true);
actionToolBar = new QToolBar(this);
actionToolBar->setToolButtonStyle(Qt::ToolButtonFollowStyle);
toolBarActions[QString("mainRefresh")] = actionToolBar->addAction(QIcon::fromTheme(QString("stock-refresh")),
QApplication::translate("MainWindow", "Refresh"),
this, SLOT(updateMainTab()));
toolBarActions[QString("profileClear")] = actionToolBar->addAction(QIcon::fromTheme(QString("edit-clear")),
QApplication::translate("MainWindow", "Clear"),
this, SLOT(profileTabClear()));
toolBarActions[QString("wifiRefresh")] = actionToolBar->addAction(QIcon::fromTheme(QString("stock-refresh")),
QApplication::translate("MainWindow", "Refresh"),
this, SLOT(updateWifiTab()));
actionMenu = new QToolButton(this);
actionMenu->setPopupMode(QToolButton::DelayedPopup);
actionMenu->setToolButtonStyle(Qt::ToolButtonFollowStyle);
QMenu *menu = new QMenu(actionMenu);
toolBarActions[QString("mainStart")] = menu->addAction(QIcon::fromTheme(QString("system-run")),
QApplication::translate("MainWindow", "Start"),
this, SLOT(mainTabStartProfile()));
toolBarActions[QString("mainSwitch")] = menu->addAction(QIcon::fromTheme(QString("system-run")),
QApplication::translate("MainWindow", "Switch"),
this, SLOT(mainTabSwitchToProfile()));
toolBarActions[QString("mainRestart")] = menu->addAction(QIcon::fromTheme(QString("stock-refresh")),
QApplication::translate("MainWindow", "Restart"),
this, SLOT(mainTabRestartProfile()));
toolBarActions[QString("mainEnable")] = menu->addAction(QIcon::fromTheme(QString("edit-add")),
QApplication::translate("MainWindow", "Enable"),
this, SLOT(mainTabEnableProfile()));
toolBarActions[QString("mainStopAll")] = menu->addAction(QIcon::fromTheme(QString("process-stop")),
QApplication::translate("MainWindow", "Stop all"),
this, SLOT(mainTabStopAllProfiles()));
toolBarActions[QString("profileLoad")] = menu->addAction(QIcon::fromTheme(QString("document-open")),
QApplication::translate("MainWindow", "Load"),
this, SLOT(profileTabLoadProfile()));
toolBarActions[QString("profileSave")] = menu->addAction(QIcon::fromTheme(QString("document-save")),
QApplication::translate("MainWindow", "Save"),
this, SLOT(profileTabCreateProfile()));
toolBarActions[QString("wifiStart")] = menu->addAction(QIcon::fromTheme(QString("system-run")),
QApplication::translate("MainWindow", "Start"),
this, SLOT(wifiTabStart()));
actionMenu->setMenu(menu);
actionToolBar->addWidget(actionMenu);
toolBarActions[QString("mainEdit")] = actionToolBar->addAction(QIcon::fromTheme(QString("edit")),
QApplication::translate("MainWindow", "Edit"),
this, SLOT(mainTabEditProfile()));
toolBarActions[QString("mainRemove")] = actionToolBar->addAction(QIcon::fromTheme(QString("edit-delete")),
QApplication::translate("MainWindow", "Remove"),
this, SLOT(mainTabRemoveProfile()));
toolBarActions[QString("profileRemove")] = actionToolBar->addAction(QIcon::fromTheme(QString("edit-delete")),
QApplication::translate("MainWindow", "Remove"),
this, SLOT(profileTabRemoveProfile()));
ui->centralLayout->insertWidget(0, actionToolBar);
actionToolBar->setHidden(true);
helpToolBar = new QToolBar(this);
helpToolBar->setToolButtonStyle(Qt::ToolButtonFollowStyle);
toolBarActions[QString("security")] = helpToolBar->addAction(QIcon::fromTheme(QString("security-medium")),
QApplication::translate("MainWindow", "Security"),
this, SLOT(showSecurityNotes()));
toolBarActions[QString("api")] = helpToolBar->addAction(QApplication::translate("MainWindow", "DBus API"),
this, SLOT(showApi()));
toolBarActions[QString("library")] = helpToolBar->addAction(QApplication::translate("MainWindow", "Library"),
this, SLOT(showLibrary()));
helpToolBar->addSeparator();
toolBarActions[QString("report")] = helpToolBar->addAction(QIcon::fromTheme(QString("tools-report-bug")),
QApplication::translate("MainWindow", "Report a bug"),
this, SLOT(reportABug()));
toolBarActions[QString("about")] = helpToolBar->addAction(QIcon::fromTheme(QString("help-about")),
QApplication::translate("MainWindow", "About"),
this, SLOT(showAboutWindow()));
ui->centralLayout->insertWidget(0, helpToolBar);
helpToolBar->setHidden(true);
toolBarActions[QString("menu")]->trigger();
} }
@ -493,8 +574,29 @@ void MainWindow::deleteObjects()
if (errorWin != nullptr) delete errorWin; if (errorWin != nullptr) delete errorWin;
if (netctlAutoWin != nullptr) delete netctlAutoWin; if (netctlAutoWin != nullptr) delete netctlAutoWin;
if (settingsWin != nullptr) delete settingsWin; if (settingsWin != nullptr) delete settingsWin;
if (actionMenu != nullptr) {
actionMenu->menu()->clear();
delete actionMenu;
}
if (actionToolBar != nullptr) {
actionToolBar->clear();
delete actionToolBar;
}
if (helpToolBar != nullptr) {
helpToolBar->clear();
delete helpToolBar;
}
if (mainToolBar != nullptr) {
mainToolBar->clear();
delete mainToolBar;
delete appShortcuts[QString("settingsShortcut")];
delete appShortcuts[QString("quitShortcut")];
}
if (trayIcon != nullptr) delete trayIcon; if (trayIcon != nullptr) delete trayIcon;
if (ui != nullptr) delete ui; if (ui != nullptr) {
ui->menuBar->clear();
delete ui;
}
} }

View File

@ -20,7 +20,10 @@
#include <QApplication> #include <QApplication>
#include <QMainWindow> #include <QMainWindow>
#include <QShortcut>
#include <QTableWidgetItem> #include <QTableWidgetItem>
#include <QToolBar>
#include <QToolButton>
#include <netctlgui/netctlgui.h> #include <netctlgui/netctlgui.h>
@ -103,6 +106,7 @@ private slots:
void updateMenuMain(); void updateMenuMain();
void updateMenuProfile(); void updateMenuProfile();
void updateMenuWifi(); void updateMenuWifi();
void updateToolBars();
// tab update slots // tab update slots
void updateMainTab(); void updateMainTab();
void updateProfileTab(); void updateProfileTab();
@ -117,7 +121,6 @@ private slots:
void mainTabStartProfile(); void mainTabStartProfile();
void mainTabStopAllProfiles(); void mainTabStopAllProfiles();
void mainTabSwitchToProfile(); void mainTabSwitchToProfile();
void mainTabRefreshButtons(QTableWidgetItem *current, QTableWidgetItem *previous);
// profile tab slots // profile tab slots
void profileTabChangeState(const QString current); void profileTabChangeState(const QString current);
void profileTabClear(); void profileTabClear();
@ -128,11 +131,16 @@ private slots:
void wifiTabContextualMenu(const QPoint &pos); void wifiTabContextualMenu(const QPoint &pos);
void wifiTabSetEnabled(const bool state); void wifiTabSetEnabled(const bool state);
void wifiTabStart(); void wifiTabStart();
void wifiTabRefreshButtons(QTableWidgetItem *current, QTableWidgetItem *previous);
private: private:
// ui // ui
TrayIcon *trayIcon = nullptr; TrayIcon *trayIcon = nullptr;
QMap<QString, QShortcut *> appShortcuts;
QMap<QString, QAction *> toolBarActions;
QToolButton *actionMenu = nullptr;
QToolBar *actionToolBar = nullptr;
QToolBar *helpToolBar = nullptr;
QToolBar *mainToolBar = nullptr;
Ui::MainWindow *ui = nullptr; Ui::MainWindow *ui = nullptr;
AboutWindow *aboutWin = nullptr; AboutWindow *aboutWin = nullptr;
ErrorWindow *errorWin = nullptr; ErrorWindow *errorWin = nullptr;
@ -160,6 +168,7 @@ private:
void createActions(); void createActions();
void createDBusSession(); void createDBusSession();
void createObjects(); void createObjects();
void createToolBars();
void deleteObjects(); void deleteObjects();
void keyPressEvent(QKeyEvent *pressedKey); void keyPressEvent(QKeyEvent *pressedKey);
QString configPath; QString configPath;

View File

@ -14,7 +14,7 @@
<string>Netctl GUI</string> <string>Netctl GUI</string>
</property> </property>
<widget class="QWidget" name="centralWidget"> <widget class="QWidget" name="centralWidget">
<layout class="QVBoxLayout" name="verticalLayout_4"> <layout class="QVBoxLayout" name="centralLayout">
<item> <item>
<widget class="QTabWidget" name="tabWidget"> <widget class="QTabWidget" name="tabWidget">
<property name="currentIndex"> <property name="currentIndex">
@ -101,77 +101,6 @@
<column/> <column/>
</widget> </widget>
</item> </item>
<item>
<layout class="QHBoxLayout" name="layout_mainButtons">
<item>
<widget class="QPushButton" name="pushButton_mainRefresh">
<property name="text">
<string>Refresh</string>
</property>
<property name="icon">
<iconset theme="stock-refresh">
<normaloff/>
</iconset>
</property>
<property name="shortcut">
<string>Ctrl+R</string>
</property>
<property name="autoDefault">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<spacer name="spacer_mainButtons">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="pushButton_mainRestart">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Restart</string>
</property>
<property name="icon">
<iconset theme="stock-refresh">
<normaloff/>
</iconset>
</property>
<property name="autoDefault">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_mainStart">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Start</string>
</property>
<property name="icon">
<iconset theme="system-run">
<normaloff/>
</iconset>
</property>
<property name="autoDefault">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
</layout> </layout>
</widget> </widget>
<widget class="QWidget" name="tab_new"> <widget class="QWidget" name="tab_new">
@ -228,7 +157,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>437</width> <width>437</width>
<height>338</height> <height>371</height>
</rect> </rect>
</property> </property>
<property name="sizePolicy"> <property name="sizePolicy">
@ -241,47 +170,6 @@
</widget> </widget>
</widget> </widget>
</item> </item>
<item>
<layout class="QHBoxLayout" name="layout_newProfileButtons">
<item>
<widget class="QPushButton" name="pushButton_profileClear">
<property name="text">
<string>Clear</string>
</property>
<property name="icon">
<iconset theme="edit-clear">
<normaloff/>
</iconset>
</property>
</widget>
</item>
<item>
<spacer name="spacer_newProfileButtons">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="pushButton_profileSave">
<property name="text">
<string>Save</string>
</property>
<property name="icon">
<iconset theme="document-save">
<normaloff/>
</iconset>
</property>
</widget>
</item>
</layout>
</item>
</layout> </layout>
</widget> </widget>
<widget class="QWidget" name="tab_wifi"> <widget class="QWidget" name="tab_wifi">
@ -290,7 +178,7 @@
<normaloff>:/wifi.png</normaloff>:/wifi.png</iconset> <normaloff>:/wifi.png</normaloff>:/wifi.png</iconset>
</attribute> </attribute>
<attribute name="title"> <attribute name="title">
<string>Connect to Wi-Fi</string> <string>WiFi menu</string>
</attribute> </attribute>
<layout class="QVBoxLayout" name="verticalLayout_2"> <layout class="QVBoxLayout" name="verticalLayout_2">
<item> <item>
@ -357,59 +245,6 @@
<column/> <column/>
</widget> </widget>
</item> </item>
<item>
<layout class="QHBoxLayout" name="layout_wifiButtons">
<item>
<widget class="QPushButton" name="pushButton_wifiRefresh">
<property name="text">
<string>Refresh</string>
</property>
<property name="icon">
<iconset theme="stock-refresh">
<normaloff/>
</iconset>
</property>
<property name="shortcut">
<string>Ctrl+R</string>
</property>
<property name="autoDefault">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<spacer name="spacer_wifiButtons">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="pushButton_wifiStart">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Start</string>
</property>
<property name="icon">
<iconset theme="system-run">
<normaloff/>
</iconset>
</property>
<property name="autoDefault">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
</layout> </layout>
</widget> </widget>
</widget> </widget>
@ -425,271 +260,14 @@
<height>22</height> <height>22</height>
</rect> </rect>
</property> </property>
<widget class="QMenu" name="menuMenu">
<property name="title">
<string>Menu</string>
</property>
<addaction name="actionNetctlAuto"/>
<addaction name="actionSettings"/>
<addaction name="actionQuit"/>
</widget>
<widget class="QMenu" name="menuActions">
<property name="title">
<string>Actions</string>
</property>
<addaction name="actionMainRefresh"/>
<addaction name="actionWifiRefresh"/>
<addaction name="actionProfileClear"/>
<addaction name="separator"/>
<addaction name="actionMainStart"/>
<addaction name="actionMainSwitch"/>
<addaction name="actionMainRestart"/>
<addaction name="actionMainEnable"/>
<addaction name="actionMainStopAll"/>
<addaction name="actionProfileLoad"/>
<addaction name="actionProfileSave"/>
<addaction name="actionWifiStart"/>
<addaction name="separator"/>
<addaction name="actionMainEdit"/>
<addaction name="actionMainRemove"/>
<addaction name="actionProfileRemove"/>
</widget>
<widget class="QMenu" name="menuHelp">
<property name="title">
<string>Help</string>
</property>
<addaction name="actionSecurity"/>
<addaction name="actionApi"/>
<addaction name="actionLibrary"/>
<addaction name="separator"/>
<addaction name="actionReport"/>
<addaction name="actionAbout"/>
</widget>
<addaction name="menuMenu"/>
<addaction name="menuActions"/>
<addaction name="menuHelp"/>
</widget> </widget>
<widget class="QStatusBar" name="statusBar"/> <widget class="QStatusBar" name="statusBar"/>
<action name="actionSettings">
<property name="icon">
<iconset theme="configure">
<normaloff/>
</iconset>
</property>
<property name="text">
<string>Settings</string>
</property>
<property name="shortcut">
<string>Ctrl+S</string>
</property>
</action>
<action name="actionQuit">
<property name="icon">
<iconset theme="exit">
<normaloff/>
</iconset>
</property>
<property name="text">
<string>Quit</string>
</property>
<property name="shortcut">
<string>Ctrl+Q</string>
</property>
</action>
<action name="actionMainRefresh">
<property name="icon">
<iconset theme="stock-refresh">
<normaloff/>
</iconset>
</property>
<property name="text">
<string>Refresh</string>
</property>
</action>
<action name="actionMainStart">
<property name="icon">
<iconset theme="system-run">
<normaloff/>
</iconset>
</property>
<property name="text">
<string>Start profile</string>
</property>
</action>
<action name="actionMainRestart">
<property name="icon">
<iconset theme="stock-refresh">
<normaloff/>
</iconset>
</property>
<property name="text">
<string>Restart profile</string>
</property>
</action>
<action name="actionMainEnable">
<property name="icon">
<iconset theme="edit-add">
<normaloff/>
</iconset>
</property>
<property name="text">
<string>Enable profile</string>
</property>
</action>
<action name="actionMainEdit">
<property name="icon">
<iconset theme="edit">
<normaloff/>
</iconset>
</property>
<property name="text">
<string>Edit profile</string>
</property>
</action>
<action name="actionMainRemove">
<property name="icon">
<iconset theme="edit-delete">
<normaloff/>
</iconset>
</property>
<property name="text">
<string>Remove profile</string>
</property>
</action>
<action name="actionProfileClear">
<property name="icon">
<iconset theme="edit-clear">
<normaloff/>
</iconset>
</property>
<property name="text">
<string>Clear</string>
</property>
</action>
<action name="actionWifiRefresh">
<property name="icon">
<iconset theme="stock-refresh">
<normaloff/>
</iconset>
</property>
<property name="text">
<string>Refresh</string>
</property>
</action>
<action name="actionProfileLoad">
<property name="icon">
<iconset theme="document-open">
<normaloff/>
</iconset>
</property>
<property name="text">
<string>Load profile</string>
</property>
</action>
<action name="actionProfileSave">
<property name="icon">
<iconset theme="document-save">
<normaloff/>
</iconset>
</property>
<property name="text">
<string>Save profile</string>
</property>
</action>
<action name="actionWifiStart">
<property name="icon">
<iconset theme="system-run">
<normaloff/>
</iconset>
</property>
<property name="text">
<string>Start Wi-Fi</string>
</property>
</action>
<action name="actionProfileRemove">
<property name="icon">
<iconset theme="edit-delete">
<normaloff/>
</iconset>
</property>
<property name="text">
<string>Remove profile</string>
</property>
</action>
<action name="actionNetctlAuto">
<property name="text">
<string>netctl-auto</string>
</property>
</action>
<action name="actionAbout">
<property name="icon">
<iconset theme="help-about">
<normaloff/>
</iconset>
</property>
<property name="text">
<string>About</string>
</property>
</action>
<action name="actionReport">
<property name="icon">
<iconset theme="tools-report-bug">
<normaloff/>
</iconset>
</property>
<property name="text">
<string>Report a bug</string>
</property>
</action>
<action name="actionApi">
<property name="text">
<string>DBus API reference</string>
</property>
</action>
<action name="actionSecurity">
<property name="icon">
<iconset theme="security-medium">
<normaloff/>
</iconset>
</property>
<property name="text">
<string>Security notes</string>
</property>
</action>
<action name="actionLibrary">
<property name="text">
<string>Library documentation</string>
</property>
</action>
<action name="actionMainSwitch">
<property name="icon">
<iconset theme="system-run"/>
</property>
<property name="text">
<string>Switch to profile</string>
</property>
</action>
<action name="actionMainStopAll">
<property name="icon">
<iconset theme="process-stop"/>
</property>
<property name="text">
<string>Stop all profiles</string>
</property>
</action>
</widget> </widget>
<tabstops> <tabstops>
<tabstop>tabWidget</tabstop> <tabstop>tabWidget</tabstop>
<tabstop>tableWidget_main</tabstop> <tabstop>tableWidget_main</tabstop>
<tabstop>pushButton_mainRefresh</tabstop>
<tabstop>pushButton_mainRestart</tabstop>
<tabstop>pushButton_mainStart</tabstop>
<tabstop>scrollArea</tabstop> <tabstop>scrollArea</tabstop>
<tabstop>pushButton_profileClear</tabstop>
<tabstop>pushButton_profileSave</tabstop>
<tabstop>tableWidget_wifi</tabstop> <tabstop>tableWidget_wifi</tabstop>
<tabstop>pushButton_wifiRefresh</tabstop>
<tabstop>pushButton_wifiStart</tabstop>
</tabstops> </tabstops>
<resources> <resources>
<include location="../../resources/resources.qrc"/> <include location="../../resources/resources.qrc"/>

View File

@ -117,19 +117,33 @@ QString infoMessage()
{ {
QString infoMessage = QString(""); QString infoMessage = QString("");
// build information // build information
infoMessage += QCoreApplication::translate("MainWindow", "Build date: %1"). infoMessage += QApplication::translate("MainWindow", "Build date: %1").
arg(QString(BUILD_DATE)); arg(QString(BUILD_DATE));
infoMessage += QString("\n%1:\n").arg(QCoreApplication::translate("MainWindow", "cmake flags")); // cmake
infoMessage += QString("\t-DCMAKE_BUILD_TYPE=%1 \\\n").arg(QString(CMAKE_BUILD_TYPE)); infoMessage += QString("\n%1:\n").arg(QApplication::translate("MainWindow", "cmake flags"));
infoMessage += QString("\t-DCMAKE_INSTALL_PREFIX=%1 \\\n").arg(QString(CMAKE_INSTALL_PREFIX)); // cmake properties
infoMessage += QString("\t-DBUILD_DOCS=%1 \\\n").arg(QString(PROJECT_BUILD_DOCS)); infoMessage += QString("%1:\n").arg(QApplication::translate("MainWindow", "cmake properties"));
infoMessage += QString("\t-DBUILD_LIBRARY=%1 \\\n").arg(QString(PROJECT_BUILD_LIBRARY)); infoMessage += QString("\t-DCMAKE_BUILD_TYPE=%1\n").arg(QString(CMAKE_BUILD_TYPE));
infoMessage += QString("\t-DBUILD_GUI=%1 \\\n").arg(QString(PROJECT_BUILD_GUI)); infoMessage += QString("\t-DCMAKE_INSTALL_PREFIX=%1\n").arg(QString(CMAKE_INSTALL_PREFIX));
infoMessage += QString("\t-DUSE_QT5=%1 \\\n").arg(QString(PROJECT_USE_QT5)); // components
infoMessage += QString("\t-DBUILD_DATAENGINE=%1 \\\n").arg(QString(PROJECT_BUILD_DATAENGINE)); infoMessage += QString("%1:\n").arg(QApplication::translate("MainWindow", "Components"));
infoMessage += QString("\t-DBUILD_DATAENGINE=%1\n").arg(QString(PROJECT_BUILD_DATAENGINE));
infoMessage += QString("\t-DBUILD_GUI=%1\n").arg(QString(PROJECT_BUILD_GUI));
infoMessage += QString("\t-DBUILD_HELPER=%1\n").arg(QString(PROJECT_BUILD_HELPER));
infoMessage += QString("\t-DBUILD_LIBRARY=%1\n").arg(QString(PROJECT_BUILD_LIBRARY));
infoMessage += QString("\t-DBUILD_PLASMOID=%1\n").arg(QString(PROJECT_BUILD_PLASMOID)); infoMessage += QString("\t-DBUILD_PLASMOID=%1\n").arg(QString(PROJECT_BUILD_PLASMOID));
// additional components
infoMessage += QString("%1:\n").arg(QApplication::translate("MainWindow", "Additional components"));
infoMessage += QString("\t-DBUILD_DOCS=%1\n").arg(QString(PROJECT_BUILD_DOCS));
infoMessage += QString("\t-DBUILD_TEST=%1\n").arg(QString(PROJECT_BUILD_TEST));
// project properties
infoMessage += QString("%1:\n").arg(QApplication::translate("MainWindow", "Project properties"));
infoMessage += QString("\t-DDBUS_SYSTEMCONF_PATH=%1\n").arg(QString(PROJECT_DBUS_SYSTEMCONF_PATH));
infoMessage += QString("\t-DSYSTEMD_SERVICE_PATH=%1\n").arg(QString(PROJECT_SYSTEMD_SERVICE_PATH));
infoMessage += QString("\t-DUSE_CAPABILITIES=%1\n").arg(QString(PROJECT_USE_CAPABILITIES));
infoMessage += QString("\t-DUSE_QT5=%1\n").arg(QString(PROJECT_USE_QT5));
// transport information // transport information
infoMessage += QString("%1:\n").arg(QCoreApplication::translate("MainWindow", "DBus configuration")); infoMessage += QString("%1:\n").arg(QApplication::translate("MainWindow", "DBus configuration"));
infoMessage += QString("\tDBUS_SERVICE=%1\n").arg(QString(DBUS_SERVICE)); infoMessage += QString("\tDBUS_SERVICE=%1\n").arg(QString(DBUS_SERVICE));
infoMessage += QString("\tDBUS_INTERFACE=%1\n").arg(QString(DBUS_INTERFACE)); infoMessage += QString("\tDBUS_INTERFACE=%1\n").arg(QString(DBUS_INTERFACE));
infoMessage += QString("\tDBUS_OBJECT_PATH=%1\n").arg(QString(DBUS_OBJECT_PATH)); infoMessage += QString("\tDBUS_OBJECT_PATH=%1\n").arg(QString(DBUS_OBJECT_PATH));
@ -138,11 +152,8 @@ QString infoMessage()
infoMessage += QString("\tDBUS_CTRL_PATH=%1\n").arg(QString(DBUS_CTRL_PATH)); infoMessage += QString("\tDBUS_CTRL_PATH=%1\n").arg(QString(DBUS_CTRL_PATH));
infoMessage += QString("\tDBUS_LIB_PATH=%1\n").arg(QString(DBUS_LIB_PATH)); infoMessage += QString("\tDBUS_LIB_PATH=%1\n").arg(QString(DBUS_LIB_PATH));
// docs path // docs path
infoMessage += QString("%1:\n").arg(QCoreApplication::translate("MainWindow", "Documentation")); infoMessage += QString("%1:\n").arg(QApplication::translate("MainWindow", "Documentation"));
infoMessage += QString("\tDOCS_PATH=%1\n").arg(QString(DOCS_PATH)); infoMessage += QString("\tDOCS_PATH=%1\n").arg(QString(DOCS_PATH));
QStringList docs = QDir(QString(DOCS_PATH)).entryList(QDir::NoDotAndDotDot);
for (int i=0; i<docs.count(); i++)
infoMessage += QString("\t%1\n").arg(docs[i]);
return infoMessage; return infoMessage;
} }

View File

@ -21,9 +21,9 @@
#include <QDebug> #include <QDebug>
#include <netctlgui/netctlgui.h> #include <netctlgui/netctlgui.h>
#include <pdebug/pdebug.h>
#include "dbusoperation.h" #include "dbusoperation.h"
#include "pdebug.h"
#include "version.h" #include "version.h"

View File

@ -1 +0,0 @@
../../3rdparty/pdebug/pdebug.h

View File

@ -23,9 +23,10 @@
#include <QFileDialog> #include <QFileDialog>
#include <QTextStream> #include <QTextStream>
#include "language.h" #include <language/language.h>
#include <pdebug/pdebug.h>
#include "mainwindow.h" #include "mainwindow.h"
#include "pdebug.h"
SettingsWindow::SettingsWindow(QWidget *parent, const bool debugCmd, const QString configFile) SettingsWindow::SettingsWindow(QWidget *parent, const bool debugCmd, const QString configFile)
@ -262,6 +263,10 @@ QMap<QString, QString> SettingsWindow::readSettings()
settings[QString("PREFERED_IFACE")] = ui->lineEdit_interface->text(); settings[QString("PREFERED_IFACE")] = ui->lineEdit_interface->text();
settings[QString("PROFILE_DIR")] = ui->lineEdit_profilePath->text(); settings[QString("PROFILE_DIR")] = ui->lineEdit_profilePath->text();
settings[QString("RFKILL_DIR")] = ui->lineEdit_rfkill->text(); settings[QString("RFKILL_DIR")] = ui->lineEdit_rfkill->text();
if (ui->checkBox_components->checkState() == 2)
settings[QString("SKIPCOMPONENTS")] = QString("true");
else
settings[QString("SKIPCOMPONENTS")] = QString("false");
if (ui->checkBox_startToTray->checkState() == 2) if (ui->checkBox_startToTray->checkState() == 2)
settings[QString("STARTTOTRAY")] = QString("true"); settings[QString("STARTTOTRAY")] = QString("true");
else else
@ -318,6 +323,10 @@ void SettingsWindow::setSettings(const QMap<QString, QString> settings)
ui->lineEdit_interface->setText(settings[QString("PREFERED_IFACE")]); ui->lineEdit_interface->setText(settings[QString("PREFERED_IFACE")]);
ui->lineEdit_profilePath->setText(settings[QString("PROFILE_DIR")]); ui->lineEdit_profilePath->setText(settings[QString("PROFILE_DIR")]);
ui->lineEdit_rfkill->setText(settings[QString("RFKILL_DIR")]); ui->lineEdit_rfkill->setText(settings[QString("RFKILL_DIR")]);
if (settings[QString("SKIPCOMPONENTS")] == QString("true"))
ui->checkBox_components->setCheckState(Qt::Checked);
else
ui->checkBox_components->setCheckState(Qt::Unchecked);
if (settings[QString("STARTTOTRAY")] == QString("true")) if (settings[QString("STARTTOTRAY")] == QString("true"))
ui->checkBox_startToTray->setCheckState(Qt::Checked); ui->checkBox_startToTray->setCheckState(Qt::Checked);
else else
@ -361,6 +370,7 @@ QMap<QString, QString> SettingsWindow::getDefault()
settings[QString("PREFERED_IFACE")] = QString(""); settings[QString("PREFERED_IFACE")] = QString("");
settings[QString("PROFILE_DIR")] = QString("/etc/netctl/"); settings[QString("PROFILE_DIR")] = QString("/etc/netctl/");
settings[QString("RFKILL_DIR")] = QString("/sys/class/rfkill/"); settings[QString("RFKILL_DIR")] = QString("/sys/class/rfkill/");
settings[QString("SKIPCOMPONENTS")] = QString("false");
settings[QString("STARTTOTRAY")] = QString("false"); settings[QString("STARTTOTRAY")] = QString("false");
settings[QString("SUDO_PATH")] = QString("/usr/bin/kdesu"); settings[QString("SUDO_PATH")] = QString("/usr/bin/kdesu");
settings[QString("SYSTEMCTL_PATH")] = QString("/usr/bin/systemctl"); settings[QString("SYSTEMCTL_PATH")] = QString("/usr/bin/systemctl");

View File

@ -180,6 +180,13 @@
</property> </property>
</widget> </widget>
</item> </item>
<item>
<widget class="QCheckBox" name="checkBox_components">
<property name="text">
<string>Skip components checking</string>
</property>
</widget>
</item>
<item> <item>
<spacer name="spacer_general"> <spacer name="spacer_general">
<property name="orientation"> <property name="orientation">
@ -212,7 +219,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>397</width> <width>397</width>
<height>322</height> <height>256</height>
</rect> </rect>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_13"> <layout class="QVBoxLayout" name="verticalLayout_13">
@ -296,16 +303,6 @@
</property> </property>
</widget> </widget>
</item> </item>
<item>
<widget class="QLabel" name="label_helperPathInfo">
<property name="text">
<string>There are too binaries. `netctlgui-helper` should be running as root (for example from systemd), otherwise interface `/ctrl` will not be available. `netctlgui-helper-suid` may be running as normal user, but you should keep it in mind that it has SUID bit.</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item> <item>
<layout class="QHBoxLayout" name="layout_helperPath"> <layout class="QHBoxLayout" name="layout_helperPath">
<item> <item>

View File

@ -1 +0,0 @@
../../3rdparty/task/task.h

View File

@ -1 +0,0 @@
../../3rdparty/task/taskadds.cpp

View File

@ -1 +0,0 @@
../../3rdparty/task/taskadds.h

View File

@ -21,8 +21,9 @@
#include <QMenu> #include <QMenu>
#include <QMessageBox> #include <QMessageBox>
#include <pdebug/pdebug.h>
#include "mainwindow.h" #include "mainwindow.h"
#include "pdebug.h"
TrayIcon::TrayIcon(QObject *parent, const bool debugCmd) TrayIcon::TrayIcon(QObject *parent, const bool debugCmd)
@ -164,6 +165,8 @@ void TrayIcon::updateMenu()
contextMenu[QString("gui")]->setText(QApplication::translate("TrayIcon", "Show")); contextMenu[QString("gui")]->setText(QApplication::translate("TrayIcon", "Show"));
else else
contextMenu[QString("gui")]->setText(QApplication::translate("TrayIcon", "Hide")); contextMenu[QString("gui")]->setText(QApplication::translate("TrayIcon", "Hide"));
setContextMenu(menuActions);
} }
@ -175,6 +178,7 @@ void TrayIcon::createActions()
contextMenu[QString("title")] = new QAction(QIcon(":icon"), QApplication::translate("TrayIcon", "Status"), this); contextMenu[QString("title")] = new QAction(QIcon(":icon"), QApplication::translate("TrayIcon", "Status"), this);
menuActions->addAction(contextMenu[QString("title")]); menuActions->addAction(contextMenu[QString("title")]);
connect(contextMenu[QString("title")], SIGNAL(triggered(bool)), this, SLOT(showInformationInWindow()));
menuActions->addSeparator(); menuActions->addSeparator();
@ -232,9 +236,7 @@ void TrayIcon::init()
setToolTip(QString("netctl-gui")); setToolTip(QString("netctl-gui"));
createActions(); createActions();
setContextMenu(menuActions);
connect(this, SIGNAL(messageClicked()), this, SLOT(showInformationInWindow()));
connect(this, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), connect(this, SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
this, SLOT(itemActivated(QSystemTrayIcon::ActivationReason))); this, SLOT(itemActivated(QSystemTrayIcon::ActivationReason)));
} }
@ -253,6 +255,8 @@ void TrayIcon::itemActivated(const QSystemTrayIcon::ActivationReason reason)
mainWindow->showMainWindow(); mainWindow->showMainWindow();
break; break;
case QSystemTrayIcon::Context: case QSystemTrayIcon::Context:
// clear menu before update
setContextMenu(0);
updateMenu(); updateMenu();
break; break;
default: default:

View File

@ -55,6 +55,7 @@ _netctl_gui_settings=(
'PREFERED_IFACE' 'PREFERED_IFACE'
'PROFILE_DIR' 'PROFILE_DIR'
'RFKILL_DIR' 'RFKILL_DIR'
'SKIPCOMPONENTS'
'STARTTOTRAY' 'STARTTOTRAY'
'SUDO_PATH' 'SUDO_PATH'
'SYSTEMCTL_PATH' 'SYSTEMCTL_PATH'

View File

@ -24,7 +24,7 @@ configure_file (${SUBPROJECT_MAN_IN} ${CMAKE_CURRENT_BINARY_DIR}/${SUBPROJECT_MA
configure_file (${SUBPROJECT_MAN5_IN} ${CMAKE_CURRENT_BINARY_DIR}/${SUBPROJECT_MAN5}) configure_file (${SUBPROJECT_MAN5_IN} ${CMAKE_CURRENT_BINARY_DIR}/${SUBPROJECT_MAN5})
install (FILES org.netctlgui.helper.conf DESTINATION ${DBUS_SYSTEMCONF_PATH}) install (FILES org.netctlgui.helper.conf DESTINATION ${DBUS_SYSTEMCONF_PATH})
install (FILES netctlgui-helper.conf DESTINATION /etc) install (FILES netctl-gui.conf DESTINATION /etc)
install (FILES netctlgui-helper.service DESTINATION ${SYSTEMD_SERVICE_PATH}) install (FILES netctlgui-helper.service DESTINATION ${SYSTEMD_SERVICE_PATH})
install (FILES ${CMAKE_CURRENT_BINARY_DIR}/${SUBPROJECT_MAN} DESTINATION share/man/man1/) install (FILES ${CMAKE_CURRENT_BINARY_DIR}/${SUBPROJECT_MAN} DESTINATION share/man/man1/)
install (FILES ${CMAKE_CURRENT_BINARY_DIR}/${SUBPROJECT_MAN5} DESTINATION share/man/man5/) install (FILES ${CMAKE_CURRENT_BINARY_DIR}/${SUBPROJECT_MAN5} DESTINATION share/man/man5/)

View File

@ -1,5 +1,5 @@
# Configuration file for Netctl GUI project # Configuration file for Netctl GUI project
# /etc/netctlgui-helper.conf - system-wide configuration # /etc/netctl-gui.conf - system-wide configuration
# $HOME/.config/netctl-gui.conf - user configuration # $HOME/.config/netctl-gui.conf - user configuration
# close helper after GUI application quit. # close helper after GUI application quit.
@ -39,6 +39,9 @@ PROFILE_DIR=/etc/netctl/
# path to directory with rfkill devices. # path to directory with rfkill devices.
# This option is not recognized by netctlgui-helper # This option is not recognized by netctlgui-helper
RFKILL_DIR=/sys/class/rfkill/ RFKILL_DIR=/sys/class/rfkill/
# skip external components checking
# This option is not recognized by netctlgui-helper
SKIPCOMPONENTS=false
# start netctl-gui minimized to tray if it is available. # start netctl-gui minimized to tray if it is available.
# This option is not recognized by netctlgui-helper # This option is not recognized by netctlgui-helper
STARTTOTRAY=false STARTTOTRAY=false

View File

@ -1,13 +1,13 @@
.TH netctlgui-helper.conf 5 "@CURRENT_DATE@" "version @PROJECT_VERSION@" "File Formats Manual" .TH netctl-gui.conf 5 "@CURRENT_DATE@" "version @PROJECT_VERSION@" "File Formats Manual"
.SH NAME .SH NAME
netctlgui-helper.conf is a configuration file of Netctl GUI project netctl-gui.conf is a configuration file of Netctl GUI project
.SH SYNOPSIS .SH SYNOPSIS
.B /etc/netctlgui-helper.conf .B /etc/netctl-gui.conf
for system-wide configuration or for system-wide configuration or
.B $HOME/.config/netctl-gui.conf .B $HOME/.config/netctl-gui.conf
for user one for user one
.SH DESCRIPTION .SH DESCRIPTION
.B netctlgui-helper.conf .B netctl-gui.conf
is a file which contains parameters for is a file which contains parameters for
.BR netctlgui-helper (1) .BR netctlgui-helper (1)
and may be used as template for and may be used as template for
@ -70,6 +70,9 @@ path to directory with
.BR rfkill (8) .BR rfkill (8)
devices. This option is not recognized by devices. This option is not recognized by
.BR netctlgui-helper (1) .BR netctlgui-helper (1)
.IP "SKIPCOMPONENTS=false"
skip external components checking. This option is not recognized by
.BR netctlgui-helper (1)
.IP "STARTTOTRAY=false" .IP "STARTTOTRAY=false"
start start
.BR netctl-gui (1) .BR netctl-gui (1)

View File

@ -34,7 +34,7 @@ show this help and exit
.SH FILES .SH FILES
.I $HOME/.config/netctl-gui.conf .I $HOME/.config/netctl-gui.conf
, ,
.I /etc/netctlgui-helper.conf .I /etc/netctl-gui.conf
.RS .RS
Configuration files Configuration files
.RE .RE
@ -64,7 +64,7 @@ By the way it is highly recommended to copy source service file before to
and edit copied file to avoid upgrade problems. and edit copied file to avoid upgrade problems.
.SH SEE ALSO .SH SEE ALSO
.BR netctl-gui (1) .BR netctl-gui (1)
.BR netctlgui-helper.conf (5) .BR netctl-gui.conf (5)
.SH STANDARDS .SH STANDARDS
See See
.B @CMAKE_INSTALL_PREFIX@/share/doc/netctl-gui/netctl-gui-dbus-api.html .B @CMAKE_INSTALL_PREFIX@/share/doc/netctl-gui/netctl-gui-dbus-api.html

View File

@ -1,6 +1,8 @@
# set files # set files
file (GLOB SOURCES *.cpp) file (GLOB_RECURSE SOURCES *.cpp ${PROJECT_TRDPARTY_DIR}/task/*.cpp
file (GLOB HEADERS *.h) ${PROJECT_TRDPARTY_DIR}/language/*.cpp)
file (GLOB_RECURSE HEADERS *.h ${PROJECT_TRDPARTY_DIR}/task/*.h
${PROJECT_TRDPARTY_DIR}/language/*.h)
file (GLOB LANGUAGES ${SUBPROJECT_TRANSLATION_DIR}/*.ts) file (GLOB LANGUAGES ${SUBPROJECT_TRANSLATION_DIR}/*.ts)
set (RESOURCES ${SUBPROJECT_RESOURCE_DIR}/resources-helper.qrc) set (RESOURCES ${SUBPROJECT_RESOURCE_DIR}/resources-helper.qrc)
@ -10,7 +12,8 @@ include_directories (${CMAKE_CURRENT_SOURCE_DIR}/../../${PROJECT_LIBRARY}/includ
${CMAKE_CURRENT_BINARY_DIR}/../ ${CMAKE_CURRENT_BINARY_DIR}/../
${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}
${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}
${CMAKE_CURRENT_BINARY_DIR}) ${CMAKE_CURRENT_BINARY_DIR}
${PROJECT_TRDPARTY_DIR})
link_directories (${PROJECT_LIBRARY}/src/lib) link_directories (${PROJECT_LIBRARY}/src/lib)
if (USE_QT5) if (USE_QT5)
@ -50,9 +53,8 @@ endif()
add_executable (${SUBPROJECT} ${SOURCES} ${HEADERS} ${MOC_SOURCES} ${QRC_SOURCES} ${TRANSLATIONS}) add_executable (${SUBPROJECT} ${SOURCES} ${HEADERS} ${MOC_SOURCES} ${QRC_SOURCES} ${TRANSLATIONS})
target_link_libraries (${SUBPROJECT} ${PROJECT_LIBRARY} ${QT_NEEDED_LIBS}) target_link_libraries (${SUBPROJECT} ${PROJECT_LIBRARY} ${QT_NEEDED_LIBS})
add_executable (${SUBPROJECT}-suid ${SOURCES} ${HEADERS} ${MOC_SOURCES} ${QRC_SOURCES} ${TRANSLATIONS})
target_link_libraries (${SUBPROJECT}-suid ${PROJECT_LIBRARY} ${QT_NEEDED_LIBS})
# install properties # install properties
install (TARGETS ${SUBPROJECT} DESTINATION bin) install (TARGETS ${SUBPROJECT} DESTINATION bin)
install (TARGETS ${SUBPROJECT}-suid DESTINATION bin if (USE_CAPABILITIES)
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE SETUID) install (CODE "exec_program (setcap ARGS \"cap_setuid=ep\" \"$ENV{DESTDIR}/bin/${SUBPROJECT}\")")
endif ()

View File

@ -186,6 +186,18 @@ bool ControlAdaptor::Enable(const QString profile)
} }
bool ControlAdaptor::forceStart(const QString profile)
{
return netctlCommand->forceStartProfile(profile);
}
bool ControlAdaptor::forceStop(const QString profile)
{
return netctlCommand->forceStopProfile(profile);
}
bool ControlAdaptor::Reenable(const QString profile) bool ControlAdaptor::Reenable(const QString profile)
{ {
return netctlCommand->reenableProfile(profile); return netctlCommand->reenableProfile(profile);

View File

@ -57,6 +57,8 @@ public slots:
bool autoServiceRestart(); bool autoServiceRestart();
bool autoServiceStart(); bool autoServiceStart();
bool Enable(const QString profile); bool Enable(const QString profile);
bool forceStart(const QString profile);
bool forceStop(const QString profile);
bool Reenable(const QString profile); bool Reenable(const QString profile);
bool Restart(const QString profile); bool Restart(const QString profile);
bool Start(const QString profile); bool Start(const QString profile);

View File

@ -1 +0,0 @@
../../gui/src/language.cpp

View File

@ -1 +0,0 @@
../../gui/src/language.h

View File

@ -25,7 +25,8 @@
#include <iostream> #include <iostream>
#include <unistd.h> #include <unistd.h>
#include "language.h" #include <language/language.h>
#include "messages.h" #include "messages.h"
#include "netctlhelper.h" #include "netctlhelper.h"
#include "version.h" #include "version.h"
@ -91,7 +92,7 @@ int main(int argc, char *argv[])
args[QString("nodaemon")] = true; args[QString("nodaemon")] = true;
// check euid // check euid
if (geteuid() != 0) { if (geteuid() != 0) {
cout << QCoreApplication::translate("NetctlHelper", "The helper is running with EUID %1. Some functions will not be available.") cout << QCoreApplication::translate("NetctlHelper", "The helper is running with EUID %1. Some functions may not be available.")
.arg(QString::number(geteuid())).toUtf8().data() << endl; .arg(QString::number(geteuid())).toUtf8().data() << endl;
cout << QCoreApplication::translate("NetctlHelper", "See security notes for more details.") cout << QCoreApplication::translate("NetctlHelper", "See security notes for more details.")
.toUtf8().data() << endl; .toUtf8().data() << endl;

View File

@ -85,15 +85,29 @@ QString infoMessage()
// build information // build information
infoMessage += QCoreApplication::translate("NetctlHelper", "Build date: %1"). infoMessage += QCoreApplication::translate("NetctlHelper", "Build date: %1").
arg(QString(BUILD_DATE)); arg(QString(BUILD_DATE));
// cmake
infoMessage += QString("\n%1:\n").arg(QCoreApplication::translate("NetctlHelper", "cmake flags")); infoMessage += QString("\n%1:\n").arg(QCoreApplication::translate("NetctlHelper", "cmake flags"));
infoMessage += QString("\t-DCMAKE_BUILD_TYPE=%1 \\\n").arg(QString(CMAKE_BUILD_TYPE)); // cmake properties
infoMessage += QString("\t-DCMAKE_INSTALL_PREFIX=%1 \\\n").arg(QString(CMAKE_INSTALL_PREFIX)); infoMessage += QString("%1:\n").arg(QCoreApplication::translate("NetctlHelper", "cmake properties"));
infoMessage += QString("\t-DBUILD_DOCS=%1 \\\n").arg(QString(PROJECT_BUILD_DOCS)); infoMessage += QString("\t-DCMAKE_BUILD_TYPE=%1\n").arg(QString(CMAKE_BUILD_TYPE));
infoMessage += QString("\t-DBUILD_LIBRARY=%1 \\\n").arg(QString(PROJECT_BUILD_LIBRARY)); infoMessage += QString("\t-DCMAKE_INSTALL_PREFIX=%1\n").arg(QString(CMAKE_INSTALL_PREFIX));
infoMessage += QString("\t-DBUILD_GUI=%1 \\\n").arg(QString(PROJECT_BUILD_GUI)); // components
infoMessage += QString("\t-DUSE_QT5=%1 \\\n").arg(QString(PROJECT_USE_QT5)); infoMessage += QString("%1:\n").arg(QCoreApplication::translate("NetctlHelper", "Components"));
infoMessage += QString("\t-DBUILD_DATAENGINE=%1 \\\n").arg(QString(PROJECT_BUILD_DATAENGINE)); infoMessage += QString("\t-DBUILD_DATAENGINE=%1\n").arg(QString(PROJECT_BUILD_DATAENGINE));
infoMessage += QString("\t-DBUILD_GUI=%1\n").arg(QString(PROJECT_BUILD_GUI));
infoMessage += QString("\t-DBUILD_HELPER=%1\n").arg(QString(PROJECT_BUILD_HELPER));
infoMessage += QString("\t-DBUILD_LIBRARY=%1\n").arg(QString(PROJECT_BUILD_LIBRARY));
infoMessage += QString("\t-DBUILD_PLASMOID=%1\n").arg(QString(PROJECT_BUILD_PLASMOID)); infoMessage += QString("\t-DBUILD_PLASMOID=%1\n").arg(QString(PROJECT_BUILD_PLASMOID));
// additional components
infoMessage += QString("%1:\n").arg(QCoreApplication::translate("NetctlHelper", "Additional components"));
infoMessage += QString("\t-DBUILD_DOCS=%1\n").arg(QString(PROJECT_BUILD_DOCS));
infoMessage += QString("\t-DBUILD_TEST=%1\n").arg(QString(PROJECT_BUILD_TEST));
// project properties
infoMessage += QString("%1:\n").arg(QCoreApplication::translate("NetctlHelper", "Project properties"));
infoMessage += QString("\t-DDBUS_SYSTEMCONF_PATH=%1\n").arg(QString(PROJECT_DBUS_SYSTEMCONF_PATH));
infoMessage += QString("\t-DSYSTEMD_SERVICE_PATH=%1\n").arg(QString(PROJECT_SYSTEMD_SERVICE_PATH));
infoMessage += QString("\t-DUSE_CAPABILITIES=%1\n").arg(QString(PROJECT_USE_CAPABILITIES));
infoMessage += QString("\t-DUSE_QT5=%1\n").arg(QString(PROJECT_USE_QT5));
// transport information // transport information
infoMessage += QString("%1:\n").arg(QCoreApplication::translate("NetctlHelper", "DBus configuration")); infoMessage += QString("%1:\n").arg(QCoreApplication::translate("NetctlHelper", "DBus configuration"));
infoMessage += QString("\tDBUS_SERVICE=%1\n").arg(QString(DBUS_SERVICE)); infoMessage += QString("\tDBUS_SERVICE=%1\n").arg(QString(DBUS_SERVICE));
@ -106,9 +120,6 @@ QString infoMessage()
// docs path // docs path
infoMessage += QString("%1:\n").arg(QCoreApplication::translate("NetctlHelper", "Documentation")); infoMessage += QString("%1:\n").arg(QCoreApplication::translate("NetctlHelper", "Documentation"));
infoMessage += QString("\tDOCS_PATH=%1\n").arg(QString(DOCS_PATH)); infoMessage += QString("\tDOCS_PATH=%1\n").arg(QString(DOCS_PATH));
QStringList docs = QDir(QString(DOCS_PATH)).entryList(QDir::NoDotAndDotDot);
for (int i=0; i<docs.count(); i++)
infoMessage += QString("\t%1\n").arg(docs[i]);
return infoMessage; return infoMessage;
} }

View File

@ -24,10 +24,10 @@
#include <unistd.h> #include <unistd.h>
#include <netctlgui/netctlgui.h> #include <netctlgui/netctlgui.h>
#include <pdebug/pdebug.h>
#include "controladaptor.h" #include "controladaptor.h"
#include "netctladaptor.h" #include "netctladaptor.h"
#include "pdebug.h"
#include "version.h" #include "version.h"
@ -122,6 +122,7 @@ QMap<QString, QString> NetctlHelper::getDefault()
settings[QString("PREFERED_IFACE")] = QString(""); settings[QString("PREFERED_IFACE")] = QString("");
settings[QString("PROFILE_DIR")] = QString("/etc/netctl/"); settings[QString("PROFILE_DIR")] = QString("/etc/netctl/");
settings[QString("RFKILL_DIR")] = QString("/sys/class/rfkill/"); settings[QString("RFKILL_DIR")] = QString("/sys/class/rfkill/");
settings[QString("SKIPCOMPONENTS")] = QString("false");
settings[QString("STARTTOTRAY")] = QString("false"); settings[QString("STARTTOTRAY")] = QString("false");
settings[QString("SUDO_PATH")] = QString("/usr/bin/kdesu"); settings[QString("SUDO_PATH")] = QString("/usr/bin/kdesu");
settings[QString("SYSTEMCTL_PATH")] = QString("/usr/bin/systemctl"); settings[QString("SYSTEMCTL_PATH")] = QString("/usr/bin/systemctl");
@ -172,7 +173,7 @@ void NetctlHelper::updateConfiguration()
if (debug) qDebug() << PDEBUG; if (debug) qDebug() << PDEBUG;
deleteInterface(); deleteInterface();
configuration = getSettings(QString("/etc/netctlgui-helper.conf")); configuration = getSettings(QString("/etc/netctl-gui.conf"));
if (!system) if (!system)
configuration = getSettings(configPath, configuration); configuration = getSettings(configPath, configuration);
createInterface(); createInterface();

View File

@ -1 +0,0 @@
../../3rdparty/pdebug/pdebug.h

View File

@ -176,6 +176,20 @@ public slots:
* @return true if the method was completed without errors * @return true if the method was completed without errors
*/ */
bool enableProfile(const QString profile); bool enableProfile(const QString profile);
/**
* @brief method which force starts profile
* @param profile profile name
* @return false if components are not found or command exit code is not equal to 0
* @return true if the method was completed without errors
*/
bool forceStartProfile(const QString profile);
/**
* @brief method which force stops profile
* @param profile profile name
* @return false if components are not found or command exit code is not equal to 0
* @return true if the method was completed without errors
*/
bool forceStopProfile(const QString profile);
/** /**
* @brief method which reenables profile * @brief method which reenables profile
* @param profile profile name * @param profile profile name

View File

@ -1,13 +1,15 @@
# set files # set files
file (GLOB SOURCES *.cpp) file (GLOB_RECURSE SOURCES *.cpp ${PROJECT_TRDPARTY_DIR}/task/*.cpp)
file (GLOB HEADERS *.h) file (GLOB_RECURSE HEADERS *.h ${SUBPROJECT_INCLUDE_DIR}/*h
${PROJECT_TRDPARTY_DIR}/task/*.h)
# include_path # include_path
include_directories (${SUBPROJECT_INCLUDE_DIR} include_directories (${SUBPROJECT_INCLUDE_DIR}
${CMAKE_CURRENT_BINARY_DIR}/../ ${CMAKE_CURRENT_BINARY_DIR}/../
${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}
${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}
${CMAKE_CURRENT_BINARY_DIR}) ${CMAKE_CURRENT_BINARY_DIR}
${PROJECT_TRDPARTY_DIR})
if (USE_QT5) if (USE_QT5)
find_package(Qt5 COMPONENTS Core REQUIRED) find_package(Qt5 COMPONENTS Core REQUIRED)

View File

@ -23,7 +23,7 @@
*/ */
#include "netctlgui.h" #include <netctlgui/netctlgui.h>
/** /**

View File

@ -1 +0,0 @@
../include/netctlgui/netctlgui.h

View File

@ -26,9 +26,9 @@
#include <QDebug> #include <QDebug>
#include <QDirIterator> #include <QDirIterator>
#include "netctlgui.h" #include <netctlgui/netctlgui.h>
#include "pdebug.h" #include <pdebug/pdebug.h>
#include "taskadds.h" #include <task/taskadds.h>
/** /**
@ -542,6 +542,30 @@ bool Netctl::enableProfile(const QString profile)
} }
/**
* @fn forceStartProfile
*/
bool Netctl::forceStartProfile(const QString profile)
{
if (debug) qDebug() << PDEBUG;
if (debug) qDebug() << PDEBUG << ":" << "Profile" << profile;
return cmdCall(true, netctlCommand, QString("start"), profile);
}
/**
* @fn forceStopProfile
*/
bool Netctl::forceStopProfile(const QString profile)
{
if (debug) qDebug() << PDEBUG;
if (debug) qDebug() << PDEBUG << ":" << "Profile" << profile;
return cmdCall(true, netctlCommand, QString("stop"), profile);
}
/** /**
* @fn reenableProfile * @fn reenableProfile
*/ */

View File

@ -1 +0,0 @@
../include/netctlgui/netctlinteract.h

View File

@ -29,9 +29,9 @@
#include <QFileInfo> #include <QFileInfo>
#include <QTextStream> #include <QTextStream>
#include "netctlgui.h" #include <netctlgui/netctlgui.h>
#include "pdebug.h" #include <pdebug/pdebug.h>
#include "taskadds.h" #include <task/taskadds.h>
/** /**

View File

@ -1 +0,0 @@
../include/netctlgui/netctlprofile.h

View File

@ -1 +0,0 @@
../../3rdparty/pdebug/pdebug.h

View File

@ -1 +0,0 @@
../../3rdparty/task/task.h

View File

@ -1 +0,0 @@
../../3rdparty/task/taskadds.cpp

View File

@ -1 +0,0 @@
../../3rdparty/task/taskadds.h

View File

@ -26,9 +26,9 @@
#include <QDebug> #include <QDebug>
#include <grp.h> #include <grp.h>
#include "netctlgui.h" #include <netctlgui/netctlgui.h>
#include "pdebug.h" #include <pdebug/pdebug.h>
#include "taskadds.h" #include <task/taskadds.h>
/** /**

View File

@ -1 +0,0 @@
../include/netctlgui/wpasupinteract.h

View File

@ -9,7 +9,12 @@ find_package (KDE4 REQUIRED)
include (KDE4Defaults) include (KDE4Defaults)
add_definitions (${QT_DEFINITIONS} ${KDE4_DEFINITIONS}) add_definitions (${QT_DEFINITIONS} ${KDE4_DEFINITIONS})
include_directories (${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} ${KDE4_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}/../) include_directories (${CMAKE_SOURCE_DIR}
${CMAKE_BINARY_DIR}
${KDE4_INCLUDES}
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_BINARY_DIR}/../
${PROJECT_TRDPARTY_DIR})
add_subdirectory (po) add_subdirectory (po)
@ -19,7 +24,7 @@ file (GLOB SUBPROJECT_DESKTOP_IN *.desktop)
file (RELATIVE_PATH SUBPROJECT_DESKTOP ${CMAKE_SOURCE_DIR} ${SUBPROJECT_DESKTOP_IN}) file (RELATIVE_PATH SUBPROJECT_DESKTOP ${CMAKE_SOURCE_DIR} ${SUBPROJECT_DESKTOP_IN})
file (GLOB SUBPROJECT_NOTIFY *.notifyrc) file (GLOB SUBPROJECT_NOTIFY *.notifyrc)
file (GLOB SUBPROJECT_SOURCE *.cpp) file (GLOB SUBPROJECT_SOURCE *.cpp)
file (GLOB SUBPROJECT_UI *.ui) file (GLOB_RECURSE SUBPROJECT_UI *.ui ${PROJECT_TRDPARTY_DIR}/about/*.ui)
# prepare # prepare
configure_file (${SUBPROJECT_DESKTOP_IN} ${CMAKE_CURRENT_BINARY_DIR}/${SUBPROJECT_DESKTOP}) configure_file (${SUBPROJECT_DESKTOP_IN} ${CMAKE_CURRENT_BINARY_DIR}/${SUBPROJECT_DESKTOP})

View File

@ -1 +0,0 @@
../gui/src/about.ui

View File

@ -29,8 +29,9 @@
#include <QMenu> #include <QMenu>
#include <QProcessEnvironment> #include <QProcessEnvironment>
#include <pdebug/pdebug.h>
#include "netctl.h" #include "netctl.h"
#include "pdebug.h"
#include "ui_about.h" #include "ui_about.h"
#include "ui_appearance.h" #include "ui_appearance.h"
#include "ui_dataengine.h" #include "ui_dataengine.h"

View File

@ -1 +0,0 @@
../3rdparty/pdebug/pdebug.h

View File

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: https://github.com/arcan1s/netctl-gui/issues\n" "Report-Msgid-Bugs-To: https://github.com/arcan1s/netctl-gui/issues\n"
"POT-Creation-Date: 2014-08-20 11:59+0400\n" "POT-Creation-Date: 2014-08-24 16:44+0400\n"
"PO-Revision-Date: 2014-08-20 12:00+0400\n" "PO-Revision-Date: 2014-08-20 12:00+0400\n"
"Last-Translator: Evgeniy Alekseev <esalexeev@gmail.com>\n" "Last-Translator: Evgeniy Alekseev <esalexeev@gmail.com>\n"
"Language-Team: Russian <kde-russian@lists.kde.ru>\n" "Language-Team: Russian <kde-russian@lists.kde.ru>\n"
@ -18,99 +18,99 @@ msgstr ""
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Lokalize 1.5\n" "X-Generator: Lokalize 1.5\n"
#: netctl.cpp:269 #: netctl.cpp:270
msgid "Set profile %1 disabled" msgid "Set profile %1 disabled"
msgstr "Set profile %1 disabled" msgstr "Set profile %1 disabled"
#: netctl.cpp:272 #: netctl.cpp:273
msgid "Set profile %1 enabled" msgid "Set profile %1 enabled"
msgstr "Set profile %1 enabled" msgstr "Set profile %1 enabled"
#: netctl.cpp:293 #: netctl.cpp:294
msgid "Restart profile %1" msgid "Restart profile %1"
msgstr "Restart profile %1" msgstr "Restart profile %1"
#: netctl.cpp:314 #: netctl.cpp:315
msgid "Start profile %1" msgid "Start profile %1"
msgstr "Start profile %1" msgstr "Start profile %1"
#: netctl.cpp:340 #: netctl.cpp:341
msgid "Stop profile %1" msgid "Stop profile %1"
msgstr "Stop profile %1" msgstr "Stop profile %1"
#: netctl.cpp:360 netctl.cpp:498 #: netctl.cpp:361 netctl.cpp:499
msgid "Stop all profiles" msgid "Stop all profiles"
msgstr "Stop all profiles" msgstr "Stop all profiles"
#: netctl.cpp:380 #: netctl.cpp:381
msgid "Switch to profile %1" msgid "Switch to profile %1"
msgstr "Switch to profile %1" msgstr "Switch to profile %1"
#: netctl.cpp:453 #: netctl.cpp:454
msgid "Start another profile" msgid "Start another profile"
msgstr "Start another profile" msgstr "Start another profile"
#: netctl.cpp:454 #: netctl.cpp:455
msgid "Stop %1" msgid "Stop %1"
msgstr "Stop %1" msgstr "Stop %1"
#: netctl.cpp:455 #: netctl.cpp:456
msgid "Restart %1" msgid "Restart %1"
msgstr "Restart %1" msgstr "Restart %1"
#: netctl.cpp:457 #: netctl.cpp:458
msgid "Disable %1" msgid "Disable %1"
msgstr "Disable %1" msgstr "Disable %1"
#: netctl.cpp:459 #: netctl.cpp:460
msgid "Enable %1" msgid "Enable %1"
msgstr "Enable %1" msgstr "Enable %1"
#: netctl.cpp:462 netctl.cpp:485 #: netctl.cpp:463 netctl.cpp:486
msgid "Start profile" msgid "Start profile"
msgstr "Start profile" msgstr "Start profile"
#: netctl.cpp:493 #: netctl.cpp:494
msgid "Stop profile" msgid "Stop profile"
msgstr "Stop profile" msgstr "Stop profile"
#: netctl.cpp:503 #: netctl.cpp:504
msgid "Switch to profile" msgid "Switch to profile"
msgstr "Switch to profile" msgstr "Switch to profile"
#: netctl.cpp:511 #: netctl.cpp:512
msgid "Restart profile" msgid "Restart profile"
msgstr "Restart profile" msgstr "Restart profile"
#: netctl.cpp:516 #: netctl.cpp:517
msgid "Enable profile" msgid "Enable profile"
msgstr "Enable profile" msgstr "Enable profile"
#: netctl.cpp:520 #: netctl.cpp:521
msgid "Show netctl-gui" msgid "Show netctl-gui"
msgstr "Show netctl-gui" msgstr "Show netctl-gui"
#: netctl.cpp:525 #: netctl.cpp:526
msgid "Show WiFi menu" msgid "Show WiFi menu"
msgstr "Show WiFi menu" msgstr "Show WiFi menu"
#: netctl.cpp:552 #: netctl.cpp:553
msgid "Start GUI" msgid "Start GUI"
msgstr "Start GUI" msgstr "Start GUI"
#: netctl.cpp:563 #: netctl.cpp:564
msgid "Start WiFi menu" msgid "Start WiFi menu"
msgstr "Start WiFi menu" msgstr "Start WiFi menu"
#: netctl.cpp:603 #: netctl.cpp:604
msgid "Network is up" msgid "Network is up"
msgstr "Network is up" msgstr "Network is up"
#: netctl.cpp:607 #: netctl.cpp:608
msgid "Network is down" msgid "Network is down"
msgstr "Network is down" msgstr "Network is down"
#: netctl.cpp:797 #: netctl.cpp:798
msgid "" msgid ""
"Version %1\n" "Version %1\n"
"(build date %2)" "(build date %2)"
@ -118,73 +118,65 @@ msgstr ""
"Version %1\n" "Version %1\n"
"(build date %2)" "(build date %2)"
#: netctl.cpp:798 #: netctl.cpp:799
msgid "KDE widget which interacts with netctl." msgid "KDE widget which interacts with netctl."
msgstr "KDE widget which interacts with netctl." msgstr "KDE widget which interacts with netctl."
#: netctl.cpp:799 #: netctl.cpp:800
msgid "Links:" msgid "Links:"
msgstr "Links:" msgstr "Links:"
#: netctl.cpp:800 #: netctl.cpp:801
msgid "Homepage" msgid "Homepage"
msgstr "Homepage" msgstr "Homepage"
#: netctl.cpp:801 #: netctl.cpp:802
msgid "Repository" msgid "Repository"
msgstr "Repository" msgstr "Repository"
#: netctl.cpp:802 #: netctl.cpp:803
msgid "Bugtracker" msgid "Bugtracker"
msgstr "Bugtracker" msgstr "Bugtracker"
#: netctl.cpp:803 #: netctl.cpp:804
msgid "Translation issue" msgid "Translation issue"
msgstr "Translation issue" msgstr "Translation issue"
#: netctl.cpp:804 #: netctl.cpp:805
msgid "AUR packages" msgid "AUR packages"
msgstr "AUR packages" msgstr "AUR packages"
#: netctl.cpp:806 #: netctl.cpp:807
msgid "This software is licensed under %1" msgid "This software is licensed under %1"
msgstr "This software is licensed under %1" msgstr "This software is licensed under %1"
#: netctl.cpp:814 #: netctl.cpp:815
msgid "Translators: %1" msgid "Translators: %1"
msgstr "Translators: %1" msgstr "Translators: %1"
#: netctl.cpp:815 #: netctl.cpp:816
msgid "This software uses: %1" msgid "This software uses: %1"
msgstr "This software uses: %1" msgstr "This software uses: %1"
#: netctl.cpp:817 #: netctl.cpp:818
msgid "Netctl plasmoid" msgid "Netctl plasmoid"
msgstr "Netctl plasmoid" msgstr "Netctl plasmoid"
#: netctl.cpp:818 #: netctl.cpp:819
msgid "Appearance" msgid "Appearance"
msgstr "Appearance" msgstr "Appearance"
#: netctl.cpp:819 #: netctl.cpp:820
msgid "DataEngine" msgid "DataEngine"
msgstr "DataEngine" msgstr "DataEngine"
#. i18n: file: about.ui:21 #: netctl.cpp:821
#. i18n: ectx: attribute (title), widget (QWidget, tab_About)
#: netctl.cpp:820 po/rc.cpp:3 rc.cpp:3
msgid "About" msgid "About"
msgstr "About" msgstr "About"
#. i18n: file: about.ui:127
#. i18n: ectx: attribute (title), widget (QWidget, tab_ackn)
#: po/rc.cpp:6 rc.cpp:6
msgid "Acknowledgement"
msgstr "Acknowledgement"
#. i18n: file: appearance.ui:47 #. i18n: file: appearance.ui:47
#. i18n: ectx: property (text), widget (QLabel, label_inactiveIcon) #. i18n: ectx: property (text), widget (QLabel, label_inactiveIcon)
#: po/rc.cpp:9 rc.cpp:9 #: po/rc.cpp:3 rc.cpp:3
msgid "Inactive icon" msgid "Inactive icon"
msgstr "Inactive icon" msgstr "Inactive icon"
@ -236,89 +228,89 @@ msgstr "Inactive icon"
#. i18n: ectx: property (text), widget (QPushButton, pushButton_sudo) #. i18n: ectx: property (text), widget (QPushButton, pushButton_sudo)
#. i18n: file: widget.ui:282 #. i18n: file: widget.ui:282
#. i18n: ectx: property (text), widget (QPushButton, pushButton_wifi) #. i18n: ectx: property (text), widget (QPushButton, pushButton_wifi)
#: po/rc.cpp:12 po/rc.cpp:48 po/rc.cpp:60 po/rc.cpp:66 po/rc.cpp:72 #: po/rc.cpp:6 po/rc.cpp:42 po/rc.cpp:54 po/rc.cpp:60 po/rc.cpp:66
#: po/rc.cpp:78 po/rc.cpp:87 po/rc.cpp:93 po/rc.cpp:99 po/rc.cpp:105 #: po/rc.cpp:72 po/rc.cpp:81 po/rc.cpp:87 po/rc.cpp:93 po/rc.cpp:99
#: po/rc.cpp:111 po/rc.cpp:117 rc.cpp:12 rc.cpp:48 rc.cpp:60 rc.cpp:66 #: po/rc.cpp:105 po/rc.cpp:111 rc.cpp:6 rc.cpp:42 rc.cpp:54 rc.cpp:60
#: rc.cpp:72 rc.cpp:78 rc.cpp:87 rc.cpp:93 rc.cpp:99 rc.cpp:105 rc.cpp:111 #: rc.cpp:66 rc.cpp:72 rc.cpp:81 rc.cpp:87 rc.cpp:93 rc.cpp:99 rc.cpp:105
#: rc.cpp:117 #: rc.cpp:111
msgid "Browse" msgid "Browse"
msgstr "Browse" msgstr "Browse"
#. i18n: file: appearance.ui:80 #. i18n: file: appearance.ui:80
#. i18n: ectx: property (text), widget (QLabel, label_fontColor) #. i18n: ectx: property (text), widget (QLabel, label_fontColor)
#: po/rc.cpp:15 rc.cpp:15 #: po/rc.cpp:9 rc.cpp:9
msgid "Font color" msgid "Font color"
msgstr "Font color" msgstr "Font color"
#. i18n: file: appearance.ui:112 #. i18n: file: appearance.ui:112
#. i18n: ectx: property (toolTip), widget (KColorCombo, kcolorcombo_fontColor) #. i18n: ectx: property (toolTip), widget (KColorCombo, kcolorcombo_fontColor)
#: po/rc.cpp:18 rc.cpp:18 #: po/rc.cpp:12 rc.cpp:12
msgid "Set font color" msgid "Set font color"
msgstr "Set font color" msgstr "Set font color"
#. i18n: file: appearance.ui:142 #. i18n: file: appearance.ui:142
#. i18n: ectx: property (text), widget (QLabel, label_fontSize) #. i18n: ectx: property (text), widget (QLabel, label_fontSize)
#: po/rc.cpp:21 rc.cpp:21 #: po/rc.cpp:15 rc.cpp:15
msgid "Font size" msgid "Font size"
msgstr "Font size" msgstr "Font size"
#. i18n: file: appearance.ui:174 #. i18n: file: appearance.ui:174
#. i18n: ectx: property (toolTip), widget (QSpinBox, spinBox_fontSize) #. i18n: ectx: property (toolTip), widget (QSpinBox, spinBox_fontSize)
#: po/rc.cpp:24 rc.cpp:24 #: po/rc.cpp:18 rc.cpp:18
msgid "Set font size" msgid "Set font size"
msgstr "Set font size" msgstr "Set font size"
#. i18n: file: appearance.ui:203 #. i18n: file: appearance.ui:203
#. i18n: ectx: property (text), widget (QLabel, label_fontWeight) #. i18n: ectx: property (text), widget (QLabel, label_fontWeight)
#: po/rc.cpp:27 rc.cpp:27 #: po/rc.cpp:21 rc.cpp:21
msgid "Font weight" msgid "Font weight"
msgstr "Font weight" msgstr "Font weight"
#. i18n: file: appearance.ui:235 #. i18n: file: appearance.ui:235
#. i18n: ectx: property (toolTip), widget (QSpinBox, spinBox_fontWeight) #. i18n: ectx: property (toolTip), widget (QSpinBox, spinBox_fontWeight)
#: po/rc.cpp:30 rc.cpp:30 #: po/rc.cpp:24 rc.cpp:24
msgid "Set font weight" msgid "Set font weight"
msgstr "Set font weight" msgstr "Set font weight"
#. i18n: file: appearance.ui:267 #. i18n: file: appearance.ui:267
#. i18n: ectx: property (text), widget (QLabel, label_fontStyle) #. i18n: ectx: property (text), widget (QLabel, label_fontStyle)
#: po/rc.cpp:33 rc.cpp:33 #: po/rc.cpp:27 rc.cpp:27
msgid "Font style" msgid "Font style"
msgstr "Font style" msgstr "Font style"
#. i18n: file: appearance.ui:299 #. i18n: file: appearance.ui:299
#. i18n: ectx: property (toolTip), widget (QComboBox, comboBox_fontStyle) #. i18n: ectx: property (toolTip), widget (QComboBox, comboBox_fontStyle)
#: po/rc.cpp:36 rc.cpp:36 #: po/rc.cpp:30 rc.cpp:30
msgid "Set font style" msgid "Set font style"
msgstr "Set font style" msgstr "Set font style"
#. i18n: file: appearance.ui:326 #. i18n: file: appearance.ui:326
#. i18n: ectx: property (text), widget (QLabel, label_font) #. i18n: ectx: property (text), widget (QLabel, label_font)
#: po/rc.cpp:39 rc.cpp:39 #: po/rc.cpp:33 rc.cpp:33
msgid "Font" msgid "Font"
msgstr "Font" msgstr "Font"
#. i18n: file: appearance.ui:358 #. i18n: file: appearance.ui:358
#. i18n: ectx: property (toolTip), widget (QFontComboBox, fontComboBox_font) #. i18n: ectx: property (toolTip), widget (QFontComboBox, fontComboBox_font)
#: po/rc.cpp:42 rc.cpp:42 #: po/rc.cpp:36 rc.cpp:36
msgid "Set font family" msgid "Set font family"
msgstr "Set font family" msgstr "Set font family"
#. i18n: file: appearance.ui:375 #. i18n: file: appearance.ui:375
#. i18n: ectx: property (text), widget (QLabel, label_activeIcon) #. i18n: ectx: property (text), widget (QLabel, label_activeIcon)
#: po/rc.cpp:45 rc.cpp:45 #: po/rc.cpp:39 rc.cpp:39
msgid "Active icon" msgid "Active icon"
msgstr "Active icon" msgstr "Active icon"
#. i18n: file: appearance.ui:408 #. i18n: file: appearance.ui:408
#. i18n: ectx: property (text), widget (QLabel, label_textAlign) #. i18n: ectx: property (text), widget (QLabel, label_textAlign)
#: po/rc.cpp:51 rc.cpp:51 #: po/rc.cpp:45 rc.cpp:45
msgid "Text align" msgid "Text align"
msgstr "Text align" msgstr "Text align"
#. i18n: file: appearance.ui:440 #. i18n: file: appearance.ui:440
#. i18n: ectx: property (toolTip), widget (QComboBox, comboBox_textAlign) #. i18n: ectx: property (toolTip), widget (QComboBox, comboBox_textAlign)
#: po/rc.cpp:54 rc.cpp:54 #: po/rc.cpp:48 rc.cpp:48
msgid "Set text align" msgid "Set text align"
msgstr "Set text align" msgstr "Set text align"
@ -330,7 +322,7 @@ msgstr "Set text align"
#. i18n: ectx: property (text), widget (QLabel, label_netctl) #. i18n: ectx: property (text), widget (QLabel, label_netctl)
#. i18n: file: widget.ui:161 #. i18n: file: widget.ui:161
#. i18n: ectx: property (text), widget (QLabel, label_netctl) #. i18n: ectx: property (text), widget (QLabel, label_netctl)
#: po/rc.cpp:57 po/rc.cpp:96 rc.cpp:57 rc.cpp:96 #: po/rc.cpp:51 po/rc.cpp:90 rc.cpp:51 rc.cpp:90
msgid "Path to netctl" msgid "Path to netctl"
msgstr "Path to netctl" msgstr "Path to netctl"
@ -342,61 +334,61 @@ msgstr "Path to netctl"
#. i18n: ectx: property (text), widget (QLabel, label_netctlAuto) #. i18n: ectx: property (text), widget (QLabel, label_netctlAuto)
#. i18n: file: widget.ui:194 #. i18n: file: widget.ui:194
#. i18n: ectx: property (text), widget (QLabel, label_netctlAuto) #. i18n: ectx: property (text), widget (QLabel, label_netctlAuto)
#: po/rc.cpp:63 po/rc.cpp:102 rc.cpp:63 rc.cpp:102 #: po/rc.cpp:57 po/rc.cpp:96 rc.cpp:57 rc.cpp:96
msgid "Path to netctl-auto" msgid "Path to netctl-auto"
msgstr "Path to netctl-auto" msgstr "Path to netctl-auto"
#. i18n: file: dataengine.ui:100 #. i18n: file: dataengine.ui:100
#. i18n: ectx: property (text), widget (QCheckBox, checkBox_extIp4) #. i18n: ectx: property (text), widget (QCheckBox, checkBox_extIp4)
#: po/rc.cpp:69 rc.cpp:69 #: po/rc.cpp:63 rc.cpp:63
msgid "Check external IPv4" msgid "Check external IPv4"
msgstr "Check external IPv4" msgstr "Check external IPv4"
#. i18n: file: dataengine.ui:136 #. i18n: file: dataengine.ui:136
#. i18n: ectx: property (text), widget (QCheckBox, checkBox_extIp6) #. i18n: ectx: property (text), widget (QCheckBox, checkBox_extIp6)
#: po/rc.cpp:75 rc.cpp:75 #: po/rc.cpp:69 rc.cpp:69
msgid "Check external IPv6" msgid "Check external IPv6"
msgstr "Check external IPv6" msgstr "Check external IPv6"
#. i18n: file: widget.ui:34 #. i18n: file: widget.ui:34
#. i18n: ectx: property (text), widget (QLabel, label_autoUpdate) #. i18n: ectx: property (text), widget (QLabel, label_autoUpdate)
#: po/rc.cpp:81 rc.cpp:81 #: po/rc.cpp:75 rc.cpp:75
msgid "Auto update interval, msec" msgid "Auto update interval, msec"
msgstr "Auto update interval, msec" msgstr "Auto update interval, msec"
#. i18n: file: widget.ui:92 #. i18n: file: widget.ui:92
#. i18n: ectx: property (text), widget (QLabel, label_gui) #. i18n: ectx: property (text), widget (QLabel, label_gui)
#: po/rc.cpp:84 rc.cpp:84 #: po/rc.cpp:78 rc.cpp:78
msgid "Path to GUI" msgid "Path to GUI"
msgstr "Path to GUI" msgstr "Path to GUI"
#. i18n: file: widget.ui:125 #. i18n: file: widget.ui:125
#. i18n: ectx: property (text), widget (QCheckBox, checkBox_helper) #. i18n: ectx: property (text), widget (QCheckBox, checkBox_helper)
#: po/rc.cpp:90 rc.cpp:90 #: po/rc.cpp:84 rc.cpp:84
msgid "Use helper" msgid "Use helper"
msgstr "Use helper" msgstr "Use helper"
#. i18n: file: widget.ui:227 #. i18n: file: widget.ui:227
#. i18n: ectx: property (text), widget (QCheckBox, checkBox_sudo) #. i18n: ectx: property (text), widget (QCheckBox, checkBox_sudo)
#: po/rc.cpp:108 rc.cpp:108 #: po/rc.cpp:102 rc.cpp:102
msgid "Use sudo for netctl" msgid "Use sudo for netctl"
msgstr "Use sudo for netctl" msgstr "Use sudo for netctl"
#. i18n: file: widget.ui:263 #. i18n: file: widget.ui:263
#. i18n: ectx: property (text), widget (QCheckBox, checkBox_wifi) #. i18n: ectx: property (text), widget (QCheckBox, checkBox_wifi)
#: po/rc.cpp:114 rc.cpp:114 #: po/rc.cpp:108 rc.cpp:108
msgid "Show 'Start WiFi menu'" msgid "Show 'Start WiFi menu'"
msgstr "Show 'Start WiFi menu'" msgstr "Show 'Start WiFi menu'"
#. i18n: file: widget.ui:291 #. i18n: file: widget.ui:291
#. i18n: ectx: property (text), widget (QCheckBox, checkBox_showBigInterface) #. i18n: ectx: property (text), widget (QCheckBox, checkBox_showBigInterface)
#: po/rc.cpp:120 rc.cpp:120 #: po/rc.cpp:114 rc.cpp:114
msgid "Show more detailed interface" msgid "Show more detailed interface"
msgstr "Show more detailed interface" msgstr "Show more detailed interface"
#. i18n: file: widget.ui:309 #. i18n: file: widget.ui:309
#. i18n: ectx: property (toolTip), widget (QPlainTextEdit, textEdit) #. i18n: ectx: property (toolTip), widget (QPlainTextEdit, textEdit)
#: po/rc.cpp:123 rc.cpp:123 #: po/rc.cpp:117 rc.cpp:117
msgid "" msgid ""
"$info - active profile information\n" "$info - active profile information\n"
"$current - current profile name\n" "$current - current profile name\n"
@ -418,16 +410,19 @@ msgstr ""
"$profiles - list of the netctl profiles\n" "$profiles - list of the netctl profiles\n"
"$status - current profile status (static/enabled)" "$status - current profile status (static/enabled)"
#: po/rc.cpp:132 rc.cpp:132 #: po/rc.cpp:126 rc.cpp:126
msgctxt "NAME OF TRANSLATORS" msgctxt "NAME OF TRANSLATORS"
msgid "Your names" msgid "Your names"
msgstr "Evgeniy Alekseev" msgstr "Evgeniy Alekseev"
#: po/rc.cpp:133 rc.cpp:133 #: po/rc.cpp:127 rc.cpp:127
msgctxt "EMAIL OF TRANSLATORS" msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails" msgid "Your emails"
msgstr "esalexeev@gmail.com" msgstr "esalexeev@gmail.com"
#~ msgid "Acknowledgement"
#~ msgstr "Acknowledgement"
#~ msgid "normal" #~ msgid "normal"
#~ msgstr "normal" #~ msgstr "normal"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: https://github.com/arcan1s/netctl-gui/issues\n" "Report-Msgid-Bugs-To: https://github.com/arcan1s/netctl-gui/issues\n"
"POT-Creation-Date: 2014-08-20 11:59+0400\n" "POT-Creation-Date: 2014-08-24 16:44+0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -17,171 +17,163 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n" "Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
#: netctl.cpp:269 #: netctl.cpp:270
msgid "Set profile %1 disabled" msgid "Set profile %1 disabled"
msgstr "" msgstr ""
#: netctl.cpp:272 #: netctl.cpp:273
msgid "Set profile %1 enabled" msgid "Set profile %1 enabled"
msgstr "" msgstr ""
#: netctl.cpp:293 #: netctl.cpp:294
msgid "Restart profile %1" msgid "Restart profile %1"
msgstr "" msgstr ""
#: netctl.cpp:314 #: netctl.cpp:315
msgid "Start profile %1" msgid "Start profile %1"
msgstr "" msgstr ""
#: netctl.cpp:340 #: netctl.cpp:341
msgid "Stop profile %1" msgid "Stop profile %1"
msgstr "" msgstr ""
#: netctl.cpp:360 netctl.cpp:498 #: netctl.cpp:361 netctl.cpp:499
msgid "Stop all profiles" msgid "Stop all profiles"
msgstr "" msgstr ""
#: netctl.cpp:380 #: netctl.cpp:381
msgid "Switch to profile %1" msgid "Switch to profile %1"
msgstr "" msgstr ""
#: netctl.cpp:453 #: netctl.cpp:454
msgid "Start another profile" msgid "Start another profile"
msgstr "" msgstr ""
#: netctl.cpp:454 #: netctl.cpp:455
msgid "Stop %1" msgid "Stop %1"
msgstr "" msgstr ""
#: netctl.cpp:455 #: netctl.cpp:456
msgid "Restart %1" msgid "Restart %1"
msgstr "" msgstr ""
#: netctl.cpp:457 #: netctl.cpp:458
msgid "Disable %1" msgid "Disable %1"
msgstr "" msgstr ""
#: netctl.cpp:459 #: netctl.cpp:460
msgid "Enable %1" msgid "Enable %1"
msgstr "" msgstr ""
#: netctl.cpp:462 netctl.cpp:485 #: netctl.cpp:463 netctl.cpp:486
msgid "Start profile" msgid "Start profile"
msgstr "" msgstr ""
#: netctl.cpp:493 #: netctl.cpp:494
msgid "Stop profile" msgid "Stop profile"
msgstr "" msgstr ""
#: netctl.cpp:503 #: netctl.cpp:504
msgid "Switch to profile" msgid "Switch to profile"
msgstr "" msgstr ""
#: netctl.cpp:511 #: netctl.cpp:512
msgid "Restart profile" msgid "Restart profile"
msgstr "" msgstr ""
#: netctl.cpp:516 #: netctl.cpp:517
msgid "Enable profile" msgid "Enable profile"
msgstr "" msgstr ""
#: netctl.cpp:520 #: netctl.cpp:521
msgid "Show netctl-gui" msgid "Show netctl-gui"
msgstr "" msgstr ""
#: netctl.cpp:525 #: netctl.cpp:526
msgid "Show WiFi menu" msgid "Show WiFi menu"
msgstr "" msgstr ""
#: netctl.cpp:552 #: netctl.cpp:553
msgid "Start GUI" msgid "Start GUI"
msgstr "" msgstr ""
#: netctl.cpp:563 #: netctl.cpp:564
msgid "Start WiFi menu" msgid "Start WiFi menu"
msgstr "" msgstr ""
#: netctl.cpp:603 #: netctl.cpp:604
msgid "Network is up" msgid "Network is up"
msgstr "" msgstr ""
#: netctl.cpp:607 #: netctl.cpp:608
msgid "Network is down" msgid "Network is down"
msgstr "" msgstr ""
#: netctl.cpp:797 #: netctl.cpp:798
msgid "" msgid ""
"Version %1\n" "Version %1\n"
"(build date %2)" "(build date %2)"
msgstr "" msgstr ""
#: netctl.cpp:798 #: netctl.cpp:799
msgid "KDE widget which interacts with netctl." msgid "KDE widget which interacts with netctl."
msgstr "" msgstr ""
#: netctl.cpp:799 #: netctl.cpp:800
msgid "Links:" msgid "Links:"
msgstr "" msgstr ""
#: netctl.cpp:800 #: netctl.cpp:801
msgid "Homepage" msgid "Homepage"
msgstr "" msgstr ""
#: netctl.cpp:801 #: netctl.cpp:802
msgid "Repository" msgid "Repository"
msgstr "" msgstr ""
#: netctl.cpp:802 #: netctl.cpp:803
msgid "Bugtracker" msgid "Bugtracker"
msgstr "" msgstr ""
#: netctl.cpp:803 #: netctl.cpp:804
msgid "Translation issue" msgid "Translation issue"
msgstr "" msgstr ""
#: netctl.cpp:804 #: netctl.cpp:805
msgid "AUR packages" msgid "AUR packages"
msgstr "" msgstr ""
#: netctl.cpp:806 #: netctl.cpp:807
msgid "This software is licensed under %1" msgid "This software is licensed under %1"
msgstr "" msgstr ""
#: netctl.cpp:814 #: netctl.cpp:815
msgid "Translators: %1" msgid "Translators: %1"
msgstr "" msgstr ""
#: netctl.cpp:815 #: netctl.cpp:816
msgid "This software uses: %1" msgid "This software uses: %1"
msgstr "" msgstr ""
#: netctl.cpp:817 #: netctl.cpp:818
msgid "Netctl plasmoid" msgid "Netctl plasmoid"
msgstr "" msgstr ""
#: netctl.cpp:818 #: netctl.cpp:819
msgid "Appearance" msgid "Appearance"
msgstr "" msgstr ""
#: netctl.cpp:819 #: netctl.cpp:820
msgid "DataEngine" msgid "DataEngine"
msgstr "" msgstr ""
#. i18n: file: about.ui:21 #: netctl.cpp:821
#. i18n: ectx: attribute (title), widget (QWidget, tab_About)
#: netctl.cpp:820 po/rc.cpp:3 rc.cpp:3
msgid "About" msgid "About"
msgstr "" msgstr ""
#. i18n: file: about.ui:127
#. i18n: ectx: attribute (title), widget (QWidget, tab_ackn)
#: po/rc.cpp:6 rc.cpp:6
msgid "Acknowledgement"
msgstr ""
#. i18n: file: appearance.ui:47 #. i18n: file: appearance.ui:47
#. i18n: ectx: property (text), widget (QLabel, label_inactiveIcon) #. i18n: ectx: property (text), widget (QLabel, label_inactiveIcon)
#: po/rc.cpp:9 rc.cpp:9 #: po/rc.cpp:3 rc.cpp:3
msgid "Inactive icon" msgid "Inactive icon"
msgstr "" msgstr ""
@ -233,89 +225,89 @@ msgstr ""
#. i18n: ectx: property (text), widget (QPushButton, pushButton_sudo) #. i18n: ectx: property (text), widget (QPushButton, pushButton_sudo)
#. i18n: file: widget.ui:282 #. i18n: file: widget.ui:282
#. i18n: ectx: property (text), widget (QPushButton, pushButton_wifi) #. i18n: ectx: property (text), widget (QPushButton, pushButton_wifi)
#: po/rc.cpp:12 po/rc.cpp:48 po/rc.cpp:60 po/rc.cpp:66 po/rc.cpp:72 #: po/rc.cpp:6 po/rc.cpp:42 po/rc.cpp:54 po/rc.cpp:60 po/rc.cpp:66
#: po/rc.cpp:78 po/rc.cpp:87 po/rc.cpp:93 po/rc.cpp:99 po/rc.cpp:105 #: po/rc.cpp:72 po/rc.cpp:81 po/rc.cpp:87 po/rc.cpp:93 po/rc.cpp:99
#: po/rc.cpp:111 po/rc.cpp:117 rc.cpp:12 rc.cpp:48 rc.cpp:60 rc.cpp:66 #: po/rc.cpp:105 po/rc.cpp:111 rc.cpp:6 rc.cpp:42 rc.cpp:54 rc.cpp:60
#: rc.cpp:72 rc.cpp:78 rc.cpp:87 rc.cpp:93 rc.cpp:99 rc.cpp:105 rc.cpp:111 #: rc.cpp:66 rc.cpp:72 rc.cpp:81 rc.cpp:87 rc.cpp:93 rc.cpp:99 rc.cpp:105
#: rc.cpp:117 #: rc.cpp:111
msgid "Browse" msgid "Browse"
msgstr "" msgstr ""
#. i18n: file: appearance.ui:80 #. i18n: file: appearance.ui:80
#. i18n: ectx: property (text), widget (QLabel, label_fontColor) #. i18n: ectx: property (text), widget (QLabel, label_fontColor)
#: po/rc.cpp:15 rc.cpp:15 #: po/rc.cpp:9 rc.cpp:9
msgid "Font color" msgid "Font color"
msgstr "" msgstr ""
#. i18n: file: appearance.ui:112 #. i18n: file: appearance.ui:112
#. i18n: ectx: property (toolTip), widget (KColorCombo, kcolorcombo_fontColor) #. i18n: ectx: property (toolTip), widget (KColorCombo, kcolorcombo_fontColor)
#: po/rc.cpp:18 rc.cpp:18 #: po/rc.cpp:12 rc.cpp:12
msgid "Set font color" msgid "Set font color"
msgstr "" msgstr ""
#. i18n: file: appearance.ui:142 #. i18n: file: appearance.ui:142
#. i18n: ectx: property (text), widget (QLabel, label_fontSize) #. i18n: ectx: property (text), widget (QLabel, label_fontSize)
#: po/rc.cpp:21 rc.cpp:21 #: po/rc.cpp:15 rc.cpp:15
msgid "Font size" msgid "Font size"
msgstr "" msgstr ""
#. i18n: file: appearance.ui:174 #. i18n: file: appearance.ui:174
#. i18n: ectx: property (toolTip), widget (QSpinBox, spinBox_fontSize) #. i18n: ectx: property (toolTip), widget (QSpinBox, spinBox_fontSize)
#: po/rc.cpp:24 rc.cpp:24 #: po/rc.cpp:18 rc.cpp:18
msgid "Set font size" msgid "Set font size"
msgstr "" msgstr ""
#. i18n: file: appearance.ui:203 #. i18n: file: appearance.ui:203
#. i18n: ectx: property (text), widget (QLabel, label_fontWeight) #. i18n: ectx: property (text), widget (QLabel, label_fontWeight)
#: po/rc.cpp:27 rc.cpp:27 #: po/rc.cpp:21 rc.cpp:21
msgid "Font weight" msgid "Font weight"
msgstr "" msgstr ""
#. i18n: file: appearance.ui:235 #. i18n: file: appearance.ui:235
#. i18n: ectx: property (toolTip), widget (QSpinBox, spinBox_fontWeight) #. i18n: ectx: property (toolTip), widget (QSpinBox, spinBox_fontWeight)
#: po/rc.cpp:30 rc.cpp:30 #: po/rc.cpp:24 rc.cpp:24
msgid "Set font weight" msgid "Set font weight"
msgstr "" msgstr ""
#. i18n: file: appearance.ui:267 #. i18n: file: appearance.ui:267
#. i18n: ectx: property (text), widget (QLabel, label_fontStyle) #. i18n: ectx: property (text), widget (QLabel, label_fontStyle)
#: po/rc.cpp:33 rc.cpp:33 #: po/rc.cpp:27 rc.cpp:27
msgid "Font style" msgid "Font style"
msgstr "" msgstr ""
#. i18n: file: appearance.ui:299 #. i18n: file: appearance.ui:299
#. i18n: ectx: property (toolTip), widget (QComboBox, comboBox_fontStyle) #. i18n: ectx: property (toolTip), widget (QComboBox, comboBox_fontStyle)
#: po/rc.cpp:36 rc.cpp:36 #: po/rc.cpp:30 rc.cpp:30
msgid "Set font style" msgid "Set font style"
msgstr "" msgstr ""
#. i18n: file: appearance.ui:326 #. i18n: file: appearance.ui:326
#. i18n: ectx: property (text), widget (QLabel, label_font) #. i18n: ectx: property (text), widget (QLabel, label_font)
#: po/rc.cpp:39 rc.cpp:39 #: po/rc.cpp:33 rc.cpp:33
msgid "Font" msgid "Font"
msgstr "" msgstr ""
#. i18n: file: appearance.ui:358 #. i18n: file: appearance.ui:358
#. i18n: ectx: property (toolTip), widget (QFontComboBox, fontComboBox_font) #. i18n: ectx: property (toolTip), widget (QFontComboBox, fontComboBox_font)
#: po/rc.cpp:42 rc.cpp:42 #: po/rc.cpp:36 rc.cpp:36
msgid "Set font family" msgid "Set font family"
msgstr "" msgstr ""
#. i18n: file: appearance.ui:375 #. i18n: file: appearance.ui:375
#. i18n: ectx: property (text), widget (QLabel, label_activeIcon) #. i18n: ectx: property (text), widget (QLabel, label_activeIcon)
#: po/rc.cpp:45 rc.cpp:45 #: po/rc.cpp:39 rc.cpp:39
msgid "Active icon" msgid "Active icon"
msgstr "" msgstr ""
#. i18n: file: appearance.ui:408 #. i18n: file: appearance.ui:408
#. i18n: ectx: property (text), widget (QLabel, label_textAlign) #. i18n: ectx: property (text), widget (QLabel, label_textAlign)
#: po/rc.cpp:51 rc.cpp:51 #: po/rc.cpp:45 rc.cpp:45
msgid "Text align" msgid "Text align"
msgstr "" msgstr ""
#. i18n: file: appearance.ui:440 #. i18n: file: appearance.ui:440
#. i18n: ectx: property (toolTip), widget (QComboBox, comboBox_textAlign) #. i18n: ectx: property (toolTip), widget (QComboBox, comboBox_textAlign)
#: po/rc.cpp:54 rc.cpp:54 #: po/rc.cpp:48 rc.cpp:48
msgid "Set text align" msgid "Set text align"
msgstr "" msgstr ""
@ -327,7 +319,7 @@ msgstr ""
#. i18n: ectx: property (text), widget (QLabel, label_netctl) #. i18n: ectx: property (text), widget (QLabel, label_netctl)
#. i18n: file: widget.ui:161 #. i18n: file: widget.ui:161
#. i18n: ectx: property (text), widget (QLabel, label_netctl) #. i18n: ectx: property (text), widget (QLabel, label_netctl)
#: po/rc.cpp:57 po/rc.cpp:96 rc.cpp:57 rc.cpp:96 #: po/rc.cpp:51 po/rc.cpp:90 rc.cpp:51 rc.cpp:90
msgid "Path to netctl" msgid "Path to netctl"
msgstr "" msgstr ""
@ -339,61 +331,61 @@ msgstr ""
#. i18n: ectx: property (text), widget (QLabel, label_netctlAuto) #. i18n: ectx: property (text), widget (QLabel, label_netctlAuto)
#. i18n: file: widget.ui:194 #. i18n: file: widget.ui:194
#. i18n: ectx: property (text), widget (QLabel, label_netctlAuto) #. i18n: ectx: property (text), widget (QLabel, label_netctlAuto)
#: po/rc.cpp:63 po/rc.cpp:102 rc.cpp:63 rc.cpp:102 #: po/rc.cpp:57 po/rc.cpp:96 rc.cpp:57 rc.cpp:96
msgid "Path to netctl-auto" msgid "Path to netctl-auto"
msgstr "" msgstr ""
#. i18n: file: dataengine.ui:100 #. i18n: file: dataengine.ui:100
#. i18n: ectx: property (text), widget (QCheckBox, checkBox_extIp4) #. i18n: ectx: property (text), widget (QCheckBox, checkBox_extIp4)
#: po/rc.cpp:69 rc.cpp:69 #: po/rc.cpp:63 rc.cpp:63
msgid "Check external IPv4" msgid "Check external IPv4"
msgstr "" msgstr ""
#. i18n: file: dataengine.ui:136 #. i18n: file: dataengine.ui:136
#. i18n: ectx: property (text), widget (QCheckBox, checkBox_extIp6) #. i18n: ectx: property (text), widget (QCheckBox, checkBox_extIp6)
#: po/rc.cpp:75 rc.cpp:75 #: po/rc.cpp:69 rc.cpp:69
msgid "Check external IPv6" msgid "Check external IPv6"
msgstr "" msgstr ""
#. i18n: file: widget.ui:34 #. i18n: file: widget.ui:34
#. i18n: ectx: property (text), widget (QLabel, label_autoUpdate) #. i18n: ectx: property (text), widget (QLabel, label_autoUpdate)
#: po/rc.cpp:81 rc.cpp:81 #: po/rc.cpp:75 rc.cpp:75
msgid "Auto update interval, msec" msgid "Auto update interval, msec"
msgstr "" msgstr ""
#. i18n: file: widget.ui:92 #. i18n: file: widget.ui:92
#. i18n: ectx: property (text), widget (QLabel, label_gui) #. i18n: ectx: property (text), widget (QLabel, label_gui)
#: po/rc.cpp:84 rc.cpp:84 #: po/rc.cpp:78 rc.cpp:78
msgid "Path to GUI" msgid "Path to GUI"
msgstr "" msgstr ""
#. i18n: file: widget.ui:125 #. i18n: file: widget.ui:125
#. i18n: ectx: property (text), widget (QCheckBox, checkBox_helper) #. i18n: ectx: property (text), widget (QCheckBox, checkBox_helper)
#: po/rc.cpp:90 rc.cpp:90 #: po/rc.cpp:84 rc.cpp:84
msgid "Use helper" msgid "Use helper"
msgstr "" msgstr ""
#. i18n: file: widget.ui:227 #. i18n: file: widget.ui:227
#. i18n: ectx: property (text), widget (QCheckBox, checkBox_sudo) #. i18n: ectx: property (text), widget (QCheckBox, checkBox_sudo)
#: po/rc.cpp:108 rc.cpp:108 #: po/rc.cpp:102 rc.cpp:102
msgid "Use sudo for netctl" msgid "Use sudo for netctl"
msgstr "" msgstr ""
#. i18n: file: widget.ui:263 #. i18n: file: widget.ui:263
#. i18n: ectx: property (text), widget (QCheckBox, checkBox_wifi) #. i18n: ectx: property (text), widget (QCheckBox, checkBox_wifi)
#: po/rc.cpp:114 rc.cpp:114 #: po/rc.cpp:108 rc.cpp:108
msgid "Show 'Start WiFi menu'" msgid "Show 'Start WiFi menu'"
msgstr "" msgstr ""
#. i18n: file: widget.ui:291 #. i18n: file: widget.ui:291
#. i18n: ectx: property (text), widget (QCheckBox, checkBox_showBigInterface) #. i18n: ectx: property (text), widget (QCheckBox, checkBox_showBigInterface)
#: po/rc.cpp:120 rc.cpp:120 #: po/rc.cpp:114 rc.cpp:114
msgid "Show more detailed interface" msgid "Show more detailed interface"
msgstr "" msgstr ""
#. i18n: file: widget.ui:309 #. i18n: file: widget.ui:309
#. i18n: ectx: property (toolTip), widget (QPlainTextEdit, textEdit) #. i18n: ectx: property (toolTip), widget (QPlainTextEdit, textEdit)
#: po/rc.cpp:123 rc.cpp:123 #: po/rc.cpp:117 rc.cpp:117
msgid "" msgid ""
"$info - active profile information\n" "$info - active profile information\n"
"$current - current profile name\n" "$current - current profile name\n"
@ -406,12 +398,12 @@ msgid ""
"$status - current profile status (static/enabled)" "$status - current profile status (static/enabled)"
msgstr "" msgstr ""
#: po/rc.cpp:132 rc.cpp:132 #: po/rc.cpp:126 rc.cpp:126
msgctxt "NAME OF TRANSLATORS" msgctxt "NAME OF TRANSLATORS"
msgid "Your names" msgid "Your names"
msgstr "" msgstr ""
#: po/rc.cpp:133 rc.cpp:133 #: po/rc.cpp:127 rc.cpp:127
msgctxt "EMAIL OF TRANSLATORS" msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails" msgid "Your emails"
msgstr "" msgstr ""

View File

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: https://github.com/arcan1s/netctl-gui/issues\n" "Report-Msgid-Bugs-To: https://github.com/arcan1s/netctl-gui/issues\n"
"POT-Creation-Date: 2014-08-20 11:59+0400\n" "POT-Creation-Date: 2014-08-24 16:44+0400\n"
"PO-Revision-Date: 2014-08-20 12:00+0400\n" "PO-Revision-Date: 2014-08-20 12:00+0400\n"
"Last-Translator: Evgeniy Alekseev <esalexeev@gmail.com>\n" "Last-Translator: Evgeniy Alekseev <esalexeev@gmail.com>\n"
"Language-Team: Russian <kde-russian@lists.kde.ru>\n" "Language-Team: Russian <kde-russian@lists.kde.ru>\n"
@ -18,99 +18,99 @@ msgstr ""
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Lokalize 1.5\n" "X-Generator: Lokalize 1.5\n"
#: netctl.cpp:269 #: netctl.cpp:270
msgid "Set profile %1 disabled" msgid "Set profile %1 disabled"
msgstr "Выключение автозагрузки профиля %1" msgstr "Выключение автозагрузки профиля %1"
#: netctl.cpp:272 #: netctl.cpp:273
msgid "Set profile %1 enabled" msgid "Set profile %1 enabled"
msgstr "Включение автозагрузки профиля %1" msgstr "Включение автозагрузки профиля %1"
#: netctl.cpp:293 #: netctl.cpp:294
msgid "Restart profile %1" msgid "Restart profile %1"
msgstr "Перезапуск профиля %1" msgstr "Перезапуск профиля %1"
#: netctl.cpp:314 #: netctl.cpp:315
msgid "Start profile %1" msgid "Start profile %1"
msgstr "Запуск профиля %1" msgstr "Запуск профиля %1"
#: netctl.cpp:340 #: netctl.cpp:341
msgid "Stop profile %1" msgid "Stop profile %1"
msgstr "Остановка профиля %1" msgstr "Остановка профиля %1"
#: netctl.cpp:360 netctl.cpp:498 #: netctl.cpp:361 netctl.cpp:499
msgid "Stop all profiles" msgid "Stop all profiles"
msgstr "Остановить все профили" msgstr "Остановить все профили"
#: netctl.cpp:380 #: netctl.cpp:381
msgid "Switch to profile %1" msgid "Switch to profile %1"
msgstr "Переключение на профиль %1" msgstr "Переключение на профиль %1"
#: netctl.cpp:453 #: netctl.cpp:454
msgid "Start another profile" msgid "Start another profile"
msgstr "Запустить другой профиль" msgstr "Запустить другой профиль"
#: netctl.cpp:454 #: netctl.cpp:455
msgid "Stop %1" msgid "Stop %1"
msgstr "Остановить %1" msgstr "Остановить %1"
#: netctl.cpp:455 #: netctl.cpp:456
msgid "Restart %1" msgid "Restart %1"
msgstr "Перезапустить %1" msgstr "Перезапустить %1"
#: netctl.cpp:457 #: netctl.cpp:458
msgid "Disable %1" msgid "Disable %1"
msgstr "Отключить %1" msgstr "Отключить %1"
#: netctl.cpp:459 #: netctl.cpp:460
msgid "Enable %1" msgid "Enable %1"
msgstr "Включить %1" msgstr "Включить %1"
#: netctl.cpp:462 netctl.cpp:485 #: netctl.cpp:463 netctl.cpp:486
msgid "Start profile" msgid "Start profile"
msgstr "Запустить профиль" msgstr "Запустить профиль"
#: netctl.cpp:493 #: netctl.cpp:494
msgid "Stop profile" msgid "Stop profile"
msgstr "Остановить профиль" msgstr "Остановить профиль"
#: netctl.cpp:503 #: netctl.cpp:504
msgid "Switch to profile" msgid "Switch to profile"
msgstr "Переключить профиль" msgstr "Переключить профиль"
#: netctl.cpp:511 #: netctl.cpp:512
msgid "Restart profile" msgid "Restart profile"
msgstr "Перезапустить профиль" msgstr "Перезапустить профиль"
#: netctl.cpp:516 #: netctl.cpp:517
msgid "Enable profile" msgid "Enable profile"
msgstr "Включить профиль" msgstr "Включить профиль"
#: netctl.cpp:520 #: netctl.cpp:521
msgid "Show netctl-gui" msgid "Show netctl-gui"
msgstr "Показать netctl-gui" msgstr "Показать netctl-gui"
#: netctl.cpp:525 #: netctl.cpp:526
msgid "Show WiFi menu" msgid "Show WiFi menu"
msgstr "Запустить WiFi-menu" msgstr "Запустить WiFi-menu"
#: netctl.cpp:552 #: netctl.cpp:553
msgid "Start GUI" msgid "Start GUI"
msgstr "Запуск GUI" msgstr "Запуск GUI"
#: netctl.cpp:563 #: netctl.cpp:564
msgid "Start WiFi menu" msgid "Start WiFi menu"
msgstr "Запуск WiFi-menu" msgstr "Запуск WiFi-menu"
#: netctl.cpp:603 #: netctl.cpp:604
msgid "Network is up" msgid "Network is up"
msgstr "Сеть работает" msgstr "Сеть работает"
#: netctl.cpp:607 #: netctl.cpp:608
msgid "Network is down" msgid "Network is down"
msgstr "Сеть не работает" msgstr "Сеть не работает"
#: netctl.cpp:797 #: netctl.cpp:798
msgid "" msgid ""
"Version %1\n" "Version %1\n"
"(build date %2)" "(build date %2)"
@ -118,73 +118,65 @@ msgstr ""
"Версия %1\n" "Версия %1\n"
"(дата сборки %2)" "(дата сборки %2)"
#: netctl.cpp:798 #: netctl.cpp:799
msgid "KDE widget which interacts with netctl." msgid "KDE widget which interacts with netctl."
msgstr "Виджет KDE, который взаимодействует с netctl." msgstr "Виджет KDE, который взаимодействует с netctl."
#: netctl.cpp:799 #: netctl.cpp:800
msgid "Links:" msgid "Links:"
msgstr "Ссылки:" msgstr "Ссылки:"
#: netctl.cpp:800 #: netctl.cpp:801
msgid "Homepage" msgid "Homepage"
msgstr "Домашняя страница" msgstr "Домашняя страница"
#: netctl.cpp:801 #: netctl.cpp:802
msgid "Repository" msgid "Repository"
msgstr "Репозиторий" msgstr "Репозиторий"
#: netctl.cpp:802 #: netctl.cpp:803
msgid "Bugtracker" msgid "Bugtracker"
msgstr "Багтрекер" msgstr "Багтрекер"
#: netctl.cpp:803 #: netctl.cpp:804
msgid "Translation issue" msgid "Translation issue"
msgstr "Тикет перевода" msgstr "Тикет перевода"
#: netctl.cpp:804 #: netctl.cpp:805
msgid "AUR packages" msgid "AUR packages"
msgstr "Пакеты в AUR" msgstr "Пакеты в AUR"
#: netctl.cpp:806 #: netctl.cpp:807
msgid "This software is licensed under %1" msgid "This software is licensed under %1"
msgstr "Данное приложение лицензировано под %1" msgstr "Данное приложение лицензировано под %1"
#: netctl.cpp:814 #: netctl.cpp:815
msgid "Translators: %1" msgid "Translators: %1"
msgstr "Переводчики: %1" msgstr "Переводчики: %1"
#: netctl.cpp:815 #: netctl.cpp:816
msgid "This software uses: %1" msgid "This software uses: %1"
msgstr "Данное приложение использует: %1" msgstr "Данное приложение использует: %1"
#: netctl.cpp:817 #: netctl.cpp:818
msgid "Netctl plasmoid" msgid "Netctl plasmoid"
msgstr "Netctl plasmoid" msgstr "Netctl plasmoid"
#: netctl.cpp:818 #: netctl.cpp:819
msgid "Appearance" msgid "Appearance"
msgstr "Внешний вид" msgstr "Внешний вид"
#: netctl.cpp:819 #: netctl.cpp:820
msgid "DataEngine" msgid "DataEngine"
msgstr "DataEngine" msgstr "DataEngine"
#. i18n: file: about.ui:21 #: netctl.cpp:821
#. i18n: ectx: attribute (title), widget (QWidget, tab_About)
#: netctl.cpp:820 po/rc.cpp:3 rc.cpp:3
msgid "About" msgid "About"
msgstr "О программе" msgstr "О программе"
#. i18n: file: about.ui:127
#. i18n: ectx: attribute (title), widget (QWidget, tab_ackn)
#: po/rc.cpp:6 rc.cpp:6
msgid "Acknowledgement"
msgstr "Благодарности"
#. i18n: file: appearance.ui:47 #. i18n: file: appearance.ui:47
#. i18n: ectx: property (text), widget (QLabel, label_inactiveIcon) #. i18n: ectx: property (text), widget (QLabel, label_inactiveIcon)
#: po/rc.cpp:9 rc.cpp:9 #: po/rc.cpp:3 rc.cpp:3
msgid "Inactive icon" msgid "Inactive icon"
msgstr "Иконка неактивного подключения" msgstr "Иконка неактивного подключения"
@ -236,89 +228,89 @@ msgstr "Иконка неактивного подключения"
#. i18n: ectx: property (text), widget (QPushButton, pushButton_sudo) #. i18n: ectx: property (text), widget (QPushButton, pushButton_sudo)
#. i18n: file: widget.ui:282 #. i18n: file: widget.ui:282
#. i18n: ectx: property (text), widget (QPushButton, pushButton_wifi) #. i18n: ectx: property (text), widget (QPushButton, pushButton_wifi)
#: po/rc.cpp:12 po/rc.cpp:48 po/rc.cpp:60 po/rc.cpp:66 po/rc.cpp:72 #: po/rc.cpp:6 po/rc.cpp:42 po/rc.cpp:54 po/rc.cpp:60 po/rc.cpp:66
#: po/rc.cpp:78 po/rc.cpp:87 po/rc.cpp:93 po/rc.cpp:99 po/rc.cpp:105 #: po/rc.cpp:72 po/rc.cpp:81 po/rc.cpp:87 po/rc.cpp:93 po/rc.cpp:99
#: po/rc.cpp:111 po/rc.cpp:117 rc.cpp:12 rc.cpp:48 rc.cpp:60 rc.cpp:66 #: po/rc.cpp:105 po/rc.cpp:111 rc.cpp:6 rc.cpp:42 rc.cpp:54 rc.cpp:60
#: rc.cpp:72 rc.cpp:78 rc.cpp:87 rc.cpp:93 rc.cpp:99 rc.cpp:105 rc.cpp:111 #: rc.cpp:66 rc.cpp:72 rc.cpp:81 rc.cpp:87 rc.cpp:93 rc.cpp:99 rc.cpp:105
#: rc.cpp:117 #: rc.cpp:111
msgid "Browse" msgid "Browse"
msgstr "Обзор" msgstr "Обзор"
#. i18n: file: appearance.ui:80 #. i18n: file: appearance.ui:80
#. i18n: ectx: property (text), widget (QLabel, label_fontColor) #. i18n: ectx: property (text), widget (QLabel, label_fontColor)
#: po/rc.cpp:15 rc.cpp:15 #: po/rc.cpp:9 rc.cpp:9
msgid "Font color" msgid "Font color"
msgstr "Цвет шрифта" msgstr "Цвет шрифта"
#. i18n: file: appearance.ui:112 #. i18n: file: appearance.ui:112
#. i18n: ectx: property (toolTip), widget (KColorCombo, kcolorcombo_fontColor) #. i18n: ectx: property (toolTip), widget (KColorCombo, kcolorcombo_fontColor)
#: po/rc.cpp:18 rc.cpp:18 #: po/rc.cpp:12 rc.cpp:12
msgid "Set font color" msgid "Set font color"
msgstr "Укажите цвет шрифта" msgstr "Укажите цвет шрифта"
#. i18n: file: appearance.ui:142 #. i18n: file: appearance.ui:142
#. i18n: ectx: property (text), widget (QLabel, label_fontSize) #. i18n: ectx: property (text), widget (QLabel, label_fontSize)
#: po/rc.cpp:21 rc.cpp:21 #: po/rc.cpp:15 rc.cpp:15
msgid "Font size" msgid "Font size"
msgstr "Размер шрифта" msgstr "Размер шрифта"
#. i18n: file: appearance.ui:174 #. i18n: file: appearance.ui:174
#. i18n: ectx: property (toolTip), widget (QSpinBox, spinBox_fontSize) #. i18n: ectx: property (toolTip), widget (QSpinBox, spinBox_fontSize)
#: po/rc.cpp:24 rc.cpp:24 #: po/rc.cpp:18 rc.cpp:18
msgid "Set font size" msgid "Set font size"
msgstr "Укажите размер шрифта" msgstr "Укажите размер шрифта"
#. i18n: file: appearance.ui:203 #. i18n: file: appearance.ui:203
#. i18n: ectx: property (text), widget (QLabel, label_fontWeight) #. i18n: ectx: property (text), widget (QLabel, label_fontWeight)
#: po/rc.cpp:27 rc.cpp:27 #: po/rc.cpp:21 rc.cpp:21
msgid "Font weight" msgid "Font weight"
msgstr "Толщина шрифта" msgstr "Толщина шрифта"
#. i18n: file: appearance.ui:235 #. i18n: file: appearance.ui:235
#. i18n: ectx: property (toolTip), widget (QSpinBox, spinBox_fontWeight) #. i18n: ectx: property (toolTip), widget (QSpinBox, spinBox_fontWeight)
#: po/rc.cpp:30 rc.cpp:30 #: po/rc.cpp:24 rc.cpp:24
msgid "Set font weight" msgid "Set font weight"
msgstr "Укажите ширину шрифта" msgstr "Укажите ширину шрифта"
#. i18n: file: appearance.ui:267 #. i18n: file: appearance.ui:267
#. i18n: ectx: property (text), widget (QLabel, label_fontStyle) #. i18n: ectx: property (text), widget (QLabel, label_fontStyle)
#: po/rc.cpp:33 rc.cpp:33 #: po/rc.cpp:27 rc.cpp:27
msgid "Font style" msgid "Font style"
msgstr "Стиль шрифта" msgstr "Стиль шрифта"
#. i18n: file: appearance.ui:299 #. i18n: file: appearance.ui:299
#. i18n: ectx: property (toolTip), widget (QComboBox, comboBox_fontStyle) #. i18n: ectx: property (toolTip), widget (QComboBox, comboBox_fontStyle)
#: po/rc.cpp:36 rc.cpp:36 #: po/rc.cpp:30 rc.cpp:30
msgid "Set font style" msgid "Set font style"
msgstr "Укажите стиль шрифта" msgstr "Укажите стиль шрифта"
#. i18n: file: appearance.ui:326 #. i18n: file: appearance.ui:326
#. i18n: ectx: property (text), widget (QLabel, label_font) #. i18n: ectx: property (text), widget (QLabel, label_font)
#: po/rc.cpp:39 rc.cpp:39 #: po/rc.cpp:33 rc.cpp:33
msgid "Font" msgid "Font"
msgstr "Шрифт" msgstr "Шрифт"
#. i18n: file: appearance.ui:358 #. i18n: file: appearance.ui:358
#. i18n: ectx: property (toolTip), widget (QFontComboBox, fontComboBox_font) #. i18n: ectx: property (toolTip), widget (QFontComboBox, fontComboBox_font)
#: po/rc.cpp:42 rc.cpp:42 #: po/rc.cpp:36 rc.cpp:36
msgid "Set font family" msgid "Set font family"
msgstr "Укажите шрифт" msgstr "Укажите шрифт"
#. i18n: file: appearance.ui:375 #. i18n: file: appearance.ui:375
#. i18n: ectx: property (text), widget (QLabel, label_activeIcon) #. i18n: ectx: property (text), widget (QLabel, label_activeIcon)
#: po/rc.cpp:45 rc.cpp:45 #: po/rc.cpp:39 rc.cpp:39
msgid "Active icon" msgid "Active icon"
msgstr "Иконка активного подключения" msgstr "Иконка активного подключения"
#. i18n: file: appearance.ui:408 #. i18n: file: appearance.ui:408
#. i18n: ectx: property (text), widget (QLabel, label_textAlign) #. i18n: ectx: property (text), widget (QLabel, label_textAlign)
#: po/rc.cpp:51 rc.cpp:51 #: po/rc.cpp:45 rc.cpp:45
msgid "Text align" msgid "Text align"
msgstr "Выравнивание текста" msgstr "Выравнивание текста"
#. i18n: file: appearance.ui:440 #. i18n: file: appearance.ui:440
#. i18n: ectx: property (toolTip), widget (QComboBox, comboBox_textAlign) #. i18n: ectx: property (toolTip), widget (QComboBox, comboBox_textAlign)
#: po/rc.cpp:54 rc.cpp:54 #: po/rc.cpp:48 rc.cpp:48
msgid "Set text align" msgid "Set text align"
msgstr "Установите выравнивание текста" msgstr "Установите выравнивание текста"
@ -330,7 +322,7 @@ msgstr "Установите выравнивание текста"
#. i18n: ectx: property (text), widget (QLabel, label_netctl) #. i18n: ectx: property (text), widget (QLabel, label_netctl)
#. i18n: file: widget.ui:161 #. i18n: file: widget.ui:161
#. i18n: ectx: property (text), widget (QLabel, label_netctl) #. i18n: ectx: property (text), widget (QLabel, label_netctl)
#: po/rc.cpp:57 po/rc.cpp:96 rc.cpp:57 rc.cpp:96 #: po/rc.cpp:51 po/rc.cpp:90 rc.cpp:51 rc.cpp:90
msgid "Path to netctl" msgid "Path to netctl"
msgstr "Путь к netctl" msgstr "Путь к netctl"
@ -342,61 +334,61 @@ msgstr "Путь к netctl"
#. i18n: ectx: property (text), widget (QLabel, label_netctlAuto) #. i18n: ectx: property (text), widget (QLabel, label_netctlAuto)
#. i18n: file: widget.ui:194 #. i18n: file: widget.ui:194
#. i18n: ectx: property (text), widget (QLabel, label_netctlAuto) #. i18n: ectx: property (text), widget (QLabel, label_netctlAuto)
#: po/rc.cpp:63 po/rc.cpp:102 rc.cpp:63 rc.cpp:102 #: po/rc.cpp:57 po/rc.cpp:96 rc.cpp:57 rc.cpp:96
msgid "Path to netctl-auto" msgid "Path to netctl-auto"
msgstr "Путь к netctl-auto" msgstr "Путь к netctl-auto"
#. i18n: file: dataengine.ui:100 #. i18n: file: dataengine.ui:100
#. i18n: ectx: property (text), widget (QCheckBox, checkBox_extIp4) #. i18n: ectx: property (text), widget (QCheckBox, checkBox_extIp4)
#: po/rc.cpp:69 rc.cpp:69 #: po/rc.cpp:63 rc.cpp:63
msgid "Check external IPv4" msgid "Check external IPv4"
msgstr "Проверять внешний IPv4" msgstr "Проверять внешний IPv4"
#. i18n: file: dataengine.ui:136 #. i18n: file: dataengine.ui:136
#. i18n: ectx: property (text), widget (QCheckBox, checkBox_extIp6) #. i18n: ectx: property (text), widget (QCheckBox, checkBox_extIp6)
#: po/rc.cpp:75 rc.cpp:75 #: po/rc.cpp:69 rc.cpp:69
msgid "Check external IPv6" msgid "Check external IPv6"
msgstr "Проверять внешний IPv6" msgstr "Проверять внешний IPv6"
#. i18n: file: widget.ui:34 #. i18n: file: widget.ui:34
#. i18n: ectx: property (text), widget (QLabel, label_autoUpdate) #. i18n: ectx: property (text), widget (QLabel, label_autoUpdate)
#: po/rc.cpp:81 rc.cpp:81 #: po/rc.cpp:75 rc.cpp:75
msgid "Auto update interval, msec" msgid "Auto update interval, msec"
msgstr "Интервал автообновления, мсек" msgstr "Интервал автообновления, мсек"
#. i18n: file: widget.ui:92 #. i18n: file: widget.ui:92
#. i18n: ectx: property (text), widget (QLabel, label_gui) #. i18n: ectx: property (text), widget (QLabel, label_gui)
#: po/rc.cpp:84 rc.cpp:84 #: po/rc.cpp:78 rc.cpp:78
msgid "Path to GUI" msgid "Path to GUI"
msgstr "Путь к GUI" msgstr "Путь к GUI"
#. i18n: file: widget.ui:125 #. i18n: file: widget.ui:125
#. i18n: ectx: property (text), widget (QCheckBox, checkBox_helper) #. i18n: ectx: property (text), widget (QCheckBox, checkBox_helper)
#: po/rc.cpp:90 rc.cpp:90 #: po/rc.cpp:84 rc.cpp:84
msgid "Use helper" msgid "Use helper"
msgstr "Использовать хелпер" msgstr "Использовать хелпер"
#. i18n: file: widget.ui:227 #. i18n: file: widget.ui:227
#. i18n: ectx: property (text), widget (QCheckBox, checkBox_sudo) #. i18n: ectx: property (text), widget (QCheckBox, checkBox_sudo)
#: po/rc.cpp:108 rc.cpp:108 #: po/rc.cpp:102 rc.cpp:102
msgid "Use sudo for netctl" msgid "Use sudo for netctl"
msgstr "Использовать sudo для netctl" msgstr "Использовать sudo для netctl"
#. i18n: file: widget.ui:263 #. i18n: file: widget.ui:263
#. i18n: ectx: property (text), widget (QCheckBox, checkBox_wifi) #. i18n: ectx: property (text), widget (QCheckBox, checkBox_wifi)
#: po/rc.cpp:114 rc.cpp:114 #: po/rc.cpp:108 rc.cpp:108
msgid "Show 'Start WiFi menu'" msgid "Show 'Start WiFi menu'"
msgstr "Показать 'Запустить WiFi-menu'" msgstr "Показать 'Запустить WiFi-menu'"
#. i18n: file: widget.ui:291 #. i18n: file: widget.ui:291
#. i18n: ectx: property (text), widget (QCheckBox, checkBox_showBigInterface) #. i18n: ectx: property (text), widget (QCheckBox, checkBox_showBigInterface)
#: po/rc.cpp:120 rc.cpp:120 #: po/rc.cpp:114 rc.cpp:114
msgid "Show more detailed interface" msgid "Show more detailed interface"
msgstr "Показать более детальный интерфейс" msgstr "Показать более детальный интерфейс"
#. i18n: file: widget.ui:309 #. i18n: file: widget.ui:309
#. i18n: ectx: property (toolTip), widget (QPlainTextEdit, textEdit) #. i18n: ectx: property (toolTip), widget (QPlainTextEdit, textEdit)
#: po/rc.cpp:123 rc.cpp:123 #: po/rc.cpp:117 rc.cpp:117
msgid "" msgid ""
"$info - active profile information\n" "$info - active profile information\n"
"$current - current profile name\n" "$current - current profile name\n"
@ -418,16 +410,19 @@ msgstr ""
"$profiles - список профилей netctl\n" "$profiles - список профилей netctl\n"
"$status - статус текущего профиля (static/enabled)" "$status - статус текущего профиля (static/enabled)"
#: po/rc.cpp:132 rc.cpp:132 #: po/rc.cpp:126 rc.cpp:126
msgctxt "NAME OF TRANSLATORS" msgctxt "NAME OF TRANSLATORS"
msgid "Your names" msgid "Your names"
msgstr "Evgeniy Alekseev" msgstr "Evgeniy Alekseev"
#: po/rc.cpp:133 rc.cpp:133 #: po/rc.cpp:127 rc.cpp:127
msgctxt "EMAIL OF TRANSLATORS" msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails" msgid "Your emails"
msgstr "esalexeev@gmail.com" msgstr "esalexeev@gmail.com"
#~ msgid "Acknowledgement"
#~ msgstr "Благодарности"
#~ msgid "normal" #~ msgid "normal"
#~ msgstr "normal" #~ msgstr "normal"

View File

@ -76,32 +76,52 @@
<translation>Build date: %1</translation> <translation>Build date: %1</translation>
</message> </message>
<message> <message>
<location filename="../../helper/src/messages.cpp" line="88"/> <location filename="../../helper/src/messages.cpp" line="89"/>
<source>cmake flags</source> <source>cmake flags</source>
<translation>cmake flags</translation> <translation>cmake flags</translation>
</message> </message>
<message> <message>
<location filename="../../helper/src/messages.cpp" line="98"/> <location filename="../../helper/src/messages.cpp" line="91"/>
<source>cmake properties</source>
<translation>cmake properties</translation>
</message>
<message>
<location filename="../../helper/src/messages.cpp" line="95"/>
<source>Components</source>
<translation>Components</translation>
</message>
<message>
<location filename="../../helper/src/messages.cpp" line="102"/>
<source>Additional components</source>
<translation>Additional components</translation>
</message>
<message>
<location filename="../../helper/src/messages.cpp" line="106"/>
<source>Project properties</source>
<translation>Project properties</translation>
</message>
<message>
<location filename="../../helper/src/messages.cpp" line="112"/>
<source>DBus configuration</source> <source>DBus configuration</source>
<translation>DBus configuration</translation> <translation>DBus configuration</translation>
</message> </message>
<message> <message>
<location filename="../../helper/src/messages.cpp" line="107"/> <location filename="../../helper/src/messages.cpp" line="121"/>
<source>Documentation</source> <source>Documentation</source>
<translation>Documentation</translation> <translation>Documentation</translation>
</message> </message>
<message> <message>
<location filename="../../helper/src/messages.cpp" line="122"/> <location filename="../../helper/src/messages.cpp" line="133"/>
<source>Version</source> <source>Version</source>
<translation>Version</translation> <translation>Version</translation>
</message> </message>
<message> <message>
<location filename="../../helper/src/messages.cpp" line="125"/> <location filename="../../helper/src/messages.cpp" line="136"/>
<source>Author</source> <source>Author</source>
<translation>Author</translation> <translation>Author</translation>
</message> </message>
<message> <message>
<location filename="../../helper/src/messages.cpp" line="128"/> <location filename="../../helper/src/messages.cpp" line="139"/>
<source>License</source> <source>License</source>
<translation>License</translation> <translation>License</translation>
</message> </message>
@ -110,24 +130,28 @@
<translation type="vanished">The helper is running with EUID %1. Functions will not be available.</translation> <translation type="vanished">The helper is running with EUID %1. Functions will not be available.</translation>
</message> </message>
<message> <message>
<location filename="../../helper/src/main.cpp" line="94"/>
<source>The helper is running with EUID %1. Some functions will not be available.</source> <source>The helper is running with EUID %1. Some functions will not be available.</source>
<translation>The helper is running with EUID %1. Some functions will not be available.</translation> <translation type="vanished">The helper is running with EUID %1. Some functions will not be available.</translation>
</message> </message>
<message> <message>
<location filename="../../helper/src/main.cpp" line="96"/> <location filename="../../helper/src/main.cpp" line="95"/>
<source>The helper is running with EUID %1. Some functions may not be available.</source>
<translation>The helper is running with EUID %1. Some functions may not be available.</translation>
</message>
<message>
<location filename="../../helper/src/main.cpp" line="97"/>
<source>See security notes for more details.</source> <source>See security notes for more details.</source>
<translation>See security notes for more details.</translation> <translation>See security notes for more details.</translation>
</message> </message>
<message> <message>
<location filename="../../helper/src/main.cpp" line="135"/> <location filename="../../helper/src/main.cpp" line="136"/>
<location filename="../../helper/src/main.cpp" line="146"/> <location filename="../../helper/src/main.cpp" line="147"/>
<source>Replace existing session.</source> <source>Replace existing session.</source>
<translation>Replace existing session.</translation> <translation>Replace existing session.</translation>
</message> </message>
<message> <message>
<location filename="../../helper/src/main.cpp" line="140"/> <location filename="../../helper/src/main.cpp" line="141"/>
<location filename="../../helper/src/main.cpp" line="152"/> <location filename="../../helper/src/main.cpp" line="153"/>
<source>Restore existing session.</source> <source>Restore existing session.</source>
<translation>Restore existing session.</translation> <translation>Restore existing session.</translation>
</message> </message>

View File

@ -75,54 +75,74 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../helper/src/messages.cpp" line="88"/> <location filename="../../helper/src/messages.cpp" line="89"/>
<source>cmake flags</source> <source>cmake flags</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../helper/src/messages.cpp" line="98"/> <location filename="../../helper/src/messages.cpp" line="91"/>
<source>cmake properties</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../helper/src/messages.cpp" line="95"/>
<source>Components</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../helper/src/messages.cpp" line="102"/>
<source>Additional components</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../helper/src/messages.cpp" line="106"/>
<source>Project properties</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../helper/src/messages.cpp" line="112"/>
<source>DBus configuration</source> <source>DBus configuration</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../helper/src/messages.cpp" line="107"/> <location filename="../../helper/src/messages.cpp" line="121"/>
<source>Documentation</source> <source>Documentation</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../helper/src/messages.cpp" line="122"/> <location filename="../../helper/src/messages.cpp" line="133"/>
<source>Version</source> <source>Version</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../helper/src/messages.cpp" line="125"/> <location filename="../../helper/src/messages.cpp" line="136"/>
<source>Author</source> <source>Author</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../helper/src/messages.cpp" line="128"/> <location filename="../../helper/src/messages.cpp" line="139"/>
<source>License</source> <source>License</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../helper/src/main.cpp" line="94"/> <location filename="../../helper/src/main.cpp" line="95"/>
<source>The helper is running with EUID %1. Some functions will not be available.</source> <source>The helper is running with EUID %1. Some functions may not be available.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../helper/src/main.cpp" line="96"/> <location filename="../../helper/src/main.cpp" line="97"/>
<source>See security notes for more details.</source> <source>See security notes for more details.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../helper/src/main.cpp" line="135"/> <location filename="../../helper/src/main.cpp" line="136"/>
<location filename="../../helper/src/main.cpp" line="146"/> <location filename="../../helper/src/main.cpp" line="147"/>
<source>Replace existing session.</source> <source>Replace existing session.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../../helper/src/main.cpp" line="140"/> <location filename="../../helper/src/main.cpp" line="141"/>
<location filename="../../helper/src/main.cpp" line="152"/> <location filename="../../helper/src/main.cpp" line="153"/>
<source>Restore existing session.</source> <source>Restore existing session.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>

View File

@ -76,54 +76,78 @@
<translation>Дата сборки: %1</translation> <translation>Дата сборки: %1</translation>
</message> </message>
<message> <message>
<location filename="../../helper/src/messages.cpp" line="88"/> <location filename="../../helper/src/messages.cpp" line="89"/>
<source>cmake flags</source> <source>cmake flags</source>
<translation>Флаги cmake</translation> <translation>Флаги cmake</translation>
</message> </message>
<message> <message>
<location filename="../../helper/src/messages.cpp" line="98"/> <location filename="../../helper/src/messages.cpp" line="91"/>
<source>cmake properties</source>
<translation>Свойства cmake</translation>
</message>
<message>
<location filename="../../helper/src/messages.cpp" line="95"/>
<source>Components</source>
<translation>Компоненты</translation>
</message>
<message>
<location filename="../../helper/src/messages.cpp" line="102"/>
<source>Additional components</source>
<translation>Дополнительные компоненты</translation>
</message>
<message>
<location filename="../../helper/src/messages.cpp" line="106"/>
<source>Project properties</source>
<translation>Свойства проекта</translation>
</message>
<message>
<location filename="../../helper/src/messages.cpp" line="112"/>
<source>DBus configuration</source> <source>DBus configuration</source>
<translation>Настройка DBus</translation> <translation>Настройка DBus</translation>
</message> </message>
<message> <message>
<location filename="../../helper/src/messages.cpp" line="107"/> <location filename="../../helper/src/messages.cpp" line="121"/>
<source>Documentation</source> <source>Documentation</source>
<translation>Документация</translation> <translation>Документация</translation>
</message> </message>
<message> <message>
<location filename="../../helper/src/messages.cpp" line="122"/> <location filename="../../helper/src/messages.cpp" line="133"/>
<source>Version</source> <source>Version</source>
<translation>Версия</translation> <translation>Версия</translation>
</message> </message>
<message> <message>
<location filename="../../helper/src/messages.cpp" line="125"/> <location filename="../../helper/src/messages.cpp" line="136"/>
<source>Author</source> <source>Author</source>
<translation>Автор</translation> <translation>Автор</translation>
</message> </message>
<message> <message>
<location filename="../../helper/src/messages.cpp" line="128"/> <location filename="../../helper/src/messages.cpp" line="139"/>
<source>License</source> <source>License</source>
<translation>Лицензия</translation> <translation>Лицензия</translation>
</message> </message>
<message> <message>
<location filename="../../helper/src/main.cpp" line="94"/>
<source>The helper is running with EUID %1. Some functions will not be available.</source> <source>The helper is running with EUID %1. Some functions will not be available.</source>
<translation>Хелпер запущен с EUID %1. Некоторые функции не будут доступны.</translation> <translation type="vanished">Хелпер запущен с EUID %1. Некоторые функции не будут доступны.</translation>
</message> </message>
<message> <message>
<location filename="../../helper/src/main.cpp" line="96"/> <location filename="../../helper/src/main.cpp" line="95"/>
<source>The helper is running with EUID %1. Some functions may not be available.</source>
<translation>Хелпер запущен с EUID %1. Некоторые функции могут быть недоступны.</translation>
</message>
<message>
<location filename="../../helper/src/main.cpp" line="97"/>
<source>See security notes for more details.</source> <source>See security notes for more details.</source>
<translation>Смотри примечания о безопасности для более подробной информации.</translation> <translation>Смотри примечания о безопасности для более подробной информации.</translation>
</message> </message>
<message> <message>
<location filename="../../helper/src/main.cpp" line="135"/> <location filename="../../helper/src/main.cpp" line="136"/>
<location filename="../../helper/src/main.cpp" line="146"/> <location filename="../../helper/src/main.cpp" line="147"/>
<source>Replace existing session.</source> <source>Replace existing session.</source>
<translation>Замещение существующей сессии.</translation> <translation>Замещение существующей сессии.</translation>
</message> </message>
<message> <message>
<location filename="../../helper/src/main.cpp" line="140"/> <location filename="../../helper/src/main.cpp" line="141"/>
<location filename="../../helper/src/main.cpp" line="152"/> <location filename="../../helper/src/main.cpp" line="153"/>
<source>Restore existing session.</source> <source>Restore existing session.</source>
<translation>Восстановление существующей сессии.</translation> <translation>Восстановление существующей сессии.</translation>
</message> </message>

View File

@ -623,11 +623,11 @@
</message> </message>
<message> <message>
<source>Disable</source> <source>Disable</source>
<translation type="obsolete">Disable</translation> <translation>Disable</translation>
</message> </message>
<message> <message>
<source>Enable</source> <source>Enable</source>
<translation type="obsolete">Enable</translation> <translation>Enable</translation>
</message> </message>
<message> <message>
<source>Save profile as...</source> <source>Save profile as...</source>
@ -739,7 +739,7 @@
</message> </message>
<message> <message>
<source>Ctrl+R</source> <source>Ctrl+R</source>
<translation>Ctrl+R</translation> <translation type="vanished">Ctrl+R</translation>
</message> </message>
<message> <message>
<source>Restart</source> <source>Restart</source>
@ -763,7 +763,7 @@
</message> </message>
<message> <message>
<source>Load</source> <source>Load</source>
<translation type="obsolete">Load</translation> <translation>Load</translation>
</message> </message>
<message> <message>
<source>Save</source> <source>Save</source>
@ -787,7 +787,7 @@
</message> </message>
<message> <message>
<source>Connect to Wi-Fi</source> <source>Connect to Wi-Fi</source>
<translation>Connect to Wi-Fi</translation> <translation type="vanished">Connect to Wi-Fi</translation>
</message> </message>
<message> <message>
<source>Menu</source> <source>Menu</source>
@ -803,7 +803,7 @@
</message> </message>
<message> <message>
<source>Remove</source> <source>Remove</source>
<translation type="obsolete">Remove</translation> <translation>Remove</translation>
</message> </message>
<message> <message>
<source>Stop profile</source> <source>Stop profile</source>
@ -843,15 +843,15 @@
</message> </message>
<message> <message>
<source>Load profile</source> <source>Load profile</source>
<translation>Load profile</translation> <translation type="vanished">Load profile</translation>
</message> </message>
<message> <message>
<source>Save profile</source> <source>Save profile</source>
<translation>Save profile</translation> <translation type="vanished">Save profile</translation>
</message> </message>
<message> <message>
<source>Start Wi-Fi</source> <source>Start Wi-Fi</source>
<translation>Start Wi-Fi</translation> <translation type="vanished">Start Wi-Fi</translation>
</message> </message>
<message> <message>
<source>netctl-auto</source> <source>netctl-auto</source>
@ -1087,15 +1087,15 @@
</message> </message>
<message> <message>
<source>DBus API reference</source> <source>DBus API reference</source>
<translation>DBus API reference</translation> <translation type="vanished">DBus API reference</translation>
</message> </message>
<message> <message>
<source>Security notes</source> <source>Security notes</source>
<translation>Security notes</translation> <translation type="vanished">Security notes</translation>
</message> </message>
<message> <message>
<source>Library documentation</source> <source>Library documentation</source>
<translation>Library documentation</translation> <translation type="vanished">Library documentation</translation>
</message> </message>
<message> <message>
<source>Documentation</source> <source>Documentation</source>
@ -1111,11 +1111,11 @@
</message> </message>
<message> <message>
<source>Switch to profile</source> <source>Switch to profile</source>
<translation>Switch to profile</translation> <translation type="vanished">Switch to profile</translation>
</message> </message>
<message> <message>
<source>Stop all profiles</source> <source>Stop all profiles</source>
<translation>Stop all profiles</translation> <translation type="vanished">Stop all profiles</translation>
</message> </message>
<message> <message>
<source>start detached from console</source> <source>start detached from console</source>
@ -1137,6 +1137,42 @@
<source>WiFi menu</source> <source>WiFi menu</source>
<translation>WiFi menu</translation> <translation>WiFi menu</translation>
</message> </message>
<message>
<source>Switch</source>
<translation>Switch</translation>
</message>
<message>
<source>Stop all</source>
<translation>Stop all</translation>
</message>
<message>
<source>Edit</source>
<translation>Edit</translation>
</message>
<message>
<source>DBus API</source>
<translation>DBus API</translation>
</message>
<message>
<source>Library</source>
<translation>Library</translation>
</message>
<message>
<source>cmake properties</source>
<translation>cmake properties</translation>
</message>
<message>
<source>Components</source>
<translation>Components</translation>
</message>
<message>
<source>Additional components</source>
<translation>Additional components</translation>
</message>
<message>
<source>Project properties</source>
<translation>Project properties</translation>
</message>
</context> </context>
<context> <context>
<name>MobileWidget</name> <name>MobileWidget</name>
@ -1873,7 +1909,11 @@
</message> </message>
<message> <message>
<source>There are too binaries. `netctlgui-helper` should be running as root (for example from systemd), otherwise interface `/ctrl` will not be available. `netctlgui-helper-suid` may be running as normal user, but you should keep it in mind that it has SUID bit.</source> <source>There are too binaries. `netctlgui-helper` should be running as root (for example from systemd), otherwise interface `/ctrl` will not be available. `netctlgui-helper-suid` may be running as normal user, but you should keep it in mind that it has SUID bit.</source>
<translation>There are too binaries. `netctlgui-helper` should be running as root (for example from systemd), otherwise interface `/ctrl` will not be available. `netctlgui-helper-suid` may be running as normal user, but you should keep it in mind that it has SUID bit.</translation> <translation type="vanished">There are too binaries. `netctlgui-helper` should be running as root (for example from systemd), otherwise interface `/ctrl` will not be available. `netctlgui-helper-suid` may be running as normal user, but you should keep it in mind that it has SUID bit.</translation>
</message>
<message>
<source>Skip components checking</source>
<translation>Skip components checking</translation>
</message> </message>
</context> </context>
<context> <context>

File diff suppressed because it is too large Load Diff

View File

@ -623,11 +623,11 @@
</message> </message>
<message> <message>
<source>Disable</source> <source>Disable</source>
<translation type="obsolete">Отключить</translation> <translation>Отключить</translation>
</message> </message>
<message> <message>
<source>Enable</source> <source>Enable</source>
<translation type="obsolete">Включить</translation> <translation>Включить</translation>
</message> </message>
<message> <message>
<source>Save profile as...</source> <source>Save profile as...</source>
@ -739,7 +739,7 @@
</message> </message>
<message> <message>
<source>Ctrl+R</source> <source>Ctrl+R</source>
<translation>Ctrl+R</translation> <translation type="vanished">Ctrl+R</translation>
</message> </message>
<message> <message>
<source>Restart</source> <source>Restart</source>
@ -763,7 +763,7 @@
</message> </message>
<message> <message>
<source>Load</source> <source>Load</source>
<translation type="obsolete">Загрузить</translation> <translation>Загрузить</translation>
</message> </message>
<message> <message>
<source>Save</source> <source>Save</source>
@ -787,7 +787,7 @@
</message> </message>
<message> <message>
<source>Connect to Wi-Fi</source> <source>Connect to Wi-Fi</source>
<translation>Подключиться к Wi-Fi</translation> <translation type="vanished">Подключиться к Wi-Fi</translation>
</message> </message>
<message> <message>
<source>Menu</source> <source>Menu</source>
@ -803,7 +803,7 @@
</message> </message>
<message> <message>
<source>Remove</source> <source>Remove</source>
<translation type="obsolete">Удалить</translation> <translation>Удалить</translation>
</message> </message>
<message> <message>
<source>Stop profile</source> <source>Stop profile</source>
@ -843,15 +843,15 @@
</message> </message>
<message> <message>
<source>Load profile</source> <source>Load profile</source>
<translation>Загрузить профиль</translation> <translation type="vanished">Загрузить профиль</translation>
</message> </message>
<message> <message>
<source>Save profile</source> <source>Save profile</source>
<translation>Сохранить профиль</translation> <translation type="vanished">Сохранить профиль</translation>
</message> </message>
<message> <message>
<source>Start Wi-Fi</source> <source>Start Wi-Fi</source>
<translation>Подключить WiFi</translation> <translation type="vanished">Подключить WiFi</translation>
</message> </message>
<message> <message>
<source>netctl-auto</source> <source>netctl-auto</source>
@ -1086,15 +1086,15 @@
</message> </message>
<message> <message>
<source>DBus API reference</source> <source>DBus API reference</source>
<translation>Описание DBus API</translation> <translation type="vanished">Описание DBus API</translation>
</message> </message>
<message> <message>
<source>Security notes</source> <source>Security notes</source>
<translation>Примечания о безопасности</translation> <translation type="vanished">Примечания о безопасности</translation>
</message> </message>
<message> <message>
<source>Library documentation</source> <source>Library documentation</source>
<translation>Документация</translation> <translation type="vanished">Документация</translation>
</message> </message>
<message> <message>
<source>Documentation</source> <source>Documentation</source>
@ -1110,11 +1110,11 @@
</message> </message>
<message> <message>
<source>Switch to profile</source> <source>Switch to profile</source>
<translation>Переключиться на профиль</translation> <translation type="vanished">Переключиться на профиль</translation>
</message> </message>
<message> <message>
<source>Stop all profiles</source> <source>Stop all profiles</source>
<translation>Остановить все профили</translation> <translation type="vanished">Остановить все профили</translation>
</message> </message>
<message> <message>
<source>start detached from console</source> <source>start detached from console</source>
@ -1136,6 +1136,42 @@
<source>WiFi menu</source> <source>WiFi menu</source>
<translation>WiFi меню</translation> <translation>WiFi меню</translation>
</message> </message>
<message>
<source>Switch</source>
<translation>Переключить</translation>
</message>
<message>
<source>Stop all</source>
<translation>Остановить все</translation>
</message>
<message>
<source>Edit</source>
<translation>Редактировать</translation>
</message>
<message>
<source>DBus API</source>
<translation>DBus API</translation>
</message>
<message>
<source>Library</source>
<translation>Библиотека</translation>
</message>
<message>
<source>cmake properties</source>
<translation>Свойства cmake</translation>
</message>
<message>
<source>Components</source>
<translation>Компоненты</translation>
</message>
<message>
<source>Additional components</source>
<translation>Дополнительные компоненты</translation>
</message>
<message>
<source>Project properties</source>
<translation>Свойства проекта</translation>
</message>
</context> </context>
<context> <context>
<name>MobileWidget</name> <name>MobileWidget</name>
@ -1872,7 +1908,11 @@
</message> </message>
<message> <message>
<source>There are too binaries. `netctlgui-helper` should be running as root (for example from systemd), otherwise interface `/ctrl` will not be available. `netctlgui-helper-suid` may be running as normal user, but you should keep it in mind that it has SUID bit.</source> <source>There are too binaries. `netctlgui-helper` should be running as root (for example from systemd), otherwise interface `/ctrl` will not be available. `netctlgui-helper-suid` may be running as normal user, but you should keep it in mind that it has SUID bit.</source>
<translation>Существует два бинарных файла. `netctlgui-helper` должен быть запущен от root&apos;а (например, через systemd), в противном случае интерфейс `/ctrl` не будет доступен. `netctlgui-helper-suid` может быть запущен от обычного пользователя, однако Вы должны иметь в виду, что он имеет SUID бит.</translation> <translation type="vanished">Существует два бинарных файла. `netctlgui-helper` должен быть запущен от root&apos;а (например, через systemd), в противном случае интерфейс `/ctrl` не будет доступен. `netctlgui-helper-suid` может быть запущен от обычного пользователя, однако Вы должны иметь в виду, что он имеет SUID бит.</translation>
</message>
<message>
<source>Skip components checking</source>
<translation>Пропустить проверку компонентов</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1935,7 +1975,7 @@
</message> </message>
<message> <message>
<source>Restart %1</source> <source>Restart %1</source>
<translation>Перезапустит %1</translation> <translation>Перезапустить %1</translation>
</message> </message>
<message> <message>
<source>Disable %1</source> <source>Disable %1</source>

View File

@ -1,6 +1,7 @@
#ifndef VERSION_H #ifndef VERSION_H
#define VERSION_H #define VERSION_H
// information
#define NAME "Netctl Graphical Interface" #define NAME "Netctl Graphical Interface"
#define VERSION "@PROJECT_VERSION@" #define VERSION "@PROJECT_VERSION@"
#define AUTHOR "@PROJECT_AUTHOR@" #define AUTHOR "@PROJECT_AUTHOR@"
@ -8,26 +9,38 @@
#define EMAIL "@PROJECT_CONTACT@" #define EMAIL "@PROJECT_CONTACT@"
#define LICENSE "@PROJECT_LICENSE@" #define LICENSE "@PROJECT_LICENSE@"
#define TRDPARTY_LICENSE "tasks,BSD,https://github.com/mhogomchungu/tasks;ponysay,GPLv3,http://erkin.co/ponysay" #define TRDPARTY_LICENSE "tasks,BSD,https://github.com/mhogomchungu/tasks;ponysay,GPLv3,http://erkin.co/ponysay"
#define DOCS_PATH "@CMAKE_INSTALL_PREFIX@/share/doc/netctl-gui/"
// links
#define HOMEPAGE "http://arcanis.name/projects/netctl-gui/" #define HOMEPAGE "http://arcanis.name/projects/netctl-gui/"
#define REPOSITORY "https://github.com/arcan1s/netctl-gui" #define REPOSITORY "https://github.com/arcan1s/netctl-gui"
#define BUGTRACKER "https://github.com/arcan1s/netctl-gui/issues" #define BUGTRACKER "https://github.com/arcan1s/netctl-gui/issues"
#define TRANSLATION "https://github.com/arcan1s/netctl-gui/issues/3" #define TRANSLATION "https://github.com/arcan1s/netctl-gui/issues/3"
#define AUR_PACKAGES "https://aur.archlinux.org/pkgbase/netctl-gui/" #define AUR_PACKAGES "https://aur.archlinux.org/pkgbase/netctl-gui/"
#define DOCS_PATH "@CMAKE_INSTALL_PREFIX@/share/doc/netctl-gui/"
// build information
#define BUILD_DATE "@CURRENT_DATE@" #define BUILD_DATE "@CURRENT_DATE@"
#define DATE "2014-@CURRENT_YEAR@" #define DATE "2014-@CURRENT_YEAR@"
// cmake properties
#define CMAKE_BUILD_TYPE "@CMAKE_BUILD_TYPE@" #define CMAKE_BUILD_TYPE "@CMAKE_BUILD_TYPE@"
#define CMAKE_INSTALL_PREFIX "@CMAKE_INSTALL_PREFIX@" #define CMAKE_INSTALL_PREFIX "@CMAKE_INSTALL_PREFIX@"
// components
#define PROJECT_BUILD_DATAENGINE "@BUILD_DATAENGINE@" #define PROJECT_BUILD_DATAENGINE "@BUILD_DATAENGINE@"
#define PROJECT_BUILD_DOCS "@BUILD_DOCS@"
#define PROJECT_BUILD_GUI "@BUILD_GUI@" #define PROJECT_BUILD_GUI "@BUILD_GUI@"
#define PROJECT_BUILD_HELPER "@BUILD_HELPER@"
#define PROJECT_BUILD_LIBRARY "@BUILD_LIBRARY@" #define PROJECT_BUILD_LIBRARY "@BUILD_LIBRARY@"
#define PROJECT_BUILD_PLASMOID "@BUILD_PLASMOID@" #define PROJECT_BUILD_PLASMOID "@BUILD_PLASMOID@"
// additional components
#define PROJECT_BUILD_DOCS "@BUILD_DOCS@"
#define PROJECT_BUILD_TEST "@BUILD_TEST@"
// project properties
#define PROJECT_DBUS_SYSTEMCONF_PATH "@DBUS_SYSTEMCONF_PATH@"
#define PROJECT_SYSTEMD_SERVICE_PATH "@SYSTEMD_SERVICE_PATH@"
#define PROJECT_USE_CAPABILITIES "@USE_CAPABILITIES@"
#define PROJECT_USE_QT5 "@USE_QT5@" #define PROJECT_USE_QT5 "@USE_QT5@"
// dbus configuration
#define DBUS_SERVICE "org.netctlgui.netctlgui" #define DBUS_SERVICE "org.netctlgui.netctlgui"
#define DBUS_INTERFACE "org.netctlgui.netctlgui" #define DBUS_INTERFACE "org.netctlgui.netctlgui"
#define DBUS_OBJECT_PATH "/netctlgui" #define DBUS_OBJECT_PATH "/netctlgui"