diff options
| author | Ben Boeckel <MathStuf@gmail.com> | 2008-08-05 17:44:25 +0000 |
|---|---|---|
| committer | Ben Boeckel <MathStuf@gmail.com> | 2008-08-05 17:44:25 +0000 |
| commit | fa4764c9e4d86fdfa976bb9fa9f6976e82c496d5 (patch) | |
| tree | 3137a434b832ddf321723297f5b4b1ed75bc4fc0 /pokemodr/ScriptWidget.cpp | |
| parent | cf49a16b29ac412cfea125f7216a0e51e79aa4de (diff) | |
| download | sigen-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.cpp | 47 |
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); +} |
