diff options
Diffstat (limited to 'sigmodr/widgets/ScriptWidget.cpp')
| -rw-r--r-- | sigmodr/widgets/ScriptWidget.cpp | 102 |
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)); } } |
