Action.cpp
gehe zur Dokumentation dieser Datei
00001 
00023 // ===========================================================================
00024 // declarations
00025 // ===========================================================================
00026 
00027 // ---------------------------------------------------------------------------
00028 // headers
00029 // ---------------------------------------------------------------------------
00030 
00031 // For compilers that support precompilation, includes "wx/wx.h".
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 // Aktionen ---------------------------------------------------------
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 

Erzeugt am Sun Aug 21 2011 10:51:53 für Mutabor von doxygen 1.7.4