* Bug 13548 fixed: now Slider values can be int. multiples of sliderStep 37/19937/8
Stéphane Mottelet [Fri, 6 Apr 2018 13:19:34 +0000 (15:19 +0200)]
http://bugzilla.scilab.org/show_bug.cgi?id=13548

This patch adds a new "SnapToTicks" property and also fixes:

http://bugzilla.scilab.org/show_bug.cgi?id=15514
http://bugzilla.scilab.org/show_bug.cgi?id=15518

Change-Id: I9db479f8cf7a7a4294f9ffb9a314cc2425d68053

21 files changed:
scilab/modules/graphic_objects/includes/graphicObjectProperties.h
scilab/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/graphicObject/GraphicObjectProperties.java
scilab/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/uicontrol/Uicontrol.java
scilab/modules/graphic_objects/src/java/org/scilab/modules/graphic_objects/xmlloader/XMLDomLoader.java
scilab/modules/graphic_objects/src/scripts/propertiesMap.properties
scilab/modules/graphics/Gui_Import.def
scilab/modules/graphics/macros/%h_p.sci
scilab/modules/graphics/src/c/getHandleProperty/GetHashTable.c
scilab/modules/graphics/src/c/getHandleProperty/SetHashTable.c
scilab/modules/gui/Makefile.am
scilab/modules/gui/Makefile.in
scilab/modules/gui/help/en_US/uicontrol_properties.xml
scilab/modules/gui/includes/GetUicontrol.h
scilab/modules/gui/includes/SetUicontrol.h
scilab/modules/gui/sci_gateway/c/sci_uicontrol.c
scilab/modules/gui/src/c/gui.vcxproj
scilab/modules/gui/src/c/gui.vcxproj.filters
scilab/modules/gui/src/cpp/GetUicontrolSnapToTicks.cpp [new file with mode: 0644]
scilab/modules/gui/src/cpp/SetUicontrolSnapToTicks.cpp [new file with mode: 0644]
scilab/modules/gui/src/java/org/scilab/modules/gui/bridge/slider/SwingScilabSlider.java
scilab/modules/hdf5/src/cpp/handle_properties.hxx

index d1cab15..9a11123 100755 (executable)
 #define __GO_UI_TOOLTIPSTRING__ 306
 #define __GO_UI_TOOLTIPSTRING_SIZE__ 307
 #define __GO_UI_SLIDERSTEP__ 308
-#define __GO_UI_UNITS__ 309
-#define __GO_UI_VALUE__ 310
-#define __GO_UI_TAB_VALUE__ 311
-#define __GO_UI_VALUE_SIZE__ 312
-#define __GO_UI_VERTICALALIGNMENT__ 313
-#define __GO_UIPARENTMENU__ 314
-#define __GO_UICHILDMENU__ 315
-#define __GO_UICHECKEDMENU__ 316
-#define __GO_UI_CHECKED__ 317
-#define __GO_UI_LABEL__ 318
-#define __GO_UI_MNEMONIC__ 319
-#define __GO_UI_ACCELERATOR__ 320
-#define __GO_UI_SEPARATOR__ 321
-#define __GO_UI_ICON__ 322
-#define __GO_CONSOLE__ 323
-#define __GO_SHOWHIDDENHANDLES__ 324
-#define __GO_SHOWHIDDENPROPERTIES__ 325
-#define __GO_USEDEPRECATEDLF__ 326
-#define __GO_WAITBAR__ 327
-#define __GO_PROGRESSIONBAR__ 328
-#define __GO_UI_MESSAGE__ 329
-#define __GO_UI_MESSAGE_SIZE__ 330
-#define __GO_DATATIP__ 331
-#define __GO_DATATIP_DATA__ 332
-#define __GO_DATATIP_ORIENTATION__ 333
-#define __GO_DATATIP_DISPLAY_COMPONENTS__ 334
-#define __GO_DATATIP_AUTOORIENTATION__ 335
-#define __GO_DATATIP_INTERP_MODE__ 336
-#define __GO_DATATIP_DISPLAY_FNC__ 337
-#define __GO_DATATIP_BOX_MODE__ 338
-#define __GO_DATATIP_LABEL_MODE__ 339
-#define __GO_DATATIP_MARK__ 340
-#define __GO_DATATIP_DETACHED_MODE__ 341
-#define __GO_DATATIP_DETACHED_POSITION__ 342
-#define __GO_AMBIENTCOLOR__ 343
-#define __GO_DIFFUSECOLOR__ 344
-#define __GO_SPECULARCOLOR__ 345
-#define __GO_COLOR_MATERIAL__ 346
-#define __GO_MATERIAL_SHININESS__ 347
-#define __GO_LIGHT__ 348
-#define __GO_LIGHT_TYPE__ 349
-#define __GO_DATATIPS__ 350
-#define __GO_DATATIPS_COUNT__ 351
-#define __GO_DATATIP_INDEXES__ 352
-#define __GO_DATATIP_DISPLAY_MODE__ 353
-#define __GO_DATA_MODEL_DISPLAY_FUNCTION__ 354
-#define __GO_DATA_MODEL_DISPLAY_FUNCTION_SIZE__ 355
-#define __GO_RESIZE__ 356
-#define __GO_TOOLBAR__ 357
-#define __GO_TOOLBAR_VISIBLE__ 358
-#define __GO_MENUBAR__ 359
-#define __GO_MENUBAR_VISIBLE__ 360
-#define __GO_INFOBAR_VISIBLE__ 361
-#define __GO_DOCKABLE__ 362
-#define __GO_LAYOUT__ 363
-#define __GO_LAYOUT_SET__ 364
-#define __GO_UI_TAB__ 365
-#define __GO_UI_GRIDBAG_GRID__ 366
-#define __GO_UI_GRIDBAG_WEIGHT__ 367
-#define __GO_UI_GRIDBAG_FILL__ 368
-#define __GO_UI_GRIDBAG_ANCHOR__ 369
-#define __GO_UI_GRIDBAG_PADDING__ 370
-#define __GO_UI_GRIDBAG_PREFERREDSIZE__ 371
-#define __GO_UI_GRID_GRID__ 372
-#define __GO_UI_GRID_PADDING__ 373
-#define __GO_UI_BORDER_POSITION__ 374
-#define __GO_UI_BORDER_PREFERREDSIZE__ 375
-#define __GO_GRID_OPT_GRID__ 376
-#define __GO_GRID_OPT_PADDING__ 377
-#define __GO_BORDER_OPT_PADDING__ 378
-#define __GO_UI_FRAME_BORDER__ 379
-#define __GO_UI_FRAME_BORDER_COLOR__ 380
-#define __GO_UI_FRAME_BORDER_HIGHLIGHT_IN__ 381
-#define __GO_UI_FRAME_BORDER_HIGHLIGHT_OUT__ 382
-#define __GO_UI_FRAME_BORDER_IN_BORDER__ 383
-#define __GO_UI_FRAME_BORDER_JUSTIFICATION__ 384
-#define __GO_UI_FRAME_BORDER_OUT_BORDER__ 385
-#define __GO_UI_FRAME_BORDER_ROUNDED__ 386
-#define __GO_UI_FRAME_BORDER_SHADOW_IN__ 387
-#define __GO_UI_FRAME_BORDER_SHADOW_OUT__ 388
-#define __GO_UI_FRAME_BORDER_TITLE__ 389
-#define __GO_UI_FRAME_BORDER_POSITION__ 390
-#define __GO_UI_FRAME_BORDER_STYLE__ 391
-#define __GO_UI_GROUP_NAME__ 392
-#define __GO_UI_TITLE_POSITION__ 393
-#define __GO_UI_TITLE_SCROLL__ 394
-#define __GO_UI_FRAME_BORDER_TYPE__ 395
-#define __GO_UI_SCROLLABLE__ 396
-#define __GO_COLOR_SET__ 397
-#define __GO_MARK_SIZES__ 398
-#define __GO_NUM_MARK_SIZES__ 399
-#define __GO_MARK_FOREGROUNDS__ 400
-#define __GO_NUM_MARK_FOREGROUNDS__ 401
-#define __GO_MARK_BACKGROUNDS__ 402
-#define __GO_NUM_MARK_BACKGROUNDS__ 403
-#define __GO_UI_FOCUS__ 404
+#define __GO_UI_SNAPTOTICKS__ 309
+#define __GO_UI_UNITS__ 310
+#define __GO_UI_VALUE__ 311
+#define __GO_UI_TAB_VALUE__ 312
+#define __GO_UI_VALUE_SIZE__ 313
+#define __GO_UI_VERTICALALIGNMENT__ 314
+#define __GO_UIPARENTMENU__ 315
+#define __GO_UICHILDMENU__ 316
+#define __GO_UICHECKEDMENU__ 317
+#define __GO_UI_CHECKED__ 318
+#define __GO_UI_LABEL__ 319
+#define __GO_UI_MNEMONIC__ 320
+#define __GO_UI_ACCELERATOR__ 321
+#define __GO_UI_SEPARATOR__ 322
+#define __GO_UI_ICON__ 323
+#define __GO_CONSOLE__ 324
+#define __GO_SHOWHIDDENHANDLES__ 325
+#define __GO_SHOWHIDDENPROPERTIES__ 326
+#define __GO_USEDEPRECATEDLF__ 327
+#define __GO_WAITBAR__ 328
+#define __GO_PROGRESSIONBAR__ 329
+#define __GO_UI_MESSAGE__ 330
+#define __GO_UI_MESSAGE_SIZE__ 331
+#define __GO_DATATIP__ 332
+#define __GO_DATATIP_DATA__ 333
+#define __GO_DATATIP_ORIENTATION__ 334
+#define __GO_DATATIP_DISPLAY_COMPONENTS__ 335
+#define __GO_DATATIP_AUTOORIENTATION__ 336
+#define __GO_DATATIP_INTERP_MODE__ 337
+#define __GO_DATATIP_DISPLAY_FNC__ 338
+#define __GO_DATATIP_BOX_MODE__ 339
+#define __GO_DATATIP_LABEL_MODE__ 340
+#define __GO_DATATIP_MARK__ 341
+#define __GO_DATATIP_DETACHED_MODE__ 342
+#define __GO_DATATIP_DETACHED_POSITION__ 343
+#define __GO_AMBIENTCOLOR__ 344
+#define __GO_DIFFUSECOLOR__ 345
+#define __GO_SPECULARCOLOR__ 346
+#define __GO_COLOR_MATERIAL__ 347
+#define __GO_MATERIAL_SHININESS__ 348
+#define __GO_LIGHT__ 349
+#define __GO_LIGHT_TYPE__ 350
+#define __GO_DATATIPS__ 351
+#define __GO_DATATIPS_COUNT__ 352
+#define __GO_DATATIP_INDEXES__ 353
+#define __GO_DATATIP_DISPLAY_MODE__ 354
+#define __GO_DATA_MODEL_DISPLAY_FUNCTION__ 355
+#define __GO_DATA_MODEL_DISPLAY_FUNCTION_SIZE__ 356
+#define __GO_RESIZE__ 357
+#define __GO_TOOLBAR__ 358
+#define __GO_TOOLBAR_VISIBLE__ 359
+#define __GO_MENUBAR__ 360
+#define __GO_MENUBAR_VISIBLE__ 361
+#define __GO_INFOBAR_VISIBLE__ 362
+#define __GO_DOCKABLE__ 363
+#define __GO_LAYOUT__ 364
+#define __GO_LAYOUT_SET__ 365
+#define __GO_UI_TAB__ 366
+#define __GO_UI_GRIDBAG_GRID__ 367
+#define __GO_UI_GRIDBAG_WEIGHT__ 368
+#define __GO_UI_GRIDBAG_FILL__ 369
+#define __GO_UI_GRIDBAG_ANCHOR__ 370
+#define __GO_UI_GRIDBAG_PADDING__ 371
+#define __GO_UI_GRIDBAG_PREFERREDSIZE__ 372
+#define __GO_UI_GRID_GRID__ 373
+#define __GO_UI_GRID_PADDING__ 374
+#define __GO_UI_BORDER_POSITION__ 375
+#define __GO_UI_BORDER_PREFERREDSIZE__ 376
+#define __GO_GRID_OPT_GRID__ 377
+#define __GO_GRID_OPT_PADDING__ 378
+#define __GO_BORDER_OPT_PADDING__ 379
+#define __GO_UI_FRAME_BORDER__ 380
+#define __GO_UI_FRAME_BORDER_COLOR__ 381
+#define __GO_UI_FRAME_BORDER_HIGHLIGHT_IN__ 382
+#define __GO_UI_FRAME_BORDER_HIGHLIGHT_OUT__ 383
+#define __GO_UI_FRAME_BORDER_IN_BORDER__ 384
+#define __GO_UI_FRAME_BORDER_JUSTIFICATION__ 385
+#define __GO_UI_FRAME_BORDER_OUT_BORDER__ 386
+#define __GO_UI_FRAME_BORDER_ROUNDED__ 387
+#define __GO_UI_FRAME_BORDER_SHADOW_IN__ 388
+#define __GO_UI_FRAME_BORDER_SHADOW_OUT__ 389
+#define __GO_UI_FRAME_BORDER_TITLE__ 390
+#define __GO_UI_FRAME_BORDER_POSITION__ 391
+#define __GO_UI_FRAME_BORDER_STYLE__ 392
+#define __GO_UI_GROUP_NAME__ 393
+#define __GO_UI_TITLE_POSITION__ 394
+#define __GO_UI_TITLE_SCROLL__ 395
+#define __GO_UI_FRAME_BORDER_TYPE__ 396
+#define __GO_UI_SCROLLABLE__ 397
+#define __GO_COLOR_SET__ 398
+#define __GO_MARK_SIZES__ 399
+#define __GO_NUM_MARK_SIZES__ 400
+#define __GO_MARK_FOREGROUNDS__ 401
+#define __GO_NUM_MARK_FOREGROUNDS__ 402
+#define __GO_MARK_BACKGROUNDS__ 403
+#define __GO_NUM_MARK_BACKGROUNDS__ 404
+#define __GO_UI_FOCUS__ 405
 
 #endif /* !__GRAPHIC_OBJECT_PROPERTIES_H__ */
index b80f66d..3778a88 100644 (file)
@@ -329,101 +329,102 @@ public class GraphicObjectProperties {
     public static final int __GO_UI_TOOLTIPSTRING__ = 306;
     public static final int __GO_UI_TOOLTIPSTRING_SIZE__ = 307;
     public static final int __GO_UI_SLIDERSTEP__ = 308;
-    public static final int __GO_UI_UNITS__ = 309;
-    public static final int __GO_UI_VALUE__ = 310;
-    public static final int __GO_UI_TAB_VALUE__ = 311;
-    public static final int __GO_UI_VALUE_SIZE__ = 312;
-    public static final int __GO_UI_VERTICALALIGNMENT__ = 313;
-    public static final int __GO_UIPARENTMENU__ = 314;
-    public static final int __GO_UICHILDMENU__ = 315;
-    public static final int __GO_UICHECKEDMENU__ = 316;
-    public static final int __GO_UI_CHECKED__ = 317;
-    public static final int __GO_UI_LABEL__ = 318;
-    public static final int __GO_UI_MNEMONIC__ = 319;
-    public static final int __GO_UI_ACCELERATOR__ = 320;
-    public static final int __GO_UI_SEPARATOR__ = 321;
-    public static final int __GO_UI_ICON__ = 322;
-    public static final int __GO_CONSOLE__ = 323;
-    public static final int __GO_SHOWHIDDENHANDLES__ = 324;
-    public static final int __GO_SHOWHIDDENPROPERTIES__ = 325;
-    public static final int __GO_USEDEPRECATEDLF__ = 326;
-    public static final int __GO_WAITBAR__ = 327;
-    public static final int __GO_PROGRESSIONBAR__ = 328;
-    public static final int __GO_UI_MESSAGE__ = 329;
-    public static final int __GO_UI_MESSAGE_SIZE__ = 330;
-    public static final int __GO_DATATIP__ = 331;
-    public static final int __GO_DATATIP_DATA__ = 332;
-    public static final int __GO_DATATIP_ORIENTATION__ = 333;
-    public static final int __GO_DATATIP_DISPLAY_COMPONENTS__ = 334;
-    public static final int __GO_DATATIP_AUTOORIENTATION__ = 335;
-    public static final int __GO_DATATIP_INTERP_MODE__ = 336;
-    public static final int __GO_DATATIP_DISPLAY_FNC__ = 337;
-    public static final int __GO_DATATIP_BOX_MODE__ = 338;
-    public static final int __GO_DATATIP_LABEL_MODE__ = 339;
-    public static final int __GO_DATATIP_MARK__ = 340;
-    public static final int __GO_DATATIP_DETACHED_MODE__ = 341;
-    public static final int __GO_DATATIP_DETACHED_POSITION__ = 342;
-    public static final int __GO_AMBIENTCOLOR__ = 343;
-    public static final int __GO_DIFFUSECOLOR__ = 344;
-    public static final int __GO_SPECULARCOLOR__ = 345;
-    public static final int __GO_COLOR_MATERIAL__ = 346;
-    public static final int __GO_MATERIAL_SHININESS__ = 347;
-    public static final int __GO_LIGHT__ = 348;
-    public static final int __GO_LIGHT_TYPE__ = 349;
-    public static final int __GO_DATATIPS__ = 350;
-    public static final int __GO_DATATIPS_COUNT__ = 351;
-    public static final int __GO_DATATIP_INDEXES__ = 352;
-    public static final int __GO_DATATIP_DISPLAY_MODE__ = 353;
-    public static final int __GO_DATA_MODEL_DISPLAY_FUNCTION__ = 354;
-    public static final int __GO_DATA_MODEL_DISPLAY_FUNCTION_SIZE__ = 355;
-    public static final int __GO_RESIZE__ = 356;
-    public static final int __GO_TOOLBAR__ = 357;
-    public static final int __GO_TOOLBAR_VISIBLE__ = 358;
-    public static final int __GO_MENUBAR__ = 359;
-    public static final int __GO_MENUBAR_VISIBLE__ = 360;
-    public static final int __GO_INFOBAR_VISIBLE__ = 361;
-    public static final int __GO_DOCKABLE__ = 362;
-    public static final int __GO_LAYOUT__ = 363;
-    public static final int __GO_LAYOUT_SET__ = 364;
-    public static final int __GO_UI_TAB__ = 365;
-    public static final int __GO_UI_GRIDBAG_GRID__ = 366;
-    public static final int __GO_UI_GRIDBAG_WEIGHT__ = 367;
-    public static final int __GO_UI_GRIDBAG_FILL__ = 368;
-    public static final int __GO_UI_GRIDBAG_ANCHOR__ = 369;
-    public static final int __GO_UI_GRIDBAG_PADDING__ = 370;
-    public static final int __GO_UI_GRIDBAG_PREFERREDSIZE__ = 371;
-    public static final int __GO_UI_GRID_GRID__ = 372;
-    public static final int __GO_UI_GRID_PADDING__ = 373;
-    public static final int __GO_UI_BORDER_POSITION__ = 374;
-    public static final int __GO_UI_BORDER_PREFERREDSIZE__ = 375;
-    public static final int __GO_GRID_OPT_GRID__ = 376;
-    public static final int __GO_GRID_OPT_PADDING__ = 377;
-    public static final int __GO_BORDER_OPT_PADDING__ = 378;
-    public static final int __GO_UI_FRAME_BORDER__ = 379;
-    public static final int __GO_UI_FRAME_BORDER_COLOR__ = 380;
-    public static final int __GO_UI_FRAME_BORDER_HIGHLIGHT_IN__ = 381;
-    public static final int __GO_UI_FRAME_BORDER_HIGHLIGHT_OUT__ = 382;
-    public static final int __GO_UI_FRAME_BORDER_IN_BORDER__ = 383;
-    public static final int __GO_UI_FRAME_BORDER_JUSTIFICATION__ = 384;
-    public static final int __GO_UI_FRAME_BORDER_OUT_BORDER__ = 385;
-    public static final int __GO_UI_FRAME_BORDER_ROUNDED__ = 386;
-    public static final int __GO_UI_FRAME_BORDER_SHADOW_IN__ = 387;
-    public static final int __GO_UI_FRAME_BORDER_SHADOW_OUT__ = 388;
-    public static final int __GO_UI_FRAME_BORDER_TITLE__ = 389;
-    public static final int __GO_UI_FRAME_BORDER_POSITION__ = 390;
-    public static final int __GO_UI_FRAME_BORDER_STYLE__ = 391;
-    public static final int __GO_UI_GROUP_NAME__ = 392;
-    public static final int __GO_UI_TITLE_POSITION__ = 393;
-    public static final int __GO_UI_TITLE_SCROLL__ = 394;
-    public static final int __GO_UI_FRAME_BORDER_TYPE__ = 395;
-    public static final int __GO_UI_SCROLLABLE__ = 396;
-    public static final int __GO_COLOR_SET__ = 397;
-    public static final int __GO_MARK_SIZES__ = 398;
-    public static final int __GO_NUM_MARK_SIZES__ = 399;
-    public static final int __GO_MARK_FOREGROUNDS__ = 400;
-    public static final int __GO_NUM_MARK_FOREGROUNDS__ = 401;
-    public static final int __GO_MARK_BACKGROUNDS__ = 402;
-    public static final int __GO_NUM_MARK_BACKGROUNDS__ = 403;
-    public static final int __GO_UI_FOCUS__ = 404;
+    public static final int __GO_UI_SNAPTOTICKS__ = 309;
+    public static final int __GO_UI_UNITS__ = 310;
+    public static final int __GO_UI_VALUE__ = 311;
+    public static final int __GO_UI_TAB_VALUE__ = 312;
+    public static final int __GO_UI_VALUE_SIZE__ = 313;
+    public static final int __GO_UI_VERTICALALIGNMENT__ = 314;
+    public static final int __GO_UIPARENTMENU__ = 315;
+    public static final int __GO_UICHILDMENU__ = 316;
+    public static final int __GO_UICHECKEDMENU__ = 317;
+    public static final int __GO_UI_CHECKED__ = 318;
+    public static final int __GO_UI_LABEL__ = 319;
+    public static final int __GO_UI_MNEMONIC__ = 320;
+    public static final int __GO_UI_ACCELERATOR__ = 321;
+    public static final int __GO_UI_SEPARATOR__ = 322;
+    public static final int __GO_UI_ICON__ = 323;
+    public static final int __GO_CONSOLE__ = 324;
+    public static final int __GO_SHOWHIDDENHANDLES__ = 325;
+    public static final int __GO_SHOWHIDDENPROPERTIES__ = 326;
+    public static final int __GO_USEDEPRECATEDLF__ = 327;
+    public static final int __GO_WAITBAR__ = 328;
+    public static final int __GO_PROGRESSIONBAR__ = 329;
+    public static final int __GO_UI_MESSAGE__ = 330;
+    public static final int __GO_UI_MESSAGE_SIZE__ = 331;
+    public static final int __GO_DATATIP__ = 332;
+    public static final int __GO_DATATIP_DATA__ = 333;
+    public static final int __GO_DATATIP_ORIENTATION__ = 334;
+    public static final int __GO_DATATIP_DISPLAY_COMPONENTS__ = 335;
+    public static final int __GO_DATATIP_AUTOORIENTATION__ = 336;
+    public static final int __GO_DATATIP_INTERP_MODE__ = 337;
+    public static final int __GO_DATATIP_DISPLAY_FNC__ = 338;
+    public static final int __GO_DATATIP_BOX_MODE__ = 339;
+    public static final int __GO_DATATIP_LABEL_MODE__ = 340;
+    public static final int __GO_DATATIP_MARK__ = 341;
+    public static final int __GO_DATATIP_DETACHED_MODE__ = 342;
+    public static final int __GO_DATATIP_DETACHED_POSITION__ = 343;
+    public static final int __GO_AMBIENTCOLOR__ = 344;
+    public static final int __GO_DIFFUSECOLOR__ = 345;
+    public static final int __GO_SPECULARCOLOR__ = 346;
+    public static final int __GO_COLOR_MATERIAL__ = 347;
+    public static final int __GO_MATERIAL_SHININESS__ = 348;
+    public static final int __GO_LIGHT__ = 349;
+    public static final int __GO_LIGHT_TYPE__ = 350;
+    public static final int __GO_DATATIPS__ = 351;
+    public static final int __GO_DATATIPS_COUNT__ = 352;
+    public static final int __GO_DATATIP_INDEXES__ = 353;
+    public static final int __GO_DATATIP_DISPLAY_MODE__ = 354;
+    public static final int __GO_DATA_MODEL_DISPLAY_FUNCTION__ = 355;
+    public static final int __GO_DATA_MODEL_DISPLAY_FUNCTION_SIZE__ = 356;
+    public static final int __GO_RESIZE__ = 357;
+    public static final int __GO_TOOLBAR__ = 358;
+    public static final int __GO_TOOLBAR_VISIBLE__ = 359;
+    public static final int __GO_MENUBAR__ = 360;
+    public static final int __GO_MENUBAR_VISIBLE__ = 361;
+    public static final int __GO_INFOBAR_VISIBLE__ = 362;
+    public static final int __GO_DOCKABLE__ = 363;
+    public static final int __GO_LAYOUT__ = 364;
+    public static final int __GO_LAYOUT_SET__ = 365;
+    public static final int __GO_UI_TAB__ = 366;
+    public static final int __GO_UI_GRIDBAG_GRID__ = 367;
+    public static final int __GO_UI_GRIDBAG_WEIGHT__ = 368;
+    public static final int __GO_UI_GRIDBAG_FILL__ = 369;
+    public static final int __GO_UI_GRIDBAG_ANCHOR__ = 370;
+    public static final int __GO_UI_GRIDBAG_PADDING__ = 371;
+    public static final int __GO_UI_GRIDBAG_PREFERREDSIZE__ = 372;
+    public static final int __GO_UI_GRID_GRID__ = 373;
+    public static final int __GO_UI_GRID_PADDING__ = 374;
+    public static final int __GO_UI_BORDER_POSITION__ = 375;
+    public static final int __GO_UI_BORDER_PREFERREDSIZE__ = 376;
+    public static final int __GO_GRID_OPT_GRID__ = 377;
+    public static final int __GO_GRID_OPT_PADDING__ = 378;
+    public static final int __GO_BORDER_OPT_PADDING__ = 379;
+    public static final int __GO_UI_FRAME_BORDER__ = 380;
+    public static final int __GO_UI_FRAME_BORDER_COLOR__ = 381;
+    public static final int __GO_UI_FRAME_BORDER_HIGHLIGHT_IN__ = 382;
+    public static final int __GO_UI_FRAME_BORDER_HIGHLIGHT_OUT__ = 383;
+    public static final int __GO_UI_FRAME_BORDER_IN_BORDER__ = 384;
+    public static final int __GO_UI_FRAME_BORDER_JUSTIFICATION__ = 385;
+    public static final int __GO_UI_FRAME_BORDER_OUT_BORDER__ = 386;
+    public static final int __GO_UI_FRAME_BORDER_ROUNDED__ = 387;
+    public static final int __GO_UI_FRAME_BORDER_SHADOW_IN__ = 388;
+    public static final int __GO_UI_FRAME_BORDER_SHADOW_OUT__ = 389;
+    public static final int __GO_UI_FRAME_BORDER_TITLE__ = 390;
+    public static final int __GO_UI_FRAME_BORDER_POSITION__ = 391;
+    public static final int __GO_UI_FRAME_BORDER_STYLE__ = 392;
+    public static final int __GO_UI_GROUP_NAME__ = 393;
+    public static final int __GO_UI_TITLE_POSITION__ = 394;
+    public static final int __GO_UI_TITLE_SCROLL__ = 395;
+    public static final int __GO_UI_FRAME_BORDER_TYPE__ = 396;
+    public static final int __GO_UI_SCROLLABLE__ = 397;
+    public static final int __GO_COLOR_SET__ = 398;
+    public static final int __GO_MARK_SIZES__ = 399;
+    public static final int __GO_NUM_MARK_SIZES__ = 400;
+    public static final int __GO_MARK_FOREGROUNDS__ = 401;
+    public static final int __GO_NUM_MARK_FOREGROUNDS__ = 402;
+    public static final int __GO_MARK_BACKGROUNDS__ = 403;
+    public static final int __GO_NUM_MARK_BACKGROUNDS__ = 404;
+    public static final int __GO_UI_FOCUS__ = 405;
 
 }
index f8116af..6e50644 100644 (file)
@@ -66,6 +66,7 @@ import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProp
 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_SLIDERSTEP__;
 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_SLIDER__;
 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_SPINNER__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_SNAPTOTICKS__;
 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_STRING_COLNB__;
 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_STRING_SIZE__;
 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_STRING__;
@@ -441,7 +442,7 @@ public class Uicontrol extends GraphicObject {
     private static double defaultFontSize = 0;
     private static String defaultFontAngle = "";
     private static String defaultFontUnits = "";
-    
+
     private UicontrolStyle style;
     private Double[] backgroundColor = { -1.0, -1.0, -1.0};
     private Boolean enable = true;
@@ -459,6 +460,7 @@ public class Uicontrol extends GraphicObject {
     private Double[] position = {DEFAULT_X, DEFAULT_Y, DEFAULT_WIDTH, DEFAULT_HEIGHT};
     private String relief = RELIEF_DEFAULT;
     private Double[] sliderStep = {0.01, 0.1};
+    private Boolean snapToTicks = false;
     private String[] string = new String[] {};
     private int stringColNb = 1; // Used for tables
     private String[] tooltipString = {""};
@@ -516,6 +518,7 @@ public class Uicontrol extends GraphicObject {
         SCALE,
         SHEAR,
         SLIDERSTEP,
+        SNAPTOTICKS,
         STRING,
         STRING_SIZE,
         STRING_COLNB,
@@ -727,6 +730,8 @@ public class Uicontrol extends GraphicObject {
                 return UicontrolProperty.RELIEF;
             case __GO_UI_SLIDERSTEP__ :
                 return UicontrolProperty.SLIDERSTEP;
+            case __GO_UI_SNAPTOTICKS__ :
+                return UicontrolProperty.SNAPTOTICKS;
             case __GO_UI_STRING__ :
                 return UicontrolProperty.STRING;
             case __GO_UI_STRING_SIZE__ :
@@ -836,6 +841,8 @@ public class Uicontrol extends GraphicObject {
             return getRelief();
         } else if (property == UicontrolProperty.SLIDERSTEP) {
             return getSliderStep();
+        } else if (property == UicontrolProperty.SNAPTOTICKS) {
+            return getSnapToTicks();
         } else if (property == UicontrolProperty.STRING) {
             return getString();
         } else if (property == UicontrolProperty.STRING_SIZE) {
@@ -948,6 +955,8 @@ public class Uicontrol extends GraphicObject {
                 return setRelief((String) value);
             case SLIDERSTEP:
                 return setSliderStep((Double[]) value);
+            case SNAPTOTICKS:
+                return setSnapToTicks((Boolean) value);
             case STRING:
                 return setString((String[]) value);
             case STRING_COLNB:
@@ -1348,6 +1357,19 @@ public class Uicontrol extends GraphicObject {
         return UpdateStatus.Success;
     }
 
+    /* SnapToTicks */
+    public Boolean getSnapToTicks() {
+        return this.snapToTicks;
+    }
+
+    public UpdateStatus setSnapToTicks(Boolean status) {
+        if (snapToTicks.equals(status)) {
+            return UpdateStatus.NoChange;
+        }
+        this.snapToTicks = status;
+        return UpdateStatus.Success;
+    }
+
     /* Units */
     public String getUnits() {
         return this.units;
index d71fcb7..bbe3550 100644 (file)
@@ -142,6 +142,7 @@ public class XMLDomLoader {
         UiPropToGO.put("position", new Pair<Integer, ModelType>(__GO_POSITION__, ModelType.DOUBLE_ARRAY));
         UiPropToGO.put("relief", new Pair<Integer, ModelType>(__GO_UI_RELIEF__, ModelType.STRING));
         UiPropToGO.put("sliderstep", new Pair<Integer, ModelType>(__GO_UI_SLIDERSTEP__, ModelType.DOUBLE_ARRAY));
+        UiPropToGO.put("snaptoticks", new Pair<Integer, ModelType>(__GO_UI_SNAPTOTICKS__, ModelType.BOOLEAN));
         UiPropToGO.put("units", new Pair<Integer, ModelType>(__GO_UI_UNITS__, ModelType.STRING));
         UiPropToGO.put("value", new Pair<Integer, ModelType>(__GO_UI_VALUE__, ModelType.DOUBLE_ARRAY));
         UiPropToGO.put("verticalalignment", new Pair<Integer, ModelType>(__GO_UI_VERTICALALIGNMENT__, ModelType.STRING));
index 2bd2bdd..eb6c3af 100755 (executable)
@@ -343,6 +343,7 @@ __GO_UI_STRING_COLNB__
 __GO_UI_TOOLTIPSTRING__
 __GO_UI_TOOLTIPSTRING_SIZE__
 __GO_UI_SLIDERSTEP__
+__GO_UI_SNAPTOTICKS__
 __GO_UI_UNITS__
 __GO_UI_VALUE__
 __GO_UI_TAB_VALUE__
@@ -455,4 +456,4 @@ __GO_NUM_MARK_FOREGROUNDS__
 __GO_MARK_BACKGROUNDS__
 __GO_NUM_MARK_BACKGROUNDS__
 
-__GO_UI_FOCUS__
\ No newline at end of file
+__GO_UI_FOCUS__
index df7770a..5905141 100644 (file)
@@ -72,3 +72,5 @@ GetUicontrolIcon
 SetUicontrolIcon
 GetConsoleShowHiddenProperties
 SetConsoleShowHiddenProperties
+GetUicontrolSnapToTicks
+SetUicontrolSnapToTicks
index 60d4c16..989f1af 100755 (executable)
@@ -1012,6 +1012,9 @@ function %h_p(h)
             if or(h.style == ["slider", "spinner"]) | showHiddenProperties then
                 t($ + 1) = "SliderStep = " + sci2exp(h.sliderstep);
             end
+            if h.style=="slider" | showHiddenProperties then
+                t($ + 1) = "SnapToTicks = " + sci2exp(h.snaptoticks);
+            end
             if h.style <> "slider" | showHiddenProperties then
                 t($ + 1) = "String = " + fmtuser_data(h.string);
             end
index 245da1f..b30aa81 100755 (executable)
@@ -202,6 +202,7 @@ static getHashTableCouple propertyGetTable[] =
     {"verticalalignment", GetUicontrolVerticalAlignment},
     {"fontname", GetUicontrolFontName},
     {"sliderstep", GetUicontrolSliderStep},
+    {"snaptoticks", GetUicontrolSnapToTicks},
     {"checked", GetUimenuChecked},
     {"arc_drawing_method", get_arc_drawing_method_property},
     {"fractional_font", get_fractional_font_property},
index b789c09..671cb39 100755 (executable)
@@ -202,6 +202,7 @@ static setHashTableCouple propertySetTable[] =
     {"verticalalignment", SetUicontrolVerticalAlignment},
     {"fontname", SetUicontrolFontName},
     {"sliderstep", SetUicontrolSliderStep},
+    {"snaptoticks", SetUicontrolSnapToTicks},
     {"checked", SetUimenuChecked},
     {"arc_drawing_method", set_arc_drawing_method_property},
     {"fractional_font", set_fractional_font_property},
index 9306bfa..346a727 100644 (file)
@@ -122,6 +122,8 @@ GUI_CXX_SOURCES = \
     src/cpp/GetUicontrolVerticalAlignment.cpp \
     src/cpp/SetUicontrolSliderStep.cpp \
     src/cpp/GetUicontrolSliderStep.cpp \
+    src/cpp/SetUicontrolSnapToTicks.cpp \
+    src/cpp/GetUicontrolSnapToTicks.cpp \
     src/cpp/SetUicontrolIcon.cpp \
     src/cpp/GetUicontrolIcon.cpp \
     src/cpp/SetConsoleShowHiddenHandles.cpp \
index ce729aa..fb00873 100644 (file)
@@ -261,6 +261,8 @@ am__objects_2 = src/cpp/libscigui_algo_la-InitializeGUI.lo \
        src/cpp/libscigui_algo_la-GetUicontrolVerticalAlignment.lo \
        src/cpp/libscigui_algo_la-SetUicontrolSliderStep.lo \
        src/cpp/libscigui_algo_la-GetUicontrolSliderStep.lo \
+       src/cpp/libscigui_algo_la-SetUicontrolSnapToTicks.lo \
+       src/cpp/libscigui_algo_la-GetUicontrolSnapToTicks.lo \
        src/cpp/libscigui_algo_la-SetUicontrolIcon.lo \
        src/cpp/libscigui_algo_la-GetUicontrolIcon.lo \
        src/cpp/libscigui_algo_la-SetConsoleShowHiddenHandles.lo \
@@ -835,6 +837,8 @@ GUI_CXX_SOURCES = \
     src/cpp/GetUicontrolVerticalAlignment.cpp \
     src/cpp/SetUicontrolSliderStep.cpp \
     src/cpp/GetUicontrolSliderStep.cpp \
+    src/cpp/SetUicontrolSnapToTicks.cpp \
+    src/cpp/GetUicontrolSnapToTicks.cpp \
     src/cpp/SetUicontrolIcon.cpp \
     src/cpp/GetUicontrolIcon.cpp \
     src/cpp/SetConsoleShowHiddenHandles.cpp \
@@ -1439,6 +1443,10 @@ src/cpp/libscigui_algo_la-SetUicontrolSliderStep.lo:  \
        src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
 src/cpp/libscigui_algo_la-GetUicontrolSliderStep.lo:  \
        src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigui_algo_la-SetUicontrolSnapToTicks.lo:  \
+       src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
+src/cpp/libscigui_algo_la-GetUicontrolSnapToTicks.lo:  \
+       src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
 src/cpp/libscigui_algo_la-SetUicontrolIcon.lo:  \
        src/cpp/$(am__dirstamp) src/cpp/$(DEPDIR)/$(am__dirstamp)
 src/cpp/libscigui_algo_la-GetUicontrolIcon.lo:  \
@@ -1773,6 +1781,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigui_algo_la-GetUicontrolPosition.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigui_algo_la-GetUicontrolRelief.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigui_algo_la-GetUicontrolSliderStep.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigui_algo_la-GetUicontrolSnapToTicks.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigui_algo_la-GetUicontrolString.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigui_algo_la-GetUicontrolStyle.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigui_algo_la-GetUicontrolTooltipString.Plo@am__quote@
@@ -1800,6 +1809,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigui_algo_la-SetUicontrolPosition.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigui_algo_la-SetUicontrolRelief.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigui_algo_la-SetUicontrolSliderStep.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigui_algo_la-SetUicontrolSnapToTicks.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigui_algo_la-SetUicontrolString.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigui_algo_la-SetUicontrolTooltipString.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@src/cpp/$(DEPDIR)/libscigui_algo_la-SetUicontrolUnits.Plo@am__quote@
@@ -2489,6 +2499,20 @@ src/cpp/libscigui_algo_la-GetUicontrolSliderStep.lo: src/cpp/GetUicontrolSliderS
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigui_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigui_algo_la-GetUicontrolSliderStep.lo `test -f 'src/cpp/GetUicontrolSliderStep.cpp' || echo '$(srcdir)/'`src/cpp/GetUicontrolSliderStep.cpp
 
+src/cpp/libscigui_algo_la-SetUicontrolSnapToTicks.lo: src/cpp/SetUicontrolSnapToTicks.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigui_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigui_algo_la-SetUicontrolSnapToTicks.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigui_algo_la-SetUicontrolSnapToTicks.Tpo -c -o src/cpp/libscigui_algo_la-SetUicontrolSnapToTicks.lo `test -f 'src/cpp/SetUicontrolSnapToTicks.cpp' || echo '$(srcdir)/'`src/cpp/SetUicontrolSnapToTicks.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigui_algo_la-SetUicontrolSnapToTicks.Tpo src/cpp/$(DEPDIR)/libscigui_algo_la-SetUicontrolSnapToTicks.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/cpp/SetUicontrolSnapToTicks.cpp' object='src/cpp/libscigui_algo_la-SetUicontrolSnapToTicks.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigui_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigui_algo_la-SetUicontrolSnapToTicks.lo `test -f 'src/cpp/SetUicontrolSnapToTicks.cpp' || echo '$(srcdir)/'`src/cpp/SetUicontrolSnapToTicks.cpp
+
+src/cpp/libscigui_algo_la-GetUicontrolSnapToTicks.lo: src/cpp/GetUicontrolSnapToTicks.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigui_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigui_algo_la-GetUicontrolSnapToTicks.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigui_algo_la-GetUicontrolSnapToTicks.Tpo -c -o src/cpp/libscigui_algo_la-GetUicontrolSnapToTicks.lo `test -f 'src/cpp/GetUicontrolSnapToTicks.cpp' || echo '$(srcdir)/'`src/cpp/GetUicontrolSnapToTicks.cpp
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigui_algo_la-GetUicontrolSnapToTicks.Tpo src/cpp/$(DEPDIR)/libscigui_algo_la-GetUicontrolSnapToTicks.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='src/cpp/GetUicontrolSnapToTicks.cpp' object='src/cpp/libscigui_algo_la-GetUicontrolSnapToTicks.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigui_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/cpp/libscigui_algo_la-GetUicontrolSnapToTicks.lo `test -f 'src/cpp/GetUicontrolSnapToTicks.cpp' || echo '$(srcdir)/'`src/cpp/GetUicontrolSnapToTicks.cpp
+
 src/cpp/libscigui_algo_la-SetUicontrolIcon.lo: src/cpp/SetUicontrolIcon.cpp
 @am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libscigui_algo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/cpp/libscigui_algo_la-SetUicontrolIcon.lo -MD -MP -MF src/cpp/$(DEPDIR)/libscigui_algo_la-SetUicontrolIcon.Tpo -c -o src/cpp/libscigui_algo_la-SetUicontrolIcon.lo `test -f 'src/cpp/SetUicontrolIcon.cpp' || echo '$(srcdir)/'`src/cpp/SetUicontrolIcon.cpp
 @am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) src/cpp/$(DEPDIR)/libscigui_algo_la-SetUicontrolIcon.Tpo src/cpp/$(DEPDIR)/libscigui_algo_la-SetUicontrolIcon.Plo
index 5fe9ad9..f68f07e 100644 (file)
                 </listitem>
             </varlistentry>
             <varlistentry>
+                <term>SnapToTicks</term>
+                <listitem>
+                    <para>on | {off}</para>
+                    <para>If <literal>SnapToTicks</literal> is <literal>"on"</literal>, the Slider knob will always snap to the closest position associated to a value given by the "Min" property plus an integer multiple of small step (see SliderStep above). The default value of this property is "off".
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
                 <term>String</term>
                 <listitem>
                     <para>String.</para>
index 98babbd..71f7dc5 100644 (file)
@@ -43,6 +43,7 @@ GUI_IMPEXP void* GetUicontrolMin(void* _pvCtx, int iObjUID);
 GUI_IMPEXP void* GetUicontrolPosition(void* _pvCtx, int iObjUID);
 GUI_IMPEXP void* GetUicontrolPosition(void* _pvCtx, int iObjUID);
 GUI_IMPEXP void* GetUicontrolSliderStep(void* _pvCtx, int iObjUID);
+GUI_IMPEXP void* GetUicontrolSnapToTicks(void* _pvCtx, int iObjUID);
 GUI_IMPEXP void* GetUicontrolString(void* _pvCtx, int iObjUID);
 GUI_IMPEXP void* GetUicontrolStyle(void* _pvCtx, int iObjUID);
 GUI_IMPEXP void* GetUicontrolTooltipString(void* _pvCtx, int iObjUID);
index 2505a89..e23d92b 100644 (file)
@@ -48,6 +48,7 @@ GUI_IMPEXP int SetUicontrolMin(void* _pvCtx, int iObjUID, void* _pvData, int val
 GUI_IMPEXP int SetUicontrolPosition(int iObjUID, void* pvData, int valueType, int nbRow, int nbCol);
 GUI_IMPEXP int SetUicontrolRelief(void* _pvCtx, int iObjUID, void* _pvData, int valueType, int nbRow, int nbCol);
 GUI_IMPEXP int SetUicontrolSliderStep(void* _pvCtx, int iObjUID, void* _pvData, int valueType, int nbRow, int nbCol);
+GUI_IMPEXP int SetUicontrolSnapToTicks(void* _pvCtx, int iObjUID, void* _pvData, int valueType, int nbRow, int nbCol);
 GUI_IMPEXP int SetUicontrolString(void* _pvCtx, int iObjUID, void* _pvData, int valueType, int nbRow, int nbCol ) ;
 GUI_IMPEXP int SetUicontrolTooltipString(void* _pvCtx, int iObjUID, void* _pvData, int valueType, int nbRow, int nbCol ) ;
 GUI_IMPEXP int SetUicontrolUnits(void* _pvCtx, int iObjUID, void* _pvData, int valueType, int nbRow, int nbCol);
index 2aafac3..5f3d54b 100644 (file)
@@ -58,6 +58,7 @@ static const char* propertiesNames[] =
     "horizontalalignment",
     "verticalalignment",
     "sliderstep",
+    "snaptoticks",
     "fontname",
     "callback",
     "fontangle",
index ffaf2d6..83e08d7 100755 (executable)
     <ClCompile Include="..\cpp\CreateUIControl.cpp" />
     <ClCompile Include="..\cpp\GetConsoleShowHiddenHandles.cpp" />
     <ClCompile Include="..\cpp\GetUicontrolIcon.cpp" />
+    <ClCompile Include="..\cpp\GetUicontrolSnapToTicks.cpp" />
     <ClCompile Include="..\cpp\GetUicontrolTooltipString.cpp" />
     <ClCompile Include="..\cpp\InitializeGUI.cpp" />
     <ClCompile Include="..\cpp\SetConsoleShowHiddenHandles.cpp" />
     <ClCompile Include="..\cpp\SetUicontrolIcon.cpp" />
+    <ClCompile Include="..\cpp\SetUicontrolSnapToTicks.cpp" />
     <ClCompile Include="..\jni\DatatipCreate.cpp" />
     <ClCompile Include="..\jni\DatatipSetStyle.cpp" />
     <ClCompile Include="..\jni\DatatipDelete.cpp" />
index f310c93..4b4ec2f 100755 (executable)
     <ClCompile Include="..\..\sci_gateway\cpp\sci_xchoicesi.cpp">
       <Filter>Source Files</Filter>
     </ClCompile>
+    <ClCompile Include="..\cpp\GetUicontrolSnapToTicks.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\cpp\SetUicontrolSnapToTicks.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <None Include="core_import.def">
       <Filter>Header Files</Filter>
     </ClInclude>
   </ItemGroup>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/scilab/modules/gui/src/cpp/GetUicontrolSnapToTicks.cpp b/scilab/modules/gui/src/cpp/GetUicontrolSnapToTicks.cpp
new file mode 100644 (file)
index 0000000..c1335e0
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2018 - Stéphane MOTTELET
+ *
+ * This file is hereby licensed under the terms of the GNU GPL v2.0,
+ * pursuant to article 5.3.4 of the CeCILL v.2.1.
+ * This file was originally licensed under the terms of the CeCILL v2.1,
+ * and continues to be available under such terms.
+ * For more information, see the COPYING file which you should have received
+ * along with this program.
+ *
+ */
+
+extern "C"
+{
+#include "GetUicontrol.h"
+}
+
+void* GetUicontrolSnapToTicks(void* _pvCtx, int iObjUID)
+{
+    int iSnaptoticks = 0;
+    int* piSnaptoticks = &iSnaptoticks;
+
+    getGraphicObjectProperty(iObjUID, __GO_UI_SNAPTOTICKS__, jni_bool, (void **)&piSnaptoticks);
+
+    if (piSnaptoticks == NULL)
+    {
+        Scierror(999, const_cast<char*>(_("'%s' property does not exist for this handle.\n")), "snaptoticks");
+        return NULL;
+    }
+
+    if (iSnaptoticks == TRUE)
+    {
+        return sciReturnString("on");
+    }
+    else
+    {
+        return sciReturnString("off");
+    }
+}
diff --git a/scilab/modules/gui/src/cpp/SetUicontrolSnapToTicks.cpp b/scilab/modules/gui/src/cpp/SetUicontrolSnapToTicks.cpp
new file mode 100644 (file)
index 0000000..cb8263d
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2018 - Stéphane Mottelet
+ *
+ * This file is hereby licensed under the terms of the GNU GPL v2.0,
+ * pursuant to article 5.3.4 of the CeCILL v.2.1.
+ * This file was originally licensed under the terms of the CeCILL v2.1,
+ * and continues to be available under such terms.
+ * For more information, see the COPYING file which you should have received
+ * along with this program.
+ *
+ */
+
+extern "C"
+{
+#include "SetUicontrol.h"
+}
+
+int SetUicontrolSnapToTicks(void* _pvCtx, int iObjUID, void* _pvData, int valueType, int nbRow, int nbCol)
+{
+    int b = (int)FALSE;
+    BOOL status = FALSE;
+
+    b = tryGetBooleanValueFromStack(_pvData, valueType, nbRow, nbCol, "snaptoticks");
+    if (b == NOT_A_BOOLEAN_VALUE)
+    {
+        return SET_PROPERTY_ERROR;
+    }
+
+    if (setGraphicObjectProperty(iObjUID, __GO_UI_SNAPTOTICKS__, &b, jni_bool, 1) == FALSE)
+    {
+        Scierror(999, _("'%s' property does not exist for this handle.\n"), "snaptoticks");
+        return SET_PROPERTY_ERROR;
+    }
+    return SET_PROPERTY_SUCCEED;
+}
index 5014c71..8955832 100644 (file)
@@ -1,6 +1,7 @@
 /*
  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
  * Copyright (C) 2014 - Scilab Enterprises - Antoine ELIAS
+ * Copyright (C) 2018 - Stéphane Mottelet
  *
  * Copyright (C) 2012 - 2016 - Scilab Enterprises
  *
@@ -19,6 +20,7 @@ import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProp
 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_MAX__;
 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_MIN__;
 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_SLIDERSTEP__;
+import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_SNAPTOTICKS__;
 import static org.scilab.modules.graphic_objects.graphicObject.GraphicObjectProperties.__GO_UI_VALUE__;
 
 import java.awt.Color;
@@ -61,7 +63,8 @@ public class SwingScilabSlider extends JSlider implements SwingViewObject, Widge
     private static final long serialVersionUID = -4262320156090829309L;
 
     private static final int MINIMUM_VALUE = 0;
-    private static final int MAXIMUM_VALUE = 10000;
+    private static final int MAX_MAXIMUM_VALUE = 10000;
+    private int MAXIMUM_VALUE = MAX_MAXIMUM_VALUE;
 
     private Integer uid;
 
@@ -71,7 +74,7 @@ public class SwingScilabSlider extends JSlider implements SwingViewObject, Widge
 
     private Border defaultBorder = null;
 
-    private int previousValueCallback = 0;
+    private double previousUserValueCallback = Double.POSITIVE_INFINITY;
 
     static {
         if (OS.get() == OS.UNIX) {
@@ -84,14 +87,7 @@ public class SwingScilabSlider extends JSlider implements SwingViewObject, Widge
         private static final long serialVersionUID = -3289281207742516486L;
 
         public void actionPerformed(ActionEvent arg0) {
-            double userMin = (Double) GraphicController.getController().getProperty(uid, __GO_UI_MIN__);
-            double userMax = (Double) GraphicController.getController().getProperty(uid, __GO_UI_MAX__);
-            Double[] step = (Double[]) GraphicController.getController().getProperty(uid, __GO_UI_SLIDERSTEP__);
-            int value = SwingScilabSlider.this.getValue();
-
-            double ratio = (MAXIMUM_VALUE - MINIMUM_VALUE) / (userMax - userMin);
-            int newValue = Math.max(MINIMUM_VALUE, value - (int)(step[1] * ratio));
-            setValue(newValue);
+            setValue(SwingScilabSlider.this.getValue() - SwingScilabSlider.this.getMajorTickSpacing());
         }
     }
 
@@ -99,14 +95,7 @@ public class SwingScilabSlider extends JSlider implements SwingViewObject, Widge
         private static final long serialVersionUID = 2099826485447918397L;
 
         public void actionPerformed(ActionEvent arg0) {
-            double userMin = (Double) GraphicController.getController().getProperty(uid, __GO_UI_MIN__);
-            double userMax = (Double) GraphicController.getController().getProperty(uid, __GO_UI_MAX__);
-            Double[] step = (Double[]) GraphicController.getController().getProperty(uid, __GO_UI_SLIDERSTEP__);
-            int value = SwingScilabSlider.this.getValue();
-
-            double ratio = (MAXIMUM_VALUE - MINIMUM_VALUE) / (userMax - userMin);
-            int newValue = Math.max(MINIMUM_VALUE, value - (int)(step[0] * ratio));
-            setValue(newValue);
+            setValue(SwingScilabSlider.this.getValue() - SwingScilabSlider.this.getMinorTickSpacing());
         }
     }
 
@@ -114,14 +103,7 @@ public class SwingScilabSlider extends JSlider implements SwingViewObject, Widge
         private static final long serialVersionUID = 8666161246122371904L;
 
         public void actionPerformed(ActionEvent arg0) {
-            double userMin = (Double) GraphicController.getController().getProperty(uid, __GO_UI_MIN__);
-            double userMax = (Double) GraphicController.getController().getProperty(uid, __GO_UI_MAX__);
-            Double[] step = (Double[]) GraphicController.getController().getProperty(uid, __GO_UI_SLIDERSTEP__);
-            int value = SwingScilabSlider.this.getValue();
-
-            double ratio = (MAXIMUM_VALUE - MINIMUM_VALUE) / (userMax - userMin);
-            int newValue = Math.min(MAXIMUM_VALUE, value + (int)(step[0] * ratio));
-            setValue(newValue);
+          setValue(SwingScilabSlider.this.getValue() + SwingScilabSlider.this.getMinorTickSpacing());
         }
     }
 
@@ -129,14 +111,7 @@ public class SwingScilabSlider extends JSlider implements SwingViewObject, Widge
         private static final long serialVersionUID = -1364255463511656338L;
 
         public void actionPerformed(ActionEvent arg0) {
-            double userMin = (Double) GraphicController.getController().getProperty(uid, __GO_UI_MIN__);
-            double userMax = (Double) GraphicController.getController().getProperty(uid, __GO_UI_MAX__);
-            Double[] step = (Double[]) GraphicController.getController().getProperty(uid, __GO_UI_SLIDERSTEP__);
-            int value = SwingScilabSlider.this.getValue();
-
-            double ratio = (MAXIMUM_VALUE - MINIMUM_VALUE) / (userMax - userMin);
-            int newValue = Math.min(MAXIMUM_VALUE, value + (int)(step[1] * ratio));
-            setValue(newValue);
+          setValue(SwingScilabSlider.this.getValue() + SwingScilabSlider.this.getMajorTickSpacing());
         }
     }
 
@@ -169,24 +144,13 @@ public class SwingScilabSlider extends JSlider implements SwingViewObject, Widge
         changeListener = new ChangeListener() {
             public void stateChanged(ChangeEvent changeEvent) {
                 JSlider source = (JSlider) changeEvent.getSource();
-                if (!source.getValueIsAdjusting()) {
-                    previousValueCallback = getValue();
+                double offset = Math.abs(getUserValue() - previousUserValueCallback);
+                previousUserValueCallback = getUserValue();
+                if (offset != 0) {
                     updateModel();
                     if (callback != null) {
                         callback.actionPerformed(null);
                     }
-                } else {
-                    int offset = Math.abs(getValue() - previousValueCallback);
-                    previousValueCallback = getValue();
-                    // When the user has clicked on the slider itself (not the knob)
-                    // and the knob makes a step of getMajorTickSpacing() value
-                    // ==> We do not call the callback (Bug #13549)
-                    if (offset != getMajorTickSpacing() && offset != 0) {
-                        updateModel();
-                        if (callback != null) {
-                            callback.actionPerformed(null);
-                        }
-                    }
                 }
             }
         };
@@ -336,22 +300,6 @@ public class SwingScilabSlider extends JSlider implements SwingViewObject, Widge
     }
 
     /**
-     * Set the minimum value of a Slider
-     * @param value the minimum value
-     */
-    public void setMinimumValue(double value) {
-        updateModel(); /* Update the model according to the knob position */
-    }
-
-    /**
-     * Set the maximum value of a Slider
-     * @param value the maximum value
-     */
-    public void setMaximumValue(double value) {
-        updateModel(); /* Update the model according to the knob position */
-    }
-
-    /**
      * Set the Relief of the Slider
      * @param reliefType the type of the relief to set (See ScilabRelief.java)
      */
@@ -428,16 +376,32 @@ public class SwingScilabSlider extends JSlider implements SwingViewObject, Widge
     }
 
     /**
+     * get the current value of the Slider
+     */
+    private double getUserValue() {
+        double value;
+        double userMin = (double) GraphicController.getController().getProperty(uid, __GO_UI_MIN__);
+        double userMax = (double) GraphicController.getController().getProperty(uid, __GO_UI_MAX__);
+        Double[] userStep = (Double[]) GraphicController.getController().getProperty(uid, __GO_UI_SLIDERSTEP__);
+        value = userMin + ((getValue() - MINIMUM_VALUE) * (userMax - userMin) / (MAXIMUM_VALUE - MINIMUM_VALUE));
+        if (getSnapToTicks()) {
+            value = Math.min(userMin+Math.round((value-userMin)/userStep[0])*userStep[0],userMax);
+        }
+        return value;
+    }
+
+
+    /**
      * Set the current value of the Slider
      * @param value the new value
      */
     public void setUserValue(double value) {
         /* Remove the listener to avoid the callback to be executed */
         removeChangeListener(changeListener);
-
+        
         double userMin = (Double) GraphicController.getController().getProperty(uid, __GO_UI_MIN__);
         double userMax = (Double) GraphicController.getController().getProperty(uid, __GO_UI_MAX__);
-        setValue(MINIMUM_VALUE + (int) ((value - userMin) * (MAXIMUM_VALUE - MINIMUM_VALUE) / (userMax - userMin)));
+        setValue(MINIMUM_VALUE + (int)Math.round((value - userMin) * (MAXIMUM_VALUE - MINIMUM_VALUE) / (userMax - userMin)));
 
         /* Put back the listener */
         addChangeListener(changeListener);
@@ -470,30 +434,18 @@ public class SwingScilabSlider extends JSlider implements SwingViewObject, Widge
         switch (property) {
             case __GO_UI_MAX__: {
                 Double maxValue = (Double) value;
-                // Update the slider properties
                 Double minValue = (Double) controller.getProperty(uid, __GO_UI_MIN__);
-                setMaximumValue(maxValue);
                 Double[] sliderStep = ((Double[]) controller.getProperty(uid, __GO_UI_SLIDERSTEP__));
-                double minorSliderStep = sliderStep[0].doubleValue();
-                double majorSliderStep = sliderStep[1].doubleValue();
-                if (minValue <= maxValue) {
-                    setMinorTickSpacing(minorSliderStep);
-                    setMajorTickSpacing(majorSliderStep);
-                }
+                // Update the slider properties
+                updateSwingSlider(minValue,maxValue,sliderStep);
                 break;
             }
             case __GO_UI_MIN__ : {
                 Double minValue = (Double)value;
-                // Update the slider properties
                 Double maxValue = (Double) controller.getProperty(uid, __GO_UI_MAX__);
-                setMinimumValue(minValue);
                 Double[] sliderStep = ((Double[]) controller.getProperty(uid, __GO_UI_SLIDERSTEP__));
-                double minorSliderStep = sliderStep[0].doubleValue();
-                double majorSliderStep = sliderStep[1].doubleValue();
-                if (minValue <= maxValue) {
-                    setMinorTickSpacing(minorSliderStep);
-                    setMajorTickSpacing(majorSliderStep);
-                }
+                // Update the slider properties
+                updateSwingSlider(minValue,maxValue,sliderStep);
                 break;
             }
             case __GO_POSITION__ : {
@@ -507,10 +459,15 @@ public class SwingScilabSlider extends JSlider implements SwingViewObject, Widge
             }
             case __GO_UI_SLIDERSTEP__ : {
                 Double[] sliderStep = ((Double[]) value);
-                double minorSliderStep = sliderStep[0].doubleValue();
-                double majorSliderStep = sliderStep[1].doubleValue();
-                setMinorTickSpacing(minorSliderStep);
-                setMajorTickSpacing(majorSliderStep);
+                Double minValue = (Double) controller.getProperty(uid, __GO_UI_MIN__);
+                Double maxValue = (Double) controller.getProperty(uid, __GO_UI_MAX__);
+                // Update the slider properties
+                updateSwingSlider(minValue,maxValue,sliderStep);
+                break;
+            }
+            case __GO_UI_SNAPTOTICKS__ : {
+                Boolean state=(Boolean) value;
+                setSnapToTicks(state);
                 break;
             }
             case __GO_UI_VALUE__ : {
@@ -531,14 +488,31 @@ public class SwingScilabSlider extends JSlider implements SwingViewObject, Widge
     }
 
     /**
+     * Update values in SwingSlider widget when needed
+     */
+    private void updateSwingSlider(Double userMin, Double userMax, Double[] sliderStep) {
+      double minorSliderStep = sliderStep[0].doubleValue();
+      double majorSliderStep = sliderStep[1].doubleValue();
+      MAXIMUM_VALUE=MAX_MAXIMUM_VALUE-(MAX_MAXIMUM_VALUE % Math.min(Math.max(1,(int)Math.abs((userMax-userMin)/minorSliderStep)),MAX_MAXIMUM_VALUE)); 
+
+      /* Remove the listener to avoid the callback to be executed */
+      removeChangeListener(changeListener);
+      setMaximum(MAXIMUM_VALUE);
+      setMinorTickSpacing(minorSliderStep);
+      setMajorTickSpacing(majorSliderStep);
+
+      /* Put back the listener */
+      addChangeListener(changeListener);
+      updateModel();
+    }
+
+    /**
      * Update values in the model when needed
      */
     private void updateModel() {
-        Double[] value = new Double[1];
-        double userMin = (Double) GraphicController.getController().getProperty(uid, __GO_UI_MIN__);
-        double userMax = (Double) GraphicController.getController().getProperty(uid, __GO_UI_MAX__);
-        value[0] = userMin + ((getValue() - MINIMUM_VALUE) * (userMax - userMin) / (MAXIMUM_VALUE - MINIMUM_VALUE));
-        GraphicController.getController().setProperty(uid, __GO_UI_VALUE__, value);
+      Double[] value = new Double[1];
+      value[0] = getUserValue();
+      GraphicController.getController().setProperty(uid, __GO_UI_VALUE__, value);
     }
 
     public void resetBackground() {
index efb7732..072843e 100644 (file)
@@ -818,6 +818,7 @@ struct UicontrolHandle
         m.emplace_back("position", std::vector<int>({SAVE_LOAD, __GO_POSITION__, jni_double_vector, -1, -4}));
         m.emplace_back("relief", std::vector<int>({SAVE_LOAD, __GO_UI_RELIEF__, jni_string}));
         m.emplace_back("sliderstep", std::vector<int>({SAVE_LOAD, __GO_UI_SLIDERSTEP__, jni_double_vector, -1, -2}));
+        m.emplace_back("snaptoticks", std::vector<int>({SAVE_LOAD, __GO_UI_SNAPTOTICKS__, jni_bool}));
         m.emplace_back("tooltipstring", std::vector<int>({SAVE_LOAD, __GO_UI_TOOLTIPSTRING__, jni_string_vector, -1, __GO_UI_TOOLTIPSTRING_SIZE__}));
         m.emplace_back("units", std::vector<int>({SAVE_LOAD, __GO_UI_UNITS__, jni_string}));
         m.emplace_back("verticalalignment", std::vector<int>({SAVE_LOAD, __GO_UI_VERTICALALIGNMENT__, jni_string}));