aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikko Syrjä <mikko@3d-system.fi>2019-02-26 22:33:42 +0200
committerMikko Syrjä <mikko@3d-system.fi>2019-02-26 22:33:42 +0200
commite1b36719796209bfe47320c493b708d27dab3f25 (patch)
treef4eacb22a521126c4faa6e6d5940e4aa94591e14
parentde0acfd2b1e83c58659f9293e1b23f196a14ef9e (diff)
downloadsymedit-e1b36719796209bfe47320c493b708d27dab3f25.tar.gz
symedit-e1b36719796209bfe47320c493b708d27dab3f25.zip
Implemented raise and lower.
-rw-r--r--image/down_icon&48.png (renamed from image/br_down_icon&48.png)bin4097 -> 4097 bytes
-rw-r--r--image/up_icon&48.png (renamed from image/br_up_icon&48.png)bin4043 -> 4043 bytes
-rw-r--r--main.qml42
-rw-r--r--qml.qrc2
-rw-r--r--symbol.cpp26
-rw-r--r--symbol.h1
-rw-r--r--symedit.cpp81
-rw-r--r--symedit.h23
8 files changed, 109 insertions, 66 deletions
diff --git a/image/br_down_icon&48.png b/image/down_icon&48.png
index cda9e0c..cda9e0c 100644
--- a/image/br_down_icon&48.png
+++ b/image/down_icon&48.png
Binary files differ
diff --git a/image/br_up_icon&48.png b/image/up_icon&48.png
index 31fecf0..31fecf0 100644
--- a/image/br_up_icon&48.png
+++ b/image/up_icon&48.png
Binary files differ
diff --git a/main.qml b/main.qml
index 14e87f8..c8700ec 100644
--- a/main.qml
+++ b/main.qml
@@ -49,6 +49,9 @@ ApplicationWindow
MenuItem { text: qsTr("Rotate Right"); shortcut: "Alt+Right"; onTriggered: rotate(1) } //%%
MenuItem { text: qsTr("Rotate Left"); shortcut: "Alt+Left"; onTriggered: rotate(-1) } //%%
MenuSeparator { }
+ MenuItem { text: qsTr("Raise Item"); shortcut: "Alt+Up"; onTriggered: raise(1) } //%%
+ MenuItem { text: qsTr("Lower Item"); shortcut: "Alt+Down"; onTriggered: raise(-1) } //%%
+ MenuSeparator { }
MenuItem { text: qsTr("Delete"); shortcut: "Delete"; onTriggered: remove() } //%%
}
Menu
@@ -101,9 +104,9 @@ ApplicationWindow
{
height: 32
z: 10
- BarTool { image: "image/open_icon&48.png"; tooltip: "Open File"; onClicked: open() } //%%
- BarTool { image: "image/save_icon&48.png"; tooltip: "Save File"; onClicked: save() } //%%
- BarSeparator { }
+// BarTool { image: "image/open_icon&48.png"; tooltip: "Open File"; onClicked: open() } //%%
+// BarTool { image: "image/save_icon&48.png"; tooltip: "Save File"; onClicked: save() } //%%
+// BarSeparator { }
BarTool { image: "image/undo_icon&48.png"; tooltip: "Undo Edit"; onClicked: undo(true) } //%%
BarTool { image: "image/redo_icon&48.png"; tooltip: "Redo Edit"; onClicked: undo(false) } //%%
BarTool { image: "image/cut_icon&48.png"; tooltip: "Cut Symbol"; onClicked: cut() } //%%
@@ -112,6 +115,8 @@ ApplicationWindow
BarSeparator { }
BarTool { image: "image/rotate_right.png"; tooltip: "Rotate right"; onClicked: rotate(1) } //%%
BarTool { image: "image/rotate_left.png"; tooltip: "Rotate left"; onClicked: rotate(-1) } //%%
+ BarTool { image: "image/up_icon&48.png"; tooltip: "Raise item"; onClicked: raise(1) } //%%
+ BarTool { image: "image/down_icon&48.png"; tooltip: "Lower item"; onClicked: raise(-1) } //%%
BarTool { image: "image/delete.png"; tooltip: "Delete item"; onClicked: remove() } //%%
BarSeparator { }
BarTool { image: "image/cursor_icon&48.png"; tooltip: "Select item"; tool: Editor.Tool.Select } //%%
@@ -222,12 +227,12 @@ ApplicationWindow
onWidthChanged: { manager.setGeometry(Qt.point(x, y), Qt.size(width, height)) }
onHeightChanged: { manager.setGeometry(Qt.point(x, y), Qt.size(width, height)) }
- onFillitemChanged: { manager.setFillItem(fillitem); }
- onAlignmentChanged: { manager.setAlignment(alignment); }
- onLinewidthChanged: { manager.setLineWidth(linewidth); }
- onTextsizeChanged: { manager.setTextSize(textsize); }
- onSnapgridChanged: { manager.setSnapGrid(snapgrid); }
- onToolChanged: { manager.setTool(tool); }
+ onFillitemChanged: { manager.setIntSetting("FillItem", fillitem); }
+ onAlignmentChanged: { manager.setIntSetting("Alignment", alignment); }
+ onLinewidthChanged: { manager.setIntSetting("LineWidth", linewidth); }
+ onTextsizeChanged: { manager.setIntSetting("TextSize", textsize); }
+ onSnapgridChanged: { manager.setIntSetting("SnapGrid", snapgrid); }
+ onToolChanged: { manager.setIntSetting("Tool", tool); }
Component.onCompleted:
{
@@ -236,12 +241,12 @@ ApplicationWindow
width = manager.getWindowSize().width
height = manager.getWindowSize().height
- fillitem = manager.getFillItem()
- alignment = manager.getAlignment()
- linewidth = manager.getLineWidth()
- textsize = manager.getTextSize()
- snapgrid = manager.getSnapGrid()
- tool = manager.getTool()
+ fillitem = manager.getIntSetting("FillItem")
+ alignment = manager.getIntSetting("Alignment")
+ linewidth = manager.getIntSetting("LineWidth")
+ textsize = manager.getIntSetting("TextSize")
+ snapgrid = manager.getIntSetting("SnapGrid")
+ tool = manager.getIntSetting("Tool")
filllist.setFill()
snaplist.setSnap()
@@ -323,6 +328,13 @@ ApplicationWindow
editor.update()
}
+ function raise(dir)
+ {
+ manager.raiseItem(dir)
+ symbol = manager.getSymbol()
+ editor.update()
+ }
+
function remove()
{
manager.removeItem()
diff --git a/qml.qrc b/qml.qrc
index 160d80d..c841b7a 100644
--- a/qml.qrc
+++ b/qml.qrc
@@ -25,5 +25,7 @@
<file>image/cut_icon&amp;48.png</file>
<file>image/paste_icon&amp;48.png</file>
<file>image/open_icon&amp;48.png</file>
+ <file>image/down_icon&amp;48.png</file>
+ <file>image/up_icon&amp;48.png</file>
</qresource>
</RCC>
diff --git a/symbol.cpp b/symbol.cpp
index ea24933..32dd7d0 100644
--- a/symbol.cpp
+++ b/symbol.cpp
@@ -291,3 +291,29 @@ void SymEditSymbol::RotateSymbol(int dir)
rotate(item.Value, dir);
}
}
+
+//! Raise or lower item.
+/*!
+ \param dir Positive value raises, negative lowers.
+ \return True for success.
+*/
+bool SymEditSymbol::RaiseItem(int dir)
+{
+ if ( !Items.empty() )
+ {
+ size_t index = static_cast<size_t>(ActiveIndex);
+ if ( dir > 0 && index < Items.size() - 1 ) // raise
+ {
+ std::swap(Items[index], Items[index + 1]);
+ ++ActiveIndex;
+ return true;
+ }
+ if ( dir < 0 && index > 0 ) // lower
+ {
+ std::swap(Items[index - 1], Items[index]);
+ --ActiveIndex;
+ return true;
+ }
+ }
+ return false;
+}
diff --git a/symbol.h b/symbol.h
index 7bd0237..633e2a4 100644
--- a/symbol.h
+++ b/symbol.h
@@ -44,6 +44,7 @@ public:
const Item& GetItem(int index) const;
void RotateSymbol(int dir);
+ bool RaiseItem(int dir);
private:
std::vector<Item> Items; //!< Symbol items.
diff --git a/symedit.cpp b/symedit.cpp
index 0c9d831..56bcb39 100644
--- a/symedit.cpp
+++ b/symedit.cpp
@@ -8,9 +8,14 @@
// settings functions
//
//! Constructor.
-SymEditSettings::SymEditSettings() : FillItem(0), Alignment(9), LineWidth(1), TextSize(1), SnapGrid(5), Tool(1)
+SymEditSettings::SymEditSettings()
{
-
+ Values.emplace("FillItem", 0);
+ Values.emplace("Alignment", 9);
+ Values.emplace("LineWidth", 1);
+ Values.emplace("TextSize", 1);
+ Values.emplace("SnapGrid", 5);
+ Values.emplace("Tool", 1);
}
//! Load settings.
@@ -23,12 +28,12 @@ void SymEditSettings::Load()
Size.setWidth(settings.value("window/width", 500).toInt());
Size.setHeight(settings.value("window/height", 500).toInt());
- FillItem = settings.value("editor/fill", 0).toInt();
- Alignment = settings.value("editor/align", 9).toInt();
- LineWidth = settings.value("editor/width", 1).toInt();
- TextSize = settings.value("editor/size", 1).toInt();
- SnapGrid = settings.value("editor/snap", 5).toInt();
- Tool = settings.value("editor/tool", 1).toInt();
+ Values.at("FillItem") = settings.value("editor/fill", 0).toInt();
+ Values.at("Alignment") = settings.value("editor/align", 9).toInt();
+ Values.at("LineWidth") = settings.value("editor/width", 1).toInt();
+ Values.at("TextSize") = settings.value("editor/size", 1).toInt();
+ Values.at("SnapGrid") = settings.value("editor/snap", 5).toInt();
+ Values.at("Tool") = settings.value("editor/tool", 1).toInt();
}
//! Save settings.
@@ -41,12 +46,12 @@ void SymEditSettings::Save() const
settings.setValue("window/width", Size.width());
settings.setValue("window/height", Size.height());
- settings.setValue("editor/fill", FillItem);
- settings.setValue("editor/align", Alignment);
- settings.setValue("editor/width", LineWidth);
- settings.setValue("editor/size", TextSize);
- settings.setValue("editor/snap", SnapGrid);
- settings.setValue("editor/tool", Tool);
+ settings.setValue("editor/fill", Values.at("FillItem"));
+ settings.setValue("editor/align", Values.at("Alignment"));
+ settings.setValue("editor/width", Values.at("LineWidth"));
+ settings.setValue("editor/size", Values.at("TextSize"));
+ settings.setValue("editor/snap", Values.at("SnapGrid"));
+ settings.setValue("editor/tool", Values.at("Tool"));
}
//
@@ -101,31 +106,28 @@ QSize SymEditManager::getWindowSize() const
return Settings.Size;
}
-//@{
//! Set setting value.
/*!
+ \param name Setting name.
\param value Setting value.
*/
-void SymEditManager::setFillItem(int value) { Settings.FillItem = value; }
-void SymEditManager::setAlignment(int value) { Settings.Alignment = value; }
-void SymEditManager::setLineWidth(int value) { Settings.LineWidth = value; }
-void SymEditManager::setTextSize(int value) { Settings.TextSize = value; }
-void SymEditManager::setSnapGrid(int value) { Settings.SnapGrid = value; }
-void SymEditManager::setTool(int value) { Settings.Tool = value; }
-//@}
-
-//@{
+void SymEditManager::setIntSetting(QString name, int value)
+{
+ if ( Settings.Values.find(name) != Settings.Values.end() )
+ Settings.Values.at(name) = value;
+}
+
//! Get setting value.
/*!
+ \param name Setting name.
\return Setting value.
*/
-int SymEditManager::getFillItem() const { return Settings.FillItem; }
-int SymEditManager::getAlignment() const { return Settings.Alignment; }
-int SymEditManager::getLineWidth() const { return Settings.LineWidth; }
-int SymEditManager::getTextSize() const { return Settings.TextSize; }
-int SymEditManager::getSnapGrid() const { return Settings.SnapGrid; }
-int SymEditManager::getTool() const { return Settings.Tool; }
-//@}
+int SymEditManager::getIntSetting(QString name) const
+{
+ if ( Settings.Values.find(name) != Settings.Values.end() )
+ return Settings.Values.at(name);
+ return 0;
+}
//! Get symbol as string.
/*!
@@ -350,7 +352,7 @@ void SymEditManager::pasteClipboard()
//! Rotate symbol.
/*!
- \param dir Positive value rotates right, negative left
+ \param dir Positive value rotates right, negative left.
*/
void SymEditManager::rotateSymbol(int dir)
{
@@ -358,6 +360,21 @@ void SymEditManager::rotateSymbol(int dir)
Symbol.RotateSymbol(dir);
}
+//! Raise or lower item.
+/*!
+ \param dir Positive value raises, negative lowers.
+ \return True for success.
+*/
+bool SymEditManager::raiseItem(int dir)
+{
+ if ( Symbol.GetItemCount() )
+ {
+ undosave();
+ return Symbol.RaiseItem(dir);
+ }
+ return false;
+}
+
//! Undo edit operation.
/*!
\param undo True undoes, false redoes.
diff --git a/symedit.h b/symedit.h
index ba6e822..2bc44bd 100644
--- a/symedit.h
+++ b/symedit.h
@@ -25,12 +25,7 @@ private:
QPoint Position; //!< Window position.
QSize Size; //!< Window size.
- int FillItem; //!< Fill object.
- int Alignment; //!< Text alignment.
- int LineWidth; //!< Line width.
- int TextSize; //!< Text size.
- int SnapGrid; //!< Snap granularity.
- int Tool; //!< Current tool.
+ std::map<QString, int> Values; //!< Setting values.
};
//! Manager class.
@@ -50,19 +45,8 @@ public:
Q_INVOKABLE QPoint getWindowPos() const;
Q_INVOKABLE QSize getWindowSize() const;
- Q_INVOKABLE void setFillItem(int fill);
- Q_INVOKABLE void setAlignment(int align);
- Q_INVOKABLE void setLineWidth(int align);
- Q_INVOKABLE void setTextSize(int size);
- Q_INVOKABLE void setSnapGrid(int snap);
- Q_INVOKABLE void setTool(int tool);
-
- Q_INVOKABLE int getFillItem() const;
- Q_INVOKABLE int getAlignment() const;
- Q_INVOKABLE int getLineWidth() const;
- Q_INVOKABLE int getTextSize() const;
- Q_INVOKABLE int getSnapGrid() const;
- Q_INVOKABLE int getTool() const;
+ Q_INVOKABLE void setIntSetting(QString name, int value);
+ Q_INVOKABLE int getIntSetting(QString name) const;
Q_INVOKABLE QString getSymbol() const;
@@ -88,6 +72,7 @@ public:
Q_INVOKABLE void pasteClipboard();
Q_INVOKABLE void rotateSymbol(int dir);
+ Q_INVOKABLE bool raiseItem(int dir);
Q_INVOKABLE bool undo(bool undo);