summaryrefslogtreecommitdiffstats
path: root/sigmodr/ScriptWidget.cpp
diff options
context:
space:
mode:
authorBen Boeckel <MathStuf@gmail.com>2008-11-02 06:16:55 +0000
committerBen Boeckel <MathStuf@gmail.com>2008-11-02 06:16:55 +0000
commitbde34fad26d6510c18b1adb49b992a90879ee4d2 (patch)
tree92c527f9a3fc6c0f2267659659eaef45b5aba534 /sigmodr/ScriptWidget.cpp
parent7fb827cb9b76990e0c00d9681e7d7411bfde871c (diff)
downloadsigen-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.cpp106
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));
+ }
}
}