gehe zur Dokumentation dieser Datei00001
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #include "wx/wxprec.h"
00033
00034 #ifdef __BORLANDC__
00035 #pragma hdrstop
00036 #endif
00037
00038 #include "Action.h"
00039 #include "GrafKern.h"
00040
00041
00042
00043 bool AktionChanged[MAX_BOX];
00044
00045 class TAktionTrace
00046 {
00047
00048 public:
00049 unsigned char Box;
00050 char *Name;
00051 TAktionTrace *Next;
00052 TAktionTrace(unsigned char box, char *name)
00053 {
00054 Box = box;
00055 Name = strdup(name);
00056 Next = 0;
00057 }
00058
00059 ~TAktionTrace()
00060 {
00061 free(Name);
00062 }
00063 };
00064
00065 TAktionTrace *AktionTraceBase = 0;
00066 TAktionTrace **AktionTraceTail = &AktionTraceBase;
00067
00068 void AktionTraceReset()
00069 {
00070 while ( AktionTraceBase ) {
00071 TAktionTrace *a = AktionTraceBase;
00072 AktionTraceBase = a->Next;
00073 delete a;
00074 }
00075
00076 AktionTraceTail = &AktionTraceBase;
00077
00078 for (int i = 0; i < MAX_BOX; i++)
00079 AktionChanged[i] = false;
00080 }
00081
00082 bool TakeOverAktions()
00083 {
00084 unsigned char *Boxes;
00085 int *l, p = 0;
00086 char *s, sHelp[100];
00087 int n = GetActString(&Boxes, &l, &s);
00088
00089 for (int i = 0; i < n; i++) {
00090 int l1 = l[i]-p;
00091 strncpy(sHelp,&s[p], l1);
00092 sHelp[l1] = 0;
00093 p = l[i];
00094 *AktionTraceTail = new TAktionTrace(Boxes[i], sHelp);
00095 AktionTraceTail = &((*AktionTraceTail)->Next);
00096 AktionChanged[Boxes[i]] = true;
00097 }
00098
00099 return n != 0;
00100 }
00101
00102 bool ACTChanged(int box)
00103 {
00104 bool flag = AktionChanged[box];
00105 AktionChanged[box] = false;
00106 return flag;
00107 }
00108
00109
00110 char sAktion[2000];
00111 int ActLineNumbers;
00112
00113 char *GenerateACTString(int box)
00114 {
00115 strcpy(sAktion, "");
00116 ActLineNumbers = 0;
00117
00118 for ( TAktionTrace *a = AktionTraceBase; a; a = a->Next)
00119 if ( a->Box == box ) {
00120 while ( strlen(sAktion) > 1900 ) {
00121 char *s = strchr(sAktion, '\n');
00122 strcpy(sAktion, &s[1]);
00123 ActLineNumbers--;
00124 }
00125
00126 if ( sAktion[0] )
00127 strcat(sAktion, "\n");
00128
00129 strcat(sAktion, a->Name);
00130
00131 ActLineNumbers++;
00132 }
00133
00134 return sAktion;
00135 }
00136
00137 char *GenerateCAWString()
00138 {
00139 sAktion[0] = 0;
00140 ActLineNumbers = 0;
00141
00142 for ( TAktionTrace *a = AktionTraceBase; a; a = a->Next) {
00143 while ( strlen(sAktion) > 1900 ) {
00144 char *s = strchr(sAktion, '\n');
00145 strcpy(sAktion, &s[1]);
00146 ActLineNumbers--;
00147 }
00148
00149 if ( sAktion[0] )
00150 strcat(sAktion, "\n");
00151
00152 char sForm[100];
00153
00154 sprintf(sForm, "Box %3d: %s", a->Box, a->Name);
00155
00156 strcat(sAktion, sForm);
00157
00158 ActLineNumbers++;
00159 }
00160
00161 return sAktion;
00162 }
00163
00164