diff options
author | william <william.os4y@gmail.com> | 2015-03-26 21:54:09 +0100 |
---|---|---|
committer | william <william.os4y@gmail.com> | 2015-03-26 21:54:09 +0100 |
commit | c168111955fdaac4b546e82138de5e75545cfb07 (patch) | |
tree | 00494a256c392032a19821b9bbc83de0ac66bc1a /desktop-editor | |
parent | Merge remote-tracking branch 'upstream/master' into deskEditor (diff) | |
download | lumina-c168111955fdaac4b546e82138de5e75545cfb07.tar.gz lumina-c168111955fdaac4b546e82138de5e75545cfb07.tar.bz2 lumina-c168111955fdaac4b546e82138de5e75545cfb07.zip |
put the name lumina-fileinfo
Diffstat (limited to 'desktop-editor')
-rw-r--r-- | desktop-editor/desktop-app.template | 11 | ||||
-rw-r--r-- | desktop-editor/desktop-editor.pro | 32 | ||||
-rw-r--r-- | desktop-editor/desktop-link.template | 7 | ||||
-rw-r--r-- | desktop-editor/dialog.cpp | 241 | ||||
-rw-r--r-- | desktop-editor/dialog.h | 46 | ||||
-rw-r--r-- | desktop-editor/dialog.ui | 226 | ||||
-rw-r--r-- | desktop-editor/global.h | 3 | ||||
-rw-r--r-- | desktop-editor/main.cpp | 20 |
8 files changed, 0 insertions, 586 deletions
diff --git a/desktop-editor/desktop-app.template b/desktop-editor/desktop-app.template deleted file mode 100644 index 8519d3a1..00000000 --- a/desktop-editor/desktop-app.template +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Version=1.0 -Encoding=UTF-8 -Name=Name -Exec=Command -Icon=system-help.png -StartupNotify=false -Terminal=false -Type=Application -Categories=Application -Comment=Comment diff --git a/desktop-editor/desktop-editor.pro b/desktop-editor/desktop-editor.pro deleted file mode 100644 index dc3eadf2..00000000 --- a/desktop-editor/desktop-editor.pro +++ /dev/null @@ -1,32 +0,0 @@ -#------------------------------------------------- -# -# Project created by QtCreator 2015-02-24T18:52:15 -# -#------------------------------------------------- - -QT += core gui - -greaterThan(QT_MAJOR_VERSION, 4): QT += widgets - -TARGET = desktop-editor -TEMPLATE = app - -isEmpty(PREFIX) { - PREFIX = /usr/local -} - -isEmpty(LIBPREFIX) { - LIBPREFIX = $$PREFIX/lib -} - - -SOURCES += main.cpp\ - dialog.cpp - -HEADERS += dialog.h - -FORMS += dialog.ui - -INCLUDEPATH += $$PREFIX/include - -LIBS += -L$$LIBPREFIX -lLuminaUtils diff --git a/desktop-editor/desktop-link.template b/desktop-editor/desktop-link.template deleted file mode 100644 index 4a0b7830..00000000 --- a/desktop-editor/desktop-link.template +++ /dev/null @@ -1,7 +0,0 @@ -[Desktop Entry] -Version=1.0 -Encoding=UTF-8 -Name=Name -Icon=system-help.png -Type=Link -Comment=Comment diff --git a/desktop-editor/dialog.cpp b/desktop-editor/dialog.cpp deleted file mode 100644 index 359257d6..00000000 --- a/desktop-editor/dialog.cpp +++ /dev/null @@ -1,241 +0,0 @@ -#include "dialog.h" -#include "ui_dialog.h" -#include <QFileDialog> -#include <QRegExp> -#include <QTemporaryFile> -#include <QMessageBox> -#include "LuminaUtils.h" -#include <LuminaOS.h> - -Dialog::Dialog(QWidget *parent) : - QDialog(parent), - ui(new Ui::Dialog) -{ - ui->setupUi(this); - desktopType="Application"; //default value - - //Setup all the icons using libLumina - this->setWindowIcon( LXDG::findIcon("preferences-desktop-default-applications","") ); - ui->pbWorkingDir->setIcon( LXDG::findIcon("folder","") ); - ui->pbCommand->setIcon( LXDG::findIcon("system-search","") ); -} - - -Dialog::~Dialog() -{ - delete ui; -} - -//Inform the user that required input parameters are missing -void Dialog::MissingInputs() -{ - qDebug() << "We cannot continue without a desktop file !!!"; - QMessageBox::critical(this, tr("Error"), tr("The application requires inputs: <-application>|<-link> desktopfile") ); - exit(1); -} - - -//Initialise the layout of the screen. -void Dialog::Initialise(QString param) -{ - - //in case of "link", several objects are no required - if (param.startsWith("-link")) { - ui->cbRunInTerminal->setVisible(false); - ui->cbStartupNotification->setVisible(false); - ui->lCommand->setVisible(false); - ui->pbCommand->setVisible(false); - ui->lblCommand->setVisible(false); - ui->lblOptions->setVisible(false); - ui->lblWorkingDir->setText("URL"); //we use the WorkingDir boxes for URL - desktopType="link"; - } -} - - - - -//load the desktop file or the required template -void Dialog::LoadDesktopFile(QString input) -{ - //if we have "-" as 1st char, it means that this is not a desktop file, but a parameter - desktopFileName = input; - if (input.startsWith("-")) { - QMessageBox::critical(this,tr("Error"),tr("The filename cannot start with a \"-\".")); - exit(1); - } - - //if proposed file does not exist, than we will create one based on the templates - //TODO: have a config directory to store templates - if (!QFile::exists(input)) { - if (desktopType=="link") { QFile::copy("./desktop-link.template", desktopFileName);} - else { QFile::copy("./desktop-app.template", desktopFileName);} - } - - //use the standard LXDG object and load the desktop file - bool ok = false; - DF = LXDG::loadDesktopFile(desktopFileName, ok); - if( ok ) { - if ((DF.type == XDGDesktop::LINK) && (desktopType!="link" )) { - //we open a desktop type "link" but it was not mentionned by parameters - Dialog::Initialise("-link"); - } - ui->lName->setText(DF.name); - ui->lComment->setText(DF.comment); - ui->lCommand->setText(DF.exec); - //in case of "link" desktop, we populate the correct content in lWorkingDir - if (desktopType=="link") { - ui->lWorkingDir->setText(DF.url); - } else { - ui->lWorkingDir->setText(DF.path); - } - if (DF.startupNotify) ui->cbStartupNotification->setChecked(true); else ui->cbStartupNotification->setChecked(false); - if (DF.useTerminal) ui->cbRunInTerminal->setChecked(true); else ui->cbRunInTerminal->setChecked(false); - iconFileName=""; - ui->pbIcon->setIcon(QPixmap(DF.icon)); - } else { - QMessageBox::critical(this, tr("Error"), tr("Problem to read the desktop file called:") + desktopFileName ); - exit(1); - } -} - - -void Dialog::on_pbCommand_clicked() -{ - //the default directory is the user's home directory - QString commandFolder = "~"; - if (!ui->lCommand->text().isEmpty()) commandFolder = ui->lCommand->text().section('/', 0, -2); - if (commandFolder.isEmpty()) commandFolder = "~"; - - QString fileName = QFileDialog::getOpenFileName(this, - tr("Open command"), commandFolder, tr("All Files (*)")); - if (!fileName.isEmpty()) { - ui->lCommand->setText(fileName); - ui->lCommand->setModified(true); - } -} - - -void Dialog::on_pbWorkingDir_clicked() -{ - //the default directory is / - QString workingDir = "/"; - if (ui->lWorkingDir->text().isEmpty()) workingDir = "/"; - else workingDir = ui->lWorkingDir->text(); - QFileDialog::Options options = QFileDialog::DontResolveSymlinks | QFileDialog::ShowDirsOnly; - QString directory = QFileDialog::getExistingDirectory(this, - tr("Working Directory"), - workingDir, - options); - if (!directory.isEmpty()) { - ui->lWorkingDir->setText(directory); - ui->lWorkingDir->setModified(true); - } -} - -//this function is just like a regexp. -//we just change the required lines and we don't touch to the rest of the file and copy it back. -void Dialog::textReplace(QString &origin, QString from, QString to, QString topic) -{ - if (origin.contains(QRegExp("\n" + topic + "\\[\\S+\\]\\s*=",Qt::CaseInsensitive))) { - QMessageBox msgBox; - msgBox.setText(tr("By modifying this value, you will loose all translated versions")); - msgBox.setInformativeText(tr("The field:") + topic + tr( "is translated in several other languages. If you want to continue, you will loose all translated versions")); - msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel); - int answer = msgBox.exec(); - if (answer==QMessageBox::Ok) { - //remove all translated versions. The lang cannot be null, but the value can be. - origin.replace(QRegExp("\n" + topic + "\\[\\S+\\]\\s*=[^\n]*",Qt::CaseInsensitive), ""); - } - else return; - } - if (!from.isEmpty()) { - origin.replace(QRegExp("\n" + topic + "\\s*=\\s*" + from + "\n",Qt::CaseInsensitive),"\n" + topic + "=" + to + "\n"); - } else { - //TODO: check if last char in \n. If not add it - origin.append(topic + "=" + to + "\n"); - } -} - -//we save the changes to the destination file -void Dialog::on_pbApply_clicked() -{ - - QByteArray fileData; - QFile file(desktopFileName); - if (file.open(QFile::ReadWrite)) { - QString from,to; - fileData = file.readAll(); - QString text(fileData); - - QString desktopTypeVal="Application"; - if (DF.type == XDGDesktop::APP) { desktopTypeVal="Application"; } - else if (DF.type == XDGDesktop::LINK) { desktopTypeVal="Link"; } - else if (DF.type == XDGDesktop::DIR) { desktopTypeVal="Dir"; } - textReplace(text, desktopTypeVal, desktopType, "Type"); - - if (ui->lName->isModified()) { textReplace(text, DF.name, ui->lName->text(), "Name");} - if (ui->lComment->isModified()) { textReplace(text, DF.comment, ui->lComment->text(), "Comment");} - if (ui->lCommand->isModified()) { textReplace(text, DF.exec, ui->lCommand->text(),"Exec");} - if (desktopType=="link") { - //incase of "link" layout WorkingDir is corresponding to the URL - if (ui->lWorkingDir->isModified()) { textReplace(text, DF.url, ui->lWorkingDir->text(),"URL");} - } else { - if (ui->lWorkingDir->isModified()) { textReplace(text, DF.path, ui->lWorkingDir->text(),"Path");} - } - if (ui->cbStartupNotification->isChecked() != DF.startupNotify) { - if (DF.startupNotify) {from="true"; to="false";} else {from="false"; to="true";} - textReplace(text, from, to,"StartupNotify"); - } - if (ui->cbRunInTerminal->isChecked() != DF.useTerminal) { - if (DF.useTerminal) {from="true"; to="false";} else {from="false"; to="true";} - textReplace(text, from, to,"Terminal"); - } - if (!iconFileName.isEmpty()) { - from=DF.icon; - to=iconFileName; - textReplace(text, from, to,"Icon"); - } - - file.seek(0); - file.write(text.toUtf8()); - - file.resize(file.pos());//remove possible trailing lines - - file.close(); - - //hack required to update the icon on the desktop - //maybe the solution would be to have a QFileSystemWatcher (in AppLauncherPlugin.cpp) - //on files instead of ~/Desktop - QTemporaryFile tempFile ; - tempFile.setAutoRemove(false); - tempFile.open(); - tempFile.close(); - - //TODO: capture errors - QString cmd = "mv"; - cmd = cmd + " " + desktopFileName + " " + tempFile.fileName(); - int ret = LUtils::runCmd(cmd); - - cmd = "mv"; - cmd = cmd + " " + tempFile.fileName() + " " + desktopFileName; - ret = LUtils::runCmd(cmd); - } -} - - -void Dialog::on_pbIcon_clicked() -{ - //the default directory is local/share/icons - QString iconFolder = LOS::AppPrefix()+"/share/icons"; - if (!iconFileName.isEmpty()) iconFolder = iconFileName.section('/', 0, -2); - else if (!DF.icon.isEmpty()) iconFolder = DF.icon.section('/', 0, -2); - if (iconFolder.isEmpty()) iconFolder = LOS::AppPrefix()+"/share/icons"; - - QString fileName = QFileDialog::getOpenFileName(this, - tr("Open command"), iconFolder, tr("Image Files (*.png *.jpg *.bmp)")); - if (!fileName.isEmpty()) { - ui->pbIcon->setIcon(QPixmap(fileName)); - iconFileName=fileName; - } -} diff --git a/desktop-editor/dialog.h b/desktop-editor/dialog.h deleted file mode 100644 index e58f0938..00000000 --- a/desktop-editor/dialog.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef DIALOG_H -#define DIALOG_H - -#include <QDialog> -#include <LuminaXDG.h> - -namespace Ui { -class Dialog; -} - -class Dialog : public QDialog -{ - Q_OBJECT - -public: - explicit Dialog(QWidget *parent = 0); - - XDGDesktop DF ; - - QString desktopFileName ; - QString iconFileName; - QString desktopType; - - void Initialise(QString); - void MissingInputs(); - void LoadDesktopFile(QString); - - ~Dialog(); - -private slots: - - void on_pbCommand_clicked(); - - void on_pbWorkingDir_clicked(); - - void on_pbApply_clicked(); - - void on_pbIcon_clicked(); - - void textReplace(QString &origin, QString from, QString to, QString topic); - -private: - Ui::Dialog *ui; -}; - -#endif // DIALOG_H diff --git a/desktop-editor/dialog.ui b/desktop-editor/dialog.ui deleted file mode 100644 index 8cca25d4..00000000 --- a/desktop-editor/dialog.ui +++ /dev/null @@ -1,226 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>Dialog</class> - <widget class="QDialog" name="Dialog"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>383</width> - <height>288</height> - </rect> - </property> - <property name="windowTitle"> - <string>Desktop Editor</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <layout class="QGridLayout" name="gridLayout"> - <item row="3" column="0" alignment="Qt::AlignRight"> - <widget class="QLabel" name="lblWorkingDir"> - <property name="text"> - <string>Working dir:</string> - </property> - </widget> - </item> - <item row="3" column="2"> - <widget class="QPushButton" name="pbWorkingDir"> - <property name="enabled"> - <bool>true</bool> - </property> - <property name="text"> - <string/> - </property> - <property name="icon"> - <iconset> - <normalon>../../../../usr/local/share/icons/gnome/32x32/places/folder.png</normalon> - </iconset> - </property> - </widget> - </item> - <item row="2" column="2"> - <widget class="QPushButton" name="pbCommand"> - <property name="text"> - <string/> - </property> - <property name="icon"> - <iconset> - <normalon>../../../../usr/local/share/icons/gnome/32x32/actions/gnome-run.png</normalon> - </iconset> - </property> - </widget> - </item> - <item row="5" column="1"> - <widget class="QCheckBox" name="cbStartupNotification"> - <property name="text"> - <string>Use startup notification</string> - </property> - </widget> - </item> - <item row="3" column="1"> - <widget class="QLineEdit" name="lWorkingDir"> - <property name="enabled"> - <bool>true</bool> - </property> - </widget> - </item> - <item row="4" column="0" alignment="Qt::AlignRight"> - <widget class="QLabel" name="lblIcon"> - <property name="text"> - <string>Icon:</string> - </property> - </widget> - </item> - <item row="2" column="0" alignment="Qt::AlignRight"> - <widget class="QLabel" name="lblCommand"> - <property name="text"> - <string>Command:</string> - </property> - </widget> - </item> - <item row="1" column="0" alignment="Qt::AlignRight"> - <widget class="QLabel" name="lblComment"> - <property name="text"> - <string>Comment:</string> - </property> - </widget> - </item> - <item row="2" column="1"> - <widget class="QLineEdit" name="lCommand"/> - </item> - <item row="4" column="1" alignment="Qt::AlignLeft"> - <widget class="QPushButton" name="pbIcon"> - <property name="maximumSize"> - <size> - <width>275</width> - <height>16777215</height> - </size> - </property> - <property name="text"> - <string/> - </property> - <property name="icon"> - <iconset> - <normalon>../../../../usr/local/share/icons/gnome/32x32/categories/xfce-graphics.png</normalon> - </iconset> - </property> - <property name="iconSize"> - <size> - <width>64</width> - <height>64</height> - </size> - </property> - </widget> - </item> - <item row="6" column="1"> - <widget class="QCheckBox" name="cbRunInTerminal"> - <property name="text"> - <string>Run in terminal</string> - </property> - </widget> - </item> - <item row="0" column="0" alignment="Qt::AlignRight"> - <widget class="QLabel" name="lblName"> - <property name="text"> - <string>Name:</string> - </property> - </widget> - </item> - <item row="5" column="0" alignment="Qt::AlignRight"> - <widget class="QLabel" name="lblOptions"> - <property name="text"> - <string>Options</string> - </property> - </widget> - </item> - <item row="0" column="1" colspan="2"> - <widget class="QLineEdit" name="lName"/> - </item> - <item row="1" column="1" colspan="2"> - <widget class="QLineEdit" name="lComment"/> - </item> - </layout> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout"> - <item> - <spacer name="horizontalSpacer"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item> - <widget class="QPushButton" name="pbCancel"> - <property name="text"> - <string>Cancel</string> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="pbApply"> - <property name="text"> - <string>Apply</string> - </property> - </widget> - </item> - </layout> - </item> - </layout> - </widget> - <layoutdefault spacing="6" margin="11"/> - <tabstops> - <tabstop>lName</tabstop> - <tabstop>lComment</tabstop> - <tabstop>lCommand</tabstop> - <tabstop>lWorkingDir</tabstop> - <tabstop>pbIcon</tabstop> - <tabstop>cbStartupNotification</tabstop> - <tabstop>cbRunInTerminal</tabstop> - <tabstop>pbCancel</tabstop> - <tabstop>pbApply</tabstop> - <tabstop>pbCommand</tabstop> - <tabstop>pbWorkingDir</tabstop> - </tabstops> - <resources/> - <connections> - <connection> - <sender>pbCancel</sender> - <signal>clicked()</signal> - <receiver>Dialog</receiver> - <slot>close()</slot> - <hints> - <hint type="sourcelabel"> - <x>289</x> - <y>286</y> - </hint> - <hint type="destinationlabel"> - <x>274</x> - <y>316</y> - </hint> - </hints> - </connection> - <connection> - <sender>pbApply</sender> - <signal>clicked()</signal> - <receiver>Dialog</receiver> - <slot>accept()</slot> - <hints> - <hint type="sourcelabel"> - <x>375</x> - <y>286</y> - </hint> - <hint type="destinationlabel"> - <x>372</x> - <y>318</y> - </hint> - </hints> - </connection> - </connections> -</ui> diff --git a/desktop-editor/global.h b/desktop-editor/global.h deleted file mode 100644 index f93e2d08..00000000 --- a/desktop-editor/global.h +++ /dev/null @@ -1,3 +0,0 @@ -#ifndef PREFIX - #define PREFIX QString("/usr/local") -#endif diff --git a/desktop-editor/main.cpp b/desktop-editor/main.cpp deleted file mode 100644 index 39a96321..00000000 --- a/desktop-editor/main.cpp +++ /dev/null @@ -1,20 +0,0 @@ -#include <QApplication> -#include "dialog.h" - -int main(int argc, char *argv[]) -{ - QApplication a(argc, argv); - Dialog w; - if (argc==2) { - w.LoadDesktopFile(QString(argv[1]).simplified()); - } else if (argc==3) { - w.Initialise(QString(argv[1]).simplified()); - w.LoadDesktopFile(QString(argv[2]).simplified()); - } else { - w.MissingInputs(); - } - a.setApplicationName("Desktop Editor"); - w.show(); - - return a.exec(); -} |