mcc2 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. checksums.yaml +7 -0
  2. checksums.yaml.gz.sig +0 -0
  3. data/.autotest +23 -0
  4. data/.gitignore +15 -0
  5. data/.rubocop.yml +3 -0
  6. data/Gemfile +13 -0
  7. data/History.txt +6 -0
  8. data/LICENSE.txt +21 -0
  9. data/README.md +51 -0
  10. data/Rakefile +12 -0
  11. data/config/i18n-tasks.yml +193 -0
  12. data/exe/mcc2 +18 -0
  13. data/exe/mcc2-generate-preview +17 -0
  14. data/exe/mcc2print +6 -0
  15. data/lib/libguib16.rb +1620 -0
  16. data/lib/mcc2/advanced_data_edit_dlg.rb +139 -0
  17. data/lib/mcc2/cc_dialogbox.rb +52 -0
  18. data/lib/mcc2/constants.rb +154 -0
  19. data/lib/mcc2/dataman/base.rb +61 -0
  20. data/lib/mcc2/dataman/csv.rb +49 -0
  21. data/lib/mcc2/dataman/database.rb +8 -0
  22. data/lib/mcc2/dataman/dbf.rb +45 -0
  23. data/lib/mcc2/dataman/none.rb +25 -0
  24. data/lib/mcc2/dataview.rb +348 -0
  25. data/lib/mcc2/dataview_dlg.rb +232 -0
  26. data/lib/mcc2/debug_tools.rb +20 -0
  27. data/lib/mcc2/fx_colored_item.rb +101 -0
  28. data/lib/mcc2/generate_preview.rb +68 -0
  29. data/lib/mcc2/gui/advanced_data_edit_dlg.rbin +0 -0
  30. data/lib/mcc2/gui/dataview_dlg.pp +522 -0
  31. data/lib/mcc2/gui/layoutview_dlg.pp +5115 -0
  32. data/lib/mcc2/gui/mcc2_mainwin.pp +838 -0
  33. data/lib/mcc2/gui/picture_data_edit_dlg.rbin +0 -0
  34. data/lib/mcc2/gui/printerview_dlg.pp +3311 -0
  35. data/lib/mcc2/images/Image-Arrow-Left.gif +0 -0
  36. data/lib/mcc2/images/Image-Arrow-Right.gif +0 -0
  37. data/lib/mcc2/images/Image-FastArrowLeft.gif +0 -0
  38. data/lib/mcc2/images/Image-FastArrowRight.bmp +0 -0
  39. data/lib/mcc2/images/Image-FastArrowRight.gif +0 -0
  40. data/lib/mcc2/images/application-exit.png +0 -0
  41. data/lib/mcc2/images/copy.png +0 -0
  42. data/lib/mcc2/images/country_de.png +0 -0
  43. data/lib/mcc2/images/country_gb.png +0 -0
  44. data/lib/mcc2/images/country_rs.png +0 -0
  45. data/lib/mcc2/images/cut.png +0 -0
  46. data/lib/mcc2/images/distribute-horizontal-baseline.png +0 -0
  47. data/lib/mcc2/images/distribute-vertical-baseline.png +0 -0
  48. data/lib/mcc2/images/document-close.png +0 -0
  49. data/lib/mcc2/images/document-edit.png +0 -0
  50. data/lib/mcc2/images/document-new.png +0 -0
  51. data/lib/mcc2/images/document-open.png +0 -0
  52. data/lib/mcc2/images/document-print-frame.png +0 -0
  53. data/lib/mcc2/images/document-print.png +0 -0
  54. data/lib/mcc2/images/document-save-as.png +0 -0
  55. data/lib/mcc2/images/document-save.png +0 -0
  56. data/lib/mcc2/images/documentation.png +0 -0
  57. data/lib/mcc2/images/draw-rectangle.png +0 -0
  58. data/lib/mcc2/images/dummy.gif +0 -0
  59. data/lib/mcc2/images/exchange-positions.png +0 -0
  60. data/lib/mcc2/images/insert-image.png +0 -0
  61. data/lib/mcc2/images/insert-text.png +0 -0
  62. data/lib/mcc2/images/libreoffice-oasis-master-document.png +0 -0
  63. data/lib/mcc2/images/measure.png +0 -0
  64. data/lib/mcc2/images/messagebox_warning.png +0 -0
  65. data/lib/mcc2/images/paste.png +0 -0
  66. data/lib/mcc2/images/process-stop.png +0 -0
  67. data/lib/mcc2/images/zoom-in.png +0 -0
  68. data/lib/mcc2/layout.rb +323 -0
  69. data/lib/mcc2/layout_file.rb +794 -0
  70. data/lib/mcc2/layout_object/barcode.rb +33 -0
  71. data/lib/mcc2/layout_object/box.rb +18 -0
  72. data/lib/mcc2/layout_object/chip.rb +54 -0
  73. data/lib/mcc2/layout_object/embed.rb +16 -0
  74. data/lib/mcc2/layout_object/go_attribut.rb +16 -0
  75. data/lib/mcc2/layout_object/graphic.rb +59 -0
  76. data/lib/mcc2/layout_object/magstripe.rb +13 -0
  77. data/lib/mcc2/layout_object/picture.rb +22 -0
  78. data/lib/mcc2/layout_object/text.rb +29 -0
  79. data/lib/mcc2/layout_win.rb +2052 -0
  80. data/lib/mcc2/layoutview.rb +845 -0
  81. data/lib/mcc2/layoutview_dlg.rb +2058 -0
  82. data/lib/mcc2/locales.rb +27 -0
  83. data/lib/mcc2/mcc2_mainwin.rb +453 -0
  84. data/lib/mcc2/mcc2gui.rb +295 -0
  85. data/lib/mcc2/mcc2print.rb +54 -0
  86. data/lib/mcc2/picture_data_edit_dlg.rb +139 -0
  87. data/lib/mcc2/print_dlg.rb +520 -0
  88. data/lib/mcc2/printer/base.rb +148 -0
  89. data/lib/mcc2/printer/card_printer.rb +45 -0
  90. data/lib/mcc2/printer/file_printer.rb +135 -0
  91. data/lib/mcc2/printer/gdi_card_printer.rb +14 -0
  92. data/lib/mcc2/printer/gdi_printer.rb +197 -0
  93. data/lib/mcc2/printer/linux_cups_printer.rb +92 -0
  94. data/lib/mcc2/printer/preview.rb +277 -0
  95. data/lib/mcc2/printer/printer_cab.rb +118 -0
  96. data/lib/mcc2/printer/printer_cx320_direct.rb +286 -0
  97. data/lib/mcc2/printer/printer_epl.rb +118 -0
  98. data/lib/mcc2/printer/printer_ttp34x.rb +124 -0
  99. data/lib/mcc2/printer/printer_zebra.rb +324 -0
  100. data/lib/mcc2/printer/svg_drawer.rb +689 -0
  101. data/lib/mcc2/printerview.rb +604 -0
  102. data/lib/mcc2/printerview_dlg.rb +1248 -0
  103. data/lib/mcc2/version.rb +3 -0
  104. data/lib/mcc2.rb +11 -0
  105. data/locales/de.yml +6 -0
  106. data/locales/en.yml +502 -0
  107. data/locales/rs.yml +502 -0
  108. data/mcc2.gemspec +41 -0
  109. data/test/dummy.rb +19 -0
  110. data/test/layouts/bart_simpson.png +0 -0
  111. data/test/layouts/color_test.xml +151 -0
  112. data/test/layouts/ms.xml +67 -0
  113. data/test/ruby_print.rb +380 -0
  114. data/test/test.csv +4 -0
  115. data/test/test.dbf +0 -0
  116. data/test/test.str +4 -0
  117. data/test/test_mcc2.rb +8 -0
  118. data.tar.gz.sig +6 -0
  119. metadata +421 -0
  120. metadata.gz.sig +0 -0
@@ -0,0 +1,33 @@
1
+ require "mcc2/layout_object/graphic"
2
+
3
+ module Mcc2
4
+ module LayoutObject
5
+ class Barcode < Graphic
6
+ def initialize(xml_elem: nil, layout_file: nil)
7
+ super
8
+ @go_attributes[GOA_TYP].attr_value = BARCODEOBJECT
9
+ add_attr(@go_attributes, GOA_WIDTH, Integer, 30)
10
+ add_attr(@go_attributes, GOA_HEIGHT, Integer, 15)
11
+ add_attr(@go_attributes, GOA_DATA, String, "")
12
+ add_attr(@go_attributes, GOA_SAMPLE_DATA, String, "123456789012")
13
+ add_attr(@go_attributes, GOA_BARCODE_TYP, String, "EAN13")
14
+ add_attr(@go_attributes, GOA_BARCODE_HEIGHT, Integer, 0)
15
+ add_attr(@go_attributes, GOA_BARCODE_OPTIMIZED, String, true)
16
+ add_attr(@go_attributes, GOA_FONT_HEIGHT, Integer, 10)
17
+ add_attr(@go_attributes, GOA_FONT_TYP, String, "Arial")
18
+ add_attr(@go_attributes, GOA_FONT_COLOR, String, "000000FF")
19
+ add_attr(@go_attributes, GOA_FONT_FILE, String, "")
20
+ add_attr(@go_attributes, GOA_BACK_COLOR, String, "FFFFFFFF")
21
+ add_attr(@go_attributes, GOA_FONT_WEIGHT, Integer, 0)
22
+ add_attr(@go_attributes, GOA_BARCODE_OPTION_1, Integer, -1)
23
+ add_attr(@go_attributes, GOA_BARCODE_OPTION_2, Integer, 0)
24
+ add_attr(@go_attributes, GOA_BARCODE_OPTION_3, Integer, 0)
25
+ end
26
+ end
27
+ end
28
+ end
29
+
30
+ if __FILE__ == $0
31
+ bo = BarcodeObject.new
32
+ bo.go_attributes.each { |e| p e }
33
+ end
@@ -0,0 +1,18 @@
1
+ require "mcc2/layout_object/graphic"
2
+
3
+ module Mcc2
4
+ module LayoutObject
5
+ class Box < Graphic
6
+ def initialize(xml_elem: nil, layout_file: nil)
7
+ super
8
+ @go_attributes[GOA_TYP].attr_value = BOXOBJECT
9
+ add_attr(@go_attributes, GOA_WIDTH, Float, 30)
10
+ add_attr(@go_attributes, GOA_HEIGHT, Float, 20)
11
+ add_attr(@go_attributes, GOA_FILL_COLOR, String, "ffff00ff")
12
+ add_attr(@go_attributes, GOA_BORDER_COLOR, String, "ff00ffff")
13
+ add_attr(@go_attributes, GOA_BORDER_WIDTH, Float, 1)
14
+ add_attr(@go_attributes, GOA_CORNER_RADIUS, Float, 4)
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,54 @@
1
+ require "mcc2/constants"
2
+ require "mcc2/dataman/base"
3
+
4
+ module Mcc2
5
+ module LayoutObject
6
+ # diese Klasse ist für die Personalisierung der Chips verantwortlich
7
+ class Chip
8
+ class InvalidScriptType < RuntimeError
9
+ end
10
+
11
+ def initialize(xml_elem)
12
+ @xml_elem = xml_elem
13
+ end
14
+
15
+ # Array of the chip parameters
16
+ def params(row = nil)
17
+ (1..CHIPPARAM_FIELD_COUNT).map do |i|
18
+ param = self["#{S_PARAM}_#{i}"]
19
+ param = DataMan.replace_variables(param, row) if row
20
+ param
21
+ end
22
+ end
23
+
24
+ def params_hash(row = nil)
25
+ params.map do |param|
26
+ key, value = param.split("=", 2)
27
+ if key && value
28
+ [key, value]
29
+ else
30
+ nil
31
+ end
32
+ end.compact.to_h
33
+ end
34
+
35
+ def [](attr)
36
+ @xml_elem.at_xpath(attr).content
37
+ end
38
+
39
+ # personalisiert eine Karte
40
+ # === Parameter
41
+ # +xml_doc+:: die XML-Struktur mit den Definitionen des Kartenlayouts
42
+ # +row+:: ein Datensatz im FasteCSV-Format
43
+ def pers_chip(row)
44
+ require "chipcoding"
45
+
46
+ p "pers_chip #{row.inspect}"
47
+ # die Chip-Parameter auslesen
48
+ params = self.params_hash(row)
49
+
50
+ Chipcoding::Client.personalize_card( params )
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,16 @@
1
+ require "mcc2/layout_object/graphic"
2
+
3
+ module Mcc2
4
+ module LayoutObject
5
+ class Embed < Graphic
6
+ def initialize(xml_elem: nil, layout_file: nil)
7
+ super
8
+ @go_attributes[GOA_TYP].attr_value = EMBEDOBJECT
9
+ add_attr(@go_attributes, GOA_WIDTH, Float, 30)
10
+ add_attr(@go_attributes, GOA_HEIGHT, Float, 20)
11
+ add_attr(@go_attributes, GOA_DATA, String, "")
12
+ add_attr(@go_attributes, GOA_SAMPLE_DATA, String, "%D/")
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ # GraphicObject-Attribut
2
+ module Mcc2
3
+ module LayoutObject
4
+ class GO_Attribut
5
+ attr_accessor :attr_name
6
+ attr_accessor :attr_typ
7
+ attr_accessor :attr_value
8
+
9
+ def initialize(attr_name, attr_typ, attr_default_value)
10
+ @attr_name = attr_name
11
+ @attr_typ = attr_typ
12
+ @attr_value = attr_default_value
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,59 @@
1
+ require "mcc2/layout_object/go_attribut" # die Attribut-Klasse für die grafischen Objekte
2
+
3
+ module Mcc2
4
+ module LayoutObject
5
+ class Graphic
6
+ attr_reader :layout_file
7
+ attr_accessor :go_attributes
8
+
9
+ def initialize(xml_elem: nil, layout_file: nil)
10
+ @go_attributes = {}
11
+ add_attr(@go_attributes, GOA_ID, Integer, 0)
12
+ add_attr(@go_attributes, GOA_NAME, String, GRAPHICOBJECT) # bekommen erst einmal alle den gleichen Namen, können später durch den Anwender geändert werden
13
+ add_attr(@go_attributes, GOA_TYP, String, GRAPHICOBJECT)
14
+ add_attr(@go_attributes, GOA_X, Integer, 10)
15
+ add_attr(@go_attributes, GOA_Y, Integer, 10)
16
+ add_attr(@go_attributes, GOA_ROTATION, Integer, 0)
17
+ add_attr(@go_attributes, GOA_PAGE_NR, Integer, 0)
18
+ add_attr(@go_attributes, GOA_LAYER, Integer, 0)
19
+ add_attr(@go_attributes, GOA_PRINTLIST, String, "false")
20
+
21
+ @xml_elem = xml_elem
22
+ @layout_file = layout_file
23
+ end
24
+
25
+ def add_attr(dest, attr_name, attr_typ, attr_default_value)
26
+ attr = GO_Attribut.new(attr_name, attr_typ, attr_default_value)
27
+ dest[attr.attr_name] = attr
28
+ end
29
+
30
+ def [](attr)
31
+ goattr = @xml_elem.at_xpath(attr)
32
+ goattr&.content
33
+ end
34
+
35
+ def []=(attr, text)
36
+ goattr = @xml_elem.at_xpath(attr)
37
+ goattr.content = text if goattr
38
+ @layout_file.changed!
39
+ end
40
+
41
+ def attributes
42
+ @go_attributes.keys
43
+ end
44
+
45
+ def delete
46
+ @xml_elem.remove
47
+ end
48
+
49
+ def self.get_object_by_typ(typ, xml_elem: nil, layout_file: nil)
50
+ if typ == TEXTOBJECT then Text.new xml_elem: xml_elem, layout_file: layout_file
51
+ elsif typ == BARCODEOBJECT then Barcode.new xml_elem: xml_elem, layout_file: layout_file
52
+ elsif typ == PICTUREOBJECT then Picture.new xml_elem: xml_elem, layout_file: layout_file
53
+ elsif typ == BOXOBJECT then Box.new xml_elem: xml_elem, layout_file: layout_file
54
+ elsif typ == EMBEDOBJECT then Embed.new xml_elem: xml_elem, layout_file: layout_file
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,13 @@
1
+ module Mcc2
2
+ module LayoutObject
3
+ class Magstripe
4
+ def initialize(xml_elem = nil)
5
+ @xml_elem = xml_elem
6
+ end
7
+
8
+ def [](attr)
9
+ @xml_elem.at_xpath(attr).content
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,22 @@
1
+ require "mcc2/layout_object/graphic"
2
+
3
+ module Mcc2
4
+ module LayoutObject
5
+ class Picture < Graphic
6
+ def initialize(xml_elem: nil, layout_file: nil)
7
+ super
8
+ @go_attributes[GOA_TYP].attr_value = PICTUREOBJECT
9
+ add_attr(@go_attributes, GOA_WIDTH, Integer, 20)
10
+ add_attr(@go_attributes, GOA_HEIGHT, Integer, 28)
11
+ add_attr(@go_attributes, GOA_IMAGE_PAGE, Integer, 1)
12
+ add_attr(@go_attributes, GOA_DATA, String, "")
13
+ add_attr(@go_attributes, GOA_SAMPLE_DATA, String, File.join(File.dirname(__FILE__), "../../../test/layouts/bart_simpson.png"))
14
+ end
15
+ end
16
+ end
17
+ end
18
+
19
+ if __FILE__ == $0
20
+ po = PictureObject.new
21
+ po.go_attributes.each { |e| p e }
22
+ end
@@ -0,0 +1,29 @@
1
+ require "mcc2/layout_object/graphic"
2
+
3
+ module Mcc2
4
+ module LayoutObject
5
+ class Text < Graphic
6
+ def initialize(xml_elem: nil, layout_file: nil)
7
+ super
8
+ @go_attributes[GOA_TYP].attr_value = TEXTOBJECT
9
+ add_attr(@go_attributes, GOA_WIDTH, Integer, 30)
10
+ add_attr(@go_attributes, GOA_HEIGHT, Integer, 6)
11
+ add_attr(@go_attributes, GOA_DATA, String, "")
12
+ add_attr(@go_attributes, GOA_SAMPLE_DATA, String, "Sample-Text")
13
+ add_attr(@go_attributes, GOA_FONT_HEIGHT, Integer, 10)
14
+ add_attr(@go_attributes, GOA_FONT_TYP, String, "Arial")
15
+ add_attr(@go_attributes, GOA_FONT_COLOR, String, "000000FF")
16
+ add_attr(@go_attributes, GOA_FONT_FILE, String, "")
17
+ add_attr(@go_attributes, GOA_BACK_COLOR, String, "FFFFFFFF")
18
+ add_attr(@go_attributes, GOA_JUSTIFICATION, String, S_JUST_LEFT)
19
+ add_attr(@go_attributes, GOA_JUSTIFICATION_BLOCK, String, "false")
20
+ end
21
+ end
22
+ end
23
+ end
24
+
25
+ if __FILE__ == $PROGRAM_NAME
26
+ require "./../constants"
27
+ to = Mcc2::LayoutObject::Text.new
28
+ to.go_attributes.each { |e| p e }
29
+ end