summaryrefslogtreecommitdiffstats
path: root/pokemodr/ScriptWidget.cpp
diff options
context:
space:
mode:
authorBen Boeckel <MathStuf@gmail.com>2008-08-05 17:44:25 +0000
committerBen Boeckel <MathStuf@gmail.com>2008-08-05 17:44:25 +0000
commitfa4764c9e4d86fdfa976bb9fa9f6976e82c496d5 (patch)
tree3137a434b832ddf321723297f5b4b1ed75bc4fc0 /pokemodr/ScriptWidget.cpp
parentcf49a16b29ac412cfea125f7216a0e51e79aa4de (diff)
downloadsigen-fa4764c9e4d86fdfa976bb9fa9f6976e82c496d5.tar.gz
sigen-fa4764c9e4d86fdfa976bb9fa9f6976e82c496d5.tar.xz
sigen-fa4764c9e4d86fdfa976bb9fa9f6976e82c496d5.zip
[FIX] ScriptWidget editing now works a lot better
[FIX] Kate settings saved [FIX] Assertions within TeamMember removed [FIX] Arenas inherit from Config now git-svn-id: https://pokegen.svn.sourceforge.net/svnroot/pokegen/trunk@238 6ecfd1a5-f3ed-3746-8530-beee90d26b22
Diffstat (limited to 'pokemodr/ScriptWidget.cpp')
-rw-r--r--pokemodr/ScriptWidget.cpp47
1 files changed, 36 insertions, 11 deletions
diff --git a/pokemodr/ScriptWidget.cpp b/pokemodr/ScriptWidget.cpp
index 3258daa8..764d9e4a 100644
--- a/pokemodr/ScriptWidget.cpp
+++ b/pokemodr/ScriptWidget.cpp
@@ -33,6 +33,7 @@
Pokemodr::ScriptWidget::ScriptWidget(QWidget* parent, const Pokemod::Script& value) :
QWidget(parent),
m_value(value),
+ m_editor(KTextEditor::EditorChooser::editor()),
m_document(NULL)
{
setupUi(this);
@@ -48,32 +49,40 @@ Pokemodr::ScriptWidget::ScriptWidget(QWidget* parent, const Pokemod::Script& val
QList<QString> langs = languages.keys();
foreach (QString language, langs)
varInterpreter->addItem(language, languages[language]);
- KTextEditor::Editor* editor = KTextEditor::EditorChooser::editor();
- if (!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_document = editor->createDocument(NULL);
+ m_editor->readConfig(NULL);
+ m_document = m_editor->createDocument(NULL);
m_view = m_document->createView(NULL);
+ 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);
- qobject_cast<KXmlGuiWindow*>(KApplication::kApplication()->activeWindow())->guiFactory()->addClient(m_view);
-// // FIXME: KatePart bug here?
-// // Stop colliding shortcuts from KateView
-// m_view->action(KStandardAction::name(KStandardAction::Cut))->setShortcuts(QKeySequence::UnknownKey);
-// m_view->action(KStandardAction::name(KStandardAction::Copy))->setShortcuts(QKeySequence::UnknownKey);
-// m_view->action(KStandardAction::name(KStandardAction::PasteText))->setShortcuts(QKeySequence::UnknownKey);
layoutScript->addWidget(m_view);
connect(m_document, SIGNAL(textChanged(KTextEditor::Document*)), this, SLOT(scriptChanged()));
connect(this, SIGNAL(valueChanged(const Pokemod::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();
}
Pokemodr::ScriptWidget::~ScriptWidget()
{
- qobject_cast<KXmlGuiWindow*>(KApplication::kApplication()->activeWindow())->guiFactory()->removeClient(m_view);
- delete m_document;
+ m_editor->writeConfig(NULL);
+// delete m_document;
}
Pokemod::Script Pokemodr::ScriptWidget::value() const
@@ -113,3 +122,19 @@ void Pokemodr::ScriptWidget::scriptChanged()
emit(valueChanged(m_value));
}
}
+
+void Pokemodr::ScriptWidget::focused(KTextEditor::View* view)
+{
+ KXmlGuiWindow* topLevel = qobject_cast<KXmlGuiWindow*>(KApplication::kApplication()->activeWindow());
+ if (topLevel)
+ topLevel->guiFactory()->addClient(view);
+}
+
+void Pokemodr::ScriptWidget::unfocused(KTextEditor::View* view)
+{
+ KXmlGuiWindow* topLevel = qobject_cast<KXmlGuiWindow*>(KApplication::kApplication()->activeWindow());
+ QWidget* focused = KApplication::focusWidget();
+ // TODO: Does this fail with non-Kate KTextEditor implementations?
+ if (topLevel && focused && ((focused->metaObject()->className() != QString("KateViewInternal")) || ((QString(focused->metaObject()->className()) == view->metaObject()->className()) && (focused != view))))
+ topLevel->guiFactory()->removeClient(view);
+}