summaryrefslogtreecommitdiff
path: root/app/bin/macro.c
diff options
context:
space:
mode:
Diffstat (limited to 'app/bin/macro.c')
-rw-r--r--app/bin/macro.c278
1 files changed, 128 insertions, 150 deletions
diff --git a/app/bin/macro.c b/app/bin/macro.c
index 8db996d..1c38dd2 100644
--- a/app/bin/macro.c
+++ b/app/bin/macro.c
@@ -21,54 +21,23 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
-#include <assert.h>
-#include <stdlib.h>
-#include <stdio.h>
-#ifndef WINDOWS
-#include <unistd.h>
-#include <dirent.h>
-#include <errno.h>
-#endif
-#include <math.h>
-#include <ctype.h>
-#include <string.h>
-#include <time.h>
-#ifdef WINDOWS
-#include <io.h>
-#include <windows.h>
-#else
-#include <sys/stat.h>
-#endif
-#include <stdarg.h>
-#ifndef WINDOWS
-#include <sys/time.h>
-#else
-#include <sys/timeb.h>
-#endif
-#include <locale.h>
-
-#include <stdint.h>
-
#include "common.h"
#include "compound.h"
#include "cundo.h"
#include "custom.h"
#include "draw.h"
#include "fileio.h"
-#include "i18n.h"
-#include "messages.h"
#include "misc.h"
#include "param.h"
#include "paths.h"
#include "track.h"
#include "trackx.h"
-#include "utility.h"
#include "version.h"
+#include "common-ui.h"
EXPORT long adjTimer;
static void DemoInitValues( void );
-extern char *userLocale;
static int log_playbackCursor = 0;
@@ -89,20 +58,22 @@ static paramTextData_t recordTextData = { 50, 16 };
static paramData_t recordPLs[] = {
#define I_RECSTOP (0)
#define recStopB ((wButton_p)recordPLs[I_RECSTOP].control)
- { PD_BUTTON, (void*)DoRecordButton, "stop", PDO_NORECORD, NULL, N_("Stop"), 0, (void*)0 },
+ { PD_BUTTON, DoRecordButton, "stop", PDO_NORECORD, NULL, N_("Stop"), 0, I2VP(0) },
#define I_RECMESSAGE (1)
#define recMsgB ((wButton_p)recordPLs[I_RECMESSAGE].control)
- { PD_BUTTON, (void*)DoRecordButton, "message", PDO_NORECORD|PDO_DLGHORZ, NULL, N_("Message"), 0, (void*)2 },
+ { PD_BUTTON, DoRecordButton, "message", PDO_NORECORD|PDO_DLGHORZ, NULL, N_("Message"), 0, I2VP(2) },
#define I_RECEND (2)
#define recEndB ((wButton_p)recordPLs[I_RECEND].control)
- { PD_BUTTON, (void*)DoRecordButton, "end", PDO_NORECORD|PDO_DLGHORZ, NULL, N_("End"), BO_DISABLED, (void*)4 },
+ { PD_BUTTON, DoRecordButton, "end", PDO_NORECORD|PDO_DLGHORZ, NULL, N_("End"), BO_DISABLED, I2VP(4) },
#define I_RECTEXT (3)
#define recordT ((wText_p)recordPLs[I_RECTEXT].control)
{ PD_TEXT, NULL, "text", PDO_NORECORD|PDO_DLGRESIZE, &recordTextData, NULL, BT_CHARUNITS|BO_READONLY} };
-static paramGroup_t recordPG = { "record", 0, recordPLs, sizeof recordPLs/sizeof recordPLs[0] };
+static paramGroup_t recordPG = { "record", 0, recordPLs, COUNT( recordPLs ) };
#ifndef WINDOWS
+#include <sys/time.h>
+
static struct timeval lastTim = {0,0};
static void ComputePause( void )
{
@@ -121,6 +92,8 @@ static void ComputePause( void )
lastTim = tim;
}
#else
+#include <sys/timeb.h>
+
static struct _timeb lastTim;
static void ComputePause( void )
{
@@ -208,7 +181,7 @@ static void DoRecordButton( void * context )
char * cp;
int len;
- switch( (int)(long)context ){
+ switch( (int)VP2L(context) ){
case 0: /* Stop */
fprintf( recordF, "CLEAR\nMESSAGE\n");
fprintf( recordF, N_("End of Playback. Hit Step to exit\n"));
@@ -292,7 +265,7 @@ EXPORT void DoRecord( void * context )
static drawCmd_p playbackD = NULL;
static wDrawBitMap_p playbackBm = NULL;
static wDrawColor playbackColor;
-static wPos_t playbackX, playbackY;
+static coOrd playbackPos;
static wBool_t bDoFlash = FALSE;
static wDrawColor flashColor;
@@ -369,18 +342,17 @@ char * DrawBitMapToString(DrawBitMap_e dbm) {
static void MacroDrawBitMap(
DrawBitMap_e dbm,
wDrawBitMap_p bm,
- wPos_t x,
- wPos_t y,
+ coOrd pos,
wDrawColor color )
{
- wDrawBitMap( playbackD->d, bm, x, y, color, wDrawOptTemp|wDrawOptNoClip );
- wFlush();
+ DrawBitMap( playbackD, pos, bm, color );
+// wFlush();
- LOG( log_playbackCursor, 1, ("%s %d DrawBitMap( %p %p %d %d %d %d )\n", DrawBitMapToString(dbm), DBMCount++, playbackD->d, bm, x, y, color, wDrawOptTemp|wDrawOptNoClip ) );
+ LOG( log_playbackCursor, 2, ("%s %d DrawBitMap( %p %p [%0.3f %0.3f] %d )\n", DrawBitMapToString(dbm), DBMCount++, playbackD->d, bm, pos, color ) );
}
-static void Flash( drawCmd_p d, wPos_t x, wPos_t y, wDrawColor color )
+static void Flash( wDrawColor color )
{
bDoFlash = TRUE;
flashColor = color;
@@ -408,21 +380,26 @@ static void SetPlaybackSpeed(
EXPORT void RedrawPlaybackCursor() {
if ( playbackD && playbackBm && inPlayback) {
- wBool_t ret;
- if ( playbackD->d != mainD.d )
- ret = wDrawSetTempMode( playbackD->d, TRUE );
+ unsigned long options = playbackD->options;
+ playbackD->options |= DC_TEMP;
+ wBool_t bTemp = wDrawSetTempMode( playbackD->d, TRUE );
if ( bDoFlash && playbackTimer == 0 ) {
- MacroDrawBitMap( FLASH_PLUS, flash_bm, playbackX, playbackY, flashColor );
+ MacroDrawBitMap( FLASH_PLUS, flash_bm, playbackPos, flashColor );
+ wDrawSetTempMode( playbackD->d, FALSE );
wPause( flashTO*2 );
+ wDrawSetTempMode( playbackD->d, TRUE );
if ( flashTwice ) {
- MacroDrawBitMap( FLASH_PLUS, flash_bm, playbackX, playbackY, flashColor );
+ MacroDrawBitMap( FLASH_PLUS, flash_bm, playbackPos, flashColor );
+ wDrawSetTempMode( playbackD->d, FALSE );
wPause( flashTO*2 );
+ wDrawSetTempMode( playbackD->d, TRUE );
}
bDoFlash = FALSE;
}
- MacroDrawBitMap( DRAW, playbackBm, playbackX, playbackY, playbackColor );
- if ( playbackD->d != mainD.d )
- wDrawSetTempMode( playbackD->d, ret );
+ MacroDrawBitMap( DRAW, playbackBm, playbackPos, playbackColor );
+ wDrawSetTempMode( playbackD->d, bTemp );
+ playbackD->options = options;
+ wFlush();
}
}
@@ -434,46 +411,33 @@ static void MoveCursor(
wDrawBitMap_p bm,
wDrawColor color )
{
- DIST_T dist, dx, dy;
- coOrd pos1, dpos;
+ DIST_T dist;
+ coOrd dpos;
int i, steps;
- wPos_t x, y;
- wPos_t x0=playbackX;
- wPos_t y0=playbackY;
if (d == NULL)
return;
- d->CoOrd2Pix( d, pos, &x, &y );
-
if (playbackTimer == 0 /*&& !didPause*/) {
playbackBm = bm;
playbackColor = color;
- dx = (DIST_T)(x-x0);
- dy = (DIST_T)(y-y0);
- dist = sqrt( dx*dx + dy*dy );
- steps = (int)(dist / PixelsPerStep ) + 1;
- dx /= steps;
- dy /= steps;
- d->Pix2CoOrd( d, x0, y0, &pos1 );
- dpos.x = (pos.x-pos1.x)/steps;
- dpos.y = (pos.y-pos1.y)/steps;
+ dist = FindDistance( playbackPos, pos );
+ steps = (int)(dist / (PixelsPerStep*d->scale/d->dpi)) + 1;
+ LOG( log_playbackCursor, 1, ( "PBC: [%0.3f %0.3f] - [%0.3f %0.3f] Dist:%0.3f Steps:%d\n", playbackPos.x, playbackPos.y, pos.x, pos.y, dist, steps ) );
- for ( i=1; i<=steps; i++ ) {
-
- playbackX = x0+(wPos_t)(i*dx);
- playbackY = y0+(wPos_t)(i*dy);
+ dpos.x = (pos.x-playbackPos.x)/steps;
+ dpos.y = (pos.y-playbackPos.y)/steps;
- pos1.x += dpos.x;
- pos1.y += dpos.y;
+ for ( i=1; i<=steps; i++ ) {
+ playbackPos.x += dpos.x;
+ playbackPos.y += dpos.y;
if ( proc != NULL ) {
- proc( action, pos1 );
+ proc( action, playbackPos );
} else {
TempRedraw();
}
-// DrawPlaybackCursor( d, bm, xx, yy, color );
if ( d->d == mainD.d ) {
- InfoPos( pos1 );
+ InfoPos( playbackPos );
wFlush();
}
// Simple mouse moves happen twice as fast
@@ -484,10 +448,8 @@ static void MoveCursor(
return;
}
}
- } else {
- playbackX = x;
- playbackY = y;
}
+ playbackPos = pos;
}
@@ -500,15 +462,10 @@ static void PlaybackCursor(
{
wDrawBitMap_p bm = playbackBm;
playbackD = d;
- wPos_t x, y;
long time0, time1;
time0 = wGetTimer();
- d->CoOrd2Pix( d, pos, &x, &y );
-
-
-
switch( action&0xFF ) {
case wActionMove:
@@ -520,7 +477,7 @@ static void PlaybackCursor(
bm = ((MyGetKeyState()&WKEY_SHIFT)?arrow0_shift_bm:(MyGetKeyState()&WKEY_CTRL)?arrow0_ctl_bm:arrow0_bm);
MoveCursor( d, proc, wActionMove, pos, bm, wDrawColorBlack ); //Go to spot
bm = ((MyGetKeyState()&WKEY_SHIFT)?arrow3_shift_bm:(MyGetKeyState()&WKEY_CTRL)?arrow3_ctl_bm:arrow3_bm);
- Flash( d, x, y, playbackColor=rightDragColor );
+ Flash( playbackColor=rightDragColor );
proc( action, pos );
/* no break */
@@ -532,7 +489,7 @@ static void PlaybackCursor(
case C_UP:
bm = ((MyGetKeyState()&WKEY_SHIFT)?arrow3_shift_bm:(MyGetKeyState()&WKEY_CTRL)?arrow3_ctl_bm:arrow0_bm);
MoveCursor( d, proc, C_MOVE, pos, bm, rightDragColor );
- Flash( d, x, y, rightDragColor );
+ Flash( rightDragColor );
proc( action, pos );
bm = ((MyGetKeyState()&WKEY_SHIFT)?arrow0_shift_bm:(MyGetKeyState()&WKEY_CTRL)?arrow0_ctl_bm:arrow0_bm);
MoveCursor( d, NULL, 0, pos, bm, wDrawColorBlack );
@@ -542,7 +499,7 @@ static void PlaybackCursor(
bm = ((MyGetKeyState()&WKEY_SHIFT)?arrow0_shift_bm:(MyGetKeyState()&WKEY_CTRL)?arrow0_ctl_bm:arrow0_bm);
MoveCursor( d, proc, wActionMove, pos, bm, wDrawColorBlack ); //Go to spot
bm = ((MyGetKeyState()&WKEY_SHIFT)?arrowr3_shift_bm:(MyGetKeyState()&WKEY_CTRL)?arrowr3_ctl_bm:arrowr3_bm);
- Flash( d, x, y, playbackColor=leftDragColor );
+ Flash( playbackColor=leftDragColor );
proc( action, pos );
/* no break */
@@ -554,7 +511,7 @@ static void PlaybackCursor(
case C_RUP:
bm = ((MyGetKeyState()&WKEY_SHIFT)?arrowr3_shift_bm:(MyGetKeyState()&WKEY_CTRL)?arrowr3_ctl_bm:arrowr3_bm);
MoveCursor( d, proc, C_RMOVE, pos, bm, leftDragColor );
- Flash( d, x, y, leftDragColor );
+ Flash( leftDragColor );
proc( action, pos );
bm = ((MyGetKeyState()&WKEY_SHIFT)?arrow0_shift_bm:(MyGetKeyState()&WKEY_CTRL)?arrow0_ctl_bm:arrow0_bm);
MoveCursor( d, NULL, 0, pos, bm, wDrawColorBlack );
@@ -563,7 +520,8 @@ static void PlaybackCursor(
case C_REDRAW:
proc( action, pos ); //Send Redraw to functions
playbackD = &tempD;
- MacroDrawBitMap( REDRAW, playbackBm, playbackX, playbackY, playbackColor );
+ playbackPos = pos;
+ MacroDrawBitMap( REDRAW, playbackBm, playbackPos, playbackColor );
break;
case C_TEXT:
@@ -597,30 +555,42 @@ EXPORT void PlaybackMouse(
EXPORT void MovePlaybackCursor(
drawCmd_p d,
- wPos_t x,
- wPos_t y, wBool_t direct, wControl_p control)
+ coOrd pos,
+ wBool_t direct, wControl_p control)
{
- coOrd pos;
+#ifdef MOVECURSORTOCOMMANDBUTTON
+ // Show the cursor clicking on the command button
+ // Not possile with current structure
playbackD = &tempD;
- d->Pix2CoOrd( d, x, y, &pos );
- d->CoOrd2Pix( d, pos, &x, &y );
if (!direct)
MoveCursor( d, NULL, wActionMove, pos, arrow0_bm, wDrawColorBlack );
- wBool_t ret = wDrawSetTempMode( d->d, TRUE );
- MacroDrawBitMap( MOVE_PLYBCK1, arrow0_bm, x, y, wDrawColorBlack );
- MacroDrawBitMap( MOVE_PLYBCK2, arrow3_bm, x, y, rightDragColor );
-
- Flash( d, x, y, rightDragColor );
+ unsigned long options = d->options;
+ d->options |= DC_TEMP;
+ wBool_t bTemp = wDrawSetTempMode( d->d, TRUE );
+ DoCurCommand( C_REDRAW, zero );
+ MacroDrawBitMap( MOVE_PLYBCK1, arrow0_bm, pos, wDrawColorBlack );
+ MacroDrawBitMap( MOVE_PLYBCK2, arrow3_bm, pos, rightDragColor );
+
+ Flash( rightDragColor );
if (direct) {
wControlHilite(control,TRUE);
}
- MacroDrawBitMap( MOVE_PLYBCK3, arrow3_bm, x, y, rightDragColor );
- MacroDrawBitMap( MOVE_PLYBCK4, arrow0_bm, x, y, wDrawColorBlack );
+ MacroDrawBitMap( MOVE_PLYBCK3, arrow3_bm, pos, rightDragColor );
+ MacroDrawBitMap( MOVE_PLYBCK4, arrow0_bm, pos, wDrawColorBlack );
if (direct) {
wPause(1000);
wControlHilite(control,FALSE);
}
- wDrawSetTempMode( d->d, ret );
+ wDrawSetTempMode( d->d, bTemp );
+ d->options = options;
+#else
+ // Just hilight the button
+ if ( control ) {
+ wControlHilite( control, TRUE );
+ wPause( 1000 );
+ wControlHilite( control, FALSE );
+ }
+#endif
}
/*****************************************************************************
@@ -673,20 +643,20 @@ static paramTextData_t demoTextData = { 50, 16 };
static paramData_t demoPLs[] = {
#define I_DEMOSTEP (0)
#define demoStep ((wButton_p)demoPLs[I_DEMOSTEP].control)
- { PD_BUTTON, (void*)DoDemoButton, "step", PDO_NORECORD, NULL, N_("Step"), BB_DEFAULT, (void*)0 },
+ { PD_BUTTON, DoDemoButton, "step", PDO_NORECORD, NULL, N_("Step"), BB_DEFAULT, I2VP(0) },
#define I_DEMONEXT (1)
#define demoNext ((wButton_p)demoPLs[I_DEMONEXT].control)
- { PD_BUTTON, (void*)DoDemoButton, "next", PDO_NORECORD|PDO_DLGHORZ, NULL, N_("Next"), 0, (void*)1 },
+ { PD_BUTTON, DoDemoButton, "next", PDO_NORECORD|PDO_DLGHORZ, NULL, N_("Next"), 0, I2VP(1) },
#define I_DEMOQUIT (2)
#define demoQuit ((wButton_p)demoPLs[I_DEMOQUIT].control)
- { PD_BUTTON, (void*)DoDemoButton, "quit", PDO_NORECORD|PDO_DLGHORZ, NULL, N_("Quit"), BB_CANCEL, (void*)3 },
+ { PD_BUTTON, DoDemoButton, "quit", PDO_NORECORD|PDO_DLGHORZ, NULL, N_("Quit"), BB_CANCEL, I2VP(3) },
#define I_DEMOSPEED (3)
#define demoSpeedL ((wList_p)demoPLs[I_DEMOSPEED].control)
- { PD_DROPLIST, &playbackSpeed, "speed", PDO_NORECORD|PDO_LISTINDEX|PDO_DLGHORZ, (void*)80, N_("Speed") },
+ { PD_DROPLIST, &playbackSpeed, "speed", PDO_NORECORD|PDO_LISTINDEX|PDO_DLGHORZ, I2VP(80), N_("Speed") },
#define I_DEMOTEXT (4)
#define demoT ((wText_p)demoPLs[I_DEMOTEXT].control)
{ PD_TEXT, NULL, "text", PDO_NORECORD|PDO_DLGRESIZE, &demoTextData, NULL, BT_CHARUNITS|BO_READONLY} };
-static paramGroup_t demoPG = { "demo", 0, demoPLs, sizeof demoPLs/sizeof demoPLs[0] };
+static paramGroup_t demoPG = { "demo", 0, demoPLs, COUNT( demoPLs ) };
EXPORT int MyGetKeyState( void )
{
@@ -764,7 +734,7 @@ static BOOL_T snapshotMouse = FALSE;
EXPORT void TakeSnapshot( drawCmd_t * d )
{
char * cp;
- wPos_t ix, iy;
+ wWinPix_t ix, iy;
if (d->dpi < 0)
d->dpi = mainD.dpi;
if (d->scale < 0)
@@ -773,22 +743,26 @@ EXPORT void TakeSnapshot( drawCmd_t * d )
d->orig = mainD.orig;
if (d->size.x < 0 || d->size.y < 0)
d->size = mainD.size;
- ix = (wPos_t)(d->dpi*d->size.x/d->scale);
- iy = (wPos_t)(d->dpi*d->size.y/d->scale);
+ ix = (wWinPix_t)(d->dpi*d->size.x/d->scale);
+ iy = (wWinPix_t)(d->dpi*d->size.y/d->scale);
d->d = wBitMapCreate( ix, iy, 8 );
if (d->d == (wDraw_p)0) {
return;
}
DrawTracks( d, d->scale, d->orig, d->size );
- if ( snapshotMouse && playbackBm )
- wDrawBitMap( d->d, playbackBm, playbackX, playbackY, playbackColor, 0 );
- wDrawLine( d->d, 0, 0, ix-1, 0, 0, wDrawLineSolid, wDrawColorBlack, 0 );
- wDrawLine( d->d, ix-1, 0, ix-1, iy-1, 0, wDrawLineSolid, wDrawColorBlack, 0 );
- wDrawLine( d->d, ix-1, iy-1, 0, iy-1, 0, wDrawLineSolid, wDrawColorBlack, 0 );
- wDrawLine( d->d, 0, iy-1, 0, 0, 0, wDrawLineSolid, wDrawColorBlack, 0 );
+ if ( snapshotMouse && playbackBm ) {
+ DrawBitMap( d, playbackPos, playbackBm, playbackColor );
+ }
+ coOrd p0, s1;
+ DIST_T off = 0.02;
+ p0.x = off * d->scale;
+ p0.y = off * d->scale;
+ s1.x = d->size.x-off*2 * d->scale;
+ s1.y = d->size.y-off*2 * d->scale;
+ DrawRectangle( d, p0, s1, wDrawColorBlack, DRAW_CLOSED );
strcpy( message, paramFileName );
cp = message+strlen(message)-4;
- sprintf( cp, "-%4.4d.xpm", documentSnapshotNum );
+ sprintf( cp, "-%4.4d.png", documentSnapshotNum );
wBitMapWriteFile( d->d, message );
wBitMapDelete( d->d );
documentSnapshotNum++;
@@ -975,7 +949,7 @@ static void PlaybackSetup( void )
wTextClear( demoT );
wShow( demoW );
wFlush();
- wPrefFlush();
+ wPrefFlush("");
wWinSetBusy( mainW, TRUE );
wWinSetBusy( mapW, TRUE );
ParamSaveAll();
@@ -985,8 +959,7 @@ static void PlaybackSetup( void )
oldMainSize = mainD.size;
oldMainScale = mainD.scale;
oldScaleName = curScaleName;
- playbackX = 0;
- playbackY = 0;
+ playbackPos = zero;
Reset();
paramVersion = -1;
playbackColor=wDrawColorBlack;
@@ -1003,7 +976,7 @@ static void Playback( void )
wIndex_t inx;
long timeout;
static enum { pauseCmd, mouseCmd, otherCmd } thisCmd, lastCmd;
- int len;
+ size_t len;
static wBool_t demoWinOnTop = FALSE;
coOrd roomSize;
char * cp, * cq;
@@ -1018,8 +991,7 @@ static void Playback( void )
wWinTop( mainW );
demoWinOnTop = FALSE;
}
- char * oldLocale = NULL;
- oldLocale = SaveLocale( "C" );
+ SetCLocale();
while (TRUE) {
if ( ! inPlayback )
// User pressed Quit
@@ -1043,11 +1015,12 @@ static void Playback( void )
paramFile = fopen( demoFileName, "r" );
if ( paramFile == NULL ) {
NoticeMessage( MSG_OPEN_FAIL, _("Continue"), NULL, _("Demo"), demoFileName, strerror(errno) );
- RestoreLocale( oldLocale );
inPlayback = FALSE;
+ SetUserLocale();
return;
}
+ paramFileName = strdup( demoFileName );
playbackColor=wDrawColorBlack;
paramLineNum = 0;
wWinSetTitle( demoW, demoList( curDemo ).title );
@@ -1062,8 +1035,8 @@ static void Playback( void )
NoticeMessage( MSG_CANT_READ_DEMO, _("Continue"), NULL, sProdName, demoFileName );
fclose( paramFile );
paramFile = NULL;
- RestoreLocale( oldLocale );
inPlayback = FALSE;
+ SetUserLocale();
return;
}
free(demoFileName);
@@ -1111,8 +1084,8 @@ static void Playback( void )
wPause( 1000 );
EnableButtons( FALSE );
} else {
- RestoreLocale( oldLocale );
inPlayback = FALSE;
+ SetUserLocale();
return;
}
} else if (strncmp( paramLine, "CLEAR", 5 ) == 0) {
@@ -1129,8 +1102,8 @@ static void Playback( void )
wWinTop( demoW );
demoWinOnTop = TRUE;
EnableButtons( TRUE );
- RestoreLocale( oldLocale );
inPlayback = FALSE;
+ SetUserLocale();
return;
}
PlaybackMessage( paramLine );
@@ -1142,7 +1115,7 @@ static void Playback( void )
DoSetScale( paramLine+6 );
} else if (strncmp( paramLine, "REDRAW", 6 ) == 0) {
ResolveIndex();
- RecomputeElevations();
+ RecomputeElevations(NULL);
DoRedraw();
/*DoChangeNotification( CHANGE_ALL );*/
} else if (strncmp( paramLine, "COMMAND ", 8 ) == 0) {
@@ -1212,7 +1185,17 @@ static void Playback( void )
wPause( timeout );
}
} else if (strncmp( paramLine, "KEYSTATE ", 9 ) == 0 ) {
- playbackKeyState = atoi( paramLine+9 );
+ if ( strchr( "0123456789", paramLine[9] ) ) {
+ playbackKeyState = atoi( paramLine+9 );
+ } else {
+ playbackKeyState = 0;
+ if ( strchr( paramLine+9, 'S' ) )
+ playbackKeyState |= WKEY_SHIFT;
+ if ( strchr( paramLine+9, 'C' ) )
+ playbackKeyState |= WKEY_CTRL;
+ if ( strchr( paramLine+9, 'A' ) )
+ playbackKeyState |= WKEY_ALT;
+ }
} else if (strncmp( paramLine, "TIMESTART", 9 ) == 0 ) {
playbackTimer = wGetTimer();
} else if (strncmp( paramLine, "TIMEEND", 7 ) == 0 ) {
@@ -1294,8 +1277,8 @@ static void Playback( void )
if (pauseDemo) {
EnableButtons( TRUE );
pauseDemo = FALSE;
- RestoreLocale( oldLocale );
inPlayback = FALSE;
+ SetUserLocale();
return;
}
}
@@ -1309,7 +1292,7 @@ static void Playback( void )
}
inPlayback = FALSE;
PlaybackQuit();
- RestoreLocale( oldLocale );
+ SetUserLocale();
}
@@ -1341,7 +1324,7 @@ static int StartPlayback( int cnt, char **pathName, void * context )
static void DoDemoButton( void * command )
{
- switch( (int)(long)command ) {
+ switch( VP2L(command) ) {
case 0:
/* step */
playbackNonStop = (wGetKeyState() & WKEY_SHIFT) != 0;
@@ -1403,12 +1386,12 @@ static void CreateDemoW( void )
char * title = MakeWindowTitle(_("Demo"));
demoW = ParamCreateDialog( &demoPG, title, NULL, NULL, NULL, FALSE, NULL, F_RESIZE, DemoDlgUpdate );
- wListAddValue( demoSpeedL, _("Slowest"), NULL, (void*)0 );
- wListAddValue( demoSpeedL, _("Slow"), NULL, (void*)1 );
- wListAddValue( demoSpeedL, _("Normal"), NULL, (void*)2 );
- wListAddValue( demoSpeedL, _("Fast"), NULL, (void*)3 );
- wListAddValue( demoSpeedL, _("Faster"), NULL, (void*)4 );
- wListAddValue( demoSpeedL, _("Fastest"), NULL, (void*)5 );
+ wListAddValue( demoSpeedL, _("Slowest"), NULL, I2VP(0) );
+ wListAddValue( demoSpeedL, _("Slow"), NULL, I2VP(1) );
+ wListAddValue( demoSpeedL, _("Normal"), NULL, I2VP(2) );
+ wListAddValue( demoSpeedL, _("Fast"), NULL, I2VP(3) );
+ wListAddValue( demoSpeedL, _("Faster"), NULL, I2VP(4) );
+ wListAddValue( demoSpeedL, _("Fastest"), NULL, I2VP(5) );
wListSetIndex( demoSpeedL, (wIndex_t)playbackSpeed );
playbackFile_fs = wFilSelCreate( mainW, FS_LOAD, 0, title, sRecordFilePattern, StartPlayback, NULL );
}
@@ -1498,6 +1481,7 @@ static char * demoInitParams[] = {
"grid show 0",
"GROUP grid",
"misc toolbarset 65535",
+ "misc cur-turnout-ep 0",
"GROUP misc",
"sticky set 67108479", /* 0x3fffe7f - all but Helix and Turntable */
"GROUP sticky",
@@ -1529,8 +1513,10 @@ static void DemoInitValues( void )
wNoticeEx( NT_INFORMATION, _("Can not find PARAMETER playback proc"), _("Ok"), NULL );
return;
}
+ paramHiliteFast = TRUE;
for ( cpp = demoInitParams; *cpp; cpp++ )
paramPlaybackProc( *cpp );
+ paramHiliteFast = FALSE;
// Have to do this manually
oldMagneticSnap = MagneticSnap( TRUE );
}
@@ -1542,7 +1528,7 @@ static void DoDemo( void * demoNumber )
if (demoW == NULL)
CreateDemoW();
wButtonSetLabel( demoNext, _("Next") );
- curDemo = (int)(long)demoNumber;
+ curDemo = (int)VP2L(demoNumber);
if ( curDemo < 0 || curDemo >= demoList_da.cnt ) {
NoticeMessage( MSG_DEMO_BAD_NUM, _("Ok"), NULL, curDemo );
return;
@@ -1559,18 +1545,14 @@ static BOOL_T ReadDemo(
{
static wMenu_p m;
char * cp;
- char *oldLocale = NULL;
char *path;
if ( m == NULL )
m = demoM;
if ( strncmp( line, "DEMOGROUP ", 10 ) == 0 ) {
- if (userLocale)
- oldLocale = SaveLocale(userLocale);
m = wMenuMenuCreate( demoM, NULL, _(line+10) );
- if (oldLocale)
- RestoreLocale(oldLocale);
+
} else if ( strncmp( line, "DEMO ", 5 ) == 0 ) {
if (line[5] != '"')
goto error;
@@ -1583,14 +1565,10 @@ static BOOL_T ReadDemo(
if ( strlen(cp)==0 )
goto error;
DYNARR_APPEND( demoList_t, demoList_da, 10 );
- if (userLocale)
- oldLocale = SaveLocale(userLocale);
demoList( demoList_da.cnt-1 ).title = MyStrdup( _(line+6) );
MakeFullpath(&path, libDir, "demos", cp, NULL);
demoList(demoList_da.cnt - 1).fileName = path;
- wMenuPushCreate( m, NULL, _(line+6), 0, DoDemo, (void*)(intptr_t)(demoList_da.cnt-1) );
- if (oldLocale)
- RestoreLocale(oldLocale);
+ wMenuPushCreate( m, NULL, _(line+6), 0, DoDemo, I2VP(demoList_da.cnt-1) );
}
return TRUE;
error: