diff options
| author | Mikko Syrjä <mikko@3d-system.fi> | 2019-03-19 23:47:34 +0200 |
|---|---|---|
| committer | Mikko Syrjä <mikko@3d-system.fi> | 2019-03-19 23:47:34 +0200 |
| commit | b4a39f7c233c1f26eb9874fc1221ea1408a3fa97 (patch) | |
| tree | 74943397ecfc3a1ab9ce34152e3f1bd96c26bc51 | |
| parent | 1e0dfa10ac89907750309c5a618997c074c03a9b (diff) | |
| download | symedit-b4a39f7c233c1f26eb9874fc1221ea1408a3fa97.tar.gz symedit-b4a39f7c233c1f26eb9874fc1221ea1408a3fa97.zip | |
Added color support.
| -rw-r--r-- | Editor.qml | 56 | ||||
| -rw-r--r-- | help/eng/tools.rst | 45 | ||||
| -rw-r--r-- | help/eng/usage.rst | 2 | ||||
| -rw-r--r-- | help/fin/tools.rst | 43 | ||||
| -rw-r--r-- | help/fin/usage.rst | 2 | ||||
| -rw-r--r-- | image/icon.kra | bin | 0 -> 46368 bytes | |||
| -rw-r--r-- | locale/symedit.en_GB.ts | 102 | ||||
| -rw-r--r-- | locale/symedit.fi_FI.ts | 104 | ||||
| -rw-r--r-- | locale/symedit.ts | 128 | ||||
| -rw-r--r-- | main.qml | 103 | ||||
| -rw-r--r-- | symbol.cpp | 66 | ||||
| -rw-r--r-- | symbol.h | 13 | ||||
| -rw-r--r-- | symedit.cpp | 51 | ||||
| -rw-r--r-- | symedit.h | 7 | ||||
| -rw-r--r-- | symedit.pro | 3 |
15 files changed, 442 insertions, 283 deletions
@@ -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 Binary files differnew file mode 100644 index 0000000..b1bb9d9 --- /dev/null +++ b/image/icon.kra 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> @@ -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() @@ -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. /*! @@ -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() ) @@ -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 |
