diff options
| author | Ben Boeckel <MathStuf@gmail.com> | 2009-02-26 01:14:23 -0500 |
|---|---|---|
| committer | Ben Boeckel <MathStuf@gmail.com> | 2009-02-26 01:14:23 -0500 |
| commit | a7f0f1c9496014f87a29f9dda239e0bf03d9cbdd (patch) | |
| tree | efded3513ff93452b83a75d40987091b81a1b3c0 | |
| parent | 3f9dc2eda97999a1f2708db987d1c0d118e77755 (diff) | |
Moved Script and Fraction widgets to sigmodr/corewidgets
| -rw-r--r-- | sigmodr/corewidgets/FractionWidget.cpp (renamed from sigmodr/widgets/FractionWidget.cpp) | 97 | ||||
| -rw-r--r-- | sigmodr/corewidgets/FractionWidget.h (renamed from sigmodr/widgets/FractionWidget.h) | 33 | ||||
| -rw-r--r-- | sigmodr/corewidgets/ScriptWidget.cpp (renamed from sigmodr/widgets/ScriptWidget.cpp) | 157 | ||||
| -rw-r--r-- | sigmodr/corewidgets/ScriptWidget.h (renamed from sigmodr/widgets/ScriptWidget.h) | 43 | ||||
| -rw-r--r-- | sigmodr/corewidgets/fraction.ui (renamed from sigmodr/widgets/gui/fraction.ui) | 0 | ||||
| -rw-r--r-- | sigmodr/corewidgets/script.ui (renamed from sigmodr/widgets/gui/script.ui) | 0 |
6 files changed, 160 insertions, 170 deletions
diff --git a/sigmodr/widgets/FractionWidget.cpp b/sigmodr/corewidgets/FractionWidget.cpp index 4388661e..36a9a9ea 100644 --- a/sigmodr/widgets/FractionWidget.cpp +++ b/sigmodr/corewidgets/FractionWidget.cpp @@ -17,6 +17,7 @@ // Header include #include "FractionWidget.h" +#include "FractionWidget_p.h" // KDE includes #include <KIntNumInput> @@ -24,76 +25,59 @@ // Qt includes #include <QtCore/QFile> +#include <QtGui/QVBoxLayout> #include <QtUiTools/QUiLoader> // C includes #include <climits> using namespace Sigcore; -using namespace Sigmodr::Widgets; +using namespace Sigmodr::CoreWidgets; -FractionWidget::FractionWidget(QWidget* parent, const Fraction& value) : - QWidget(parent), +FractionWidget::Private::Private(QObject* parent, const Fraction& value) : + QObject(parent), m_value(value), m_behavior(Any) { - QFile file(":/gui/weather.ui"); +} + +QWidget* FractionWidget::Private::makeWidgets(FractionWidget* widget) +{ + QFile file(":/gui/fraction.ui"); file.open(QFile::ReadOnly); - QWidget *formWidget = QUiLoader().load(&file, this); + QWidget *formWidget = QUiLoader().load(&file, widget); file.close(); ui_numerator = formWidget->findChild<KIntNumInput*>("varNumerator"); ui_denominator = formWidget->findChild<KIntNumInput*>("varDenominator"); ui_value = formWidget->findChild<KLineEdit*>("varValue"); connect(ui_numerator, SIGNAL(valueChanged(int)), this, SLOT(numeratorChanged(int))); connect(ui_denominator, SIGNAL(valueChanged(int)), this, SLOT(denominatorChanged(int))); - connect(this, SIGNAL(valueChanged(Fraction)), SLOT(updateValue())); - connect(this, SIGNAL(valueChanged(Fraction)), SLOT(resetRanges())); - connect(this, SIGNAL(behaviorChanged(Behavior)), SLOT(resetRanges())); - resetRanges(); -} - -FractionWidget::Behavior FractionWidget::behavior() const -{ - return m_behavior; -} - -Fraction FractionWidget::value() const -{ - return m_value; + connect(this, SIGNAL(valueChanged(Sigcore::Fraction)), widget, SIGNAL(valueChanged(Sigcore::Fraction))); + connect(this, SIGNAL(valueChanged(Sigcore::Fraction)), this, SLOT(updateValue())); + connect(this, SIGNAL(valueChanged(Sigcore::Fraction)), this, SLOT(resetRanges())); + connect(widget, SIGNAL(behaviorChanged(Behavior)), this, SLOT(resetRanges())); + updateValue(); + return formWidget; } -void FractionWidget::setBehavior(const Behavior behavior) +void FractionWidget::Private::numeratorChanged(const int numerator) { - m_behavior = behavior; - emit(behaviorChanged(m_behavior)); -} - -void FractionWidget::setValue(const Fraction& value) -{ - if (!ui_value->text().isEmpty() && (m_value == value)) - return; - m_value = value; + m_value.setNumerator(numerator); emit(valueChanged(m_value)); } -void FractionWidget::updateValue() +void FractionWidget::Private::denominatorChanged(const int denominator) { - ui_value->setText(QString::number(double(m_value), 'g', 7)); -} - -void FractionWidget::numeratorChanged(const int numerator) -{ - m_value.setNumerator(numerator); + m_value.setDenominator(denominator); emit(valueChanged(m_value)); } -void FractionWidget::denominatorChanged(const int denominator) +void FractionWidget::Private::updateValue() { - m_value.setDenominator(denominator); - emit(valueChanged(m_value)); + ui_value->setText(QString::number(double(m_value), 'g', 7)); } -void FractionWidget::resetRanges() +void FractionWidget::Private::resetRanges() { ui_numerator->setValue(m_value.numerator()); ui_denominator->setValue(m_value.denominator()); @@ -118,3 +102,36 @@ void FractionWidget::resetRanges() ui_numerator->setRange(numMin, numMax); ui_denominator->setRange(denomMin, denomMax); } + +FractionWidget::FractionWidget(QWidget* parent, const Fraction& value) : + QWidget(parent), + d(new Private(this, value)) +{ + QVBoxLayout* layout = new QVBoxLayout; + layout->addWidget(d->makeWidgets(this)); + setLayout(layout); +} + +FractionWidget::Behavior FractionWidget::behavior() const +{ + return d->m_behavior; +} + +Fraction FractionWidget::value() const +{ + return d->m_value; +} + +void FractionWidget::setBehavior(const Behavior behavior) +{ + d->m_behavior = behavior; + emit(behaviorChanged(d->m_behavior)); +} + +void FractionWidget::setValue(const Fraction& value) +{ + if (d->m_value == value) + return; + d->m_value = value; + emit(valueChanged(d->m_value)); +} diff --git a/sigmodr/widgets/FractionWidget.h b/sigmodr/corewidgets/FractionWidget.h index 6520f7c5..71bb86bd 100644 --- a/sigmodr/widgets/FractionWidget.h +++ b/sigmodr/corewidgets/FractionWidget.h @@ -15,10 +15,10 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -#ifndef SIGMODRWIDGETS_FRACTIONWIDGET -#define SIGMODRWIDGETS_FRACTIONWIDGET +#ifndef SIGMODRCOREWIDGETS_FRACTIONWIDGET +#define SIGMODRCOREWIDGETS_FRACTIONWIDGET -// Sigmodr widget includes +// Sigmodr core includes #include "Global.h" // Sigcore includes @@ -27,15 +27,11 @@ // Qt includes #include <QtGui/QWidget> -// Forward declarations -class KIntNumInput; -class KLineEdit; - namespace Sigmodr { -namespace Widgets +namespace CoreWidgets { -class SIGMODRWIDGETS_EXPORT FractionWidget : public QWidget +class SIGMODRCOREWIDGETS_EXPORT FractionWidget : public QWidget { Q_OBJECT Q_PROPERTY(Sigcore::Fraction value READ value WRITE setValue USER true) @@ -59,23 +55,12 @@ class SIGMODRWIDGETS_EXPORT FractionWidget : public QWidget public slots: void setBehavior(const Behavior behavior); void setValue(const Sigcore::Fraction& value); - - void updateValue(); signals: - void valueChanged(const Sigcore::Fraction&); - void behaviorChanged(const Behavior); - protected slots: - void numeratorChanged(const int numerator); - void denominatorChanged(const int denominator); - - void resetRanges(); + void valueChanged(const Sigcore::Fraction& value); + void behaviorChanged(const Behavior behavior); private: - Sigcore::Fraction m_value; - Behavior m_behavior; - - KIntNumInput* ui_numerator; - KIntNumInput* ui_denominator; - KLineEdit* ui_value; + class Private; + Private* const d; }; } } diff --git a/sigmodr/widgets/ScriptWidget.cpp b/sigmodr/corewidgets/ScriptWidget.cpp index f128e796..dbfdcd07 100644 --- a/sigmodr/widgets/ScriptWidget.cpp +++ b/sigmodr/corewidgets/ScriptWidget.cpp @@ -17,9 +17,7 @@ // Header include #include "ScriptWidget.h" - -// Sigmodr widget includes -#include "ScriptWidget.h" +#include "ScriptWidget_p.h" // KDE includes #include <KActionCollection> @@ -43,38 +41,78 @@ #include <QtUiTools/QUiLoader> using namespace Sigcore; -using namespace Sigmodr::Widgets; +using namespace Sigmodr::CoreWidgets; ScriptWidget::ScriptWidget(QWidget* parent, const Script& value) : QWidget(parent), + d(new Private(this, value)) +{ + QVBoxLayout* layout = new QVBoxLayout; + layout->addWidget(d->makeWidgets(this)); + setLayout(layout); +} + +Script ScriptWidget::value() const +{ + return d->m_value; +} + +void ScriptWidget::setValue(const Script& value) +{ + if (d->m_value != value) + { + d->m_value = value; + emit(valueChanged(d->m_value)); + } +} + +QMap<QString, QString> ScriptWidget::Private::m_languages; + +ScriptWidget::Private::Private(QObject* parent, const Script& value) : + QObject(parent), m_value(value), ui_simpleEdit(NULL), m_editor(KTextEditor::EditorChooser::editor()), m_document(NULL) { + if (!m_languages.size()) + { + 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"; + } +} + +ScriptWidget::Private::~Private() +{ + if (m_editor) + m_editor->writeConfig(NULL); +} + +QWidget* ScriptWidget::Private::makeWidgets(ScriptWidget* widget) +{ QFile file(":/gui/script.ui"); file.open(QFile::ReadOnly); - QWidget *formWidget = QUiLoader().load(&file, this); + QWidget *formWidget = QUiLoader().load(&file, widget); 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"); + QWidget* editor; if (m_editor) { m_editor->readConfig(); - m_document = m_editor->createDocument(this); - ui_kteEdit = m_document->createView(this); + m_document = m_editor->createDocument(formWidget); + ui_kteEdit = m_document->createView(formWidget); + editor = ui_kteEdit; KActionCollection* collection = ui_kteEdit->actionCollection(); collection->action("file_save")->setVisible(false); collection->action("file_save")->setEnabled(false); @@ -87,8 +125,6 @@ ScriptWidget::ScriptWidget(QWidget* parent, const Script& value) : collection->action("edit_cut")->setVisible(false); collection->action("edit_copy")->setVisible(false); collection->action("edit_paste")->setVisible(false); - ui_kteEdit->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - ui_kteEdit->setMinimumHeight(300); KXmlGuiWindow* topLevel = qobject_cast<KXmlGuiWindow*>(KApplication::kApplication()->activeWindow()); if (topLevel) { @@ -96,68 +132,29 @@ ScriptWidget::ScriptWidget(QWidget* parent, const Script& value) : if (menu) ui_kteEdit->setContextMenu(menu); } - 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(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"); - 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); + KMessageBox::information(widget, "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"); + ui_simpleEdit = new KTextEdit(m_value.script(), widget); + editor = ui_simpleEdit; connect(ui_simpleEdit, SIGNAL(textChanged()), this, SLOT(scriptChanged())); - return; } + editor->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); + editor->setMinimumHeight(300); + labelScript->setBuddy(editor); + setTabOrder(ui_interpreter, editor); + gridLayout->addWidget(editor, 1, 1); connect(this, SIGNAL(valueChanged(Sigcore::Script)), SLOT(setGui())); + connect(this, SIGNAL(valueChanged(Sigcore::Script)), widget, SIGNAL(valueChanged(Sigcore::Script))); setGui(); + return formWidget; } -ScriptWidget::~ScriptWidget() -{ - if (m_editor) - m_editor->writeConfig(NULL); -} - -Script ScriptWidget::value() const -{ - return m_value; -} - -void ScriptWidget::setGui() -{ - ui_interpreter->setCurrentIndex(ui_interpreter->findData(m_value.interpreter())); - if (m_document) - { - m_document->setHighlightingMode(ui_interpreter->currentText()); - KTextEditor::Cursor cursor = ui_kteEdit->cursorPosition(); - m_document->setText(m_value.script()); - ui_kteEdit->setCursorPosition(cursor); - } - else - { - QTextCursor cursor = ui_simpleEdit->textCursor(); - ui_simpleEdit->setPlainText(m_value.script()); - ui_simpleEdit->setTextCursor(cursor); - } -} - -void ScriptWidget::setValue(const Script& value) -{ - if (m_value != value) - { - m_value = value; - emit(valueChanged(m_value)); - } -} - -void ScriptWidget::interpreterChanged(const QString& interpreter) +void ScriptWidget::Private::interpreterChanged(const QString& interpreter) { m_value.setInterpreter(m_languages[interpreter]); if (m_document) @@ -165,7 +162,7 @@ void ScriptWidget::interpreterChanged(const QString& interpreter) emit(valueChanged(m_value)); } -void ScriptWidget::scriptChanged() +void ScriptWidget::Private::scriptChanged() { if (m_document) { @@ -185,14 +182,14 @@ void ScriptWidget::scriptChanged() } } -void ScriptWidget::focused(KTextEditor::View* view) +void ScriptWidget::Private::focused(KTextEditor::View* view) { KXmlGuiWindow* topLevel = qobject_cast<KXmlGuiWindow*>(KApplication::kApplication()->activeWindow()); if (topLevel) topLevel->guiFactory()->addClient(view); } -void ScriptWidget::unfocused(KTextEditor::View* view) +void ScriptWidget::Private::unfocused(KTextEditor::View* view) { KXmlGuiWindow* topLevel = qobject_cast<KXmlGuiWindow*>(KApplication::kApplication()->activeWindow()); QWidget* focused = KApplication::focusWidget(); @@ -200,3 +197,21 @@ void ScriptWidget::unfocused(KTextEditor::View* view) if (topLevel && focused && ((focused->metaObject()->className() != QString("KateViewInternal")) || ((focused != view) && (QString(focused->metaObject()->className()) == view->metaObject()->className())))) topLevel->guiFactory()->removeClient(view); } + +void ScriptWidget::Private::setGui() +{ + ui_interpreter->setCurrentIndex(m_languages.values().indexOf(m_value.interpreter())); + if (m_document) + { + m_document->setHighlightingMode(ui_interpreter->currentText()); + KTextEditor::Cursor cursor = ui_kteEdit->cursorPosition(); + m_document->setText(m_value.script()); + ui_kteEdit->setCursorPosition(cursor); + } + else + { + QTextCursor cursor = ui_simpleEdit->textCursor(); + ui_simpleEdit->setPlainText(m_value.script()); + ui_simpleEdit->setTextCursor(cursor); + } +} diff --git a/sigmodr/widgets/ScriptWidget.h b/sigmodr/corewidgets/ScriptWidget.h index 05b66ea0..5629771a 100644 --- a/sigmodr/widgets/ScriptWidget.h +++ b/sigmodr/corewidgets/ScriptWidget.h @@ -15,64 +15,37 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -#ifndef SIGMODRWIDGETS_SCRIPTWIDGET -#define SIGMODRWIDGETS_SCRIPTWIDGET +#ifndef SIGMODRCOREWIDGETS_SCRIPTWIDGET +#define SIGMODRCOREWIDGETS_SCRIPTWIDGET -// Sigmodr widget includes +// Sigmodr core includes #include "Global.h" // Sigcore includes #include <sigcore/Script.h> // Qt includes -#include <QtCore/QMap> #include <QtGui/QWidget> -// Forward declarations -class KComboBox; -class KTextEdit; -namespace KTextEditor -{ -class Editor; -class Document; -class View; -} - namespace Sigmodr { -namespace Widgets +namespace CoreWidgets { -class SIGMODRWIDGETS_EXPORT ScriptWidget : public QWidget +class SIGMODRCOREWIDGETS_EXPORT ScriptWidget : public QWidget { Q_OBJECT public: explicit ScriptWidget(QWidget* parent, const Sigcore::Script& value = Sigcore::Script("", "")); - ~ScriptWidget(); Sigcore::Script value() const; public slots: void setValue(const Sigcore::Script& value); signals: - void valueChanged(const Sigcore::Script&); - protected slots: - void setGui(); - - void interpreterChanged(const QString& language); - void scriptChanged(); - - void focused(KTextEditor::View* view); - void unfocused(KTextEditor::View* view); + void valueChanged(const Sigcore::Script& value); private: - Sigcore::Script m_value; - - QMap<QString, QString> m_languages; - - KComboBox* ui_interpreter; - KTextEdit* ui_simpleEdit; - KTextEditor::View* ui_kteEdit; - KTextEditor::Editor* m_editor; - KTextEditor::Document* m_document; + class Private; + Private* const d; }; } } diff --git a/sigmodr/widgets/gui/fraction.ui b/sigmodr/corewidgets/fraction.ui index 63d95a33..63d95a33 100644 --- a/sigmodr/widgets/gui/fraction.ui +++ b/sigmodr/corewidgets/fraction.ui diff --git a/sigmodr/widgets/gui/script.ui b/sigmodr/corewidgets/script.ui index 939c5455..939c5455 100644 --- a/sigmodr/widgets/gui/script.ui +++ b/sigmodr/corewidgets/script.ui |
