|
@@ -151,7 +151,7 @@ class ctkPythonConsolePrivate : public ctkConsolePrivate
|
|
|
{
|
|
|
Q_DECLARE_PUBLIC(ctkPythonConsole);
|
|
|
public:
|
|
|
- ctkPythonConsolePrivate(ctkPythonConsole& object, ctkAbstractPythonManager* pythonManager);
|
|
|
+ ctkPythonConsolePrivate(ctkPythonConsole& object);
|
|
|
~ctkPythonConsolePrivate();
|
|
|
|
|
|
void initializeInteractiveConsole();
|
|
@@ -172,10 +172,8 @@ public:
|
|
|
// ctkPythonConsolePrivate methods
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
|
-ctkPythonConsolePrivate::ctkPythonConsolePrivate(
|
|
|
- ctkPythonConsole& object, ctkAbstractPythonManager* pythonManager)
|
|
|
- : ctkConsolePrivate(object), PythonManager(pythonManager),
|
|
|
- InteractiveConsole(0)
|
|
|
+ctkPythonConsolePrivate::ctkPythonConsolePrivate(ctkPythonConsole& object)
|
|
|
+ : ctkConsolePrivate(object), PythonManager(0), InteractiveConsole(0)
|
|
|
{
|
|
|
}
|
|
|
|
|
@@ -187,6 +185,8 @@ ctkPythonConsolePrivate::~ctkPythonConsolePrivate()
|
|
|
//----------------------------------------------------------------------------
|
|
|
void ctkPythonConsolePrivate::initializeInteractiveConsole()
|
|
|
{
|
|
|
+ Q_ASSERT(this->PythonManager);
|
|
|
+
|
|
|
// set up the code.InteractiveConsole instance that we'll use.
|
|
|
const char* code =
|
|
|
"import code\n"
|
|
@@ -207,6 +207,8 @@ void ctkPythonConsolePrivate::initializeInteractiveConsole()
|
|
|
//----------------------------------------------------------------------------
|
|
|
bool ctkPythonConsolePrivate::push(const QString& code)
|
|
|
{
|
|
|
+ Q_ASSERT(this->PythonManager);
|
|
|
+
|
|
|
bool ret_value = false;
|
|
|
|
|
|
QString buffer = code;
|
|
@@ -256,10 +258,9 @@ void ctkPythonConsolePrivate::printWelcomeMessage()
|
|
|
// ctkPythonConsole methods
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
|
-ctkPythonConsole::ctkPythonConsole(ctkAbstractPythonManager* pythonManager, QWidget* parentObject):
|
|
|
- Superclass(new ctkPythonConsolePrivate(*this, pythonManager), parentObject)/*, d_ptr(new ctkPythonConsolePrivate(*this, pythonManager))*/
|
|
|
+ctkPythonConsole::ctkPythonConsole(QWidget* parentObject):
|
|
|
+ Superclass(new ctkPythonConsolePrivate(*this), parentObject)
|
|
|
{
|
|
|
- Q_D(ctkPythonConsole);
|
|
|
this->setObjectName("pythonConsole");
|
|
|
|
|
|
// Disable RemoveTrailingSpaces and AutomaticIndentation
|
|
@@ -268,11 +269,35 @@ ctkPythonConsole::ctkPythonConsole(ctkAbstractPythonManager* pythonManager, QWid
|
|
|
// Enable SplitCopiedTextByLine
|
|
|
this->setEditorHints(this->editorHints() | SplitCopiedTextByLine);
|
|
|
|
|
|
+ this->setDisabled(true);
|
|
|
+}
|
|
|
+
|
|
|
+//----------------------------------------------------------------------------
|
|
|
+ctkPythonConsole::~ctkPythonConsole()
|
|
|
+{
|
|
|
+}
|
|
|
+
|
|
|
+////----------------------------------------------------------------------------
|
|
|
+void ctkPythonConsole::initialize(ctkAbstractPythonManager* newPythonManager)
|
|
|
+{
|
|
|
+ Q_D(ctkPythonConsole);
|
|
|
+
|
|
|
+ if (d->PythonManager)
|
|
|
+ {
|
|
|
+ qWarning() << "ctkPythonConsole already initialized !";
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
// The call to mainContext() ensures that python has been initialized.
|
|
|
- Q_ASSERT(d->PythonManager);
|
|
|
- d->PythonManager->mainContext();
|
|
|
+ Q_ASSERT(newPythonManager);
|
|
|
+ newPythonManager->mainContext();
|
|
|
Q_ASSERT(PythonQt::self()); // PythonQt should be initialized
|
|
|
|
|
|
+ ctkPythonConsoleCompleter* completer = new ctkPythonConsoleCompleter(*newPythonManager);
|
|
|
+ this->setCompleter(completer);
|
|
|
+
|
|
|
+ d->PythonManager = newPythonManager;
|
|
|
+
|
|
|
d->initializeInteractiveConsole();
|
|
|
|
|
|
this->connect(PythonQt::self(), SIGNAL(pythonStdOut(const QString&)),
|
|
@@ -280,9 +305,6 @@ ctkPythonConsole::ctkPythonConsole(ctkAbstractPythonManager* pythonManager, QWid
|
|
|
this->connect(PythonQt::self(), SIGNAL(pythonStdErr(const QString&)),
|
|
|
d, SLOT(printErrorMessage(const QString&)));
|
|
|
|
|
|
- ctkPythonConsoleCompleter* completer = new ctkPythonConsoleCompleter(*d->PythonManager);
|
|
|
- this->setCompleter(completer);
|
|
|
-
|
|
|
// Set primary and secondary prompt
|
|
|
this->setPs1(">>> ");
|
|
|
this->setPs2("... ");
|
|
@@ -295,11 +317,8 @@ ctkPythonConsole::ctkPythonConsole(ctkAbstractPythonManager* pythonManager, QWid
|
|
|
helpImportCode << "help = pydoc.help.help";
|
|
|
helpImportCode << "del pydoc";
|
|
|
d->PythonManager->executeString(helpImportCode.join("\n"));
|
|
|
-}
|
|
|
|
|
|
-//----------------------------------------------------------------------------
|
|
|
-ctkPythonConsole::~ctkPythonConsole()
|
|
|
-{
|
|
|
+ this->setDisabled(false);
|
|
|
}
|
|
|
|
|
|
////----------------------------------------------------------------------------
|