PyObject* Application::sOpen(PyObject * /*self*/, PyObject *args,PyObject * /*kwd*/) { // only used to open Python files char* Name; if (!PyArg_ParseTuple(args, "et","utf-8",&Name)) return NULL; std::string Utf8Name = std::string(Name); PyMem_Free(Name); PY_TRY { QString fileName = QString::fromUtf8(Utf8Name.c_str()); QFileInfo fi; fi.setFile(fileName); QString ext = fi.completeSuffix().toLower(); QList<EditorView*> views = getMainWindow()->findChildren<EditorView*>(); for (QList<EditorView*>::Iterator it = views.begin(); it != views.end(); ++it) { if ((*it)->fileName() == fileName) { (*it)->setFocus(); Py_Return; } } if (ext == QLatin1String("iv")) { if (!Application::Instance->activeDocument()) App::GetApplication().newDocument(); //QString cmd = QString("Gui.activeDocument().addAnnotation(\"%1\",\"%2\")").arg(fi.baseName()).arg(fi.absoluteFilePath()); QString cmd = QString::fromLatin1( "App.ActiveDocument.addObject(\"App::InventorObject\",\"%1\")." "FileName=\"%2\"\n" "App.ActiveDocument.ActiveObject.Label=\"%1\"\n" "App.ActiveDocument.recompute()") .arg(fi.baseName()).arg(fi.absoluteFilePath()); Base::Interpreter().runString(cmd.toUtf8()); } else if (ext == QLatin1String("wrl") || ext == QLatin1String("vrml") || ext == QLatin1String("wrz")) { if (!Application::Instance->activeDocument()) App::GetApplication().newDocument(); //QString cmd = QString("Gui.activeDocument().addAnnotation(\"%1\",\"%2\")").arg(fi.baseName()).arg(fi.absoluteFilePath()); QString cmd = QString::fromLatin1( "App.ActiveDocument.addObject(\"App::VRMLObject\",\"%1\")." "VrmlFile=\"%2\"\n" "App.ActiveDocument.ActiveObject.Label=\"%1\"\n" "App.ActiveDocument.recompute()") .arg(fi.baseName()).arg(fi.absoluteFilePath()); Base::Interpreter().runString(cmd.toUtf8()); } else if (ext == QLatin1String("py") || ext == QLatin1String("fcmacro") || ext == QLatin1String("fcscript")) { PythonEditor* editor = new PythonEditor(); editor->setWindowIcon(Gui::BitmapFactory().pixmap("applications-python")); PythonEditorView* edit = new PythonEditorView(editor, getMainWindow()); edit->open(fileName); edit->resize(400, 300); getMainWindow()->addWindow( edit ); } } PY_CATCH; Py_Return; }
PyObject* Application::sInsert(PyObject * /*self*/, PyObject *args,PyObject * /*kwd*/) { const char* Name; const char* DocName=0; if (!PyArg_ParseTuple(args, "s|s",&Name,&DocName)) return NULL; PY_TRY { QString fileName = QString::fromUtf8(Name); QFileInfo fi; fi.setFile(fileName); QString ext = fi.completeSuffix().toLower(); if (ext == QLatin1String("iv")) { App::Document *doc = 0; if (DocName) doc = App::GetApplication().getDocument(DocName); else doc = App::GetApplication().getActiveDocument(); if (!doc) doc = App::GetApplication().newDocument(DocName); App::DocumentObject* obj = doc->addObject("App::InventorObject", (const char*)fi.baseName().toUtf8()); obj->Label.setValue((const char*)fi.baseName().toUtf8()); static_cast<App::PropertyString*>(obj->getPropertyByName("FileName")) ->setValue((const char*)fi.absoluteFilePath().toUtf8()); doc->recompute(); } else if (ext == QLatin1String("wrl") || ext == QLatin1String("vrml") || ext == QLatin1String("wrz")) { App::Document *doc = 0; if (DocName) doc = App::GetApplication().getDocument(DocName); else doc = App::GetApplication().getActiveDocument(); if (!doc) doc = App::GetApplication().newDocument(DocName); App::DocumentObject* obj = doc->addObject("App::VRMLObject", (const char*)fi.baseName().toUtf8()); obj->Label.setValue((const char*)fi.baseName().toUtf8()); static_cast<App::PropertyFileIncluded*>(obj->getPropertyByName("VrmlFile")) ->setValue((const char*)fi.absoluteFilePath().toUtf8()); doc->recompute(); } else if (ext == QLatin1String("py") || ext == QLatin1String("fcmacro") || ext == QLatin1String("fcscript")) { PythonEditor* editor = new PythonEditor(); editor->setWindowIcon(Gui::BitmapFactory().pixmap("python_small")); PythonEditorView* edit = new PythonEditorView(editor, getMainWindow()); edit->open(fileName); edit->resize(400, 300); getMainWindow()->addWindow( edit ); } } PY_CATCH; Py_Return; }
/** Creates a new macro file. */ void DlgMacroExecuteImp::on_createButton_clicked() { // query file name QString fn = QInputDialog::getText(this, tr("Macro file"), tr("Enter a file name, please:"), QLineEdit::Normal, QString::null, 0); if (!fn.isEmpty()) { QString suffix = QFileInfo(fn).suffix().toLower(); if (suffix != QLatin1String("fcmacro") && suffix != QLatin1String("py")) fn += QLatin1String(".FCMacro"); QDir dir(this->macroPath); // create the macroPath if nonexistent if (!dir.exists()) { dir.mkpath(this->macroPath); } QFileInfo fi(dir, fn); if (fi.exists() && fi.isFile()) { QMessageBox::warning(this, tr("Existing file"), tr("'%1'.\nThis file already exists.").arg(fi.fileName())); } else { QFile file(fi.absoluteFilePath()); if (!file.open(QFile::WriteOnly)) { QMessageBox::warning(this, tr("Cannot create file"), tr("Creation of file '%1' failed.").arg(fi.absoluteFilePath())); return; } file.close(); PythonEditor* editor = new PythonEditor(); editor->setWindowIcon(Gui::BitmapFactory().iconFromTheme("applications-python")); PythonEditorView* edit = new PythonEditorView(editor, getMainWindow()); edit->open(fi.absoluteFilePath()); edit->setWindowTitle(QString::fromLatin1("%1[*]").arg(fn)); edit->resize(400, 300); getMainWindow()->addWindow(edit); close(); } } }
void PythonDebugger::showDebugMarker(const QString& fn, int line) { PythonEditorView* edit = 0; QList<QWidget*> mdis = getMainWindow()->windows(); for (QList<QWidget*>::iterator it = mdis.begin(); it != mdis.end(); ++it) { edit = qobject_cast<PythonEditorView*>(*it); if (edit && edit->fileName() == fn) break; } if (!edit) { PythonEditor* editor = new PythonEditor(); editor->setWindowIcon(Gui::BitmapFactory().pixmap("python_small")); edit = new PythonEditorView(editor, getMainWindow()); edit->open(fn); edit->resize(400, 300); getMainWindow()->addWindow(edit); } getMainWindow()->setActiveWindow(edit); edit->showDebugMarker(line); }
/** * Opens the macro file in an editor. */ void DlgMacroExecuteImp::on_editButton_clicked() { QDir dir; QTreeWidgetItem* item = 0; int index = tabMacroWidget->currentIndex(); if (index == 0) { //user-specific item = userMacroListBox->currentItem(); dir.setPath(this->macroPath); } else { //index == 1 system-wide item = systemMacroListBox->currentItem(); dir.setPath(QString::fromUtf8(App::GetApplication().getHomePath()) + QString::fromUtf8("Macro")); } if (!item) return; MacroItem * mitem = static_cast<MacroItem *>(item); QString file = QString::fromLatin1("%1/%2").arg(dir.absolutePath(), item->text(0)); PythonEditor* editor = new PythonEditor(); editor->setWindowIcon(Gui::BitmapFactory().iconFromTheme("applications-python")); PythonEditorView* edit = new PythonEditorView(editor, getMainWindow()); edit->open(file); edit->resize(400, 300); getMainWindow()->addWindow(edit); if (mitem->systemWide) { editor->setReadOnly(true); QString shownName; shownName = QString::fromLatin1("%1[*] - [%2]").arg(item->text(0), tr("Read-only")); edit->setWindowTitle(shownName); } close(); }
PyObject* Application::sInsert(PyObject * /*self*/, PyObject *args,PyObject * /*kwd*/) { char* Name; char* DocName=0; if (!PyArg_ParseTuple(args, "et|s","utf-8",&Name,&DocName)) return NULL; std::string Utf8Name = std::string(Name); PyMem_Free(Name); PY_TRY { QString fileName = QString::fromUtf8(Utf8Name.c_str()); QFileInfo fi; fi.setFile(fileName); QString ext = fi.suffix().toLower(); if (ext == QLatin1String("iv")) { App::Document *doc = 0; if (DocName) doc = App::GetApplication().getDocument(DocName); else doc = App::GetApplication().getActiveDocument(); if (!doc) doc = App::GetApplication().newDocument(DocName); App::DocumentObject* obj = doc->addObject("App::InventorObject", (const char*)fi.baseName().toUtf8()); obj->Label.setValue((const char*)fi.baseName().toUtf8()); static_cast<App::PropertyString*>(obj->getPropertyByName("FileName")) ->setValue((const char*)fi.absoluteFilePath().toUtf8()); doc->recompute(); } else if (ext == QLatin1String("wrl") || ext == QLatin1String("vrml") || ext == QLatin1String("wrz")) { App::Document *doc = 0; if (DocName) doc = App::GetApplication().getDocument(DocName); else doc = App::GetApplication().getActiveDocument(); if (!doc) doc = App::GetApplication().newDocument(DocName); // Add this to the search path in order to read inline files (#0002029) QByteArray path = fi.absolutePath().toUtf8(); SoInput::addDirectoryFirst(path.constData()); App::DocumentObject* obj = doc->addObject("App::VRMLObject", (const char*)fi.baseName().toUtf8()); obj->Label.setValue((const char*)fi.baseName().toUtf8()); static_cast<App::PropertyFileIncluded*>(obj->getPropertyByName("VrmlFile")) ->setValue((const char*)fi.absoluteFilePath().toUtf8()); doc->recompute(); SoInput::removeDirectory(path.constData()); } else if (ext == QLatin1String("py") || ext == QLatin1String("fcmacro") || ext == QLatin1String("fcscript")) { PythonEditor* editor = new PythonEditor(); editor->setWindowIcon(Gui::BitmapFactory().iconFromTheme("applications-python")); PythonEditorView* edit = new PythonEditorView(editor, getMainWindow()); edit->open(fileName); edit->resize(400, 300); getMainWindow()->addWindow( edit ); } else { Base::Console().Error("File type '%s' not supported\n", ext.toLatin1().constData()); } } PY_CATCH; Py_Return; }