summaryrefslogtreecommitdiffstats
path: root/sigmodr/widgets/ScriptWidget.cpp
diff options
context:
space:
mode:
authorBen Boeckel <MathStuf@gmail.com>2009-02-24 03:02:23 -0500
committerBen Boeckel <MathStuf@gmail.com>2009-02-24 03:02:23 -0500
commit4453d587364e38c11f218c46db482f0b2ebe93ae (patch)
treec1035338d94298316b2de0eb88e6f39ceef86210 /sigmodr/widgets/ScriptWidget.cpp
parentc076cd60d8dc8b4a8f9636e5b8ce828f9aee3f7c (diff)
downloadsigen-4453d587364e38c11f218c46db482f0b2ebe93ae.tar.gz
sigen-4453d587364e38c11f218c46db482f0b2ebe93ae.tar.xz
sigen-4453d587364e38c11f218c46db482f0b2ebe93ae.zip
Converted some classes to load from the resource instead of using inheritence for forms
Diffstat (limited to 'sigmodr/widgets/ScriptWidget.cpp')
-rw-r--r--sigmodr/widgets/ScriptWidget.cpp102
1 files changed, 58 insertions, 44 deletions
diff --git a/sigmodr/widgets/ScriptWidget.cpp b/sigmodr/widgets/ScriptWidget.cpp
index 207f9e90..206468ba 100644
--- a/sigmodr/widgets/ScriptWidget.cpp
+++ b/sigmodr/widgets/ScriptWidget.cpp
@@ -18,9 +18,13 @@
// Header include
#include "ScriptWidget.h"
+// Sigmodr widget includes
+#include "ScriptWidget.h"
+
// KDE includes
#include <KActionCollection>
#include <KApplication>
+#include <KComboBox>
#include <KMenu>
#include <KMessageBox>
#include <KStandardAction>
@@ -32,33 +36,43 @@
#include <KTextEditor/EditorChooser>
#include <KTextEditor/View>
+// Qt includes
+#include <QtCore/QFile>
+#include <QtGui/QGridLayout>
+#include <QtGui/QLabel>
+#include <QtUiTools/QUiLoader>
+
Sigmodr::Widgets::ScriptWidget::ScriptWidget(QWidget* parent, const Sigcore::Script& value) :
QWidget(parent),
m_value(value),
- m_simpleEdit(NULL),
+ ui_simpleEdit(NULL),
m_editor(KTextEditor::EditorChooser::editor()),
m_document(NULL)
{
- setupUi(this);
- QMap<QString, QString> languages;
- languages["C#"] = "mono";
- languages["Falcon"] = "falcon";
- languages["Java"] = "java";
- languages["JavaScript"] = "javascript";
- languages["QtScript"] = "qtscript";
- languages["Lua"] = "lua";
- languages["PHP"] = "php";
- languages["Python"] = "python";
- languages["Ruby"] = "ruby";
- QStringList langs = languages.keys();
- foreach (const QString& language, langs)
- varInterpreter->addItem(language, languages[language]);
+ QFile file(":/gui/script.ui");
+ file.open(QFile::ReadOnly);
+ QWidget *formWidget = QUiLoader().load(&file, this);
+ file.close();
+ ui_interpreter = formWidget->findChild<KComboBox*>("varInterpreter");
+ connect(ui_interpreter, SIGNAL(currentIndexChanged(QString)), this, SLOT(interpreterChanged(QString)));
+ m_languages["C#"] = "mono";
+ m_languages["Falcon"] = "falcon";
+ m_languages["Java"] = "java";
+ m_languages["JavaScript"] = "javascript";
+ m_languages["QtScript"] = "qtscript";
+ m_languages["Lua"] = "lua";
+ m_languages["PHP"] = "php";
+ m_languages["Python"] = "python";
+ m_languages["Ruby"] = "ruby";
+ ui_interpreter->addItems(m_languages.keys());
+ QLabel* labelScript = formWidget->findChild<QLabel*>("labelScript");
+ QGridLayout* gridLayout = formWidget->findChild<QGridLayout*>("gridLayout");
if (m_editor)
{
m_editor->readConfig();
m_document = m_editor->createDocument(this);
- m_view = m_document->createView(this);
- KActionCollection* collection = m_view->actionCollection();
+ ui_kteEdit = m_document->createView(this);
+ KActionCollection* collection = ui_kteEdit->actionCollection();
collection->action("file_save")->setVisible(false);
collection->action("file_save")->setEnabled(false);
collection->action("file_save_as")->setVisible(false);
@@ -70,32 +84,32 @@ Sigmodr::Widgets::ScriptWidget::ScriptWidget(QWidget* parent, const Sigcore::Scr
collection->action("edit_cut")->setVisible(false);
collection->action("edit_copy")->setVisible(false);
collection->action("edit_paste")->setVisible(false);
- m_view->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
- m_view->setMinimumHeight(300);
+ ui_kteEdit->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+ ui_kteEdit->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);
+ ui_kteEdit->setContextMenu(menu);
}
- labelScript->setBuddy(m_view);
- setTabOrder(varInterpreter, m_view);
- gridLayout->addWidget(m_view, 1, 1);
+ labelScript->setBuddy(ui_kteEdit);
+ setTabOrder(ui_interpreter, ui_kteEdit);
+ gridLayout->addWidget(ui_kteEdit, 1, 1);
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*)));
+ connect(ui_kteEdit, SIGNAL(focusIn(KTextEditor::View*)), this, SLOT(focused(KTextEditor::View*)));
+ connect(ui_kteEdit, SIGNAL(focusOut(KTextEditor::View*)), this, SLOT(unfocused(KTextEditor::View*)));
}
else
{
KMessageBox::information(this, "A KDE text-editor component could not be found.\nPlease check your KDE installation.\n\nEnhanced editing will not be used.", "KDE editor component not found", "kte-component");
- m_simpleEdit = new KTextEdit(m_value.script(), this);
- m_simpleEdit->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
- m_simpleEdit->setMinimumHeight(300);
- labelScript->setBuddy(m_simpleEdit);
- setTabOrder(varInterpreter, m_simpleEdit);
- gridLayout->addWidget(m_simpleEdit, 1, 1);
- connect(m_simpleEdit, SIGNAL(textChanged()), this, SLOT(scriptChanged()));
+ ui_simpleEdit = new KTextEdit(m_value.script(), this);
+ ui_simpleEdit->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+ ui_simpleEdit->setMinimumHeight(300);
+ labelScript->setBuddy(ui_simpleEdit);
+ setTabOrder(ui_interpreter, ui_simpleEdit);
+ gridLayout->addWidget(ui_simpleEdit, 1, 1);
+ connect(ui_simpleEdit, SIGNAL(textChanged()), this, SLOT(scriptChanged()));
return;
}
connect(this, SIGNAL(valueChanged(Sigcore::Script)), SLOT(setGui()));
@@ -115,19 +129,19 @@ Sigcore::Script Sigmodr::Widgets::ScriptWidget::value() const
void Sigmodr::Widgets::ScriptWidget::setGui()
{
- varInterpreter->setCurrentIndex(varInterpreter->findData(m_value.interpreter()));
+ ui_interpreter->setCurrentIndex(ui_interpreter->findData(m_value.interpreter()));
if (m_document)
{
- m_document->setHighlightingMode(varInterpreter->currentText());
- KTextEditor::Cursor cursor = m_view->cursorPosition();
+ m_document->setHighlightingMode(ui_interpreter->currentText());
+ KTextEditor::Cursor cursor = ui_kteEdit->cursorPosition();
m_document->setText(m_value.script());
- m_view->setCursorPosition(cursor);
+ ui_kteEdit->setCursorPosition(cursor);
}
else
{
- QTextCursor cursor = m_simpleEdit->textCursor();
- m_simpleEdit->setPlainText(m_value.script());
- m_simpleEdit->setTextCursor(cursor);
+ QTextCursor cursor = ui_simpleEdit->textCursor();
+ ui_simpleEdit->setPlainText(m_value.script());
+ ui_simpleEdit->setTextCursor(cursor);
}
}
@@ -140,11 +154,11 @@ void Sigmodr::Widgets::ScriptWidget::setValue(const Sigcore::Script& value)
}
}
-void Sigmodr::Widgets::ScriptWidget::on_varInterpreter_activated()
+void Sigmodr::Widgets::ScriptWidget::interpreterChanged(const QString& interpreter)
{
- m_value.setInterpreter(varInterpreter->itemData(varInterpreter->currentIndex()).toString());
+ m_value.setInterpreter(m_languages[interpreter]);
if (m_document)
- m_document->setHighlightingMode(varInterpreter->currentText());
+ m_document->setHighlightingMode(interpreter);
emit(valueChanged(m_value));
}
@@ -160,9 +174,9 @@ void Sigmodr::Widgets::ScriptWidget::scriptChanged()
}
else
{
- if (m_value.script() != m_simpleEdit->toPlainText())
+ if (m_value.script() != ui_simpleEdit->toPlainText())
{
- m_value.setScript(m_simpleEdit->toPlainText());
+ m_value.setScript(ui_simpleEdit->toPlainText());
emit(valueChanged(m_value));
}
}