From 715ec50f3c909082074b28383881a577d63e5988 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Mikko=20Kein=C3=A4nen?= Date: Tue, 5 Oct 2010 23:54:42 +0300 Subject: [PATCH] Implemented Executable editor (for configurating emulators). --- doc/uml-dialogs.dia | Bin 2602 -> 2926 bytes src/db/dbexecutable.cpp | 9 +++ src/db/dbexecutable.h | 4 +- src/dialogs/executableeditdialog.cpp | 146 ++++++++++++++++++++++++++++++++++ src/dialogs/executableeditdialog.h | 56 +++++++++++++ src/dialogs/executablemaindialog.cpp | 59 ++++++++++++++ src/dialogs/executablemaindialog.h | 40 ++++++++++ src/dialogs/setupeditdialog.cpp | 3 +- src/dialogs/setupeditdialog.h | 4 +- src/emufront.pro | 8 +- src/mainwindow.cpp | 16 ++++ src/mainwindow.h | 4 + www/index.html | 2 +- 13 files changed, 344 insertions(+), 7 deletions(-) create mode 100644 src/dialogs/executableeditdialog.cpp create mode 100644 src/dialogs/executableeditdialog.h create mode 100644 src/dialogs/executablemaindialog.cpp create mode 100644 src/dialogs/executablemaindialog.h diff --git a/doc/uml-dialogs.dia b/doc/uml-dialogs.dia index 924938fa30f5d5eedb05d55de9c5d7ae1e0df662..da7d0ff5a7ff3cfbb27d194fe24939820eb6cd13 100644 GIT binary patch literal 2926 zcmZ|Pc{~%09|!PUkGT>(&Ky1N`$&|rjf7Z?2b=L=j#*K1G?`=09#1*us1e3f5;E6N zxw7(Pj)<@vbEM2MA#;^Bzka`ee*Zka@BhB9*XN(l>-+jDX8?}}1A&?=)LW5+RRyK%0-{++0dx1H+9}EJPeZr|(UMs_dVhn6A?5`9}^@SuS$l@Ae( z2Ig-mYVWUBczw=T4kvxPq{%!HDo^az3R`&88@+vKr^zGDl5OYW|`g9eEufd*xA!FPGR}w{iJGXgM<SygV%seCx!0kjTYmHGX+KMk8CX~z<0o`w^uo;_x4Q*SUeobzUc zvAzvu7bFsN+Z1hz9{hTy^<^J@DdE6t!w&Z8^ZHZB;QMRfQPq>dgBcd5q8{W_hb&ZH z%cZ&E3%MNAk2y;GuN-A&4^5#xW$6w-%4}dvB$46N6d!$xaC~(nB)tS^La~0ziMoYg zPQAS$-WjtWg3rn`bd@07T#=*QSe{?!FK++DEMClP!64{y3u76Yn0G^k`FSXGKt9df zt_;>1O#zo(<4~uo2eM;JZmI8W9}D~FSYKM7Hk+IpFREf#%pRsStVGh(Lx9km5?Cn{ z#&bx06hWsFqSuG1a{%Y7xvZuLJ^FEcG+x(6R}O4s{^GHQ2<9$-$3W0rLim^W33A_8 z`xt)@SZ!xo}-C_cr!VS zZ)FF0F=qj5UDMi&)&4M_VJY%xyLfd*39a?{kp7F zgIkG2eaOHw{4QSNgJU`)nH*kPX!BYpcm*pIRC`$<2n0R>7D^HB{gcFt+fkveqrIJS3it(hgw(E4Q<30LB(@s0W)kfmfEqALoiu}nr{`u8k zvqW!q6;wy4Cg~-udGkeM^A4UrGD5WLT*t!)iAFV0$Vb!wHCz*TUuCx3sH-9(0zcG36 z%{%$-Ff1zds@03RD_8!IYBp_B;!hSxPH5qWpVzzN@eYPcSdtgW1Z3FRn7Bpb%2V{k zJo`3zmM%ut8Srb8r{x8PQbSWwS;9LZrb2#FIh@Czesz&P!tQ4mvv7@Ld$-!B?*QXY<;xa00tl47h;eUD zIthb2q9=L#{#wF4y4*L1n&cgMu{I7&ms@H!Yxd>;nYLX?acakrP!@(7*+!-X9s=+5T&OOvIr0P-EGW;}I z6c-{1_NqyNEysB}fy^%|%k#bzTi4iN#LcF2pwg z`QK{nUlZ+!AawX0S_0RvKi zsfbqIy~Y-vMji>S#QO~ynt!9EwBEnlMK?^$#}jFe-X!WL!a$(Sh3+$kd$aQk6FvP6 zbW=*p14698e50pyyFhO#%Km2&6$Q;p&78!{<$JU#ft?CrWi5xt^NT4S_1;P>U~@Dp z0MrEs!Ar~u9E7`Gure)zM^@wragnkEE8mDY9+|@pI(VH~ln|2cDMts|!_|YP<-81e z`*`~vrLAeG#HHwWzF-r5nPZqm=L8?RHUO|g2J8q1a|5-;TE!|zSlp! zWGxg3SvfC|c@z*RbCFi{yOr&xsE4qu>Qfyzlq*@^?eEOG!Txt`*Vf>IVdq+;07V(E z0(t(Va1?6OLc{JqZ99 zRw!^r@I#%uwd`hPG43`dI}n1;u*|AsE>Zr00;$Y4{+@GVlu2SVJ^hD^asa_FX%gW>O|sbd>H&gn``k;6L4b@Q`G3G5 Q9S4xoaW_Aj5zn#z0D&rx9smFU literal 2602 zcmZ|Pc{~%09|v%f(&LCZ(o-SF`o-LoBNXD%$e8=AWpj)<=ExPLM_6UpC^C64$};A@ zd)&8X8FLm7VsZjfuE>1rUwKh$CfYv}(adVrN;EMQ~xNuTrYF zpx;tT(>Y#Kl^L~;e0AT!Z9Y^W>swmu@GCbv*Imj|YKHBF{1J>+H$ccEOWri_GD}*% z0?|F>Prh~q10ldd5Z(@f!XAzdo`*N3&9lTIw;Jol1R8@1%~U=#2Pgn^O=@|8jAfRy z>59Bb^Qza@xD>xhZnNL7J2<`ZwVgrreO6(b>1t;+lEB~YrR#rQc%(X-y*Az&e9?SA zc+lGp&rlsAiCkLVWYxJqJ4Gx%O_I=}xivd!LAzwwTf|?}3I-EuV_R)nyeP@ngk2el zgF#8pg4~#>L(5g8)lNvh_mS!z_JgTP?Q)FjM>nTx@M~GFZ}C}T>q{;$oC>=|I=vCK zkN7cK@KD3a9^18t@%o*Wd=K~f>Sn^<`T8%`LYMZx^vb}PCc5xEiNm1>hkq&e_;4IS1 zMswXKuPE1ymDIEONqulq4n}R%tQ8BCQ66NjoBKYe+6q>_44utzt4lvu7ITF~4OUOm zN2s}2ngWS5pQ!_q#-+6vRJz%o( zdem;%<@-%9TfUL2E^JB*tS$sn-f+*_sXOIh=^h>OX0}I@26&sU-Kxy?rM$iN^Zo}Q zam<8zW)6h8STkOjw~(a+{%b3r4aUTl=Kpl#}YA3X<))~*~D_9wfs zNDJZiO9aAaewRfXrs$xz_dkyS+C^j|NgDBQg7eoXp`^Z5dC$k<2A_hG|04R^{{x+r z&T(q1{K@MB$O?0qSI{)cjpx58liog;V&OuEmy!Kl%7dn>m>d306 zutIUb&h*T9>+*#^`ajBtjir;(2Eqq=yiUNUpwTe~-lLp3;rPj=#u?XhIfZ`io~L%7 zwlO3krD_|7@&x(sWQ9o^I1N-QUjNvH_}XBiIWL>;_^z#2Zv?^a@x*5<>4Gio&7#8O zm&6B<`8Q^@l01ANx#6uc=gC_L=}eqigxEswn}}rc$6H>dM~xLx%9DFjFYdY^g@?{k zh@lUD@hHA2pvhrveSVW-mgX)BVdihqnYhlSar*Plp3&~2K$Bjwev-L}@h_Sz2cG)` zdiwZELUNBz_Ti5n>AqZ|wYr8PY^XujKvG>uV~P*f`%`0+*vflI$%eu4Pn_v ze~|VzWa&@hA1sgl;#SuImRY~DDtc%HZ71_~)SW3CBWj*5BhXiU-MOL;mV5Ku7hp?A zN|cM=6i&dTelN~*Ud<4aIX-kH0@;lMFk&Rt6Euy$b2ae_uxEN&-$=qkE4>ycpqfhcnFYWjA8V6_*3X;%wq z1E-Heohl`2%rjPAGV7Yw=`A zDzuO{45MbZ*j95F3oZ;`AD`y#XNS+D<$sphaCK~CyeK0a*Rvr|(s#82D$W!_UGN#j z*0z=Y^At=%d6TOAEWAkIBKr?5{b;Fj_qpz~QoJXK43+}FqRCPEWZkUr&Ds)3L2_t+ zagYV{`l7*c8OL=f%F-jl0pQA=Wi>sRNb}T!>t7B9L@)Etj4zbLlo;|OKps@A*xyB1 ztT+OjGfZ%8?jDJK`1AzH$qyOb!Pit0@7gz>1DWvID<HCy^N*Kn?k(~Ep z6+tj3RM|CqqdUa9l?eaTE+5x-w<-SbEjaaBejSH6QtFjP)h1N*>T}llfQM`)iyI)Ik^2k9xG#Uq1xkmNR z24mnM7RV}_^vM0|c)jiHhC`-jZ+oE`mb3fR2_&v`tIcXSca7n+s+jYddzX+`!ARX! z`A+d6)mPm3vrl19VN}D=ONn|dc5dd83d-S&w5S(NN|9nUZ2>qy-1!eOackV@?X@3n zzZE0xgn5`HXli+EY0h0i&X!XrkdSPl(7YXP!>LQYRSHsetQuery(select); + return model; +} + diff --git a/src/db/dbexecutable.h b/src/db/dbexecutable.h index dac954c..8abde64 100644 --- a/src/db/dbexecutable.h +++ b/src/db/dbexecutable.h @@ -38,7 +38,8 @@ public: Executable_Executable, Executable_Options, Executable_TypeId, - Executable_SetupId + Executable_SetupId, + Executable_SetupName }; protected: virtual EmuFrontObject* recordToDataObject(const QSqlRecord*); @@ -47,6 +48,7 @@ protected: virtual QString constructSelect(QString whereClause = "") const; virtual bool deleteDataObject(int id) const; private: + virtual QSqlQueryModel* getData(); DbSetup *dbSetup; }; diff --git a/src/dialogs/executableeditdialog.cpp b/src/dialogs/executableeditdialog.cpp new file mode 100644 index 0000000..9b15a02 --- /dev/null +++ b/src/dialogs/executableeditdialog.cpp @@ -0,0 +1,146 @@ +// EmuFront +// Copyright 2010 Mikko Keinänen +// +// This file is part of EmuFront. +// +// +// EmuFront 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. +// +// EmuFront 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 EmuFront. If not, see . + +#include +#include "executableeditdialog.h" +#include "../db/dbexecutable.h" +#include "../db/dbsetup.h" +#include "../dataobjects/executable.h" +#include "../dataobjects/setup.h" +#include "../widgets/setupcombobox.h" +#include "../exceptions/emufrontexception.h" + +ExecutableEditDialog::ExecutableEditDialog(QWidget *parent, EmuFrontObject *obj) + : DataObjectEditDialog(parent, obj) +{ + dbExecutable = 0; + dbSetup = new DbSetup(this); + initWidgets(); + connectSignals(); + layout(); +} + +void ExecutableEditDialog::initWidgets() +{ + setupComBox = new SetupComboBox(dbSetup, this); + nameEdit = new QLineEdit; + nameEdit->setToolTip(tr("Set an individual short " + "description for this emulator configuration.")); + execEdit = new QLineEdit; + execEdit->setToolTip(tr("Emulator executable in $PATH " + "or absolute path to emulator executable.")); + optEdit = new QLineEdit; + optEdit->setToolTip(tr("Command line parameters for the " + "emulator executable including $1 as file 1 to be " + "assigned to emulator, $2 as file 2, etc.")); +} + +void ExecutableEditDialog::layout() +{ + QLabel *nameLabel = new QLabel(tr("&Description")); + nameLabel->setBuddy(nameEdit); + QLabel *execLabel = new QLabel(tr("&Executable")); + execLabel->setBuddy(execEdit); + QLabel *optLabel = new QLabel(tr("&Parameters")); + optLabel->setBuddy(optEdit); + QLabel *setupLabel = new QLabel(tr("&Setup")); + setupLabel->setBuddy(setupComBox); + QGridLayout *gridLayout = new QGridLayout; + gridLayout->addWidget(nameLabel, 0, 0); + gridLayout->addWidget(nameEdit, 0, 1); + gridLayout->addWidget(execLabel, 1, 0); + gridLayout->addWidget(execEdit, 1, 1); + gridLayout->addWidget(optLabel, 2, 0); + gridLayout->addWidget(optEdit, 2, 1); + gridLayout->addWidget(setupLabel, 3, 0); + gridLayout->addWidget(setupComBox, 3, 1); + QVBoxLayout *mainLayout = new QVBoxLayout; + mainLayout->addLayout(gridLayout); + mainLayout->addWidget(buttonBox); + setLayout(mainLayout); + setWindowTitle(tr("Edit emulator configuration")); +} + +void ExecutableEditDialog::acceptChanges() +{ + Executable *ex = dynamic_cast(efObject); + try { + Setup *su = getSelectedSetup(); + if (!su) { + throw new EmuFrontException(tr("Setup not selected")); + } + QString name = nameEdit->text().trimmed(); + if (name.isEmpty()){ + throw new EmuFrontException(tr("Name is not set")); + } + QString exec = execEdit->text().trimmed(); + if (exec.isEmpty()){ + throw new EmuFrontException(tr("Executable is not set")); + } + QString opts = optEdit->text().trimmed(); + if (opts.isEmpty()) { + throw new EmuFrontException(tr("Options not set")); + } + Setup *supTmp = ex->getSetup(); + if (supTmp != su) { + delete supTmp; + ex->setSetup(su); + } + ex->setName(name); + ex->setExecutable(exec); + ex->setOptions(opts); + emit dataObjectUpdated(); + efObject = 0; + close(); + } catch(EmuFrontException x) { + QMessageBox::information(this, + tr("Updating emulator"), + x.what(), QMessageBox::Ok); + return; + } +} + +void ExecutableEditDialog::setDataObject(EmuFrontObject *ob) +{ + if (!ob) return; + efObject = ob; + Executable *ex = dynamic_cast(ob); + if (ex->getSetup()) setSelectedSetup(ex->getSetup()); + nameEdit->setText(ex->getName()); + execEdit->setText(ex->getExecutable()); + optEdit->setText(ex->getOptions()); +} + +void ExecutableEditDialog::setSelectedSetup(const Setup *su) +{ + setupComBox->setSelected(su); +} + +Setup* ExecutableEditDialog::getSelectedSetup() const +{ + EmuFrontObject *o = setupComBox->getSelected(); + if (!o) return 0; + Setup *ex = dynamic_cast(o); + return ex; +} + +void ExecutableEditDialog::updateData() +{ + setupComBox->updateDataModel(); +} diff --git a/src/dialogs/executableeditdialog.h b/src/dialogs/executableeditdialog.h new file mode 100644 index 0000000..5987861 --- /dev/null +++ b/src/dialogs/executableeditdialog.h @@ -0,0 +1,56 @@ +// EmuFront +// Copyright 2010 Mikko Keinänen +// +// This file is part of EmuFront. +// +// +// EmuFront 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. +// +// EmuFront 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 EmuFront. If not, see . + +#ifndef EXECUTABLEEDITDIALOG_H +#define EXECUTABLEEDITDIALOG_H + +#include "dataobjecteditdialog.h" + +class DbExecutable; +class DbSetup; +class Setup; +class SetupComboBox; +class QLineEdit; + +class ExecutableEditDialog : public DataObjectEditDialog +{ + Q_OBJECT +public: + ExecutableEditDialog(QWidget *parent, EmuFrontObject*); + virtual void setDataObject(EmuFrontObject *); + virtual void updateData(); + +protected slots: + virtual void acceptChanges(); + +private: + DbExecutable *dbExecutable; + DbSetup *dbSetup; + SetupComboBox *setupComBox; + void initWidgets(); + void layout(); + void setSelectedSetup(const Setup*); + Setup* getSelectedSetup() const; + QLineEdit *nameEdit; + QLineEdit *execEdit; + QLineEdit *optEdit; + +}; + +#endif // EXECUTABLEEDITDIALOG_H diff --git a/src/dialogs/executablemaindialog.cpp b/src/dialogs/executablemaindialog.cpp new file mode 100644 index 0000000..877a338 --- /dev/null +++ b/src/dialogs/executablemaindialog.cpp @@ -0,0 +1,59 @@ +// EmuFront +// Copyright 2010 Mikko Keinänen +// +// This file is part of EmuFront. +// +// +// EmuFront 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. +// +// EmuFront 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 EmuFront. If not, see . + +#include +#include "executablemaindialog.h" +#include "executableeditdialog.h" +#include "../db/dbexecutable.h" +#include "../dataobjects/executable.h" + +ExecutableMainDialog::ExecutableMainDialog(QWidget *parent) + : DbObjectDialog(parent) +{ + setWindowTitle(tr("Emulators")); + dbManager = new DbExecutable(this); + initDataTable(); + initEditDialog(); + objectList->hideColumn(DbExecutable::Executable_Id); + objectList->hideColumn(DbExecutable::Executable_TypeId); + objectList->hideColumn(DbExecutable::Executable_SetupId); + connectSignals(); +} + +ExecutableMainDialog::~ExecutableMainDialog() +{ + deleteCurrentObject(); +} + +void ExecutableMainDialog::initEditDialog() +{ + nameDialog = new ExecutableEditDialog( + this, dynamic_cast(dbObject)); +} + +void ExecutableMainDialog::deleteCurrentObject() +{ + delete dynamic_cast(dbObject); + dbObject = 0; +} + +EmuFrontObject* ExecutableMainDialog::createObject() +{ + return new Executable; +} diff --git a/src/dialogs/executablemaindialog.h b/src/dialogs/executablemaindialog.h new file mode 100644 index 0000000..55dfb03 --- /dev/null +++ b/src/dialogs/executablemaindialog.h @@ -0,0 +1,40 @@ +// EmuFront +// Copyright 2010 Mikko Keinänen +// +// This file is part of EmuFront. +// +// +// EmuFront 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. +// +// EmuFront 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 EmuFront. If not, see . + +#ifndef EXECUTABLEMAINDIALOG_H +#define EXECUTABLEMAINDIALOG_H + +#include "dbobjectdialog.h" + +class ExecutableMainDialog : public DbObjectDialog +{ + Q_OBJECT + +public: + ExecutableMainDialog(QWidget *parent); + ~ExecutableMainDialog(); + +protected: + virtual void deleteCurrentObject(); + virtual EmuFrontObject* createObject(); + virtual void initEditDialog(); + +}; + +#endif // EXECUTABLEMAINDIALOG_H diff --git a/src/dialogs/setupeditdialog.cpp b/src/dialogs/setupeditdialog.cpp index e12ad85..1fa8017 100644 --- a/src/dialogs/setupeditdialog.cpp +++ b/src/dialogs/setupeditdialog.cpp @@ -74,7 +74,8 @@ void SetupEditDialog::acceptChanges() Platform *plf = getSelectedPlatform(); if (!plf) { - QMessageBox::information(this, tr("Platform"), tr("Platform not selected"), QMessageBox::Ok); + QMessageBox::information(this, tr("Platform"), + tr("Platform not selected"), QMessageBox::Ok); return; } qDebug() << "Platform selected " << plf->getName(); diff --git a/src/dialogs/setupeditdialog.h b/src/dialogs/setupeditdialog.h index eb21559..fa86ce1 100644 --- a/src/dialogs/setupeditdialog.h +++ b/src/dialogs/setupeditdialog.h @@ -56,8 +56,8 @@ private: void initWidgets(); void layout(); - void populateMediaTypeComBox(); - void populatePlatformComBox(); + //void populateMediaTypeComBox(); + //void populatePlatformComBox(); void setSelectedMediaType(const MediaType*); void setSelectedPlatform(const Platform*); MediaType* getSelectedMediaType() const; diff --git a/src/emufront.pro b/src/emufront.pro index 9c48fca..477f0f7 100644 --- a/src/emufront.pro +++ b/src/emufront.pro @@ -58,7 +58,9 @@ HEADERS += mainwindow.h \ widgets/effileobjectcombobox.h \ widgets/setupcombobox.h \ dataobjects/executable.h \ - db/dbexecutable.h + db/dbexecutable.h \ + dialogs/executablemaindialog.h \ + dialogs/executableeditdialog.h SOURCES += main.cpp \ mainwindow.cpp \ db/databasemanager.cpp \ @@ -104,5 +106,7 @@ SOURCES += main.cpp \ widgets/effileobjectcombobox.cpp \ widgets/setupcombobox.cpp \ dataobjects/executable.cpp \ - db/dbexecutable.cpp + db/dbexecutable.cpp \ + dialogs/executablemaindialog.cpp \ + dialogs/executableeditdialog.cpp OTHER_FILES += diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index bfb1efa..f1f149c 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -24,6 +24,7 @@ #include "dialogs/mediatypedialog.h" #include "dialogs/mediaimagepathmaindialog.h" #include "dialogs/setupmaindialog.h" +#include "dialogs/executablemaindialog.h" #include "db/databasemanager.h" MainWindow::MainWindow() @@ -39,6 +40,7 @@ MainWindow::MainWindow() mediaTypeDialog = 0; mediaImagePathDialog = 0; setupMainDialog = 0; + executableMainDialog = 0; } void MainWindow::createActions() @@ -61,6 +63,10 @@ void MainWindow::createActions() configSetupAction->setStatusTip(tr("Configure set ups")); connect(configSetupAction, SIGNAL(triggered()), this, SLOT(configureSetups())); + configEmulatorAction = new QAction(tr("Em&ulators"), this); + configEmulatorAction->setStatusTip(tr("Configure emulators")); + connect(configEmulatorAction, SIGNAL(triggered()), this, SLOT(configureEmulators())); + exitAction = new QAction(tr("&Exit"), this); exitAction->setShortcut(tr("Ctrl+Q")); exitAction->setStatusTip(tr("Exit EmuFront")); @@ -105,6 +111,15 @@ void MainWindow::configureSetups() setupMainDialog->refreshDataModel(); } +void MainWindow::configureEmulators() +{ + if (!executableMainDialog) { + executableMainDialog = new ExecutableMainDialog(this); + } + activateDialog(executableMainDialog); + executableMainDialog->refreshDataModel(); +} + void MainWindow::activateDialog(EmuFrontDialog* dia) const { dia->show(); @@ -122,6 +137,7 @@ void MainWindow::createMenus() configMenu->addAction(configMediaTypeAction); configMenu->addAction(configMediaImagePathAction); configMenu->addAction(configSetupAction); + configMenu->addAction(configEmulatorAction); } void MainWindow::createStatusBar() diff --git a/src/mainwindow.h b/src/mainwindow.h index 326395a..5c98993 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -27,6 +27,7 @@ class PlatformDialog; class MediaTypeDialog; class MediaImagePathMainDialog; class SetupMainDialog; +class ExecutableMainDialog; class QLabel; class DatabaseManager; class EmuFrontDialog; @@ -48,6 +49,7 @@ private slots: void configureMediaTypes(); void configureMediaImagePaths(); void configureSetups(); + void configureEmulators(); private: void createActions(); @@ -61,12 +63,14 @@ private: MediaTypeDialog *mediaTypeDialog; MediaImagePathMainDialog *mediaImagePathDialog; SetupMainDialog *setupMainDialog; + ExecutableMainDialog *executableMainDialog; QMenu *configMenu; QMenu *fileMenu; QAction *configPlatformAction; QAction *configMediaTypeAction; QAction *configMediaImagePathAction; QAction *configSetupAction; + QAction *configEmulatorAction; QAction *exitAction; QLabel *messageLabel; DatabaseManager *dbManager; diff --git a/www/index.html b/www/index.html index be200b0..e0ef0d1 100644 --- a/www/index.html +++ b/www/index.html @@ -10,7 +10,7 @@

Welcome to EmuFront!

EmuFront is an universal (multi-system) emulator front-end implemented in - QT, C++ and SQLite. The main target are Maemo and MeeGo + QT, C++ and SQLite. The main targets are Maemo and MeeGo platforms.

EmuFront is Open Source Software licenced under GPL version 2.

-- 1.7.9.5