diff options
| author | Ben Boeckel <MathStuf@gmail.com> | 2008-11-02 06:16:55 +0000 |
|---|---|---|
| committer | Ben Boeckel <MathStuf@gmail.com> | 2008-11-02 06:16:55 +0000 |
| commit | bde34fad26d6510c18b1adb49b992a90879ee4d2 (patch) | |
| tree | 92c527f9a3fc6c0f2267659659eaef45b5aba534 /sigmodr/ScriptWidget.cpp | |
| parent | 7fb827cb9b76990e0c00d9681e7d7411bfde871c (diff) | |
| download | sigen-bde34fad26d6510c18b1adb49b992a90879ee4d2.tar.gz sigen-bde34fad26d6510c18b1adb49b992a90879ee4d2.tar.xz sigen-bde34fad26d6510c18b1adb49b992a90879ee4d2.zip | |
[FIX] Fixed the building of sigmodr
[FIX] ScriptWidget will now fall back to a standard KTextEdit if a KTE is not available
git-svn-id: https://pokegen.svn.sourceforge.net/svnroot/pokegen/trunk@295 6ecfd1a5-f3ed-3746-8530-beee90d26b22
Diffstat (limited to 'sigmodr/ScriptWidget.cpp')
| -rw-r--r-- | sigmodr/ScriptWidget.cpp | 106 |
1 files changed, 68 insertions, 38 deletions
diff --git a/sigmodr/ScriptWidget.cpp b/sigmodr/ScriptWidget.cpp index 6356a772..e687ff60 100644 --- a/sigmodr/ScriptWidget.cpp +++ b/sigmodr/ScriptWidget.cpp @@ -24,6 +24,7 @@ #include <KMenu> #include <KMessageBox> #include <KStandardAction> +#include <KTextEdit> #include <KXMLGUIFactory> #include <KXmlGuiWindow> #include <KTextEditor/Document> @@ -34,6 +35,7 @@ Sigmodr::ScriptWidget::ScriptWidget(QWidget* parent, const Sigcore::Script& value) : QWidget(parent), m_value(value), + m_simpleEdit(NULL), m_editor(KTextEditor::EditorChooser::editor()), m_document(NULL) { @@ -50,46 +52,53 @@ Sigmodr::ScriptWidget::ScriptWidget(QWidget* parent, const Sigcore::Script& valu QStringList langs = languages.keys(); foreach (const QString& language, langs) varInterpreter->addItem(language, languages[language]); - if (!m_editor) + if (m_editor) { - KMessageBox::error(this, "A KDE text-editor component could not be found;\nplease check your KDE installation."); - KApplication::kApplication()->exit(1); + m_editor->readConfig(); + m_document = m_editor->createDocument(this); + m_view = m_document->createView(this); + KActionCollection* collection = m_view->actionCollection(); + collection->action("file_save")->setVisible(false); + collection->action("file_save")->setEnabled(false); + collection->action("file_save_as")->setVisible(false); + collection->action("file_save_as")->setEnabled(false); + collection->action("edit_undo")->setVisible(false); + collection->action("edit_undo")->setEnabled(false); + collection->action("edit_redo")->setVisible(false); + collection->action("edit_redo")->setEnabled(false); + collection->action("edit_cut")->setVisible(false); + collection->action("edit_copy")->setVisible(false); + collection->action("edit_paste")->setVisible(false); + m_view->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); + m_view->setMinimumHeight(300); + KXmlGuiWindow* topLevel = qobject_cast<KXmlGuiWindow*>(KApplication::kApplication()->activeWindow()); + if (topLevel) + { + KMenu *menu = qobject_cast<KMenu*>(topLevel->factory()->container("ktexteditor_popup", topLevel)); + if (menu) + m_view->setContextMenu(menu); + } + layoutScript->addWidget(m_view); + connect(m_document, SIGNAL(textChanged(KTextEditor::Document*)), this, SLOT(scriptChanged())); + connect(m_view, SIGNAL(focusIn(KTextEditor::View*)), this, SLOT(focused(KTextEditor::View*))); + connect(m_view, SIGNAL(focusOut(KTextEditor::View*)), this, SLOT(unfocused(KTextEditor::View*))); } - m_editor->readConfig(); - m_document = m_editor->createDocument(this); - m_view = m_document->createView(this); - KActionCollection* collection = m_view->actionCollection(); - collection->action("file_save")->setVisible(false); - collection->action("file_save")->setEnabled(false); - collection->action("file_save_as")->setVisible(false); - collection->action("file_save_as")->setEnabled(false); - collection->action("edit_undo")->setVisible(false); - collection->action("edit_undo")->setEnabled(false); - collection->action("edit_redo")->setVisible(false); - collection->action("edit_redo")->setEnabled(false); - collection->action("edit_cut")->setVisible(false); - collection->action("edit_copy")->setVisible(false); - collection->action("edit_paste")->setVisible(false); - m_view->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); - m_view->setMinimumHeight(300); - KXmlGuiWindow* topLevel = qobject_cast<KXmlGuiWindow*>(KApplication::kApplication()->activeWindow()); - if (topLevel) + else { - KMenu *menu = qobject_cast<KMenu*>(topLevel->factory()->container("ktexteditor_popup", topLevel)); - if (menu) - m_view->setContextMenu(menu); + KMessageBox::information(this, "A KDE text-editor component could not be found;\nplease check your KDE installation.\n\nEnhanced editing will not be used.", "Enhanced editor not found", "kte-component"); + m_simpleEdit = new KTextEdit(m_value.script(), this); + layoutScript->addWidget(m_simpleEdit); + connect(m_simpleEdit, SIGNAL(textChanged()), this, SLOT(scriptChanged())); + return; } - layoutScript->addWidget(m_view); - connect(m_document, SIGNAL(textChanged(KTextEditor::Document*)), this, SLOT(scriptChanged())); connect(this, SIGNAL(valueChanged(const Sigcore::Script&)), SLOT(setGui())); - connect(m_view, SIGNAL(focusIn(KTextEditor::View*)), this, SLOT(focused(KTextEditor::View*))); - connect(m_view, SIGNAL(focusOut(KTextEditor::View*)), this, SLOT(unfocused(KTextEditor::View*))); setGui(); } Sigmodr::ScriptWidget::~ScriptWidget() { - m_editor->writeConfig(NULL); + if (m_editor) + m_editor->writeConfig(NULL); } Sigcore::Script Sigmodr::ScriptWidget::value() const @@ -100,10 +109,19 @@ Sigcore::Script Sigmodr::ScriptWidget::value() const void Sigmodr::ScriptWidget::setGui() { varInterpreter->setCurrentIndex(varInterpreter->findData(m_value.interpreter())); - m_document->setHighlightingMode(varInterpreter->currentText()); - KTextEditor::Cursor cursor = m_view->cursorPosition(); - m_document->setText(m_value.script()); - m_view->setCursorPosition(cursor); + if (m_document) + { + m_document->setHighlightingMode(varInterpreter->currentText()); + KTextEditor::Cursor cursor = m_view->cursorPosition(); + m_document->setText(m_value.script()); + m_view->setCursorPosition(cursor); + } + else + { + QTextCursor cursor = m_simpleEdit->textCursor(); + m_simpleEdit->setPlainText(m_value.script()); + m_simpleEdit->setTextCursor(cursor); + } } void Sigmodr::ScriptWidget::setValue(const Sigcore::Script& value) @@ -118,16 +136,28 @@ void Sigmodr::ScriptWidget::setValue(const Sigcore::Script& value) void Sigmodr::ScriptWidget::on_varInterpreter_activated() { m_value.setInterpreter(varInterpreter->itemData(varInterpreter->currentIndex()).toString()); - m_document->setHighlightingMode(varInterpreter->currentText()); + if (m_document) + m_document->setHighlightingMode(varInterpreter->currentText()); emit(valueChanged(m_value)); } void Sigmodr::ScriptWidget::scriptChanged() { - if (m_value.script() != m_document->text()) + if (m_document) { - m_value.setScript(m_document->text()); - emit(valueChanged(m_value)); + if (m_value.script() != m_document->text()) + { + m_value.setScript(m_document->text()); + emit(valueChanged(m_value)); + } + } + else + { + if (m_value.script() != m_simpleEdit->toPlainText()) + { + m_value.setScript(m_simpleEdit->toPlainText()); + emit(valueChanged(m_value)); + } } } |
