aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikko Syrjä <mikko@3d-system.fi>2019-03-19 23:47:34 +0200
committerMikko Syrjä <mikko@3d-system.fi>2019-03-19 23:47:34 +0200
commitb4a39f7c233c1f26eb9874fc1221ea1408a3fa97 (patch)
tree74943397ecfc3a1ab9ce34152e3f1bd96c26bc51
parent1e0dfa10ac89907750309c5a618997c074c03a9b (diff)
downloadsymedit-b4a39f7c233c1f26eb9874fc1221ea1408a3fa97.tar.gz
symedit-b4a39f7c233c1f26eb9874fc1221ea1408a3fa97.zip
Added color support.
-rw-r--r--Editor.qml56
-rw-r--r--help/eng/tools.rst45
-rw-r--r--help/eng/usage.rst2
-rw-r--r--help/fin/tools.rst43
-rw-r--r--help/fin/usage.rst2
-rw-r--r--image/icon.krabin0 -> 46368 bytes
-rw-r--r--locale/symedit.en_GB.ts102
-rw-r--r--locale/symedit.fi_FI.ts104
-rw-r--r--locale/symedit.ts128
-rw-r--r--main.qml103
-rw-r--r--symbol.cpp66
-rw-r--r--symbol.h13
-rw-r--r--symedit.cpp51
-rw-r--r--symedit.h7
-rw-r--r--symedit.pro3
15 files changed, 442 insertions, 283 deletions
diff --git a/Editor.qml b/Editor.qml
index 16be1fd..ae0fde1 100644
--- a/Editor.qml
+++ b/Editor.qml
@@ -19,7 +19,6 @@ Rectangle
property int units: 100
property int max: units / 2
- property int grid: 10
property int offsetx: 100
property int offsety: 50
property int totalx: units + offsetx * 2 // 300
@@ -98,7 +97,7 @@ Rectangle
{
if ( tool === Editor.Tool.Line )
{
- manager.addPointItem(Operation.Line, Qt.point(startx, starty), Qt.point(endx, endy), false)
+ manager.addPointItem(Operation.Line, Qt.point(startx, starty), Qt.point(endx, endy), colorindex, 0)
symbol = manager.getSymbol()
}
else if ( tool === Editor.Tool.RectCenter || tool === Editor.Tool.RectCorner )
@@ -108,7 +107,7 @@ Rectangle
startx -= (endx - startx)
starty -= (endy - starty)
}
- if ( manager.addPointItem(Operation.Rectangle, Qt.point(startx, starty), Qt.point(endx, endy), fillitem) )
+ if ( manager.addPointItem(Operation.Rectangle, Qt.point(startx, starty), Qt.point(endx, endy), colorindex, fillitem) )
symbol = manager.getSymbol()
}
else if ( tool > 30 && tool < 40 ) // circle
@@ -134,7 +133,7 @@ Rectangle
centerx = startx
centery = starty
}
- if ( manager.addValueItem(Operation.Circle, Qt.point(centerx, centery), radius, fillitem) )
+ if ( manager.addValueItem(Operation.Circle, Qt.point(centerx, centery), radius, colorindex, fillitem) )
symbol = manager.getSymbol()
}
else if ( tool > 40 && tool < 50 ) // arc
@@ -143,7 +142,7 @@ Rectangle
}
else if ( tool > 50 && tool < 60 ) // text
{
- if ( manager.addTextItem(Operation.Text, Qt.point(endx, endy), textvalue, alignment) )
+ if ( manager.addTextItem(Operation.Text, Qt.point(endx, endy), textvalue, colorindex, alignment) )
symbol = manager.getSymbol()
}
}
@@ -236,8 +235,23 @@ Rectangle
}
}
+ function setcolorindex(context, color)
+ {
+ switch ( color )
+ {
+ case 0: paintcolor = "white"; break
+ case 1: paintcolor = "black"; break
+ case 2: paintcolor = "blue"; break
+ case 3: paintcolor = "red"; break
+ case 4: paintcolor = "green"; break
+ case 5: paintcolor = "yellow"; break
+ default: paintcolor = "black"; break
+ }
+ }
+
function painttext(context, string, point, active)
{
+ var currentwidth = context.lineWidth
context.lineWidth = textsize * (preview ? zoommin : zoomscale) / 2
var fontsize = 30 * textsize * (preview ? zoommin : zoomscale)
context.font = fontsize.toString() + "px sans-serif"
@@ -252,7 +266,7 @@ Rectangle
if ( active )
context.fillStyle = paintcolor
}
- context.lineWidth = linewidth * zoomscale * 2
+ context.lineWidth = currentwidth
}
function paintgrid(context)
@@ -262,9 +276,9 @@ Rectangle
if ( viewgrid && !preview )
{
var row, col;
- for ( row = -max; row <= max; row += grid )
+ for ( row = -max; row <= max; row += snapgrid )
paintline(context, Qt.point(-max, row), Qt.point(max, row))
- for ( col = -max; col <= max; col += grid )
+ for ( col = -max; col <= max; col += snapgrid )
paintline(context, Qt.point(col, -max), Qt.point(col, max))
context.lineWidth = 1
@@ -277,18 +291,27 @@ Rectangle
function paintsymbol(context)
{
+ setcolorindex(context, 1)
context.lineWidth = linewidth * (preview ? zoommin * 2 : zoomscale) * 2
- var active = manager.getActiveIndex();
+ var currentcolor = 1
+ var active = manager.getActiveIndex()
var index, count = manager.getItemCount()
for ( index = 0; index < count; index++ )
{
- if ( !preview )
- context.strokeStyle = (index === active ? editcolor : paintcolor)
-
var operation = manager.getItemOperation(index)
var point, position = manager.getItemPosition(index)
var radius, fill = manager.getItemFill(index)
+
+ var color = manager.getItemColor(index)
+ if ( color !== currentcolor )
+ {
+ setcolorindex(context, color)
+ currentcolor = color
+ }
+ context.strokeStyle = (index === active && !preview ? editcolor : paintcolor)
+ context.fillStyle = paintcolor
+
if ( operation === Operation.Line )
{
point = manager.getItemPoint(index)
@@ -331,19 +354,16 @@ Rectangle
onPaint:
{
var context = getContext("2d")
-
- paintrect(context, Qt.point(-max - offsetx, max + offsety), Qt.size(totalx, totaly), 3)
-
- context.strokeStyle = paintcolor
- context.fillStyle = paintcolor
context.lineCap = "round"
+ paintrect(context, Qt.point(-max - offsetx, max + offsety), Qt.size(totalx, totaly), 3)
paintsymbol(context)
if ( down )
{
+ setcolorindex(context, colorindex)
context.strokeStyle = editcolor
-// context.fillStyle = editcolor
+ context.fillStyle = paintcolor
var cornerx = (mousex < startx ? mousex : startx)
var cornery = (mousey > starty ? mousey : starty)
diff --git a/help/eng/tools.rst b/help/eng/tools.rst
index 6e9ab2d..7107c04 100644
--- a/help/eng/tools.rst
+++ b/help/eng/tools.rst
@@ -6,9 +6,9 @@ Available drawing tools.
Drawing methods
---------------
-Kaikki piirtotavat toimivat samalla tavalla. Hiiren painikkeen painaminen määrittää kohteen alkupisteen. Hiiren siirto painike pohjassa siirtää loppupistettä ja piirtää kohdetta reaaliajassa. Painikkeen vapauttaminen luo symboliin uuden kohteen ja aktivoi sen aktiiviseksi kohteeksi.
+All drawing methods behave same way. Pressing the mouse button defines starting point. Moving mouse while pressing the button changes end point and draws item in real time. Releasing the button creates new item to the symbol and makes it active item.
-Kohteen alku- ja loppupisteen on oltava eri paikoissa eli hiiren painikkeen vapauttaminen alkupisteessä ei luo uutta kohdetta.
+Item start and end points must be different. Releasing the mouse button at start point does not create new item.
.. |select image| image:: ../../image/cursor_icon&48.png
:scale: 50 %
@@ -16,7 +16,7 @@ Kohteen alku- ja loppupisteen on oltava eri paikoissa eli hiiren painikkeen vapa
|select image| Select
^^^^^^^^^^^^^^^^^^^^^
-Valitsee hiirellä osoitetun kohteen aktiiviseksi. Alueet valitaan osoittamalla reunaviivaa ja tekstit osoittamalla kiinnityspistettä.
+Activates nearest pointed item. Areas are selected by pointing the perimeter and texts are selected by pointing the anchor point.
.. |line image| image:: ../../image/polyline.png
:scale: 50 %
@@ -89,39 +89,44 @@ Draws text to given position.
Settings
--------
-xxx
+Upper line settings affect only symbol editor. Lower line settings are stored with symbol.
-Snap
-^^^^
-
-xxx
-
-Fill
-^^^^
-
-xxx
+Grid Snap
+^^^^^^^^^
-1. No fill
-2. Backgroud
-3. Area fill
+Grid snap in editing.
Line width
^^^^^^^^^^
-Line width in editing. Does not save with symbol.
+Line width in editing.
Text size
^^^^^^^^^
-Text size in editing. Does not save with symbol.
+Text size in editing.
-Alignment
+Color index
+^^^^^^^^^^^
+
+3D-Win code file color index.
+
+Item Fill
^^^^^^^^^
+Item fill mode.
+
+1. No fill
+2. Backgroud
+3. Area fill
+
+Text Alignment
+^^^^^^^^^^^^^^
+
Text alignment value 1-12.
Text
^^^^
-xxx
+Symbol text.
diff --git a/help/eng/usage.rst b/help/eng/usage.rst
index 8a64bc1..c2322db 100644
--- a/help/eng/usage.rst
+++ b/help/eng/usage.rst
@@ -38,7 +38,7 @@ See :doc:`menu`.
Toolbar
^^^^^^^
-Toolbar upper line contains buttons for menu functions. Second line contains drawing setting items.
+Toolbar upper line contains buttons for menu functions. Other lines contain drawing setting items.
See :doc:`tools`.
diff --git a/help/fin/tools.rst b/help/fin/tools.rst
index 481f1b7..f69fdbd 100644
--- a/help/fin/tools.rst
+++ b/help/fin/tools.rst
@@ -1,7 +1,7 @@
Piirtotyökalut
==============
-Käytetettävissä olevat piirtptyökalut.
+Käytetettävissä olevat piirtotyökalut.
Piirtotavat
-----------
@@ -89,39 +89,44 @@ Piirtää tekstin annettuun kohtaan.
Asetukset
---------
-xxx
+Ylemmän rivin asetukset vaikuttavat vain symbolieditoriin. Alemman rivin asetukset tallentuvat symbolin mukana.
-Tartunta
-^^^^^^^^
+Ruudukon tartunta
+^^^^^^^^^^^^^^^^^
-xxx
-
-Täyttö
-^^^^^^
-
-xxx
-
-1. Ei täyttöä
-2. Taustaväri
-3. Alueen täyttö
+Ruudukon tartunta editoinnissa.
Viivan leveys
^^^^^^^^^^^^^
-Viivan leveys editoinnissa. Ei tallennu symbolin mukana.
+Viivan leveys editoinnissa.
Tekstin koko
^^^^^^^^^^^^
-Tekstin koko editoinnissa. Ei tallennu symbolin mukana.
+Tekstin koko editoinnissa.
+
+Värin indeksi
+^^^^^^^^^^^^^
+
+Värin indeksi 3D-Win kooditaulukon mukaan.
+
+Kohteen täyttö
+^^^^^^^^^^^^^^
+
+Kohteen täyttömoodi.
+
+1. Ei täyttöä
+2. Taustaväri
+3. Alueen täyttö
-Asemointi
-^^^^^^^^^
+Tekstin asemointi
+^^^^^^^^^^^^^^^^^
Tekstin asemointi 1-12.
Teksti
^^^^^^
-xxx
+Symbolin teksti.
diff --git a/help/fin/usage.rst b/help/fin/usage.rst
index e21fedf..627e345 100644
--- a/help/fin/usage.rst
+++ b/help/fin/usage.rst
@@ -38,7 +38,7 @@ Katso :doc:`menu`.
Työkalupalkki
^^^^^^^^^^^^^
-Työkalupalkin ylemmällä rivillä ovat painikkeet valikon toiminnoille ja toisella rivillä piirron asetuksille.
+Työkalupalkin ylemmällä rivillä ovat painikkeet valikon toiminnoille. Muilla riveillä ovat piirron asetukset.
Katso :doc:`tools`.
diff --git a/image/icon.kra b/image/icon.kra
new file mode 100644
index 0000000..b1bb9d9
--- /dev/null
+++ b/image/icon.kra
Binary files differ
diff --git a/locale/symedit.en_GB.ts b/locale/symedit.en_GB.ts
index 737c738..726be0e 100644
--- a/locale/symedit.en_GB.ts
+++ b/locale/symedit.en_GB.ts
@@ -153,19 +153,19 @@
<source></source>
<translation>About</translation>
</message>
- <message id="id_tooltip_file_open">
- <source></source>
- <translation>Open file</translation>
- </message>
- <message id="id_tooltip_file_save">
- <source></source>
- <translation>Save file</translation>
- </message>
- <message id="id_tooltip_file_save_as">
- <source></source>
- <translation>Save file with other name</translation>
- </message>
- <message id="id_tooltip_edit_undo">
+ <message id="id_tooltip_file_open">
+ <source></source>
+ <translation type="vanished">Open file</translation>
+ </message>
+ <message id="id_tooltip_file_save">
+ <source></source>
+ <translation type="vanished">Save file</translation>
+ </message>
+ <message id="id_tooltip_file_save_as">
+ <source></source>
+ <translation type="vanished">Save file with other name</translation>
+ </message>
+ <message id="id_tooltip_edit_undo">
<source></source>
<translation>Undo edit</translation>
</message>
@@ -255,33 +255,61 @@
</message>
<message id="id_toolbar_snap_grid">
<source></source>
- <translation>Snap Grid</translation>
+ <translation>Grid Snap</translation>
</message>
- <message id="id_toolbar_fill_item">
- <source></source>
- <translation>Fill Item</translation>
- </message>
- <message id="id_toolbar_fill_none">
- <source></source>
- <translation>0 No fill</translation>
- </message>
- <message id="id_toolbar_fill_back">
- <source></source>
- <translation>1 Background</translation>
- </message>
- <message id="id_toolbar_fill_area">
- <source></source>
- <translation>2 Fill area</translation>
- </message>
- <message id="id_toolbar_line_width">
- <source></source>
- <translation>Line Width</translation>
- </message>
- <message id="id_toolbar_text_size">
+ <message id="id_toolbar_line_width">
+ <source></source>
+ <translation>Line Width</translation>
+ </message>
+ <message id="id_toolbar_text_size">
+ <source></source>
+ <translation>Text Size</translation>
+ </message>
+ <message id="id_toolbar_color_index">
<source></source>
- <translation>Text Size</translation>
+ <translation>Color Index</translation>
</message>
- <message id="id_toolbar_alignment">
+ <message id="id_toolbar_color_white">
+ <source></source>
+ <translation>0 White</translation>
+ </message>
+ <message id="id_toolbar_color_black">
+ <source></source>
+ <translation>1 Black</translation>
+ </message>
+ <message id="id_toolbar_color_blue">
+ <source></source>
+ <translation>2 Blue</translation>
+ </message>
+ <message id="id_toolbar_color_red">
+ <source></source>
+ <translation>3 Red</translation>
+ </message>
+ <message id="id_toolbar_color_green">
+ <source></source>
+ <translation>4 Green</translation>
+ </message>
+ <message id="id_toolbar_color_yellow">
+ <source></source>
+ <translation>5 Yellow</translation>
+ </message>
+ <message id="id_toolbar_fill_item">
+ <source></source>
+ <translation>Item Fill</translation>
+ </message>
+ <message id="id_toolbar_fill_none">
+ <source></source>
+ <translation>0 No fill</translation>
+ </message>
+ <message id="id_toolbar_fill_back">
+ <source></source>
+ <translation>1 Background</translation>
+ </message>
+ <message id="id_toolbar_fill_area">
+ <source></source>
+ <translation>2 Fill area</translation>
+ </message>
+ <message id="id_toolbar_alignment">
<source></source>
<translation>Alignment</translation>
</message>
diff --git a/locale/symedit.fi_FI.ts b/locale/symedit.fi_FI.ts
index b0aea4b..50c4050 100644
--- a/locale/symedit.fi_FI.ts
+++ b/locale/symedit.fi_FI.ts
@@ -153,19 +153,19 @@
<source></source>
<translation>Tietoja</translation>
</message>
- <message id="id_tooltip_file_open">
- <source></source>
- <translation>Avaa tiedosto</translation>
- </message>
- <message id="id_tooltip_file_save">
- <source></source>
- <translation>Tallenna tiedosto</translation>
- </message>
- <message id="id_tooltip_file_save_as">
- <source></source>
- <translation>Tallenna tiedosto nimellä</translation>
- </message>
- <message id="id_tooltip_edit_undo">
+ <message id="id_tooltip_file_open">
+ <source></source>
+ <translation type="vanished">Avaa tiedosto</translation>
+ </message>
+ <message id="id_tooltip_file_save">
+ <source></source>
+ <translation type="vanished">Tallenna tiedosto</translation>
+ </message>
+ <message id="id_tooltip_file_save_as">
+ <source></source>
+ <translation type="vanished">Tallenna tiedosto nimellä</translation>
+ </message>
+ <message id="id_tooltip_edit_undo">
<source></source>
<translation>Kumoa toiminto</translation>
</message>
@@ -255,35 +255,63 @@
</message>
<message id="id_toolbar_snap_grid">
<source></source>
- <translation>Tartunta</translation>
+ <translation>Ruudukon tartunta</translation>
</message>
- <message id="id_toolbar_fill_item">
- <source></source>
- <translation>Täyttö</translation>
- </message>
- <message id="id_toolbar_fill_none">
- <source></source>
- <translation>0 Ei täyttöä</translation>
- </message>
- <message id="id_toolbar_fill_back">
- <source></source>
- <translation>1 Taustaväri</translation>
- </message>
- <message id="id_toolbar_fill_area">
- <source></source>
- <translation>2 Alueen täyttö</translation>
- </message>
- <message id="id_toolbar_line_width">
- <source></source>
- <translation>Viivan leveys</translation>
- </message>
- <message id="id_toolbar_text_size">
+ <message id="id_toolbar_line_width">
+ <source></source>
+ <translation>Viivan leveys</translation>
+ </message>
+ <message id="id_toolbar_text_size">
+ <source></source>
+ <translation>Tekstin koko</translation>
+ </message>
+ <message id="id_toolbar_color_index">
<source></source>
- <translation>Tekstin koko</translation>
+ <translation>Värin indeksi</translation>
</message>
- <message id="id_toolbar_alignment">
+ <message id="id_toolbar_color_white">
+ <source></source>
+ <translation>0 Valkoinen</translation>
+ </message>
+ <message id="id_toolbar_color_black">
+ <source></source>
+ <translation>1 Musta</translation>
+ </message>
+ <message id="id_toolbar_color_blue">
+ <source></source>
+ <translation>2 Sininen</translation>
+ </message>
+ <message id="id_toolbar_color_red">
+ <source></source>
+ <translation>3 Punainen</translation>
+ </message>
+ <message id="id_toolbar_color_green">
+ <source></source>
+ <translation>4 Vihreä</translation>
+ </message>
+ <message id="id_toolbar_color_yellow">
+ <source></source>
+ <translation>5 Keltainen</translation>
+ </message>
+ <message id="id_toolbar_fill_item">
+ <source></source>
+ <translation>Kohteen täyttö</translation>
+ </message>
+ <message id="id_toolbar_fill_none">
+ <source></source>
+ <translation>0 Ei täyttöä</translation>
+ </message>
+ <message id="id_toolbar_fill_back">
+ <source></source>
+ <translation>1 Taustaväri</translation>
+ </message>
+ <message id="id_toolbar_fill_area">
+ <source></source>
+ <translation>2 Alueen täyttö</translation>
+ </message>
+ <message id="id_toolbar_alignment">
<source></source>
- <translation>Asemointi</translation>
+ <translation>Tekstin asemointi</translation>
</message>
<message id="id_toolbar_align_top_right">
<source></source>
diff --git a/locale/symedit.ts b/locale/symedit.ts
index c291ad7..08ae7f2 100644
--- a/locale/symedit.ts
+++ b/locale/symedit.ts
@@ -141,19 +141,7 @@
<source></source>
<translation type="unfinished"></translation>
</message>
- <message id="id_tooltip_file_open">
- <source></source>
- <translation type="unfinished"></translation>
- </message>
- <message id="id_tooltip_file_save">
- <source></source>
- <translation type="unfinished"></translation>
- </message>
- <message id="id_tooltip_file_save_as">
- <source></source>
- <translation type="unfinished"></translation>
- </message>
- <message id="id_tooltip_edit_undo">
+ <message id="id_tooltip_edit_undo">
<source></source>
<translation type="unfinished"></translation>
</message>
@@ -241,115 +229,143 @@
<source></source>
<translation type="unfinished"></translation>
</message>
- <message id="id_toolbar_fill_item">
- <source></source>
- <translation type="unfinished"></translation>
- </message>
- <message id="id_toolbar_line_width">
- <source></source>
- <translation type="unfinished"></translation>
- </message>
- <message id="id_toolbar_text_size">
- <source></source>
- <translation type="unfinished"></translation>
- </message>
- <message id="id_toolbar_alignment">
- <source></source>
- <translation type="unfinished"></translation>
- </message>
- <message id="id_toolbar_text_field">
- <source></source>
- <translation type="unfinished"></translation>
- </message>
- <message id="id_dialog_open_file">
+ <message id="id_toolbar_snap_grid">
<source></source>
<translation type="unfinished"></translation>
</message>
- <message id="id_dialog_save_file">
+ <message id="id_toolbar_line_width">
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="id_toolbar_text_size">
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="id_toolbar_color_index">
<source></source>
<translation type="unfinished"></translation>
</message>
- <message id="id_dialog_symbol_files">
+ <message id="id_toolbar_color_white">
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="id_toolbar_color_black">
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="id_toolbar_color_blue">
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="id_toolbar_color_red">
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="id_toolbar_color_green">
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="id_toolbar_color_yellow">
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="id_toolbar_fill_item">
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="id_toolbar_fill_none">
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="id_toolbar_fill_back">
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="id_toolbar_fill_area">
+ <source></source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message id="id_toolbar_alignment">
<source></source>
<translation type="unfinished"></translation>
</message>
- <message id="id_dialog_all_files">
+ <message id="id_toolbar_align_top_right">
<source></source>
<translation type="unfinished"></translation>
</message>
- <message id="id_dialog_about">
+ <message id="id_toolbar_align_top_center">
<source></source>
<translation type="unfinished"></translation>
</message>
- <message id="id_dialog_about_text">
+ <message id="id_toolbar_align_top_left">
<source></source>
<translation type="unfinished"></translation>
</message>
- <message id="id_application_title">
+ <message id="id_toolbar_align_base_right">
<source></source>
<translation type="unfinished"></translation>
</message>
- <message id="id_toolbar_snap_grid">
+ <message id="id_toolbar_align_base_center">
<source></source>
<translation type="unfinished"></translation>
</message>
- <message id="id_toolbar_fill_none">
+ <message id="id_toolbar_align_base_left">
<source></source>
<translation type="unfinished"></translation>
</message>
- <message id="id_toolbar_fill_back">
+ <message id="id_toolbar_align_bottom_right">
<source></source>
<translation type="unfinished"></translation>
</message>
- <message id="id_toolbar_fill_area">
+ <message id="id_toolbar_align_bottom_center">
<source></source>
<translation type="unfinished"></translation>
</message>
- <message id="id_toolbar_align_top_right">
+ <message id="id_toolbar_align_bottom_left">
<source></source>
<translation type="unfinished"></translation>
</message>
- <message id="id_toolbar_align_top_center">
+ <message id="id_toolbar_align_middle_right">
<source></source>
<translation type="unfinished"></translation>
</message>
- <message id="id_toolbar_align_top_left">
+ <message id="id_toolbar_align_middle_center">
<source></source>
<translation type="unfinished"></translation>
</message>
- <message id="id_toolbar_align_base_right">
+ <message id="id_toolbar_align_middle_left">
<source></source>
<translation type="unfinished"></translation>
</message>
- <message id="id_toolbar_align_base_center">
+ <message id="id_toolbar_text_field">
<source></source>
<translation type="unfinished"></translation>
</message>
- <message id="id_toolbar_align_base_left">
+ <message id="id_dialog_open_file">
<source></source>
<translation type="unfinished"></translation>
</message>
- <message id="id_toolbar_align_bottom_right">
+ <message id="id_dialog_save_file">
<source></source>
<translation type="unfinished"></translation>
</message>
- <message id="id_toolbar_align_bottom_center">
+ <message id="id_dialog_symbol_files">
<source></source>
<translation type="unfinished"></translation>
</message>
- <message id="id_toolbar_align_bottom_left">
+ <message id="id_dialog_all_files">
<source></source>
<translation type="unfinished"></translation>
</message>
- <message id="id_toolbar_align_middle_right">
+ <message id="id_dialog_about">
<source></source>
<translation type="unfinished"></translation>
</message>
- <message id="id_toolbar_align_middle_center">
+ <message id="id_dialog_about_text">
<source></source>
<translation type="unfinished"></translation>
</message>
- <message id="id_toolbar_align_middle_left">
+ <message id="id_application_title">
<source></source>
<translation type="unfinished"></translation>
</message>
diff --git a/main.qml b/main.qml
index ad8481c..66a3b20 100644
--- a/main.qml
+++ b/main.qml
@@ -15,11 +15,13 @@ ApplicationWindow
property real zoomscale: 1.5
property real zoomstep: 1.3
- property int fillitem: 0
+ property int snapgrid: 1
property real linewidth: 1
- property int alignment: 1
property int textsize: 1
- property int snapgrid: 1
+ property int colorindex: 1
+ property int fillitem: 0
+ property int alignment: 1
+
property string textvalue: textfield.text
property int tool: 0
@@ -116,7 +118,7 @@ ApplicationWindow
{
RowLayout
{
- height: 30
+ height: 32
z: 10
// BarTool { image: "image/open_icon&48.png"; tooltip: qsTrId("id_tooltip_file_open"); onClicked: open() }
// BarTool { image: "image/save_icon&48.png"; tooltip: qsTrId("id_tooltip_file_save"); onClicked: save(false) }
@@ -173,43 +175,29 @@ ApplicationWindow
ComboBox
{
id: snaplist
- implicitWidth: 50
- model: [ 1, 5, 10 ]
+ implicitWidth: 60
+ model: [ 1, 2, 5, 10 ]
onCurrentIndexChanged:
{
if ( currentIndex == 0 ) { snapgrid = 1 }
- else if ( currentIndex == 1 ) { snapgrid = 5 }
- else if ( currentIndex == 2 ) { snapgrid = 10 }
+ else if ( currentIndex == 1 ) { snapgrid = 2 }
+ else if ( currentIndex == 2 ) { snapgrid = 5 }
+ else if ( currentIndex == 3 ) { snapgrid = 10 }
}
function setSnap()
{
if ( snapgrid == 1 ) { currentIndex = 0 }
- else if ( snapgrid == 10 ) { currentIndex = 2 }
- else { currentIndex = 1 } // default 5
+ else if ( snapgrid == 2 ) { currentIndex = 1 }
+ else if ( snapgrid == 10 ) { currentIndex = 3 }
+ else { currentIndex = 2 } // default 5
}
}
BarSeparator { }
- Item { Layout.fillWidth: true }
- Label { text: qsTrId("id_toolbar_fill_item") }
- ComboBox
- {
- id: filllist
- implicitWidth: 50
- model:
- [
- qsTrId("id_toolbar_fill_none"),
- qsTrId("id_toolbar_fill_back"),
- qsTrId("id_toolbar_fill_area")
- ]
- onCurrentIndexChanged: { fillitem = currentIndex; editor.update() }
- function setFill() { currentIndex = fillitem }
- }
- BarSeparator { }
Label { text: qsTrId("id_toolbar_line_width") }
ComboBox
{
id: widthlist
- implicitWidth: 50
+ implicitWidth: 60
model: [ 1, 2, 3, 4, 5 ]
onCurrentIndexChanged: { linewidth = currentIndex + 1; editor.update() }
function setWidth() { currentIndex = linewidth - 1 }
@@ -219,17 +207,49 @@ ApplicationWindow
ComboBox
{
id: sizelist
- implicitWidth: 50
+ implicitWidth: 60
model: [ 1, 2, 3, 4, 5 ]
onCurrentIndexChanged: { textsize = currentIndex + 1; editor.update() }
function setSize() { currentIndex = textsize - 1 }
}
+ }
+ RowLayout
+ {
+ height: 32
+ Label { text: qsTrId("id_toolbar_color_index") }
+ ComboBox
+ {
+ id: colorlist
+ implicitWidth: 60
+ model: [ qsTrId("id_toolbar_color_white"), qsTrId("id_toolbar_color_black"),
+ qsTrId("id_toolbar_color_blue"), qsTrId("id_toolbar_color_red"),
+ qsTrId("id_toolbar_color_green"), qsTrId("id_toolbar_color_yellow"),
+ "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20" ]
+ onCurrentIndexChanged: { colorindex = currentIndex; editor.update() }
+ function setColor() { currentIndex = colorindex }
+ }
+ BarSeparator { }
+ Item { Layout.fillWidth: true }
+ Label { text: qsTrId("id_toolbar_fill_item") }
+ ComboBox
+ {
+ id: filllist
+ implicitWidth: 60
+ model:
+ [
+ qsTrId("id_toolbar_fill_none"),
+ qsTrId("id_toolbar_fill_back"),
+ qsTrId("id_toolbar_fill_area")
+ ]
+ onCurrentIndexChanged: { fillitem = currentIndex; editor.update() }
+ function setFill() { currentIndex = fillitem }
+ }
BarSeparator { }
Label { text: qsTrId("id_toolbar_alignment") }
ComboBox
{
id: alignlist
- implicitWidth: 50
+ implicitWidth: 60
model:
[
qsTrId("id_toolbar_align_top_right"),
@@ -253,7 +273,7 @@ ApplicationWindow
TextField
{
id: textfield
- implicitWidth: 120
+ implicitWidth: 160
}
}
}
@@ -309,14 +329,15 @@ 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.setIntSetting("FillItem", fillitem); }
- onAlignmentChanged: { manager.setIntSetting("Alignment", alignment); }
- onLinewidthChanged: { manager.setIntSetting("LineWidth", linewidth); }
- onTextsizeChanged: { manager.setIntSetting("TextSize", textsize); }
- onSnapgridChanged: { manager.setIntSetting("SnapGrid", snapgrid); }
+ onSnapgridChanged: { manager.setIntSetting("SnapGrid", snapgrid); editor.update() }
+ onLinewidthChanged: { manager.setIntSetting("LineWidth", linewidth) }
+ onTextsizeChanged: { manager.setIntSetting("TextSize", textsize) }
+ onColorindexChanged: { manager.setIntSetting("ColorIndex", colorindex) }
+ onFillitemChanged: { manager.setIntSetting("FillItem", fillitem) }
+ onAlignmentChanged: { manager.setIntSetting("Alignment", alignment) }
- onTextvalueChanged: { manager.setTextSetting("TextValue", textvalue); }
- onToolChanged: { manager.setIntSetting("Tool", tool); }
+ onTextvalueChanged: { manager.setTextSetting("TextValue", textvalue) }
+ onToolChanged: { manager.setIntSetting("Tool", tool) }
Component.onCompleted:
{
@@ -325,11 +346,12 @@ ApplicationWindow
width = manager.getWindowSize().width
height = manager.getWindowSize().height
- fillitem = manager.getIntSetting("FillItem")
- alignment = manager.getIntSetting("Alignment")
+ snapgrid = manager.getIntSetting("SnapGrid")
linewidth = manager.getIntSetting("LineWidth")
textsize = manager.getIntSetting("TextSize")
- snapgrid = manager.getIntSetting("SnapGrid")
+ colorindex = manager.getIntSetting("ColorIndex")
+ fillitem = manager.getIntSetting("FillItem")
+ alignment = manager.getIntSetting("Alignment")
textfield.text = manager.getTextSetting("TextValue")
tool = manager.getIntSetting("Tool")
@@ -339,6 +361,7 @@ ApplicationWindow
sizelist.setSize()
widthlist.setWidth()
alignlist.setAlign()
+ colorlist.setColor()
symbol = manager.getSymbol()
diff --git a/symbol.cpp b/symbol.cpp
index 2eca308..1f2a95d 100644
--- a/symbol.cpp
+++ b/symbol.cpp
@@ -29,20 +29,21 @@ SymEditSymbol::Item::Item() : Operation(Operation::None), Fill(0), Align(9)
\param operation Item operation.
\param point Item position.
\param value Item value.
+ \param color Item color index.
\param fill Item area fill.
*/
-SymEditSymbol::Item::Item(Operation::Type operation, QPoint point, int value, int fill)
- : Operation(operation), Point(point), Value(value, value), Fill(fill), Align(9)
+SymEditSymbol::Item::Item(Operation::Type operation, QPoint point, int value, int color, int fill)
+ : Operation(operation), Point(point), Value(value, value), Color(color), Fill(fill), Align(9)
{
}
-SymEditSymbol::Item::Item(Operation::Type operation, QPoint point, QPoint value, int fill)
- : Operation(operation), Point(point), Value(value), Fill(fill), Align(0)
+SymEditSymbol::Item::Item(Operation::Type operation, QPoint point, QPoint value, int color, int fill)
+ : Operation(operation), Point(point), Value(value), Color(color), Fill(fill), Align(0)
{
}
-SymEditSymbol::Item::Item(Operation::Type operation, QPoint point, QString value, int align)
- : Operation(operation), Point(point), Text(value), Fill(0), Align(align)
+SymEditSymbol::Item::Item(Operation::Type operation, QPoint point, QString value, int color, int align)
+ : Operation(operation), Point(point), Text(value), Color(color), Fill(0), Align(align)
{
}
@@ -64,8 +65,8 @@ SymEditSymbol::SymEditSymbol() : ActiveIndex(-1)
void SymEditSymbol::Load(const QString& buffer)
{
Items.clear();
- int fill = 0, align = 9;
QPoint position(0, 0);
+ int color = 1, fill = 0, align = 9;
for ( const auto& string : buffer.split(';', QString::SkipEmptyParts) )
{
int type = string.at(0).toLatin1();
@@ -75,26 +76,28 @@ void SymEditSymbol::Load(const QString& buffer)
int x = string.mid(1, comma - 1).toInt();
int y = string.mid(comma + 1).toInt();
if ( type == 'D' )
- Items.push_back(Item(Operation::Line, position, QPoint(x, y), fill));
+ Items.push_back(Item(Operation::Line, position, QPoint(x, y), color, fill));
else if ( type == 'B' )
- Items.push_back(Item(Operation::Rectangle, position, QPoint(x, y), fill));
+ Items.push_back(Item(Operation::Rectangle, position, QPoint(x, y), color, fill));
else if ( type == 'H' )
- Items.push_back(Item(Operation::Arc, position, QPoint(x, y), fill));
+ Items.push_back(Item(Operation::Arc, position, QPoint(x, y), color, fill));
position = QPoint(x, y);
}
else // single parameter
{
int value = string.mid(1).toInt();
- if ( type == 'F' )
+ if ( type == 'C' )
+ color = value;
+ else if ( type == 'F' )
fill = value;
else if ( type == 'J' )
align = value;
else if ( type == 'R' )
- Items.push_back(Item(Operation::Circle, position, value, fill));
+ Items.push_back(Item(Operation::Circle, position, value, color, fill));
else if ( type == '!' )
- Items.push_back(Item(Operation::Text, position, string.mid(1), align));
+ Items.push_back(Item(Operation::Text, position, string.mid(1), color, align));
else if ( type == '$' || type == '#' )
- Items.push_back(Item(Operation::Text, position, string, align));
+ Items.push_back(Item(Operation::Text, position, string, color, align));
}
}
ActiveIndex = static_cast<int>(Items.size()) - 1;
@@ -123,13 +126,15 @@ QString& SymEditSymbol::Save(QString& buffer) const
};
buffer.clear();
- int fill = 0, align = 9;
QPoint position(0, 0);
+ int color = 1, fill = 0, align = 9;
for ( const auto& item : Items ) switch ( item.Operation )
{
case Operation::Line:
case Operation::Rectangle:
{
+ if ( item.Color != color )
+ color = appendoption('C', buffer, item.Color);
if ( item.Fill != fill )
fill = appendoption('F', buffer, item.Fill);
if ( item.Point != position )
@@ -140,6 +145,8 @@ QString& SymEditSymbol::Save(QString& buffer) const
}
case Operation::Circle:
{
+ if ( item.Color != color )
+ color = appendoption('C', buffer, item.Color);
if ( item.Fill != fill )
fill = appendoption('F', buffer, item.Fill);
if ( item.Point != position )
@@ -150,6 +157,8 @@ QString& SymEditSymbol::Save(QString& buffer) const
}
case Operation::Text:
{
+ if ( item.Color != color )
+ color = appendoption('C', buffer, item.Color);
if ( item.Align != align )
align = appendoption('J', buffer, item.Align);
if ( item.Point != position )
@@ -161,6 +170,8 @@ QString& SymEditSymbol::Save(QString& buffer) const
}
case Operation::Arc:
{
+ if ( item.Color != color )
+ color = appendoption('C', buffer, item.Color);
if ( item.Fill != fill )
fill = appendoption('F', buffer, item.Fill);
if ( item.Point != position )
@@ -189,31 +200,42 @@ void SymEditSymbol::Clear()
\param operation Item operation.
\param point Item position.
\param value Item value.
+ \param color Item color index.
\param fill Item area fill.
\return Reference to item.
*/
-SymEditSymbol::Item& SymEditSymbol::AddItem(Operation::Type operation, QPoint point, int value, int fill)
+SymEditSymbol::Item& SymEditSymbol::AddItem(Operation::Type operation, QPoint point, int value, int color, int fill)
{
- Item item(operation, point, value, fill);
+ Item item(operation, point, value, color, fill);
ActiveIndex = static_cast<int>(Items.size());
Items.push_back(item);
return Items.back();
}
-SymEditSymbol::Item& SymEditSymbol::AddItem(Operation::Type operation, QPoint point, QPoint value, int fill)
+SymEditSymbol::Item& SymEditSymbol::AddItem(Operation::Type operation, QPoint point, QPoint value, int color, int fill)
{
- Item item(operation, point, value, fill);
+ Item item(operation, point, value, color, fill);
ActiveIndex = static_cast<int>(Items.size());
Items.push_back(item);
return Items.back();
}
-SymEditSymbol::Item& SymEditSymbol::AddItem(Operation::Type operation, QPoint point, QString value, int align)
+//@}
+
+//! Add symbol item.
+/*!
+ \param operation Item operation.
+ \param point Item position.
+ \param value Item value.
+ \param color Item color index.
+ \param align Item text alignment.
+ \return Reference to item.
+*/
+SymEditSymbol::Item& SymEditSymbol::AddItem(Operation::Type operation, QPoint point, QString value, int color, int align)
{
- Item item(operation, point, value, align);
+ Item item(operation, point, value, color, align);
ActiveIndex = static_cast<int>(Items.size());
Items.push_back(item);
return Items.back();
}
-//@}
//! Remove item.
/*!
diff --git a/symbol.h b/symbol.h
index 856e652..fcd3624 100644
--- a/symbol.h
+++ b/symbol.h
@@ -32,14 +32,15 @@ public:
{
public:
Item();
- Item(Operation::Type operation, QPoint point, int value, int fill);
- Item(Operation::Type operation, QPoint point, QPoint value, int fill);
- Item(Operation::Type operation, QPoint point, QString value, int align);
+ Item(Operation::Type operation, QPoint point, int value, int color, int fill);
+ Item(Operation::Type operation, QPoint point, QPoint value, int color, int fill);
+ Item(Operation::Type operation, QPoint point, QString value, int color, int align);
Operation::Type Operation; //!< Item operation.
QPoint Point; //!< Item coordinates.
QPoint Value; //!< Item value.
QString Text; //!< Text string.
+ int Color; //!< Color index.
int Fill; //!< Fill area.
int Align; //!< Text alignment.
};
@@ -48,9 +49,9 @@ public:
QString& Save(QString& buffer) const;
void Clear();
- Item& AddItem(Operation::Type operation, QPoint point, int value, int fill);
- Item& AddItem(Operation::Type operation, QPoint point, QPoint end, int fill);
- Item& AddItem(Operation::Type operation, QPoint point, QString text, int align);
+ Item& AddItem(Operation::Type operation, QPoint point, int value, int color, int fill);
+ Item& AddItem(Operation::Type operation, QPoint point, QPoint end, int color, int fill);
+ Item& AddItem(Operation::Type operation, QPoint point, QString text, int color, int align);
bool RemoveItem(int index);
int SelectItem(QPoint point) const;
diff --git a/symedit.cpp b/symedit.cpp
index 3d28e28..00ca56f 100644
--- a/symedit.cpp
+++ b/symedit.cpp
@@ -18,6 +18,7 @@ SymEditSettings::SymEditSettings()
IntValues.emplace("LineWidth", 1);
IntValues.emplace("TextSize", 1);
IntValues.emplace("SnapGrid", 5);
+ IntValues.emplace("ColorIndex", 1);
IntValues.emplace("Tool", 1);
TextValues.emplace("TextValue", "");
@@ -36,11 +37,12 @@ void SymEditSettings::Load()
TextValues.at("Directory") = settings.value("application/directory").toString();
- IntValues.at("FillItem") = settings.value("editor/fill", 0).toInt();
- IntValues.at("Alignment") = settings.value("editor/align", 9).toInt();
+ IntValues.at("SnapGrid") = settings.value("editor/snap", 5).toInt();
IntValues.at("LineWidth") = settings.value("editor/width", 1).toInt();
IntValues.at("TextSize") = settings.value("editor/size", 1).toInt();
- IntValues.at("SnapGrid") = settings.value("editor/snap", 5).toInt();
+// IntValues.at("ColorIndex") = settings.value("editor/color", 1).toInt();
+// IntValues.at("FillItem") = settings.value("editor/fill", 0).toInt();
+ IntValues.at("Alignment") = settings.value("editor/align", 9).toInt();
IntValues.at("Tool") = settings.value("editor/tool", 1).toInt();
TextValues.at("TextValue") = settings.value("editor/text").toString();
}
@@ -57,11 +59,12 @@ void SymEditSettings::Save() const
settings.setValue("application/directory", TextValues.at("Directory"));
- settings.setValue("editor/fill", IntValues.at("FillItem"));
- settings.setValue("editor/align", IntValues.at("Alignment"));
+ settings.setValue("editor/snap", IntValues.at("SnapGrid"));
settings.setValue("editor/width", IntValues.at("LineWidth"));
settings.setValue("editor/size", IntValues.at("TextSize"));
- settings.setValue("editor/snap", IntValues.at("SnapGrid"));
+ settings.setValue("editor/color", IntValues.at("ColorIndex"));
+ settings.setValue("editor/fill", IntValues.at("FillItem"));
+ settings.setValue("editor/align", IntValues.at("Alignment"));
settings.setValue("editor/tool", IntValues.at("Tool"));
settings.setValue("editor/text", TextValues.at("TextValue"));
}
@@ -181,50 +184,45 @@ QString SymEditManager::getSymbol() const
return Symbol.Save(buffer);
}
+//@{
//! Add symbol item.
/*!
\param operation Item operation.
\param point Item position.
\param value Item value.
+ \param color Item color index.
\param fill Item area fill.
\return True for success.
*/
-bool SymEditManager::addValueItem(int operation, QPoint point, int value, int fill)
+bool SymEditManager::addValueItem(int operation, QPoint point, int value, int color, int fill)
{
undosave();
- Symbol.AddItem(static_cast<Operation::Type>(operation), point, value, fill);
+ Symbol.AddItem(static_cast<Operation::Type>(operation), point, value, color, fill);
return true;
}
-
-//! Add symbol item.
-/*!
- \param operation Item operation.
- \param point Item position.
- \param value Item value.
- \param fill Item area fill.
- \return True for success.
-*/
-bool SymEditManager::addPointItem(int operation, QPoint point, QPoint value, int fill)
+bool SymEditManager::addPointItem(int operation, QPoint point, QPoint value, int color, int fill)
{
undosave();
- Symbol.AddItem(static_cast<Operation::Type>(operation), point, value, fill);
+ Symbol.AddItem(static_cast<Operation::Type>(operation), point, value, color, fill);
return true;
}
+//@}
//! Add symbol item.
/*!
\param operation Item operation.
\param point Item position.
\param value Item text value.
+ \param color Item color index.
\param align Item text alignment.
\return True for success.
*/
-bool SymEditManager::addTextItem(int operation, QPoint point, QString value, int align)
+bool SymEditManager::addTextItem(int operation, QPoint point, QString value, int color, int align)
{
if ( !value.isEmpty() )
{
undosave();
- Symbol.AddItem(static_cast<Operation::Type>(operation), point, value, align);
+ Symbol.AddItem(static_cast<Operation::Type>(operation), point, value, color, align);
return true;
}
return false;
@@ -335,6 +333,17 @@ QString SymEditManager::getItemText(int index) const
}
//
+int SymEditManager::getItemColor(int index) const
+{
+ if ( Symbol.GetItemCount() )
+ {
+ const auto& item = Symbol.GetItem(index);
+ return item.Color;
+ }
+ return 1;
+}
+
+//
int SymEditManager::getItemFill(int index) const
{
if ( Symbol.GetItemCount() )
diff --git a/symedit.h b/symedit.h
index 4f6c32b..e8f83cc 100644
--- a/symedit.h
+++ b/symedit.h
@@ -56,9 +56,9 @@ public:
Q_INVOKABLE QString getSymbol() const;
- Q_INVOKABLE bool addValueItem(int operation, QPoint point, int value, int fill);
- Q_INVOKABLE bool addPointItem(int operation, QPoint point, QPoint value, int fill);
- Q_INVOKABLE bool addTextItem(int operation, QPoint point, QString value, int align);
+ Q_INVOKABLE bool addValueItem(int operation, QPoint point, int value, int color, int fill);
+ Q_INVOKABLE bool addPointItem(int operation, QPoint point, QPoint value, int color, int fill);
+ Q_INVOKABLE bool addTextItem(int operation, QPoint point, QString value, int color, int align);
Q_INVOKABLE bool removeItem();
Q_INVOKABLE int getItemCount() const;
@@ -67,6 +67,7 @@ public:
Q_INVOKABLE int getItemValue(int index) const;
Q_INVOKABLE QPoint getItemPoint(int index) const;
Q_INVOKABLE QString getItemText(int index ) const;
+ Q_INVOKABLE int getItemColor(int index) const;
Q_INVOKABLE int getItemFill(int index) const;
Q_INVOKABLE int getItemAlign(int index) const;
diff --git a/symedit.pro b/symedit.pro
index 41461ae..eb4f653 100644
--- a/symedit.pro
+++ b/symedit.pro
@@ -77,4 +77,5 @@ DISTFILES += \
image/icon32.png \
image/icon48.png \
image/icon256.png \
- image/icon.ico
+ image/icon.ico \
+ image/icon.kra