diff --git a/CMakeLists.txt b/CMakeLists.txt index f006794..825c3c6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -64,6 +64,14 @@ set( RESOURCES resources/systeminstaller.qrc ) +set( DESKTOP + resources/cl-install-gui.desktop +) + +set( ICONS + resources/cl-install-gui.png +) + add_definitions(-DNO_INSTALL -DQT_GUI_LIB -DQT_CORE_LIB -Wall) include_directories( ./ @@ -131,6 +139,30 @@ install( FILES ${TRANSLATIONS_BINARY} WORLD_READ ) +install( FILES ${TRANSLATIONS_BINARY} + DESTINATION share/${PROJECT} + PERMISSIONS + OWNER_WRITE OWNER_READ + GROUP_READ + WORLD_READ +) + +install( FILES ${DESKTOP} + DESTINATION share/applications + PERMISSIONS + OWNER_WRITE OWNER_READ + GROUP_READ + WORLD_READ +) + +install( FILES ${ICONS} + DESTINATION share/pixmaps + PERMISSIONS + OWNER_WRITE OWNER_READ + GROUP_READ + WORLD_READ +) + #install( FILES resources/${PROJECT}.desktop # DESTINATION share/applications # PERMISSIONS diff --git a/resources/cl-install-gui.desktop b/resources/cl-install-gui.desktop new file mode 100644 index 0000000..841d228 --- /dev/null +++ b/resources/cl-install-gui.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Categories=System; +Exec=sudo cl-install-gui +Icon=cl-install-gui +Name=calculate-install-gui +Comment=GUI-Frontend for Calculate Linux installer +Terminal=true +Type=Application +Version=0.1 \ No newline at end of file diff --git a/resources/cl-install-gui.png b/resources/cl-install-gui.png new file mode 100644 index 0000000..7ca80e6 Binary files /dev/null and b/resources/cl-install-gui.png differ diff --git a/src/calculateconfig.cpp b/src/calculateconfig.cpp index eeab31f..50e16aa 100644 --- a/src/calculateconfig.cpp +++ b/src/calculateconfig.cpp @@ -30,8 +30,11 @@ bool CalculateConfig::getDefaultConfig() // start cl-install -v and parse out QProcess cl_install; - qDebug() << "Start cl-install -v --xml"; - cl_install.start("cl-install", QStringList() << "-v" << "--xml"); + qDebug() << "Start cl-install -v --xml --filter (os_install*|os_locale_lang|os_disk*|os_device*)"; + + cl_install.start( + "cl-install -v --xml --filter \"os_install*|os_locale_lang|*os_disk*|*os_device*\"" + ); if ( !cl_install.waitForStarted() ) return false; @@ -62,18 +65,11 @@ bool CalculateConfig::getDefaultConfig() m_Config["gui_install_language"] = m_Config["os_locale_lang"]; QStringList devs = m_Config["os_device_dev"].toStringList(); - QStringList::iterator dev = devs.begin(); - - while ( dev != devs.end() ) - { - *dev = "/dev/"+*dev; - ++dev; - } - m_Config.remove("os_device_dev"); - m_Config["os_device_dev"] = devs; + m_Config["os_device_dev"] = preparePartitions(devs); - m_Config["gui_os_device_dev"] = m_Config["os_device_dev"].toStringList().at(0); + if ( !m_Config["os_device_dev"].toStringList().isEmpty() ) + m_Config["gui_os_device_dev"] = m_Config["os_device_dev"].toStringList().at(0); m_Config["gui_os_device_dev_def"] = m_Config["gui_os_device_dev"]; // copy default values @@ -91,6 +87,62 @@ bool CalculateConfig::getDefaultConfig() return true; } +bool CalculateConfig::getNewPartitioning() +{ + // start cl-install -v and parse out + MapConfig confDisk; + QProcess cl_install; + + qDebug() << "Start cl-install -v --xml --filter (os_disk*|os_device*)"; + cl_install.start( + "cl-install -v --xml --filter \"(os_disk*|os_device*)\" " + ); + + if ( !cl_install.waitForStarted() ) + return false; + + if ( !cl_install.waitForFinished() ) + return false; + + QString outVars = cl_install.readAll(); + + QDomDocument xmlVars; + QString errMsg; + int errLine; + int errColumn; + + if ( xmlVars.setContent(outVars, true, &errMsg, &errLine, &errColumn) ) + { + QDomElement domRoot = xmlVars.documentElement(); + if (domRoot.tagName() == "variables") { + parseVariables(domRoot, confDisk); + } else { + qDebug() << "Section \"variables\" not found"; + return false; + } + } + + QStringList devs = confDisk["os_device_dev"].toStringList(); + m_Config.remove("os_device_dev"); + m_Config["os_device_dev"] = preparePartitions(devs); + + return true; +} + +QStringList CalculateConfig::preparePartitions(const QStringList& parts) +{ + QStringList devs(parts); + QStringList::iterator dev = devs.begin(); + + while ( dev != devs.end() ) + { + *dev = "/dev/"+*dev; + ++dev; + } + + return devs; +} + QStringList CalculateConfig::getPasswordUsers() { QStringList result; diff --git a/src/calculateconfig.h b/src/calculateconfig.h index 0d8c104..9bb3c50 100644 --- a/src/calculateconfig.h +++ b/src/calculateconfig.h @@ -19,6 +19,7 @@ public: static CalculateConfig* instance(); bool getDefaultConfig(); + bool getNewPartitioning(); QVariant getValue(const QString& key) const { return m_Config[key]; } void setValue(const QString& key, const QVariant& value); @@ -37,6 +38,8 @@ private: CalculateConfig(const CalculateConfig&); CalculateConfig& operator=(const CalculateConfig&); + QStringList preparePartitions(const QStringList& parts); + void parseVariables(const QDomNode& node, MapConfig& cfg); void parseVar(const QDomNode& node, MapConfig& cfg); void parseVarList(const QDomNode& node, MapConfig& cfg); diff --git a/src/main.cpp b/src/main.cpp index 35346eb..ee563af 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -26,7 +26,7 @@ int main(int argc, char** argv) QApplication app(argc, argv); - //qInstallMsgHandler( MsgHandler ); + qInstallMsgHandler( MsgHandler ); debugLog.setFileName("/var/log/calculate/cl-install-gui-debug.log"); if ( debugLog.open(QIODevice::Append | QIODevice::WriteOnly | QIODevice::Text | QIODevice::Unbuffered) ) diff --git a/src/mountpointdialog.cpp b/src/mountpointdialog.cpp index c99e739..611869e 100644 --- a/src/mountpointdialog.cpp +++ b/src/mountpointdialog.cpp @@ -6,11 +6,14 @@ #include #include #include +#include +#include #include #include + MountPointDialog::MountPointDialog ( QWidget* parent, MountPoint* mountPoint ) : QDialog(parent), m_MountPoint(mountPoint) { @@ -32,7 +35,11 @@ MountPointDialog::MountPointDialog ( QWidget* parent, MountPoint* mountPoint ) m_cmbboxFS->setCurrentIndex( fsIndx ); if (m_cmbboxFS->currentText() == "swap" ) + { m_edMountPoint->setText("swap"); + m_chkboxFormat->setChecked( true ); + m_chkboxFormat->setEnabled( false ); + } if (m_edMountPoint->text() == "swap") m_edMountPoint->setEnabled(false); @@ -49,12 +56,15 @@ MountPointDialog::~MountPointDialog() void MountPointDialog::setupUi() { + QRegExp rxDir("/[0-9a-zA-Z_\\-/]{0,64}"); + m_labDevice = new QLabel( tr("Device: ") ); m_edDevice = new QLineEdit; m_edDevice->setReadOnly(true); m_labMountPoint = new QLabel( tr("Mount point: ") ); m_edMountPoint = new QLineEdit; + m_edMountPoint->setValidator( new QRegExpValidator(rxDir, this) ); QGridLayout* gbox_0 = new QGridLayout; gbox_0->setContentsMargins(0, 0, 0, 0); @@ -122,6 +132,8 @@ void MountPointDialog::preAccept() m_MountPoint->format = m_chkboxFormat->isChecked(); if (m_MountPoint->format) m_MountPoint->fs_new = m_cmbboxFS->currentText(); + else + m_MountPoint->fs_new = ""; } accept(); @@ -136,6 +148,7 @@ void MountPointDialog::changeFS( QString fs ) m_edMountPoint->setText("swap"); m_edMountPoint->setEnabled(false); } else { + m_chkboxFormat->setEnabled(true); m_edMountPoint->setEnabled(true); if ( m_edMountPoint->text() == "swap" ) { diff --git a/src/pagecfdisk.cpp b/src/pagecfdisk.cpp index 63cbaea..7400d78 100644 --- a/src/pagecfdisk.cpp +++ b/src/pagecfdisk.cpp @@ -35,6 +35,7 @@ void PageCfdisk::setupUi() m_Term->setTerminalFont(font); m_Term->setParent(m_widgetTerm); + m_Term->setColorScheme(COLOR_SCHEME_BLACK_ON_LIGHT_YELLOW); QVBoxLayout* vbox_1 = new QVBoxLayout; diff --git a/src/pageconfiguration.cpp b/src/pageconfiguration.cpp index d1a2c9d..20f338b 100644 --- a/src/pageconfiguration.cpp +++ b/src/pageconfiguration.cpp @@ -8,6 +8,8 @@ #include #include #include +#include +#include #include @@ -46,6 +48,9 @@ PageConfiguration::PageConfiguration() : void PageConfiguration::setupUi() { + QRegExp rxName("[a-zA-Z][0-9a-zA-Z_\\-.]{0,63}"); + QRegExp rxNameIP("[0-9a-zA-Z_\\-/:\\\\.]{0,128}"); + // m_labelSelectParams = new QLabel; @@ -53,6 +58,7 @@ void PageConfiguration::setupUi() QHBoxLayout* hbox_hostname = new QHBoxLayout; m_labelHostName = new QLabel; m_editHostName = new QLineEdit; + m_editHostName->setValidator( new QRegExpValidator(rxName, this) ); m_editHostName->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); hbox_hostname->addWidget(m_labelHostName); hbox_hostname->addWidget(m_editHostName); @@ -61,6 +67,7 @@ void PageConfiguration::setupUi() QHBoxLayout* hbox_domain = new QHBoxLayout; m_labelDomainName = new QLabel; m_editDomainName = new QLineEdit; + m_editDomainName->setValidator( new QRegExpValidator(rxName, this) ); m_editDomainName->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); hbox_domain->addWidget(m_labelDomainName); hbox_domain->addWidget(m_editDomainName); @@ -120,6 +127,7 @@ void PageConfiguration::setupUi() QHBoxLayout* hbox_proxy = new QHBoxLayout; m_labelProxy = new QLabel; m_editProxy = new QLineEdit; + m_editProxy->setValidator( new QRegExpValidator(rxNameIP, this) ); m_editProxy->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); hbox_proxy->addWidget(m_labelProxy); hbox_proxy->addWidget(m_editProxy); @@ -128,6 +136,7 @@ void PageConfiguration::setupUi() QHBoxLayout* hbox_ntp = new QHBoxLayout; m_labelNtp = new QLabel; m_editNtp = new QLineEdit; + m_editNtp->setValidator( new QRegExpValidator(rxNameIP, this) ); m_editNtp->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); hbox_ntp->addWidget(m_labelNtp); hbox_ntp->addWidget(m_editNtp); @@ -170,6 +179,7 @@ void PageConfiguration::setupUi() QScrollArea* scrArea = new QScrollArea; scrArea->setWidgetResizable(true); + scrArea->setAutoFillBackground(false); QWidget* scrWidg = new QWidget; QVBoxLayout* scrWidgLayout = new QVBoxLayout(scrWidg); diff --git a/src/pageinstall.cpp b/src/pageinstall.cpp index 696260a..c25f5e2 100644 --- a/src/pageinstall.cpp +++ b/src/pageinstall.cpp @@ -56,6 +56,8 @@ void PageInstall::retranslateUi() void PageInstall::show() { qDebug() << "install show()"; + m_Progress->setMaximum(100); + m_Output->clear(); CalculateConfig* clConf = CalculateConfig::instance(); @@ -168,6 +170,7 @@ void PageInstall::onFinish(int exitCode, QProcess::ExitStatus exitStatus) m_Progress->setValue(100); // m_LabelEta->setText( tr("Eta: 0:00:00") ); + disconnect(m_clProc); delete m_clProc; m_clProc = 0; } diff --git a/src/pagemountpoints.cpp b/src/pagemountpoints.cpp index 2252d81..56dd71c 100644 --- a/src/pagemountpoints.cpp +++ b/src/pagemountpoints.cpp @@ -2,7 +2,7 @@ #include #include -#include +#include #include #include @@ -19,17 +19,19 @@ PageMountPoints::PageMountPoints() void PageMountPoints::setupUi() { m_labMountPoints = new QLabel; - m_trwMountPoints = new QTreeWidget; + m_labMountPointHelp = new QLabel; + QVBoxLayout* vbox_0 = new QVBoxLayout; vbox_0->addWidget(m_labMountPoints); - vbox_0->addWidget( m_trwMountPoints); + vbox_0->addWidget(m_trwMountPoints); + vbox_0->addWidget(m_labMountPointHelp); setLayout(vbox_0); connect( m_trwMountPoints, SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)), - this, SLOT(partitionDoubleClicked(QTreeWidgetItem*,int)) + this, SLOT(partitionDoubleClicked(QTreeWidgetItem*,int)) ); retranslateUi(); @@ -48,6 +50,8 @@ void PageMountPoints::retranslateUi() trwHeader->setText(5, tr("Format") ); m_labMountPoints->setText( tr("Select mount points:") ); + + m_labMountPointHelp->setText( tr("Set the desired mount points. For continue must be set mount point for /") ); } void PageMountPoints::show() @@ -81,6 +85,22 @@ bool PageMountPoints::validate() if ( CalculateConfig::instance()->getValue("gui_partitioning") != "auto" ) { // check parameters + MountPointsTree::ConstIterator it = m_treeMountPoints.constBegin(); + + while( it != m_treeMountPoints.constEnd() ) + { + foreach(const MountPoint& mp, it.value()) + { + if ( !mp.mountpoint.isEmpty() && (mp.fs_new != "swap") ) + { + if (mp.mountpoint == "/") + return true; + } + } + ++it; + } + QMessageBox::warning(this, tr("Warning"), tr("Select mount point for /") ); + return false; } return true; @@ -98,7 +118,7 @@ void PageMountPoints::partitionDoubleClicked ( QTreeWidgetItem* item, int index QString dev = item->parent()->text(0); QString part = item->text(0); - qDebug() << "selected :" << dev << " " << part; + //qDebug() << "selected :" << dev << " " << part; // find data MountPointsList mpList = m_treeMountPoints[dev]; @@ -111,7 +131,7 @@ void PageMountPoints::partitionDoubleClicked ( QTreeWidgetItem* item, int index break; } - qDebug() << "index: " << mpIndex; + //qDebug() << "index: " << mpIndex; if (mpIndex >= 0) { @@ -133,6 +153,8 @@ void PageMountPoints::partitionDoubleClicked ( QTreeWidgetItem* item, int index void PageMountPoints::getTree() { + MountPointsTree copyTree(m_treeMountPoints); + m_treeMountPoints.clear(); QStringList os_disk_dev = CalculateConfig::instance()->getValue("os_disk_dev").toStringList(); @@ -161,6 +183,19 @@ void PageMountPoints::getTree() if ( m_treeMountPoints.contains(dev) ) { + if (copyTree.contains(dev)) + { + foreach(MountPoint mp, copyTree[dev]) + { + if (mp.dev == mountpoint.dev) + { + mountpoint.mountpoint = mp.mountpoint; + mountpoint.format = mp.format; + mountpoint.fs_new = mp.fs_new; + break; + } + } + } m_treeMountPoints[dev] << mountpoint; } else @@ -207,8 +242,8 @@ void PageMountPoints::showBranch(const QString& dev, const MountPointsList& list trwItem_0_0->setText(1, mp.label ); // Label trwItem_0_0->setText(2, mp.size ); // Size trwItem_0_0->setText(3, mp.mountpoint ); // Mount point - trwItem_0_0->setText(4, mp.fs_new.isEmpty() ? mp.fs : mp.fs_new ); // File system - trwItem_0_0->setText(5, mp.fs_new.isEmpty() ? "" : (mp.format ? tr("YES") : tr("no")) ); // Format + trwItem_0_0->setText(4, mp.fs_new.isEmpty() ? mp.fs : mp.fs_new ); // File system + trwItem_0_0->setText(5, mp.fs_new.isEmpty() ? tr("no") : tr("YES") ); // Format } m_trwMountPoints->insertTopLevelItem(m_trwMountPoints->topLevelItemCount(), trwItem_0); diff --git a/src/pagemountpoints.h b/src/pagemountpoints.h index 982f25f..0f2350a 100644 --- a/src/pagemountpoints.h +++ b/src/pagemountpoints.h @@ -44,6 +44,7 @@ private: private: QLabel* m_labMountPoints; QTreeWidget* m_trwMountPoints; + QLabel* m_labMountPointHelp; MountPointsTree m_treeMountPoints; }; \ No newline at end of file diff --git a/src/pagepartitioning.cpp b/src/pagepartitioning.cpp index 4c622ae..603ec32 100644 --- a/src/pagepartitioning.cpp +++ b/src/pagepartitioning.cpp @@ -31,6 +31,7 @@ void PagePartitioning::setupUi() m_butExistPartitions = new QRadioButton; m_butAllDisk = new QRadioButton; + m_butAllDisk->setEnabled(false); m_butManualPartitioning = new QPushButton; m_cmbxDisks = new QComboBox; diff --git a/src/pageusers.cpp b/src/pageusers.cpp index cd53b61..b5d40fb 100644 --- a/src/pageusers.cpp +++ b/src/pageusers.cpp @@ -154,6 +154,7 @@ void PageUsers::addUser() { m_lstUserInfo << userInfo; m_lstUsers->addItem( userInfo.name ); + updateConfig(); } else { @@ -185,6 +186,7 @@ void PageUsers::delUser() m_lstUsers->addItem("guest"); } } + updateConfig(); } } @@ -213,6 +215,8 @@ void PageUsers::modifyUser() delete m_lstUsers->takeItem(index); m_lstUsers->insertItem(index, userInfo.name); m_lstUserInfo.replace(index, userInfo); + + updateConfig(); } else { @@ -261,9 +265,14 @@ int PageUsers::findUserName( const UserInfo& userInfo ) bool PageUsers::validate() { - CalculateConfig* clConf = CalculateConfig::instance(); + CalculateConfig::instance()->setValue("gui_root_psw", m_edRootPsw->text()); + + return true; +} - clConf->setValue("gui_root_psw", m_edRootPsw->text()); +void PageUsers::updateConfig() +{ + CalculateConfig* clConf = CalculateConfig::instance(); QStringList users; QStringList passwords; @@ -276,6 +285,6 @@ bool PageUsers::validate() clConf->setValue("gui_users", users); clConf->setValue("gui_passwds", passwords); - return true; + clConf->showInstallParameters(); } diff --git a/src/pageusers.h b/src/pageusers.h index a82f1e1..f7e1e8d 100644 --- a/src/pageusers.h +++ b/src/pageusers.h @@ -31,7 +31,8 @@ private slots: void checkPasswords(); private: - int findUserName(const UserInfo& userInfo); + int findUserName(const UserInfo& userInfo); + void updateConfig(); private: QLabel* m_labRoot; diff --git a/src/pagewelcome.cpp b/src/pagewelcome.cpp index 2e33f84..4716c67 100644 --- a/src/pagewelcome.cpp +++ b/src/pagewelcome.cpp @@ -56,7 +56,7 @@ void PageWelcome::retranslateUi() "" + tr( "

Welcome to Calculate Linux.

" - "

http://calculate-linux.org

" + "

http://www.calculate-linux.org

" ) + "" ); diff --git a/src/systeminstaller.cpp b/src/systeminstaller.cpp index da1f3d4..a231b43 100644 --- a/src/systeminstaller.cpp +++ b/src/systeminstaller.cpp @@ -164,10 +164,10 @@ void SystemInstaller::setupInstallerPages() PageWelcome* pageLanguage( new PageWelcome ); connect( pageLanguage, SIGNAL(changeLanguage(QString)), this, SLOT(changeLanguage(QString)) ); m_PageManager->addPage(pageLanguage); - +/* PageLicense* pageLicense( new PageLicense ); m_PageManager->addPage(pageLicense); - +*/ PagePartitioning* pagePartitoning( new PagePartitioning ); connect( pagePartitoning, SIGNAL(manualyPartitioning(QString)), this, SLOT(doPartitioning(QString)) ); m_PageManager->addPage(pagePartitoning); @@ -282,6 +282,7 @@ void SystemInstaller::doPartitioning(QString disk) void SystemInstaller::completePartitioning() { delete m_PageCfdisk; + CalculateConfig::instance()->getNewPartitioning(); m_PageManager->showPrevious(); } diff --git a/src/systeminstaller.h b/src/systeminstaller.h index b3806d0..b0365fd 100644 --- a/src/systeminstaller.h +++ b/src/systeminstaller.h @@ -76,6 +76,5 @@ private: QScopedPointer m_PageManager; QString m_CurrentLanguage; - InstallerSettings m_InstallSettings; }; diff --git a/src/tools.cpp b/src/tools.cpp index 6966bdd..2fa7e97 100644 --- a/src/tools.cpp +++ b/src/tools.cpp @@ -1,17 +1 @@ #include "tools.h" - -#include -#include - -QString LoadTextFile(const QString& name) -{ - QString result; - - QFile inputFile(name); - if ( inputFile.open(QIODevice::ReadOnly | QIODevice::Text) ) - { - result = QTextStream(&inputFile).readAll(); - inputFile.close(); - } - return result; -} diff --git a/src/tools.h b/src/tools.h index 1265b4f..3f59c93 100644 --- a/src/tools.h +++ b/src/tools.h @@ -1,25 +1,2 @@ #pragma once -#include - -struct InstallerSettings -{ - QString disk; - QString host; - QString language; - QString timezone; - bool erase; - QString fs; - bool composite; - - bool expert; - bool builder; - bool mbr; - bool uuid; - QString disktype; - QString videodrv; - QString videores; - -}; - -QString LoadTextFile(const QString& name); diff --git a/src/userinfodialog.cpp b/src/userinfodialog.cpp index b9864f6..be7775f 100644 --- a/src/userinfodialog.cpp +++ b/src/userinfodialog.cpp @@ -3,7 +3,10 @@ #include #include #include -#include +#include + +#include +#include #include @@ -40,8 +43,11 @@ UserInfoDialog::~UserInfoDialog() void UserInfoDialog::setupUi() { + QRegExp rxName("[a-z][0-9a-z_\\-]{0,63}"); + m_labUserName = new QLabel( tr("User name:") ); m_edUserName = new QLineEdit; + m_edUserName->setValidator( new QRegExpValidator(rxName, this) ); QHBoxLayout* hbox_0 = new QHBoxLayout; hbox_0->addWidget(m_labUserName); @@ -107,14 +113,21 @@ void UserInfoDialog::checkPasswords() void UserInfoDialog::preAccept() { - if ( m_edUserName->text().isEmpty() ) + QString name = m_edUserName->text(); + if ( name.isEmpty() ) { QMessageBox::critical(this, tr("Error"), tr("User name is empty") ); m_edUserName->setFocus(); return; } + if ( name == "root" ) + { + QMessageBox::critical(this, tr("Error"), tr("User root can't added") ); + m_edUserName->setFocus(); + return; + } - m_UserInfo.name = m_edUserName->text(); + m_UserInfo.name = name; m_UserInfo.psw = m_edPsw->text(); accept(); diff --git a/translations/cl-install-gui_bg.ts b/translations/cl-install-gui_bg.ts index ed723ec..cb10a34 100644 --- a/translations/cl-install-gui_bg.ts +++ b/translations/cl-install-gui_bg.ts @@ -237,7 +237,7 @@ Eta: unknown - Eta: неизвестно + Eta: неизвестно Eta: %1 @@ -245,7 +245,11 @@ Eta: 0:00:00 - Eta: 0:00:00 + Eta: 0:00:00 + + + Error. Additional information in /var/log/calculate/cl-install-gui-err.log + @@ -330,6 +334,18 @@ Java 2 (SUN) Runtime Environment, Standard Edition<br> no + + Set the desired mount points. For continue must be set mount point for / + + + + Warning + + + + Select mount point for / + + PagePartitioning @@ -436,6 +452,19 @@ Java 2 (SUN) Runtime Environment, Standard Edition<br> Passwords do not match + + Add user + + + + Remove selected user + + + + Added users. +For modifying user - double click it. + + PageWelcome @@ -449,12 +478,16 @@ Java 2 (SUN) Runtime Environment, Standard Edition<br> <p>Welcome to Calculate Linux.</p><p><a href='http://calculate-linux.org'>http://calculate-linux.org</a></p> - <p>Добре дошли в Calculate Linux.</p><p><a href='http://calculate-linux.ru'>http://calculate-linux.ru</a></p> + <p>Добре дошли в Calculate Linux.</p><p><a href='http://calculate-linux.ru'>http://calculate-linux.ru</a></p> Please choose the language which should be used for this application. + + <p>Welcome to Calculate Linux.</p><p><a href='http://www.calculate-linux.org'>http://www.calculate-linux.org</a></p> + + QObject @@ -599,5 +632,9 @@ Java 2 (SUN) Runtime Environment, Standard Edition<br> User name is empty + + User root can't added + + diff --git a/translations/cl-install-gui_ru.ts b/translations/cl-install-gui_ru.ts index f42786e..4524210 100644 --- a/translations/cl-install-gui_ru.ts +++ b/translations/cl-install-gui_ru.ts @@ -24,27 +24,27 @@ MountPointDialog Device: - Устройство: + Устройство: Mount point: - Точка монтирования: + Точка монтирования: Format partition - Форматировать раздел + Форматировать раздел File system: - Файловая система: + Файловая система: OK - ОК + ОК Cancel - Отмена + Отмена @@ -178,43 +178,43 @@ Domain: - Домен: + Домен: Device for install Grub: - Устройства для установки Grub: + Устройства для установки Grub: Make options (MAKEOPTS): - Опции сборки (MAKEOPTS): + Опции сборки (MAKEOPTS): Proxy server: - Proxy сервер: + Proxy сервер: NTP server: - NTP сервер: + NTP сервер: Clock type: - Тип часов: + Тип часов: Local - Локальное время + Локальное время UTC - UTC + UTC Warning - Предупреждение + Предупреждение Hostname is empty. - Имя компьютера пустое + Имя компьютера пустое @@ -225,7 +225,7 @@ <h4>Congratulation!</h4><p>Installation complete.Press Finish for exit.</p> - <h4>Поздравляем!</h4><p>Установка успешно завершена. Нажмите "Закончить" для выхода.</p> + <h4>Поздравляем!</h4><p>Установка успешно завершена. Нажмите "Закончить" для выхода.</p> @@ -236,7 +236,7 @@ Eta: unknown - Eta: неизвестно + Eta: неизвестно Eta: %1 @@ -244,7 +244,11 @@ Eta: 0:00:00 - Eta: 0:00:00 + Eta: 0:00:00 + + + Error. Additional information in /var/log/calculate/cl-install-gui-err.log + @@ -313,58 +317,70 @@ Java 2 (SUN) Runtime Environment, Standard Edition<br> PageMountPoints Mount points - Точки монтирования + Точки монтирования Partition - Раздел + Раздел Label - Метка + Метка Size - Размер + Размер Mount point - Точка монтирования: + Точка монтирования: File system - Файловая система + Файловая система Format - + Форматирование Select mount points: - Выберите точку монтирования: + Выберите точку монтирования: Information - Информация + Информация You select auto partitioning. Press "Next" to continue. - Вы выбрали автоматическую разметку диска. Нажмите "Вперед" для продолжения. + Вы выбрали автоматическую разметку диска. Нажмите "Вперед" для продолжения. YES - ДА + ДА no - нет + нет + + + Set the desired mount points. For continue must be set mount point for / + Установите желаемые точки монтирования. Для продолжения должны быть установленна точка монтирования корневого раздела / . + + + Warning + Предупреждение + + + Select mount point for / + Выберите раздел для точки монтирования / PagePartitioning Partitioning - Разметка + Разметка Disk for install: @@ -408,62 +424,76 @@ Java 2 (SUN) Runtime Environment, Standard Edition<br> Use existing partitions - Использовать существующие разделы + Использовать существующие разделы Use automatically partitioning - Использовать автоматическую разметку диска + Использовать автоматическую разметку диска Manually partitioning - Ручная разметка диска + Ручная разметка диска PageUsers Users - Пользователи + Пользователи Root password: - Пароль суперпользователя + Пароль суперпользователя Password - Пароль + Пароль Confirm Password - Подтверждение пароля + Подтверждение пароля Create users: - Создать пользователей: + Создать пользователей: Error - Ошибка + Ошибка User %1 already exists. - Пользователь %1 уже существует. + Пользователь %1 уже существует. User guest can't be deleted. - Пользователь guest не может быть удален. + Пользователь guest не может быть удален. User guest can't be modified. - Пользователь guest не может быть изменен. + Пользователь guest не может быть изменен. Passwords match - Пароли совпадают + Пароли совпадают Passwords do not match - Пароли не совпадают + Пароли не совпадают + + + Add user + Добавить пользователя + + + Remove selected user + Удалить выбраного пользователя + + + Added users. +For modifying user - double click it. + Добавление пользователей. +Для редактирования существующего пользователя используйте двойной клик на нем. @@ -478,11 +508,15 @@ Java 2 (SUN) Runtime Environment, Standard Edition<br> <p>Welcome to Calculate Linux.</p><p><a href='http://calculate-linux.org'>http://calculate-linux.org</a></p> - <p>Добро пожаловать в Calculate Linux.</p><p><a href='http://calculate-linux.ru'>http://calculate-linux.ru</a></p> + <p>Добро пожаловать в Calculate Linux.</p><p><a href='http://calculate-linux.ru'>http://calculate-linux.ru</a></p> Please choose the language which should be used for this application. - Пожалуйста, выберите язык, который будет использоваться этим приложением. + Пожалуйста, выберите язык, который будет использоваться этим приложением. + + + <p>Welcome to Calculate Linux.</p><p><a href='http://www.calculate-linux.org'>http://www.calculate-linux.org</a></p> + @@ -575,58 +609,62 @@ Java 2 (SUN) Runtime Environment, Standard Edition<br> Critical error - Критическая ошибка + Критическая ошибка Failed to launch 'cl-install'. - Не могу запустить 'cl-install' + Не могу запустить 'cl-install' UserInfoDialog Add user - Добавить пользователя + Добавить пользователя Modify user - Изменить пользователя + Изменить пользователя User name: - Имя пользователя: + Имя пользователя: Password - Пароль + Пароль Confirm Password - Подтверждение пароля + Подтверждение пароля OK - ОК + ОК Cancel - Отмена + Отмена Passwords match - Пароли совпадают + Пароли совпадают Passwords do not match - Пароли не совпадают + Пароли не совпадают Error - Ошибка + Ошибка User name is empty - Имя пользователя не задано + Имя пользователя не задано + + + User root can't added + Пользователь root не может быть добавлен.