* ./hurricane/src/viewer:
- New: Specific support for Stratus scripts. In a perfect world, this should be added in the stratus tool, but it would be much more complicated.
This commit is contained in:
parent
88ea3785eb
commit
c2f3a393f1
|
@ -35,6 +35,7 @@
|
||||||
hurricane/viewer/DisplayFilterWidget.h
|
hurricane/viewer/DisplayFilterWidget.h
|
||||||
hurricane/viewer/ControllerWidget.h
|
hurricane/viewer/ControllerWidget.h
|
||||||
hurricane/viewer/ScriptWidget.h
|
hurricane/viewer/ScriptWidget.h
|
||||||
|
hurricane/viewer/StratusWidget.h
|
||||||
)
|
)
|
||||||
set ( includes hurricane/viewer/ScreenUtilities.h
|
set ( includes hurricane/viewer/ScreenUtilities.h
|
||||||
hurricane/viewer/DisplayStyle.h
|
hurricane/viewer/DisplayStyle.h
|
||||||
|
@ -94,6 +95,7 @@
|
||||||
DisplayFilterWidget.cpp
|
DisplayFilterWidget.cpp
|
||||||
ControllerWidget.cpp
|
ControllerWidget.cpp
|
||||||
ScriptWidget.cpp
|
ScriptWidget.cpp
|
||||||
|
StratusWidget.cpp
|
||||||
)
|
)
|
||||||
set ( pycpps PyViewer.cpp
|
set ( pycpps PyViewer.cpp
|
||||||
PyCellViewer.cpp
|
PyCellViewer.cpp
|
||||||
|
|
|
@ -45,6 +45,7 @@
|
||||||
#include "hurricane/viewer/MousePositionWidget.h"
|
#include "hurricane/viewer/MousePositionWidget.h"
|
||||||
#include "hurricane/viewer/ControllerWidget.h"
|
#include "hurricane/viewer/ControllerWidget.h"
|
||||||
#include "hurricane/viewer/ScriptWidget.h"
|
#include "hurricane/viewer/ScriptWidget.h"
|
||||||
|
#include "hurricane/viewer/StratusWidget.h"
|
||||||
#include "hurricane/viewer/GotoWidget.h"
|
#include "hurricane/viewer/GotoWidget.h"
|
||||||
|
|
||||||
|
|
||||||
|
@ -71,6 +72,7 @@ namespace Hurricane {
|
||||||
, _clearRulersAction (NULL)
|
, _clearRulersAction (NULL)
|
||||||
, _controllerAction (NULL)
|
, _controllerAction (NULL)
|
||||||
, _scriptAction (NULL)
|
, _scriptAction (NULL)
|
||||||
|
, _stratusAction (NULL)
|
||||||
, _fileMenu (NULL)
|
, _fileMenu (NULL)
|
||||||
, _viewMenu (NULL)
|
, _viewMenu (NULL)
|
||||||
, _toolsMenu (NULL)
|
, _toolsMenu (NULL)
|
||||||
|
@ -218,6 +220,11 @@ namespace Hurricane {
|
||||||
_scriptAction->setStatusTip ( tr("Run Python Script") );
|
_scriptAction->setStatusTip ( tr("Run Python Script") );
|
||||||
_scriptAction->setIcon ( QIcon(":/images/python-logo-v3.png") );
|
_scriptAction->setIcon ( QIcon(":/images/python-logo-v3.png") );
|
||||||
//_scriptAction->setShortcut ( QKeySequence(tr("CTRL+I")) );
|
//_scriptAction->setShortcut ( QKeySequence(tr("CTRL+I")) );
|
||||||
|
|
||||||
|
_stratusAction = new QAction ( tr("Stratus"), this );
|
||||||
|
_stratusAction->setObjectName ( "viewer.menuBar.tools.stratusScript" );
|
||||||
|
_stratusAction->setStatusTip ( tr("Run Stratus Script") );
|
||||||
|
_stratusAction->setIcon ( QIcon(":/images/stratus-cloud.png") );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -261,6 +268,7 @@ namespace Hurricane {
|
||||||
_toolsMenu->setObjectName ( "viewer.menuBar.tools" );
|
_toolsMenu->setObjectName ( "viewer.menuBar.tools" );
|
||||||
_toolsMenu->addAction ( _controllerAction );
|
_toolsMenu->addAction ( _controllerAction );
|
||||||
_toolsMenu->addAction ( _scriptAction );
|
_toolsMenu->addAction ( _scriptAction );
|
||||||
|
_toolsMenu->addAction ( _stratusAction );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -319,6 +327,7 @@ namespace Hurricane {
|
||||||
connect ( _clearRulersAction , SIGNAL(triggered()) , _cellWidget, SLOT(clearRulers()) );
|
connect ( _clearRulersAction , SIGNAL(triggered()) , _cellWidget, SLOT(clearRulers()) );
|
||||||
connect ( _controllerAction , SIGNAL(triggered()) , _controller, SLOT(toggleShow()) );
|
connect ( _controllerAction , SIGNAL(triggered()) , _controller, SLOT(toggleShow()) );
|
||||||
connect ( _scriptAction , SIGNAL(triggered()) , this , SLOT(runScript()) );
|
connect ( _scriptAction , SIGNAL(triggered()) , this , SLOT(runScript()) );
|
||||||
|
connect ( _stratusAction , SIGNAL(triggered()) , this , SLOT(runStratusScript()) );
|
||||||
connect ( _gotoAction , SIGNAL(triggered()) , this , SLOT(doGoto()) );
|
connect ( _gotoAction , SIGNAL(triggered()) , this , SLOT(doGoto()) );
|
||||||
|
|
||||||
connect ( _cellWidget , SIGNAL(dbuModeChanged(unsigned int,DbU::UnitPower))
|
connect ( _cellWidget , SIGNAL(dbuModeChanged(unsigned int,DbU::UnitPower))
|
||||||
|
@ -558,9 +567,11 @@ namespace Hurricane {
|
||||||
|
|
||||||
|
|
||||||
void CellViewer::runScript ()
|
void CellViewer::runScript ()
|
||||||
{
|
{ ScriptWidget::runScript ( this, getCell() ); }
|
||||||
ScriptWidget::runScript ( this, getCell() );
|
|
||||||
}
|
|
||||||
|
void CellViewer::runStratusScript ()
|
||||||
|
{ StratusWidget::runScript ( this ); }
|
||||||
|
|
||||||
|
|
||||||
} // End of Hurricane namespace.
|
} // End of Hurricane namespace.
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
<file>images/gtk-go-forward-ltr.png</file>
|
<file>images/gtk-go-forward-ltr.png</file>
|
||||||
<file>images/swiss-knife.png</file>
|
<file>images/swiss-knife.png</file>
|
||||||
<file>images/python-logo-v3.png</file>
|
<file>images/python-logo-v3.png</file>
|
||||||
|
<file>images/stratus-cloud.png</file>
|
||||||
<file>images/gnome-gmush.png</file>
|
<file>images/gnome-gmush.png</file>
|
||||||
<file>images/gnome-core.png</file>
|
<file>images/gnome-core.png</file>
|
||||||
<file>images/i-core.png</file>
|
<file>images/i-core.png</file>
|
||||||
|
|
|
@ -119,7 +119,7 @@ namespace Isobar {
|
||||||
{ _cellViewer = viewer; }
|
{ _cellViewer = viewer; }
|
||||||
|
|
||||||
|
|
||||||
bool Script::runFunction ( const std::string& function, Cell* cell )
|
bool Script::runFunction ( const std::string& function, Cell* cell, unsigned int flags )
|
||||||
{
|
{
|
||||||
bool returnCode = true;
|
bool returnCode = true;
|
||||||
|
|
||||||
|
@ -148,7 +148,7 @@ namespace Isobar {
|
||||||
if ( cell != NULL ) PyTuple_SetItem ( _pyArgs, 0, (PyObject*)PyCell_Link(cell) );
|
if ( cell != NULL ) PyTuple_SetItem ( _pyArgs, 0, (PyObject*)PyCell_Link(cell) );
|
||||||
else PyTuple_SetItem ( _pyArgs, 0, Py_None );
|
else PyTuple_SetItem ( _pyArgs, 0, Py_None );
|
||||||
|
|
||||||
_pyResult = PyEval_CallObject ( _pyFunction, _pyArgs );
|
_pyResult = PyEval_CallObject ( _pyFunction, (flags&NoScriptArgs) ? NULL : _pyArgs );
|
||||||
|
|
||||||
if ( _pyResult == NULL ) {
|
if ( _pyResult == NULL ) {
|
||||||
cerr << "Something has gone slightly wrong" << endl;
|
cerr << "Something has gone slightly wrong" << endl;
|
||||||
|
|
|
@ -0,0 +1,141 @@
|
||||||
|
|
||||||
|
// -*- C++ -*-
|
||||||
|
//
|
||||||
|
// This file is part of the Coriolis Software.
|
||||||
|
// Copyright (c) UPMC/LIP6 2008-2010, All Rights Reserved
|
||||||
|
//
|
||||||
|
// ===================================================================
|
||||||
|
//
|
||||||
|
// $Id$
|
||||||
|
//
|
||||||
|
// x-----------------------------------------------------------------x
|
||||||
|
// | |
|
||||||
|
// | C O R I O L I S |
|
||||||
|
// | V L S I B a c k e n d D a t a - B a s e |
|
||||||
|
// | |
|
||||||
|
// | Author : Jean-Paul CHAPUT |
|
||||||
|
// | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
|
||||||
|
// | =============================================================== |
|
||||||
|
// | C++ Module : "./StratusWidget.cpp" |
|
||||||
|
// | *************************************************************** |
|
||||||
|
// | U p d a t e s |
|
||||||
|
// | |
|
||||||
|
// x-----------------------------------------------------------------x
|
||||||
|
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <memory>
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
#include <boost/filesystem/operations.hpp>
|
||||||
|
namespace bfs = boost::filesystem;
|
||||||
|
|
||||||
|
#include "hurricane/Warning.h"
|
||||||
|
#include "hurricane/viewer/Script.h"
|
||||||
|
|
||||||
|
#include <QLabel>
|
||||||
|
#include <QLineEdit>
|
||||||
|
#include <QPushButton>
|
||||||
|
#include <QRadioButton>
|
||||||
|
#include <QButtonGroup>
|
||||||
|
#include <QCheckBox>
|
||||||
|
#include <QHBoxLayout>
|
||||||
|
#include <QVBoxLayout>
|
||||||
|
|
||||||
|
#include "hurricane/viewer/Graphics.h"
|
||||||
|
#include "hurricane/viewer/StratusWidget.h"
|
||||||
|
#include "hurricane/viewer/CellViewer.h"
|
||||||
|
|
||||||
|
|
||||||
|
namespace Hurricane {
|
||||||
|
|
||||||
|
|
||||||
|
// -------------------------------------------------------------------
|
||||||
|
// Class : "StratusWidget".
|
||||||
|
|
||||||
|
|
||||||
|
StratusWidget::StratusWidget ( QWidget* parent )
|
||||||
|
: QDialog (parent)
|
||||||
|
, _lineEdit(NULL)
|
||||||
|
{
|
||||||
|
setWindowTitle ( tr("Execute Stratus Script") );
|
||||||
|
|
||||||
|
QLabel* label = new QLabel ();
|
||||||
|
label->setText ( tr("Stratus script to execute") );
|
||||||
|
label->setFont ( Graphics::getNormalFont(true) );
|
||||||
|
|
||||||
|
_lineEdit = new QLineEdit ();
|
||||||
|
_lineEdit->setMinimumWidth ( 400 );
|
||||||
|
|
||||||
|
QPushButton* okButton = new QPushButton ();
|
||||||
|
okButton->setText ( "OK" );
|
||||||
|
okButton->setDefault ( true );
|
||||||
|
|
||||||
|
QPushButton* cancelButton = new QPushButton ();
|
||||||
|
cancelButton->setText ( "Cancel" );
|
||||||
|
|
||||||
|
QHBoxLayout* hLayout1 = new QHBoxLayout ();
|
||||||
|
hLayout1->addStretch ();
|
||||||
|
hLayout1->addWidget ( okButton );
|
||||||
|
hLayout1->addStretch ();
|
||||||
|
hLayout1->addWidget ( cancelButton );
|
||||||
|
hLayout1->addStretch ();
|
||||||
|
|
||||||
|
//QFrame* separator = new QFrame ();
|
||||||
|
//separator->setFrameShape ( QFrame::HLine );
|
||||||
|
//separator->setFrameShadow ( QFrame::Sunken );
|
||||||
|
|
||||||
|
QVBoxLayout* vLayout = new QVBoxLayout ();
|
||||||
|
vLayout->setSizeConstraint ( QLayout::SetFixedSize );
|
||||||
|
vLayout->addWidget ( label );
|
||||||
|
vLayout->addWidget ( _lineEdit );
|
||||||
|
vLayout->addLayout ( hLayout1 );
|
||||||
|
//vLayout->addWidget ( separator );
|
||||||
|
|
||||||
|
setLayout ( vLayout );
|
||||||
|
//setModal ( true );
|
||||||
|
|
||||||
|
connect ( okButton, SIGNAL(clicked()) , this, SLOT(accept()) );
|
||||||
|
connect ( cancelButton, SIGNAL(clicked()) , this, SLOT(reject()) );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const QString StratusWidget::getScriptName () const
|
||||||
|
{
|
||||||
|
return _lineEdit->text();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool StratusWidget::runScript ( QWidget* parent )
|
||||||
|
{
|
||||||
|
StratusWidget* dialog = new StratusWidget ( parent );
|
||||||
|
bool doRunStratus = (dialog->exec() == Accepted);
|
||||||
|
QString scriptName = dialog->getScriptName ();
|
||||||
|
|
||||||
|
delete dialog;
|
||||||
|
if ( not doRunStratus ) return false;
|
||||||
|
|
||||||
|
if ( scriptName.endsWith(".py",Qt::CaseInsensitive) )
|
||||||
|
scriptName.truncate ( scriptName.size()-3 );
|
||||||
|
|
||||||
|
bfs::path userStratus = scriptName.toStdString();
|
||||||
|
bfs::path userDirectory = userStratus.branch_path();
|
||||||
|
|
||||||
|
if ( not userDirectory.is_complete() )
|
||||||
|
userDirectory = bfs::current_path() / userDirectory;
|
||||||
|
userDirectory.normalize();
|
||||||
|
|
||||||
|
Isobar::Script::addPath ( userDirectory.string() );
|
||||||
|
|
||||||
|
dbo_ptr<Isobar::Script> script = Isobar::Script::create(userStratus.leaf());
|
||||||
|
script->setEditor ( qobject_cast<CellViewer*>(parent) );
|
||||||
|
|
||||||
|
bool returnCode = script->runFunction ( "StratusScript", NULL, Isobar::Script::NoScriptArgs );
|
||||||
|
|
||||||
|
Isobar::Script::removePath ( userDirectory.string() );
|
||||||
|
|
||||||
|
return returnCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
} // End of Hurricane namespace.
|
|
@ -92,6 +92,7 @@ namespace Hurricane {
|
||||||
void raiseToolInterrupt ();
|
void raiseToolInterrupt ();
|
||||||
void clearToolInterrupt ();
|
void clearToolInterrupt ();
|
||||||
void runScript ();
|
void runScript ();
|
||||||
|
void runStratusScript ();
|
||||||
signals:
|
signals:
|
||||||
void showSelectionToggled ( bool );
|
void showSelectionToggled ( bool );
|
||||||
void stateChanged ( shared_ptr<CellWidget::State>& );
|
void stateChanged ( shared_ptr<CellWidget::State>& );
|
||||||
|
@ -124,6 +125,7 @@ namespace Hurricane {
|
||||||
QAction* _clearRulersAction;
|
QAction* _clearRulersAction;
|
||||||
QAction* _controllerAction;
|
QAction* _controllerAction;
|
||||||
QAction* _scriptAction;
|
QAction* _scriptAction;
|
||||||
|
QAction* _stratusAction;
|
||||||
QMenu* _fileMenu;
|
QMenu* _fileMenu;
|
||||||
QMenu* _viewMenu;
|
QMenu* _viewMenu;
|
||||||
QMenu* _toolsMenu;
|
QMenu* _toolsMenu;
|
||||||
|
|
|
@ -53,6 +53,8 @@ namespace Isobar {
|
||||||
|
|
||||||
|
|
||||||
class Script {
|
class Script {
|
||||||
|
public:
|
||||||
|
enum Flags { NoScriptArgs=0x1 };
|
||||||
public:
|
public:
|
||||||
static void addPath ( const std::string& path );
|
static void addPath ( const std::string& path );
|
||||||
static void removePath ( const std::string& path );
|
static void removePath ( const std::string& path );
|
||||||
|
@ -62,7 +64,7 @@ namespace Isobar {
|
||||||
inline PyObject* getHurricaneModule ();
|
inline PyObject* getHurricaneModule ();
|
||||||
inline PyObject* getUserModule ();
|
inline PyObject* getUserModule ();
|
||||||
void setEditor ( Hurricane::CellViewer* );
|
void setEditor ( Hurricane::CellViewer* );
|
||||||
bool runFunction ( const std::string& function, Hurricane::Cell* cell );
|
bool runFunction ( const std::string& function, Hurricane::Cell* cell, unsigned int flags=0 );
|
||||||
protected:
|
protected:
|
||||||
static std::vector<std::string> _pathes;
|
static std::vector<std::string> _pathes;
|
||||||
std::string _moduleName;
|
std::string _moduleName;
|
||||||
|
|
|
@ -0,0 +1,55 @@
|
||||||
|
|
||||||
|
// -*- C++ -*-
|
||||||
|
//
|
||||||
|
// This file is part of the Coriolis Software.
|
||||||
|
// Copyright (c) UPMC/LIP6 2008-2010, All Rights Reserved
|
||||||
|
//
|
||||||
|
// ===================================================================
|
||||||
|
//
|
||||||
|
// $Id$
|
||||||
|
//
|
||||||
|
// x-----------------------------------------------------------------x
|
||||||
|
// | |
|
||||||
|
// | C O R I O L I S |
|
||||||
|
// | V L S I B a c k e n d D a t a - B a s e |
|
||||||
|
// | |
|
||||||
|
// | Author : Jean-Paul CHAPUT |
|
||||||
|
// | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
|
||||||
|
// | =============================================================== |
|
||||||
|
// | C++ Header : "./StratusWidget.h" |
|
||||||
|
// | *************************************************************** |
|
||||||
|
// | U p d a t e s |
|
||||||
|
// | |
|
||||||
|
// x-----------------------------------------------------------------x
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef __HURRICANE_STRATUS_WIDGET__
|
||||||
|
#define __HURRICANE_STRATUS_WIDGET__
|
||||||
|
|
||||||
|
#include <QDialog>
|
||||||
|
|
||||||
|
class QLineEdit;
|
||||||
|
|
||||||
|
|
||||||
|
namespace Hurricane {
|
||||||
|
|
||||||
|
class Cell;
|
||||||
|
|
||||||
|
|
||||||
|
class StratusWidget : public QDialog {
|
||||||
|
Q_OBJECT;
|
||||||
|
public:
|
||||||
|
static bool runScript ( QWidget* parent );
|
||||||
|
const QString getScriptName () const;
|
||||||
|
protected:
|
||||||
|
StratusWidget ( QWidget* parent=NULL );
|
||||||
|
protected:
|
||||||
|
QLineEdit* _lineEdit;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
} // End of Hurricane namespace.
|
||||||
|
|
||||||
|
|
||||||
|
#endif // __HURRICANE_STRATUS_WIDGET__
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 1.9 KiB |
Loading…
Reference in New Issue