From 01610a8efa628529ad4899827209a4181942d895 Mon Sep 17 00:00:00 2001 From: q5sys Date: Mon, 1 May 2017 12:38:57 -0400 Subject: add inital commit for .desktop file creator --- .../lumina-xdg-entry/lumina-xdg-entry.pro | 22 ++ src-qt5/desktop-utils/lumina-xdg-entry/main.cpp | 16 + .../desktop-utils/lumina-xdg-entry/mainwindow.cpp | 138 +++++++++ .../desktop-utils/lumina-xdg-entry/mainwindow.h | 40 +++ .../desktop-utils/lumina-xdg-entry/mainwindow.ui | 344 +++++++++++++++++++++ 5 files changed, 560 insertions(+) create mode 100644 src-qt5/desktop-utils/lumina-xdg-entry/lumina-xdg-entry.pro create mode 100644 src-qt5/desktop-utils/lumina-xdg-entry/main.cpp create mode 100644 src-qt5/desktop-utils/lumina-xdg-entry/mainwindow.cpp create mode 100644 src-qt5/desktop-utils/lumina-xdg-entry/mainwindow.h create mode 100644 src-qt5/desktop-utils/lumina-xdg-entry/mainwindow.ui diff --git a/src-qt5/desktop-utils/lumina-xdg-entry/lumina-xdg-entry.pro b/src-qt5/desktop-utils/lumina-xdg-entry/lumina-xdg-entry.pro new file mode 100644 index 00000000..c146a687 --- /dev/null +++ b/src-qt5/desktop-utils/lumina-xdg-entry/lumina-xdg-entry.pro @@ -0,0 +1,22 @@ +#=========================================== +# Copyright (c) 2017, q5sys (JT) +# Available under the MIT license +# See the LICENSE file for full details +#=========================================== + + +QT += core gui + +greaterThan(QT_MAJOR_VERSION, 4): QT += widgets + +TARGET = lumina-xdg-entry +TEMPLATE = app + +DEFINES += QT_DEPRECATED_WARNINGS + +SOURCES += main.cpp\ + mainwindow.cpp + +HEADERS += mainwindow.h + +FORMS += mainwindow.ui diff --git a/src-qt5/desktop-utils/lumina-xdg-entry/main.cpp b/src-qt5/desktop-utils/lumina-xdg-entry/main.cpp new file mode 100644 index 00000000..dc117447 --- /dev/null +++ b/src-qt5/desktop-utils/lumina-xdg-entry/main.cpp @@ -0,0 +1,16 @@ +//=========================================== +// Copyright (c) 2017, q5sys (JT) +// Available under the MIT license +// See the LICENSE file for full details +//=========================================== +#include "mainwindow.h" +#include + +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + MainWindow w; + w.show(); + + return a.exec(); +} diff --git a/src-qt5/desktop-utils/lumina-xdg-entry/mainwindow.cpp b/src-qt5/desktop-utils/lumina-xdg-entry/mainwindow.cpp new file mode 100644 index 00000000..ce9d63d3 --- /dev/null +++ b/src-qt5/desktop-utils/lumina-xdg-entry/mainwindow.cpp @@ -0,0 +1,138 @@ +//=========================================== +// Copyright (c) 2017, q5sys (JT) +// Available under the MIT license +// See the LICENSE file for full details +//=========================================== + +#include "mainwindow.h" +#include "ui_mainwindow.h" +#include "QDir" +#include "QFile" +#include "QTextStream" +#include "QImageReader" +#include "QFileDialog" +#include "QMessageBox" + + +MainWindow::MainWindow(QWidget *parent) : + QMainWindow(parent), + ui(new Ui::MainWindow) +{ + ui->setupUi(this); + connect(ui->pushButton_executable, SIGNAL(clicked()), this, SLOT(setExec()) ); + connect(ui->pushButton_icon, SIGNAL(clicked()), this, SLOT(setIcon()) ); + connect(ui->pushButton_save, SIGNAL(clicked()), this, SLOT(save()) ); + connect(ui->actionSave, SIGNAL(triggered()), this, SLOT(save()) ); + connect(ui->actionClose, SIGNAL(triggered()), this, SLOT(close()) ); + +} + +MainWindow::~MainWindow() +{ + delete ui; +} + +void MainWindow::setIcon(){ + //Prompt for a new image file + QStringList imgformats; + QList fmts = QImageReader::supportedImageFormats(); + for(int i=0; ilineEdit_icon->setText(iconpath); + icon = ui->lineEdit_icon->text(); + } + + +void MainWindow::setExec(){ + //Prompt for a new executable file + QString execpath = QFileDialog::getOpenFileName(this, tr("Select File"), QDir::homePath(), tr("All Files (*)") ); + ui->lineEdit_executable->setText(execpath); + executable = ui->lineEdit_executable->text(); + } + +void MainWindow::setCategories(){ +if(ui->checkBox_audio->isChecked()){ +catList = catList + "Audio;";} +if(ui->checkBox_video->isChecked()){ +catList = catList + "Video;";} +if(ui->checkBox_development->isChecked()){ +catList = catList + "Development;";} +if(ui->checkBox_education->isChecked()){ +catList = catList + "Education;";} +if(ui->checkBox_game->isChecked()){ +catList = catList + "Game;";} +if(ui->checkBox_graphics->isChecked()){ +catList = catList + "Graphics;";} +if(ui->checkBox_network->isChecked()){ +catList = catList + "Network;";} +if(ui->checkBox_office->isChecked()){ +catList = catList + "Office;";} +if(ui->checkBox_science->isChecked()){ +catList = catList + "Science;";} +if(ui->checkBox_settings->isChecked()){ +catList = catList + "Settings;";} +if(ui->checkBox_system->isChecked()){ +catList = catList + "System;";} +if(ui->checkBox_utility->isChecked()){ +catList = catList + "Utility;";} +categories = catList; +} + +void MainWindow::setOtherValues(){ +name = ui->lineEdit_name->text(); +genericname = ui->lineEdit_genericname->text(); +keywords = ui->lineEdit_keywords->text(); +comment = ui->lineEdit_comment->text(); +if(ui->checkBox_terminal->isChecked()){ +terminal = "true";} else{terminal = "false";}; +} + +void MainWindow::setDesktopFields(){ +setCategories(); +setOtherValues(); +namefield = "Name=" + name; +genericnamefield = "GenericName=" + genericname; +commentfield = "Comment=" + comment; +iconfield = "Icon=" + icon; +terminalfield = "Terminal=" + terminal; +execfield = "Exec=" + executable; +categoriesfield = "Categories=" + categories + ";"; +keywordfield = "Keywords=" + keywords; +} + +void MainWindow::save(){ +setDesktopFields(); +QString path = QDir::homePath(); +QString filename; +filename = path + "/" + name + ".desktop"; + +QFile file(filename); +file.open(QIODevice::WriteOnly | QIODevice::Text); +QTextStream stream(&file); +stream << "{Desktop Entry]" << endl; +stream << "Type=Application" << endl; +stream << "Version=1.0" << endl; +stream << namefield << endl; +stream << genericnamefield << endl; +stream << commentfield << endl; +stream << iconfield << endl; +stream << terminalfield << endl; +stream << execfield << endl; +stream << categoriesfield << endl; +stream << keywordfield << endl; +if(file.isOpen()){ + QMessageBox *messageBox = new QMessageBox; + messageBox->setText(tr("File Saved")); + QPushButton *pushButtonOk = messageBox->addButton(tr("Ok"), QMessageBox::YesRole); + messageBox->QDialog::setWindowTitle(tr("Successful")); + messageBox->show();} +else{ QMessageBox *messageBox = new QMessageBox; + messageBox->setText(tr("File Not Saved")); + QPushButton *pushButtonOk = messageBox->addButton(tr("Ok"), QMessageBox::YesRole); + messageBox->QDialog::setWindowTitle(tr("Unsuccessful")); +messageBox->show();} +file.close(); +} diff --git a/src-qt5/desktop-utils/lumina-xdg-entry/mainwindow.h b/src-qt5/desktop-utils/lumina-xdg-entry/mainwindow.h new file mode 100644 index 00000000..1aad8325 --- /dev/null +++ b/src-qt5/desktop-utils/lumina-xdg-entry/mainwindow.h @@ -0,0 +1,40 @@ +//=========================================== +// Copyright (c) 2017, q5sys (JT) +// Available under the MIT license +// See the LICENSE file for full details +//=========================================== + +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include + +namespace Ui { +class MainWindow; +} + +class MainWindow : public QMainWindow +{ + Q_OBJECT + +public: + explicit MainWindow(QWidget *parent = 0); + ~MainWindow(); + + QString name, genericname, comment, icon, executable, terminal, keywords, catList, categories, iconpath, execpath; + QString namefield, genericnamefield, commentfield, iconfield, terminalfield,execfield, categoriesfield, keywordfield; + +public slots: + void setIcon(); + void setExec(); + void setCategories(); + void setOtherValues(); + void setDesktopFields(); + void save(); + + +private: + Ui::MainWindow *ui; +}; + +#endif // MAINWINDOW_H diff --git a/src-qt5/desktop-utils/lumina-xdg-entry/mainwindow.ui b/src-qt5/desktop-utils/lumina-xdg-entry/mainwindow.ui new file mode 100644 index 00000000..928ce30a --- /dev/null +++ b/src-qt5/desktop-utils/lumina-xdg-entry/mainwindow.ui @@ -0,0 +1,344 @@ + + + MainWindow + + + + 0 + 0 + 564 + 492 + + + + MainWindow + + + + + + + + + Name + + + lineEdit_name + + + + + + + + + + + + + + Generic Name + + + lineEdit_genericname + + + + + + + + + + + + + + + + + Comment + + + lineEdit_comment + + + + + + + + + + + + + + + + Values seperated by semicolon (no spaces) + + + 3 + + + Keywords + + + lineEdit_keywords + + + + + + + Keywords separated by semicolons with no spaces + + + + + + + + + + + + + Executable + + + lineEdit_executable + + + + + + + + + + Select + + + + + + + + + + + Icon + + + lineEdit_icon + + + + + + + + + + Select + + + + + + + + + Qt::Horizontal + + + + + + + + + Categories + + + + + + + + + Audio + + + + + + + Video + + + + + + + Development + + + + + + + + + + + Education + + + + + + + Game + + + + + + + Graphics + + + + + + + + + + + Network + + + + + + + Office + + + + + + + Science + + + + + + + + + + + Settings + + + + + + + System + + + + + + + Utility + + + + + + + + + + + Qt::Horizontal + + + + + + + + + Qt::RightToLeft + + + Run in Terminal + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Save + + + + + + + + + + + 0 + 0 + 564 + 27 + + + + + Menu + + + + + + + + + Close + + + + + Save + + + + + + + -- cgit From 06a7bb24419eab24ac88a88091142b8f6669aadc Mon Sep 17 00:00:00 2001 From: q5sys Date: Mon, 1 May 2017 12:39:27 -0400 Subject: link lumina-xdg-entry into desktop-utils.pro --- src-qt5/desktop-utils/desktop-utils.pro | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src-qt5/desktop-utils/desktop-utils.pro b/src-qt5/desktop-utils/desktop-utils.pro index 5fc00a70..2fea1adb 100644 --- a/src-qt5/desktop-utils/desktop-utils.pro +++ b/src-qt5/desktop-utils/desktop-utils.pro @@ -11,5 +11,6 @@ SUBDIRS+= lumina-fm \ lumina-calculator \ lumina-archiver \ lumina-notify \ - lumina-mediaplayer + lumina-mediaplayer \ + lumina-xdg-entry # lumina-terminal -- cgit