summaryrefslogtreecommitdiff
path: root/app/bin/misc.c
diff options
context:
space:
mode:
Diffstat (limited to 'app/bin/misc.c')
-rw-r--r--app/bin/misc.c2972
1 files changed, 1633 insertions, 1339 deletions
diff --git a/app/bin/misc.c b/app/bin/misc.c
index 827c2db..2ac1e2f 100644
--- a/app/bin/misc.c
+++ b/app/bin/misc.c
@@ -1,4 +1,4 @@
-/* \file misc.c
+/* file misc.c
* Main routine and initialization for the application
*/
@@ -40,7 +40,7 @@
#define R_OK (02)
#define access _access
#if _MSC_VER >1300
- #define strdup _strdup
+#define strdup _strdup
#endif
#else
#include <sys/stat.h>
@@ -62,6 +62,7 @@
#include "messages.h"
#include "misc.h"
#include "param.h"
+#include "include/paramfilelist.h"
#include "paths.h"
#include "smalldlg.h"
#include "track.h"
@@ -72,6 +73,10 @@
char *userLocale = NULL;
extern wBalloonHelp_t balloonHelp[];
+
+static wMenuToggle_p mapShowMI;
+static wMenuToggle_p magnetsMI;
+
#ifdef DEBUG
#define CHECK_BALLOONHELP
/*#define CHECK_UNUSED_BALLOONHELP*/
@@ -83,7 +88,7 @@ void DoCarDlg(void);
/****************************************************************************
*
- EXPORTED VARIABLES
+ EXPORTED VARIABLES
*
*/
@@ -96,7 +101,7 @@ EXPORT wWin_p mainW;
EXPORT wIndex_t changed = 0;
-EXPORT char message[STR_LONG_SIZE];
+EXPORT char message[STR_HUGE_SIZE];
static char message2[STR_LONG_SIZE];
EXPORT REGION_T curRegion = 0;
@@ -107,7 +112,7 @@ EXPORT coOrd zero = { 0.0, 0.0 };
EXPORT wBool_t extraButtons = FALSE;
-EXPORT long onStartup; /**< controls behaviour after startup: load last layout if zero, else start with blank canvas */
+EXPORT long onStartup; /**< controls behaviour after startup: load last layout if zero, else start with blank canvas */
EXPORT wButton_p undoB;
EXPORT wButton_p redoB;
@@ -115,13 +120,15 @@ EXPORT wButton_p redoB;
EXPORT wButton_p zoomUpB;
EXPORT wButton_p zoomDownB;
wButton_p mapShowB;
+wButton_p magnetsB;
+wButton_p backgroundB;
EXPORT wIndex_t checkPtMark = 0;
EXPORT wMenu_p demoM;
EXPORT wMenu_p popup1M, popup2M;
EXPORT wMenu_p popup1aM, popup2aM;
-
+EXPORT wMenu_p popup1mM, popup2mM;
static wIndex_t curCommand = 0;
EXPORT void * commandContext;
@@ -129,6 +136,8 @@ EXPORT wIndex_t cmdGroup;
EXPORT wIndex_t joinCmdInx;
EXPORT wIndex_t modifyCmdInx;
EXPORT long rightClickMode = 0;
+EXPORT long selectMode = 0;
+EXPORT long selectZero = 1;
EXPORT DIST_T easementVal = 0.0;
EXPORT DIST_T easeR = 0.0;
EXPORT DIST_T easeL = 0.0;
@@ -151,7 +160,7 @@ static int verbose = 0;
static wMenuList_p winList_mi;
static BOOL_T inMainW = TRUE;
-static long stickySet;
+static long stickySet = 0;
static long stickyCnt = 0;
static char * stickyLabels[33];
#define TOOLBARSET_INIT (0xFFFF)
@@ -168,10 +177,11 @@ static BOOL_T messageListEmpty = TRUE;
extern long curTurnoutEp;
static wIndex_t printCmdInx;
static wIndex_t gridCmdInx;
-static paramData_t menuPLs[101] = {
- { PD_LONG, &toolbarSet, "toolbarset" },
- { PD_LONG, &curTurnoutEp, "cur-turnout-ep" } };
+static paramData_t menuPLs[101] = { { PD_LONG, &toolbarSet, "toolbarset" }, {
+ PD_LONG, &curTurnoutEp, "cur-turnout-ep" } };
static paramGroup_t menuPG = { "misc", PGO_RECORD, menuPLs, 2 };
+
+extern wBool_t wDrawDoTempDraw;
/****************************************************************************
*
@@ -186,12 +196,11 @@ EXPORT long totalReallocs = 0;
EXPORT long totalFreeed = 0;
EXPORT long totalFrees = 0;
-static unsigned long guard0 = 0xDEADBEEF;
-static unsigned long guard1 = 0xAF00BA8A;
+static unsigned long guard0 = 0xDEADBEEF;
+static unsigned long guard1 = 0xAF00BA8A;
static int log_malloc;
-EXPORT void * MyMalloc ( long size )
-{
+EXPORT void * MyMalloc(long size) {
void * p;
totalMallocs++;
totalMalloced += size;
@@ -200,29 +209,26 @@ EXPORT void * MyMalloc ( long size )
AbortProg( "mallocing > 65500 bytes" );
}
#endif
- p = malloc( (size_t)size + sizeof (size_t) + 2 * sizeof (unsigned long) );
+ p = malloc((size_t) size + sizeof(size_t) + 2 * sizeof(unsigned long));
if (p == NULL)
- AbortProg( "No memory" );
-
-LOG1( log_malloc, ( "Malloc(%ld) = %lx (%lx-%lx)\n", size,
- (long)((char*)p+sizeof (size_t) + sizeof (unsigned long)),
- (long)p,
- (long)((char*)p+size+sizeof (size_t) + 2 * sizeof(unsigned long)) ));
- *(size_t*)p = (size_t)size;
- p = (char*)p + sizeof (size_t);
- *(unsigned long*)p = guard0;
- p = (char*)p + sizeof (unsigned long);
- *(unsigned long*)((char*)p+size) = guard1;
- memset( p, 0, (size_t)size );
+ AbortProg("No memory");
+
+ LOG1(log_malloc,
+ ( "Malloc(%ld) = %lx (%lx-%lx)\n", size, (long)((char*)p+sizeof (size_t) + sizeof (unsigned long)), (long)p, (long)((char*)p+size+sizeof (size_t) + 2 * sizeof(unsigned long)) ));
+ *(size_t*) p = (size_t) size;
+ p = (char*) p + sizeof(size_t);
+ *(unsigned long*) p = guard0;
+ p = (char*) p + sizeof(unsigned long);
+ *(unsigned long*) ((char*) p + size) = guard1;
+ memset(p, 0, (size_t )size);
return p;
}
-EXPORT void * MyRealloc( void * old, long size )
-{
+EXPORT void * MyRealloc(void * old, long size) {
size_t oldSize;
void * new;
- if (old==NULL)
- return MyMalloc( size );
+ if (old == NULL)
+ return MyMalloc(size);
totalReallocs++;
totalRealloced += size;
#if defined(WINDOWS) && ! defined(WIN32)
@@ -230,67 +236,61 @@ EXPORT void * MyRealloc( void * old, long size )
AbortProg( "reallocing > 65500 bytes" );
}
#endif
- if ( *(unsigned long*)((char*)old - sizeof (unsigned long)) != guard0 ) {
- AbortProg( "Guard0 is hosed" );
+ if (*(unsigned long*) ((char*) old - sizeof(unsigned long)) != guard0) {
+ AbortProg("Guard0 is hosed");
}
- oldSize = *(size_t*)((char*)old - sizeof (unsigned long) - sizeof (size_t));
- if ( *(unsigned long*)((char*)old + oldSize) != guard1 ) {
- AbortProg( "Guard1 is hosed" );
+ oldSize = *(size_t*) ((char*) old - sizeof(unsigned long) - sizeof(size_t));
+ if (*(unsigned long*) ((char*) old + oldSize) != guard1) {
+ AbortProg("Guard1 is hosed");
}
-LOG1( log_malloc, ("Realloc(%lx,%ld) was %d\n", (long)old, size, oldSize ) )
- if ((long)oldSize == size) {
+ LOG1(log_malloc, ("Realloc(%lx,%ld) was %d\n", (long)old, size, oldSize ))
+ if ((long) oldSize == size) {
return old;
}
if (size == 0) {
- free( (char*)old - sizeof *(long*)0 - sizeof *(size_t*)0 );
+ free((char*) old - sizeof *(long*) 0 - sizeof *(size_t*) 0);
return NULL;
}
- new = MyMalloc( size );
+ new = MyMalloc(size);
if (new == NULL && size)
- AbortProg( "No memory" );
- memcpy( new, old, min((size_t)size, oldSize) );
+ AbortProg("No memory");
+ memcpy(new, old, min((size_t )size, oldSize));
MyFree(old);
return new;
}
-
-EXPORT void MyFree( void * ptr )
-{
+EXPORT void MyFree(void * ptr) {
size_t oldSize;
totalFrees++;
if (ptr) {
- if ( *(unsigned long*)((char*)ptr - sizeof (unsigned long)) != guard0 ) {
- AbortProg( "Guard0 is hosed" );
+ if (*(unsigned long*) ((char*) ptr - sizeof(unsigned long)) != guard0) {
+ AbortProg("Guard0 is hosed");
}
- oldSize = *(size_t*)((char*)ptr - sizeof (unsigned long) - sizeof (size_t));
- if ( *(unsigned long*)((char*)ptr + oldSize) != guard1 ) {
- AbortProg( "Guard1 is hosed" );
+ oldSize = *(size_t*) ((char*) ptr - sizeof(unsigned long)
+ - sizeof(size_t));
+ if (*(unsigned long*) ((char*) ptr + oldSize) != guard1) {
+ AbortProg("Guard1 is hosed");
}
-LOG1( log_malloc, ("Free %d at %lx (%lx-%lx)\n", oldSize, (long)ptr,
- (long)((char*)ptr-sizeof *(size_t*)0-sizeof *(long*)0),
- (long)((char*)ptr+oldSize+sizeof *(long*)0)) )
+ LOG1(log_malloc,
+ ("Free %d at %lx (%lx-%lx)\n", oldSize, (long)ptr, (long)((char*)ptr-sizeof *(size_t*)0-sizeof *(long*)0), (long)((char*)ptr+oldSize+sizeof *(long*)0)))
totalFreeed += oldSize;
- free( (char*)ptr - sizeof *(long*)0 - sizeof *(size_t*)0 );
+ free((char*) ptr - sizeof *(long*) 0 - sizeof *(size_t*) 0);
}
}
-
-EXPORT void * memdup( void * src, size_t size )
-{
+EXPORT void * memdup(void * src, size_t size) {
void * p;
- p = MyMalloc( size );
+ p = MyMalloc(size);
if (p == NULL)
- AbortProg( "No memory" );
- memcpy( p, src, size );
+ AbortProg("No memory");
+ memcpy(p, src, size);
return p;
}
-
-EXPORT char * MyStrdup( const char * str )
-{
+EXPORT char * MyStrdup(const char * str) {
char * ret;
- ret = (char*)MyMalloc( strlen( str ) + 1 );
- strcpy( ret, str );
+ ret = (char*) MyMalloc(strlen(str) + 1);
+ strcpy(ret, str);
return ret;
}
@@ -304,32 +304,70 @@ EXPORT char * MyStrdup( const char * str )
*
*/
EXPORT char * ConvertToEscapedText(const char * text) {
- int text_i=0;
+ int text_i = 0;
int add = 0; //extra chars for escape
- while(text[text_i]) {
+ while (text[text_i]) {
switch (text[text_i]) {
- case '\n': add++; break;
- case '\t': add++; break;
- case '\\': add++; break;
- case '\"': add++; break;
+ case '\n':
+ add++;
+ break;
+ case '\t':
+ add++;
+ break;
+ case '\\':
+ add++;
+ break;
+ case '\"':
+ add++;
+ break;
}
text_i++;
}
- char * cout = MyMalloc(strlen(text)+1+add);
+ unsigned cnt = strlen(text) + 1 + add;
+#ifdef WINDOWS
+ cnt *= 2;
+#endif
+ char * cout = MyMalloc(cnt);
int cout_i = 0;
text_i = 0;
- while(text[text_i]) {
+ while (text[text_i]) {
char c = text[text_i];
switch (c) {
- case '\n': cout[cout_i] = '\\'; cout_i++; cout[cout_i] = 'n'; cout_i++; break; // Line Feed
- case '\t': cout[cout_i] = '\\'; cout_i++; cout[cout_i] = 't'; cout_i++; break; // Tab
- case '\\': cout[cout_i] = '\\'; cout_i++; cout[cout_i] = '\\'; cout_i++; break; // BackSlash
- case '\"': cout[cout_i] = '\"'; cout_i++; cout[cout_i] = '\"'; cout_i++; break; // Double Quotes
- default: cout[cout_i] = c; cout_i++;
+ case '\n':
+ cout[cout_i] = '\\';
+ cout_i++;
+ cout[cout_i] = 'n';
+ cout_i++;
+ break; // Line Feed
+ case '\t':
+ cout[cout_i] = '\\';
+ cout_i++;
+ cout[cout_i] = 't';
+ cout_i++;
+ break; // Tab
+ case '\\':
+ cout[cout_i] = '\\';
+ cout_i++;
+ cout[cout_i] = '\\';
+ cout_i++;
+ break; // BackSlash
+ case '\"':
+ cout[cout_i] = '\"';
+ cout_i++;
+ cout[cout_i] = '\"';
+ cout_i++;
+ break; // Double Quotes
+ default:
+ cout[cout_i] = c;
+ cout_i++;
}
text_i++;
}
cout[cout_i] = '\0';
+#ifdef WINDOWS
+ wSystemToUTF8(cout, cout, cnt);
+#endif // WINDOWS
+
return cout;
}
@@ -340,83 +378,82 @@ EXPORT char * ConvertToEscapedText(const char * text) {
* \n = LineFeed 0x0A
* \t = Tab 0x09
* \\ = \ The way to still produce backslash
- * "" = " Take out quotes included so that other (CSV-like) programs could read the files
*
*/
EXPORT char * ConvertFromEscapedText(const char * text) {
- enum { CHARACTER, ESCAPE, QUOTE } state = CHARACTER;
- char * cout = MyMalloc(strlen(text)+1); //always equal to or shorter than
- int text_i = 0;
- int cout_i = 0;
- int c;
- while (text[text_i]) {
- c = text[text_i];
- switch (state) {
- case CHARACTER:
- if (c == '\\') {
- state = ESCAPE;
- } else if (c == '\"') {
- state = QUOTE;
- } else {
- cout[cout_i] = c;
- cout_i++;
- }
- break;
-
- case ESCAPE:
- switch (c) {
- case '\\': cout[cout_i] = '\\'; cout_i++; break; // "\\" = "\"
- case 'n': cout[cout_i] = '\n'; cout_i++; break; // LF
- case 't': cout[cout_i] = '\t'; cout_i++; break; // TAB
- }
- state = CHARACTER;
- break;
- case QUOTE:
- switch(c) {
- case '\"': cout[cout_i] = c; cout_i++; break; //One quote = NULL, Two quotes = 1 quote
- }
- state = CHARACTER;
- }
- text_i++;
- }
- cout[cout_i] = '\0';
- return cout;
-}
+ enum {
+ CHARACTER, ESCAPE
+ } state = CHARACTER;
+ char * cout = MyMalloc(strlen(text) + 1); //always equal to or shorter than
+ int text_i = 0;
+ int cout_i = 0;
+ int c;
+ while (text[text_i]) {
+ c = text[text_i];
+ switch (state) {
+ case CHARACTER:
+ if (c == '\\') {
+ state = ESCAPE;
+ } else {
+ cout[cout_i] = c;
+ cout_i++;
+ }
+ break;
+ case ESCAPE:
+ switch (c) {
+ case '\\':
+ cout[cout_i] = '\\';
+ cout_i++;
+ break; // "\\" = "\"
+ case 'n':
+ cout[cout_i] = '\n';
+ cout_i++;
+ break; // LF
+ case 't':
+ cout[cout_i] = '\t';
+ cout_i++;
+ break; // TAB
+ }
+ state = CHARACTER;
+ break;
+ }
+ text_i++;
+ }
+ cout[cout_i] = '\0';
+ return cout;
+}
-EXPORT void AbortProg(
- char * msg,
- ... )
-{
+EXPORT void AbortProg(char * msg, ...) {
static BOOL_T abort2 = FALSE;
int rc;
va_list ap;
- va_start( ap, msg );
- vsprintf( message, msg, ap );
- va_end( ap );
+ va_start(ap, msg);
+ vsprintf(message, msg, ap);
+ va_end(ap);
if (abort2) {
- wNoticeEx( NT_ERROR, message, _("ABORT"), NULL );
+ wNoticeEx( NT_ERROR, message, _("ABORT"), NULL);
} else {
- strcat( message, _("\nDo you want to save your layout?") );
- rc = wNoticeEx( NT_ERROR, message, _("Ok"), _("ABORT") );
+ strcat(message, _("\nDo you want to save your layout?"));
+ rc = wNoticeEx( NT_ERROR, message, _("Ok"), _("ABORT"));
if (rc) {
- DoSaveAs( (doSaveCallBack_p)abort );
+ DoSaveAs((doSaveCallBack_p) abort);
} else {
abort();
}
}
}
-
-EXPORT char * Strcpytrimed( char * dst, char * src, BOOL_T double_quotes )
-{
+EXPORT char * Strcpytrimed(char * dst, char * src, BOOL_T double_quotes) {
char * cp;
- while (*src && isspace((unsigned char)*src) ) src++;
+ while (*src && isspace((unsigned char) *src))
+ src++;
if (!*src)
return dst;
- cp = src+strlen(src)-1;
- while ( cp>src && isspace((unsigned char)*cp) ) cp--;
- while ( src<=cp ) {
+ cp = src + strlen(src) - 1;
+ while (cp > src && isspace((unsigned char) *cp))
+ cp--;
+ while (src <= cp) {
if (*src == '"' && double_quotes)
*dst++ = '"';
*dst++ = *src++;
@@ -425,50 +462,83 @@ EXPORT char * Strcpytrimed( char * dst, char * src, BOOL_T double_quotes )
return dst;
}
+static char * directory;
-EXPORT char * BuildTrimedTitle( char * cp, char * sep, char * mfg, char * desc, char * partno )
-{
- cp = Strcpytrimed( cp, mfg, FALSE );
- strcpy( cp, sep );
+#ifdef WINDOWS
+#define F_OK (0)
+#endif
+
+EXPORT wBool_t CheckHelpTopicExists(const char * topic) {
+
+ char * htmlFile;
+
+ // Check the file exits in the distro
+
+ if (!directory)
+ directory = malloc(BUFSIZ);
+
+ if (directory == NULL) return 0;
+
+ sprintf(directory, "%s/html/", wGetAppLibDir());
+
+ htmlFile = malloc(strlen(directory)+strlen(topic) + 6);
+
+ sprintf(htmlFile, "%s%s.html", directory, topic);
+
+ if( access( htmlFile, F_OK ) == -1 ) {
+
+ printf("Missing help topic %s\n",topic);
+
+ free(htmlFile);
+
+ return 0;
+
+ }
+
+ free(htmlFile);
+
+ return 1;
+
+}
+
+EXPORT char * BuildTrimedTitle(char * cp, char * sep, char * mfg, char * desc,
+ char * partno) {
+ cp = Strcpytrimed(cp, mfg, FALSE);
+ strcpy(cp, sep);
cp += strlen(cp);
- cp = Strcpytrimed( cp, desc, FALSE );
- strcpy( cp, sep );
+ cp = Strcpytrimed(cp, desc, FALSE);
+ strcpy(cp, sep);
cp += strlen(cp);
- cp = Strcpytrimed( cp, partno, FALSE );
+ cp = Strcpytrimed(cp, partno, FALSE);
return cp;
}
-
-static void ShowMessageHelp( int index, const char * label, void * data )
-{
+static void ShowMessageHelp(int index, const char * label, void * data) {
char msgKey[STR_SIZE], *cp, *msgSrc;
- msgSrc = (char*)data;
+ msgSrc = (char*) data;
if (!msgSrc)
return;
- cp = strchr( msgSrc, '\t' );
- if (cp==NULL) {
- sprintf( msgKey, _("No help for %s"), msgSrc );
- wNoticeEx( NT_INFORMATION, msgKey, _("Ok"), NULL );
+ cp = strchr(msgSrc, '\t');
+ if (cp == NULL) {
+ sprintf(msgKey, _("No help for %s"), msgSrc);
+ wNoticeEx( NT_INFORMATION, msgKey, _("Ok"), NULL);
return;
}
- memcpy( msgKey, msgSrc, cp-msgSrc );
- msgKey[cp-msgSrc] = 0;
- wHelp( msgKey );
+ memcpy(msgKey, msgSrc, cp - msgSrc);
+ msgKey[cp - msgSrc] = 0;
+ wHelp(msgKey);
}
-
-static char * ParseMessage(
- char *msgSrc )
-{
- char *cp1=NULL, *cp2=NULL;
+static char * ParseMessage(char *msgSrc) {
+ char *cp1 = NULL, *cp2 = NULL;
static char shortMsg[STR_SIZE];
- cp1 = strchr( _(msgSrc), '\t' );
+ cp1 = strchr(_(msgSrc), '\t');
if (cp1) {
- cp2 = strchr( cp1+1, '\t' );
+ cp2 = strchr(cp1 + 1, '\t');
if (cp2) {
cp1++;
- memcpy( shortMsg, cp1, cp2-cp1 );
- shortMsg[cp2-cp1] = 0;
+ memcpy(shortMsg, cp1, cp2 - cp1);
+ shortMsg[cp2 - cp1] = 0;
cp1 = shortMsg;
cp2++;
} else {
@@ -476,157 +546,177 @@ static char * ParseMessage(
cp2 = cp1;
}
if (messageListEmpty) {
- wMenuListDelete( messageList_ml, _(MESSAGE_LIST_EMPTY) );
+ wMenuListDelete(messageList_ml, _(MESSAGE_LIST_EMPTY));
messageListEmpty = FALSE;
}
- wMenuListAdd( messageList_ml, 0, cp1, _(msgSrc) );
+ wMenuListAdd(messageList_ml, 0, cp1, _(msgSrc));
return cp2;
} else {
return _(msgSrc);
}
}
-
-EXPORT void InfoMessage( char * format, ... )
-{
+EXPORT void InfoMessage(char * format, ...) {
va_list ap;
- va_start( ap, format );
- format = ParseMessage( format );
- vsprintf( message2, format, ap );
- va_end( ap );
+ va_start(ap, format);
+ format = ParseMessage(format);
+ vsprintf(message2, format, ap);
+ va_end(ap);
/*InfoSubstituteControl( NULL, NULL );*/
if (inError)
return;
- SetMessage( message2 );
+ SetMessage(message2);
}
-
-EXPORT void ErrorMessage( char * format, ... )
-{
+EXPORT void ErrorMessage(char * format, ...) {
va_list ap;
- va_start( ap, format );
- format = ParseMessage( format );
- vsprintf( message2, format, ap );
- va_end( ap );
- InfoSubstituteControls( NULL, NULL );
- SetMessage( message2 );
+ va_start(ap, format);
+ format = ParseMessage(format);
+ vsprintf(message2, format, ap);
+ va_end(ap);
+ InfoSubstituteControls( NULL, NULL);
+ SetMessage(message2);
wBeep();
inError = TRUE;
}
+EXPORT int NoticeMessage(char * format, char * yes, char * no, ...) {
+ va_list ap;
+ va_start(ap, no);
+ format = ParseMessage(format);
+ vsprintf(message2, format, ap);
+ va_end(ap);
+ return wNotice(message2, yes, no);
+}
-EXPORT int NoticeMessage( char * format, char * yes, char * no, ... )
-{
+EXPORT int NoticeMessage2(int playbackRC, char * format, char * yes, char * no,
+ ...) {
va_list ap;
- va_start( ap, no );
- format = ParseMessage( format );
- vsprintf( message2, format, ap );
- va_end( ap );
- return wNotice( message2, yes, no );
+ if (inPlayback)
+ return playbackRC;
+ va_start(ap, no);
+ format = ParseMessage(format);
+ vsprintf(message2, format, ap);
+ va_end(ap);
+ return wNoticeEx( NT_INFORMATION, message2, yes, no);
}
+/**
+* Set the file's changed flag and update the window title.
+*/
-EXPORT int NoticeMessage2( int playbackRC, char * format, char * yes, char * no, ... )
+void
+FileIsChanged(void)
{
- va_list ap;
- if ( inPlayback )
- return playbackRC;
- va_start( ap, no );
- format = ParseMessage( format );
- vsprintf( message2, format, ap );
- va_end( ap );
- return wNoticeEx( NT_INFORMATION, message2, yes, no );
+ changed++;
+ SetWindowTitle();
}
-
+
/*****************************************************************************
*
* MAIN BUTTON HANDLERS
*
*/
+ /**
+ * Confirm a requested operation in case of possible loss of changes.
+ *
+ * \param label2 IN operation to be cancelled, unused at the moment
+ * \param after IN function to be executed on positive confirmation
+ * \return true if proceed, false if cancel operation
+ */
+/** TODO: make sensible messages when requesting confirmation */
-EXPORT void Confirm( char * label2, doSaveCallBack_p after )
+bool
+Confirm(char * label2, doSaveCallBack_p after)
{
- int rc;
+ int rc = -1;
if (changed) {
- rc = wNotice3(
- _("Save changes to the layout design before closing?\n\n"
- "If you don't save now, your unsaved changes will be discarded."),
- _("&Save"), _("&Cancel"), _("&Don't Save") );
- if (rc == 1) {
- DoSave( after );
- return;
- } else if (rc == 0) {
- return;
- }
+ rc = wNotice3(_("Save changes to the layout design before closing?\n\n"
+ "If you don't save now, your unsaved changes will be discarded."),
+ _("&Save"), _("&Cancel"), _("&Don't Save"));
}
- after();
- return;
+
+ switch (rc) {
+ case -1: /* do not save */
+ after();
+ break;
+ case 0: /* cancel operation */
+ break;
+ case 1: /* save */
+ LayoutBackGroundInit(FALSE);
+ LayoutBackGroundSave();
+ DoSave(after);
+ break;
+ }
+ return(rc != 0);
}
-static void ChkLoad( void )
-{
+static void ChkLoad(void) {
Confirm(_("Load"), DoLoad);
}
-static void ChkRevert( void )
+static void ChkExamples( void )
{
- int rc;
-
- if( changed) {
- rc = wNoticeEx( NT_WARNING, _("Do you want to return to the last saved state?\n\n"
- "Revert will cause all changes done since last save to be lost."),
- _("&Revert"), _("&Cancel") );
- if( rc ) {
- /* load the file */
- char *filename = GetLayoutFullPath();
- LoadTracks( 1, &filename, NULL );
- }
- }
+ Confirm(_("examples"), DoExamples);
}
+static void ChkRevert(void)
+{
+ int rc;
+
+ if (changed) {
+ rc = wNoticeEx(NT_WARNING,
+ _("Do you want to return to the last saved state?\n\n"
+ "Revert will cause all changes done since last save to be lost."),
+ _("&Revert"), _("&Cancel"));
+ if (rc) {
+ /* load the file */
+ char *filename = GetLayoutFullPath();
+ LoadTracks(1, &filename, NULL);
+ }
+ }
+}
static char * fileListPathName;
-static void AfterFileList( void )
-{
- DoFileList( 0, NULL, fileListPathName );
+static void AfterFileList(void) {
+ DoFileList(0, NULL, fileListPathName);
}
-static void ChkFileList( int index, const char * label, void * data )
-{
- fileListPathName = (char*)data;
- Confirm( _("Load"), AfterFileList );
+static void ChkFileList(int index, const char * label, void * data) {
+ fileListPathName = (char*) data;
+ Confirm(_("Load"), AfterFileList);
}
/**
* Save information about current files and some settings to preferences file.
*/
-EXPORT void SaveState( void )
-{
+EXPORT void SaveState(void) {
wPos_t width, height;
const char * fileName;
void * pathName;
char file[6];
int inx;
- wWinGetSize( mainW, &width, &height );
- wPrefSetInteger( "draw", "mainwidth", width );
- wPrefSetInteger( "draw", "mainheight", height );
- RememberParamFiles();
+ wWinGetSize(mainW, &width, &height);
+ wPrefSetInteger("draw", "mainwidth", width);
+ wPrefSetInteger("draw", "mainheight", height);
+ SaveParamFileList();
ParamUpdatePrefs();
wPrefSetString( "misc", "lastlayout", GetLayoutFullPath());
+ wPrefSetInteger( "misc", "lastlayoutexample", bExample );
- if ( fileList_ml ) {
- strcpy( file, "file" );
+ if (fileList_ml) {
+ strcpy(file, "file");
file[5] = 0;
- for ( inx=0; inx<NUM_FILELIST; inx++ ) {
- fileName = wMenuListGet( fileList_ml, inx, &pathName );
+ for (inx = 0; inx < NUM_FILELIST; inx++) {
+ fileName = wMenuListGet(fileList_ml, inx, &pathName);
if (fileName) {
- file[4] = '0'+inx;
- sprintf( message, "%s", (char*)pathName );
- wPrefSetString( "filelist", file, message );
+ file[4] = '0' + inx;
+ sprintf(message, "%s", (char* )pathName);
+ wPrefSetString("filelist", file, message);
}
}
}
@@ -637,8 +727,7 @@ EXPORT void SaveState( void )
/*
* Clean up before quitting
*/
-static void DoQuitAfter( void )
-{
+static void DoQuitAfter(void) {
changed = 0;
SaveState();
@@ -649,34 +738,34 @@ static void DoQuitAfter( void )
* to close the application. Before shutting down confirmation is gotten to
* prevent data loss.
*/
-void DoQuit( void )
-{
- Confirm(_("Quit"), DoQuitAfter );
+void DoQuit(void) {
+ if (Confirm(_("Quit"), DoQuitAfter)) {
+
#ifdef CHECK_UNUSED_BALLOONHELP
- ShowUnusedBalloonHelp();
+ ShowUnusedBalloonHelp();
#endif
- LogClose();
- wExit(0);
+ LogClose();
+ wExit(0);
+ }
}
-static void DoClearAfter( void )
-{
-
+static void DoClearAfter(void) {
+
+ Reset();
ClearTracks();
/* set all layers to their default properties and set current layer to 0 */
- DefaultLayerProperties();
DoLayout(NULL);
- checkPtMark = 0;
- Reset();
+ checkPtMark = changed = 0;
DoChangeNotification( CHANGE_MAIN|CHANGE_MAP );
+ bReadOnly = TRUE;
EnableCommands();
SetLayoutFullPath("");
SetWindowTitle();
+ LayoutBackGroundInit(TRUE);
}
-static void DoClear( void )
-{
+static void DoClear(void) {
Confirm(_("Clear"), DoClearAfter);
}
@@ -684,9 +773,8 @@ static void DoClear( void )
* Toggle visibility state of map window.
*/
-void MapWindowToggleShow(void)
-{
- MapWindowShow(!mapVisible);
+void MapWindowToggleShow(void) {
+ MapWindowShow(!mapVisible);
}
/**
@@ -695,114 +783,114 @@ void MapWindowToggleShow(void)
* \param state IN TRUE if visible, FALSE if hidden
*/
-void MapWindowShow(int state)
-{
- mapVisible = state;
- wPrefSetInteger("misc", "mapVisible", mapVisible);
- wMenuToggleSet(mapShowMI, mapVisible);
+void MapWindowShow(int state) {
+ mapVisible = state;
+ wPrefSetInteger("misc", "mapVisible", mapVisible);
+ wMenuToggleSet(mapShowMI, mapVisible);
- if (mapVisible) {
- DoChangeNotification(CHANGE_MAP);
- }
+ if (mapVisible) {
+ DoChangeNotification(CHANGE_MAP);
+ }
- wWinShow(mapW, mapVisible);
- wButtonSetBusy(mapShowB, (wBool_t)mapVisible);
+ wWinShow(mapW, mapVisible);
+ wButtonSetBusy(mapShowB, (wBool_t) mapVisible);
}
-static void DoShowWindow(
- int index,
- const char * name,
- void * data )
+/**
+ * Set magnets state
+ */
+int MagneticSnap(int state)
{
+ int oldState = magneticSnap;
+ magneticSnap = state;
+ wPrefSetInteger("misc", "magnets", magneticSnap);
+ wMenuToggleSet(magnetsMI, magneticSnap);
+ wButtonSetBusy(magnetsB, (wBool_t) magneticSnap);
+ return oldState;
+}
+
+/**
+ * Toggle magnets on/off
+ */
+void MagneticSnapToggle(void) {
+ MagneticSnap(!magneticSnap);
+}
+
+
+static void DoShowWindow(int index, const char * name, void * data) {
if (data == mapW) {
if (mapVisible == FALSE) {
- MapWindowShow( TRUE );
+ MapWindowShow( TRUE);
return;
}
}
- wWinShow( (wWin_p)data, TRUE );
+ wWinShow((wWin_p) data, TRUE);
}
-
static dynArr_t demoWindows_da;
#define demoWindows(N) DYNARR_N( wWin_p, demoWindows_da, N )
-EXPORT void wShow(
- wWin_p win )
-{
+EXPORT void wShow(wWin_p win) {
int inx;
if (inPlayback && win != demoW) {
- wWinSetBusy( win, TRUE );
- for ( inx=0; inx<demoWindows_da.cnt; inx++ )
- if ( demoWindows(inx) == win )
+ wWinSetBusy(win, TRUE);
+ for (inx = 0; inx < demoWindows_da.cnt; inx++)
+ if ( demoWindows(inx) == win)
break;
- if ( inx >= demoWindows_da.cnt ) {
- for ( inx=0; inx<demoWindows_da.cnt; inx++ )
- if ( demoWindows(inx) == NULL )
- break;
- if ( inx >= demoWindows_da.cnt ) {
- DYNARR_APPEND( wWin_p, demoWindows_da, 10 );
- inx = demoWindows_da.cnt-1;
+ if (inx >= demoWindows_da.cnt) {
+ for (inx = 0; inx < demoWindows_da.cnt; inx++)
+ if ( demoWindows(inx) == NULL)
+ break;
+ if (inx >= demoWindows_da.cnt) {
+ DYNARR_APPEND(wWin_p, demoWindows_da, 10);
+ inx = demoWindows_da.cnt - 1;
}
demoWindows(inx) = win;
}
}
if (win != mainW)
- wMenuListAdd( winList_mi, -1, wWinGetTitle(win), win );
- wWinShow( win, TRUE );
+ wMenuListAdd(winList_mi, -1, wWinGetTitle(win), win);
+ wWinShow(win, TRUE);
}
-
-EXPORT void wHide(
- wWin_p win )
-{
+EXPORT void wHide(wWin_p win) {
int inx;
- wWinShow( win, FALSE );
- wWinSetBusy( win, FALSE );
- if ( inMainW && win == aboutW )
+ wWinShow(win, FALSE);
+ wWinSetBusy(win, FALSE);
+ if (inMainW && win == aboutW)
return;
- wMenuListDelete( winList_mi, wWinGetTitle(win) );
- if ( inPlayback )
- for ( inx=0; inx<demoWindows_da.cnt; inx++ )
- if ( demoWindows(inx) == win )
+ wMenuListDelete(winList_mi, wWinGetTitle(win));
+ if (inPlayback)
+ for (inx = 0; inx < demoWindows_da.cnt; inx++)
+ if ( demoWindows(inx) == win)
demoWindows(inx) = NULL;
}
-
-EXPORT void CloseDemoWindows( void )
-{
+EXPORT void CloseDemoWindows(void) {
int inx;
- for ( inx=0; inx<demoWindows_da.cnt; inx++ )
- if ( demoWindows(inx) != NULL )
- wHide( demoWindows(inx) );
+ for (inx = 0; inx < demoWindows_da.cnt; inx++)
+ if ( demoWindows(inx) != NULL)
+ wHide(demoWindows(inx));
demoWindows_da.cnt = 0;
}
-
-EXPORT void DefaultProc(
- wWin_p win,
- winProcEvent e,
- void * data )
-{
- switch( e ) {
+EXPORT void DefaultProc(wWin_p win, winProcEvent e, void * data) {
+ switch (e) {
case wClose_e:
- wMenuListDelete( winList_mi, wWinGetTitle(win) );
+ wMenuListDelete(winList_mi, wWinGetTitle(win));
if (data != NULL)
- ConfirmReset( FALSE );
- wWinDoCancel( win );
+ ConfirmReset( FALSE);
+ wWinDoCancel(win);
break;
default:
break;
}
}
-
-static void NextWindow( void )
-{
+static void NextWindow(void) {
}
-EXPORT void SelectFont( void )
-{
+EXPORT void SelectFont(void) {
wSelectFont(_("XTrackCAD Font"));
}
@@ -817,38 +905,36 @@ EXPORT void SelectFont( void )
#define NUM_CMDMENUS (4)
static struct {
- wControl_p control;
- wBool_t enabled;
- wPos_t x, y;
- long options;
- int group;
- wIndex_t cmdInx;
- } buttonList[BUTTON_MAX];
+ wControl_p control;
+ wBool_t enabled;
+ wPos_t x, y;
+ long options;
+ int group;
+ wIndex_t cmdInx;
+} buttonList[BUTTON_MAX];
static int buttonCnt = 0;
static struct {
- procCommand_t cmdProc;
- char * helpKey;
- wIndex_t buttInx;
- char * labelStr;
- wIcon_p icon;
- int reqLevel;
- wBool_t enabled;
- long options;
- long stickyMask;
- long acclKey;
- wMenuPush_p menu[NUM_CMDMENUS];
- void * context;
- } commandList[COMMAND_MAX];
+ procCommand_t cmdProc;
+ char * helpKey;
+ wIndex_t buttInx;
+ char * labelStr;
+ wIcon_p icon;
+ int reqLevel;
+ wBool_t enabled;
+ long options;
+ long stickyMask;
+ long acclKey;
+ wMenuPush_p menu[NUM_CMDMENUS];
+ void * context;
+} commandList[COMMAND_MAX];
static int commandCnt = 0;
-
#ifdef CHECK_UNUSED_BALLOONHELP
int * balloonHelpCnts;
#endif
-EXPORT const char * GetBalloonHelpStr( char * helpKey )
-{
+EXPORT const char * GetBalloonHelpStr(char * helpKey) {
wBalloonHelp_t * bh;
#ifdef CHECK_UNUSED_BALLOONHELP
if ( balloonHelpCnts == NULL ) {
@@ -857,8 +943,8 @@ EXPORT const char * GetBalloonHelpStr( char * helpKey )
memset( balloonHelpCnts, 0, (sizeof *(int*)0) * (bh-balloonHelp) );
}
#endif
- for ( bh=balloonHelp; bh->name; bh++ ) {
- if ( strcmp( bh->name, helpKey ) == 0 ) {
+ for (bh = balloonHelp; bh->name; bh++) {
+ if (strcmp(bh->name, helpKey) == 0) {
#ifdef CHECK_UNUSED_BALLOONHELP
balloonHelpCnts[(bh-balloonHelp)]++;
#endif
@@ -866,107 +952,134 @@ EXPORT const char * GetBalloonHelpStr( char * helpKey )
}
}
#ifdef CHECK_BALLOONHELP
-fprintf( stderr, _("No balloon help for %s\n"), helpKey );
+ fprintf( stderr, _("No balloon help for %s\n"), helpKey );
#endif
return _("No Help");
}
-
#ifdef CHECK_UNUSED_BALLOONHELP
static void ShowUnusedBalloonHelp( void )
{
int cnt;
for ( cnt=0; balloonHelp[cnt].name; cnt++ )
- if ( balloonHelpCnts[cnt] == 0 )
- fprintf( stderr, "unused BH %s\n", balloonHelp[cnt].name );
+ if ( balloonHelpCnts[cnt] == 0 )
+ fprintf( stderr, "unused BH %s\n", balloonHelp[cnt].name );
}
#endif
+EXPORT const char* GetCurCommandName() {
+ return commandList[curCommand].helpKey;
+}
-EXPORT void EnableCommands( void )
-{
+EXPORT void EnableCommands(void) {
int inx, minx;
wBool_t enable;
-LOG( log_command, 5, ( "COMMAND enable S%d M%d\n", selectedTrackCount, programMode ) )
- for ( inx=0; inx<commandCnt; inx++ ) {
+ LOG(log_command, 5,
+ ( "COMMAND enable S%d M%d\n", selectedTrackCount, programMode ))
+ for (inx = 0; inx < commandCnt; inx++) {
if (commandList[inx].buttInx) {
- if ( (commandList[inx].options & IC_SELECTED) &&
- selectedTrackCount <= 0 )
+ if ((commandList[inx].options & IC_SELECTED)
+ && selectedTrackCount <= 0)
enable = FALSE;
- else if ( (programMode==MODE_TRAIN&&(commandList[inx].options&(IC_MODETRAIN_TOO|IC_MODETRAIN_ONLY))==0) ||
- (programMode!=MODE_TRAIN&&(commandList[inx].options&IC_MODETRAIN_ONLY)!=0) )
+ else if ((programMode == MODE_TRAIN
+ && (commandList[inx].options
+ & (IC_MODETRAIN_TOO | IC_MODETRAIN_ONLY)) == 0)
+ || (programMode != MODE_TRAIN
+ && (commandList[inx].options & IC_MODETRAIN_ONLY)
+ != 0))
enable = FALSE;
else
enable = TRUE;
- if ( commandList[inx].enabled != enable ) {
- if ( commandList[inx].buttInx >= 0 )
- wControlActive( buttonList[commandList[inx].buttInx].control, enable );
- for ( minx=0; minx<NUM_CMDMENUS; minx++ )
+ if (commandList[inx].enabled != enable) {
+ if (commandList[inx].buttInx >= 0)
+ wControlActive(buttonList[commandList[inx].buttInx].control,
+ enable);
+ for (minx = 0; minx < NUM_CMDMENUS; minx++)
if (commandList[inx].menu[minx])
- wMenuPushEnable( commandList[inx].menu[minx], enable );
+ wMenuPushEnable(commandList[inx].menu[minx], enable);
commandList[inx].enabled = enable;
}
}
}
- for ( inx=0; inx<menuPG.paramCnt; inx++ ) {
- if ( menuPLs[inx].control == NULL )
+ for (inx = 0; inx < menuPG.paramCnt; inx++) {
+ if (menuPLs[inx].control == NULL)
continue;
- if ( (menuPLs[inx].option & IC_SELECTED) &&
- selectedTrackCount <= 0 )
+ if ((menuPLs[inx].option & IC_SELECTED) && selectedTrackCount <= 0)
enable = FALSE;
- else if ( (programMode==MODE_TRAIN&&(menuPLs[inx].option&(IC_MODETRAIN_TOO|IC_MODETRAIN_ONLY))==0) ||
- (programMode!=MODE_TRAIN&&(menuPLs[inx].option&IC_MODETRAIN_ONLY)!=0) )
+ else if ((programMode == MODE_TRAIN
+ && (menuPLs[inx].option & (IC_MODETRAIN_TOO | IC_MODETRAIN_ONLY))
+ == 0)
+ || (programMode != MODE_TRAIN
+ && (menuPLs[inx].option & IC_MODETRAIN_ONLY) != 0))
enable = FALSE;
else
enable = TRUE;
- wMenuPushEnable( (wMenuPush_p)menuPLs[inx].control, enable );
+ wMenuPushEnable((wMenuPush_p) menuPLs[inx].control, enable);
}
- for ( inx=0; inx<buttonCnt; inx++ ) {
- if ( buttonList[inx].cmdInx < 0 && (buttonList[inx].options&IC_SELECTED) )
- wControlActive( buttonList[inx].control, selectedTrackCount>0 );
- }
+ for (inx = 0; inx < buttonCnt; inx++) {
+ if (buttonList[inx].cmdInx < 0
+ && (buttonList[inx].options & IC_SELECTED))
+ wControlActive(buttonList[inx].control, selectedTrackCount > 0);
+ }
}
+EXPORT wIndex_t GetCurrentCommand() {
+ return curCommand;
+}
-EXPORT void Reset( void )
-{
+static wIndex_t autosave_count = 0;
+
+EXPORT void Reset(void) {
if (recordF) {
- fprintf( recordF, "RESET\n" );
- fflush( recordF );
- }
-LOG( log_command, 2, ( "COMMAND CANCEL %s\n", commandList[curCommand].helpKey ) )
- commandList[curCommand].cmdProc( C_CANCEL, zero );
- if ( commandList[curCommand].buttInx>=0 )
- wButtonSetBusy( (wButton_p)buttonList[commandList[curCommand].buttInx].control, FALSE );
- curCommand = (preSelect?selectCmdInx:describeCmdInx);
+ fprintf(recordF, "RESET\n");
+ fflush(recordF);
+ }
+ LOG(log_command, 2,
+ ( "COMMAND CANCEL %s\n", commandList[curCommand].helpKey ))
+ commandList[curCommand].cmdProc( C_CANCEL, zero);
+ if (commandList[curCommand].buttInx >= 0)
+ wButtonSetBusy(
+ (wButton_p) buttonList[commandList[curCommand].buttInx].control,
+ FALSE);
+ curCommand = (preSelect ? selectCmdInx : describeCmdInx);
+ wSetCursor(mainD.d, preSelect ? defaultCursor : wCursorQuestion);
commandContext = commandList[curCommand].context;
- if ( commandList[curCommand].buttInx >= 0 )
- wButtonSetBusy( (wButton_p)buttonList[commandList[curCommand].buttInx].control, TRUE );
+ if (commandList[curCommand].buttInx >= 0)
+ wButtonSetBusy(
+ (wButton_p) buttonList[commandList[curCommand].buttInx].control,
+ TRUE);
tempSegs_da.cnt = 0;
- if (checkPtInterval > 0 &&
- changed >= checkPtMark+(wIndex_t)checkPtInterval &&
- !inPlayback ) {
+ if (checkPtInterval > 0
+ && changed >= checkPtMark + (wIndex_t) checkPtInterval
+ && !inPlayback) {
DoCheckPoint();
checkPtMark = changed;
+
+ autosave_count++;
+
+ if ((autosaveChkPoints>0) && (autosave_count>=autosaveChkPoints)) {
+ DoSave(NULL);
+ InfoMessage(_("File AutoSaved"));
+ autosave_count = 0;
+ }
}
- MainRedraw();
- MapRedraw();
+
+
+
+ ClrAllTrkBits( TB_UNDRAWN );
+ DoRedraw(); // Reset
EnableCommands();
ResetMouseState();
-LOG( log_command, 1, ( "COMMAND RESET %s\n", commandList[curCommand].helpKey ) )
- (void)commandList[curCommand].cmdProc( C_START, zero );
+ LOG(log_command, 1,
+ ( "COMMAND RESET %s\n", commandList[curCommand].helpKey ))
+ (void) commandList[curCommand].cmdProc( C_START, zero);
}
-
-static BOOL_T CheckClick(
- wAction_t *action,
- coOrd *pos,
- BOOL_T checkLeft,
- BOOL_T checkRight )
-{
+static BOOL_T CheckClick(wAction_t *action, coOrd *pos, BOOL_T checkLeft,
+ BOOL_T checkRight) {
static long time0;
static coOrd pos0;
long time1;
@@ -974,6 +1087,11 @@ static BOOL_T CheckClick(
DIST_T distDelta;
switch (*action) {
+ case C_LDOUBLE:
+ if (!checkLeft)
+ return TRUE;
+ time0 = 0;
+ break;
case C_DOWN:
if (!checkLeft)
return TRUE;
@@ -986,9 +1104,8 @@ static BOOL_T CheckClick(
if (time0 != 0) {
time1 = wGetTimer() - adjTimer;
timeDelta = time1 - time0;
- distDelta = FindDistance( *pos, pos0 );
- if ( timeDelta > dragTimeout ||
- distDelta > dragDistance ) {
+ distDelta = FindDistance(*pos, pos0);
+ if (timeDelta > dragTimeout || distDelta > dragDistance) {
time0 = 0;
*pos = pos0;
*action = C_DOWN;
@@ -1003,7 +1120,7 @@ static BOOL_T CheckClick(
if (time0 != 0) {
time1 = wGetTimer() - adjTimer;
timeDelta = time1 - time0;
- distDelta = FindDistance( *pos, pos0 );
+ distDelta = FindDistance(*pos, pos0);
time0 = 0;
*action = C_LCLICK;
}
@@ -1020,9 +1137,8 @@ static BOOL_T CheckClick(
if (time0 != 0) {
time1 = wGetTimer() - adjTimer;
timeDelta = time1 - time0;
- distDelta = FindDistance( *pos, pos0 );
- if ( timeDelta > dragTimeout ||
- distDelta > dragDistance ) {
+ distDelta = FindDistance(*pos, pos0);
+ if (timeDelta > dragTimeout || distDelta > dragDistance) {
time0 = 0;
*pos = pos0;
*action = C_RDOWN;
@@ -1043,66 +1159,90 @@ static BOOL_T CheckClick(
return TRUE;
}
-
-EXPORT wBool_t DoCurCommand( wAction_t action, coOrd pos )
-{
+EXPORT wBool_t DoCurCommand(wAction_t action, coOrd pos) {
wAction_t rc;
int mode;
+ wBool_t bExit = FALSE;
- if ( action == wActionMove && (commandList[curCommand].options & IC_WANT_MOVE) == 0 )
- return C_CONTINUE;
-
- if ( !CheckClick( &action, &pos,
- (int)(commandList[curCommand].options & IC_LCLICK), TRUE ) )
- return C_CONTINUE;
-
- if ( action == C_RCLICK && (commandList[curCommand].options&IC_RCLICK)==0 ) {
- if ( !inPlayback ) {
+ if (action == wActionMove) {
+ if ((commandList[curCommand].options & IC_WANT_MOVE) == 0) {
+ bExit = TRUE;
+ }
+ } else if ((action&0xFF) == wActionModKey) {
+ if ((commandList[curCommand].options & IC_WANT_MODKEYS) == 0) {
+ bExit = TRUE;
+ }
+ } else if (!CheckClick(&action, &pos,
+ (int) (commandList[curCommand].options & IC_LCLICK), TRUE)) {
+ bExit = TRUE;
+ } else if (action == C_RCLICK
+ && (commandList[curCommand].options & IC_RCLICK) == 0) {
+ if (!inPlayback) {
mode = MyGetKeyState();
- if ( ( mode & (~WKEY_SHIFT) ) != 0 ) {
+ if ((mode & (~WKEY_SHIFT)) != 0) {
wBeep();
- return C_CONTINUE;
- }
- if ( ((mode&WKEY_SHIFT) == 0) == (rightClickMode==0) ) {
- if ( selectedTrackCount > 0 ) {
+ bExit = TRUE;
+ } else if (((mode & WKEY_SHIFT) == 0) == (rightClickMode == 0)) {
+ if (selectedTrackCount > 0) {
if (commandList[curCommand].options & IC_CMDMENU) {
}
- wMenuPopupShow( popup2M );
+ wMenuPopupShow(popup2M);
} else {
- wMenuPopupShow( popup1M );
+ wMenuPopupShow(popup1M);
}
- return C_CONTINUE;
- } else if ( (commandList[curCommand].options & IC_CMDMENU) ) {
+ bExit = TRUE;
+ } else if ((commandList[curCommand].options & IC_CMDMENU)) {
cmdMenuPos = pos;
action = C_CMDMENU;
} else {
wBeep();
- return C_CONTINUE;
+ bExit = TRUE;
}
} else {
- return C_CONTINUE;
+ bExit = TRUE;
}
}
+ if ( bExit ) {
+ TempRedraw(); // DoCurCommand: precommand
+ return C_CONTINUE;
+ }
-LOG( log_command, 2, ( "COMMAND MOUSE %s %d @ %0.3f %0.3f\n", commandList[curCommand].helpKey, (int)action, pos.x, pos.y ) )
- rc = commandList[curCommand].cmdProc( action, pos );
-LOG( log_command, 4, ( " COMMAND returns %d\n", rc ) )
- if ( (rc == C_TERMINATE || rc == C_INFO) &&
- (commandList[curCommand].options & IC_STICKY) &&
- (commandList[curCommand].stickyMask & stickySet) ) {
+ LOG(log_command, 2,
+ ( "COMMAND MOUSE %s %d @ %0.3f %0.3f\n", commandList[curCommand].helpKey, (int)action, pos.x, pos.y ))
+ rc = commandList[curCommand].cmdProc(action, pos);
+ LOG(log_command, 4, ( " COMMAND returns %d\n", rc ))
+ switch ( action & 0xFF ) {
+ case wActionMove:
+ case wActionModKey:
+ case C_DOWN:
+ case C_MOVE:
+ case C_UP:
+ case C_RDOWN:
+ case C_RMOVE:
+ case C_RUP:
+ case C_LCLICK:
+ case C_RCLICK:
+ case C_TEXT:
+ case C_OK:
+ if (rc== C_TERMINATE) MainRedraw();
+ else TempRedraw(); // DoCurCommand: postcommand
+ break;
+ default:
+ break;
+ }
+ if ((rc == C_TERMINATE || rc == C_INFO)
+ && (commandList[curCommand].options & IC_STICKY)
+ && (commandList[curCommand].stickyMask & stickySet)) {
tempSegs_da.cnt = 0;
UpdateAllElevations();
- if (action != C_REDRAW) {
- MainRedraw();
- MapRedraw();
- }
if (commandList[curCommand].options & IC_NORESTART) {
return C_CONTINUE;
}
-LOG( log_command, 1, ( "COMMAND START %s\n", commandList[curCommand].helpKey ) )
- rc = commandList[curCommand].cmdProc( C_START, pos );
-LOG( log_command, 4, ( " COMMAND returns %d\n", rc ) )
- switch( rc ) {
+ LOG(log_command, 1,
+ ( "COMMAND START %s\n", commandList[curCommand].helpKey ))
+ rc = commandList[curCommand].cmdProc( C_START, pos);
+ LOG(log_command, 4, ( " COMMAND returns %d\n", rc ))
+ switch (rc) {
case C_CONTINUE:
break;
case C_ERROR:
@@ -1112,7 +1252,7 @@ LOG( log_command, 4, ( " COMMAND returns %d\n", rc ) )
#endif
break;
case C_TERMINATE:
- InfoMessage( "" );
+ InfoMessage("");
case C_INFO:
Reset();
break;
@@ -1121,60 +1261,67 @@ LOG( log_command, 4, ( " COMMAND returns %d\n", rc ) )
return rc;
}
-
-EXPORT void ConfirmReset( BOOL_T retry )
-{
+EXPORT void ConfirmReset(BOOL_T retry) {
wAction_t rc;
- if (curCommand != describeCmdInx && curCommand != selectCmdInx ) {
-LOG( log_command, 3, ( "COMMAND CONFIRM %s\n", commandList[curCommand].helpKey ) )
- rc = commandList[curCommand].cmdProc( C_CONFIRM, zero );
-LOG( log_command, 4, ( " COMMAND returns %d\n", rc ) )
- if ( rc == C_ERROR ) {
+ if (curCommand != describeCmdInx && curCommand != selectCmdInx) {
+ LOG(log_command, 3,
+ ( "COMMAND CONFIRM %s\n", commandList[curCommand].helpKey ))
+ rc = commandList[curCommand].cmdProc( C_CONFIRM, zero);
+ LOG(log_command, 4, ( " COMMAND returns %d\n", rc ))
+ if (rc == C_ERROR) {
if (retry)
- rc = wNotice3(
- _("Cancelling the current command will undo the changes\n"
- "you are currently making. Do you want to update?"),
- _("Yes"), _("No"), _("Cancel") );
+ rc =
+ wNotice3(
+ _(
+ "Cancelling the current command will undo the changes\n"
+ "you are currently making. Do you want to update?"),
+ _("Yes"), _("No"), _("Cancel"));
else
- rc = wNoticeEx( NT_WARNING,
- _("Cancelling the current command will undo the changes\n"
- "you are currently making. Do you want to update?"),
- _("Yes"), _("No") );
+ rc =
+ wNoticeEx( NT_WARNING,
+ _(
+ "Cancelling the current command will undo the changes\n"
+ "you are currently making. Do you want to update?"),
+ _("Yes"), _("No"));
if (rc == 1) {
-LOG( log_command, 3, ( "COMMAND OK %s\n", commandList[curCommand].helpKey ) )
- commandList[curCommand].cmdProc( C_OK, zero );
+ LOG(log_command, 3,
+ ( "COMMAND OK %s\n", commandList[curCommand].helpKey ))
+ commandList[curCommand].cmdProc( C_OK, zero);
return;
} else if (rc == -1) {
return;
}
- } else if ( rc == C_TERMINATE ) {
+ } else if (rc == C_TERMINATE) {
return;
}
}
- Reset();
if (retry) {
/* because user pressed esc */
- SetAllTrackSelect( FALSE );
+ SetAllTrackSelect( FALSE);
}
-LOG( log_command, 1, ( "COMMAND RESET %s\n", commandList[curCommand].helpKey ) )
- commandList[curCommand].cmdProc( C_START, zero );
+ Reset();
+ LOG(log_command, 1,
+ ( "COMMAND RESET %s\n", commandList[curCommand].helpKey ))
+ commandList[curCommand].cmdProc( C_START, zero);
}
+EXPORT BOOL_T IsCurCommandSticky(void) {
+ if ((commandList[curCommand].options & IC_STICKY) != 0
+ && (commandList[curCommand].stickyMask & stickySet) != 0)
+ return TRUE;
+ return FALSE;
+}
-EXPORT void ResetIfNotSticky( void )
-{
- if ( (commandList[curCommand].options & IC_STICKY) == 0 ||
- (commandList[curCommand].stickyMask & stickySet) == 0 )
+EXPORT void ResetIfNotSticky(void) {
+ if ((commandList[curCommand].options & IC_STICKY) == 0
+ || (commandList[curCommand].stickyMask & stickySet) == 0)
Reset();
}
-
-EXPORT void DoCommandB(
- void * data )
-{
- wIndex_t inx = (wIndex_t)(long)data;
+EXPORT void DoCommandB(void * data) {
+ wIndex_t inx = (wIndex_t) (long) data;
STATUS_T rc;
- static coOrd pos = {0,0};
+ static coOrd pos = { 0, 0 };
static int inDoCommandB = FALSE;
wIndex_t buttInx;
@@ -1183,62 +1330,74 @@ EXPORT void DoCommandB(
inDoCommandB = TRUE;
if (inx < 0 || inx >= commandCnt) {
- ASSERT( FALSE );
+ ASSERT(FALSE);
inDoCommandB = FALSE;
return;
}
- if ( (!inPlayback) && (!commandList[inx].enabled) ) {
- ErrorMessage( MSG_COMMAND_DISABLED );
+ if ((!inPlayback) && (!commandList[inx].enabled)) {
+ ErrorMessage(MSG_COMMAND_DISABLED);
inx = describeCmdInx;
}
- InfoMessage( "" );
- if (curCommand != selectCmdInx ) {
-LOG( log_command, 3, ( "COMMAND FINISH %s\n", commandList[curCommand].helpKey ) )
- rc = commandList[curCommand].cmdProc( C_FINISH, zero );
-LOG( log_command, 3, ( "COMMAND CONFIRM %s\n", commandList[curCommand].helpKey ) )
- rc = commandList[curCommand].cmdProc( C_CONFIRM, zero );
-LOG( log_command, 4, ( " COMMAND returns %d\n", rc ) )
- if ( rc == C_ERROR ) {
+ InfoMessage("");
+ if (curCommand != selectCmdInx) {
+ LOG(log_command, 3,
+ ( "COMMAND FINISH %s\n", commandList[curCommand].helpKey ))
+ rc = commandList[curCommand].cmdProc( C_FINISH, zero);
+ LOG(log_command, 3,
+ ( "COMMAND CONFIRM %s\n", commandList[curCommand].helpKey ))
+ rc = commandList[curCommand].cmdProc( C_CONFIRM, zero);
+ LOG(log_command, 4, ( " COMMAND returns %d\n", rc ))
+ if (rc == C_ERROR) {
rc = wNotice3(
- _("Cancelling the current command will undo the changes\n"
- "you are currently making. Do you want to update?"),
- _("Yes"), _("No"), _("Cancel") );
+ _("Cancelling the current command will undo the changes\n"
+ "you are currently making. Do you want to update?"),
+ _("Yes"), _("No"), _("Cancel"));
if (rc == 1)
- commandList[curCommand].cmdProc( C_OK, zero );
+ commandList[curCommand].cmdProc( C_OK, zero);
else if (rc == -1) {
inDoCommandB = FALSE;
return;
}
}
-LOG( log_command, 3, ( "COMMAND CANCEL %s\n", commandList[curCommand].helpKey ) )
- commandList[curCommand].cmdProc( C_CANCEL, pos );
+ LOG(log_command, 3,
+ ( "COMMAND CANCEL %s\n", commandList[curCommand].helpKey ))
+ commandList[curCommand].cmdProc( C_CANCEL, pos);
tempSegs_da.cnt = 0;
}
- if (commandList[curCommand].buttInx>=0)
- wButtonSetBusy( (wButton_p)buttonList[commandList[curCommand].buttInx].control, FALSE );
+ if (commandList[curCommand].buttInx >= 0)
+ wButtonSetBusy(
+ (wButton_p) buttonList[commandList[curCommand].buttInx].control,
+ FALSE);
if (recordF) {
- fprintf( recordF, "COMMAND %s\n", commandList[inx].helpKey+3 );
- fflush( recordF );
+ fprintf(recordF, "COMMAND %s\n", commandList[inx].helpKey + 3);
+ fflush(recordF);
}
curCommand = inx;
commandContext = commandList[curCommand].context;
- if ( (buttInx=commandList[curCommand].buttInx) >= 0 ) {
- if ( buttonList[buttInx].cmdInx != curCommand ) {
- wButtonSetLabel( (wButton_p)buttonList[buttInx].control, (char*)commandList[curCommand].icon );
- wControlSetHelp( buttonList[buttInx].control, GetBalloonHelpStr(commandList[curCommand].helpKey) );
- wControlSetContext( buttonList[buttInx].control, (void*)(intptr_t)curCommand );
+ if ((buttInx = commandList[curCommand].buttInx) >= 0) {
+ if (buttonList[buttInx].cmdInx != curCommand) {
+ wButtonSetLabel((wButton_p) buttonList[buttInx].control,
+ (char*) commandList[curCommand].icon);
+ wControlSetHelp(buttonList[buttInx].control,
+ GetBalloonHelpStr(commandList[curCommand].helpKey));
+ wControlSetContext(buttonList[buttInx].control,
+ (void*) (intptr_t) curCommand);
buttonList[buttInx].cmdInx = curCommand;
}
- wButtonSetBusy( (wButton_p)buttonList[commandList[curCommand].buttInx].control, TRUE );
+ wButtonSetBusy(
+ (wButton_p) buttonList[commandList[curCommand].buttInx].control,
+ TRUE);
}
-LOG( log_command, 1, ( "COMMAND START %s\n", commandList[curCommand].helpKey ) )
- rc = commandList[curCommand].cmdProc( C_START, pos );
-LOG( log_command, 4, ( " COMMAND returns %d\n", rc ) )
- switch( rc ) {
+ LOG(log_command, 1,
+ ( "COMMAND START %s\n", commandList[curCommand].helpKey ))
+ rc = commandList[curCommand].cmdProc( C_START, pos);
+ LOG(log_command, 4, ( " COMMAND returns %d\n", rc ))
+ TempRedraw(); // DoCommandB
+ switch (rc) {
case C_CONTINUE:
break;
case C_ERROR:
@@ -1250,26 +1409,21 @@ LOG( log_command, 4, ( " COMMAND returns %d\n", rc ) )
case C_TERMINATE:
case C_INFO:
if (rc == C_TERMINATE)
- InfoMessage( "" );
+ InfoMessage("");
Reset();
break;
}
inDoCommandB = FALSE;
}
-
-static void DoCommandBIndirect( void * cmdInxP )
-{
+static void DoCommandBIndirect(void * cmdInxP) {
wIndex_t cmdInx;
- cmdInx = *(wIndex_t*)cmdInxP;
- DoCommandB( (void*)(intptr_t)cmdInx );
+ cmdInx = *(wIndex_t*) cmdInxP;
+ DoCommandB((void*) (intptr_t) cmdInx);
}
-
-EXPORT void LayoutSetPos(
- wIndex_t inx )
-{
- wPos_t w, h;
+EXPORT void LayoutSetPos(wIndex_t inx) {
+ wPos_t w, h, offset;
static wPos_t toolbarRowHeight = 0;
static wPos_t width;
static int lastGroup;
@@ -1277,59 +1431,66 @@ EXPORT void LayoutSetPos(
static int layerButtCnt;
int currGroup;
- if ( inx == 0 ) {
+ if (inx == 0) {
lastGroup = 0;
- wWinGetSize( mainW, &width, &h );
+ wWinGetSize(mainW, &width, &h);
gap = 5;
- toolbarWidth = width-20+5;
+ toolbarWidth = width - 20 + 5;
layerButtCnt = 0;
toolbarHeight = 0;
}
if (buttonList[inx].control) {
- if ( toolbarRowHeight <= 0 )
- toolbarRowHeight = wControlGetHeight( buttonList[inx].control );
+ if (toolbarRowHeight <= 0)
+ toolbarRowHeight = wControlGetHeight(buttonList[inx].control);
currGroup = buttonList[inx].group & ~BG_BIGGAP;
- if ( currGroup != lastGroup && (buttonList[inx].group&BG_BIGGAP) ) {
- gap = 15;
+ if (currGroup != lastGroup && (buttonList[inx].group & BG_BIGGAP)) {
+ gap = 15;
}
- if ((toolbarSet & (1<<currGroup)) &&
- (programMode!=MODE_TRAIN||(buttonList[inx].options&(IC_MODETRAIN_TOO|IC_MODETRAIN_ONLY))) &&
- (programMode==MODE_TRAIN||(buttonList[inx].options&IC_MODETRAIN_ONLY)==0) &&
- ((buttonList[inx].group&~BG_BIGGAP) != BG_LAYER ||
- layerButtCnt++ <= layerCount) ) {
- if (currGroup != lastGroup) {
- toolbarWidth += gap;
- lastGroup = currGroup;
- gap = 5;
- }
- w = wControlGetWidth( buttonList[inx].control );
- h = wControlGetHeight( buttonList[inx].control );
- if ( inx<buttonCnt-1 && (buttonList[inx+1].options&IC_ABUT) )
- w += wControlGetWidth( buttonList[inx+1].control );
- if (toolbarWidth+w>width-20) {
- toolbarWidth = 0;
- toolbarHeight += h + 5;
- }
- wControlSetPos( buttonList[inx].control, toolbarWidth, toolbarHeight-(h+5) );
- buttonList[inx].x = toolbarWidth;
- buttonList[inx].y = toolbarHeight-(h+5);
- toolbarWidth += wControlGetWidth( buttonList[inx].control );
- wControlShow( buttonList[inx].control, TRUE );
+ if ((toolbarSet & (1 << currGroup))
+ && (programMode != MODE_TRAIN
+ || (buttonList[inx].options
+ & (IC_MODETRAIN_TOO | IC_MODETRAIN_ONLY)))
+ && (programMode == MODE_TRAIN
+ || (buttonList[inx].options & IC_MODETRAIN_ONLY) == 0)
+ && ((buttonList[inx].group & ~BG_BIGGAP) != BG_LAYER
+ || layerButtCnt++ <= layerCount)) {
+ if (currGroup != lastGroup) {
+ toolbarWidth += gap;
+ lastGroup = currGroup;
+ gap = 5;
+ }
+ w = wControlGetWidth(buttonList[inx].control);
+ h = wControlGetHeight(buttonList[inx].control);
+ if (h<toolbarRowHeight) {
+ offset = (h-toolbarRowHeight)/2;
+ h = toolbarRowHeight; //Uniform
+ } else offset = 0;
+ if (inx < buttonCnt - 1 && (buttonList[inx + 1].options & IC_ABUT))
+ w += wControlGetWidth(buttonList[inx + 1].control);
+ if (toolbarWidth + w > width - 20) {
+ toolbarWidth = 0;
+ toolbarHeight += h + 5;
+ }
+ wControlSetPos(buttonList[inx].control, toolbarWidth,
+ toolbarHeight - (h + 5 +offset));
+ buttonList[inx].x = toolbarWidth;
+ buttonList[inx].y = toolbarHeight - (h + 5 + offset);
+ toolbarWidth += wControlGetWidth(buttonList[inx].control);
+ wControlShow(buttonList[inx].control, TRUE);
} else {
- wControlShow( buttonList[inx].control, FALSE );
+ wControlShow(buttonList[inx].control, FALSE);
}
}
}
-
EXPORT void LayoutToolBar( void * data )
{
int inx;
- for (inx = 0; inx<buttonCnt; inx++) {
- LayoutSetPos( inx );
+ for (inx = 0; inx < buttonCnt; inx++) {
+ LayoutSetPos(inx);
}
if (toolbarSet&(1<<BG_HOTBAR)) {
LayoutHotBar(data);
@@ -1338,14 +1499,12 @@ EXPORT void LayoutToolBar( void * data )
}
}
-
-static void ToolbarChange( long changes )
-{
- if ( (changes&CHANGE_TOOLBAR) ) {
+static void ToolbarChange(long changes) {
+ if ((changes & CHANGE_TOOLBAR)) {
/*if ( !(changes&CHANGE_MAIN) )*/
- MainProc( mainW, wResize_e, NULL, NULL );
+ MainProc( mainW, wResize_e, NULL, NULL );
/*else
- LayoutToolBar();*/
+ LayoutToolBar();*/
}
}
@@ -1355,26 +1514,15 @@ static void ToolbarChange( long changes )
*
*/
-
-EXPORT BOOL_T CommandEnabled(
- wIndex_t cmdInx )
-{
+EXPORT BOOL_T CommandEnabled(wIndex_t cmdInx) {
return commandList[cmdInx].enabled;
}
-
-static wIndex_t AddCommand(
- procCommand_t cmdProc,
- char * helpKey,
- char * nameStr,
- wIcon_p icon,
- int reqLevel,
- long options,
- long acclKey,
- void * context )
-{
- if (commandCnt >= COMMAND_MAX-1) {
- AbortProg("addCommand: too many commands" );
+static wIndex_t AddCommand(procCommand_t cmdProc, char * helpKey,
+ char * nameStr, wIcon_p icon, int reqLevel, long options, long acclKey,
+ void * context) {
+ if (commandCnt >= COMMAND_MAX - 1) {
+ AbortProg("addCommand: too many commands");
}
commandList[commandCnt].labelStr = MyStrdup(nameStr);
commandList[commandCnt].helpKey = MyStrdup(helpKey);
@@ -1391,15 +1539,12 @@ static wIndex_t AddCommand(
commandList[commandCnt].menu[2] = NULL;
commandList[commandCnt].menu[3] = NULL;
commandCnt++;
- return commandCnt-1;
+ return commandCnt - 1;
}
-EXPORT void AddToolbarControl(
- wControl_p control,
- long options )
-{
- if (buttonCnt >= COMMAND_MAX-1) {
- AbortProg("addToolbarControl: too many buttons" );
+EXPORT void AddToolbarControl(wControl_p control, long options) {
+ if (buttonCnt >= COMMAND_MAX - 1) {
+ AbortProg("addToolbarControl: too many buttons");
}
buttonList[buttonCnt].enabled = TRUE;
buttonList[buttonCnt].options = options;
@@ -1408,98 +1553,77 @@ EXPORT void AddToolbarControl(
buttonList[buttonCnt].y = 0;
buttonList[buttonCnt].control = control;
buttonList[buttonCnt].cmdInx = -1;
- LayoutSetPos( buttonCnt );
+ LayoutSetPos(buttonCnt);
buttonCnt++;
}
-
-EXPORT wButton_p AddToolbarButton(
- char * helpStr,
- wIcon_p icon,
- long options,
- wButtonCallBack_p action,
- void * context )
-{
+EXPORT wButton_p AddToolbarButton(char * helpStr, wIcon_p icon, long options,
+ wButtonCallBack_p action, void * context) {
wButton_p bb;
wIndex_t inx;
GetBalloonHelpStr(helpStr);
- if ( context == NULL ) {
- for ( inx=0; inx<menuPG.paramCnt; inx++ ) {
- if ( action != DoCommandB && menuPLs[inx].valueP == (void*)action ) {
+ if (context == NULL) {
+ for (inx = 0; inx < menuPG.paramCnt; inx++) {
+ if (action != DoCommandB && menuPLs[inx].valueP == (void*) action) {
context = &menuPLs[inx];
action = ParamMenuPush;
- menuPLs[inx].context = (void*)(intptr_t)buttonCnt;
+ menuPLs[inx].context = (void*) (intptr_t) buttonCnt;
menuPLs[inx].option |= IC_PLAYBACK_PUSH;
break;
}
}
}
- bb = wButtonCreate( mainW, 0, 0, helpStr, (char*)icon,
- BO_ICON/*|((options&IC_CANCEL)?BB_CANCEL:0)*/, 0,
- action, context );
- AddToolbarControl( (wControl_p)bb, options );
+ bb = wButtonCreate(mainW, 0, 0, helpStr, (char*) icon,
+ BO_ICON/*|((options&IC_CANCEL)?BB_CANCEL:0)*/, 0, action, context);
+ AddToolbarControl((wControl_p) bb, options);
return bb;
}
-
-EXPORT void PlaybackButtonMouse(
- wIndex_t buttInx )
-{
+EXPORT void PlaybackButtonMouse(wIndex_t buttInx) {
wPos_t cmdX, cmdY;
- if ( buttInx < 0 || buttInx >= buttonCnt ) return;
- if ( buttonList[buttInx].control == NULL ) return;
- cmdX = buttonList[buttInx].x+17;
- cmdY = toolbarHeight - (buttonList[buttInx].y+17) +
- (wPos_t)(mainD.size.y/mainD.scale*mainD.dpi) + 30;
- MovePlaybackCursor( &mainD, cmdX, cmdY );
- if ( playbackTimer == 0 ) {
- wButtonSetBusy( (wButton_p)buttonList[buttInx].control, TRUE );
+ if (buttInx < 0 || buttInx >= buttonCnt)
+ return;
+ if (buttonList[buttInx].control == NULL)
+ return;
+ cmdX = buttonList[buttInx].x + 17;
+ cmdY = toolbarHeight - (buttonList[buttInx].y + 17)
+ + (wPos_t) (mainD.size.y / mainD.scale * mainD.dpi) + 30;
+
+ MovePlaybackCursor(&mainD, cmdX, cmdY,TRUE,buttonList[buttInx].control);
+ if (playbackTimer == 0) {
+ wButtonSetBusy((wButton_p) buttonList[buttInx].control, TRUE);
wFlush();
- wPause( 500 );
- wButtonSetBusy( (wButton_p)buttonList[buttInx].control, FALSE );
+ wPause(500);
+ wButtonSetBusy((wButton_p) buttonList[buttInx].control, FALSE);
wFlush();
}
}
-
#include "bitmaps/openbutt.xpm"
static char * buttonGroupMenuTitle;
static char * buttonGroupHelpKey;
static char * buttonGroupStickyLabel;
static wMenu_p buttonGroupPopupM;
-EXPORT void ButtonGroupBegin(
- char * menuTitle,
- char * helpKey,
- char * stickyLabel )
-{
+EXPORT void ButtonGroupBegin(char * menuTitle, char * helpKey,
+ char * stickyLabel) {
buttonGroupMenuTitle = menuTitle;
buttonGroupHelpKey = helpKey;
buttonGroupStickyLabel = stickyLabel;
buttonGroupPopupM = NULL;
}
-EXPORT void ButtonGroupEnd( void )
-{
+EXPORT void ButtonGroupEnd(void) {
buttonGroupMenuTitle = NULL;
buttonGroupHelpKey = NULL;
buttonGroupPopupM = NULL;
}
-
-EXPORT wIndex_t AddMenuButton(
- wMenu_p menu,
- procCommand_t command,
- char * helpKey,
- char * nameStr,
- wIcon_p icon,
- int reqLevel,
- long options,
- long acclKey,
- void * context )
-{
+EXPORT wIndex_t AddMenuButton(wMenu_p menu, procCommand_t command,
+ char * helpKey, char * nameStr, wIcon_p icon, int reqLevel,
+ long options, long acclKey, void * context) {
wIndex_t buttInx = -1;
wIndex_t cmdInx;
BOOL_T newButtonGroup = FALSE;
@@ -1509,225 +1633,223 @@ EXPORT wIndex_t AddMenuButton(
static wMenu_p popup1Submenu;
static wMenu_p popup2Submenu;
- if ( icon ) {
- if ( buttonGroupPopupM!=NULL ) {
- buttInx = buttonCnt-2;
+ if (icon) {
+ if (buttonGroupPopupM != NULL) {
+ buttInx = buttonCnt - 2;
} else {
buttInx = buttonCnt;
- AddToolbarButton( helpKey, icon, options, (wButtonCallBack_p)DoCommandB, (void*)(intptr_t)commandCnt );
+ AddToolbarButton(helpKey, icon, options,
+ (wButtonCallBack_p) DoCommandB,
+ (void*) (intptr_t) commandCnt);
buttonList[buttInx].cmdInx = commandCnt;
}
- if ( buttonGroupMenuTitle!=NULL && buttonGroupPopupM==NULL ) {
- if ( openbuttIcon == NULL )
+ if (buttonGroupMenuTitle != NULL && buttonGroupPopupM == NULL) {
+ if (openbuttIcon == NULL)
openbuttIcon = wIconCreatePixMap(openbutt_xpm);
- buttonGroupPopupM = wMenuPopupCreate( mainW, buttonGroupMenuTitle );
- AddToolbarButton( buttonGroupHelpKey, openbuttIcon, IC_ABUT, (wButtonCallBack_p)wMenuPopupShow, (void*)buttonGroupPopupM );
+ buttonGroupPopupM = wMenuPopupCreate(mainW, buttonGroupMenuTitle);
+ AddToolbarButton(buttonGroupHelpKey, openbuttIcon, IC_ABUT,
+ (wButtonCallBack_p) wMenuPopupShow,
+ (void*) buttonGroupPopupM);
newButtonGroup = TRUE;
- commandsSubmenu = wMenuMenuCreate( menu, "", buttonGroupMenuTitle );
- popup1Submenu = wMenuMenuCreate( ((options&IC_POPUP2)?popup1aM:popup1M), "", buttonGroupMenuTitle );
- popup2Submenu = wMenuMenuCreate( ((options&IC_POPUP2)?popup2aM:popup2M), "", buttonGroupMenuTitle );
+ commandsSubmenu = wMenuMenuCreate(menu, "", buttonGroupMenuTitle);
+ if (options & IC_POPUP2) {
+ popup1Submenu = wMenuMenuCreate(popup1aM, "", buttonGroupMenuTitle);
+ popup2Submenu = wMenuMenuCreate(popup2aM, "", buttonGroupMenuTitle);
+ } else if (options & IC_POPUP3) {
+ popup1Submenu= wMenuMenuCreate(popup1mM, "", buttonGroupMenuTitle);
+ popup2Submenu = wMenuMenuCreate(popup2mM, "", buttonGroupMenuTitle);
+
+ } else {
+ popup1Submenu = wMenuMenuCreate(popup1M, "", buttonGroupMenuTitle);
+ popup2Submenu = wMenuMenuCreate(popup2M, "", buttonGroupMenuTitle);
+ }
}
}
- cmdInx = AddCommand( command, helpKey, nameStr, icon, reqLevel, options, acclKey, context );
+ cmdInx = AddCommand(command, helpKey, nameStr, icon, reqLevel, options,
+ acclKey, context);
commandList[cmdInx].buttInx = buttInx;
if (nameStr[0] == '\0')
return cmdInx;
- if (commandList[cmdInx].options&IC_STICKY) {
- if ( buttonGroupPopupM==NULL || newButtonGroup ) {
- if ( stickyCnt > 32 )
- AbortProg( "stickyCnt>32" );
+ if (commandList[cmdInx].options & IC_STICKY) {
+ if (buttonGroupPopupM == NULL || newButtonGroup) {
+ if (stickyCnt > 32)
+ AbortProg("stickyCnt>32");
stickyCnt++;
}
- if ( buttonGroupPopupM==NULL) {
- stickyLabels[stickyCnt-1] = nameStr;
+ if (buttonGroupPopupM == NULL) {
+ stickyLabels[stickyCnt - 1] = nameStr;
} else {
- stickyLabels[stickyCnt-1] = buttonGroupStickyLabel;
+ stickyLabels[stickyCnt - 1] = buttonGroupStickyLabel;
}
stickyLabels[stickyCnt] = NULL;
- commandList[cmdInx].stickyMask = 1L<<(stickyCnt-1);
+ long stickyMask = 1L<<(stickyCnt-1);
+ commandList[cmdInx].stickyMask = stickyMask;
+ if ( ( commandList[cmdInx].options & IC_INITNOTSTICKY ) == 0 )
+ stickySet |= stickyMask;
}
- if ( buttonGroupPopupM ) {
- commandList[cmdInx].menu[0] =
- wMenuPushCreate( buttonGroupPopupM, helpKey, GetBalloonHelpStr(helpKey), 0, DoCommandB, (void*)(intptr_t)cmdInx );
+ if (buttonGroupPopupM) {
+ commandList[cmdInx].menu[0] = wMenuPushCreate(buttonGroupPopupM,
+ helpKey, GetBalloonHelpStr(helpKey), 0, DoCommandB,
+ (void*) (intptr_t) cmdInx);
tm = commandsSubmenu;
p1m = popup1Submenu;
p2m = popup2Submenu;
} else {
tm = menu;
- p1m = (options&IC_POPUP2)?popup1aM:popup1M;
- p2m = (options&IC_POPUP2)?popup2aM:popup2M;
- }
- commandList[cmdInx].menu[1] =
- wMenuPushCreate( tm, helpKey, nameStr, acclKey, DoCommandB, (void*)(intptr_t)cmdInx );
- if ( (options & (IC_POPUP|IC_POPUP2)) ) {
- if ( !(options & IC_SELECTED) ) {
- commandList[cmdInx].menu[2] =
- wMenuPushCreate( p1m, helpKey, nameStr, 0, DoCommandB, (void*)(intptr_t)cmdInx );
+ p1m = (options & IC_POPUP2) ? popup1aM : (options & IC_POPUP3) ? popup1mM : popup1M;
+ p2m = (options & IC_POPUP2) ? popup2aM : (options & IC_POPUP3) ? popup2mM : popup2M;
+ }
+ commandList[cmdInx].menu[1] = wMenuPushCreate(tm, helpKey, nameStr, acclKey,
+ DoCommandB, (void*) (intptr_t) cmdInx);
+ if ((options & (IC_POPUP | IC_POPUP2 | IC_POPUP3))) {
+ if (!(options & IC_SELECTED)) {
+ commandList[cmdInx].menu[2] = wMenuPushCreate(p1m, helpKey, nameStr,
+ 0, DoCommandB, (void*) (intptr_t) cmdInx);
}
- commandList[cmdInx].menu[3] =
- wMenuPushCreate( p2m, helpKey, nameStr, 0, DoCommandB, (void*)(intptr_t)cmdInx );
+ commandList[cmdInx].menu[3] = wMenuPushCreate(p2m, helpKey, nameStr, 0,
+ DoCommandB, (void*) (intptr_t) cmdInx);
}
return cmdInx;
}
-
-EXPORT wIndex_t InitCommand(
- wMenu_p menu,
- procCommand_t command,
- char * nameStr,
- char * bits,
- int reqLevel,
- long options,
- long acclKey )
-{
+EXPORT wIndex_t InitCommand(wMenu_p menu, procCommand_t command, char * nameStr,
+ char * bits, int reqLevel, long options, long acclKey) {
char helpKey[STR_SHORT_SIZE];
wIcon_p icon = NULL;
if (bits)
- icon = wIconCreateBitMap( 16, 16, bits, wDrawColorBlack );
- strcpy( helpKey, "cmd" );
- strcat( helpKey, nameStr );
- return AddMenuButton( menu, command, helpKey, _(nameStr), icon, reqLevel, options, acclKey, NULL );
+ icon = wIconCreateBitMap(16, 16, bits, wDrawColorBlack);
+ strcpy(helpKey, "cmd");
+ strcat(helpKey, nameStr);
+ return AddMenuButton(menu, command, helpKey, _(nameStr), icon, reqLevel,
+ options, acclKey, NULL);
}
/*--------------------------------------------------------------------*/
-EXPORT void PlaybackCommand(
- char * line,
- wIndex_t lineNum )
-{
+EXPORT void PlaybackCommand(char * line, wIndex_t lineNum) {
wIndex_t inx;
wIndex_t buttInx;
int len1, len2;
- len1 = strlen(line+8);
- for (inx=0;inx<commandCnt;inx++) {
- len2 = strlen(commandList[inx].helpKey+3);
- if (len1 == len2 && strncmp( line+8, commandList[inx].helpKey+3, len2 ) == 0) {
+ len1 = strlen(line + 8);
+ for (inx = 0; inx < commandCnt; inx++) {
+ len2 = strlen(commandList[inx].helpKey + 3);
+ if (len1 == len2
+ && strncmp(line + 8, commandList[inx].helpKey + 3, len2) == 0) {
break;
}
}
if (inx >= commandCnt) {
- fprintf(stderr, "Unknown playback COMMAND command %d : %s\n",
- lineNum, line );
+ fprintf(stderr, "Unknown playback COMMAND command %d : %s\n", lineNum,
+ line);
} else {
wPos_t cmdX, cmdY;
- if ((buttInx=commandList[inx].buttInx)>=0) {
- cmdX = buttonList[buttInx].x+17;
- cmdY = toolbarHeight - (buttonList[buttInx].y+17) +
- (wPos_t)(mainD.size.y/mainD.scale*mainD.dpi) + 30;
- MovePlaybackCursor( &mainD, cmdX, cmdY );
+ if ((buttInx = commandList[inx].buttInx) >= 0) {
+ cmdX = buttonList[buttInx].x + 17;
+ cmdY = toolbarHeight - (buttonList[buttInx].y + 17)
+ + (wPos_t) (mainD.size.y / mainD.scale * mainD.dpi) + 30;
+ MovePlaybackCursor(&mainD, cmdX, cmdY,TRUE,buttonList[buttInx].control);
}
- if (strcmp( line+8, "Undo") == 0) {
- if (buttInx>0 && playbackTimer == 0) {
- wButtonSetBusy( (wButton_p)buttonList[buttInx].control, TRUE );
+ if (strcmp(line + 8, "Undo") == 0) {
+ if (buttInx > 0 && playbackTimer == 0) {
+ wButtonSetBusy((wButton_p) buttonList[buttInx].control, TRUE);
wFlush();
- wPause( 500 );
- wButtonSetBusy( (wButton_p)buttonList[buttInx].control, FALSE );
+ wPause(500);
+ wButtonSetBusy((wButton_p) buttonList[buttInx].control, FALSE);
wFlush();
}
UndoUndo();
- } else if (strcmp( line+8, "Redo") == 0) {
- if (buttInx>=0 && playbackTimer == 0) {
- wButtonSetBusy( (wButton_p)buttonList[buttInx].control, TRUE );
+ } else if (strcmp(line + 8, "Redo") == 0) {
+ if (buttInx >= 0 && playbackTimer == 0) {
+ wButtonSetBusy((wButton_p) buttonList[buttInx].control, TRUE);
wFlush();
- wPause( 500 );
- wButtonSetBusy( (wButton_p)buttonList[buttInx].control, FALSE );
+ wPause(500);
+ wButtonSetBusy((wButton_p) buttonList[buttInx].control, FALSE);
wFlush();
}
UndoRedo();
} else {
- if ( buttInx>=0 &&
- playbackTimer == 0 ) {
- wButtonSetBusy( (wButton_p)buttonList[buttInx].control, TRUE );
+ if (buttInx >= 0 && playbackTimer == 0) {
+ wButtonSetBusy((wButton_p) buttonList[buttInx].control, TRUE);
wFlush();
- wPause( 500 );
- wButtonSetBusy( (wButton_p)buttonList[buttInx].control, FALSE );
+ wPause(500);
+ wButtonSetBusy((wButton_p) buttonList[buttInx].control, FALSE);
wFlush();
}
- DoCommandB( (void*)(intptr_t)inx );
+ DoCommandB((void*) (intptr_t) inx);
}
}
}
-
/*--------------------------------------------------------------------*/
typedef struct {
- char * label;
- wMenu_p menu;
- } menuTrace_t, *menuTrace_p;
+ char * label;
+ wMenu_p menu;
+} menuTrace_t, *menuTrace_p;
static dynArr_t menuTrace_da;
#define menuTrace(N) DYNARR_N( menuTrace_t, menuTrace_da, N )
-
-static void DoMenuTrace(
- wMenu_p menu,
- const char * label,
- void * data )
-{
+static void DoMenuTrace(wMenu_p menu, const char * label, void * data) {
/*printf( "MENUTRACE: %s/%s\n", (char*)data, label );*/
if (recordF) {
- fprintf( recordF, "MOUSE 1 %0.3f %0.3f\n", oldMarker.x, oldMarker.y );
- fprintf( recordF, "MENU %0.3f %0.3f \"%s\" \"%s\"\n", oldMarker.x, oldMarker.y, (char*)data, label );
+ fprintf(recordF, "MOUSE 1 %0.3f %0.3f\n", oldMarker.x, oldMarker.y);
+ fprintf(recordF, "MENU %0.3f %0.3f \"%s\" \"%s\"\n", oldMarker.x,
+ oldMarker.y, (char*) data, label);
}
}
-
-EXPORT wMenu_p MenuRegister( char * label )
-{
+EXPORT wMenu_p MenuRegister(char * label) {
wMenu_p m;
menuTrace_p mt;
- m = wMenuPopupCreate( mainW, label );
- DYNARR_APPEND( menuTrace_t, menuTrace_da, 10 );
- mt = &menuTrace( menuTrace_da.cnt-1 );
+ m = wMenuPopupCreate(mainW, label);
+ DYNARR_APPEND(menuTrace_t, menuTrace_da, 10);
+ mt = &menuTrace(menuTrace_da.cnt - 1);
mt->label = strdup(label);
mt->menu = m;
- wMenuSetTraceCallBack( m, DoMenuTrace, mt->label );
+ wMenuSetTraceCallBack(m, DoMenuTrace, mt->label);
return m;
}
-
-void MenuPlayback( char * line )
-{
- char * menuName, * itemName;
+void MenuPlayback(char * line) {
+ char * menuName, *itemName;
coOrd pos;
wPos_t x, y;
menuTrace_p mt;
- if (!GetArgs( line, "pqq", &pos, &menuName, &itemName ))
+ if (!GetArgs(line, "pqq", &pos, &menuName, &itemName))
return;
- for ( mt=&menuTrace(0); mt<&menuTrace(menuTrace_da.cnt); mt++ ) {
- if ( strcmp( mt->label, menuName ) == 0 ) {
- mainD.CoOrd2Pix( &mainD, pos, &x, &y );
- MovePlaybackCursor( &mainD, x, y );
+ for (mt = &menuTrace(0); mt < &menuTrace(menuTrace_da.cnt); mt++) {
+ if (strcmp(mt->label, menuName) == 0) {
+ mainD.CoOrd2Pix(&mainD, pos, &x, &y);
+ MovePlaybackCursor(&mainD, x, y, FALSE, NULL);
oldMarker = cmdMenuPos = pos;
- wMenuAction( mt->menu, _(itemName) );
+ wMenuAction(mt->menu, _(itemName));
return;
}
}
- AbortProg( "menuPlayback: %s not found", menuName );
+ AbortProg("menuPlayback: %s not found", menuName);
}
/*--------------------------------------------------------------------*/
-
static wWin_p stickyW;
-static void StickyOk( void * );
-static paramData_t stickyPLs[] = {
- { PD_TOGGLE, &stickySet, "set", 0, stickyLabels } };
-static paramGroup_t stickyPG = { "sticky", PGO_RECORD, stickyPLs, sizeof stickyPLs/sizeof stickyPLs[0] };
-
+static void StickyOk(void *);
+static paramData_t stickyPLs[] = { { PD_TOGGLE, &stickySet, "set", 0,
+ stickyLabels } };
+static paramGroup_t stickyPG = { "sticky", PGO_RECORD, stickyPLs,
+ sizeof stickyPLs / sizeof stickyPLs[0] };
-static void StickyOk( void * junk )
-{
- wHide( stickyW );
+static void StickyOk(void * junk) {
+ wHide(stickyW);
}
-static void DoSticky( void )
-{
- if ( !stickyW )
- stickyW = ParamCreateDialog( &stickyPG, MakeWindowTitle(_("Sticky Commands")), _("Ok"), StickyOk, NULL, TRUE, NULL, 0, NULL );
- ParamLoadControls( &stickyPG );
- wShow( stickyW );
+static void DoSticky(void) {
+ if (!stickyW)
+ stickyW = ParamCreateDialog(&stickyPG,
+ MakeWindowTitle(_("Sticky Commands")), _("Ok"), StickyOk, wHide,
+ TRUE, NULL, 0, NULL);
+ ParamLoadControls(&stickyPG);
+ wShow(stickyW);
}
/*--------------------------------------------------------------------*/
@@ -1737,43 +1859,21 @@ static void DoSticky( void )
* specified in the following array.
* Note: text and choices must be given in the same order.
*/
-static char *AllToolbarLabels[] = {
- N_("File Buttons"),
- N_("Zoom Buttons"),
- N_("Undo Buttons"),
- N_("Easement Button"),
- N_("SnapGrid Buttons"),
- N_("Create Track Buttons"),
- N_("Layout Control Elements"),
- N_("Modify Track Buttons"),
- N_("Properties/Select"),
- N_("Track Group Buttons"),
- N_("Train Group Buttons"),
- N_("Create Misc Buttons"),
- N_("Ruler Button"),
- N_("Layer Buttons"),
- N_("Hot Bar"),
- NULL };
-static long AllToolbarMasks[] = {
- 1<<BG_FILE,
- 1<<BG_ZOOM,
- 1<<BG_UNDO,
- 1<<BG_EASE,
- 1<<BG_SNAP,
- 1<<BG_TRKCRT,
- 1<<BG_CONTROL,
- 1<<BG_TRKMOD,
- 1<<BG_SELECT,
- 1<<BG_TRKGRP,
- 1<<BG_TRAIN,
- 1<<BG_MISCCRT,
- 1<<BG_RULER,
- 1<<BG_LAYER,
- 1<<BG_HOTBAR};
-
-static void ToolbarAction( wBool_t set, void * data )
-{
- long mask = (long)data;
+static char *AllToolbarLabels[] = { N_("File Buttons"), N_("Import/Export Buttons"), N_("Zoom Buttons"), N_(
+ "Undo Buttons"), N_("Easement Button"), N_("SnapGrid Buttons"), N_(
+ "Create Track Buttons"), N_("Layout Control Elements"), N_(
+ "Modify Track Buttons"), N_("Properties/Select"), N_(
+ "Track Group Buttons"), N_("Train Group Buttons"), N_(
+ "Create Misc Buttons"), N_("Ruler Button"), N_("Layer Buttons"), N_(
+ "Hot Bar"),
+NULL };
+static long AllToolbarMasks[] = { 1 << BG_FILE, 1<< BG_EXPORTIMPORT, 1 << BG_ZOOM, 1 << BG_UNDO, 1
+ << BG_EASE, 1 << BG_SNAP, 1 << BG_TRKCRT, 1 << BG_CONTROL, 1
+ << BG_TRKMOD, 1 << BG_SELECT, 1 << BG_TRKGRP, 1 << BG_TRAIN, 1
+ << BG_MISCCRT, 1 << BG_RULER, 1 << BG_LAYER, 1 << BG_HOTBAR };
+
+static void ToolbarAction(wBool_t set, void * data) {
+ long mask = (long) data;
if (set)
toolbarSet |= mask;
else
@@ -1781,7 +1881,8 @@ static void ToolbarAction( wBool_t set, void * data )
wPrefSetInteger( "misc", "toolbarset", toolbarSet );
MainProc( mainW, wResize_e, NULL, NULL );
if (recordF)
- fprintf( recordF, "PARAMETER %s %s %ld", "misc", "toolbarset", toolbarSet );
+ fprintf(recordF, "PARAMETER %s %s %ld", "misc", "toolbarset",
+ toolbarSet);
}
/**
@@ -1791,19 +1892,19 @@ static void ToolbarAction( wBool_t set, void * data )
* \param toolbarM IN menu to which the toogles will be added
*/
-static void CreateToolbarM( wMenu_p toolbarM )
-{
+static void CreateToolbarM(wMenu_p toolbarM) {
int inx, cnt;
long *masks;
char **labels;
wBool_t set;
- cnt = sizeof(AllToolbarMasks)/sizeof(AllToolbarMasks[0]);
+ cnt = sizeof(AllToolbarMasks) / sizeof(AllToolbarMasks[0]);
masks = AllToolbarMasks;
labels = AllToolbarLabels;
- for (inx=0; inx<cnt; inx++,masks++,labels++) {
- set = ( toolbarSet & *masks ) != 0;
- wMenuToggleCreate( toolbarM, "toolbarM", _(*labels), 0, set, ToolbarAction, (void*)*masks );
+ for (inx = 0; inx < cnt; inx++, masks++, labels++) {
+ set = (toolbarSet & *masks) != 0;
+ wMenuToggleCreate(toolbarM, "toolbarM", _(*labels), 0, set,
+ ToolbarAction, (void*) *masks);
}
}
@@ -1812,157 +1913,148 @@ static void CreateToolbarM( wMenu_p toolbarM )
static wWin_p addElevW;
#define addElevF (wFloat_p)addElevPD.control
EXPORT DIST_T addElevValueV;
-static void DoAddElev( void * );
+static void DoAddElev(void *);
static paramFloatRange_t rn1000_1000 = { -1000.0, 1000.0 };
-static paramData_t addElevPLs[] = {
- { PD_FLOAT, &addElevValueV, "value", PDO_DIM, &rn1000_1000, NULL, 0 } };
-static paramGroup_t addElevPG = { "addElev", 0, addElevPLs, sizeof addElevPLs/sizeof addElevPLs[0] };
-
+static paramData_t addElevPLs[] = { { PD_FLOAT, &addElevValueV, "value",
+ PDO_DIM, &rn1000_1000, NULL, 0 } };
+static paramGroup_t addElevPG = { "addElev", 0, addElevPLs, sizeof addElevPLs
+ / sizeof addElevPLs[0] };
-static void DoAddElev( void * junk )
-{
- ParamLoadData( &addElevPG );
- AddElevations( addElevValueV );
- wHide( addElevW );
+static void DoAddElev(void * junk) {
+ ParamLoadData(&addElevPG);
+ AddElevations(addElevValueV);
+ wHide(addElevW);
}
-
-static void ShowAddElevations( void )
-{
- if ( selectedTrackCount <= 0 ) {
- ErrorMessage( MSG_NO_SELECTED_TRK );
+static void ShowAddElevations(void) {
+ if (selectedTrackCount <= 0) {
+ ErrorMessage(MSG_NO_SELECTED_TRK);
return;
}
if (addElevW == NULL)
- addElevW = ParamCreateDialog( &addElevPG, MakeWindowTitle(_("Change Elevations")), _("Change"), DoAddElev, wHide, FALSE, NULL, 0, NULL );
- wShow( addElevW );
+ addElevW = ParamCreateDialog(&addElevPG,
+ MakeWindowTitle(_("Change Elevations")), _("Change"), DoAddElev,
+ wHide, FALSE, NULL, 0, NULL);
+ wShow(addElevW);
}
/*--------------------------------------------------------------------*/
static wWin_p rotateW;
static wWin_p moveW;
-static long rotateValue;
+static double rotateValue;
static coOrd moveValue;
static rotateDialogCallBack_t rotateDialogCallBack;
static moveDialogCallBack_t moveDialogCallBack;
-static void RotateEnterOk( void * );
-
-static paramIntegerRange_t rn360_360 = { -360, 360, 80 };
-static paramData_t rotatePLs[] = {
- { PD_LONG, &rotateValue, "rotate", PDO_ANGLE, &rn360_360, N_("Angle:") } };
-static paramGroup_t rotatePG = { "rotate", 0, rotatePLs, sizeof rotatePLs/sizeof rotatePLs[0] };
-
-static paramFloatRange_t r_1000_1000 = { -1000.0, 1000.0, 80 };
-static void MoveEnterOk( void * );
-static paramData_t movePLs[] = {
- { PD_FLOAT, &moveValue.x, "moveX", PDO_DIM, &r_1000_1000, N_("Move X:") },
- { PD_FLOAT, &moveValue.y, "moveY", PDO_DIM, &r_1000_1000, N_("Move Y:") } };
-static paramGroup_t movePG = { "move", 0, movePLs, sizeof movePLs/sizeof movePLs[0] };
-
-
-EXPORT void StartRotateDialog( rotateDialogCallBack_t func )
-{
- if ( rotateW == NULL )
- rotateW = ParamCreateDialog( &rotatePG, MakeWindowTitle(_("Rotate")), _("Ok"), RotateEnterOk, wHide, FALSE, NULL, 0, NULL );
- ParamLoadControls( &rotatePG );
+static void RotateEnterOk(void *);
+
+static paramFloatRange_t rn360_360 = { -360.0, 360.0, 80.0 };
+static paramData_t rotatePLs[] = { { PD_FLOAT, &rotateValue, "rotate", PDO_ANGLE,
+ &rn360_360, N_("Angle:") } };
+static paramGroup_t rotatePG = { "rotate", 0, rotatePLs, sizeof rotatePLs
+ / sizeof rotatePLs[0] };
+
+static paramFloatRange_t r_1000_1000 = { -1000.0, 1000.0, 80 };
+static void MoveEnterOk(void *);
+static paramData_t movePLs[] = { { PD_FLOAT, &moveValue.x, "moveX", PDO_DIM,
+ &r_1000_1000, N_("Move X:") }, { PD_FLOAT, &moveValue.y, "moveY",
+ PDO_DIM, &r_1000_1000, N_("Move Y:") } };
+static paramGroup_t movePG = { "move", 0, movePLs, sizeof movePLs
+ / sizeof movePLs[0] };
+
+EXPORT void StartRotateDialog(rotateDialogCallBack_t func) {
+ if (rotateW == NULL)
+ rotateW = ParamCreateDialog(&rotatePG, MakeWindowTitle(_("Rotate")),
+ _("Ok"), RotateEnterOk, wHide, FALSE, NULL, 0, NULL);
+ ParamLoadControls(&rotatePG);
rotateDialogCallBack = func;
- wShow( rotateW );
+ wShow(rotateW);
}
-EXPORT void StartMoveDialog( moveDialogCallBack_t func )
-{
- if ( moveW == NULL )
- moveW = ParamCreateDialog( &movePG, MakeWindowTitle(_("Move")), _("Ok"), MoveEnterOk, wHide, FALSE, NULL, 0, NULL );
- ParamLoadControls( &movePG );
+EXPORT void StartMoveDialog(moveDialogCallBack_t func) {
+ if (moveW == NULL)
+ moveW = ParamCreateDialog(&movePG, MakeWindowTitle(_("Move")), _("Ok"),
+ MoveEnterOk, wHide, FALSE, NULL, 0, NULL);
+ ParamLoadControls(&movePG);
moveDialogCallBack = func;
moveValue = zero;
- wShow( moveW );
+ wShow(moveW);
}
-static void MoveEnterOk( void * junk )
-{
- ParamLoadData( &movePG );
- moveDialogCallBack( (void*) &moveValue );
- wHide( moveW );
+static void MoveEnterOk(void * junk) {
+ ParamLoadData(&movePG);
+ moveDialogCallBack((void*) &moveValue);
+ wHide(moveW);
}
-static void RotateEnterOk( void * junk )
-{
- ParamLoadData( &rotatePG );
- if (angleSystem==ANGLE_POLAR)
- rotateDialogCallBack( (void*)rotateValue );
+static void RotateEnterOk(void * junk) {
+ ParamLoadData(&rotatePG);
+ if (angleSystem == ANGLE_POLAR)
+ rotateDialogCallBack((void*) (long)(rotateValue*1000));
else
- rotateDialogCallBack( (void*)-rotateValue );
- wHide( rotateW );
+ rotateDialogCallBack((void*) (long)(-rotateValue*1000));
+ wHide(rotateW);
}
-
-static void RotateDialogInit( void )
-{
- ParamRegister( &rotatePG );
+static void RotateDialogInit(void) {
+ ParamRegister(&rotatePG);
}
-static void MoveDialogInit (void)
-{
- ParamRegister( &movePG );
+static void MoveDialogInit(void) {
+ ParamRegister(&movePG);
}
-
-EXPORT void AddMoveMenu(
- wMenu_p m,
- moveDialogCallBack_t func ) {
- wMenuPushCreate( m, "", _("Enter Move ..."), 0, (wMenuCallBack_p)StartMoveDialog, (void*)func );
+EXPORT void AddMoveMenu(wMenu_p m, moveDialogCallBack_t func) {
+ wMenuPushCreate(m, "", _("Enter Move ..."), 0,
+ (wMenuCallBack_p) StartMoveDialog, (void*) func);
}
-EXPORT void AddRotateMenu(
- wMenu_p m,
- rotateDialogCallBack_t func )
-{
- wMenuPushCreate( m, "", _("180 "), 0, func, (void*)180 );
- wMenuPushCreate( m, "", _("90 CW"), 0, func, (void*)(long)(90) );
- wMenuPushCreate( m, "", _("45 CW"), 0, func, (void*)(long)(45) );
- wMenuPushCreate( m, "", _("30 CW"), 0, func, (void*)(long)(30) );
- wMenuPushCreate( m, "", _("15 CW"), 0, func, (void*)(long)(15) );
- wMenuPushCreate( m, "", _("15 CCW"), 0, func, (void*)(long)(360-15) );
- wMenuPushCreate( m, "", _("30 CCW"), 0, func, (void*)(long)(360-30) );
- wMenuPushCreate( m, "", _("45 CCW"), 0, func, (void*)(long)(360-45) );
- wMenuPushCreate( m, "", _("90 CCW"), 0, func, (void*)(long)(360-90) );
- wMenuPushCreate( m, "", _("Enter Angle ..."), 0, (wMenuCallBack_p)StartRotateDialog, (void*)func );
+//All values multipled by 100 to support decimal points from PD_FLOAT
+EXPORT void AddRotateMenu(wMenu_p m, rotateDialogCallBack_t func) {
+ wMenuPushCreate(m, "", _("180 "), 0, func, (void*) 180000);
+ wMenuPushCreate(m, "", _("90 CW"), 0, func, (void*) (long) (90000));
+ wMenuPushCreate(m, "", _("45 CW"), 0, func, (void*) (long) (45000));
+ wMenuPushCreate(m, "", _("30 CW"), 0, func, (void*) (long) (30000));
+ wMenuPushCreate(m, "", _("15 CW"), 0, func, (void*) (long) (15000));
+ wMenuPushCreate(m, "", _("15 CCW"), 0, func, (void*) (long) (360000 - 15000));
+ wMenuPushCreate(m, "", _("30 CCW"), 0, func, (void*) (long) (360000 - 30000));
+ wMenuPushCreate(m, "", _("45 CCW"), 0, func, (void*) (long) (360000 - 45000));
+ wMenuPushCreate(m, "", _("90 CCW"), 0, func, (void*) (long) (360000 - 90000));
+ wMenuPushCreate(m, "", _("Enter Angle ..."), 0,
+ (wMenuCallBack_p) StartRotateDialog, (void*) func);
}
-
+
/*****************************************************************************
*
* INITIALIZATON
*
*/
-
static wWin_p debugW;
static int debugCnt = 0;
static paramIntegerRange_t r0_100 = { 0, 100, 80 };
-static void DebugOk( void * junk );
+static void DebugOk(void * junk);
static paramData_t debugPLs[30];
static long debug_values[30];
static int debug_index[30];
+
static paramGroup_t debugPG = { "debug", 0, debugPLs, 0 };
-static void DebugOk( void * junk )
-{
+static void DebugOk(void * junk) {
for (int i = 0; i<debugCnt;i++) {
- logTable(debug_index[i]).level = debug_values[i];
+ logTable(debug_index[i]).level = debug_values[i];
}
- wHide( debugW );
+ wHide(debugW);
}
-static void CreateDebugW( void )
-{
+static void CreateDebugW(void) {
debugPG.paramCnt = debugCnt;
- ParamRegister( &debugPG );
- debugW = ParamCreateDialog( &debugPG, MakeWindowTitle(_("Debug")), _("Ok"), DebugOk, NULL, FALSE, NULL, 0, NULL );
+ ParamRegister(&debugPG);
+ debugW = ParamCreateDialog(&debugPG, MakeWindowTitle(_("Debug")), _("Ok"),
+ DebugOk, wHide, FALSE, NULL, 0, NULL);
wHide(debugW);
}
@@ -1995,108 +2087,77 @@ EXPORT void DebugInit(void) {
wShow(debugW);
}
-EXPORT void InitDebug(
- char * label,
- long * valueP)
-{
- if ( debugCnt >= sizeof debugPLs/sizeof debugPLs[0] )
- AbortProg( "Too many debug flags" );
- memset( &debugPLs[debugCnt], 0, sizeof debugPLs[debugCnt] );
+
+EXPORT void InitDebug(char * label, long * valueP) {
+ if (debugCnt >= sizeof debugPLs / sizeof debugPLs[0])
+ AbortProg("Too many debug flags");
+ memset(&debugPLs[debugCnt], 0, sizeof debugPLs[debugCnt]);
debugPLs[debugCnt].type = PD_LONG;
debugPLs[debugCnt].valueP = valueP;
debugPLs[debugCnt].nameStr = label;
debugPLs[debugCnt].winData = &r0_100;
debugPLs[debugCnt].winLabel = label;
debugCnt++;
-
}
+void RecomputeElevations(void);
-void RecomputeElevations( void );
-
-static void MiscMenuItemCreate(
- wMenu_p m1,
- wMenu_p m2,
- char * name,
- char * label,
- long acclKey,
- void * func,
- long option,
- void * context )
-{
+static void MiscMenuItemCreate(wMenu_p m1, wMenu_p m2, char * name,
+ char * label, long acclKey, void * func, long option, void * context) {
wMenuPush_p mp;
- mp = wMenuPushCreate( m1, name, label, acclKey, ParamMenuPush, &menuPLs[menuPG.paramCnt] );
- if ( m2 )
- wMenuPushCreate( m2, name, label, acclKey, ParamMenuPush, &menuPLs[menuPG.paramCnt] );
- menuPLs[menuPG.paramCnt].control = (wControl_p)mp;
+ mp = wMenuPushCreate(m1, name, label, acclKey, ParamMenuPush,
+ &menuPLs[menuPG.paramCnt]);
+ if (m2)
+ wMenuPushCreate(m2, name, label, acclKey, ParamMenuPush,
+ &menuPLs[menuPG.paramCnt]);
+ menuPLs[menuPG.paramCnt].control = (wControl_p) mp;
menuPLs[menuPG.paramCnt].type = PD_MENUITEM;
menuPLs[menuPG.paramCnt].valueP = func;
menuPLs[menuPG.paramCnt].nameStr = name;
menuPLs[menuPG.paramCnt].option = option;
menuPLs[menuPG.paramCnt].context = context;
- if ( name ) GetBalloonHelpStr( name );
+ if (name)
+ GetBalloonHelpStr(name);
menuPG.paramCnt++;
}
+static char * accelKeyNames[] = { "Del", "Ins", "Home", "End", "Pgup", "Pgdn",
+ "Up", "Down", "Right", "Left", "Back", "F1", "F2", "F3", "F4", "F5",
+ "F6", "F7", "F8", "F9", "F10", "F11", "F12", "NumpadAdd", "NumpadSub" };
-static char * accelKeyNames[] = {
- "Del",
- "Ins",
- "Home",
- "End",
- "Pgup",
- "Pgdn",
- "Up",
- "Down",
- "Right",
- "Left",
- "Back",
- "F1",
- "F2",
- "F3",
- "F4",
- "F5",
- "F6",
- "F7",
- "F8",
- "F9",
- "F10",
- "F11",
- "F12",
- "NumpadAdd",
- "NumpadSub"};
-
-static void SetAccelKey(
- char * prefName,
- wAccelKey_e key,
- int mode,
- wAccelKeyCallBack_p func,
- void * context )
-{
- int mode1 = 0;
- int inx;
- const char * prefValue = wPrefGetString( "accelKey", prefName );
- if ( prefValue != NULL ) {
- while ( prefValue[1] == '-' ) {
- switch ( prefValue[0] ) {
- case 'S': mode1 |= WKEY_SHIFT; break;
- case 'C': mode1 |= WKEY_CTRL; break;
- case 'A': mode1 |= WKEY_ALT; break;
- default:
- ;
- }
- prefValue += 2;
- }
- for ( inx=0; inx<sizeof accelKeyNames/sizeof accelKeyNames[0]; inx++ ) {
- if ( strcmp( prefValue, accelKeyNames[inx] ) == 0 ) {
- key = inx+1;
- mode = mode1;
- break;
- }
- }
- }
- wAttachAccelKey( key, mode, func, context );
+static void SetAccelKey(char * prefName, wAccelKey_e key, int mode,
+ wAccelKeyCallBack_p func, void * context) {
+ int mode1 = 0;
+ int inx;
+ const char * prefValue = wPrefGetString("accelKey", prefName);
+ if (prefValue != NULL) {
+ while (prefValue[1] == '-') {
+ switch (prefValue[0]) {
+ case 'S':
+ mode1 |= WKEY_SHIFT;
+ break;
+ case 'C':
+ mode1 |= WKEY_CTRL;
+ break;
+ case 'A':
+ mode1 |= WKEY_ALT;
+ break;
+ default:
+ ;
+ }
+ prefValue += 2;
+ }
+ for (inx = 0; inx < sizeof accelKeyNames / sizeof accelKeyNames[0];
+ inx++) {
+ if (strcmp(prefValue, accelKeyNames[inx]) == 0) {
+ key = inx + 1;
+ mode = mode1;
+ break;
+ }
+ }
+ }
+ wAttachAccelKey(key, mode, func, context);
}
#include "bitmaps/zoomin.xpm"
@@ -2105,130 +2166,231 @@ static void SetAccelKey(
#include "bitmaps/edit-undo.xpm"
#include "bitmaps/edit-redo.xpm"
#include "bitmaps/partlist.xpm"
-#include "bitmaps/export.xpm"
-#include "bitmaps/import.xpm"
+#include "bitmaps/document-export.xpm"
+#include "bitmaps/document-exportdxf.xpm"
+#include "bitmaps/document-import.xpm"
+#include "bitmaps/document-importmod.xpm"
#include "bitmaps/document-new.xpm"
#include "bitmaps/document-save.xpm"
#include "bitmaps/document-open.xpm"
#include "bitmaps/document-print.xpm"
#include "bitmaps/map.xpm"
+#include "bitmaps/magnet.xpm"
-static void CreateMenus( void )
-{
- wMenu_p fileM, editM, viewM, optionM, windowM, macroM, helpM, toolbarM, messageListM, manageM, addM, changeM, drawM;
+static void CreateMenus(void) {
+ wMenu_p fileM, editM, viewM, optionM, windowM, macroM, helpM, toolbarM,
+ messageListM, manageM, addM, changeM, drawM;
wMenu_p zoomM, zoomSubM;
wMenuPush_p zoomInM, zoomOutM;
- fileM = wMenuBarAdd( mainW, "menuFile", _("&File") );
- editM = wMenuBarAdd( mainW, "menuEdit", _("&Edit") );
- viewM = wMenuBarAdd( mainW, "menuView", _("&View") );
- addM = wMenuBarAdd( mainW, "menuAdd", _("&Add") );
- changeM = wMenuBarAdd( mainW, "menuChange", _("&Change") );
- drawM = wMenuBarAdd( mainW, "menuDraw", _("&Draw") );
- manageM = wMenuBarAdd( mainW, "menuManage", _("&Manage") );
- optionM = wMenuBarAdd( mainW, "menuOption", _("&Options") );
- macroM = wMenuBarAdd( mainW, "menuMacro", _("&Macro") );
- windowM = wMenuBarAdd( mainW, "menuWindow", _("&Window") );
- helpM = wMenuBarAdd( mainW, "menuHelp", _("&Help") );
+ fileM = wMenuBarAdd(mainW, "menuFile", _("&File"));
+ editM = wMenuBarAdd(mainW, "menuEdit", _("&Edit"));
+ viewM = wMenuBarAdd(mainW, "menuView", _("&View"));
+ addM = wMenuBarAdd(mainW, "menuAdd", _("&Add"));
+ changeM = wMenuBarAdd(mainW, "menuChange", _("&Change"));
+ drawM = wMenuBarAdd(mainW, "menuDraw", _("&Draw"));
+ manageM = wMenuBarAdd(mainW, "menuManage", _("&Manage"));
+ optionM = wMenuBarAdd(mainW, "menuOption", _("&Options"));
+ macroM = wMenuBarAdd(mainW, "menuMacro", _("&Macro"));
+ windowM = wMenuBarAdd(mainW, "menuWindow", _("&Window"));
+ helpM = wMenuBarAdd(mainW, "menuHelp", _("&Help"));
/*
* POPUP MENUS
*/
-
- popup1M = wMenuPopupCreate( mainW, _("Commands") );
- popup2M = wMenuPopupCreate( mainW, _("Commands") );
- MiscMenuItemCreate( popup1M, popup2M, "cmdUndo", _("Undo"), 0, (void*)(wMenuCallBack_p)UndoUndo, 0, (void *)0 );
- MiscMenuItemCreate( popup1M, popup2M, "cmdRedo", _("Redo"), 0, (void*)(wMenuCallBack_p)UndoRedo, 0, (void *)0 );
- wMenuPushCreate( popup1M, "cmdZoomIn", _("Zoom In"), 0, (wMenuCallBack_p)DoZoomUp, (void*)1 );
- wMenuPushCreate( popup2M, "cmdZoomIn", _("Zoom In"), 0, (wMenuCallBack_p)DoZoomUp, (void*)1 );
- wMenuPushCreate( popup1M, "cmdZoomOut", _("Zoom Out"), 0, (wMenuCallBack_p)DoZoomDown, (void*)1 );
- wMenuPushCreate( popup2M, "cmdZoomOut", _("Zoom Out"), 0, (wMenuCallBack_p)DoZoomDown, (void*)1 );
- MiscMenuItemCreate( popup1M, popup2M, "cmdGridEnable", _("SnapGrid Enable"), 0, (void*)(wMenuCallBack_p)SnapGridEnable, 0, (void *)0 );
- MiscMenuItemCreate( popup1M, popup2M, "cmdGridShow", _("SnapGrid Show"), 0, (void*)(wMenuCallBack_p)SnapGridShow, 0, (void *)0 );
- MiscMenuItemCreate( popup1M, popup2M, "cmdMapShow", _("Show/Hide Map"), 0, (void*)(wMenuCallBack_p)MapWindowToggleShow, 0, (void *)0);
- wMenuSeparatorCreate( popup1M );
- wMenuSeparatorCreate( popup2M );
- MiscMenuItemCreate( popup2M, NULL, "cmdCopy", _("Copy"), 0, (void*)(wMenuCallBack_p)EditCopy, 0, (void *)0 );
- MiscMenuItemCreate( popup1M, popup2M, "cmdPaste", _("Paste"), 0, (void*)(wMenuCallBack_p)EditPaste, 0, (void *)0 );
- MiscMenuItemCreate( popup1M, popup2M, "cmdSelectAll", _("Select All"), 0, (void*)(wMenuCallBack_p)SetAllTrackSelect, 0, (void *)1 );
- MiscMenuItemCreate( popup1M, popup2M, "cmdSelectCurrentLayer", _("Select Current Layer"), 0, (void*)(wMenuCallBack_p)SelectCurrentLayer, 0, (void *)0 );
- MiscMenuItemCreate( popup2M, NULL, "cmdDeselectAll", _("Deselect All"), 0, (void*)(wMenuCallBack_p)SetAllTrackSelect, 0, (void *)0 );
- wMenuPushCreate( popup2M, "cmdMove", _("Move"), 0, (wMenuCallBack_p)DoCommandBIndirect, &moveCmdInx );
- wMenuPushCreate( popup2M, "cmdRotate", _("Rotate"), 0, (wMenuCallBack_p)DoCommandBIndirect, &rotateCmdInx );
- MiscMenuItemCreate( popup2M, NULL, "cmdTunnel", _("Tunnel"), 0, (void*)(wMenuCallBack_p)SelectTunnel, 0, (void *)0 );
- wMenuSeparatorCreate( popup1M );
- wMenuSeparatorCreate( popup2M );
- MiscMenuItemCreate( popup2M, NULL, "cmdDelete", _("Delete"), 0, (void*)(wMenuCallBack_p)SelectDelete, 0, (void *)0 );
- wMenuSeparatorCreate( popup2M );
- popup1aM = wMenuMenuCreate( popup1M, "", _("More") );
- popup2aM = wMenuMenuCreate( popup2M, "", _("More") );
+ /* Select Commands */
+ /* Select All */
+ /* Select All Current */
+
+ /* Common View Commands Menu */
+ /* Zoom In/Out */
+ /* Snap Grid Menu */
+ /* Show/Hide Map */
+ /* Show/Hide Background */
+
+ /* Selected Commands */
+ /*--------------*/
+ /* DeSelect All */
+ /* Select All */
+ /* Select All Current */
+ /*--------------*/
+ /* Quick Move */
+ /* Quick Rotate */
+ /* Quick Align */
+ /*--------------*/
+ /* Move To Current Layer */
+ /* Move/Rotate Cmds */
+ /* Cut/Paste/Delete */
+ /* Group/Un-group Selected */
+ /*----------*/
+ /* Thick/Thin */
+ /* Bridge/Tunnel */
+ /* Ties/NoTies */
+ /*-----------*/
+ /* More Commands */
+
+ popup1M = wMenuPopupCreate(mainW, _("Context Commands"));
+ popup2M = wMenuPopupCreate(mainW, _("Shift Context Commands"));
+ MiscMenuItemCreate(popup1M, popup2M, "cmdUndo", _("Undo"), 0,
+ (void*) (wMenuCallBack_p) UndoUndo, 0, (void *) 0);
+ MiscMenuItemCreate(popup1M, popup2M, "cmdRedo", _("Redo"), 0,
+ (void*) (wMenuCallBack_p) UndoRedo, 0, (void *) 0);
+ /* Zoom */
+ wMenuPushCreate(popup1M, "cmdZoomIn", _("Zoom In"), 0,
+ (wMenuCallBack_p) DoZoomUp, (void*) 1);
+ wMenuPushCreate(popup2M, "cmdZoomIn", _("Zoom In"), 0,
+ (wMenuCallBack_p) DoZoomUp, (void*) 1);
+ wMenuPushCreate(popup1M, "cmdZoomOut", _("Zoom Out"), 0,
+ (wMenuCallBack_p) DoZoomDown, (void*) 1);
+ wMenuPushCreate(popup2M, "cmdZoomOut", _("Zoom Out"), 0,
+ (wMenuCallBack_p) DoZoomDown, (void*) 1);
+ /* Display */
+ MiscMenuItemCreate(popup1M, popup2M, "cmdGridEnable", _("Enable SnapGrid"),
+ 0, (void*) (wMenuCallBack_p) SnapGridEnable, 0, (void *) 0);
+ MiscMenuItemCreate(popup1M, popup2M, "cmdGridShow", _("SnapGrid Show"), 0,
+ (void*) (wMenuCallBack_p) SnapGridShow, 0, (void *) 0);
+ MiscMenuItemCreate(popup1M, popup2M, "cmdMagneticSnap", _(" Enable Magnetic Snap"), 0,
+ (void*) (wMenuCallBack_p) MagneticSnapToggle, 0, (void *) 0);
+ MiscMenuItemCreate(popup1M, popup2M, "cmdMapShow", _("Show/Hide Map"), 0,
+ (void*) (wMenuCallBack_p) MapWindowToggleShow, 0, (void *) 0);
+ MiscMenuItemCreate(popup1M, popup2M, "cmdBackgroundShow", _("Show/Hide Background"), 0,
+ (void*) (wMenuCallBack_p) BackgroundToggleShow, 0, (void *) 0);
+ wMenuSeparatorCreate(popup1M);
+ wMenuSeparatorCreate(popup2M);
+ /* Copy/Paste */
+ MiscMenuItemCreate(popup2M, NULL, "cmdCut", _("Cut"), 0,
+ (void*) (wMenuCallBack_p) EditCut, 0, (void *) 0);
+ MiscMenuItemCreate(popup2M, NULL, "cmdCopy", _("Copy"), 0,
+ (void*) (wMenuCallBack_p) EditCopy, 0, (void *) 0);
+ MiscMenuItemCreate(popup1M, popup2M, "cmdPaste", _("Paste"), 0,
+ (void*) (wMenuCallBack_p) EditPaste, 0, (void *) 0);
+ MiscMenuItemCreate(popup2M, NULL, "cmdClone", _("Clone"), 0,
+ (void*) (wMenuCallBack_p) EditClone, 0, (void *) 0);
+ /*Select*/
+ MiscMenuItemCreate(popup1M, popup2M, "cmdSelectAll", _("Select All"), 0,
+ (void*) (wMenuCallBack_p) SetAllTrackSelect, 0, (void *) 1);
+ MiscMenuItemCreate(popup1M, popup2M, "cmdSelectCurrentLayer",
+ _("Select Current Layer"), 0,
+ (void*) (wMenuCallBack_p) SelectCurrentLayer, 0, (void *) 0);
+ MiscMenuItemCreate(popup2M, NULL, "cmdDeselectAll", _("Deselect All"), 0,
+ (void*) (wMenuCallBack_p) SetAllTrackSelect, 0, (void *) 0);
+ /* Modify */
+ wMenuPushCreate(popup2M, "cmdMove", _("Move"), 0,
+ (wMenuCallBack_p) DoCommandBIndirect, &moveCmdInx);
+ wMenuPushCreate(popup2M, "cmdRotate", _("Rotate"), 0,
+ (wMenuCallBack_p) DoCommandBIndirect, &rotateCmdInx);
+ wMenuSeparatorCreate(popup1M);
+ wMenuSeparatorCreate(popup2M);
+ MiscMenuItemCreate(popup2M, NULL, "cmdDelete", _("Delete"), 0,
+ (void*) (wMenuCallBack_p) SelectDelete, 0, (void *) 0);
+ wMenuSeparatorCreate(popup2M);
+ popup1aM = wMenuMenuCreate(popup1M, "", _("Add..."));
+ popup2aM = wMenuMenuCreate(popup2M, "", _("Add..."));
+ wMenuSeparatorCreate(popup2M);
+ wMenuSeparatorCreate(popup1M);
+ popup1mM = wMenuMenuCreate(popup1M, "", _("More..."));
+ popup2mM = wMenuMenuCreate(popup2M, "", _("More..."));
cmdGroup = BG_FILE;
- AddToolbarButton( "menuFile-clear", wIconCreatePixMap(document_new), IC_MODETRAIN_TOO, (addButtonCallBack_t)DoClear, NULL );
- AddToolbarButton( "menuFile-load", wIconCreatePixMap(document_open), IC_MODETRAIN_TOO, (addButtonCallBack_t)ChkLoad, NULL );
- AddToolbarButton( "menuFile-save", wIconCreatePixMap(document_save), IC_MODETRAIN_TOO, (addButtonCallBack_t)DoSave, NULL );
+ AddToolbarButton("menuFile-clear", wIconCreatePixMap(document_new),
+ IC_MODETRAIN_TOO, (addButtonCallBack_t) DoClear, NULL);
+ AddToolbarButton("menuFile-load", wIconCreatePixMap(document_open),
+ IC_MODETRAIN_TOO, (addButtonCallBack_t) ChkLoad, NULL);
+ AddToolbarButton("menuFile-save", wIconCreatePixMap(document_save),
+ IC_MODETRAIN_TOO, (addButtonCallBack_t) DoSave, NULL);
+
+ InitCmdExport();
cmdGroup = BG_ZOOM;
- zoomUpB = AddToolbarButton( "cmdZoomIn", wIconCreatePixMap(zoomin_xpm), IC_MODETRAIN_TOO,
- (addButtonCallBack_t)DoZoomUp, NULL );
+ zoomUpB = AddToolbarButton("cmdZoomIn", wIconCreatePixMap(zoomin_xpm),
+ IC_MODETRAIN_TOO, (addButtonCallBack_t) DoZoomUp, NULL);
- zoomM = wMenuPopupCreate( mainW, "" );
- AddToolbarButton( "cmdZoom", wIconCreatePixMap(zoom_xpm), IC_MODETRAIN_TOO, (wButtonCallBack_p)wMenuPopupShow, zoomM );
+ zoomM = wMenuPopupCreate(mainW, "");
+ AddToolbarButton("cmdZoom", wIconCreatePixMap(zoom_xpm), IC_MODETRAIN_TOO,
+ (wButtonCallBack_p) wMenuPopupShow, zoomM);
- zoomDownB = AddToolbarButton( "cmdZoomOut", wIconCreatePixMap(zoomout_xpm), IC_MODETRAIN_TOO,
- (addButtonCallBack_t)DoZoomDown, NULL );
+ zoomDownB = AddToolbarButton("cmdZoomOut", wIconCreatePixMap(zoomout_xpm),
+ IC_MODETRAIN_TOO, (addButtonCallBack_t) DoZoomDown, NULL);
cmdGroup = BG_UNDO;
- undoB = AddToolbarButton( "cmdUndo", wIconCreatePixMap(edit_undo), 0, (addButtonCallBack_t)UndoUndo, NULL );
- redoB = AddToolbarButton( "cmdRedo", wIconCreatePixMap(edit_redo), 0, (addButtonCallBack_t)UndoRedo, NULL );
-
- wControlActive( (wControl_p)undoB, FALSE );
- wControlActive( (wControl_p)redoB, FALSE );
+ undoB = AddToolbarButton("cmdUndo", wIconCreatePixMap(edit_undo), 0,
+ (addButtonCallBack_t) UndoUndo, NULL);
+ redoB = AddToolbarButton("cmdRedo", wIconCreatePixMap(edit_redo), 0,
+ (addButtonCallBack_t) UndoRedo, NULL);
+ wControlActive((wControl_p) undoB, FALSE);
+ wControlActive((wControl_p) redoB, FALSE);
/*
* FILE MENU
*/
- MiscMenuItemCreate( fileM, NULL, "menuFile-clear", _("&New ..."), ACCL_NEW, (void*)(wMenuCallBack_p)DoClear, 0, (void *)0 );
- wMenuPushCreate( fileM, "menuFile-load", _("&Open ..."), ACCL_OPEN, (wMenuCallBack_p)ChkLoad, NULL );
- wMenuSeparatorCreate( fileM );
-
- wMenuPushCreate( fileM, "menuFile-save", _("&Save"), ACCL_SAVE, (wMenuCallBack_p)DoSave, NULL );
- wMenuPushCreate( fileM, "menuFile-saveAs", _("Save &As ..."), ACCL_SAVEAS, (wMenuCallBack_p)DoSaveAs, NULL );
- wMenuPushCreate( fileM, "menuFile-revert", _("Revert"), ACCL_REVERT, (wMenuCallBack_p)ChkRevert, NULL );
- wMenuSeparatorCreate( fileM );
- MiscMenuItemCreate( fileM, NULL, "printSetup", _("P&rint Setup ..."), ACCL_PRINTSETUP, (void*)(wMenuCallBack_p)wPrintSetup, 0, (void *)0 );
- printCmdInx = InitCmdPrint( fileM );
- wMenuSeparatorCreate( fileM );
- MiscMenuItemCreate( fileM, NULL, "cmdImport", _("&Import"), ACCL_IMPORT, (void*)(wMenuCallBack_p)DoImport, 0, (void *)0 );
- MiscMenuItemCreate( fileM, NULL, "cmdOutputbitmap", _("Export to &Bitmap"), ACCL_PRINTBM, (void*)(wMenuCallBack_p)OutputBitMapInit(), 0, (void *)0 );
- MiscMenuItemCreate( fileM, NULL, "cmdExport", _("E&xport"), ACCL_EXPORT, (void*)(wMenuCallBack_p)DoExport, IC_SELECTED, (void *)0 );
- MiscMenuItemCreate( fileM, NULL, "cmdExportDXF", _("Export D&XF"), ACCL_EXPORTDXF, (void*)(wMenuCallBack_p)DoExportDXF, IC_SELECTED, (void *)0 );
- wMenuSeparatorCreate( fileM );
-
- MiscMenuItemCreate( fileM, NULL, "cmdPrmfile", _("Parameter &Files ..."), ACCL_PARAMFILES, (void*)ParamFilesInit(), 0, (void *)0 );
- MiscMenuItemCreate( fileM, NULL, "cmdFileNote", _("No&tes ..."), ACCL_NOTES, (void*)(wMenuCallBack_p)DoNote, 0, (void *)0 );
-
- wMenuSeparatorCreate( fileM );
- fileList_ml = wMenuListCreate( fileM, "menuFileList", NUM_FILELIST, ChkFileList );
- wMenuSeparatorCreate( fileM );
- wMenuPushCreate( fileM, "menuFile-quit", _("E&xit"), 0,
- (wMenuCallBack_p)DoQuit, NULL );
+ MiscMenuItemCreate(fileM, NULL, "menuFile-clear", _("&New ..."), ACCL_NEW,
+ (void*) (wMenuCallBack_p) DoClear, 0, (void *) 0);
+ wMenuPushCreate(fileM, "menuFile-load", _("&Open ..."), ACCL_OPEN,
+ (wMenuCallBack_p) ChkLoad, NULL);
+ wMenuSeparatorCreate(fileM);
+
+ wMenuPushCreate(fileM, "menuFile-save", _("&Save"), ACCL_SAVE,
+ (wMenuCallBack_p) DoSave, NULL);
+ wMenuPushCreate(fileM, "menuFile-saveAs", _("Save &As ..."), ACCL_SAVEAS,
+ (wMenuCallBack_p) DoSaveAs, NULL);
+ wMenuPushCreate(fileM, "menuFile-revert", _("Revert"), ACCL_REVERT,
+ (wMenuCallBack_p) ChkRevert, NULL);
+ wMenuSeparatorCreate(fileM);
+ MiscMenuItemCreate(fileM, NULL, "printSetup", _("P&rint Setup ..."),
+ ACCL_PRINTSETUP, (void*) (wMenuCallBack_p) wPrintSetup, 0,
+ (void *) 0);
+ printCmdInx = InitCmdPrint(fileM);
+ wMenuSeparatorCreate(fileM);
+ MiscMenuItemCreate(fileM, NULL, "cmdImport", _("&Import"), ACCL_IMPORT,
+ (void*) (wMenuCallBack_p) DoImport, 0, (void *) 0);
+ MiscMenuItemCreate(fileM, NULL, "cmdImportModule", _("Import &Module"), ACCL_IMPORT_MOD,
+ (void*) (wMenuCallBack_p) DoImport, 0, (void *) 1);
+ MiscMenuItemCreate(fileM, NULL, "cmdOutputbitmap", _("Export to &Bitmap"),
+ ACCL_PRINTBM, (void*) (wMenuCallBack_p) OutputBitMapInit(), 0,
+ (void *) 0);
+ MiscMenuItemCreate(fileM, NULL, "cmdExport", _("E&xport"), ACCL_EXPORT,
+ (void*) (wMenuCallBack_p) DoExport, IC_SELECTED, (void *) 0);
+ MiscMenuItemCreate(fileM, NULL, "cmdExportDXF", _("Export D&XF"),
+ ACCL_EXPORTDXF, (void*) (wMenuCallBack_p) DoExportDXF, IC_SELECTED,
+ (void *) 0);
+ wMenuSeparatorCreate(fileM);
+
+ MiscMenuItemCreate(fileM, NULL, "cmdPrmfile", _("Parameter &Files ..."),
+ ACCL_PARAMFILES, (void*) ParamFilesInit(), 0, (void *) 0);
+ MiscMenuItemCreate(fileM, NULL, "cmdFileNote", _("No&tes ..."), ACCL_NOTES,
+ (void*) (wMenuCallBack_p) DoNote, 0, (void *) 0);
+
+ wMenuSeparatorCreate(fileM);
+ fileList_ml = wMenuListCreate(fileM, "menuFileList", NUM_FILELIST,
+ ChkFileList);
+ wMenuSeparatorCreate(fileM);
+ wMenuPushCreate(fileM, "menuFile-quit", _("E&xit"), 0,
+ (wMenuCallBack_p) DoQuit, NULL);
/*
* EDIT MENU
*/
- MiscMenuItemCreate( editM, NULL, "cmdUndo", _("&Undo"), ACCL_UNDO, (void*)(wMenuCallBack_p)UndoUndo, 0, (void *)0 );
- MiscMenuItemCreate( editM, NULL, "cmdRedo", _("R&edo"), ACCL_REDO, (void*)(wMenuCallBack_p)UndoRedo, 0, (void *)0 );
- wMenuSeparatorCreate( editM );
- MiscMenuItemCreate( editM, NULL, "cmdCut", _("Cu&t"), ACCL_CUT, (void*)(wMenuCallBack_p)EditCut, IC_SELECTED, (void *)0 );
- MiscMenuItemCreate( editM, NULL, "cmdCopy", _("&Copy"), ACCL_COPY, (void*)(wMenuCallBack_p)EditCopy, IC_SELECTED, (void *)0 );
- MiscMenuItemCreate( editM, NULL, "cmdPaste", _("&Paste"), ACCL_PASTE, (void*)(wMenuCallBack_p)EditPaste, 0, (void *)0 );
- MiscMenuItemCreate( editM, NULL, "cmdDelete", _("De&lete"), ACCL_DELETE, (void*)(wMenuCallBack_p)SelectDelete, IC_SELECTED, (void *)0 );
- MiscMenuItemCreate( editM, NULL, "cmdMoveToCurrentLayer", _("Move To Current Layer"), ACCL_MOVCURLAYER, (void*)(wMenuCallBack_p)MoveSelectedTracksToCurrentLayer, IC_SELECTED, (void *)0 );
-
-
+ MiscMenuItemCreate(editM, NULL, "cmdUndo", _("&Undo"), ACCL_UNDO,
+ (void*) (wMenuCallBack_p) UndoUndo, 0, (void *) 0);
+ MiscMenuItemCreate(editM, NULL, "cmdRedo", _("R&edo"), ACCL_REDO,
+ (void*) (wMenuCallBack_p) UndoRedo, 0, (void *) 0);
+ wMenuSeparatorCreate(editM);
+ MiscMenuItemCreate(editM, NULL, "cmdCut", _("Cu&t"), ACCL_CUT,
+ (void*) (wMenuCallBack_p) EditCut, IC_SELECTED, (void *) 0);
+ MiscMenuItemCreate(editM, NULL, "cmdCopy", _("&Copy"), ACCL_COPY,
+ (void*) (wMenuCallBack_p) EditCopy, IC_SELECTED, (void *) 0);
+ MiscMenuItemCreate(editM, NULL, "cmdPaste", _("&Paste"), ACCL_PASTE,
+ (void*) (wMenuCallBack_p) EditPaste, 0, (void *) 0);
+ MiscMenuItemCreate(editM, NULL, "cmdClone", _("C&lone"), ACCL_CLONE,
+ (void*) (wMenuCallBack_p) EditClone, 0, (void *) 0);
+ MiscMenuItemCreate(editM, NULL, "cmdDelete", _("De&lete"), ACCL_DELETE,
+ (void*) (wMenuCallBack_p) SelectDelete, IC_SELECTED, (void *) 0);
+ MiscMenuItemCreate(editM, NULL, "cmdMoveToCurrentLayer",
+ _("Move To Current Layer"), ACCL_MOVCURLAYER,
+ (void*) (wMenuCallBack_p) MoveSelectedTracksToCurrentLayer,
+ IC_SELECTED, (void *) 0);
wMenuSeparatorCreate( editM );
menuPLs[menuPG.paramCnt].context = (void*)1;
MiscMenuItemCreate( editM, NULL, "cmdSelectAll", _("Select &All"), ACCL_SELECTALL, (void*)(wMenuCallBack_p)SetAllTrackSelect, 0, (void *)1 );
@@ -2238,8 +2400,10 @@ static void CreateMenus( void )
MiscMenuItemCreate( editM, NULL, "cmdSelectOrphaned", _("Select Stranded Track"), 0L, (void*)(wMenuCallBack_p)OrphanedTrackSelect, 0, (void *)0 );
wMenuSeparatorCreate( editM );
MiscMenuItemCreate( editM, NULL, "cmdTunnel", _("Tu&nnel"), ACCL_TUNNEL, (void*)(wMenuCallBack_p)SelectTunnel, IC_SELECTED, (void *)0 );
- MiscMenuItemCreate( editM, NULL, "cmdAbove", _("A&bove"), ACCL_ABOVE, (void*)(wMenuCallBack_p)SelectAbove, IC_SELECTED, (void *)0 );
- MiscMenuItemCreate( editM, NULL, "cmdBelow", _("Belo&w"), ACCL_BELOW, (void*)(wMenuCallBack_p)SelectBelow, IC_SELECTED, (void *)0 );
+ MiscMenuItemCreate( editM, NULL, "cmdBridge", _("B&ridge"), ACCL_BRIDGE, (void*)(wMenuCallBack_p)SelectBridge, IC_SELECTED, (void *)0);
+ MiscMenuItemCreate( editM, NULL, "cmdTies", _("Ties/NoTies"), ACCL_TIES, (void*)(wMenuCallBack_p)SelectTies, IC_SELECTED, (void *)0);
+ MiscMenuItemCreate( editM, NULL, "cmdAbove", _("Move to &Front"), ACCL_ABOVE, (void*)(wMenuCallBack_p)SelectAbove, IC_SELECTED, (void *)0 );
+ MiscMenuItemCreate( editM, NULL, "cmdBelow", _("Move to &Back"), ACCL_BELOW, (void*)(wMenuCallBack_p)SelectBelow, IC_SELECTED, (void *)0 );
wMenuSeparatorCreate( editM );
MiscMenuItemCreate( editM, NULL, "cmdWidth0", _("Thin Tracks"), ACCL_THIN, (void*)(wMenuCallBack_p)SelectTrackWidth, IC_SELECTED, (void *)0 );
@@ -2249,199 +2413,273 @@ static void CreateMenus( void )
/*
* VIEW MENU
*/
- zoomInM = wMenuPushCreate( viewM, "menuEdit-zoomIn", _("Zoom &In"), ACCL_ZOOMIN, (wMenuCallBack_p)DoZoomUp, (void*)1 );
- zoomSubM = wMenuMenuCreate( viewM, "menuEdit-zoomTo", _("&Zoom") );
- zoomOutM = wMenuPushCreate( viewM, "menuEdit-zoomOut", _("Zoom &Out"), ACCL_ZOOMOUT, (wMenuCallBack_p)DoZoomDown, (void*)1 );
- wMenuSeparatorCreate( viewM );
+ zoomInM = wMenuPushCreate(viewM, "menuEdit-zoomIn", _("Zoom &In"),
+ ACCL_ZOOMIN, (wMenuCallBack_p) DoZoomUp, (void*) 1);
+ zoomSubM = wMenuMenuCreate(viewM, "menuEdit-zoomTo", _("&Zoom"));
+ zoomOutM = wMenuPushCreate(viewM, "menuEdit-zoomOut", _("Zoom &Out"),
+ ACCL_ZOOMOUT, (wMenuCallBack_p) DoZoomDown, (void*) 1);
+ wMenuSeparatorCreate(viewM);
- InitCmdZoom( zoomM, zoomSubM );
+ InitCmdZoom(zoomM, zoomSubM, NULL, NULL);
/* these menu choices and toolbar buttons are synonymous and should be treated as such */
- wControlLinkedSet( (wControl_p)zoomInM, (wControl_p)zoomUpB );
- wControlLinkedSet( (wControl_p)zoomOutM, (wControl_p)zoomDownB );
-
- wMenuPushCreate( viewM, "menuEdit-redraw", _("&Redraw"), ACCL_REDRAW, (wMenuCallBack_p)MainRedraw, NULL );
- wMenuPushCreate( viewM, "menuEdit-redraw", _("Redraw All"), ACCL_REDRAWALL, (wMenuCallBack_p)DoRedraw, NULL );
- wMenuSeparatorCreate( viewM );
-
- snapGridEnableMI = wMenuToggleCreate( viewM, "cmdGridEnable", _("Enable SnapGrid"), ACCL_SNAPENABLE,
- 0, (wMenuToggleCallBack_p)SnapGridEnable, NULL );
- snapGridShowMI = wMenuToggleCreate( viewM, "cmdGridShow", _("Show SnapGrid"), ACCL_SNAPSHOW,
- FALSE, (wMenuToggleCallBack_p)SnapGridShow, NULL );
- gridCmdInx = InitGrid( viewM );
+ wControlLinkedSet((wControl_p) zoomInM, (wControl_p) zoomUpB);
+ wControlLinkedSet((wControl_p) zoomOutM, (wControl_p) zoomDownB);
+
+ wMenuPushCreate(viewM, "menuEdit-redraw", _("&Redraw"), ACCL_REDRAW,
+ (wMenuCallBack_p) MainRedraw, NULL);
+ wMenuPushCreate(viewM, "menuEdit-redraw", _("Redraw All"), ACCL_REDRAWALL,
+ (wMenuCallBack_p) DoRedraw, NULL);
+ wMenuSeparatorCreate(viewM);
+
+ snapGridEnableMI = wMenuToggleCreate(viewM, "cmdGridEnable",
+ _("Enable SnapGrid"), ACCL_SNAPENABLE, 0,
+ (wMenuToggleCallBack_p) SnapGridEnable, NULL);
+ snapGridShowMI = wMenuToggleCreate(viewM, "cmdGridShow", _("Show SnapGrid"),
+ ACCL_SNAPSHOW,
+ FALSE, (wMenuToggleCallBack_p) SnapGridShow, NULL);
+ gridCmdInx = InitGrid(viewM);
+
+ // visibility toggle for anchors
+ // get the start value
+ long anchors_long;
+ wPrefGetInteger("misc", "anchors", (long *)&anchors_long, 1);
+ magneticSnap = anchors_long ? TRUE : FALSE;
+ magnetsMI = wMenuToggleCreate(viewM, "cmdMagneticSnap", _("Enable Magnetic Snap"),
+ 0, magneticSnap,
+ (wMenuToggleCallBack_p)MagneticSnapToggle, NULL);
// visibility toggle for map window
// get the start value
long mapVisible_long;
- wPrefGetInteger( "misc", "mapVisible", (long *)&mapVisible_long, 1 );
- mapVisible = mapVisible_long?TRUE:FALSE;
- mapShowMI = wMenuToggleCreate( viewM, "cmdMapShow", _("Show/Hide Map"), ACCL_MAPSHOW,
- mapVisible, (wMenuToggleCallBack_p)MapWindowToggleShow, NULL );
+ wPrefGetInteger("misc", "mapVisible", (long *) &mapVisible_long, 1);
+ mapVisible = mapVisible_long ? TRUE : FALSE;
+ mapShowMI = wMenuToggleCreate(viewM, "cmdMapShow", _("Show/Hide Map"),
+ ACCL_MAPSHOW, mapVisible,
+ (wMenuToggleCallBack_p) MapWindowToggleShow, NULL);
- wMenuSeparatorCreate( viewM );
+ wMenuSeparatorCreate(viewM);
- toolbarM = wMenuMenuCreate( viewM, "toolbarM", _("&Tool Bar") );
- CreateToolbarM( toolbarM );
+ toolbarM = wMenuMenuCreate(viewM, "toolbarM", _("&Tool Bar"));
+ CreateToolbarM(toolbarM);
- cmdGroup = BG_EASE;
+ cmdGroup = BG_EASE;
InitCmdEasement();
cmdGroup = BG_SNAP;
InitSnapGridButtons();
- mapShowB = AddToolbarButton("cmdMapShow", wIconCreatePixMap(map_xpm), IC_MODETRAIN_TOO,
- (addButtonCallBack_t)MapWindowToggleShow, NULL);
- wControlLinkedSet((wControl_p)mapShowMI, (wControl_p)mapShowB);
- wButtonSetBusy(mapShowB, (wBool_t)mapVisible);
+ magnetsB = AddToolbarButton("cmdMagneticSnap", wIconCreatePixMap(magnet_xpm),
+ IC_MODETRAIN_TOO, (addButtonCallBack_t) MagneticSnapToggle, NULL);
+ wControlLinkedSet((wControl_p) magnetsMI, (wControl_p) magnetsB);
+ wButtonSetBusy(magnetsB, (wBool_t) magneticSnap);
+
+ mapShowB = AddToolbarButton("cmdMapShow", wIconCreatePixMap(map_xpm),
+ IC_MODETRAIN_TOO, (addButtonCallBack_t) MapWindowToggleShow, NULL);
+ wControlLinkedSet((wControl_p) mapShowMI, (wControl_p) mapShowB);
+ wButtonSetBusy(mapShowB, (wBool_t) mapVisible);
/*
* ADD MENU
*/
- cmdGroup = BG_TRKCRT|BG_BIGGAP;
- InitCmdStraight( addM );
- InitCmdCurve( addM );
- InitCmdParallel( addM );
- InitCmdTurnout( addM );
- InitCmdHandLaidTurnout( addM );
- InitCmdStruct( addM );
- InitCmdHelix( addM );
- InitCmdTurntable( addM );
+ cmdGroup = BG_TRKCRT | BG_BIGGAP;
+ InitCmdStraight(addM);
+ InitCmdCurve(addM);
+ InitCmdParallel(addM);
+ InitCmdTurnout(addM);
+ InitCmdHandLaidTurnout(addM);
+ InitCmdStruct(addM);
+ InitCmdHelix(addM);
+ InitCmdTurntable(addM);
cmdGroup = BG_CONTROL;
- InitCmdBlock( addM );
- InitCmdSwitchMotor( addM );
- InitCmdSignal( addM );
- InitCmdControl( addM );
- InitCmdSensor( addM );
-
+ ButtonGroupBegin( _("Control Element"), "cmdControlElements", _("Control Element") );
+ InitCmdBlock(addM);
+ InitCmdSwitchMotor(addM);
+ InitCmdSignal(addM);
+ InitCmdControl(addM);
+ InitCmdSensor(addM);
+ ButtonGroupEnd();
+
/*
* CHANGE MENU
*/
cmdGroup = BG_SELECT;
- InitCmdDescribe( changeM );
- InitCmdSelect( changeM );
- InitCmdPan( changeM );
- wMenuSeparatorCreate( changeM );
+ InitCmdDescribe(changeM);
+ InitCmdSelect(changeM);
+ InitCmdPan(changeM);
+ wMenuSeparatorCreate(changeM);
cmdGroup = BG_TRKGRP;
- InitCmdMove( changeM );
+ InitCmdMove(changeM);
InitCmdDelete();
InitCmdTunnel();
+ InitCmdBridge();
InitCmdAboveBelow();
cmdGroup = BG_TRKMOD;
if (extraButtons)
- MiscMenuItemCreate( changeM, NULL, "loosen", _("&Loosen Tracks"), ACCL_LOOSEN, (void*)(wMenuCallBack_p)LoosenTracks, IC_SELECTED, (void *)0 );
-
- InitCmdModify( changeM );
- InitCmdJoin( changeM );
- InitCmdPull( changeM );
- InitCmdSplit( changeM );
- InitCmdMoveDescription( changeM );
- wMenuSeparatorCreate( changeM );
-
- MiscMenuItemCreate( changeM, NULL, "cmdAddElevations", _("Raise/Lower Elevations"), ACCL_CHGELEV, (void*)(wMenuCallBack_p)ShowAddElevations, IC_SELECTED, (void *)0 );
- InitCmdElevation( changeM );
- InitCmdProfile( changeM );
-
- MiscMenuItemCreate( changeM, NULL, "cmdClearElevations", _("Clear Elevations"), ACCL_CLRELEV, (void*)(wMenuCallBack_p)ClearElevations, IC_SELECTED, (void *)0 );
- MiscMenuItemCreate( changeM, NULL, "cmdElevation", _("Recompute Elevations"), 0, (void*)(wMenuCallBack_p)RecomputeElevations, 0, (void *)0 );
- ParamRegister( &addElevPG );
-
- wMenuSeparatorCreate( changeM );
- MiscMenuItemCreate( changeM, NULL, "cmdRescale", _("Change Scale"), 0, (void*)(wMenuCallBack_p)DoRescale, IC_SELECTED, (void *)0 );
+ MiscMenuItemCreate(changeM, NULL, "loosen", _("&Loosen Tracks"),
+ ACCL_LOOSEN, (void*) (wMenuCallBack_p) LoosenTracks,
+ IC_SELECTED, (void *) 0);
+
+ InitCmdModify(changeM);
+ InitCmdJoin(changeM);
+ InitCmdPull(changeM);
+ InitCmdSplit(changeM);
+ InitCmdMoveDescription(changeM);
+ wMenuSeparatorCreate(changeM);
+
+ MiscMenuItemCreate(changeM, NULL, "cmdAddElevations",
+ _("Raise/Lower Elevations"), ACCL_CHGELEV,
+ (void*) (wMenuCallBack_p) ShowAddElevations, IC_SELECTED,
+ (void *) 0);
+ InitCmdElevation(changeM);
+ InitCmdProfile(changeM);
+
+ MiscMenuItemCreate(changeM, NULL, "cmdClearElevations",
+ _("Clear Elevations"), ACCL_CLRELEV,
+ (void*) (wMenuCallBack_p) ClearElevations, IC_SELECTED, (void *) 0);
+ MiscMenuItemCreate(changeM, NULL, "cmdElevation", _("Recompute Elevations"),
+ 0, (void*) (wMenuCallBack_p) RecomputeElevations, 0, (void *) 0);
+ ParamRegister(&addElevPG);
+
+ wMenuSeparatorCreate(changeM);
+ MiscMenuItemCreate(changeM, NULL, "cmdRescale", _("Change Scale"), 0,
+ (void*) (wMenuCallBack_p) DoRescale, IC_SELECTED, (void *) 0);
+
+ wMenuSeparatorCreate(changeM);
+
+ InitCmdCornu(changeM);
/*
* DRAW MENU
*/
cmdGroup = BG_MISCCRT;
- InitCmdDraw( drawM );
- InitCmdText( drawM );
- InitCmdNote( drawM );
+ InitCmdDraw(drawM);
+ InitCmdText(drawM);
+ InitTrkNote(drawM);
cmdGroup = BG_RULER;
- InitCmdRuler( drawM );
-
+ InitCmdRuler(drawM);
/*
* OPTION MENU
*/
- MiscMenuItemCreate( optionM, NULL, "cmdLayout", _("L&ayout ..."), ACCL_LAYOUTW, (void*)LayoutInit(), IC_MODETRAIN_TOO, (void *)0 );
- MiscMenuItemCreate( optionM, NULL, "cmdDisplay", _("&Display ..."), ACCL_DISPLAYW, (void*)DisplayInit(), IC_MODETRAIN_TOO, (void *)0 );
- MiscMenuItemCreate( optionM, NULL, "cmdCmdopt", _("Co&mmand ..."), ACCL_CMDOPTW, (void*)CmdoptInit(), IC_MODETRAIN_TOO, (void *)0 );
- MiscMenuItemCreate( optionM, NULL, "cmdEasement", _("&Easements ..."), ACCL_EASEW, (void*)(wMenuCallBack_p)DoEasementRedir, IC_MODETRAIN_TOO, (void *)0 );
- MiscMenuItemCreate( optionM, NULL, "fontSelW", _("&Fonts ..."), ACCL_FONTW, (void*)(wMenuCallBack_p)SelectFont, IC_MODETRAIN_TOO, (void *)0 );
- MiscMenuItemCreate( optionM, NULL, "cmdSticky", _("Stic&ky ..."), ACCL_STICKY, (void*)(wMenuCallBack_p)DoSticky, IC_MODETRAIN_TOO, (void *)0 );
+ MiscMenuItemCreate(optionM, NULL, "cmdLayout", _("L&ayout ..."),
+ ACCL_LAYOUTW, (void*) LayoutInit(), IC_MODETRAIN_TOO, (void *) 0);
+ MiscMenuItemCreate(optionM, NULL, "cmdDisplay", _("&Display ..."),
+ ACCL_DISPLAYW, (void*) DisplayInit(), IC_MODETRAIN_TOO, (void *) 0);
+ MiscMenuItemCreate(optionM, NULL, "cmdCmdopt", _("Co&mmand ..."),
+ ACCL_CMDOPTW, (void*) CmdoptInit(), IC_MODETRAIN_TOO, (void *) 0);
+ MiscMenuItemCreate(optionM, NULL, "cmdEasement", _("&Easements ..."),
+ ACCL_EASEW, (void*) (wMenuCallBack_p) DoEasementRedir,
+ IC_MODETRAIN_TOO, (void *) 0);
+ MiscMenuItemCreate(optionM, NULL, "fontSelW", _("&Fonts ..."), ACCL_FONTW,
+ (void*) (wMenuCallBack_p) SelectFont, IC_MODETRAIN_TOO, (void *) 0);
+ MiscMenuItemCreate(optionM, NULL, "cmdSticky", _("Stic&ky ..."),
+ ACCL_STICKY, (void*) (wMenuCallBack_p) DoSticky, IC_MODETRAIN_TOO,
+ (void *) 0);
if (extraButtons) {
menuPLs[menuPG.paramCnt].context = debugW;
- MiscMenuItemCreate( optionM, NULL, "cmdDebug", _("&Debug ..."), 0, (void*)(wMenuCallBack_p)DebugInit, IC_MODETRAIN_TOO, (void *)0 );
+ MiscMenuItemCreate(optionM, NULL, "cmdDebug", _("&Debug ..."), 0,
+ (void*) (wMenuCallBack_p) DebugInit, IC_MODETRAIN_TOO, (void *) 0);
}
- MiscMenuItemCreate( optionM, NULL, "cmdPref", _("&Preferences ..."), ACCL_PREFERENCES, (void*)PrefInit(), IC_MODETRAIN_TOO, (void *)0 );
- MiscMenuItemCreate( optionM, NULL, "cmdColor", _("&Colors ..."), ACCL_COLORW, (void*)ColorInit(), IC_MODETRAIN_TOO, (void *)0 );
+ MiscMenuItemCreate(optionM, NULL, "cmdPref", _("&Preferences ..."),
+ ACCL_PREFERENCES, (void*) PrefInit(), IC_MODETRAIN_TOO, (void *) 0);
+ MiscMenuItemCreate(optionM, NULL, "cmdColor", _("&Colors ..."), ACCL_COLORW,
+ (void*) ColorInit(), IC_MODETRAIN_TOO, (void *) 0);
/*
* MACRO MENU
*/
- wMenuPushCreate( macroM, "cmdRecord", _("&Record ..."), ACCL_RECORD, DoRecord, NULL );
- wMenuPushCreate( macroM, "cmdDemo", _("&Play Back ..."), ACCL_PLAYBACK, DoPlayBack, NULL );
-
+ wMenuPushCreate(macroM, "cmdRecord", _("&Record ..."), ACCL_RECORD,
+ DoRecord, NULL);
+ wMenuPushCreate(macroM, "cmdDemo", _("&Play Back ..."), ACCL_PLAYBACK,
+ DoPlayBack, NULL);
/*
* WINDOW MENU
*/
- wMenuPushCreate( windowM, "menuWindow", _("Main window"), 0, (wMenuCallBack_p)wShow, mainW );
- winList_mi = wMenuListCreate( windowM, "menuWindow", -1, DoShowWindow );
+ wMenuPushCreate(windowM, "menuWindow", _("Main window"), 0,
+ (wMenuCallBack_p) wShow, mainW);
+ winList_mi = wMenuListCreate(windowM, "menuWindow", -1, DoShowWindow);
/*
* HELP MENU
*/
/* main help window */
- wMenuAddHelp( helpM );
+ wMenuAddHelp(helpM);
/* help on recent messages */
- wMenuSeparatorCreate( helpM );
- messageListM = wMenuMenuCreate( helpM, "menuHelpRecentMessages", _("Recent Messages") );
- messageList_ml = wMenuListCreate( messageListM, "messageListM", 10, ShowMessageHelp );
- wMenuListAdd( messageList_ml, 0, _(MESSAGE_LIST_EMPTY), NULL );
+ wMenuSeparatorCreate(helpM);
+ messageListM = wMenuMenuCreate(helpM, "menuHelpRecentMessages",
+ _("Recent Messages"));
+ messageList_ml = wMenuListCreate(messageListM, "messageListM", 10,
+ ShowMessageHelp);
+ wMenuListAdd(messageList_ml, 0, _(MESSAGE_LIST_EMPTY), NULL);
/* tip of the day */
wMenuSeparatorCreate( helpM );
wMenuPushCreate( helpM, "cmdTip", _("Tip of the Day..."), 0, (wMenuCallBack_p)ShowTip, (void *)(SHOWTIP_FORCESHOW | SHOWTIP_NEXTTIP));
demoM = wMenuMenuCreate( helpM, "cmdDemo", _("&Demos") );
+ wMenuPushCreate( helpM, "cmdExamples", _("Examples..."), 0, (wMenuCallBack_p)ChkExamples, (void *)0);
/* about window */
- wMenuSeparatorCreate( helpM );
- wMenuPushCreate( helpM, "about", _("About"), 0, (wMenuCallBack_p)CreateAboutW, NULL );
+ wMenuSeparatorCreate(helpM);
+ wMenuPushCreate(helpM, "about", _("About"), 0,
+ (wMenuCallBack_p) CreateAboutW, NULL);
/*
* MANAGE MENU
*/
- cmdGroup = BG_TRAIN|BG_BIGGAP;
- InitCmdTrain( manageM );
- wMenuSeparatorCreate( manageM );
+ cmdGroup = BG_TRAIN | BG_BIGGAP;
+ InitCmdTrain(manageM);
+ wMenuSeparatorCreate(manageM);
+
+ InitNewTurn(
+ wMenuMenuCreate(manageM, "cmdTurnoutNew",
+ _("Tur&nout Designer...")));
- InitNewTurn( wMenuMenuCreate( manageM, "cmdTurnoutNew", _("Tur&nout Designer...") ) );
+ MiscMenuItemCreate(manageM, NULL, "cmdContmgm",
+ _("Layout &Control Elements"), ACCL_CONTMGM,
+ (void*) ControlMgrInit(), 0, (void*) 0);
+ MiscMenuItemCreate(manageM, NULL, "cmdGroup", _("&Group"), ACCL_GROUP,
+ (void*) (wMenuCallBack_p) DoGroup, IC_SELECTED, (void *) 0);
+ MiscMenuItemCreate(manageM, NULL, "cmdUngroup", _("&Ungroup"), ACCL_UNGROUP,
+ (void*) (wMenuCallBack_p) DoUngroup, IC_SELECTED, (void *) 0);
- MiscMenuItemCreate( manageM, NULL, "cmdContmgm", _("Layout &Control Elements"), ACCL_CONTMGM,(void*)ControlMgrInit(),0,(void*) 0);
- MiscMenuItemCreate( manageM, NULL, "cmdGroup", _("&Group"), ACCL_GROUP, (void*)(wMenuCallBack_p)DoGroup, IC_SELECTED, (void *)0 );
- MiscMenuItemCreate( manageM, NULL, "cmdUngroup", _("&Ungroup"), ACCL_UNGROUP, (void*)(wMenuCallBack_p)DoUngroup, IC_SELECTED, (void *)0 );
+ MiscMenuItemCreate(manageM, NULL, "cmdCustmgm",
+ _("Custom defined parts..."), ACCL_CUSTMGM, (void*) CustomMgrInit(),
+ 0, (void *) 0);
+ MiscMenuItemCreate(manageM, NULL, "cmdRefreshCompound",
+ _("Update Turnouts and Structures"), 0,
+ (void*) (wMenuCallBack_p) DoRefreshCompound, 0, (void *) 0);
- MiscMenuItemCreate( manageM, NULL, "cmdCustmgm", _("Custom defined parts..."), ACCL_CUSTMGM, (void*)CustomMgrInit(), 0, (void *)0 );
- MiscMenuItemCreate( manageM, NULL, "cmdRefreshCompound", _("Update Turnouts and Structures"), 0, (void*)(wMenuCallBack_p)DoRefreshCompound, 0, (void *)0 );
+ MiscMenuItemCreate(manageM, NULL, "cmdCarInventory", _("Car Inventory"),
+ ACCL_CARINV, (void*) (wMenuCallBack_p) DoCarDlg, IC_MODETRAIN_TOO,
+ (void *) 0);
- MiscMenuItemCreate( manageM, NULL, "cmdCarInventory", _("Car Inventory"), ACCL_CARINV, (void*)(wMenuCallBack_p)DoCarDlg, IC_MODETRAIN_TOO, (void *)0 );
+ wMenuSeparatorCreate(manageM);
- wMenuSeparatorCreate( manageM );
+ MiscMenuItemCreate(manageM, NULL, "cmdLayer", _("Layers ..."), ACCL_LAYERS,
+ (void*) InitLayersDialog(), 0, (void *) 0);
+ wMenuSeparatorCreate(manageM);
- MiscMenuItemCreate( manageM, NULL, "cmdLayer", _("Layers ..."), ACCL_LAYERS, (void*)InitLayersDialog(), 0, (void *)0 );
- wMenuSeparatorCreate( manageM );
+ MiscMenuItemCreate(manageM, NULL, "cmdEnumerate", _("Parts &List ..."),
+ ACCL_PARTSLIST, (void*) (wMenuCallBack_p) EnumerateTracks, 0,
+ (void *) 0);
+ MiscMenuItemCreate(manageM, NULL, "cmdPricelist", _("Price List..."),
+ ACCL_PRICELIST, (void*) PriceListInit(), 0, (void *) 0);
- MiscMenuItemCreate( manageM, NULL, "cmdEnumerate", _("Parts &List ..."), ACCL_PARTSLIST, (void*)(wMenuCallBack_p)EnumerateTracks, 0, (void *)0 );
- MiscMenuItemCreate( manageM, NULL, "cmdPricelist", _("Price List..."), ACCL_PRICELIST, (void*)PriceListInit(), 0, (void *)0 );
+ cmdGroup = BG_LAYER | BG_BIGGAP;
+
+ InitCmdSelect2(changeM);
+ InitCmdDescribe2(changeM);
+ InitCmdPan2(changeM);
- cmdGroup = BG_LAYER|BG_BIGGAP;
InitLayers();
cmdGroup = BG_HOTBAR;
@@ -2459,51 +2697,73 @@ static void CreateMenus( void )
wAttachAccelKey( wAccelKey_Del, WKEY_SHIFT, (wAccelKeyCallBack_p)EditCut, 0 );
wAttachAccelKey( wAccelKey_F6, 0, (wAccelKeyCallBack_p)NextWindow, 0 );
#endif
- SetAccelKey( "zoomUp", wAccelKey_Pgdn, 0, (wAccelKeyCallBack_p)DoZoomUp, (void*)1 );
- SetAccelKey( "zoomDown", wAccelKey_Pgup, 0, (wAccelKeyCallBack_p)DoZoomDown, (void*)1 );
- SetAccelKey( "redraw", wAccelKey_F5, 0, (wAccelKeyCallBack_p)MainRedraw, (void*)1 );
- SetAccelKey( "delete", wAccelKey_Del, 0, (wAccelKeyCallBack_p)SelectDelete, (void*)1 );
- SetAccelKey( "copy", wAccelKey_Ins, WKEY_CTRL, (wAccelKeyCallBack_p)EditCopy, 0 );
- SetAccelKey( "paste", wAccelKey_Ins, WKEY_SHIFT, (wAccelKeyCallBack_p)EditPaste, 0 );
- SetAccelKey( "undo", wAccelKey_Back, WKEY_SHIFT, (wAccelKeyCallBack_p)UndoUndo, 0 );
- SetAccelKey( "cut", wAccelKey_Del, WKEY_SHIFT, (wAccelKeyCallBack_p)EditCut, 0 );
- SetAccelKey( "nextWindow", wAccelKey_F6, 0, (wAccelKeyCallBack_p)NextWindow, 0 );
- SetAccelKey( "zoomUp", wAccelKey_Numpad_Add, WKEY_CTRL, (wAccelKeyCallBack_p)DoZoomUp, (void*)1 );
- SetAccelKey( "zoomDown", wAccelKey_Numpad_Subtract, WKEY_CTRL, (wAccelKeyCallBack_p)DoZoomDown, (void*)1 );
+ SetAccelKey("zoomUp", wAccelKey_Pgdn, 0, (wAccelKeyCallBack_p) DoZoomUp,
+ (void*) 1);
+ SetAccelKey("zoomDown", wAccelKey_Pgup, 0, (wAccelKeyCallBack_p) DoZoomDown,
+ (void*) 1);
+ SetAccelKey("redraw", wAccelKey_F5, 0, (wAccelKeyCallBack_p) MainRedraw,
+ (void*) 1);
+ SetAccelKey("delete", wAccelKey_Del, 0, (wAccelKeyCallBack_p) SelectDelete,
+ (void*) 1);
+ SetAccelKey("copy", wAccelKey_Ins, WKEY_CTRL,
+ (wAccelKeyCallBack_p) EditCopy, 0);
+ SetAccelKey("paste", wAccelKey_Ins, WKEY_SHIFT,
+ (wAccelKeyCallBack_p) EditPaste, 0);
+ SetAccelKey("undo", wAccelKey_Back, WKEY_SHIFT,
+ (wAccelKeyCallBack_p) UndoUndo, 0);
+ SetAccelKey("cut", wAccelKey_Del, WKEY_SHIFT, (wAccelKeyCallBack_p) EditCut,
+ 0);
+ SetAccelKey("nextWindow", wAccelKey_F6, 0, (wAccelKeyCallBack_p) NextWindow,
+ 0);
+ SetAccelKey("zoomUp", wAccelKey_Numpad_Add, WKEY_CTRL,
+ (wAccelKeyCallBack_p) DoZoomUp, (void*) 1);
+ SetAccelKey("zoomDown", wAccelKey_Numpad_Subtract, WKEY_CTRL,
+ (wAccelKeyCallBack_p) DoZoomDown, (void*) 1);
+ SetAccelKey("help", wAccelKey_F1, WKEY_SHIFT,
+ (wAccelKeyCallBack_p) wDoAccelHelp, (void*) 1);
+ SetAccelKey("help-context", wAccelKey_F1, 0,
+ (wAccelKeyCallBack_p) wDoAccelHelp, (void*) 3);
InitBenchDialog();
+ wPrefGetInteger( "DialogItem", "sticky-set", &stickySet, stickySet );
}
-
-static void LoadFileList( void )
-{
+static void LoadFileList(void) {
char file[6];
int inx;
const char * cp;
const char *fileName, *pathName;
- strcpy( file, "fileX" );
- for (inx=NUM_FILELIST-1; inx>=0; inx--) {
- file[4] = '0'+inx;
- cp = wPrefGetString( "filelist", file );
+ strcpy(file, "fileX");
+ for (inx = NUM_FILELIST - 1; inx >= 0; inx--) {
+ file[4] = '0' + inx;
+ cp = wPrefGetString("filelist", file);
if (!cp)
continue;
pathName = MyStrdup(cp);
- fileName = FindFilename((char *)pathName);
+ fileName = FindFilename((char *) pathName);
if (fileName)
- wMenuListAdd( fileList_ml, 0, fileName, pathName );
+ wMenuListAdd(fileList_ml, 0, fileName, pathName);
}
}
-EXPORT void InitCmdEnumerate( void )
-{
- AddToolbarButton( "cmdEnumerate", wIconCreatePixMap(partlist_xpm), IC_SELECTED|IC_ACCLKEY, (addButtonCallBack_t)EnumerateTracks, NULL );
+EXPORT void InitCmdEnumerate(void) {
+ AddToolbarButton("cmdEnumerate", wIconCreatePixMap(partlist_xpm),
+ IC_SELECTED | IC_ACCLKEY, (addButtonCallBack_t) EnumerateTracks,
+ NULL);
}
-
-EXPORT void InitCmdExport( void )
-{
- AddToolbarButton( "cmdExport", wIconCreatePixMap(export_xpm), IC_SELECTED|IC_ACCLKEY, (addButtonCallBack_t)DoExport, NULL );
- AddToolbarButton( "cmdImport", wIconCreatePixMap(import_xpm), IC_ACCLKEY, (addButtonCallBack_t)DoImport, NULL );
+EXPORT void InitCmdExport(void) {
+ ButtonGroupBegin( _("Import/Export"), "cmdExportImportSetCmd", _("Import/Export") );
+ cmdGroup = BG_EXPORTIMPORT;
+ AddToolbarButton("cmdExport", wIconCreatePixMap(export_xpm),
+ IC_SELECTED | IC_ACCLKEY, (addButtonCallBack_t) DoExport, NULL);
+ AddToolbarButton("cmdExportDXF", wIconCreatePixMap(export_dxf_xpm), IC_SELECTED | IC_ACCLKEY,
+ (addButtonCallBack_t)DoExportDXF, (void*)1);
+ AddToolbarButton("cmdImport", wIconCreatePixMap(import_xpm), IC_ACCLKEY,
+ (addButtonCallBack_t) DoImport, (void*)0);
+ AddToolbarButton("cmdImportModule", wIconCreatePixMap(importmod_xpm), IC_ACCLKEY,
+ (addButtonCallBack_t) DoImport, (void*)1);
+ ButtonGroupEnd();
}
/* Give user the option to continue work after crash. This function gives the user
@@ -2514,27 +2774,34 @@ EXPORT void InitCmdExport( void )
*
*/
+
static int OfferCheckpoint( void )
{
int ret = FALSE;
/* sProdName */
- ret = wNoticeEx( NT_INFORMATION,
- _("Program was not terminated properly. Do you want to resume working on the previous trackplan?"),
- _("Resume"), _("Ignore") );
- if( ret ) {
+ ret =
+ wNotice3(
+ _(
+ "Program was not terminated properly. Do you want to resume working on the previous trackplan?"),
+ _("Resume"), _("Resume with New Name"), _("Ignore Checkpoint"));
+ //ret==1 Same, ret==-1 New, ret==0 Ignore
+ if (ret == 1)
+ printf(_("Reload Checkpoint Selected\n"));
+ else if (ret == -1)
+ printf(_("Reload Checkpoint With New Name Selected\n"));
+ else
+ printf(_("Ignore Checkpoint Selected\n"));
+ if (ret>=0) {
/* load the checkpoint file */
- LoadCheckpoint();
+ LoadCheckpoint(ret==1);
ret = TRUE;
+
}
- return ret;
+ return (ret>=0);
}
-
-EXPORT wWin_p wMain(
- int argc,
- char * argv[] )
-{
+EXPORT wWin_p wMain(int argc, char * argv[]) {
int c;
int resumeWork;
char * logFileName = NULL;
@@ -2547,12 +2814,12 @@ EXPORT wWin_p wMain(
long newToolbarMax;
char *cp;
char *oldLocale = NULL;
- char buffer[ STR_SIZE ];
+ char buffer[STR_SIZE];
unsigned int i;
- wPos_t displayWidth;
- wPos_t displayHeight;
+ wPos_t displayWidth;
+ wPos_t displayHeight;
- strcpy( buffer, sProdNameLower );
+ strcpy(buffer, sProdNameLower);
/* Initialize application name */
wInitAppName(buffer);
@@ -2563,7 +2830,7 @@ EXPORT wWin_p wMain(
/* Save user locale */
oldLocale = setlocale(LC_ALL, NULL);
if (oldLocale)
- userLocale = strdup( oldLocale );
+ userLocale = strdup(oldLocale);
/*
* ARGUMENTS
@@ -2571,89 +2838,107 @@ EXPORT wWin_p wMain(
opterr = 0;
- while ((c = getopt (argc, argv, "vl:d:c:")) != -1)
- switch (c) {
- case 'c': /* configuration name */
+ while ((c = getopt(argc, argv, "vl:d:c:m")) != -1)
+ switch (c) {
+ case 'c': /* configuration name */
/* test for valid filename */
- for( i = 0; i < strlen( optarg ); i++ ) {
- if( !isalnum( (unsigned char)optarg[ i ]) && optarg[ i ] != '.' ) {
- NoticeMessage( MSG_BAD_OPTION, _("Ok"), NULL, optarg );
- exit( 1 );
+ for (i = 0; i < strlen(optarg); i++) {
+ if (!isalnum((unsigned char) optarg[i]) && optarg[i] != '.') {
+ NoticeMessage(MSG_BAD_OPTION, _("Ok"), NULL, optarg);
+ exit(1);
}
}
/* append delimiter and argument to configuration name */
- if( strlen( optarg ) < STR_SIZE - strlen( ";" ) - strlen( buffer ) - 1 ){
- strcat( buffer, ";" );
- strcat( buffer, optarg );
- }
- else {
- NoticeMessage( MSG_BAD_OPTION, _("Ok"), NULL, optarg );
- exit( 1 );
+ if (strlen(optarg) < STR_SIZE - strlen(";") - strlen(buffer) - 1) {
+ strcat(buffer, ";");
+ strcat(buffer, optarg);
+ } else {
+ NoticeMessage(MSG_BAD_OPTION, _("Ok"), NULL, optarg);
+ exit(1);
}
break;
- case 'v': /* verbose flag */
+ case 'v': /* verbose flag */
verbose++;
- break;
- case 'd': /* define loglevel for a group */
- cp = strchr( optarg, '=' );
- if ( cp != NULL ) {
+ break;
+ case 'd': /* define loglevel for a group */
+ cp = strchr(optarg, '=');
+ if (cp != NULL) {
*cp++ = '\0';
- LogSet( optarg, atoi(cp) );
+ LogSet(optarg, atoi(cp));
} else {
- LogSet( optarg, 1 );
+ LogSet(optarg, 1);
}
break;
- case 'l': /* define log filename */
+ case 'l': /* define log filename */
logFileName = strdup(optarg);
break;
- case '?':
- NoticeMessage( MSG_BAD_OPTION, _("Ok"), NULL, argv[ optind - 1 ] );
- exit( 1 );
+ case '?':
+ NoticeMessage(MSG_BAD_OPTION, _("Ok"), NULL, argv[optind - 1]);
+ exit(1);
+ case 'm': // temporary: use MainRedraw instead of TempRedraw
+ wDrawDoTempDraw = FALSE;
+ break;
case ':':
- NoticeMessage( "Missing parameter for %s", _("Ok"), NULL, argv[ optind - 1 ] );
- exit( 1 );
+ NoticeMessage("Missing parameter for %s", _("Ok"), NULL,
+ argv[optind - 1]);
+ exit(1);
break;
- default:
- abort ();
- }
- if( optind < argc )
- initialFile = strdup( argv[ optind ] );
+ default:
+ abort();
+ }
+ if (optind < argc)
+ initialFile = strdup(argv[optind]);
- extraButtons = ( getenv(sEnvExtra) != NULL );
- LogOpen( logFileName );
- log_init = LogFindIndex( "init" );
- log_malloc = LogFindIndex( "malloc" );
- log_error = LogFindIndex( "error" );
- log_command = LogFindIndex( "command" );
+ extraButtons = (getenv(sEnvExtra) != NULL);
+ LogOpen(logFileName);
+ log_init = LogFindIndex("init");
+ log_malloc = LogFindIndex("malloc");
+ log_error = LogFindIndex("error");
+ log_command = LogFindIndex("command");
-LOG1( log_init, ( "initCustom\n" ) )
+ LOG1(log_init, ( "initCustom\n" ))
InitCustom();
/*
* MAIN WINDOW
*/
-LOG1( log_init, ( "create main window\n" ) )
- SetLayoutTitle( sProdName );
- sprintf( message, _("Unnamed Trackplan - %s(%s)"), sProdName, sVersion );
- wSetBalloonHelp( balloonHelp );
-
- wGetDisplaySize(&displayWidth, &displayHeight);
- mainW = wWinMainCreate( buffer, (displayWidth*2)/3, (displayHeight*2)/3, "xtrkcadW", message, "main",
- F_RESIZE|F_MENUBAR|F_NOTAB|F_RECALLPOS|F_HIDE,
- MainProc, NULL );
- if ( mainW == NULL )
+ LOG1(log_init, ( "create main window\n" ))
+ SetLayoutTitle(sProdName);
+ sprintf(message, _("Unnamed Trackplan - %s(%s)"), sProdName, sVersion);
+ wSetBalloonHelp(balloonHelp);
+
+ wGetDisplaySize(&displayWidth, &displayHeight);
+ mainW = wWinMainCreate(buffer, (displayWidth * 2) / 3,
+ (displayHeight * 2) / 3, "xtrkcadW", message, "main",
+ F_RESIZE | F_MENUBAR | F_NOTAB | F_RECALLPOS | F_RECALLSIZE | F_HIDE, MainProc,
+ NULL);
+ if (mainW == NULL)
return NULL;
InitAppDefaults();
-
drawColorBlack = wDrawFindColor( wRGB( 0, 0, 0) );
drawColorWhite = wDrawFindColor( wRGB(255,255,255) );
drawColorRed = wDrawFindColor( wRGB(255, 0, 0) );
drawColorBlue = wDrawFindColor( wRGB( 0, 0,255) );
drawColorGreen = wDrawFindColor( wRGB( 0,255, 0) );
drawColorAqua = wDrawFindColor( wRGB( 0,255,255) );
+
+ // Last component of spectial color must be > 3
+ drawColorPreviewSelected = wDrawFindColor( wRGB ( 6, 6, 255) ); //Special Blue
+ drawColorPreviewUnselected = wDrawFindColor( wRGB( 255, 215, 6)); //Special Yellow
+
+ drawColorPowderedBlue = wDrawFindColor( wRGB(129, 212, 250) );
drawColorPurple = wDrawFindColor( wRGB(255, 0,255) );
drawColorGold = wDrawFindColor( wRGB(255,215, 0) );
+ drawColorGrey10 = wDrawFindColor( wRGB(26,26,26) );
+ drawColorGrey20 = wDrawFindColor( wRGB(51,51,51) );
+ drawColorGrey30 = wDrawFindColor( wRGB(72,72,72) );
+ drawColorGrey40 = wDrawFindColor( wRGB(102,102,102) );
+ drawColorGrey50 = wDrawFindColor( wRGB(128,128,128) );
+ drawColorGrey60 = wDrawFindColor( wRGB(153,153,153) );
+ drawColorGrey70 = wDrawFindColor( wRGB(179,179,179) );
+ drawColorGrey80 = wDrawFindColor( wRGB(204,204,204) );
+ drawColorGrey90 = wDrawFindColor( wRGB(230,230,230) );
snapGridColor = drawColorGreen;
markerColor = drawColorRed;
borderColor = drawColorBlack;
@@ -2664,73 +2949,71 @@ LOG1( log_init, ( "create main window\n" ) )
elevColorIgnore = drawColorBlue;
elevColorDefined = drawColorGold;
profilePathColor = drawColorPurple;
- exceptionColor = wDrawFindColor( wRGB(255,0,128) );
- tieColor = wDrawFindColor( wRGB(255,128,0) );
+ exceptionColor = wDrawFindColor(wRGB(255, 89, 0 ));
+ tieColor = wDrawFindColor(wRGB(153, 89, 68));
- newToolbarMax = (1<<BG_COUNT)-1;
- wPrefGetInteger( "misc", "toolbarset", &toolbarSet, newToolbarMax );
- wPrefGetInteger( "misc", "max-toolbarset", &oldToolbarMax, 0 );
+ newToolbarMax = (1 << BG_COUNT) - 1;
+ wPrefGetInteger("misc", "toolbarset", &toolbarSet, newToolbarMax);
+ wPrefGetInteger("misc", "max-toolbarset", &oldToolbarMax, 0);
toolbarSet |= newToolbarMax & ~oldToolbarMax;
- wPrefSetInteger( "misc", "max-toolbarset", newToolbarMax );
- wPrefSetInteger( "misc", "toolbarset", toolbarSet );
+ wPrefSetInteger("misc", "max-toolbarset", newToolbarMax);
+ wPrefSetInteger("misc", "toolbarset", toolbarSet);
-LOG1( log_init, ( "fontInit\n"))
+ LOG1(log_init, ( "fontInit\n"))
wInitializeFonts();
-LOG1( log_init, ( "fileInit\n" ) )
+ LOG1(log_init, ( "fileInit\n" ))
FileInit();
- wCreateSplash( sProdName, sVersion );
+ wCreateSplash(sProdName, sVersion);
if (!initialFile) {
WDOUBLE_T tmp;
-LOG1( log_init, ( "set roomsize\n" ) )
- wPrefGetFloat( "draw", "roomsizeX", &tmp, 96.0 );
+ LOG1(log_init, ( "set roomsize\n" ))
+ wPrefGetFloat("draw", "roomsizeX", &tmp, 96.0);
roomSize.x = tmp;
- wPrefGetFloat( "draw", "roomsizeY", &tmp, 48.0 );
+ wPrefGetFloat("draw", "roomsizeY", &tmp, 48.0);
roomSize.y = tmp;
- SetRoomSize( roomSize );
+ SetRoomSize(roomSize);
}
/*
* INITIALIZE
*/
-LOG1( log_init, ( "initInfoBar\n" ) )
+ LOG1(log_init, ( "initInfoBar\n" ))
InitInfoBar();
- wSetSplashInfo( "Misc2 Init..." );
-LOG1( log_init, ( "misc2Init\n" ) )
+ wSetSplashInfo("Misc2 Init...");
+ LOG1(log_init, ( "misc2Init\n" ))
Misc2Init();
RotateDialogInit();
MoveDialogInit();
- wSetSplashInfo( _("Initializing commands") );
-LOG1( log_init, ( "paramInit\n" ) )
+ wSetSplashInfo(_("Initializing commands"));
+ LOG1(log_init, ( "paramInit\n" ))
ParamInit();
-LOG1( log_init, ( "initTrkTrack\n" ) )
+ LOG1(log_init, ( "initTrkTrack\n" ))
InitTrkTrack();
/*
* MENUS
*/
- wSetSplashInfo( _("Initializing menus") );
-LOG1( log_init, ( "createMenus\n" ) )
+ wSetSplashInfo(_("Initializing menus"));
+ LOG1(log_init, ( "createMenus\n" ))
CreateMenus();
-
-
-LOG1( log_init, ( "initialize\n" ) )
+ LOG1(log_init, ( "initialize\n" ))
if (!Initialize())
return NULL;
- ParamRegister( &menuPG );
- ParamRegister( &stickyPG );
+ ParamRegister(&menuPG);
+ ParamRegister(&stickyPG);
/* initialize the layers */
DefaultLayerProperties();
-LOG1( log_init, ( "loadFileList\n" ) )
+ LOG1(log_init, ( "loadFileList\n" ))
LoadFileList();
- AddPlaybackProc( "MENU", MenuPlayback, NULL );
+ AddPlaybackProc("MENU", MenuPlayback, NULL);
//CreateDebugW();
/*
@@ -2747,17 +3030,20 @@ LOG1( log_init, ( "loadFileList\n" ) )
} else {
HideHotBar();
}
-LOG1( log_init, ( "drawInit\n" ) )
- DrawInit( initialZoom );
+ LOG1(log_init, ( "drawInit\n" ))
+ DrawInit(initialZoom);
MacroInit();
- wSetSplashInfo( _("Reading parameter files") );
-LOG1( log_init, ( "paramFileInit\n" ) )
- if (!ParamFileInit())
+ wSetSplashInfo(_("Reading parameter files"));
+ LOG1(log_init, ( "paramFileInit\n" ))
+
+ SetParamFileDir(GetCurrentPath(LAYOUTPATHKEY)); //Set default for new parms to be the same as the layout
+
+ if (!ParamFileListInit())
return NULL;
curCommand = describeCmdInx;
-LOG1( log_init, ( "Reset\n" ) )
+ LOG1(log_init, ( "Reset\n" ))
Reset();
/*
@@ -2767,30 +3053,30 @@ LOG1( log_init, ( "Reset\n" ) )
/* Set up the data for scale and gauge description */
DoSetScaleDesc();
- // get the preferred scale from the configuration file
- pref = wPrefGetString( "misc", "scale" );
- if( !pref )
+ // get the preferred scale from the configuration file
+ pref = wPrefGetString("misc", "scale");
+ if (!pref)
// if preferred scale was not set (eg. during initial run), initialize to a default value
pref = DEFAULT_SCALE;
- strcpy( buffer, pref );
- DoSetScale( buffer );
+ strcpy(buffer, pref);
+ DoSetScale(buffer);
/* see whether last layout should be reopened on startup */
- wPrefGetInteger( "DialogItem", "pref-onstartup", &onStartup, 0 );
+ wPrefGetInteger("DialogItem", "pref-onstartup", &onStartup, 0);
/*
* THE END
*/
-LOG1( log_init, ( "the end\n" ) )
+ LOG1(log_init, ( "the end\n" ))
EnableCommands();
-LOG1( log_init, ( "Initialization complete\n" ) )
- wSetSplashInfo( _("Initialization complete") );
- RegisterChangeNotification( ToolbarChange );
- DoChangeNotification( CHANGE_MAIN|CHANGE_MAP );
+ LOG1(log_init, ( "Initialization complete\n" ))
+ wSetSplashInfo(_("Initialization complete"));
+ RegisterChangeNotification(ToolbarChange);
+ DoChangeNotification( CHANGE_MAIN | CHANGE_MAP);
- wWinShow( mainW, TRUE );
- wWinShow( mapW, mapVisible );
+ wWinShow(mainW, TRUE);
+ wWinShow(mapW, mapVisible);
wDestroySplash();
/* this has to be called before ShowTip() */
@@ -2800,20 +3086,28 @@ LOG1( log_init, ( "Initialization complete\n" ) )
/* check for existing checkpoint file */
resumeWork = FALSE;
- if (ExistsCheckpoint())
+ if (ExistsCheckpoint()) {
resumeWork = OfferCheckpoint();
+ MainRedraw();
+ }
if (!resumeWork) {
- /* if work is to be resumed and no filename was given on startup, load last layout */
+ /* if work is not to be resumed and no filename was given on startup, load last layout */
if ((onStartup == 0) && (!initialFile || !strlen(initialFile))) {
+ long iExample;
initialFile = (char*)wPrefGetString("misc", "lastlayout");
+ wPrefGetInteger("misc", "lastlayoutexample", &iExample, 0);
+ bExample = (iExample == 1);
}
if (initialFile && strlen(initialFile)) {
- DoFileList(0, NULL, initialFile);
+ DoFileList(0, NULL, initialFile); //Will load Background values, if archive
+ if (onStartup == 1)
+ LayoutBackGroundInit(TRUE); //Wipe Out Prior Background
+ else
+ LayoutBackGroundInit(FALSE); //Get Prior BackGround
}
}
inMainW = FALSE;
return mainW;
}
-