summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Boeckel <MathStuf@gmail.com>2009-02-26 01:14:23 -0500
committerBen Boeckel <MathStuf@gmail.com>2009-02-26 01:14:23 -0500
commita7f0f1c9496014f87a29f9dda239e0bf03d9cbdd (patch)
treeefded3513ff93452b83a75d40987091b81a1b3c0
parent3f9dc2eda97999a1f2708db987d1c0d118e77755 (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