##// END OF EJS Templates
New register explorer WIP...
New register explorer WIP !!!!!!!!!!!!!!!!!!!!!!!!!!!!! REMOVED OLD genericPySysdriver interface Now the plugins are directly exposed to python. ABI not compatible with previous plugins. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!

File last commit:

r79:3440ba47d0f1 default
r79:3440ba47d0f1 default
Show More
mainwindow.cpp
240 lines | 9.4 KiB | text/x-c | CppLexer
Jeandet Alexis
First init of SocExplorer Repository.
r0 /*------------------------------------------------------------------------------
-- This file is a part of the SocExplorer Software
Jeandet Alexis
Updated lab name!
r13 -- Copyright (C) 2011, Plasma Physics Laboratory - CNRS
Jeandet Alexis
First init of SocExplorer Repository.
r0 --
-- This program 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 2 of the License, or
-- (at your option) any later version.
--
-- This program 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 this program; if not, write to the Free Software
-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-------------------------------------------------------------------------------*/
/*-- Author : Alexis Jeandet
-- Mail : alexis.jeandet@lpp.polytechnique.fr
----------------------------------------------------------------------------*/
#include "mainwindow.h"
#include <QDockWidget>
Jeandet Alexis
Updated lab name!
r13 SocExplorerMainWindow::SocExplorerMainWindow(QString ScriptToEval, QWidget *parent)
Jeandet Alexis
First init of SocExplorer Repository.
r0 : QMainWindow(parent)
{
QCoreApplication::setApplicationName("SocExplorer");
QCoreApplication::setOrganizationName("LPP");
QCoreApplication::setOrganizationDomain("lpp.fr");
this->makeObjects(ScriptToEval);
this->makeLayout();
this->makeMenu();
this->makeConnections();
Added bool loadfile(abstractBinFile* file)...
r71 this->setWindowIcon(QIcon(":/images/icon.png"));
Jeandet Alexis
First init of SocExplorer Repository.
r0 this->setAcceptDrops(true);
this->pluginManager->setRootLoadable(true);
this->PythonConsoleInst->pyConsoleRunFile(ScriptToEval);
Jeandet Alexis
Sync
r15 QFile file(":/styles/SocExplorer.css");
if(file.open(QIODevice::ReadOnly | QIODevice::Text))
{
qApp->setStyleSheet(file.readAll());
file.close();
}
Jeandet Alexis
First init of SocExplorer Repository.
r0 }
Jeandet Alexis
Updated lab name!
r13 void SocExplorerMainWindow::makeObjects(QString ScriptToEval)
Jeandet Alexis
First init of SocExplorer Repository.
r0 {
Q_UNUSED(ScriptToEval)
Jeandet Alexis
Removed annoying GUI bug with dock widget handling:...
r12 this->p_pluginGUIlist = new QList<QDockWidget*>();
Jeandet Alexis
First init of SocExplorer Repository.
r0 pluginsDockContainer = new QMainWindow;
pluginsDockContainer->setWindowFlags(Qt::Widget);
pluginsDockContainer->setDockNestingEnabled(true);
this->mainWidget = new QSplitter(Qt::Vertical);
this->appTranslator = new QTranslator;
this->Quit = new QAction(tr("&Quit"),this);
this->Quit->setShortcut(tr("CTRL+Q"));
this->ManagePlugins = new QAction(tr("&Manage Plugins"),this);
this->ManagePlugins->setShortcut(tr("CTRL+P"));
this->regsManager = new QAction(tr("&Manage registers"),this);
this->exploreRegs = new QAction(tr("&Explore registers"),this);
this->help = new QAction(tr("&Help"),this);
this->help->setShortcut(tr("CTRL+H"));
this->about = new QAction(tr("&About"),this);
socexplorerproxy::setMainWindow(this);
SocExplorerEngine::setMainWindow(this);
SocExplorerEngine::xmlModel()->scanXmlFiles();
New register explorer WIP...
r79 this->regExplorer = new RegsExplorer();
Jeandet Alexis
First init of SocExplorer Repository.
r0 this->regExplorer->setAllowedAreas(Qt::AllDockWidgetAreas);
Some cleaning.
r10 this->addPluginInterface(this->regExplorer);
Jeandet Alexis
First init of SocExplorer Repository.
r0 this->PythonConsoleInst = new PythonConsole(socexplorerproxy::self());
this->PythonConsoleInst->addObject("SocExplorerEngine",SocExplorerEngine::self());
this->pluginManager = new dockablePluginManager();
this->toolpane = new toolBar;
this->p_about = new aboutsocexplorer();
}
Jeandet Alexis
Updated lab name!
r13 void SocExplorerMainWindow::makeLayout()
Jeandet Alexis
First init of SocExplorer Repository.
r0 {
this->mainWidget->addWidget(pluginsDockContainer);
this->mainWidget->addWidget(this->PythonConsoleInst);
this->toolpane->setAllowedAreas(Qt::RightDockWidgetArea|Qt::LeftDockWidgetArea);
this->addDockWidget(Qt::LeftDockWidgetArea,this->toolpane);
this->toolpane->addTool(this->pluginManager);
this->setCentralWidget(this->mainWidget);
}
Jeandet Alexis
Updated lab name!
r13 void SocExplorerMainWindow::makeConnections()
Jeandet Alexis
First init of SocExplorer Repository.
r0 {
connect(socexplorerproxy::self(),SIGNAL(clearMenu()),this,SLOT(clearMenu()));
connect(this,SIGNAL(translateSig()),socexplorerproxy::self(),SLOT(updateText()));
connect(socexplorerproxy::self(),SIGNAL(addPluginGUI(QDockWidget*)),this,SLOT(addPluginInterface(QDockWidget*)));
Jeandet Alexis
Removed annoying GUI bug with dock widget handling:...
r12 connect(socexplorerproxy::self(),SIGNAL(removePluginGUI(QDockWidget*)),this,SLOT(removePluginInterface(QDockWidget*)));
Jeandet Alexis
First init of SocExplorer Repository.
r0 connect(this->ManagePlugins,SIGNAL(triggered()),this,SLOT(launchPluginManager()));
connect(this->Quit,SIGNAL(triggered()),qApp,SLOT(quit()));
connect(this,SIGNAL(registerObject(QObject*,QString)),this->PythonConsoleInst,SLOT(registerObject(QObject*,QString)));
connect(socexplorerproxy::self(),SIGNAL(registerObject(QObject*,QString)),this,SIGNAL(registerObject(QObject*,QString)));
connect(this->pluginManager,SIGNAL(geteplugintree()),socexplorerproxy::self(),SLOT(geteplugintree()));
connect(socexplorerproxy::self(),SIGNAL(treeChanged(QList<socexplorerplugin*>)),this->pluginManager,SIGNAL(treeChanged(QList<socexplorerplugin*>)));
connect(this->pluginManager,SIGNAL(changeSysDriverInstName(QString,QString)),socexplorerproxy::self(),SLOT(changeSysDriverInstName(QString,QString)));
connect(this->pluginManager,SIGNAL(changeSysDriverInstName(QString,QString)),this->PythonConsoleInst,SLOT(changeSysDriverInstName(QString,QString)));
connect(this->pluginManager,SIGNAL(closeSysDriver(QString)),socexplorerproxy::self(),SLOT(closeSysDriver(QString)));
connect(this->pluginManager,SIGNAL(closeSysDriver(QString)),this->PythonConsoleInst,SLOT(removeDriver(QString)));
Some cleaning.
r10 connect(this->pluginManager,SIGNAL(pluginselected(QString)),this,SLOT(pluginselected(QString)));
Jeandet Alexis
First init of SocExplorer Repository.
r0 connect(this->about,SIGNAL(triggered()),this,SLOT(showAboutBox()));
connect(this->exploreRegs,SIGNAL(triggered()),this->regExplorer,SLOT(show()));
Some cleaning.
r10
Jeandet Alexis
First init of SocExplorer Repository.
r0 this->pluginManager->connect(this->pluginManager,SIGNAL(loadSysDrviver(QString)),socexplorerproxy::self(),SLOT(loadSysDriver(QString)));
this->pluginManager->connect(this->pluginManager,SIGNAL(loadSysDriverToParent(QString,QString)),socexplorerproxy::self(),SLOT(loadSysDriverToParent(QString,QString)));
}
Jeandet Alexis
Updated lab name!
r13 void SocExplorerMainWindow::launchPluginManager()
Jeandet Alexis
First init of SocExplorer Repository.
r0 {
if(this->pluginManager->isHidden())
{
this->pluginManager->setHidden(false);
}
}
Jeandet Alexis
Updated lab name!
r13 void SocExplorerMainWindow::addPluginInterface(QDockWidget *plugin)
Jeandet Alexis
First init of SocExplorer Repository.
r0 {
plugin->setAllowedAreas(Qt::AllDockWidgetAreas);
this->pluginsDockContainer->addDockWidget(Qt::TopDockWidgetArea,plugin);
Jeandet Alexis
Removed annoying GUI bug with dock widget handling:...
r12 if(p_pluginGUIlist->count()!=0)
this->pluginsDockContainer->tabifyDockWidget(p_pluginGUIlist->last(),plugin);
p_pluginGUIlist->append(plugin);
Jeandet Alexis
First init of SocExplorer Repository.
r0 }
Jeandet Alexis
Updated lab name!
r13 void SocExplorerMainWindow::removePluginInterface(QDockWidget *plugin)
Jeandet Alexis
Removed annoying GUI bug with dock widget handling:...
r12 {
p_pluginGUIlist->removeOne(plugin);
this->pluginsDockContainer->removeDockWidget(plugin);
}
Jeandet Alexis
First init of SocExplorer Repository.
r0
Jeandet Alexis
Updated lab name!
r13 void SocExplorerMainWindow::clearMenu()
Jeandet Alexis
First init of SocExplorer Repository.
r0 {
this->menuBar()->clear();
this->makeMenu();
}
Jeandet Alexis
Updated lab name!
r13 void SocExplorerMainWindow::makeMenu()
Jeandet Alexis
First init of SocExplorer Repository.
r0 {
this->FileMenu = menuBar()->addMenu(tr("&File"));
this->PluginsMenu = menuBar()->addMenu(tr("&Plugins"));
this->ToolsMenu = menuBar()->addMenu(tr("&Tools"));
this->ToolsMenu->addAction(this->exploreRegs);
this->FileMenu->addAction(this->Quit);
socexplorerproxy::self()->makeMenu(this->PluginsMenu);
this->PluginsMenu->addAction(this->ManagePlugins);
this->helpMenu = menuBar()->addMenu(tr("Help"));
this->helpMenu->addAction(this->help);
this->helpMenu->addAction(this->about);
}
Jeandet Alexis
Updated lab name!
r13 SocExplorerMainWindow::~SocExplorerMainWindow()
Jeandet Alexis
First init of SocExplorer Repository.
r0 {
}
Jeandet Alexis
Updated lab name!
r13 void SocExplorerMainWindow::setLangage(QAction *action)
Jeandet Alexis
First init of SocExplorer Repository.
r0 {
QString local = action->data().toString();
QString qmPath = QDir(QString("translations")).absolutePath();
appTranslator->load(qmPath+"/socexplorer_"+local+".qm");
qApp->installTranslator(appTranslator);
emit this->translateSig();
}
Jeandet Alexis
Updated lab name!
r13 void SocExplorerMainWindow::createLangMenu()
Jeandet Alexis
First init of SocExplorer Repository.
r0 {
this->langMenu = menuBar()->addMenu(tr("&Langue"));
this->langActionGrp = new QActionGroup(this);
connect(this->langActionGrp,SIGNAL(triggered(QAction*)),this,SLOT(setLangage(QAction*)));
QDir* qmDir = new QDir(QString("translations"));
QStringList LangFiles = qmDir->entryList(QStringList("socexplorer_*.qm"));
for(int i=0;i<LangFiles.size();++i)
{
QString Local = LangFiles[i];
Local.remove(0,Local.indexOf('_')+1);
Local.chop(3);
QTranslator translator;
translator.load(LangFiles[i],qmDir->absolutePath());
QString langage = translator.translate("MainWindow","English");
QAction *action = new QAction(tr("&%1 %2").arg(i+1).arg(langage),this);
action->setCheckable(true);
action->setData(Local);
langMenu->addAction(action);
langActionGrp->addAction(action);
if(langage==tr("English"))
action->setChecked(true);
}
}
Jeandet Alexis
Updated lab name!
r13 void SocExplorerMainWindow::updateText()
Jeandet Alexis
First init of SocExplorer Repository.
r0 {
emit this->translateSig();
}
Jeandet Alexis
Updated lab name!
r13 void SocExplorerMainWindow::showAboutBox()
Jeandet Alexis
First init of SocExplorer Repository.
r0 {
p_about->show();
}
Jeandet Alexis
Updated lab name!
r13 void SocExplorerMainWindow::pluginselected(const QString &instanceName)
Some cleaning.
r10 {
socexplorerplugin* drv=socexplorerproxy::self()->getSysDriver(instanceName);
Jeandet Alexis
Added widget focus on selection in the tree list.
r11 if(drv)
drv->raise();
Some cleaning.
r10 }
Jeandet Alexis
First init of SocExplorer Repository.
r0
Jeandet Alexis
Updated lab name!
r13 void SocExplorerMainWindow::closeEvent(QCloseEvent *event)
Jeandet Alexis
First init of SocExplorer Repository.
r0 {
socexplorerproxy::self()->close();
qApp->closeAllWindows();
event->accept();
}