aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikko Syrjä <mikko@3d-system.fi>2019-02-12 03:37:33 +0200
committerMikko Syrjä <mikko@3d-system.fi>2019-02-12 03:37:33 +0200
commit78a0f5f0ccf9f3ace910210021190980bd6359e4 (patch)
treeca268c6dce721ab859dff43bee8672ddfe42b7c3
parente27c60705740483291323c0b90faaf7f165cec4d (diff)
downloadsymedit-78a0f5f0ccf9f3ace910210021190980bd6359e4.tar.gz
symedit-78a0f5f0ccf9f3ace910210021190980bd6359e4.zip
UI fixes.
-rw-r--r--Editor.qml4
-rw-r--r--main.qml37
-rw-r--r--symbol.cpp25
-rw-r--r--symbol.h3
-rw-r--r--symedit.cpp31
-rw-r--r--symedit.h12
6 files changed, 79 insertions, 33 deletions
diff --git a/Editor.qml b/Editor.qml
index 2b030bc..bdd2156 100644
--- a/Editor.qml
+++ b/Editor.qml
@@ -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()
diff --git a/main.qml b/main.qml
index ea8dc88..b411df2 100644
--- a/main.qml
+++ b/main.qml
@@ -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()
}
}
diff --git a/symbol.cpp b/symbol.cpp
index 604f91e..9a56d19 100644
--- a/symbol.cpp
+++ b/symbol.cpp
@@ -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.
diff --git a/symbol.h b/symbol.h
index c7d92d2..cc62559 100644
--- a/symbol.h
+++ b/symbol.h
@@ -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());
+}
+
diff --git a/symedit.h b/symedit.h
index 8e9ec9d..248bbc7 100644
--- a/symedit.h
+++ b/symedit.h
@@ -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.