pywargame 0.3.1__py3-none-any.whl → 0.4.1__py3-none-any.whl

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 (112) hide show
  1. pywargame/common/dicedraw.py +6 -1
  2. pywargame/cyberboard/__init__.py +2 -0
  3. pywargame/cyberboard/archive.py +2 -2
  4. pywargame/cyberboard/base.py +2 -1
  5. pywargame/cyberboard/board.py +3 -1
  6. pywargame/cyberboard/cell.py +2 -1
  7. pywargame/cyberboard/draw.py +2 -1
  8. pywargame/cyberboard/exporter.py +8 -7
  9. pywargame/cyberboard/extractor.py +1 -1
  10. pywargame/cyberboard/features.py +1 -1
  11. pywargame/cyberboard/gamebox.py +1 -1
  12. pywargame/cyberboard/gsnexp.py +14 -10
  13. pywargame/cyberboard/gsnext.py +7 -4
  14. pywargame/cyberboard/head.py +2 -1
  15. pywargame/cyberboard/image.py +1 -1
  16. pywargame/cyberboard/mark.py +1 -1
  17. pywargame/cyberboard/palette.py +2 -1
  18. pywargame/cyberboard/piece.py +2 -1
  19. pywargame/cyberboard/player.py +1 -1
  20. pywargame/cyberboard/scenario.py +1 -1
  21. pywargame/cyberboard/tile.py +2 -1
  22. pywargame/cyberboard/tray.py +2 -1
  23. pywargame/cyberboard/windows.py +1 -1
  24. pywargame/gsnexport.py +52 -4
  25. pywargame/gsnextract.py +4 -1
  26. pywargame/vassal/__init__.py +2 -2
  27. pywargame/vassal/board.py +1 -1
  28. pywargame/vassal/buildfile.py +2 -1
  29. pywargame/vassal/chart.py +1 -1
  30. pywargame/vassal/chessclock.py +1 -1
  31. pywargame/vassal/collect.py +1 -1
  32. pywargame/vassal/collectpatch.py +2 -2
  33. pywargame/vassal/command.py +1 -1
  34. pywargame/vassal/documentation.py +1 -1
  35. pywargame/vassal/dumpvsav.py +1 -1
  36. pywargame/vassal/element.py +2 -1
  37. pywargame/vassal/exporter.py +2 -2
  38. pywargame/vassal/extension.py +1 -1
  39. pywargame/vassal/folder.py +1 -1
  40. pywargame/vassal/game.py +1 -1
  41. pywargame/vassal/gameelements.py +1 -1
  42. pywargame/vassal/globalproperty.py +1 -1
  43. pywargame/vassal/grid.py +1 -1
  44. pywargame/vassal/map.py +1 -1
  45. pywargame/vassal/mapelements.py +1 -1
  46. pywargame/vassal/merge.py +2 -2
  47. pywargame/vassal/merger.py +1 -1
  48. pywargame/vassal/moduledata.py +2 -1
  49. pywargame/vassal/patch.py +2 -2
  50. pywargame/vassal/player.py +1 -1
  51. pywargame/vassal/skel.py +1 -1
  52. pywargame/vassal/traits/__init__.py +1 -1
  53. pywargame/vassal/traits/area.py +1 -1
  54. pywargame/vassal/traits/basic.py +1 -1
  55. pywargame/vassal/traits/calculatedproperty.py +1 -1
  56. pywargame/vassal/traits/cargo.py +1 -1
  57. pywargame/vassal/traits/click.py +1 -1
  58. pywargame/vassal/traits/clone.py +1 -1
  59. pywargame/vassal/traits/delete.py +1 -1
  60. pywargame/vassal/traits/deselect.py +1 -1
  61. pywargame/vassal/traits/dynamicproperty.py +1 -1
  62. pywargame/vassal/traits/globalcommand.py +1 -1
  63. pywargame/vassal/traits/globalhotkey.py +1 -1
  64. pywargame/vassal/traits/globalproperty.py +1 -1
  65. pywargame/vassal/traits/hide.py +1 -1
  66. pywargame/vassal/traits/label.py +1 -1
  67. pywargame/vassal/traits/layer.py +1 -1
  68. pywargame/vassal/traits/mark.py +1 -1
  69. pywargame/vassal/traits/mask.py +1 -1
  70. pywargame/vassal/traits/mat.py +1 -1
  71. pywargame/vassal/traits/moved.py +1 -1
  72. pywargame/vassal/traits/movefixed.py +1 -1
  73. pywargame/vassal/traits/nonrect.py +1 -1
  74. pywargame/vassal/traits/nostack.py +1 -1
  75. pywargame/vassal/traits/place.py +1 -1
  76. pywargame/vassal/traits/prototype.py +1 -1
  77. pywargame/vassal/traits/report.py +1 -1
  78. pywargame/vassal/traits/restrictaccess.py +1 -1
  79. pywargame/vassal/traits/restrictcommand.py +1 -1
  80. pywargame/vassal/traits/{return.py → retrn.py} +1 -1
  81. pywargame/vassal/traits/rotate.py +1 -1
  82. pywargame/vassal/traits/sendto.py +1 -1
  83. pywargame/vassal/traits/sheet.py +1 -1
  84. pywargame/vassal/traits/skel.py +1 -1
  85. pywargame/vassal/traits/stack.py +1 -1
  86. pywargame/vassal/traits/submenu.py +1 -1
  87. pywargame/vassal/traits/trail.py +1 -1
  88. pywargame/vassal/traits/trigger.py +1 -1
  89. pywargame/vassal/turn.py +1 -1
  90. pywargame/vassal/upgrade.py +1 -1
  91. pywargame/vassal/vmod.py +45 -1
  92. pywargame/vassal/widget.py +1 -1
  93. pywargame/vassal/withtraits.py +1 -1
  94. pywargame/vassal/zone.py +1 -1
  95. pywargame/vassal.py +47 -3
  96. pywargame/vmodpatch.py +47 -3
  97. pywargame/vsavdump.py +47 -3
  98. pywargame/vslmerge.py +47 -3
  99. pywargame/wgexport.py +47 -3
  100. pywargame/ztexport.py +47 -3
  101. pywargame/zuntzu/countersheet.py +3 -3
  102. pywargame/zuntzu/dicehand.py +2 -2
  103. pywargame/zuntzu/exporter.py +10 -10
  104. pywargame/zuntzu/gamebox.py +7 -7
  105. pywargame/zuntzu/map.py +2 -2
  106. pywargame/zuntzu/scenario.py +2 -2
  107. {pywargame-0.3.1.dist-info → pywargame-0.4.1.dist-info}/METADATA +1 -1
  108. pywargame-0.4.1.dist-info/RECORD +150 -0
  109. pywargame-0.3.1.dist-info/RECORD +0 -150
  110. {pywargame-0.3.1.dist-info → pywargame-0.4.1.dist-info}/WHEEL +0 -0
  111. {pywargame-0.3.1.dist-info → pywargame-0.4.1.dist-info}/licenses/LICENSE +0 -0
  112. {pywargame-0.3.1.dist-info → pywargame-0.4.1.dist-info}/top_level.txt +0 -0
@@ -1,5 +1,5 @@
1
1
  ## BEGIN_IMPORT
2
- from common import VerboseGuard
2
+ from ... common import VerboseGuard
3
3
  from .. trait import Trait
4
4
  ## END_IMPORT
5
5
 
@@ -1,5 +1,5 @@
1
1
  ## BEGIN_IMPORT
2
- from common import VerboseGuard
2
+ from ... common import VerboseGuard
3
3
  from .. trait import Trait
4
4
  ## END_IMPORT
5
5
 
@@ -1,5 +1,5 @@
1
1
  ## BEGIN_IMPORT
2
- from common import VerboseGuard
2
+ from ... common import VerboseGuard
3
3
  from .. trait import Trait
4
4
  ## END_IMPORT
5
5
 
@@ -1,5 +1,5 @@
1
1
  ## BEGIN_IMPORT
2
- from common import VerboseGuard
2
+ from ... common import VerboseGuard
3
3
  from .. trait import Trait
4
4
  ## END_IMPORT
5
5
 
@@ -1,5 +1,5 @@
1
1
  ## BEGIN_IMPORT
2
- from common import VerboseGuard
2
+ from ... common import VerboseGuard
3
3
  from .. trait import Trait
4
4
  from .. base import *
5
5
  ## END_IMPORT
@@ -1,5 +1,5 @@
1
1
  ## BEGIN_IMPORT
2
- from common import VerboseGuard
2
+ from ... common import VerboseGuard
3
3
  from .. trait import Trait
4
4
  from .. base import *
5
5
  ## END_IMPORT
@@ -1,5 +1,5 @@
1
1
  ## BEGIN_IMPORT
2
- from common import VerboseGuard
2
+ from ... common import VerboseGuard
3
3
  from .. trait import Trait
4
4
  ## END_IMPORT
5
5
 
@@ -1,5 +1,5 @@
1
1
  ## BEGIN_IMPORT
2
- from common import VerboseGuard
2
+ from ... common import VerboseGuard
3
3
  from .. trait import Trait
4
4
  ## END_IMPORT
5
5
 
@@ -1,5 +1,5 @@
1
1
  ## BEGIN_IMPORT
2
- from common import VerboseGuard
2
+ from ... common import VerboseGuard
3
3
  from .. trait import Trait
4
4
  ## END_IMPORT
5
5
 
@@ -1,5 +1,5 @@
1
1
  ## BEGIN_IMPORT
2
- from common import VerboseGuard
2
+ from ... common import VerboseGuard
3
3
  from .. trait import Trait
4
4
  ## END_IMPORT
5
5
 
@@ -1,5 +1,5 @@
1
1
  ## BEGIN_IMPORT
2
- from common import VerboseGuard
2
+ from ... common import VerboseGuard
3
3
  from .. trait import Trait
4
4
  from . dynamicproperty import ChangePropertyTrait
5
5
  ## END_IMPORT
@@ -1,5 +1,5 @@
1
1
  ## BEGIN_IMPORT
2
- from common import VerboseGuard
2
+ from ... common import VerboseGuard
3
3
  from .. trait import Trait
4
4
  from .. base import *
5
5
  ## END_IMPORT
@@ -1,5 +1,5 @@
1
1
  ## BEGIN_IMPORT
2
- from common import VerboseGuard
2
+ from ... common import VerboseGuard
3
3
  from .. trait import Trait
4
4
  ## END_IMPORT
5
5
 
@@ -1,5 +1,5 @@
1
1
  ## BEGIN_IMPORT
2
- from common import VerboseGuard
2
+ from ... common import VerboseGuard
3
3
  from .. trait import Trait
4
4
  from .. base import *
5
5
  ## END_IMPORT
@@ -1,5 +1,5 @@
1
1
  ## BEGIN_IMPORT
2
- from common import VerboseGuard
2
+ from ... common import VerboseGuard
3
3
  from .. trait import Trait
4
4
  ## END_IMPORT
5
5
 
@@ -1,5 +1,5 @@
1
1
  ## BEGIN_IMPORT
2
- from common import VerboseGuard
2
+ from ... common import VerboseGuard
3
3
  from .. trait import Trait
4
4
  ## END_IMPORT
5
5
 
@@ -1,5 +1,5 @@
1
1
  ## BEGIN_IMPORT
2
- from common import VerboseGuard
2
+ from ... common import VerboseGuard
3
3
  from .. trait import Trait
4
4
  ## END_IMPORT
5
5
 
@@ -1,5 +1,5 @@
1
1
  ## BEGIN_IMPORT
2
- from common import VerboseGuard
2
+ from ... common import VerboseGuard
3
3
  from .. trait import Trait
4
4
  from .. base import *
5
5
  ## END_IMPORT
@@ -1,5 +1,5 @@
1
1
  ## BEGIN_IMPORT
2
- from common import VerboseGuard
2
+ from ... common import VerboseGuard
3
3
  from .. trait import Trait
4
4
  ## END_IMPORT
5
5
 
@@ -1,5 +1,5 @@
1
1
  ## BEGIN_IMPORT
2
- from common import VerboseGuard
2
+ from ... common import VerboseGuard
3
3
  from .. trait import Trait
4
4
  ## END_IMPORT
5
5
 
@@ -1,5 +1,5 @@
1
1
  ## BEGIN_IMPORT
2
- from common import VerboseGuard
2
+ from ... common import VerboseGuard
3
3
  from .. trait import Trait
4
4
  ## END_IMPORT
5
5
 
@@ -1,5 +1,5 @@
1
1
  ## BEGIN_IMPORT
2
- from common import VerboseGuard
2
+ from ... common import VerboseGuard
3
3
  from .. trait import Trait
4
4
  from .. base import *
5
5
  # from .. widget import *
@@ -1,5 +1,5 @@
1
1
  ## BEGIN_IMPORT
2
- from common import VerboseGuard
2
+ from ... common import VerboseGuard
3
3
  from .. trait import Trait
4
4
  ## END_IMPORT
5
5
 
@@ -1,5 +1,5 @@
1
1
  ## BEGIN_IMPORT
2
- from common import VerboseGuard
2
+ from ... common import VerboseGuard
3
3
  from .. trait import Trait
4
4
  ## END_IMPORT
5
5
 
@@ -1,5 +1,5 @@
1
1
  ## BEGIN_IMPORT
2
- from common import VerboseGuard
2
+ from ... common import VerboseGuard
3
3
  from .. trait import Trait
4
4
  ## END_IMPORT
5
5
 
@@ -1,5 +1,5 @@
1
1
  ## BEGIN_IMPORT
2
- from common import VerboseGuard
2
+ from ... common import VerboseGuard
3
3
  from .. trait import Trait
4
4
  ## END_IMPORT
5
5
 
@@ -1,5 +1,5 @@
1
1
  ## BEGIN_IMPORT
2
- from common import VerboseGuard
2
+ from ... common import VerboseGuard
3
3
  from .. trait import Trait
4
4
  from .. base import *
5
5
  ## END_IMPORT
@@ -1,5 +1,5 @@
1
1
  ## BEGIN_IMPORT
2
- from common import VerboseGuard
2
+ from ... common import VerboseGuard
3
3
  from .. trait import Trait
4
4
  from .. base import *
5
5
  ## END_IMPORT
@@ -1,5 +1,5 @@
1
1
  ## BEGIN_IMPORT
2
- from common import VerboseGuard
2
+ from ... common import VerboseGuard
3
3
  from .. trait import Trait
4
4
  from .. base import *
5
5
  ## END_IMPORT
@@ -1,5 +1,5 @@
1
1
  ## BEGIN_IMPORT
2
- from common import VerboseGuard
2
+ from ... common import VerboseGuard
3
3
  from .. trait import Trait
4
4
  from .. base import *
5
5
  ## END_IMPORT
@@ -1,5 +1,5 @@
1
1
  ## BEGIN_IMPORT
2
- from common import VerboseGuard
2
+ from ... common import VerboseGuard
3
3
  from .. trait import Trait
4
4
  ## END_IMPORT
5
5
 
@@ -1,5 +1,5 @@
1
1
  ## BEGIN_IMPORT
2
- from common import VerboseGuard
2
+ from ... common import VerboseGuard
3
3
  from .. trait import Trait
4
4
  ## END_IMPORT
5
5
 
@@ -1,5 +1,5 @@
1
1
  ## BEGIN_IMPORT
2
- from common import VerboseGuard
2
+ from ... common import VerboseGuard
3
3
  from .. trait import Trait
4
4
  ## END_IMPORT
5
5
 
@@ -1,5 +1,5 @@
1
1
  ## BEGIN_IMPORT
2
- from common import VerboseGuard
2
+ from ... common import VerboseGuard
3
3
  from .. trait import Trait
4
4
  from .. base import *
5
5
  ## END_IMPORT
@@ -1,5 +1,5 @@
1
1
  ## BEGIN_IMPORT
2
- from common import VerboseGuard
2
+ from ... common import VerboseGuard
3
3
  from .. trait import Trait
4
4
  from .. base import *
5
5
  ## END_IMPORT
pywargame/vassal/turn.py CHANGED
@@ -1,5 +1,5 @@
1
1
  ## BEGIN_IMPORT
2
- from common import VerboseGuard
2
+ from .. common import VerboseGuard
3
3
  from . base import *
4
4
  from . element import Element
5
5
  ## END_IMPORT
@@ -1,5 +1,5 @@
1
1
  ## BEGIN_IMPORT
2
- from common import VerboseGuard
2
+ from .. common import VerboseGuard
3
3
  from . base import *
4
4
  from . element import Element
5
5
  from . command import *
pywargame/vassal/vmod.py CHANGED
@@ -287,7 +287,7 @@ class VMod:
287
287
  Whether to be verbose or not
288
288
  '''
289
289
  ## BEGIN_IMPORT
290
- from common import VerboseGuard, Verbose
290
+ from .. common import VerboseGuard, Verbose
291
291
  ## END_IMPORT
292
292
 
293
293
  with cls(vmod_filename,'r') as vmod:
@@ -318,6 +318,50 @@ class VMod:
318
318
  moduleData.encode()})
319
319
 
320
320
 
321
+ @classmethod
322
+ def patchFunction(cls,vmod_filename,patch,verbose):
323
+ '''Patch a module with a Python script
324
+
325
+ Parameters
326
+ ----------
327
+ vmod_filename : str
328
+ File name of module to patch. Will be overwritten
329
+ patch : callable
330
+ A callable to patch the VMod. It must have signature
331
+
332
+ patch(buildFile : pywargames.vassal.BuildFile,
333
+ moduleData : pywargames.vassal.ModuleData,
334
+ vmod : pywargames.vassal.VMod
335
+ verbose : boolean)
336
+
337
+ verbose : bool
338
+ Whether to be verbose or not
339
+ '''
340
+ ## BEGIN_IMPORT
341
+ from .. common import VerboseGuard, Verbose
342
+ from . buildfile import BuildFile
343
+ from . moduledata import ModuleData
344
+ ## END_IMPORT
345
+
346
+ with cls(vmod_filename,'r') as vmod:
347
+ buildFile = BuildFile(vmod.getBuildFile())
348
+ moduleData = ModuleData(vmod.getModuleData())
349
+
350
+ with cls(vmod_filename,'a') as vmod:
351
+ try:
352
+ patch(buildFile,
353
+ moduleData,
354
+ vmod,
355
+ verbose)
356
+
357
+ vmod.replaceFiles(**{VMod.BUILD_FILE :
358
+ buildFile.encode(),
359
+ VMod.MODULE_DATA :
360
+ moduleData.encode()})
361
+ except Exception as e:
362
+ raise
363
+
364
+
321
365
  #
322
366
  # EOF
323
367
  #
@@ -1,5 +1,5 @@
1
1
  ## BEGIN_IMPORT
2
- from common import VerboseGuard
2
+ from .. common import VerboseGuard
3
3
  from . base import *
4
4
  from . element import Element
5
5
  from . gameelements import GameElement
@@ -1,5 +1,5 @@
1
1
  ## BEGIN_IMPORT
2
- from common import VerboseGuard
2
+ from .. common import VerboseGuard
3
3
  from . base import *
4
4
  from . element import Element
5
5
  from . command import *
pywargame/vassal/zone.py CHANGED
@@ -1,5 +1,5 @@
1
1
  ## BEGIN_IMPORT
2
- from common import VerboseGuard
2
+ from .. common import VerboseGuard
3
3
  from . base import *
4
4
  from . element import Element
5
5
  from . grid import *
pywargame/vassal.py CHANGED
@@ -62,7 +62,7 @@
62
62
  # traits/movefixed.py
63
63
  # traits/sheet.py
64
64
  # traits/hide.py
65
- # traits/return.py
65
+ # traits/retrn.py
66
66
  # game.py
67
67
  # buildfile.py
68
68
  # moduledata.py
@@ -498,7 +498,12 @@ class DiceDrawer:
498
498
  path.line(to=(0.0000,0.2920))
499
499
 
500
500
 
501
- draw.number(num,yoff=.07,scale=.7)
501
+ scale = .7
502
+ yoff = .07
503
+ if num > 9:
504
+ scale *= .8
505
+ yoff = .015
506
+ draw.number(num,yoff=yoff,scale=scale)
502
507
  return draw.image()
503
508
 
504
509
 
@@ -10032,7 +10037,7 @@ Trait.known_traits.append(HideTrait)
10032
10037
  # EOF
10033
10038
  #
10034
10039
  # ====================================================================
10035
- # From traits/return.py
10040
+ # From traits/retrn.py
10036
10041
 
10037
10042
  # --------------------------------------------------------------------
10038
10043
  class ReturnTrait(Trait):
@@ -12224,6 +12229,45 @@ class VMod:
12224
12229
  moduleData.encode()})
12225
12230
 
12226
12231
 
12232
+ @classmethod
12233
+ def patchFunction(cls,vmod_filename,patch,verbose):
12234
+ '''Patch a module with a Python script
12235
+
12236
+ Parameters
12237
+ ----------
12238
+ vmod_filename : str
12239
+ File name of module to patch. Will be overwritten
12240
+ patch : callable
12241
+ A callable to patch the VMod. It must have signature
12242
+
12243
+ patch(buildFile : pywargames.vassal.BuildFile,
12244
+ moduleData : pywargames.vassal.ModuleData,
12245
+ vmod : pywargames.vassal.VMod
12246
+ verbose : boolean)
12247
+
12248
+ verbose : bool
12249
+ Whether to be verbose or not
12250
+ '''
12251
+
12252
+ with cls(vmod_filename,'r') as vmod:
12253
+ buildFile = BuildFile(vmod.getBuildFile())
12254
+ moduleData = ModuleData(vmod.getModuleData())
12255
+
12256
+ with cls(vmod_filename,'a') as vmod:
12257
+ try:
12258
+ patch(buildFile,
12259
+ moduleData,
12260
+ vmod,
12261
+ verbose)
12262
+
12263
+ vmod.replaceFiles(**{VMod.BUILD_FILE :
12264
+ buildFile.encode(),
12265
+ VMod.MODULE_DATA :
12266
+ moduleData.encode()})
12267
+ except Exception as e:
12268
+ raise
12269
+
12270
+
12227
12271
  #
12228
12272
  # EOF
12229
12273
  #
pywargame/vmodpatch.py CHANGED
@@ -69,7 +69,7 @@
69
69
  # traits/movefixed.py
70
70
  # traits/sheet.py
71
71
  # traits/hide.py
72
- # traits/return.py
72
+ # traits/retrn.py
73
73
  # game.py
74
74
  # buildfile.py
75
75
  # moduledata.py
@@ -505,7 +505,12 @@ class DiceDrawer:
505
505
  path.line(to=(0.0000,0.2920))
506
506
 
507
507
 
508
- draw.number(num,yoff=.07,scale=.7)
508
+ scale = .7
509
+ yoff = .07
510
+ if num > 9:
511
+ scale *= .8
512
+ yoff = .015
513
+ draw.number(num,yoff=yoff,scale=scale)
509
514
  return draw.image()
510
515
 
511
516
 
@@ -10039,7 +10044,7 @@ Trait.known_traits.append(HideTrait)
10039
10044
  # EOF
10040
10045
  #
10041
10046
  # ====================================================================
10042
- # From traits/return.py
10047
+ # From traits/retrn.py
10043
10048
 
10044
10049
  # --------------------------------------------------------------------
10045
10050
  class ReturnTrait(Trait):
@@ -12231,6 +12236,45 @@ class VMod:
12231
12236
  moduleData.encode()})
12232
12237
 
12233
12238
 
12239
+ @classmethod
12240
+ def patchFunction(cls,vmod_filename,patch,verbose):
12241
+ '''Patch a module with a Python script
12242
+
12243
+ Parameters
12244
+ ----------
12245
+ vmod_filename : str
12246
+ File name of module to patch. Will be overwritten
12247
+ patch : callable
12248
+ A callable to patch the VMod. It must have signature
12249
+
12250
+ patch(buildFile : pywargames.vassal.BuildFile,
12251
+ moduleData : pywargames.vassal.ModuleData,
12252
+ vmod : pywargames.vassal.VMod
12253
+ verbose : boolean)
12254
+
12255
+ verbose : bool
12256
+ Whether to be verbose or not
12257
+ '''
12258
+
12259
+ with cls(vmod_filename,'r') as vmod:
12260
+ buildFile = BuildFile(vmod.getBuildFile())
12261
+ moduleData = ModuleData(vmod.getModuleData())
12262
+
12263
+ with cls(vmod_filename,'a') as vmod:
12264
+ try:
12265
+ patch(buildFile,
12266
+ moduleData,
12267
+ vmod,
12268
+ verbose)
12269
+
12270
+ vmod.replaceFiles(**{VMod.BUILD_FILE :
12271
+ buildFile.encode(),
12272
+ VMod.MODULE_DATA :
12273
+ moduleData.encode()})
12274
+ except Exception as e:
12275
+ raise
12276
+
12277
+
12234
12278
  #
12235
12279
  # EOF
12236
12280
  #
pywargame/vsavdump.py CHANGED
@@ -69,7 +69,7 @@
69
69
  # traits/movefixed.py
70
70
  # traits/sheet.py
71
71
  # traits/hide.py
72
- # traits/return.py
72
+ # traits/retrn.py
73
73
  # game.py
74
74
  # buildfile.py
75
75
  # moduledata.py
@@ -505,7 +505,12 @@ class DiceDrawer:
505
505
  path.line(to=(0.0000,0.2920))
506
506
 
507
507
 
508
- draw.number(num,yoff=.07,scale=.7)
508
+ scale = .7
509
+ yoff = .07
510
+ if num > 9:
511
+ scale *= .8
512
+ yoff = .015
513
+ draw.number(num,yoff=yoff,scale=scale)
509
514
  return draw.image()
510
515
 
511
516
 
@@ -10039,7 +10044,7 @@ Trait.known_traits.append(HideTrait)
10039
10044
  # EOF
10040
10045
  #
10041
10046
  # ====================================================================
10042
- # From traits/return.py
10047
+ # From traits/retrn.py
10043
10048
 
10044
10049
  # --------------------------------------------------------------------
10045
10050
  class ReturnTrait(Trait):
@@ -12231,6 +12236,45 @@ class VMod:
12231
12236
  moduleData.encode()})
12232
12237
 
12233
12238
 
12239
+ @classmethod
12240
+ def patchFunction(cls,vmod_filename,patch,verbose):
12241
+ '''Patch a module with a Python script
12242
+
12243
+ Parameters
12244
+ ----------
12245
+ vmod_filename : str
12246
+ File name of module to patch. Will be overwritten
12247
+ patch : callable
12248
+ A callable to patch the VMod. It must have signature
12249
+
12250
+ patch(buildFile : pywargames.vassal.BuildFile,
12251
+ moduleData : pywargames.vassal.ModuleData,
12252
+ vmod : pywargames.vassal.VMod
12253
+ verbose : boolean)
12254
+
12255
+ verbose : bool
12256
+ Whether to be verbose or not
12257
+ '''
12258
+
12259
+ with cls(vmod_filename,'r') as vmod:
12260
+ buildFile = BuildFile(vmod.getBuildFile())
12261
+ moduleData = ModuleData(vmod.getModuleData())
12262
+
12263
+ with cls(vmod_filename,'a') as vmod:
12264
+ try:
12265
+ patch(buildFile,
12266
+ moduleData,
12267
+ vmod,
12268
+ verbose)
12269
+
12270
+ vmod.replaceFiles(**{VMod.BUILD_FILE :
12271
+ buildFile.encode(),
12272
+ VMod.MODULE_DATA :
12273
+ moduleData.encode()})
12274
+ except Exception as e:
12275
+ raise
12276
+
12277
+
12234
12278
  #
12235
12279
  # EOF
12236
12280
  #