diff options
| author | Mikko Syrjä <mikko@3d-system.fi> | 2019-02-12 03:37:33 +0200 |
|---|---|---|
| committer | Mikko Syrjä <mikko@3d-system.fi> | 2019-02-12 03:37:33 +0200 |
| commit | 78a0f5f0ccf9f3ace910210021190980bd6359e4 (patch) | |
| tree | ca268c6dce721ab859dff43bee8672ddfe42b7c3 | |
| parent | e27c60705740483291323c0b90faaf7f165cec4d (diff) | |
| download | symedit-78a0f5f0ccf9f3ace910210021190980bd6359e4.tar.gz symedit-78a0f5f0ccf9f3ace910210021190980bd6359e4.zip | |
UI fixes.
| -rw-r--r-- | Editor.qml | 4 | ||||
| -rw-r--r-- | main.qml | 37 | ||||
| -rw-r--r-- | symbol.cpp | 25 | ||||
| -rw-r--r-- | symbol.h | 3 | ||||
| -rw-r--r-- | symedit.cpp | 31 | ||||
| -rw-r--r-- | symedit.h | 12 |
6 files changed, 79 insertions, 33 deletions
@@ -102,6 +102,8 @@ Rectangle anchors.horizontalCenter: parent.horizontalCenter anchors.verticalCenter: parent.verticalCenter +// clip: false + function paintline(context, start, end) { context.beginPath().moveTo((start.x + max) * scalexy, (max - start.y) * scalexy) @@ -151,7 +153,7 @@ Rectangle function paintsymbol(context) { - context.lineWidth = 2 + context.lineWidth = 1.2 var previous = Qt.point(0, 0) var index, count = manager.getItemCount() @@ -13,7 +13,7 @@ ApplicationWindow property int tool: 0 id: window - visible: true + visible: false title: qsTr("Symbol editor") //%% menuBar: MenuBar @@ -43,20 +43,14 @@ ApplicationWindow MenuItem { text: qsTr("From Clipboard") //%% -// shortcut: "Ctrl+O" - onTriggered: - { - //## - } + shortcut: "Ctrl+Alt+V" + onTriggered: { manager.readClipboard() } } MenuItem { text: qsTr("To Clipboard") //%% -// shortcut: "Ctrl+S" - onTriggered: - { - //## - } + shortcut: "Ctrl+Alt+C" + onTriggered: { manager.writeClipboard() } } MenuSeparator { } MenuItem @@ -100,7 +94,7 @@ ApplicationWindow MenuItem { text: qsTr("Up") //%% -// shortcut: "Ctrl+V" + shortcut: "Alt+Up" onTriggered: { //## @@ -109,7 +103,7 @@ ApplicationWindow MenuItem { text: qsTr("Down") //%% -// shortcut: "Ctrl+V" + shortcut: "Alt+Down" onTriggered: { //## @@ -307,10 +301,7 @@ ApplicationWindow } } - Editor - { - id: editor - } + Editor { id: editor } statusBar: StatusBar { @@ -320,6 +311,7 @@ ApplicationWindow Label { Layout.minimumWidth: 40; text: " X: " + mousex } Label { Layout.minimumWidth: 40; text: " Y: " + mousey } Item { Layout.fillWidth: true } + Label { Layout.minimumWidth: 40; text: manager.getSymbol() } } } @@ -335,10 +327,10 @@ ApplicationWindow Component.onCompleted: { - x = manager.getPosition().x - y = manager.getPosition().y - width = manager.getSize().width - height = manager.getSize().height + x = manager.getWindowPos().x + y = manager.getWindowPos().y + width = manager.getWindowSize().width + height = manager.getWindowSize().height fill = manager.getFill() align = manager.getAlign() @@ -347,5 +339,8 @@ ApplicationWindow alignlist.setAlign() snaplist.setSnap() + + visible = true + manager.setInitialized() } } @@ -11,7 +11,7 @@ \param point Item position. */ SymEditSymbol::Item::Item(int operation, QPoint point) - : Operation(operation), Point(point), Fill(false) + : Operation(operation), Point(point), Fill(false), Align(9) { } @@ -41,7 +41,7 @@ void SymEditSymbol::Load(const QString& buffer) x = string.mid(1, comma - 1).toInt(); y = string.mid(comma + 1).toInt(); } - else + else // single parameter x = y = string.mid(1).toInt(); Item item(operation, QPoint(x, y)); Items.push_back(item); @@ -51,14 +51,29 @@ void SymEditSymbol::Load(const QString& buffer) //! Save symbol to string. /*! \param buffer String buffer. + \return Reference to buffer. */ -void SymEditSymbol::Save(QString& buffer) const +QString& SymEditSymbol::Save(QString& buffer) const { + auto appendvalue = [](QString& buffer, const QPoint& point, int count) + { + QString value; + buffer.append(value.setNum(point.x())); + if ( count > 1 ) + buffer.append(',').append(value.setNum(point.y())); + buffer.append(';'); + }; + buffer.clear(); - for ( const auto& item : Items ) + for ( const auto& item : Items ) switch ( item.Operation ) { - //## + case 'D': appendvalue(buffer.append('D'), item.Point, 2); break; + case 'U': appendvalue(buffer.append('U'), item.Point, 2); break; + case 'R': appendvalue(buffer.append('R'), item.Point, 1); break; } + if ( !buffer.isEmpty() && buffer.back() == ';' ) + buffer.chop(1); + return buffer; } //! Add symbol item. @@ -6,6 +6,7 @@ #include <QPoint> #include <QString> +//! Symbol class. class SymEditSymbol { public: @@ -24,7 +25,7 @@ public: }; void Load(const QString& buffer); - void Save(QString& buffer) const; + QString& Save(QString& buffer) const; Item& AddItem(int operation, QPoint point, bool fill); Item& AddItem(int operation, QPoint point, QString text, int align); diff --git a/symedit.cpp b/symedit.cpp index def3037..e41ec10 100644 --- a/symedit.cpp +++ b/symedit.cpp @@ -1,4 +1,5 @@ #include <QGuiApplication> +#include <QClipboard> #include <QSettings> #include "symedit.h" @@ -55,7 +56,7 @@ SymEditManager::SymEditManager(QObject* parent) : QObject(parent) { Settings.Load(); - Symbol.Load("U00,00;R50;U-34,-34;D34,34;U-34,34;D34,-34;"); + Symbol.Load("U00,00;R50;U-34,-34;D34,34;U-34,34;D34,-34;"); //## } //! Set window initialized. @@ -82,7 +83,7 @@ void SymEditManager::setGeometry(QPoint point, QSize size) /*! \return Window position. */ -QPoint SymEditManager::getPosition() const +QPoint SymEditManager::getWindowPos() const { return Settings.Position; } @@ -91,7 +92,7 @@ QPoint SymEditManager::getPosition() const /*! \return Window size. */ -QSize SymEditManager::getSize() const +QSize SymEditManager::getWindowSize() const { return Settings.Size; } @@ -118,6 +119,16 @@ int SymEditManager::getSnap() const { return Settings.Snap; } int SymEditManager::getTool() const { return Settings.Tool; } //@} +//! Get symbol as string. +/*! + \return Symbol as string. +*/ +QString SymEditManager::getSymbol() const +{ + QString buffer; + return Symbol.Save(buffer); +} + //! Add symbol item. /*! \param operation Item operation. @@ -207,3 +218,17 @@ int SymEditManager::selectItem(QPoint point) const return -1; //## } +//! Read symbol from clipboard. +void SymEditManager::readClipboard() +{ + if ( QClipboard* clipboard = QGuiApplication::clipboard() ) + Symbol.Load(clipboard->text()); +} + +//! Write symbol to clipboard. +void SymEditManager::writeClipboard() const +{ + if ( QClipboard* clipboard = QGuiApplication::clipboard() ) + clipboard->setText(getSymbol()); +} + @@ -11,12 +11,15 @@ //! Settings class. class SymEditSettings { + friend class SymEditManager; + public: SymEditSettings(); void Load(); void Save() const; +private: QPoint Position; //!< Window position. QSize Size; //!< Window size. @@ -40,8 +43,8 @@ public: Q_INVOKABLE void setInitialized(); Q_INVOKABLE void setGeometry(QPoint point, QSize size); - Q_INVOKABLE QPoint getPosition() const; - Q_INVOKABLE QSize getSize() const; + Q_INVOKABLE QPoint getWindowPos() const; + Q_INVOKABLE QSize getWindowSize() const; Q_INVOKABLE void setFill(bool fill); Q_INVOKABLE void setAlign(int align); @@ -53,6 +56,8 @@ public: Q_INVOKABLE int getTool() const; Q_INVOKABLE int getSnap() const; + Q_INVOKABLE QString getSymbol() const; + Q_INVOKABLE void addItem(int operation, QPoint point, bool fill); Q_INVOKABLE void addText(int operation, QPoint point, QString text, int align); Q_INVOKABLE void removeItem(int index); @@ -65,6 +70,9 @@ public: Q_INVOKABLE int selectItem(QPoint point) const; + Q_INVOKABLE void readClipboard(); + Q_INVOKABLE void writeClipboard() const; + private: bool Initialized = false; //!< Initialization mutex. SymEditSymbol Symbol; //!< Current symbol. |
