Merge branch 'kf5'

This commit is contained in:
arcan1s 2015-01-03 13:58:17 +03:00
commit a830fc9372
44 changed files with 4633 additions and 32 deletions

View File

@ -1,4 +1,4 @@
cmake_minimum_required (VERSION 2.8)
cmake_minimum_required (VERSION 2.8.12)
cmake_policy (SET CMP0003 OLD)
cmake_policy (SET CMP0002 OLD)
@ -29,6 +29,7 @@ option (BUILD_HELPER "Build helper" ON)
option (BUILD_LIBRARY "Build library" ON)
option (BUILD_DATAENGINE "Build DataEngine" ON)
option (BUILD_PLASMOID "Build plasmoid" ON)
option (BUILD_KDE4 "Build on KDE4" OFF)
if (BUILD_GUI OR BUILD_HELPER)
set (BUILD_LIBRARY ON)
endif ()
@ -84,5 +85,9 @@ if (BUILD_DATAENGINE)
add_subdirectory (dataengine)
endif ()
if (BUILD_PLASMOID)
add_subdirectory (plasmoid)
if (BUILD_KDE4)
add_subdirectory (plasmoid-kde4)
else ()
add_subdirectory (plasmoid-kf5)
endif (BUILD_KDE4)
endif ()

View File

@ -3,16 +3,37 @@ set (SUBPROJECT plasma_engine_netctl)
message (STATUS "Subproject ${SUBPROJECT}")
# find required libaries
if (BUILD_KDE4)
find_package (KDE4 REQUIRED)
include (KDE4Defaults)
add_definitions (${QT_DEFINITIONS} ${KDE4_DEFINITIONS})
else ()
find_package (Qt5 REQUIRED COMPONENTS Widgets Network)
find_package (ECM 0.0.11 REQUIRED NO_MODULE)
set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR})
find_package(KF5 REQUIRED COMPONENTS Plasma Service)
include (KDEInstallDirs)
include (KDECMakeSettings)
include (KDECompilerSettings)
add_definitions (${Qt5Core_DEFINITIONS} ${Qt5Network_DEFINITIONS})
set (Qt_INCLUDE ${Qt5Core_INCLUDE_DIRS}
${Qt5Network_INCLUDE_DIRS})
set (KDE_INCLUDE ${ConfigCore_INCLUDE_DIR}
${CoreAddons_INCLUDE_DIR}
${Plasma_INCLUDE_DIR}
${Service_INCLUDE_DIR})
endif ()
include_directories (${CMAKE_SOURCE_DIR}
${CMAKE_BINARY_DIR}
${KDE4_INCLUDES}
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_BINARY_DIR}/../
${PROJECT_TRDPARTY_DIR})
${PROJECT_TRDPARTY_DIR}
${Qt_INCLUDE}
${KDE_INCLUDE})
set (PLUGIN_NAME ${SUBPROJECT})
file (GLOB SUBPROJECT_DESKTOP_IN *.desktop)
@ -25,11 +46,22 @@ file (GLOB SUBPROJECT_CONF *.conf)
configure_file (${SUBPROJECT_DESKTOP_IN} ${CMAKE_CURRENT_BINARY_DIR}/${SUBPROJECT_DESKTOP})
# make
if (BUILD_KDE4)
qt4_wrap_cpp (TASK_MOC_SOURCE ${TASK_HEADER})
kde4_add_plugin (${PLUGIN_NAME} ${SUBPROJECT_SOURCE} ${TASK_MOC_SOURCE})
target_link_libraries (${PLUGIN_NAME} ${KDE4_KDECORE_LIBS} ${KDE4_PLASMA_LIBS} ${QT_QTNETWORK_LIBRARY})
else ()
qt5_wrap_cpp (TASK_MOC_SOURCE ${TASK_HEADER})
add_library (${PLUGIN_NAME} MODULE ${SUBPROJECT_SOURCE} ${TASK_MOC_SOURCE})
target_link_libraries (${PLUGIN_NAME} ${Plasma_LIBRARIES} ${Qt5Network_LIBRARIES})
kcoreaddons_desktop_to_json (${PLUGIN_NAME} ${CMAKE_CURRENT_BINARY_DIR}/${SUBPROJECT_DESKTOP})
endif ()
# install
if (BUILD_KDE4)
install (TARGETS ${PLUGIN_NAME} DESTINATION ${PLUGIN_INSTALL_DIR})
else ()
install (TARGETS ${PLUGIN_NAME} DESTINATION ${PLUGIN_INSTALL_DIR}/plasma/dataengine)
endif ()
install (FILES ${CMAKE_CURRENT_BINARY_DIR}/${SUBPROJECT_DESKTOP} DESTINATION ${SERVICES_INSTALL_DIR})
install (FILES ${SUBPROJECT_CONF} DESTINATION ${CONFIG_INSTALL_DIR})

View File

@ -17,8 +17,6 @@
#include "netctl.h"
#include <KGlobal>
#include <KStandardDirs>
#include <Plasma/DataContainer>
#include <QDebug>
@ -29,6 +27,15 @@
#include <pdebug/pdebug.h>
#include <task/taskadds.h>
#include <version.h>
// KF5-KDE4 compability
#ifdef BUILD_KDE4
#include <KGlobal>
#include <KStandardDirs>
#else
#include <QStandardPaths>
#endif /* BUILD_KDE4 */
Netctl::Netctl(QObject *parent, const QVariantList &args)
@ -89,7 +96,12 @@ void Netctl::readConfiguration()
rawConfig[QString("NETCTLCMD")] = QString("/usr/bin/netctl");
rawConfig[QString("NETCTLAUTOCMD")] = QString("/usr/bin/netctl-auto");
QString fileName = KGlobal::dirs()->findResource("config", "netctl.conf");
QString fileName;
#ifdef BUILD_KDE4
fileName = KGlobal::dirs()->findResource("config", "netctl.conf");
#else
fileName = QStandardPaths::locate(QStandardPaths::ConfigLocation, QString("netctl.conf"));
#endif /* BUILD_KDE4 */
if (debug) qDebug() << PDEBUG << ":" << "Configuration file" << fileName;
QFile configFile(fileName);
if (!configFile.open(QIODevice::ReadOnly)) {
@ -388,6 +400,10 @@ bool Netctl::updateSourceEvent(const QString &source)
}
#ifdef BUILD_KDE4
K_EXPORT_PLASMA_DATAENGINE(netctl, Netctl)
#else
K_EXPORT_PLASMA_DATAENGINE_WITH_JSON(netctl, Netctl, "plasma-dataengine-netctl.json")
#endif /* BUILD_KDE4 */
#include "netctl.moc"

View File

@ -10,11 +10,11 @@ X-KDE-ServiceTypes=Plasma/DataEngine
X-KDE-Library=plasma_engine_netctl
X-Plasma-EngineName=netctl
X-KDE-PluginInfo-Author=Evgeniy Alekseev aka arcanis
X-KDE-PluginInfo-Author=Evgeniy Alekseev
X-KDE-PluginInfo-Email=esalexeev@gmail.com
X-KDE-PluginInfo-Name=netctl
X-KDE-PluginInfo-Version=@PROJECT_VERSION@
X-KDE-PluginInfo-Website=http://arcan1s.github.io/projects/netctlplasmoid
X-KDE-PluginInfo-Website=http://arcanis.name/ru/projects/netctl-gui/
X-KDE-PluginInfo-Category=Network
X-KDE-PluginInfo-Depends=
X-KDE-PluginInfo-License=GPLv3

View File

@ -8,11 +8,11 @@ Icon=netctl-gui-widget
X-KDE-ServiceTypes=Plasma/Applet,Plasma/PopupApplet
X-KDE-Library=plasma_applet_netctl
X-KDE-PluginInfo-Author=Evgeniy Alekseev aka arcanis
X-KDE-PluginInfo-Author=Evgeniy Alekseev
X-KDE-PluginInfo-Email=esalexeev@gmail.com
X-KDE-PluginInfo-Name=netctl
X-KDE-PluginInfo-Version=@PROJECT_VERSION@
X-KDE-PluginInfo-Website=http://arcan1s.github.io/projects/netctlplasmoid
X-KDE-PluginInfo-Website=http://arcanis.name/ru/projects/netctl-gui/
X-KDE-PluginInfo-Category=Network
X-KDE-PluginInfo-Depends=
X-KDE-PluginInfo-License=GPLv3

View File

@ -0,0 +1,85 @@
# set project name
set (SUBPROJECT plasma_applet_netctl)
message (STATUS "Subproject ${SUBPROJECT}")
# find resources
# set (RESOURCES ${PROJECT_RESOURCE_DIR}/resources-plasmoid.qrc)
#
# # find required libaries
# find_package (KDE4 REQUIRED)
# include (KDE4Defaults)
#
# add_definitions (${QT_DEFINITIONS} ${KDE4_DEFINITIONS})
# include_directories (${CMAKE_SOURCE_DIR}
# ${CMAKE_BINARY_DIR}
# ${KDE4_INCLUDES}
# ${CMAKE_CURRENT_BINARY_DIR}
# ${CMAKE_CURRENT_BINARY_DIR}/../
# ${PROJECT_TRDPARTY_DIR})
#
# # add_subdirectory (po)
#
# # set sources
# set (PLUGIN_NAME ${SUBPROJECT})
# file (GLOB SUBPROJECT_DESKTOP_IN *.desktop)
# file (RELATIVE_PATH SUBPROJECT_DESKTOP ${CMAKE_SOURCE_DIR} ${SUBPROJECT_DESKTOP_IN})
# file (GLOB SUBPROJECT_NOTIFY *.notifyrc)
# file (GLOB SUBPROJECT_SOURCE *.cpp)
# file (GLOB_RECURSE SUBPROJECT_UI *.ui ${PROJECT_TRDPARTY_DIR}/about/*.ui)
#
# # prepare
# configure_file (${SUBPROJECT_DESKTOP_IN} ${CMAKE_CURRENT_BINARY_DIR}/${SUBPROJECT_DESKTOP})
#
# # make
# qt4_add_resources (QRC_SOURCES ${RESOURCES})
# kde4_add_ui_files (SUBPROJECT_SOURCE ${SUBPROJECT_UI})
# kde4_add_plugin (${PLUGIN_NAME} ${SUBPROJECT_SOURCE} ${QRC_SOURCES})
# target_link_libraries (${PLUGIN_NAME} ${KDE4_PLASMA_LIBS} ${KDE4_KDEUI_LIBS} ${KDE4_KIO_LIBS})
#
# # install
# install (TARGETS ${PLUGIN_NAME} DESTINATION ${PLUGIN_INSTALL_DIR})
# install (FILES ${CMAKE_CURRENT_BINARY_DIR}/${SUBPROJECT_DESKTOP} DESTINATION ${SERVICES_INSTALL_DIR})
# install (FILES ${SUBPROJECT_NOTIFY} DESTINATION ${DATA_INSTALL_DIR}/${PLUGIN_NAME})
# plasma_install_package(plasmoid org.kde.plasma.netctl)
find_package (Qt5 REQUIRED COMPONENTS Core DBus Qml Widgets)
find_package (ECM 0.0.12 REQUIRED NO_MODULE)
set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR})
find_package(KF5 REQUIRED COMPONENTS I18n Service WidgetsAddons KIO CoreAddons Notifications Plasma)
find_package(KF5I18n CONFIG REQUIRED)
include (KDEInstallDirs)
include (KDECMakeSettings)
include (KDECompilerSettings)
add_definitions (${Qt5Core_DEFINITIONS} ${Qt5DBus_DEFINITIONS} ${Qt5Qml_DEFINITIONS})
set (Qt_INCLUDE ${Qt5Core_INCLUDE_DIRS}
${Qt5DBus_INCLUDE_DIRS}
${Qt5Qml_INCLUDE_DIRS})
set (Kf5_INCLUDE ${ConfigCore_INCLUDE_DIR}
${CoreAddons_INCLUDE_DIR}
${I18n_INCLUDE_DIR}
${INTERFACE_INCLUDE_DIRECTORIES}
${Notifications_INCLUDE_DIR}
${Plasma_INCLUDE_DIR}
${Service_INCLUDE_DIR})
set (PLUGIN_NAME netctlplugin)
add_subdirectory (plugin)
# set(dir plasmoid)
# set(component org.kde.plasma.netctl)
# set(root ${ARGV2})
# set(type ${ARGV3})
# if(NOT root)
# set(root plasmoids)
# endif()
# if(NOT type)
# set(type applet)
# endif()
# install(DIRECTORY ${dir}/ DESTINATION ${PLASMA_DATA_INSTALL_DIR}/${root}/${component}
# PATTERN CMakeLists.txt EXCLUDE
# PATTERN README.txt EXCLUDE
# PATTERN Messages.sh EXCLUDE
# PATTERN dummydata EXCLUDE)
#
# install(FILES ${dir}/metadata.desktop DESTINATION ${SERVICES_INSTALL_DIR} RENAME plasma-${type}-${component}.desktop)
plasma_install_package (plasmoid org.kde.plasma.netctl)

View File

@ -0,0 +1,185 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>DataEngineWindow</class>
<widget class="QWidget" name="DataEngineWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>480</width>
<height>333</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>480</width>
<height>320</height>
</size>
</property>
<property name="windowTitle">
<string notr="true">Configuration Window</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QHBoxLayout" name="layout_netctl">
<item>
<widget class="QLabel" name="label_netctl">
<property name="minimumSize">
<size>
<width>150</width>
<height>23</height>
</size>
</property>
<property name="text">
<string>Path to netctl</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit_netctl"/>
</item>
<item>
<widget class="QPushButton" name="pushButton_netctl">
<property name="minimumSize">
<size>
<width>100</width>
<height>23</height>
</size>
</property>
<property name="text">
<string>Browse</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="layout_netctlAuto">
<item>
<widget class="QLabel" name="label_netctlAuto">
<property name="minimumSize">
<size>
<width>150</width>
<height>23</height>
</size>
</property>
<property name="text">
<string>Path to netctl-auto</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit_netctlAuto"/>
</item>
<item>
<widget class="QPushButton" name="pushButton_netctlAuto">
<property name="minimumSize">
<size>
<width>100</width>
<height>23</height>
</size>
</property>
<property name="text">
<string>Browse</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="layout_extIp4">
<item>
<widget class="QCheckBox" name="checkBox_extIp4">
<property name="minimumSize">
<size>
<width>150</width>
<height>23</height>
</size>
</property>
<property name="text">
<string>Check external IPv4</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit_extIp4"/>
</item>
<item>
<widget class="QPushButton" name="pushButton_extIp4">
<property name="minimumSize">
<size>
<width>100</width>
<height>23</height>
</size>
</property>
<property name="text">
<string>Browse</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="layout_extIp6">
<item>
<widget class="QCheckBox" name="checkBox_extIp6">
<property name="minimumSize">
<size>
<width>150</width>
<height>23</height>
</size>
</property>
<property name="text">
<string>Check external IPv6</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit_extIp6"/>
</item>
<item>
<widget class="QPushButton" name="pushButton_extIp6">
<property name="minimumSize">
<size>
<width>100</width>
<height>23</height>
</size>
</property>
<property name="text">
<string>Browse</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer_dataengine">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<tabstops>
<tabstop>lineEdit_netctl</tabstop>
<tabstop>pushButton_netctl</tabstop>
<tabstop>checkBox_extIp4</tabstop>
<tabstop>lineEdit_extIp4</tabstop>
<tabstop>pushButton_extIp4</tabstop>
</tabstops>
<resources/>
<connections/>
</ui>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,112 @@
/***************************************************************************
* This file is part of netctl-gui *
* *
* netctl-gui is free software: you can redistribute it and/or *
* modify it under the terms of the GNU General Public License as *
* published by the Free Software Foundation, either version 3 of the *
* License, or (at your option) any later version. *
* *
* netctl-gui is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with netctl-gui. If not, see http://www.gnu.org/licenses/ *
***************************************************************************/
#ifndef NETCTL_PLASMOID_H
#define NETCTL_PLASMOID_H
class Netctl : public Plasma::PopupApplet
{
Q_OBJECT
public:
Netctl(QObject *parent, const QVariantList &args);
~Netctl();
void init();
QString parsePattern(const QString rawLine);
QMap<QString, QString> readDataEngineConfiguration();
void writeDataEngineConfiguration(const QMap<QString, QString> settings);
QMap<QString, QString> updateDataEngineConfiguration(const QMap<QString, QString> rawConfig);
public slots:
// events
void sendNotification(const QString eventId, const QString message);
void showGui();
void showWifi();
// dataengine
void dataUpdated(const QString &sourceName, const Plasma::DataEngine::Data &data);
// configuration interface
void configAccepted();
void configChanged();
void setBigInterface();
void setDataEngineExternalIp4();
void setDataEngineExternalIp6();
void setHelper();
void setSudo();
void setWifi();
private slots:
// ui
void updateIcon();
void updateInterface(bool setHidden);
// configuration interface
void selectAbstractSomething();
// context menu
void enableProfileSlot();
void restartProfileSlot();
void startProfileSlot(QAction *profile);
void stopProfileSlot();
void stopAllProfilesSlot();
void switchToProfileSlot(QAction *profile);
// helper
void checkHelperStatus();
void startHelper();
protected:
void createConfigurationInterface(KConfigDialog *parent);
QList<QAction*> contextualActions();
private:
// ui
QWidget *graphicsWidget;
QHBoxLayout *layout;
IconLabel *iconLabel;
QLabel *textLabel;
// information
bool status;
QMap<QString, QString> info;
QStringList profileList;
// context menu
void createActions();
QList<QAction*> menuActions;
QMenu *startProfileMenu;
QMenu *switchToProfileMenu;
QMap<QString, QAction*> contextMenu;
// data engine
Plasma::DataEngine *netctlEngine;
void connectToEngine();
void disconnectFromEngine();
QList<QVariant> sendDBusRequest(const QString cmd, const QList<QVariant> args = QList<QVariant>());
// configuration interface
Ui::AppearanceWindow uiAppConfig;
Ui::DataEngineWindow uiDEConfig;
Ui::ConfigWindow uiWidConfig;
Ui::About uiAboutConfig;
// configuration
int autoUpdateInterval;
bool bigInterface;
bool debug;
QString textPattern;
QStringList formatLine;
QMap<QString, QString> paths;
bool useHelper, useSudo, useWifi;
};
K_EXPORT_PLASMA_APPLET(netctl, Netctl)
#endif /* NETCTL_PLASMOID_H */

View File

@ -0,0 +1,14 @@
[Global]
IconName=netctl-gui-widget
Name=Netctl plasmoid
Comment=Netctl plasmoid popups
[Event/Error]
Name=Error
Comment=There is an error from netctl plasmoid
Action=Popup
[Event/Info]
Name=Information
Comment=There is an information from netctl plasmoid
Action=Popup

View File

@ -0,0 +1,41 @@
/***************************************************************************
* This file is part of netctl-gui *
* *
* netctl-gui is free software: you can redistribute it and/or *
* modify it under the terms of the GNU General Public License as *
* published by the Free Software Foundation, either version 3 of the *
* License, or (at your option) any later version. *
* *
* netctl-gui is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with netctl-gui. If not, see http://www.gnu.org/licenses/ *
***************************************************************************/
import QtQuick 2.0
import org.kde.plasma.configuration 2.0
ConfigModel {
ConfigCategory {
name: i18n("Widget")
icon: "/usr/share/pixmaps/netctl-gui-widget.png"
source: "widget.qml"
}
ConfigCategory {
name: i18n("Appearance")
icon: "preferences-desktop-theme"
source: "appearance.qml"
}
ConfigCategory {
name: i18n("About")
icon: "help-about"
source: "about.qml"
}
}

View File

@ -0,0 +1,75 @@
<?xml version="1.0" encoding="UTF-8"?>
<kcfg xmlns="http://www.kde.org/standards/kcfg/1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0
http://www.kde.org/standards/kcfg/1.0/kcfg.xsd" >
<kcfgfile name=""/>
<group name="Widget">
<!-- widget -->
<entry name="autoUpdateInterval" type="int">
<default>100</default>
</entry>
<entry name="guiPath" type="string">
<default>/usr/bin/netctl-gui</default>
</entry>
<entry name="helperPath" type="string">
<default>/usr/bin/netctlgui-helper</default>
</entry>
<entry name="netctlPath" type="string">
<default>/usr/bin/netctl</default>
</entry>
<entry name="netctlAutoPath" type="string">
<default>/usr/bin/netctl-auto</default>
</entry>
<entry name="sudoPath" type="string">
<default>/usr/bin/kdesu</default>
</entry>
<entry name="wifiPath" type="string">
<default>/usr/bin/netctl-gui -t 3</default>
</entry>
<entry name="useHelper" type="bool">
<default>true</default>
</entry>
<entry name="useSudo" type="bool">
<default>true</default>
</entry>
<entry name="useWifi" type="bool">
<default>false</default>
</entry>
<entry name="textPattern" type="string">
<default>$info
IPv4: $intip4
IPv6: $intip6</default>
</entry>
</group>
<group name="Appearance">
<!-- appearance -->
<entry name="textAlign" type="string">
<default>center</default>
</entry>
<entry name="fontFamily" type="string">
<default>Terminus</default>
</entry>
<entry name="fontSize" type="int">
<default>12</default>
</entry>
<entry name="fontColor" type="string">
<default>#000000</default>
</entry>
<entry name="fontWeight" type="string">
<default>normal</default>
</entry>
<entry name="fontStyle" type="string">
<default>normal</default>
</entry>
<entry name="activeIconPath" type="string">
<default>/usr/share/icons/hicolor/64x64/apps/netctl-idle.png</default>
</entry>
<entry name="inactiveIconPath" type="string">
<default>/usr/share/icons/hicolor/64x64/apps/netctl-offline.png</default>
</entry>
</group>
</kcfg>

View File

@ -0,0 +1,85 @@
/***************************************************************************
* This file is part of netctl-gui *
* *
* netctl-gui is free software: you can redistribute it and/or *
* modify it under the terms of the GNU General Public License as *
* published by the Free Software Foundation, either version 3 of the *
* License, or (at your option) any later version. *
* *
* netctl-gui is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with netctl-gui. If not, see http://www.gnu.org/licenses/ *
***************************************************************************/
import QtQuick 2.0
import QtQuick.Controls 1.3 as QtControls
import QtQuick.Layouts 1.0 as QtLayouts
import org.kde.plasma.private.netctl 1.0
Item {
id: aboutPage
width: childrenRect.width
height: childrenRect.height
Grid {
QtControls.TabView {
QtControls.Tab {
title: i18n("About")
QtLayouts.ColumnLayout {
QtControls.Label {
QtLayouts.Layout.fillWidth: true
horizontalAlignment: Text.AlignHCenter
text: NetctlAdds.getAboutText("header")
}
QtControls.Label {
QtLayouts.Layout.fillWidth: true
horizontalAlignment: Text.AlignJustify
text: NetctlAdds.getAboutText("description")
}
QtControls.Label {
QtLayouts.Layout.fillWidth: true
horizontalAlignment: Text.AlignLeft
textFormat: Text.RichText
text: NetctlAdds.getAboutText("links")
}
QtControls.Label {
QtLayouts.Layout.fillWidth: true
font.capitalization: Font.SmallCaps
horizontalAlignment: Text.AlignHCenter
textFormat: Text.RichText
text: NetctlAdds.getAboutText("copy")
}
}
}
QtControls.Tab {
title: i18n("Acknowledgment")
QtLayouts.ColumnLayout {
QtControls.Label {
QtLayouts.Layout.fillWidth: true
horizontalAlignment: Text.AlignJustify
text: NetctlAdds.getAboutText("translators")
}
QtControls.Label {
QtLayouts.Layout.fillWidth: true
horizontalAlignment: Text.AlignJustify
textFormat: Text.RichText
text: NetctlAdds.getAboutText("3rdparty")
}
}
}
}
}
}

View File

@ -0,0 +1,272 @@
/***************************************************************************
* This file is part of netctl-gui *
* *
* netctl-gui is free software: you can redistribute it and/or *
* modify it under the terms of the GNU General Public License as *
* published by the Free Software Foundation, either version 3 of the *
* License, or (at your option) any later version. *
* *
* netctl-gui is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with netctl-gui. If not, see http://www.gnu.org/licenses/ *
***************************************************************************/
import QtQuick 2.0
import QtQuick.Controls 1.0 as QtControls
import QtQuick.Controls.Styles 1.3 as QtStyles
import QtQuick.Dialogs 1.1 as QtDialogs
import QtQuick.Layouts 1.0 as QtLayouts
Item {
id: appearancePage
width: childrenRect.width
height: childrenRect.height
property variant weight: {
25: 0,
50: 1,
63: 3,
75: 4,
87: 5
}
property string cfg_textAlign: textAlign.currentText
property alias cfg_fontFamily: selectFont.text
property alias cfg_fontSize: fontSize.value
property string cfg_fontWeight: fontWeight.currentText
property string cfg_fontStyle: fontStyle.currentText
property alias cfg_fontColor: selectColor.text
property alias cfg_activeIconPath: activeIcon.text
property alias cfg_inactiveIconPath: inactiveIcon.text
QtLayouts.ColumnLayout {
QtLayouts.RowLayout {
QtControls.Label {
text: i18n("Text align")
}
QtControls.ComboBox {
id: textAlign
textRole: "label"
model: [
{
'label': i18n("center"),
'name': "center"
},
{
'label': i18n("right"),
'name': "right"
},
{
'label': i18n("left"),
'name': "left"
},
{
'label': i18n("justify"),
'name': "justify"
}
]
onCurrentIndexChanged: cfg_textAlign = model[currentIndex]["name"]
Component.onCompleted: {
for (var i = 0; i < model.length; i++) {
if (model[i]["name"] == plasmoid.configuration.textAlign) {
textAlign.currentIndex = i;
}
}
}
}
}
QtLayouts.RowLayout {
QtControls.Label {
text: i18n("Font")
}
QtControls.Button {
id: selectFont
text: plasmoid.configuration.fontFamily
onClicked: fontDialog.visible = true
}
}
QtLayouts.RowLayout {
QtControls.Label {
text: i18n("Font size")
}
QtControls.SpinBox {
id: fontSize
minimumValue: 8
maximumValue: 24
stepSize: 1
value: plasmoid.configuration.fontSize
}
}
QtLayouts.RowLayout {
QtControls.Label {
text: i18n("Font weight")
}
QtControls.ComboBox {
id: fontWeight
textRole: "label"
model: [
{
'label': i18n("light"),
'name': "light"
},
{
'label': i18n("normal"),
'name': "normal"
},
{
'label': i18n("demi bold"),
'name': "demibold"
},
{
'label': i18n("bold"),
'name': "bold"
},
{
'label': i18n("black"),
'name': "black"
}
]
onCurrentIndexChanged: cfg_fontWeight = model[currentIndex]["name"]
Component.onCompleted: {
for (var i = 0; i < model.length; i++) {
if (model[i]["name"] == plasmoid.configuration.fontWeight) {
fontWeight.currentIndex = i;
}
}
}
}
}
QtLayouts.RowLayout {
QtControls.Label {
text: i18n("Font style")
}
QtControls.ComboBox {
id: fontStyle
textRole: "label"
model: [
{
'label': i18n("normal"),
'name': "normal"
},
{
'label': i18n("italic"),
'name': "italic"
}
]
onCurrentIndexChanged: cfg_fontStyle = model[currentIndex]["name"]
Component.onCompleted: {
for (var i = 0; i < model.length; i++) {
if (model[i]["name"] == plasmoid.configuration.fontStyle) {
fontStyle.currentIndex = i;
}
}
}
}
}
QtLayouts.RowLayout {
QtControls.Label {
text: i18n("Font color")
}
QtControls.Button {
id: selectColor
style: QtStyles.ButtonStyle {
background: Rectangle {
color: plasmoid.configuration.fontColor
}
}
text: plasmoid.configuration.fontColor
onClicked: colorDialog.visible = true
}
}
QtLayouts.RowLayout {
QtControls.Label {
text: i18n("Active icon")
}
QtControls.TextField {
id: activeIcon
QtLayouts.Layout.fillWidth: true
text: plasmoid.configuration.activeIconPath
}
QtControls.Button {
text: i18n("Browse")
onClicked: {
// FIXME: more clean directory definition
var list = inactiveIcon.text.split('/')
list.pop()
activeFileDialog.folder = "/" + list.join('/')
activeFileDialog.visible = true
}
}
QtDialogs.FileDialog {
id: activeFileDialog
title: i18n("Select a path")
nameFilters: [ "Image files (*.jpeg *.jpg *.png)", "All files (*)" ]
selectExisting: true
onAccepted: activeIcon.text = activeFileDialog.fileUrl
}
}
QtLayouts.RowLayout {
QtControls.Label {
text: i18n("Inactive icon")
}
QtControls.TextField {
id: inactiveIcon
QtLayouts.Layout.fillWidth: true
text: plasmoid.configuration.inactiveIconPath
}
QtControls.Button {
text: i18n("Browse")
onClicked: {
// FIXME: more clean directory definition
var list = inactiveIcon.text.split('/')
list.pop()
inactiveFileDialog.folder = "/" + list.join('/')
inactiveFileDialog.visible = true
}
}
QtDialogs.FileDialog {
id: inactiveFileDialog
title: i18n("Select a path")
nameFilters: [ "Image files (*.jpeg *.jpg *.png)", "All files (*)" ]
selectExisting: true
onAccepted: inactiveIcon.text = inactiveFileDialog.fileUrl
}
}
}
QtDialogs.ColorDialog {
id: colorDialog
title: i18n("Select a color")
color: selectColor.text
onAccepted: {
selectColor.text = colorDialog.color
}
}
QtDialogs.FontDialog {
id: fontDialog
title: i18n("Select a font")
font: Qt.font({ family: selectFont.text, pointSize: fontSize.value, weight: Font.Normal })
onAccepted: {
selectFont.text = fontDialog.font.family
fontSize.value = fontDialog.font.pointSize
fontStyle.currentIndex = fontDialog.font.italic ? 1 : 0
fontWeight.currentIndex = weight[fontDialog.font.weight]
}
}
}

View File

@ -0,0 +1,143 @@
/***************************************************************************
* This file is part of netctl-gui *
* *
* netctl-gui is free software: you can redistribute it and/or *
* modify it under the terms of the GNU General Public License as *
* published by the Free Software Foundation, either version 3 of the *
* License, or (at your option) any later version. *
* *
* netctl-gui is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with netctl-gui. If not, see http://www.gnu.org/licenses/ *
***************************************************************************/
import QtQuick 2.2
import QtQuick.Controls 1.3 as QtControls
import org.kde.plasma.plasmoid 2.0
import org.kde.plasma.core 2.0 as PlasmaCore
import org.kde.plasma.components 2.0 as PlasmaComponents
import org.kde.plasma.private.netctl 1.0
Item {
id: main
// variables
// internal
property variant weight: {
"light": Font.Light,
"normal": Font.Normal,
"demibold": Font.DemiBold,
"bold": Font.Bold,
"black": Font.Black
}
property variant align: {
"left": Text.AlignLeft,
"center": Text.AlignHCenter,
"right": Text.AlignRight,
"justify": Text.AlignJustify
}
// external
property variant iconPath: {
"true": plasmoid.configuration.activeIconPath,
"false": plasmoid.configuration.inactiveIconPath
}
property variant info: {
"current": "N\\A",
"extip4": "127.0.0.1",
"extip6": "::1",
"intip4": "127.0.0.1",
"intip6": "::1",
"interfaces": "lo",
"profiles": "",
"status": "N\\A"
}
property int interval: plasmoid.configuration.autoUpdateInterval
property string pattern: plasmoid.configuration.textPattern
property variant paths: {
"netctl": plasmoid.configuration.netctlPath,
"sudo": plasmoid.configuration.sudoPath
}
property bool status: false
property bool useHelper: plasmoid.configuration.useHelper
// init
Plasmoid.icon: icon.source
PlasmaCore.DataSource {
id: mainData
engine: "netctl"
connectedSources: ["active", "current", "extip4", "extip6", "interfaces", "intip4", "intip6", "profiles", "status"]
interval: main.interval
onNewData: {
if (data.isEmpty) return
if (sourceName == "active") {
main.status = data.value == "true" ? true : false
icon.source = iconPath[data.value]
} else if (sourceName == "current") {
info["current"] = data.value
// text update
info["info"] = NetctlAdds.getInfo(info["current"], info["status"])
text.text = NetctlAdds.parsePattern(pattern, info)
} else if (sourceName == "extip4") {
info["extip4"] = data.value
} else if (sourceName == "extip6") {
info["extip6"] = data.value
} else if (sourceName == "interfaces") {
info["interfaces"] = data.value
} else if (sourceName == "intip4") {
info["intip4"] = data.value
} else if (sourceName == "intip6") {
info["intip6"] = data.value
} else if (sourceName == "profiles") {
info["profiles"] = data.value
} else if (sourceName == "status") {
info["status"] = data.value
}
}
}
// ui
Grid {
id: mainGrid
columns: 2
Image {
id: icon
source: iconPath["false"]
}
Text {
id: text
color: plasmoid.configuration.fontColor
font.family: plasmoid.configuration.fontFamily
font.italic: plasmoid.configuration.fontStyle == "italic" ? true : false
font.pointSize: plasmoid.configuration.fontSize
font.weight: weight[plasmoid.configuration.fontWeight]
horizontalAlignment: align[plasmoid.configuration.textAlign]
textFormat: Text.RichText
text: "N\\A"
}
}
QtControls.Action {
id: stopProfile
text: i18n("Stop profile")
iconSource: "dialog-close"
onTriggered: NetctlAdds.stopProfileSlot(info, useHelper, paths["netctl"], paths["sudo"])
}
Component.onCompleted: {
plasmoid.setAction("stopProfile", i18n("Stop profile"), "dialog-close")
// plasmoid.setAction("powerdevilkcm", i18n("&Configure Power Saving..."), "preferences-system-power-management");
}
function action_stopProfile() {
NetctlAdds.stopProfileSlot(info, useHelper, paths["netctl"], paths["sudo"])
}
}

View File

@ -0,0 +1,215 @@
/***************************************************************************
* This file is part of netctl-gui *
* *
* netctl-gui is free software: you can redistribute it and/or *
* modify it under the terms of the GNU General Public License as *
* published by the Free Software Foundation, either version 3 of the *
* License, or (at your option) any later version. *
* *
* netctl-gui is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with netctl-gui. If not, see http://www.gnu.org/licenses/ *
***************************************************************************/
import QtQuick 2.0
import QtQuick.Controls 1.0 as QtControls
import QtQuick.Dialogs 1.1 as QtDialogs
import QtQuick.Layouts 1.0 as QtLayouts
Item {
id: widgetPage
width: childrenRect.width
height: childrenRect.height
property alias cfg_autoUpdateInterval: autoUpdate.value
property alias cfg_guiPath: guiPath.text
property alias cfg_useHelper: useHelper.checked
property alias cfg_helperPath: helperPath.text
property alias cfg_netctlPath: netctlPath.text
property alias cfg_netctlPathAuto: netctlAutoPath.text
property alias cfg_useSudo: useSudo.checked
property alias cfg_sudoPath: sudoPath.text
property alias cfg_useWifi: useWifi.checked
property alias cfg_wifiPath: wifiPath.text
property alias cfg_textPattern: textPattern.text
QtLayouts.ColumnLayout {
QtLayouts.RowLayout {
QtControls.Label {
text: i18n("Auto update interval, msec")
}
QtControls.SpinBox {
id: autoUpdate
minimumValue: 1000
maximumValue: 10000
stepSize: 500
value: plasmoid.configuration.autoUpdateInterval
}
}
QtLayouts.RowLayout {
QtControls.Label {
text: i18n("Path to GUI")
}
QtControls.TextField {
id: guiPath
QtLayouts.Layout.fillWidth: true
text: plasmoid.configuration.guiPath
}
QtControls.Button {
text: i18n("Browse")
onClicked: guiFileDialog.visible = true
}
QtDialogs.FileDialog {
id: guiFileDialog
title: i18n("Select a path")
folder: "/usr/bin"
nameFilters: [ "All files (*)" ]
selectExisting: true
onAccepted: guiPath.text = guiFileDialog.fileUrl
}
}
QtLayouts.RowLayout {
QtControls.CheckBox {
id: useHelper
text: i18n("Use helper")
}
QtControls.TextField {
id: helperPath
enabled: useHelper.checked
QtLayouts.Layout.fillWidth: true
text: plasmoid.configuration.helperPath
}
QtControls.Button {
enabled: useHelper.checked
text: i18n("Browse")
onClicked: helperFileDialog.visible = true
}
QtDialogs.FileDialog {
id: helperFileDialog
title: i18n("Select a path")
folder: "/usr/bin"
nameFilters: [ "All files (*)" ]
selectExisting: true
onAccepted: helperPath.text = helperFileDialog.fileUrl
}
}
QtLayouts.RowLayout {
QtControls.Label {
text: i18n("Path to netctl")
}
QtControls.TextField {
id: netctlPath
QtLayouts.Layout.fillWidth: true
text: plasmoid.configuration.netctlPath
}
QtControls.Button {
text: i18n("Browse")
onClicked: netctlFileDialog.visible = true
}
QtDialogs.FileDialog {
id: netctlFileDialog
title: i18n("Select a path")
folder: "/usr/bin"
nameFilters: [ "All files (*)" ]
selectExisting: true
onAccepted: netctlPath.text = netctlFileDialog.fileUrl
}
}
QtLayouts.RowLayout {
QtControls.Label {
text: i18n("Path to netctl-auto")
}
QtControls.TextField {
id: netctlAutoPath
QtLayouts.Layout.fillWidth: true
text: plasmoid.configuration.netctlAutoPath
}
QtControls.Button {
text: i18n("Browse")
onClicked: netctlAutoFileDialog.visible = true
}
QtDialogs.FileDialog {
id: netctlAutoFileDialog
title: i18n("Select a path")
folder: "/usr/bin"
nameFilters: [ "All files (*)" ]
selectExisting: true
onAccepted: netctlAutoPath.text = netctlAutoFileDialog.fileUrl
}
}
QtLayouts.RowLayout {
QtControls.CheckBox {
id: useSudo
text: i18n("Use sudo for netctl")
}
QtControls.TextField {
id: sudoPath
enabled: useSudo.checked
QtLayouts.Layout.fillWidth: true
text: plasmoid.configuration.sudoPath
}
QtControls.Button {
enabled: useSudo.checked
text: i18n("Browse")
onClicked: sudoFileDialog.visible = true
}
QtDialogs.FileDialog {
id: sudoFileDialog
title: i18n("Select a path")
folder: "/usr/bin"
nameFilters: [ "All files (*)" ]
selectExisting: true
onAccepted: sudoPath.text = sudoFileDialog.fileUrl
}
}
QtLayouts.RowLayout {
QtControls.CheckBox {
id: useWifi
text: i18n("Show 'Start WiFi menu'")
}
QtControls.TextField {
id: wifiPath
enabled: useWifi.checked
QtLayouts.Layout.fillWidth: true
text: plasmoid.configuration.wifiPath
}
QtControls.Button {
enabled: useWifi.checked
text: i18n("Browse")
onClicked: wifiFileDialog.visible = true
}
QtDialogs.FileDialog {
id: wifiFileDialog
title: i18n("Select a path")
folder: "/usr/bin"
nameFilters: [ "All files (*)" ]
selectExisting: true
onAccepted: wifiPath.text = wifiFileDialog.fileUrl
}
}
QtControls.TextArea {
id: textPattern
QtLayouts.Layout.fillWidth: true
text: plasmoid.configuration.textPattern
}
}
}

View File

@ -0,0 +1,22 @@
[Desktop Entry]
Encoding=UTF-8
Name=Netctl
Comment=Plasmoid for netctl
Type=Service
Icon=netctl-gui-widget
X-KDE-ServiceTypes=Plasma/Applet
X-Plasma-API=declarativeappletscript
X-Plasma-MainScript=ui/main.qml
X-Plasma-NotificationArea=true
X-Plasma-RemoteLocation=
X-KDE-PluginInfo-Author=Evgeniy Alekseev
X-KDE-PluginInfo-Email=esalexeev@gmail.com
X-KDE-PluginInfo-Name=org.kde.plasma.netctl
X-KDE-PluginInfo-Version=@PROJECT_VERSION@
X-KDE-PluginInfo-Website=http://arcanis.name/projects/netctl-gui
X-KDE-PluginInfo-Category=Network
X-KDE-PluginInfo-Depends=
X-KDE-PluginInfo-License=GPLv3
X-KDE-PluginInfo-EnabledByDefault=true

View File

@ -0,0 +1,16 @@
include_directories (${CMAKE_SOURCE_DIR}
${CMAKE_BINARY_DIR}
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_BINARY_DIR}/../
${PROJECT_TRDPARTY_DIR}
${Qt_INCLUDE}
${Kf5_INCLUDE})
file (GLOB SUBPROJECT_SOURCE *.cpp)
add_library (${PLUGIN_NAME} SHARED ${SUBPROJECT_SOURCE})
target_link_libraries (${PLUGIN_NAME} ${Qt5Core_LIBRARIES} ${Qt5DBus_LIBRARIES} ${Qt5Qml_LIBRARIES} ${I18n_LIBRARIES} ${Plasma_LIBRARIES}
KF5::I18n KF5::Notifications)
install (TARGETS ${PLUGIN_NAME} DESTINATION ${QML_INSTALL_DIR}/org/kde/plasma/private/netctl)
install (FILES qmldir DESTINATION ${QML_INSTALL_DIR}/org/kde/plasma/private/netctl)

View File

@ -0,0 +1,38 @@
/***************************************************************************
* This file is part of netctl-gui *
* *
* netctl-gui is free software: you can redistribute it and/or *
* modify it under the terms of the GNU General Public License as *
* published by the Free Software Foundation, either version 3 of the *
* License, or (at your option) any later version. *
* *
* netctl-gui is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with netctl-gui. If not, see http://www.gnu.org/licenses/ *
***************************************************************************/
#include <QtQml>
#include "netctl.h"
#include "netctladds.h"
static QObject *netctl_singletontype_provider(QQmlEngine *engine, QJSEngine *scriptEngine)
{
Q_UNUSED(engine)
Q_UNUSED(scriptEngine)
return new NetctlAdds();
}
void NetctlPlugin::registerTypes(const char *uri)
{
Q_ASSERT(uri == QLatin1String("org.kde.plasma.private.netctl"));
qmlRegisterSingletonType<NetctlAdds>(uri, 1, 0, "NetctlAdds", netctl_singletontype_provider);
}

View File

@ -0,0 +1,37 @@
/***************************************************************************
* This file is part of netctl-gui *
* *
* netctl-gui is free software: you can redistribute it and/or *
* modify it under the terms of the GNU General Public License as *
* published by the Free Software Foundation, either version 3 of the *
* License, or (at your option) any later version. *
* *
* netctl-gui is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with netctl-gui. If not, see http://www.gnu.org/licenses/ *
***************************************************************************/
#ifndef NETCTLPLUGIN_H
#define NETCTLPLUGIN_H
#include <QQmlExtensionPlugin>
class QQmlEngine;
class NetctlPlugin : public QQmlExtensionPlugin
{
Q_OBJECT
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface")
public:
void registerTypes(const char *uri);
};
#endif /* NETCTLPLUGIN_H */

View File

@ -0,0 +1,297 @@
/***************************************************************************
* This file is part of netctl-gui *
* *
* netctl-gui is free software: you can redistribute it and/or *
* modify it under the terms of the GNU General Public License as *
* published by the Free Software Foundation, either version 3 of the *
* License, or (at your option) any later version. *
* *
* netctl-gui is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with netctl-gui. If not, see http://www.gnu.org/licenses/ *
***************************************************************************/
#include <KI18n/KLocalizedString>
#include <KNotifications/KNotification>
#include <QDBusConnection>
#include <QDBusMessage>
#include <QDebug>
#include <QProcessEnvironment>
#include <pdebug/pdebug.h>
#include "netctladds.h"
#include "version.h"
NetctlAdds::NetctlAdds(QObject *parent)
: QObject(parent)
{
// debug
QProcessEnvironment environment = QProcessEnvironment::systemEnvironment();
QString debugEnv = environment.value(QString("NETCTLGUI_DEBUG"), QString("no"));
debug = (debugEnv == QString("yes"));
}
NetctlAdds::~NetctlAdds()
{
if (debug) qDebug() << PDEBUG;
}
bool NetctlAdds::checkHelperStatus(const bool useHelper)
{
if (debug) qDebug() << PDEBUG;
if (useHelper)
return !sendDBusRequest(QString("Active"), QList<QVariant>()).isEmpty();
else
return useHelper;
}
void NetctlAdds::startHelper(const QString cmd)
{
if (debug) qDebug() << PDEBUG;
QProcess command;
command.startDetached(cmd);
}
QList<QVariant> NetctlAdds::sendDBusRequest(const QString cmd, const QList<QVariant> args)
{
if (debug) qDebug() << PDEBUG;
if (debug) qDebug() << PDEBUG << ":" << "cmd" << cmd;
if (debug) qDebug() << PDEBUG << ":" << "args" << args;
QDBusConnection bus = QDBusConnection::systemBus();
QDBusMessage request = QDBusMessage::createMethodCall(DBUS_HELPER_SERVICE, DBUS_CTRL_PATH,
DBUS_HELPER_INTERFACE, cmd);
if (!args.isEmpty())
request.setArguments(args);
QDBusMessage response = bus.call(request, QDBus::BlockWithGui);
QList<QVariant> arguments = response.arguments();
if (arguments.size() == 0)
if (debug) qDebug() << PDEBUG << ":" << "Error message" << response.errorMessage();
return arguments;
}
QString NetctlAdds::getAboutText(const QString type)
{
if (debug) qDebug() << PDEBUG;
if (debug) qDebug() << PDEBUG << ":" << "Type" << type;
QString text;
if (type == QString("header"))
text = QString(NAME);
else if (type == QString("description"))
text = i18n("KDE widget which interacts with netctl.");
else if (type == QString("links"))
text = i18n("Links:") + QString("<br>") +
QString("<a href=\"%1\">%2</a><br>").arg(QString(HOMEPAGE)).arg(i18n("Homepage")) +
QString("<a href=\"%1\">%2</a><br>").arg(QString(REPOSITORY)).arg(i18n("Repository")) +
QString("<a href=\"%1\">%2</a><br>").arg(QString(BUGTRACKER)).arg(i18n("Bugtracker")) +
QString("<a href=\"%1\">%2</a><br>").arg(QString(TRANSLATION)).arg(i18n("Translation issue")) +
QString("<a href=\"%1\">%2</a>").arg(QString(AUR_PACKAGES)).arg(i18n("AUR packages"));
else if (type == QString("copy"))
text = QString("<small>&copy; %1 <a href=\"mailto:%2\">%3</a><br>").arg(QString(DATE)).arg(QString(EMAIL)).arg(QString(AUTHOR)) +
i18n("This software is licensed under %1", QString(LICENSE)) + QString("</small>");
else if (type == QString("translators"))
text = i18n("Translators: %1", QString(TRANSLATORS));
else if (type == QString("3rdparty")) {
QStringList trdPartyList = QString(TRDPARTY_LICENSE).split(QChar(';'), QString::SkipEmptyParts);
for (int i=0; i<trdPartyList.count(); i++)
trdPartyList[i] = QString("<a href=\"%3\">%1</a> (%2 license)")
.arg(trdPartyList[i].split(QChar(','))[0])
.arg(trdPartyList[i].split(QChar(','))[1])
.arg(trdPartyList[i].split(QChar(','))[2]);
text = i18n("This software uses: %1", trdPartyList.join(QString(", ")));
}
return text;
}
QString NetctlAdds::getInfo(const QString current, const QString status)
{
if (debug) qDebug() << PDEBUG;
if (debug) qDebug() << PDEBUG << ":" << "Current profiles" << current;
if (debug) qDebug() << PDEBUG << ":" << "Statuses" << status;
QStringList profiles;
for (int i=0; i<current.split(QChar('|')).count(); i++)
profiles.append(current.split(QChar('|'))[i] +
QString(" (") + status.split(QChar('|'))[i] + QString(")"));
return profiles.join(QString(" | "));
}
QString NetctlAdds::parsePattern(const QString pattern, const QMap<QString, QVariant> dict)
{
if (debug) qDebug() << PDEBUG;
if (debug) qDebug() << PDEBUG << ":" << "Dictionary" << dict;
QString parsed = pattern;
for (int i=0; i<dict.keys().count(); i++)
parsed.replace(QString("$") + dict.keys()[i], dict[dict.keys()[i]].toString());
// fix newline
parsed.replace(QString("\n"), QString("<br>"));
return parsed;
}
void NetctlAdds::runCmd(const QString cmd)
{
if (debug) qDebug() << PDEBUG;
if (debug) qDebug() << PDEBUG << ":" << "Cmd" << cmd;
QProcess command;
command.startDetached(cmd);
}
void NetctlAdds::sendNotification(const QString eventId, const QString message)
{
if (debug) qDebug() << PDEBUG;
if (debug) qDebug() << PDEBUG << ":" << "Event" << eventId;
if (debug) qDebug() << PDEBUG << ":" << "Message" << message;
KNotification::event(eventId, QString("Netctl ::: ") + eventId, message);
}
// context menu
void NetctlAdds::enableProfileSlot(const QMap<QString, QVariant> dict, const bool useHelper,
const QString cmd, const QString sudoCmd)
{
if (debug) qDebug() << PDEBUG;
QString enableStatus = QString("");
if (dict[QString("status")].toString().contains(QString("enabled"))) {
enableStatus = QString(" disable ");
sendNotification(QString("Info"), i18n("Set profile %1 disabled", dict[QString("current")].toString()));
} else {
enableStatus = QString(" enable ");
sendNotification(QString("Info"), i18n("Set profile %1 enabled", dict[QString("current")].toString()));
}
if (useHelper) {
QList<QVariant> args;
args.append(dict[QString("current")].toString());
sendDBusRequest(QString("Enable"), args);
} else {
QProcess command;
QString commandLine = sudoCmd + QString(" ") + cmd + enableStatus + dict[QString("current")].toString();
command.startDetached(commandLine);
}
}
void NetctlAdds::restartProfileSlot(const QMap<QString, QVariant> dict, const bool useHelper,
const QString cmd, const QString sudoCmd)
{
if (debug) qDebug() << PDEBUG;
sendNotification(QString("Info"), i18n("Restart profile %1", dict[QString("current")].toString()));
if (useHelper) {
QList<QVariant> args;
args.append(dict[QString("current")].toString());
sendDBusRequest(QString("Restart"), args);
} else {
QProcess command;
QString commandLine = sudoCmd + QString(" ") + cmd + QString(" restart ") + dict[QString("current")].toString();
command.startDetached(commandLine);
}
}
void NetctlAdds::startProfileSlot(QString profile, const bool status,
const bool useHelper, const QString cmd, const QString sudoCmd)
{
if (debug) qDebug() << PDEBUG;
if (debug) qDebug() << PDEBUG << ":" << "Profile" << profile;
profile.remove(QChar('&'));
sendNotification(QString("Info"), i18n("Start profile %1", profile));
if (useHelper) {
QList<QVariant> args;
args.append(profile);
if (status)
sendDBusRequest(QString("SwitchTo"), args);
else
sendDBusRequest(QString("Start"), args);
} else {
QProcess command;
QString commandLine = sudoCmd + QString(" ") + cmd;
if (status)
commandLine += QString(" switch-to ") + profile;
else
commandLine += QString(" start ") + profile;
command.startDetached(commandLine);
}
}
void NetctlAdds::stopProfileSlot(const QMap<QString, QVariant> dict, const bool useHelper,
const QString cmd, const QString sudoCmd)
{
if (debug) qDebug() << PDEBUG;
sendNotification(QString("Info"), i18n("Stop profile %1", dict[QString("current")].toString()));
if (useHelper) {
QList<QVariant> args;
args.append(dict[QString("current")].toString());
sendDBusRequest(QString("Start"), args);
} else {
QProcess command;
QString commandLine = sudoCmd + QString(" ") + cmd + QString(" stop ") + dict[QString("current")].toString();
command.startDetached(commandLine);
}
}
void NetctlAdds::stopAllProfilesSlot(const bool useHelper, const QString cmd, const QString sudoCmd)
{
if (debug) qDebug() << PDEBUG;
sendNotification(QString("Info"), i18n("Stop all profiles"));
if (useHelper)
sendDBusRequest(QString("StopAll"), QList<QVariant>());
else {
QProcess command;
QString commandLine = sudoCmd + QString(" ") + cmd + QString(" stop-all");
command.startDetached(commandLine);
}
}
void NetctlAdds::switchToProfileSlot(QString profile, const bool useHelper,
const QString cmd)
{
if (debug) qDebug() << PDEBUG;
if (debug) qDebug() << PDEBUG << ":" << "Profile" << profile;
profile.remove(QChar('&'));
sendNotification(QString("Info"), i18n("Switch to profile %1", profile));
if (useHelper) {
QList<QVariant> args;
args.append(profile);
sendDBusRequest(QString("autoStart"), args);
} else {
QProcess command;
QString commandLine = cmd + QString(" switch-to ") + profile;
command.startDetached(commandLine);
}
}

View File

@ -0,0 +1,74 @@
/***************************************************************************
* This file is part of netctl-gui *
* *
* netctl-gui is free software: you can redistribute it and/or *
* modify it under the terms of the GNU General Public License as *
* published by the Free Software Foundation, either version 3 of the *
* License, or (at your option) any later version. *
* *
* netctl-gui is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with netctl-gui. If not, see http://www.gnu.org/licenses/ *
***************************************************************************/
#ifndef NETCTLADDS_H
#define NETCTLADDS_H
#include <QMap>
#include <QObject>
#include <QVariant>
class NetctlAdds : public QObject
{
Q_OBJECT
public:
NetctlAdds(QObject *parent = 0);
~NetctlAdds();
Q_INVOKABLE QString getAboutText(const QString type = "header");
Q_INVOKABLE QString getInfo(const QString current, const QString status);
Q_INVOKABLE QString parsePattern(const QString pattern, const QMap<QString, QVariant> dict);
Q_INVOKABLE void runCmd(const QString cmd);
Q_INVOKABLE void sendNotification(const QString eventId, const QString message);
// context menu
Q_INVOKABLE void enableProfileSlot(const QMap<QString, QVariant> dict,
const bool useHelper = true,
const QString cmd = QString("/usr/bin/netctl"),
const QString sudoCmd = QString(""));
Q_INVOKABLE void restartProfileSlot(const QMap<QString, QVariant> dict,
const bool useHelper = true,
const QString cmd = QString("/usr/bin/netctl"),
const QString sudoCmd = QString(""));
Q_INVOKABLE void startProfileSlot(QString profile, const bool status,
const bool useHelper = true,
const QString cmd = QString("/usr/bin/netctl"),
const QString sudoCmd = QString(""));
Q_INVOKABLE void stopProfileSlot(const QMap<QString, QVariant> dict,
const bool useHelper = true,
const QString cmd = QString("/usr/bin/netctl"),
const QString sudoCmd = QString(""));
Q_INVOKABLE void stopAllProfilesSlot(const bool useHelper = true,
const QString cmd = QString("/usr/bin/netctl"),
const QString sudoCmd = QString(""));
Q_INVOKABLE void switchToProfileSlot(QString profile,
const bool useHelper = true,
const QString cmd = QString("/usr/bin/netctl-auto"));
private:
bool debug = false;
// helper
bool checkHelperStatus(const bool useHelper = true);
void startHelper(const QString cmd = QString("/usr/bin/netctlgui-helper"));
// dbus
QList<QVariant> sendDBusRequest(const QString cmd, const QList<QVariant> args = QList<QVariant>());
};
#endif /* NETCTLADDS_H */

View File

@ -0,0 +1,3 @@
module org.kde.plasma.private.netctl
plugin netctlplugin

View File

@ -0,0 +1,24 @@
find_package(KDE4 REQUIRED)
find_package(Gettext REQUIRED)
if (NOT GETTEXT_MSGFMT_EXECUTABLE)
message(FATAL_ERROR "Please install the msgfmt binary")
endif (NOT GETTEXT_MSGFMT_EXECUTABLE)
file (GLOB _po_files *.po)
set (_gmoFiles)
foreach (_current_PO_FILE ${_po_files})
get_filename_component (_lang ${_current_PO_FILE} NAME_WE)
set (_gmoFile ${CMAKE_CURRENT_BINARY_DIR}/${_lang}.gmo)
add_custom_command (OUTPUT ${_gmoFile}
COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} -o ${_gmoFile} ${_current_PO_FILE}
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
DEPENDS ${_current_PO_FILE}
)
install (FILES ${CMAKE_CURRENT_BINARY_DIR}/${_lang}.gmo DESTINATION ${LOCALE_INSTALL_DIR}/${_lang}/LC_MESSAGES/ RENAME plasma_applet_netctl.mo)
list (APPEND _gmoFiles ${_gmoFile})
endforeach (_current_PO_FILE)
add_custom_target (pofiles ALL DEPENDS ${_gmoFiles})

View File

@ -0,0 +1,448 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Evgeniy Alekseev <esalexeev@gmail.com>, 2014.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: https://github.com/arcan1s/netctl-gui/issues\n"
"POT-Creation-Date: 2014-08-24 16:44+0400\n"
"PO-Revision-Date: 2014-08-20 12:00+0400\n"
"Last-Translator: Evgeniy Alekseev <esalexeev@gmail.com>\n"
"Language-Team: Russian <kde-russian@lists.kde.ru>\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Lokalize 1.5\n"
#: netctl.cpp:270
msgid "Set profile %1 disabled"
msgstr "Set profile %1 disabled"
#: netctl.cpp:273
msgid "Set profile %1 enabled"
msgstr "Set profile %1 enabled"
#: netctl.cpp:294
msgid "Restart profile %1"
msgstr "Restart profile %1"
#: netctl.cpp:315
msgid "Start profile %1"
msgstr "Start profile %1"
#: netctl.cpp:341
msgid "Stop profile %1"
msgstr "Stop profile %1"
#: netctl.cpp:361 netctl.cpp:499
msgid "Stop all profiles"
msgstr "Stop all profiles"
#: netctl.cpp:381
msgid "Switch to profile %1"
msgstr "Switch to profile %1"
#: netctl.cpp:454
msgid "Start another profile"
msgstr "Start another profile"
#: netctl.cpp:455
msgid "Stop %1"
msgstr "Stop %1"
#: netctl.cpp:456
msgid "Restart %1"
msgstr "Restart %1"
#: netctl.cpp:458
msgid "Disable %1"
msgstr "Disable %1"
#: netctl.cpp:460
msgid "Enable %1"
msgstr "Enable %1"
#: netctl.cpp:463 netctl.cpp:486
msgid "Start profile"
msgstr "Start profile"
#: netctl.cpp:494
msgid "Stop profile"
msgstr "Stop profile"
#: netctl.cpp:504
msgid "Switch to profile"
msgstr "Switch to profile"
#: netctl.cpp:512
msgid "Restart profile"
msgstr "Restart profile"
#: netctl.cpp:517
msgid "Enable profile"
msgstr "Enable profile"
#: netctl.cpp:521
msgid "Show netctl-gui"
msgstr "Show netctl-gui"
#: netctl.cpp:526
msgid "Show WiFi menu"
msgstr "Show WiFi menu"
#: netctl.cpp:553
msgid "Start GUI"
msgstr "Start GUI"
#: netctl.cpp:564
msgid "Start WiFi menu"
msgstr "Start WiFi menu"
#: netctl.cpp:604
msgid "Network is up"
msgstr "Network is up"
#: netctl.cpp:608
msgid "Network is down"
msgstr "Network is down"
#: netctl.cpp:798
msgid ""
"Version %1\n"
"(build date %2)"
msgstr ""
"Version %1\n"
"(build date %2)"
#: netctl.cpp:799
msgid "KDE widget which interacts with netctl."
msgstr "KDE widget which interacts with netctl."
#: netctl.cpp:800
msgid "Links:"
msgstr "Links:"
#: netctl.cpp:801
msgid "Homepage"
msgstr "Homepage"
#: netctl.cpp:802
msgid "Repository"
msgstr "Repository"
#: netctl.cpp:803
msgid "Bugtracker"
msgstr "Bugtracker"
#: netctl.cpp:804
msgid "Translation issue"
msgstr "Translation issue"
#: netctl.cpp:805
msgid "AUR packages"
msgstr "AUR packages"
#: netctl.cpp:807
msgid "This software is licensed under %1"
msgstr "This software is licensed under %1"
#: netctl.cpp:815
msgid "Translators: %1"
msgstr "Translators: %1"
#: netctl.cpp:816
msgid "This software uses: %1"
msgstr "This software uses: %1"
#: netctl.cpp:818
msgid "Netctl plasmoid"
msgstr "Netctl plasmoid"
#: netctl.cpp:819
msgid "Appearance"
msgstr "Appearance"
#: netctl.cpp:820
msgid "DataEngine"
msgstr "DataEngine"
#: netctl.cpp:821
msgid "About"
msgstr "About"
#. i18n: file: appearance.ui:47
#. i18n: ectx: property (text), widget (QLabel, label_inactiveIcon)
#: po/rc.cpp:3 rc.cpp:3
msgid "Inactive icon"
msgstr "Inactive icon"
#. i18n: file: appearance.ui:63
#. i18n: ectx: property (text), widget (QPushButton, pushButton_inactiveIcon)
#. i18n: file: appearance.ui:391
#. i18n: ectx: property (text), widget (QPushButton, pushButton_activeIcon)
#. i18n: file: dataengine.ui:50
#. i18n: ectx: property (text), widget (QPushButton, pushButton_netctl)
#. i18n: file: dataengine.ui:83
#. i18n: ectx: property (text), widget (QPushButton, pushButton_netctlAuto)
#. i18n: file: dataengine.ui:119
#. i18n: ectx: property (text), widget (QPushButton, pushButton_extIp4)
#. i18n: file: dataengine.ui:155
#. i18n: ectx: property (text), widget (QPushButton, pushButton_extIp6)
#. i18n: file: widget.ui:108
#. i18n: ectx: property (text), widget (QPushButton, pushButton_gui)
#. i18n: file: widget.ui:144
#. i18n: ectx: property (text), widget (QPushButton, pushButton_helper)
#. i18n: file: widget.ui:177
#. i18n: ectx: property (text), widget (QPushButton, pushButton_netctl)
#. i18n: file: widget.ui:210
#. i18n: ectx: property (text), widget (QPushButton, pushButton_netctlAuto)
#. i18n: file: widget.ui:246
#. i18n: ectx: property (text), widget (QPushButton, pushButton_sudo)
#. i18n: file: widget.ui:282
#. i18n: ectx: property (text), widget (QPushButton, pushButton_wifi)
#. i18n: file: appearance.ui:63
#. i18n: ectx: property (text), widget (QPushButton, pushButton_inactiveIcon)
#. i18n: file: appearance.ui:391
#. i18n: ectx: property (text), widget (QPushButton, pushButton_activeIcon)
#. i18n: file: dataengine.ui:50
#. i18n: ectx: property (text), widget (QPushButton, pushButton_netctl)
#. i18n: file: dataengine.ui:83
#. i18n: ectx: property (text), widget (QPushButton, pushButton_netctlAuto)
#. i18n: file: dataengine.ui:119
#. i18n: ectx: property (text), widget (QPushButton, pushButton_extIp4)
#. i18n: file: dataengine.ui:155
#. i18n: ectx: property (text), widget (QPushButton, pushButton_extIp6)
#. i18n: file: widget.ui:108
#. i18n: ectx: property (text), widget (QPushButton, pushButton_gui)
#. i18n: file: widget.ui:144
#. i18n: ectx: property (text), widget (QPushButton, pushButton_helper)
#. i18n: file: widget.ui:177
#. i18n: ectx: property (text), widget (QPushButton, pushButton_netctl)
#. i18n: file: widget.ui:210
#. i18n: ectx: property (text), widget (QPushButton, pushButton_netctlAuto)
#. i18n: file: widget.ui:246
#. i18n: ectx: property (text), widget (QPushButton, pushButton_sudo)
#. i18n: file: widget.ui:282
#. i18n: ectx: property (text), widget (QPushButton, pushButton_wifi)
#: po/rc.cpp:6 po/rc.cpp:42 po/rc.cpp:54 po/rc.cpp:60 po/rc.cpp:66
#: po/rc.cpp:72 po/rc.cpp:81 po/rc.cpp:87 po/rc.cpp:93 po/rc.cpp:99
#: po/rc.cpp:105 po/rc.cpp:111 rc.cpp:6 rc.cpp:42 rc.cpp:54 rc.cpp:60
#: rc.cpp:66 rc.cpp:72 rc.cpp:81 rc.cpp:87 rc.cpp:93 rc.cpp:99 rc.cpp:105
#: rc.cpp:111
msgid "Browse"
msgstr "Browse"
#. i18n: file: appearance.ui:80
#. i18n: ectx: property (text), widget (QLabel, label_fontColor)
#: po/rc.cpp:9 rc.cpp:9
msgid "Font color"
msgstr "Font color"
#. i18n: file: appearance.ui:112
#. i18n: ectx: property (toolTip), widget (KColorCombo, kcolorcombo_fontColor)
#: po/rc.cpp:12 rc.cpp:12
msgid "Set font color"
msgstr "Set font color"
#. i18n: file: appearance.ui:142
#. i18n: ectx: property (text), widget (QLabel, label_fontSize)
#: po/rc.cpp:15 rc.cpp:15
msgid "Font size"
msgstr "Font size"
#. i18n: file: appearance.ui:174
#. i18n: ectx: property (toolTip), widget (QSpinBox, spinBox_fontSize)
#: po/rc.cpp:18 rc.cpp:18
msgid "Set font size"
msgstr "Set font size"
#. i18n: file: appearance.ui:203
#. i18n: ectx: property (text), widget (QLabel, label_fontWeight)
#: po/rc.cpp:21 rc.cpp:21
msgid "Font weight"
msgstr "Font weight"
#. i18n: file: appearance.ui:235
#. i18n: ectx: property (toolTip), widget (QSpinBox, spinBox_fontWeight)
#: po/rc.cpp:24 rc.cpp:24
msgid "Set font weight"
msgstr "Set font weight"
#. i18n: file: appearance.ui:267
#. i18n: ectx: property (text), widget (QLabel, label_fontStyle)
#: po/rc.cpp:27 rc.cpp:27
msgid "Font style"
msgstr "Font style"
#. i18n: file: appearance.ui:299
#. i18n: ectx: property (toolTip), widget (QComboBox, comboBox_fontStyle)
#: po/rc.cpp:30 rc.cpp:30
msgid "Set font style"
msgstr "Set font style"
#. i18n: file: appearance.ui:326
#. i18n: ectx: property (text), widget (QLabel, label_font)
#: po/rc.cpp:33 rc.cpp:33
msgid "Font"
msgstr "Font"
#. i18n: file: appearance.ui:358
#. i18n: ectx: property (toolTip), widget (QFontComboBox, fontComboBox_font)
#: po/rc.cpp:36 rc.cpp:36
msgid "Set font family"
msgstr "Set font family"
#. i18n: file: appearance.ui:375
#. i18n: ectx: property (text), widget (QLabel, label_activeIcon)
#: po/rc.cpp:39 rc.cpp:39
msgid "Active icon"
msgstr "Active icon"
#. i18n: file: appearance.ui:408
#. i18n: ectx: property (text), widget (QLabel, label_textAlign)
#: po/rc.cpp:45 rc.cpp:45
msgid "Text align"
msgstr "Text align"
#. i18n: file: appearance.ui:440
#. i18n: ectx: property (toolTip), widget (QComboBox, comboBox_textAlign)
#: po/rc.cpp:48 rc.cpp:48
msgid "Set text align"
msgstr "Set text align"
#. i18n: file: dataengine.ui:34
#. i18n: ectx: property (text), widget (QLabel, label_netctl)
#. i18n: file: widget.ui:161
#. i18n: ectx: property (text), widget (QLabel, label_netctl)
#. i18n: file: dataengine.ui:34
#. i18n: ectx: property (text), widget (QLabel, label_netctl)
#. i18n: file: widget.ui:161
#. i18n: ectx: property (text), widget (QLabel, label_netctl)
#: po/rc.cpp:51 po/rc.cpp:90 rc.cpp:51 rc.cpp:90
msgid "Path to netctl"
msgstr "Path to netctl"
#. i18n: file: dataengine.ui:67
#. i18n: ectx: property (text), widget (QLabel, label_netctlAuto)
#. i18n: file: widget.ui:194
#. i18n: ectx: property (text), widget (QLabel, label_netctlAuto)
#. i18n: file: dataengine.ui:67
#. i18n: ectx: property (text), widget (QLabel, label_netctlAuto)
#. i18n: file: widget.ui:194
#. i18n: ectx: property (text), widget (QLabel, label_netctlAuto)
#: po/rc.cpp:57 po/rc.cpp:96 rc.cpp:57 rc.cpp:96
msgid "Path to netctl-auto"
msgstr "Path to netctl-auto"
#. i18n: file: dataengine.ui:100
#. i18n: ectx: property (text), widget (QCheckBox, checkBox_extIp4)
#: po/rc.cpp:63 rc.cpp:63
msgid "Check external IPv4"
msgstr "Check external IPv4"
#. i18n: file: dataengine.ui:136
#. i18n: ectx: property (text), widget (QCheckBox, checkBox_extIp6)
#: po/rc.cpp:69 rc.cpp:69
msgid "Check external IPv6"
msgstr "Check external IPv6"
#. i18n: file: widget.ui:34
#. i18n: ectx: property (text), widget (QLabel, label_autoUpdate)
#: po/rc.cpp:75 rc.cpp:75
msgid "Auto update interval, msec"
msgstr "Auto update interval, msec"
#. i18n: file: widget.ui:92
#. i18n: ectx: property (text), widget (QLabel, label_gui)
#: po/rc.cpp:78 rc.cpp:78
msgid "Path to GUI"
msgstr "Path to GUI"
#. i18n: file: widget.ui:125
#. i18n: ectx: property (text), widget (QCheckBox, checkBox_helper)
#: po/rc.cpp:84 rc.cpp:84
msgid "Use helper"
msgstr "Use helper"
#. i18n: file: widget.ui:227
#. i18n: ectx: property (text), widget (QCheckBox, checkBox_sudo)
#: po/rc.cpp:102 rc.cpp:102
msgid "Use sudo for netctl"
msgstr "Use sudo for netctl"
#. i18n: file: widget.ui:263
#. i18n: ectx: property (text), widget (QCheckBox, checkBox_wifi)
#: po/rc.cpp:108 rc.cpp:108
msgid "Show 'Start WiFi menu'"
msgstr "Show 'Start WiFi menu'"
#. i18n: file: widget.ui:291
#. i18n: ectx: property (text), widget (QCheckBox, checkBox_showBigInterface)
#: po/rc.cpp:114 rc.cpp:114
msgid "Show more detailed interface"
msgstr "Show more detailed interface"
#. i18n: file: widget.ui:309
#. i18n: ectx: property (toolTip), widget (QPlainTextEdit, textEdit)
#: po/rc.cpp:117 rc.cpp:117
msgid ""
"$info - active profile information\n"
"$current - current profile name\n"
"$extip4 - external IPv4\n"
"$extip6 - external IPv6\n"
"$interfaces - list of the network interfaces\n"
"$intip4 - internal IPv4\n"
"$intip6 - internal IPv6\n"
"$profiles - list of the netctl profiles\n"
"$status - current profile status (static/enabled)"
msgstr ""
"$info - active profile information\n"
"$current - current profile name\n"
"$extip4 - external IPv4\n"
"$extip6 - external IPv6\n"
"$interfaces - list of the network interfaces\n"
"$intip4 - internal IPv4\n"
"$intip6 - internal IPv6\n"
"$profiles - list of the netctl profiles\n"
"$status - current profile status (static/enabled)"
#: po/rc.cpp:126 rc.cpp:126
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "Evgeniy Alekseev"
#: po/rc.cpp:127 rc.cpp:127
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "esalexeev@gmail.com"
#~ msgid "Acknowledgement"
#~ msgstr "Acknowledgement"
#~ msgid "normal"
#~ msgstr "normal"
#~ msgid "italic"
#~ msgstr "italic"
#~ msgid "Path to ip"
#~ msgstr "Path to ip"
#~ msgid "Path to interface list"
#~ msgstr "Path to interface list"
#~ msgid "Show network devices"
#~ msgstr "Show network devices"
#~ msgid "Show external IP"
#~ msgstr "Show external IP"
#~ msgid "Show internal IP"
#~ msgstr "Show internal IP"
#~ msgid "Configuration"
#~ msgstr "Configuration"

View File

@ -0,0 +1,47 @@
#!/bin/sh
# root of translatable sources
BASEDIR="../"
PROJECT="plasma_applet_netctl"
BUGADDR="https://github.com/arcan1s/netctl-gui/issues"
# working dir
WDIR=`pwd`
echo "Preparing rc files"
cd ${BASEDIR}
# we use simple sorting to make sure the lines do not jump around too much from system to system
find . -name '*.rc' -o -name '*.ui' -o -name '*.kcfg' | sort > ${WDIR}/rcfiles.list
xargs --arg-file=${WDIR}/rcfiles.list extractrc > ${WDIR}/rc.cpp
# additional string for KAboutData
echo 'i18nc("NAME OF TRANSLATORS","Your names");' >> ${WDIR}/rc.cpp
echo 'i18nc("EMAIL OF TRANSLATORS","Your emails");' >> ${WDIR}/rc.cpp
cd ${WDIR}
echo "Done preparing rc files"
echo "Extracting messages"
cd ${BASEDIR}
# see above on sorting
find . -name '*.cpp' -o -name '*.h' -o -name '*.c' | sort > ${WDIR}/infiles.list
echo "rc.cpp" >> ${WDIR}/infiles.list
cd ${WDIR}
xgettext --from-code=UTF-8 -C -kde -ci18n -ki18n:1 -ki18nc:1c,2 -ki18np:1,2 -ki18ncp:1c,2,3 -ktr2i18n:1 \
-kI18N_NOOP:1 -kI18N_NOOP2:1c,2 -kaliasLocale -kki18n:1 -kki18nc:1c,2 -kki18np:1,2 -kki18ncp:1c,2,3 \
--msgid-bugs-address="${BUGADDR}" \
--files-from=infiles.list -D ${BASEDIR} -D ${WDIR} -o ${PROJECT}.pot || { echo "Error while calling xgettext, aborting."; exit 1; }
echo "Done extracting messages"
echo "Merging translations"
catalogs=`find . -name '*.po'`
for cat in $catalogs; do
echo $cat
msgmerge -o $cat.new $cat ${PROJECT}.pot
mv $cat.new $cat
done
echo "Done merging translations"
echo "Cleaning up"
cd ${WDIR}
rm -f rcfiles.list infiles.list rc.cpp
echo "Done"

View File

@ -0,0 +1,422 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# NOGISAKA Sadata <ngsksdt@gmail.com>, 2014.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: https://github.com/arcan1s/netctl-gui/issues\n"
"POT-Creation-Date: 2014-08-24 16:44+0400\n"
"PO-Revision-Date: 2014-10-13 16:37+0900\n"
"Last-Translator: NOGISAKA Sadata <ngsksdt@gmail.com>\n"
"Language-Team: Japanese <kde-i18n-doc@kde.org>\n"
"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Lokalize 1.5\n"
#: netctl.cpp:270
msgid "Set profile %1 disabled"
msgstr "プロファイル %1 を無効にする"
#: netctl.cpp:273
msgid "Set profile %1 enabled"
msgstr "プロファイル %1 を有効にする"
#: netctl.cpp:294
msgid "Restart profile %1"
msgstr "プロファイル %1 の利用を再開"
#: netctl.cpp:315
msgid "Start profile %1"
msgstr "プロファイル %1 の利用を開始"
#: netctl.cpp:341
msgid "Stop profile %1"
msgstr "プロファイル %1 の利用を停止する"
#: netctl.cpp:361 netctl.cpp:499
msgid "Stop all profiles"
msgstr "全てのプロファイルの利用を停止する"
#: netctl.cpp:381
msgid "Switch to profile %1"
msgstr "プロファイルを %1 へ切り替える"
#: netctl.cpp:454
msgid "Start another profile"
msgstr "他のプロファイルの利用を開始"
#: netctl.cpp:455
msgid "Stop %1"
msgstr "%1 を停止"
#: netctl.cpp:456
msgid "Restart %1"
msgstr "%1 を再開"
#: netctl.cpp:458
msgid "Disable %1"
msgstr "%1 を無効にする"
#: netctl.cpp:460
msgid "Enable %1"
msgstr "%1 を有効にする"
#: netctl.cpp:463 netctl.cpp:486
msgid "Start profile"
msgstr "プロファイルの利用を開始"
#: netctl.cpp:494
msgid "Stop profile"
msgstr "プロファイルの利用を停止する"
#: netctl.cpp:504
msgid "Switch to profile"
msgstr "プロファイルを切り替える"
#: netctl.cpp:512
msgid "Restart profile"
msgstr "プロファイルの利用を再開"
#: netctl.cpp:517
msgid "Enable profile"
msgstr "プロファイルを有効にする"
#: netctl.cpp:521
msgid "Show netctl-gui"
msgstr "netctl-gui を表示"
#: netctl.cpp:526
msgid "Show WiFi menu"
msgstr "WiFi メニューを表示"
#: netctl.cpp:553
msgid "Start GUI"
msgstr "GUI を開始"
#: netctl.cpp:564
msgid "Start WiFi menu"
msgstr "WiFi メニューを開始"
#: netctl.cpp:604
msgid "Network is up"
msgstr "ネットワークは有効です"
#: netctl.cpp:608
msgid "Network is down"
msgstr "ネットワークは無効です"
#: netctl.cpp:798
msgid ""
"Version %1\n"
"(build date %2)"
msgstr ""
"バージョン:%1\n"
"(ビルド日時:%2"
#: netctl.cpp:799
msgid "KDE widget which interacts with netctl."
msgstr "netctl と連携する KDE ウィジェット"
#: netctl.cpp:800
msgid "Links:"
msgstr "リンク:"
#: netctl.cpp:801
msgid "Homepage"
msgstr "ホームページ"
#: netctl.cpp:802
msgid "Repository"
msgstr "レポジトリ"
#: netctl.cpp:803
msgid "Bugtracker"
msgstr "バグトラッカ"
#: netctl.cpp:804
msgid "Translation issue"
msgstr "翻訳に関する issue"
#: netctl.cpp:805
msgid "AUR packages"
msgstr "AUR パッケージ"
#: netctl.cpp:807
msgid "This software is licensed under %1"
msgstr "このソフトウェアは %1 の下で許諾されます"
#: netctl.cpp:815
msgid "Translators: %1"
msgstr "翻訳者:%1"
#: netctl.cpp:816
msgid "This software uses: %1"
msgstr "このソフトウェアは次を利用しています:%1"
#: netctl.cpp:818
msgid "Netctl plasmoid"
msgstr "Netctl plasmoid"
#: netctl.cpp:819
msgid "Appearance"
msgstr "外観"
#: netctl.cpp:820
msgid "DataEngine"
msgstr "DataEngine"
#: netctl.cpp:821
msgid "About"
msgstr "概要"
#. i18n: file: appearance.ui:47
#. i18n: ectx: property (text), widget (QLabel, label_inactiveIcon)
#: po/rc.cpp:3 rc.cpp:3
msgid "Inactive icon"
msgstr "非アクティブ時のアイコン"
#. i18n: file: appearance.ui:63
#. i18n: ectx: property (text), widget (QPushButton, pushButton_inactiveIcon)
#. i18n: file: appearance.ui:391
#. i18n: ectx: property (text), widget (QPushButton, pushButton_activeIcon)
#. i18n: file: dataengine.ui:50
#. i18n: ectx: property (text), widget (QPushButton, pushButton_netctl)
#. i18n: file: dataengine.ui:83
#. i18n: ectx: property (text), widget (QPushButton, pushButton_netctlAuto)
#. i18n: file: dataengine.ui:119
#. i18n: ectx: property (text), widget (QPushButton, pushButton_extIp4)
#. i18n: file: dataengine.ui:155
#. i18n: ectx: property (text), widget (QPushButton, pushButton_extIp6)
#. i18n: file: widget.ui:108
#. i18n: ectx: property (text), widget (QPushButton, pushButton_gui)
#. i18n: file: widget.ui:144
#. i18n: ectx: property (text), widget (QPushButton, pushButton_helper)
#. i18n: file: widget.ui:177
#. i18n: ectx: property (text), widget (QPushButton, pushButton_netctl)
#. i18n: file: widget.ui:210
#. i18n: ectx: property (text), widget (QPushButton, pushButton_netctlAuto)
#. i18n: file: widget.ui:246
#. i18n: ectx: property (text), widget (QPushButton, pushButton_sudo)
#. i18n: file: widget.ui:282
#. i18n: ectx: property (text), widget (QPushButton, pushButton_wifi)
#. i18n: file: appearance.ui:63
#. i18n: ectx: property (text), widget (QPushButton, pushButton_inactiveIcon)
#. i18n: file: appearance.ui:391
#. i18n: ectx: property (text), widget (QPushButton, pushButton_activeIcon)
#. i18n: file: dataengine.ui:50
#. i18n: ectx: property (text), widget (QPushButton, pushButton_netctl)
#. i18n: file: dataengine.ui:83
#. i18n: ectx: property (text), widget (QPushButton, pushButton_netctlAuto)
#. i18n: file: dataengine.ui:119
#. i18n: ectx: property (text), widget (QPushButton, pushButton_extIp4)
#. i18n: file: dataengine.ui:155
#. i18n: ectx: property (text), widget (QPushButton, pushButton_extIp6)
#. i18n: file: widget.ui:108
#. i18n: ectx: property (text), widget (QPushButton, pushButton_gui)
#. i18n: file: widget.ui:144
#. i18n: ectx: property (text), widget (QPushButton, pushButton_helper)
#. i18n: file: widget.ui:177
#. i18n: ectx: property (text), widget (QPushButton, pushButton_netctl)
#. i18n: file: widget.ui:210
#. i18n: ectx: property (text), widget (QPushButton, pushButton_netctlAuto)
#. i18n: file: widget.ui:246
#. i18n: ectx: property (text), widget (QPushButton, pushButton_sudo)
#. i18n: file: widget.ui:282
#. i18n: ectx: property (text), widget (QPushButton, pushButton_wifi)
#: po/rc.cpp:6 po/rc.cpp:42 po/rc.cpp:54 po/rc.cpp:60 po/rc.cpp:66
#: po/rc.cpp:72 po/rc.cpp:81 po/rc.cpp:87 po/rc.cpp:93 po/rc.cpp:99
#: po/rc.cpp:105 po/rc.cpp:111 rc.cpp:6 rc.cpp:42 rc.cpp:54 rc.cpp:60
#: rc.cpp:66 rc.cpp:72 rc.cpp:81 rc.cpp:87 rc.cpp:93 rc.cpp:99 rc.cpp:105
#: rc.cpp:111
msgid "Browse"
msgstr "参照"
#. i18n: file: appearance.ui:80
#. i18n: ectx: property (text), widget (QLabel, label_fontColor)
#: po/rc.cpp:9 rc.cpp:9
msgid "Font color"
msgstr "フォントの色"
#. i18n: file: appearance.ui:112
#. i18n: ectx: property (toolTip), widget (KColorCombo, kcolorcombo_fontColor)
#: po/rc.cpp:12 rc.cpp:12
msgid "Set font color"
msgstr "フォントの色を設定する"
#. i18n: file: appearance.ui:142
#. i18n: ectx: property (text), widget (QLabel, label_fontSize)
#: po/rc.cpp:15 rc.cpp:15
msgid "Font size"
msgstr "フォントの大きさ"
#. i18n: file: appearance.ui:174
#. i18n: ectx: property (toolTip), widget (QSpinBox, spinBox_fontSize)
#: po/rc.cpp:18 rc.cpp:18
msgid "Set font size"
msgstr "フォントの大きさを設定する"
#. i18n: file: appearance.ui:203
#. i18n: ectx: property (text), widget (QLabel, label_fontWeight)
#: po/rc.cpp:21 rc.cpp:21
msgid "Font weight"
msgstr "フォントの太さ"
#. i18n: file: appearance.ui:235
#. i18n: ectx: property (toolTip), widget (QSpinBox, spinBox_fontWeight)
#: po/rc.cpp:24 rc.cpp:24
msgid "Set font weight"
msgstr "フォントの太さを設定する"
#. i18n: file: appearance.ui:267
#. i18n: ectx: property (text), widget (QLabel, label_fontStyle)
#: po/rc.cpp:27 rc.cpp:27
msgid "Font style"
msgstr "フォントの字形"
#. i18n: file: appearance.ui:299
#. i18n: ectx: property (toolTip), widget (QComboBox, comboBox_fontStyle)
#: po/rc.cpp:30 rc.cpp:30
msgid "Set font style"
msgstr "フォントの字形を設定する"
#. i18n: file: appearance.ui:326
#. i18n: ectx: property (text), widget (QLabel, label_font)
#: po/rc.cpp:33 rc.cpp:33
msgid "Font"
msgstr "フォント"
#. i18n: file: appearance.ui:358
#. i18n: ectx: property (toolTip), widget (QFontComboBox, fontComboBox_font)
#: po/rc.cpp:36 rc.cpp:36
msgid "Set font family"
msgstr "フォントを設定する"
#. i18n: file: appearance.ui:375
#. i18n: ectx: property (text), widget (QLabel, label_activeIcon)
#: po/rc.cpp:39 rc.cpp:39
msgid "Active icon"
msgstr "アクティブ時のアイコン"
#. i18n: file: appearance.ui:408
#. i18n: ectx: property (text), widget (QLabel, label_textAlign)
#: po/rc.cpp:45 rc.cpp:45
msgid "Text align"
msgstr "テキストの位置"
#. i18n: file: appearance.ui:440
#. i18n: ectx: property (toolTip), widget (QComboBox, comboBox_textAlign)
#: po/rc.cpp:48 rc.cpp:48
msgid "Set text align"
msgstr "テキストの位置を設定する"
#. i18n: file: dataengine.ui:34
#. i18n: ectx: property (text), widget (QLabel, label_netctl)
#. i18n: file: widget.ui:161
#. i18n: ectx: property (text), widget (QLabel, label_netctl)
#. i18n: file: dataengine.ui:34
#. i18n: ectx: property (text), widget (QLabel, label_netctl)
#. i18n: file: widget.ui:161
#. i18n: ectx: property (text), widget (QLabel, label_netctl)
#: po/rc.cpp:51 po/rc.cpp:90 rc.cpp:51 rc.cpp:90
msgid "Path to netctl"
msgstr "netctl へのパス"
#. i18n: file: dataengine.ui:67
#. i18n: ectx: property (text), widget (QLabel, label_netctlAuto)
#. i18n: file: widget.ui:194
#. i18n: ectx: property (text), widget (QLabel, label_netctlAuto)
#. i18n: file: dataengine.ui:67
#. i18n: ectx: property (text), widget (QLabel, label_netctlAuto)
#. i18n: file: widget.ui:194
#. i18n: ectx: property (text), widget (QLabel, label_netctlAuto)
#: po/rc.cpp:57 po/rc.cpp:96 rc.cpp:57 rc.cpp:96
msgid "Path to netctl-auto"
msgstr "netctl-auto へのパス"
#. i18n: file: dataengine.ui:100
#. i18n: ectx: property (text), widget (QCheckBox, checkBox_extIp4)
#: po/rc.cpp:63 rc.cpp:63
msgid "Check external IPv4"
msgstr "外部 IPv4 アドレスを確認"
#. i18n: file: dataengine.ui:136
#. i18n: ectx: property (text), widget (QCheckBox, checkBox_extIp6)
#: po/rc.cpp:69 rc.cpp:69
msgid "Check external IPv6"
msgstr "外部 IPv6 アドレスを確認"
#. i18n: file: widget.ui:34
#. i18n: ectx: property (text), widget (QLabel, label_autoUpdate)
#: po/rc.cpp:75 rc.cpp:75
msgid "Auto update interval, msec"
msgstr "自動更新の間隔(ミリ秒)"
#. i18n: file: widget.ui:92
#. i18n: ectx: property (text), widget (QLabel, label_gui)
#: po/rc.cpp:78 rc.cpp:78
msgid "Path to GUI"
msgstr "GUIへのパス"
#. i18n: file: widget.ui:125
#. i18n: ectx: property (text), widget (QCheckBox, checkBox_helper)
#: po/rc.cpp:84 rc.cpp:84
msgid "Use helper"
msgstr "ヘルパを使用する"
#. i18n: file: widget.ui:227
#. i18n: ectx: property (text), widget (QCheckBox, checkBox_sudo)
#: po/rc.cpp:102 rc.cpp:102
msgid "Use sudo for netctl"
msgstr "netctl に対して sudo を使用する"
#. i18n: file: widget.ui:263
#. i18n: ectx: property (text), widget (QCheckBox, checkBox_wifi)
#: po/rc.cpp:108 rc.cpp:108
msgid "Show 'Start WiFi menu'"
msgstr "「Wifi メニューの開始」を表示"
#. i18n: file: widget.ui:291
#. i18n: ectx: property (text), widget (QCheckBox, checkBox_showBigInterface)
#: po/rc.cpp:114 rc.cpp:114
msgid "Show more detailed interface"
msgstr "インターフェースについての詳細を表示"
#. i18n: file: widget.ui:309
#. i18n: ectx: property (toolTip), widget (QPlainTextEdit, textEdit)
#: po/rc.cpp:117 rc.cpp:117
msgid ""
"$info - active profile information\n"
"$current - current profile name\n"
"$extip4 - external IPv4\n"
"$extip6 - external IPv6\n"
"$interfaces - list of the network interfaces\n"
"$intip4 - internal IPv4\n"
"$intip6 - internal IPv6\n"
"$profiles - list of the netctl profiles\n"
"$status - current profile status (static/enabled)"
msgstr ""
"$info - アクティブなプロファイルの情報\n"
"$current - 現在利用中プロファイルの情報\n"
"$extip4 - 外部 IPv4 アドレス\n"
"$extip6 - 外部 IPv6 アドレス\n"
"$interfaces - ネットワークインターフェースの一覧\n"
"$intip4 - 内部 IPv4 アドレス\n"
"$intip6 - 内部 IPv6 アドレス\n"
"$profiles - プロファイルの一覧\n"
"$status - 現在のプロファイルの状態(静的/有効)"
#: po/rc.cpp:126 rc.cpp:126
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "NOGISAKA Sadata"
#: po/rc.cpp:127 rc.cpp:127
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "ngsksdt@gmail.com "

View File

@ -0,0 +1,409 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: https://github.com/arcan1s/netctl-gui/issues\n"
"POT-Creation-Date: 2014-08-24 16:44+0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: netctl.cpp:270
msgid "Set profile %1 disabled"
msgstr ""
#: netctl.cpp:273
msgid "Set profile %1 enabled"
msgstr ""
#: netctl.cpp:294
msgid "Restart profile %1"
msgstr ""
#: netctl.cpp:315
msgid "Start profile %1"
msgstr ""
#: netctl.cpp:341
msgid "Stop profile %1"
msgstr ""
#: netctl.cpp:361 netctl.cpp:499
msgid "Stop all profiles"
msgstr ""
#: netctl.cpp:381
msgid "Switch to profile %1"
msgstr ""
#: netctl.cpp:454
msgid "Start another profile"
msgstr ""
#: netctl.cpp:455
msgid "Stop %1"
msgstr ""
#: netctl.cpp:456
msgid "Restart %1"
msgstr ""
#: netctl.cpp:458
msgid "Disable %1"
msgstr ""
#: netctl.cpp:460
msgid "Enable %1"
msgstr ""
#: netctl.cpp:463 netctl.cpp:486
msgid "Start profile"
msgstr ""
#: netctl.cpp:494
msgid "Stop profile"
msgstr ""
#: netctl.cpp:504
msgid "Switch to profile"
msgstr ""
#: netctl.cpp:512
msgid "Restart profile"
msgstr ""
#: netctl.cpp:517
msgid "Enable profile"
msgstr ""
#: netctl.cpp:521
msgid "Show netctl-gui"
msgstr ""
#: netctl.cpp:526
msgid "Show WiFi menu"
msgstr ""
#: netctl.cpp:553
msgid "Start GUI"
msgstr ""
#: netctl.cpp:564
msgid "Start WiFi menu"
msgstr ""
#: netctl.cpp:604
msgid "Network is up"
msgstr ""
#: netctl.cpp:608
msgid "Network is down"
msgstr ""
#: netctl.cpp:798
msgid ""
"Version %1\n"
"(build date %2)"
msgstr ""
#: netctl.cpp:799
msgid "KDE widget which interacts with netctl."
msgstr ""
#: netctl.cpp:800
msgid "Links:"
msgstr ""
#: netctl.cpp:801
msgid "Homepage"
msgstr ""
#: netctl.cpp:802
msgid "Repository"
msgstr ""
#: netctl.cpp:803
msgid "Bugtracker"
msgstr ""
#: netctl.cpp:804
msgid "Translation issue"
msgstr ""
#: netctl.cpp:805
msgid "AUR packages"
msgstr ""
#: netctl.cpp:807
msgid "This software is licensed under %1"
msgstr ""
#: netctl.cpp:815
msgid "Translators: %1"
msgstr ""
#: netctl.cpp:816
msgid "This software uses: %1"
msgstr ""
#: netctl.cpp:818
msgid "Netctl plasmoid"
msgstr ""
#: netctl.cpp:819
msgid "Appearance"
msgstr ""
#: netctl.cpp:820
msgid "DataEngine"
msgstr ""
#: netctl.cpp:821
msgid "About"
msgstr ""
#. i18n: file: appearance.ui:47
#. i18n: ectx: property (text), widget (QLabel, label_inactiveIcon)
#: po/rc.cpp:3 rc.cpp:3
msgid "Inactive icon"
msgstr ""
#. i18n: file: appearance.ui:63
#. i18n: ectx: property (text), widget (QPushButton, pushButton_inactiveIcon)
#. i18n: file: appearance.ui:391
#. i18n: ectx: property (text), widget (QPushButton, pushButton_activeIcon)
#. i18n: file: dataengine.ui:50
#. i18n: ectx: property (text), widget (QPushButton, pushButton_netctl)
#. i18n: file: dataengine.ui:83
#. i18n: ectx: property (text), widget (QPushButton, pushButton_netctlAuto)
#. i18n: file: dataengine.ui:119
#. i18n: ectx: property (text), widget (QPushButton, pushButton_extIp4)
#. i18n: file: dataengine.ui:155
#. i18n: ectx: property (text), widget (QPushButton, pushButton_extIp6)
#. i18n: file: widget.ui:108
#. i18n: ectx: property (text), widget (QPushButton, pushButton_gui)
#. i18n: file: widget.ui:144
#. i18n: ectx: property (text), widget (QPushButton, pushButton_helper)
#. i18n: file: widget.ui:177
#. i18n: ectx: property (text), widget (QPushButton, pushButton_netctl)
#. i18n: file: widget.ui:210
#. i18n: ectx: property (text), widget (QPushButton, pushButton_netctlAuto)
#. i18n: file: widget.ui:246
#. i18n: ectx: property (text), widget (QPushButton, pushButton_sudo)
#. i18n: file: widget.ui:282
#. i18n: ectx: property (text), widget (QPushButton, pushButton_wifi)
#. i18n: file: appearance.ui:63
#. i18n: ectx: property (text), widget (QPushButton, pushButton_inactiveIcon)
#. i18n: file: appearance.ui:391
#. i18n: ectx: property (text), widget (QPushButton, pushButton_activeIcon)
#. i18n: file: dataengine.ui:50
#. i18n: ectx: property (text), widget (QPushButton, pushButton_netctl)
#. i18n: file: dataengine.ui:83
#. i18n: ectx: property (text), widget (QPushButton, pushButton_netctlAuto)
#. i18n: file: dataengine.ui:119
#. i18n: ectx: property (text), widget (QPushButton, pushButton_extIp4)
#. i18n: file: dataengine.ui:155
#. i18n: ectx: property (text), widget (QPushButton, pushButton_extIp6)
#. i18n: file: widget.ui:108
#. i18n: ectx: property (text), widget (QPushButton, pushButton_gui)
#. i18n: file: widget.ui:144
#. i18n: ectx: property (text), widget (QPushButton, pushButton_helper)
#. i18n: file: widget.ui:177
#. i18n: ectx: property (text), widget (QPushButton, pushButton_netctl)
#. i18n: file: widget.ui:210
#. i18n: ectx: property (text), widget (QPushButton, pushButton_netctlAuto)
#. i18n: file: widget.ui:246
#. i18n: ectx: property (text), widget (QPushButton, pushButton_sudo)
#. i18n: file: widget.ui:282
#. i18n: ectx: property (text), widget (QPushButton, pushButton_wifi)
#: po/rc.cpp:6 po/rc.cpp:42 po/rc.cpp:54 po/rc.cpp:60 po/rc.cpp:66
#: po/rc.cpp:72 po/rc.cpp:81 po/rc.cpp:87 po/rc.cpp:93 po/rc.cpp:99
#: po/rc.cpp:105 po/rc.cpp:111 rc.cpp:6 rc.cpp:42 rc.cpp:54 rc.cpp:60
#: rc.cpp:66 rc.cpp:72 rc.cpp:81 rc.cpp:87 rc.cpp:93 rc.cpp:99 rc.cpp:105
#: rc.cpp:111
msgid "Browse"
msgstr ""
#. i18n: file: appearance.ui:80
#. i18n: ectx: property (text), widget (QLabel, label_fontColor)
#: po/rc.cpp:9 rc.cpp:9
msgid "Font color"
msgstr ""
#. i18n: file: appearance.ui:112
#. i18n: ectx: property (toolTip), widget (KColorCombo, kcolorcombo_fontColor)
#: po/rc.cpp:12 rc.cpp:12
msgid "Set font color"
msgstr ""
#. i18n: file: appearance.ui:142
#. i18n: ectx: property (text), widget (QLabel, label_fontSize)
#: po/rc.cpp:15 rc.cpp:15
msgid "Font size"
msgstr ""
#. i18n: file: appearance.ui:174
#. i18n: ectx: property (toolTip), widget (QSpinBox, spinBox_fontSize)
#: po/rc.cpp:18 rc.cpp:18
msgid "Set font size"
msgstr ""
#. i18n: file: appearance.ui:203
#. i18n: ectx: property (text), widget (QLabel, label_fontWeight)
#: po/rc.cpp:21 rc.cpp:21
msgid "Font weight"
msgstr ""
#. i18n: file: appearance.ui:235
#. i18n: ectx: property (toolTip), widget (QSpinBox, spinBox_fontWeight)
#: po/rc.cpp:24 rc.cpp:24
msgid "Set font weight"
msgstr ""
#. i18n: file: appearance.ui:267
#. i18n: ectx: property (text), widget (QLabel, label_fontStyle)
#: po/rc.cpp:27 rc.cpp:27
msgid "Font style"
msgstr ""
#. i18n: file: appearance.ui:299
#. i18n: ectx: property (toolTip), widget (QComboBox, comboBox_fontStyle)
#: po/rc.cpp:30 rc.cpp:30
msgid "Set font style"
msgstr ""
#. i18n: file: appearance.ui:326
#. i18n: ectx: property (text), widget (QLabel, label_font)
#: po/rc.cpp:33 rc.cpp:33
msgid "Font"
msgstr ""
#. i18n: file: appearance.ui:358
#. i18n: ectx: property (toolTip), widget (QFontComboBox, fontComboBox_font)
#: po/rc.cpp:36 rc.cpp:36
msgid "Set font family"
msgstr ""
#. i18n: file: appearance.ui:375
#. i18n: ectx: property (text), widget (QLabel, label_activeIcon)
#: po/rc.cpp:39 rc.cpp:39
msgid "Active icon"
msgstr ""
#. i18n: file: appearance.ui:408
#. i18n: ectx: property (text), widget (QLabel, label_textAlign)
#: po/rc.cpp:45 rc.cpp:45
msgid "Text align"
msgstr ""
#. i18n: file: appearance.ui:440
#. i18n: ectx: property (toolTip), widget (QComboBox, comboBox_textAlign)
#: po/rc.cpp:48 rc.cpp:48
msgid "Set text align"
msgstr ""
#. i18n: file: dataengine.ui:34
#. i18n: ectx: property (text), widget (QLabel, label_netctl)
#. i18n: file: widget.ui:161
#. i18n: ectx: property (text), widget (QLabel, label_netctl)
#. i18n: file: dataengine.ui:34
#. i18n: ectx: property (text), widget (QLabel, label_netctl)
#. i18n: file: widget.ui:161
#. i18n: ectx: property (text), widget (QLabel, label_netctl)
#: po/rc.cpp:51 po/rc.cpp:90 rc.cpp:51 rc.cpp:90
msgid "Path to netctl"
msgstr ""
#. i18n: file: dataengine.ui:67
#. i18n: ectx: property (text), widget (QLabel, label_netctlAuto)
#. i18n: file: widget.ui:194
#. i18n: ectx: property (text), widget (QLabel, label_netctlAuto)
#. i18n: file: dataengine.ui:67
#. i18n: ectx: property (text), widget (QLabel, label_netctlAuto)
#. i18n: file: widget.ui:194
#. i18n: ectx: property (text), widget (QLabel, label_netctlAuto)
#: po/rc.cpp:57 po/rc.cpp:96 rc.cpp:57 rc.cpp:96
msgid "Path to netctl-auto"
msgstr ""
#. i18n: file: dataengine.ui:100
#. i18n: ectx: property (text), widget (QCheckBox, checkBox_extIp4)
#: po/rc.cpp:63 rc.cpp:63
msgid "Check external IPv4"
msgstr ""
#. i18n: file: dataengine.ui:136
#. i18n: ectx: property (text), widget (QCheckBox, checkBox_extIp6)
#: po/rc.cpp:69 rc.cpp:69
msgid "Check external IPv6"
msgstr ""
#. i18n: file: widget.ui:34
#. i18n: ectx: property (text), widget (QLabel, label_autoUpdate)
#: po/rc.cpp:75 rc.cpp:75
msgid "Auto update interval, msec"
msgstr ""
#. i18n: file: widget.ui:92
#. i18n: ectx: property (text), widget (QLabel, label_gui)
#: po/rc.cpp:78 rc.cpp:78
msgid "Path to GUI"
msgstr ""
#. i18n: file: widget.ui:125
#. i18n: ectx: property (text), widget (QCheckBox, checkBox_helper)
#: po/rc.cpp:84 rc.cpp:84
msgid "Use helper"
msgstr ""
#. i18n: file: widget.ui:227
#. i18n: ectx: property (text), widget (QCheckBox, checkBox_sudo)
#: po/rc.cpp:102 rc.cpp:102
msgid "Use sudo for netctl"
msgstr ""
#. i18n: file: widget.ui:263
#. i18n: ectx: property (text), widget (QCheckBox, checkBox_wifi)
#: po/rc.cpp:108 rc.cpp:108
msgid "Show 'Start WiFi menu'"
msgstr ""
#. i18n: file: widget.ui:291
#. i18n: ectx: property (text), widget (QCheckBox, checkBox_showBigInterface)
#: po/rc.cpp:114 rc.cpp:114
msgid "Show more detailed interface"
msgstr ""
#. i18n: file: widget.ui:309
#. i18n: ectx: property (toolTip), widget (QPlainTextEdit, textEdit)
#: po/rc.cpp:117 rc.cpp:117
msgid ""
"$info - active profile information\n"
"$current - current profile name\n"
"$extip4 - external IPv4\n"
"$extip6 - external IPv6\n"
"$interfaces - list of the network interfaces\n"
"$intip4 - internal IPv4\n"
"$intip6 - internal IPv6\n"
"$profiles - list of the netctl profiles\n"
"$status - current profile status (static/enabled)"
msgstr ""
#: po/rc.cpp:126 rc.cpp:126
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr ""
#: po/rc.cpp:127 rc.cpp:127
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr ""

View File

@ -0,0 +1,448 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
# Evgeniy Alekseev <esalexeev@gmail.com>, 2014.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: https://github.com/arcan1s/netctl-gui/issues\n"
"POT-Creation-Date: 2014-08-24 16:44+0400\n"
"PO-Revision-Date: 2014-08-20 12:00+0400\n"
"Last-Translator: Evgeniy Alekseev <esalexeev@gmail.com>\n"
"Language-Team: Russian <kde-russian@lists.kde.ru>\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Lokalize 1.5\n"
#: netctl.cpp:270
msgid "Set profile %1 disabled"
msgstr "Выключение автозагрузки профиля %1"
#: netctl.cpp:273
msgid "Set profile %1 enabled"
msgstr "Включение автозагрузки профиля %1"
#: netctl.cpp:294
msgid "Restart profile %1"
msgstr "Перезапуск профиля %1"
#: netctl.cpp:315
msgid "Start profile %1"
msgstr "Запуск профиля %1"
#: netctl.cpp:341
msgid "Stop profile %1"
msgstr "Остановка профиля %1"
#: netctl.cpp:361 netctl.cpp:499
msgid "Stop all profiles"
msgstr "Остановить все профили"
#: netctl.cpp:381
msgid "Switch to profile %1"
msgstr "Переключение на профиль %1"
#: netctl.cpp:454
msgid "Start another profile"
msgstr "Запустить другой профиль"
#: netctl.cpp:455
msgid "Stop %1"
msgstr "Остановить %1"
#: netctl.cpp:456
msgid "Restart %1"
msgstr "Перезапустить %1"
#: netctl.cpp:458
msgid "Disable %1"
msgstr "Отключить %1"
#: netctl.cpp:460
msgid "Enable %1"
msgstr "Включить %1"
#: netctl.cpp:463 netctl.cpp:486
msgid "Start profile"
msgstr "Запустить профиль"
#: netctl.cpp:494
msgid "Stop profile"
msgstr "Остановить профиль"
#: netctl.cpp:504
msgid "Switch to profile"
msgstr "Переключить профиль"
#: netctl.cpp:512
msgid "Restart profile"
msgstr "Перезапустить профиль"
#: netctl.cpp:517
msgid "Enable profile"
msgstr "Включить профиль"
#: netctl.cpp:521
msgid "Show netctl-gui"
msgstr "Показать netctl-gui"
#: netctl.cpp:526
msgid "Show WiFi menu"
msgstr "Запустить WiFi-menu"
#: netctl.cpp:553
msgid "Start GUI"
msgstr "Запуск GUI"
#: netctl.cpp:564
msgid "Start WiFi menu"
msgstr "Запуск WiFi-menu"
#: netctl.cpp:604
msgid "Network is up"
msgstr "Сеть работает"
#: netctl.cpp:608
msgid "Network is down"
msgstr "Сеть не работает"
#: netctl.cpp:798
msgid ""
"Version %1\n"
"(build date %2)"
msgstr ""
"Версия %1\n"
"(дата сборки %2)"
#: netctl.cpp:799
msgid "KDE widget which interacts with netctl."
msgstr "Виджет KDE, который взаимодействует с netctl."
#: netctl.cpp:800
msgid "Links:"
msgstr "Ссылки:"
#: netctl.cpp:801
msgid "Homepage"
msgstr "Домашняя страница"
#: netctl.cpp:802
msgid "Repository"
msgstr "Репозиторий"
#: netctl.cpp:803
msgid "Bugtracker"
msgstr "Багтрекер"
#: netctl.cpp:804
msgid "Translation issue"
msgstr "Тикет перевода"
#: netctl.cpp:805
msgid "AUR packages"
msgstr "Пакеты в AUR"
#: netctl.cpp:807
msgid "This software is licensed under %1"
msgstr "Данное приложение лицензировано под %1"
#: netctl.cpp:815
msgid "Translators: %1"
msgstr "Переводчики: %1"
#: netctl.cpp:816
msgid "This software uses: %1"
msgstr "Данное приложение использует: %1"
#: netctl.cpp:818
msgid "Netctl plasmoid"
msgstr "Netctl plasmoid"
#: netctl.cpp:819
msgid "Appearance"
msgstr "Внешний вид"
#: netctl.cpp:820
msgid "DataEngine"
msgstr "DataEngine"
#: netctl.cpp:821
msgid "About"
msgstr "О программе"
#. i18n: file: appearance.ui:47
#. i18n: ectx: property (text), widget (QLabel, label_inactiveIcon)
#: po/rc.cpp:3 rc.cpp:3
msgid "Inactive icon"
msgstr "Иконка неактивного подключения"
#. i18n: file: appearance.ui:63
#. i18n: ectx: property (text), widget (QPushButton, pushButton_inactiveIcon)
#. i18n: file: appearance.ui:391
#. i18n: ectx: property (text), widget (QPushButton, pushButton_activeIcon)
#. i18n: file: dataengine.ui:50
#. i18n: ectx: property (text), widget (QPushButton, pushButton_netctl)
#. i18n: file: dataengine.ui:83
#. i18n: ectx: property (text), widget (QPushButton, pushButton_netctlAuto)
#. i18n: file: dataengine.ui:119
#. i18n: ectx: property (text), widget (QPushButton, pushButton_extIp4)
#. i18n: file: dataengine.ui:155
#. i18n: ectx: property (text), widget (QPushButton, pushButton_extIp6)
#. i18n: file: widget.ui:108
#. i18n: ectx: property (text), widget (QPushButton, pushButton_gui)
#. i18n: file: widget.ui:144
#. i18n: ectx: property (text), widget (QPushButton, pushButton_helper)
#. i18n: file: widget.ui:177
#. i18n: ectx: property (text), widget (QPushButton, pushButton_netctl)
#. i18n: file: widget.ui:210
#. i18n: ectx: property (text), widget (QPushButton, pushButton_netctlAuto)
#. i18n: file: widget.ui:246
#. i18n: ectx: property (text), widget (QPushButton, pushButton_sudo)
#. i18n: file: widget.ui:282
#. i18n: ectx: property (text), widget (QPushButton, pushButton_wifi)
#. i18n: file: appearance.ui:63
#. i18n: ectx: property (text), widget (QPushButton, pushButton_inactiveIcon)
#. i18n: file: appearance.ui:391
#. i18n: ectx: property (text), widget (QPushButton, pushButton_activeIcon)
#. i18n: file: dataengine.ui:50
#. i18n: ectx: property (text), widget (QPushButton, pushButton_netctl)
#. i18n: file: dataengine.ui:83
#. i18n: ectx: property (text), widget (QPushButton, pushButton_netctlAuto)
#. i18n: file: dataengine.ui:119
#. i18n: ectx: property (text), widget (QPushButton, pushButton_extIp4)
#. i18n: file: dataengine.ui:155
#. i18n: ectx: property (text), widget (QPushButton, pushButton_extIp6)
#. i18n: file: widget.ui:108
#. i18n: ectx: property (text), widget (QPushButton, pushButton_gui)
#. i18n: file: widget.ui:144
#. i18n: ectx: property (text), widget (QPushButton, pushButton_helper)
#. i18n: file: widget.ui:177
#. i18n: ectx: property (text), widget (QPushButton, pushButton_netctl)
#. i18n: file: widget.ui:210
#. i18n: ectx: property (text), widget (QPushButton, pushButton_netctlAuto)
#. i18n: file: widget.ui:246
#. i18n: ectx: property (text), widget (QPushButton, pushButton_sudo)
#. i18n: file: widget.ui:282
#. i18n: ectx: property (text), widget (QPushButton, pushButton_wifi)
#: po/rc.cpp:6 po/rc.cpp:42 po/rc.cpp:54 po/rc.cpp:60 po/rc.cpp:66
#: po/rc.cpp:72 po/rc.cpp:81 po/rc.cpp:87 po/rc.cpp:93 po/rc.cpp:99
#: po/rc.cpp:105 po/rc.cpp:111 rc.cpp:6 rc.cpp:42 rc.cpp:54 rc.cpp:60
#: rc.cpp:66 rc.cpp:72 rc.cpp:81 rc.cpp:87 rc.cpp:93 rc.cpp:99 rc.cpp:105
#: rc.cpp:111
msgid "Browse"
msgstr "Обзор"
#. i18n: file: appearance.ui:80
#. i18n: ectx: property (text), widget (QLabel, label_fontColor)
#: po/rc.cpp:9 rc.cpp:9
msgid "Font color"
msgstr "Цвет шрифта"
#. i18n: file: appearance.ui:112
#. i18n: ectx: property (toolTip), widget (KColorCombo, kcolorcombo_fontColor)
#: po/rc.cpp:12 rc.cpp:12
msgid "Set font color"
msgstr "Укажите цвет шрифта"
#. i18n: file: appearance.ui:142
#. i18n: ectx: property (text), widget (QLabel, label_fontSize)
#: po/rc.cpp:15 rc.cpp:15
msgid "Font size"
msgstr "Размер шрифта"
#. i18n: file: appearance.ui:174
#. i18n: ectx: property (toolTip), widget (QSpinBox, spinBox_fontSize)
#: po/rc.cpp:18 rc.cpp:18
msgid "Set font size"
msgstr "Укажите размер шрифта"
#. i18n: file: appearance.ui:203
#. i18n: ectx: property (text), widget (QLabel, label_fontWeight)
#: po/rc.cpp:21 rc.cpp:21
msgid "Font weight"
msgstr "Толщина шрифта"
#. i18n: file: appearance.ui:235
#. i18n: ectx: property (toolTip), widget (QSpinBox, spinBox_fontWeight)
#: po/rc.cpp:24 rc.cpp:24
msgid "Set font weight"
msgstr "Укажите ширину шрифта"
#. i18n: file: appearance.ui:267
#. i18n: ectx: property (text), widget (QLabel, label_fontStyle)
#: po/rc.cpp:27 rc.cpp:27
msgid "Font style"
msgstr "Стиль шрифта"
#. i18n: file: appearance.ui:299
#. i18n: ectx: property (toolTip), widget (QComboBox, comboBox_fontStyle)
#: po/rc.cpp:30 rc.cpp:30
msgid "Set font style"
msgstr "Укажите стиль шрифта"
#. i18n: file: appearance.ui:326
#. i18n: ectx: property (text), widget (QLabel, label_font)
#: po/rc.cpp:33 rc.cpp:33
msgid "Font"
msgstr "Шрифт"
#. i18n: file: appearance.ui:358
#. i18n: ectx: property (toolTip), widget (QFontComboBox, fontComboBox_font)
#: po/rc.cpp:36 rc.cpp:36
msgid "Set font family"
msgstr "Укажите шрифт"
#. i18n: file: appearance.ui:375
#. i18n: ectx: property (text), widget (QLabel, label_activeIcon)
#: po/rc.cpp:39 rc.cpp:39
msgid "Active icon"
msgstr "Иконка активного подключения"
#. i18n: file: appearance.ui:408
#. i18n: ectx: property (text), widget (QLabel, label_textAlign)
#: po/rc.cpp:45 rc.cpp:45
msgid "Text align"
msgstr "Выравнивание текста"
#. i18n: file: appearance.ui:440
#. i18n: ectx: property (toolTip), widget (QComboBox, comboBox_textAlign)
#: po/rc.cpp:48 rc.cpp:48
msgid "Set text align"
msgstr "Установите выравнивание текста"
#. i18n: file: dataengine.ui:34
#. i18n: ectx: property (text), widget (QLabel, label_netctl)
#. i18n: file: widget.ui:161
#. i18n: ectx: property (text), widget (QLabel, label_netctl)
#. i18n: file: dataengine.ui:34
#. i18n: ectx: property (text), widget (QLabel, label_netctl)
#. i18n: file: widget.ui:161
#. i18n: ectx: property (text), widget (QLabel, label_netctl)
#: po/rc.cpp:51 po/rc.cpp:90 rc.cpp:51 rc.cpp:90
msgid "Path to netctl"
msgstr "Путь к netctl"
#. i18n: file: dataengine.ui:67
#. i18n: ectx: property (text), widget (QLabel, label_netctlAuto)
#. i18n: file: widget.ui:194
#. i18n: ectx: property (text), widget (QLabel, label_netctlAuto)
#. i18n: file: dataengine.ui:67
#. i18n: ectx: property (text), widget (QLabel, label_netctlAuto)
#. i18n: file: widget.ui:194
#. i18n: ectx: property (text), widget (QLabel, label_netctlAuto)
#: po/rc.cpp:57 po/rc.cpp:96 rc.cpp:57 rc.cpp:96
msgid "Path to netctl-auto"
msgstr "Путь к netctl-auto"
#. i18n: file: dataengine.ui:100
#. i18n: ectx: property (text), widget (QCheckBox, checkBox_extIp4)
#: po/rc.cpp:63 rc.cpp:63
msgid "Check external IPv4"
msgstr "Проверять внешний IPv4"
#. i18n: file: dataengine.ui:136
#. i18n: ectx: property (text), widget (QCheckBox, checkBox_extIp6)
#: po/rc.cpp:69 rc.cpp:69
msgid "Check external IPv6"
msgstr "Проверять внешний IPv6"
#. i18n: file: widget.ui:34
#. i18n: ectx: property (text), widget (QLabel, label_autoUpdate)
#: po/rc.cpp:75 rc.cpp:75
msgid "Auto update interval, msec"
msgstr "Интервал автообновления, мсек"
#. i18n: file: widget.ui:92
#. i18n: ectx: property (text), widget (QLabel, label_gui)
#: po/rc.cpp:78 rc.cpp:78
msgid "Path to GUI"
msgstr "Путь к GUI"
#. i18n: file: widget.ui:125
#. i18n: ectx: property (text), widget (QCheckBox, checkBox_helper)
#: po/rc.cpp:84 rc.cpp:84
msgid "Use helper"
msgstr "Использовать хелпер"
#. i18n: file: widget.ui:227
#. i18n: ectx: property (text), widget (QCheckBox, checkBox_sudo)
#: po/rc.cpp:102 rc.cpp:102
msgid "Use sudo for netctl"
msgstr "Использовать sudo для netctl"
#. i18n: file: widget.ui:263
#. i18n: ectx: property (text), widget (QCheckBox, checkBox_wifi)
#: po/rc.cpp:108 rc.cpp:108
msgid "Show 'Start WiFi menu'"
msgstr "Показать 'Запустить WiFi-menu'"
#. i18n: file: widget.ui:291
#. i18n: ectx: property (text), widget (QCheckBox, checkBox_showBigInterface)
#: po/rc.cpp:114 rc.cpp:114
msgid "Show more detailed interface"
msgstr "Показать более детальный интерфейс"
#. i18n: file: widget.ui:309
#. i18n: ectx: property (toolTip), widget (QPlainTextEdit, textEdit)
#: po/rc.cpp:117 rc.cpp:117
msgid ""
"$info - active profile information\n"
"$current - current profile name\n"
"$extip4 - external IPv4\n"
"$extip6 - external IPv6\n"
"$interfaces - list of the network interfaces\n"
"$intip4 - internal IPv4\n"
"$intip6 - internal IPv6\n"
"$profiles - list of the netctl profiles\n"
"$status - current profile status (static/enabled)"
msgstr ""
"$info - информация об активном профиле\n"
"$current - имя текущего профиля\n"
"$extip4 - внешний IPv4\n"
"$extip6 - внешний IPv6\n"
"$interfaces - список сетевых интерфейсов\n"
"$intip4 - внутренний IPv4\n"
"$intip6 - внутренний IPv6\n"
"$profiles - список профилей netctl\n"
"$status - статус текущего профиля (static/enabled)"
#: po/rc.cpp:126 rc.cpp:126
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "Evgeniy Alekseev"
#: po/rc.cpp:127 rc.cpp:127
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "esalexeev@gmail.com"
#~ msgid "Acknowledgement"
#~ msgstr "Благодарности"
#~ msgid "normal"
#~ msgstr "normal"
#~ msgid "italic"
#~ msgstr "italic"
#~ msgid "Path to ip"
#~ msgstr "Путь к ip"
#~ msgid "Path to interface list"
#~ msgstr "Путь к интерфейсам"
#~ msgid "Show network devices"
#~ msgstr "Показать сетевые устройства"
#~ msgid "Show external IP"
#~ msgstr "Показать внешний IP"
#~ msgid "Show internal IP"
#~ msgstr "Показать внутренний IP"
#~ msgid "Configuration"
#~ msgstr "Настройка"

View File

@ -31,6 +31,7 @@
#define PROJECT_BUILD_HELPER "@BUILD_HELPER@"
#define PROJECT_BUILD_LIBRARY "@BUILD_LIBRARY@"
#define PROJECT_BUILD_PLASMOID "@BUILD_PLASMOID@"
#cmakedefine BUILD_KDE4
// additional components
#define PROJECT_BUILD_DOCS "@BUILD_DOCS@"
#define PROJECT_BUILD_TEST "@BUILD_TEST@"