]> git.saurik.com Git - wxWidgets.git/blobdiff - utils/dialoged/src/symbtabl.cpp
corrected thread detection for Darwin / Mac OS X
[wxWidgets.git] / utils / dialoged / src / symbtabl.cpp
index 65e038b3d22f4883f34881d5dc3ec5270f4691a8..05c160ac412c112d37b54998179842587f6668d8 100644 (file)
@@ -24,7 +24,7 @@
 #include "wx/wx.h"
 #endif
 
-#include <wx/file.h>
+#include "wx/file.h"
 
 #include <string.h>
 #include <stdlib.h>
@@ -32,7 +32,7 @@
 #include "symbtabl.h"
 
 wxResourceSymbolTable::wxResourceSymbolTable():
-  m_hashTable(wxKEY_STRING)
+m_hashTable(wxKEY_STRING)
 {
 }
 
@@ -48,70 +48,70 @@ bool wxResourceSymbolTable::ReadIncludeFile(const wxString& filename)
     wxFile file;
     if (!wxFileExists(filename))
         return FALSE;
-
+    
     if (!file.Open(filename, wxFile::read))
         return FALSE;
-
+    
     off_t len = file.Length();
     if (len == -1)
         return FALSE;
-
+    
     Clear();
     AddStandardSymbols();
-
+    
     wxString str;
     char* p = str.GetWriteBuf(len + 1);
-
+    
     if (file.Read(p, len) == wxFile::fd_invalid)
     {
         str.UngetWriteBuf();
         return FALSE;
     }
     str.UngetWriteBuf();
-
+    
     // Look for #define occurrences
-    size_t pos = str.Find("#define");
+    int pos = str.Find("#define");
     while (pos != -1)
     {
         size_t len = str.Length();
-
+        
         size_t i = pos + 8;
-
+        
         // Eat whitespace until symbol
         while ((str[i] == ' ' || str[i] == '\t') && (i < len))
             i ++;
-
+        
         size_t start = i;
-
+        
         // Eat symbol
         while (str[i] != ' ' && str[i] != '\t' && (i < len))
             i ++;
         size_t end = i-1;
-
+        
         wxString symbol(str.Mid(start, (end - start + 1)));
-
+        
         // Eat whitespace until number
         while ((str[i] == ' ' || str[i] == '\t') && (i < len))
             i ++;
-
+        
         size_t startNum = i;
-
+        
         // Eat number
         while (str[i] != ' ' && str[i] != '\t' && str[i] != '\n' && (i < len))
             i ++;
-
+        
         size_t endNum = i-1;
-
+        
         wxString numStr(str.Mid(startNum, (endNum - startNum + 1)));
-
+        
         int id = atol(numStr);
-
+        
         AddSymbol(symbol, id);
-
+        
         str = str.Right(len - i);
         pos = str.Find("#define");
     }
-
+    
     return TRUE;
 }
 
@@ -120,23 +120,30 @@ bool wxResourceSymbolTable::WriteIncludeFile(const wxString& filename)
     wxFile file;
     if (!file.Open(filename, wxFile::write))
         return FALSE;
-
+    
+    wxString fileOnly(wxFileNameFromPath(filename));
+    wxString line;
+    line.Printf("/*\n * %s\n * Window identifiers file written by Dialog Editor\n */\n\n",
+        (const char*) fileOnly);
+    
+    file.Write(line, line.Length());
+    
     m_hashTable.BeginFind();
-
+    
     wxNode* node = m_hashTable.Next();
     while (node)
     {
-        char* str = node->key.string;
+        const char* str = node->GetKeyString();
         int id = (int) node->Data() ;
-
+        
         if (!IsStandardSymbol(str))
         {
             wxString line;
             line.Printf("#define %s %ld\n", str, id);
-
+            
             file.Write(line, line.Length());
         }
-
+        
         node = m_hashTable.Next();
     }
     return TRUE;
@@ -170,14 +177,14 @@ bool wxResourceSymbolTable::RemoveSymbol(int id)
 wxString wxResourceSymbolTable::GetSymbolForId(int id)
 {
     m_hashTable.BeginFind();
-
+    
     wxNode* node = m_hashTable.Next();
     while (node)
     {
-        char* str = node->key.string;
+        const char* str = node->GetKeyString();
         if (str && ( ((int) node->Data()) == id) )
             return wxString(str);
-
+        
         node = m_hashTable.Next();
     }
     return wxString("");
@@ -196,13 +203,13 @@ bool wxResourceSymbolTable::SymbolExists(const wxString& symbol) const
 bool wxResourceSymbolTable::IdExists(int id)
 {
     m_hashTable.BeginFind();
-
+    
     wxNode* node = m_hashTable.Next();
     while (node)
     {
         if ( (((int) node->Data()) == id) )
             return TRUE;
-
+        
         node = m_hashTable.Next();
     }
     return FALSE;
@@ -211,24 +218,28 @@ bool wxResourceSymbolTable::IdExists(int id)
 int wxResourceSymbolTable::FindHighestId()
 {
     int highest = 0;
-
+    
     m_hashTable.BeginFind();
-
+    
     wxNode* node = m_hashTable.Next();
     while (node)
     {
         int id = ((int) node->Data());
         if (id > highest)
             highest = id;
-
+        
         node = m_hashTable.Next();
     }
+    
+    // Make sure we don't clash with future standard wxWindows ids
+    if (highest <= wxID_HIGHEST)
+        highest = wxID_HIGHEST + 1;
     return highest;
 }
 
 /*
- * A table of the standard identifiers
- */
+* A table of the standard identifiers
+*/
 
 struct wxStandardSymbolStruct
 {
@@ -238,12 +249,49 @@ struct wxStandardSymbolStruct
 
 static wxStandardSymbolStruct sg_StandardSymbols[] =
 {
-    { "wxID_OK", wxID_OK },
-    { "wxID_CANCEL", wxID_CANCEL },
-    { "wxID_APPLY", wxID_APPLY },
-//    { "wxID_STATIC", wxID_STATIC },
-    { "wxID_YES", wxID_YES },
-    { "wxID_NO", wxID_NO }
+    { "wxID_OK",            wxID_OK },
+    { "wxID_CANCEL",        wxID_CANCEL },
+    { "wxID_APPLY",         wxID_APPLY },
+    { "wxID_HELP",          wxID_HELP },
+    { "wxID_STATIC",        wxID_STATIC },
+    { "wxID_YES",           wxID_YES },
+    { "wxID_NO",            wxID_NO },
+    
+    { "wxID_OPEN",          wxID_OPEN },
+    { "wxID_CLOSE",          wxID_CLOSE },
+    { "wxID_NEW",           wxID_NEW },
+    { "wxID_SAVE",          wxID_SAVE },
+    { "wxID_SAVEAS",        wxID_SAVEAS },
+    { "wxID_REVERT",        wxID_REVERT },
+    { "wxID_EXIT",          wxID_EXIT },
+    { "wxID_UNDO",          wxID_UNDO },
+    { "wxID_REDO",          wxID_REDO },
+    { "wxID_PRINT",         wxID_PRINT },
+    { "wxID_PRINT_SETUP",   wxID_PRINT_SETUP },
+    { "wxID_PREVIEW",       wxID_PREVIEW },
+    { "wxID_ABOUT",         wxID_ABOUT },
+    { "wxID_HELP_CONTENTS", wxID_HELP_CONTENTS },
+    { "wxID_HELP_COMMANDS", wxID_HELP_COMMANDS },
+    { "wxID_HELP_PROCEDURES", wxID_HELP_PROCEDURES },
+    { "wxID_HELP_CONTEXT",  wxID_HELP_CONTEXT },
+    
+    { "wxID_CUT",           wxID_CUT },
+    { "wxID_COPY",          wxID_COPY },
+    { "wxID_PASTE",         wxID_PASTE },
+    { "wxID_CLEAR",         wxID_CLEAR },
+    { "wxID_FIND",          wxID_FIND },
+    { "wxID_DUPLICATE",     wxID_DUPLICATE },
+    
+    { "wxID_FILE1",         wxID_FILE1 },
+    { "wxID_FILE2",         wxID_FILE2 },
+    { "wxID_FILE3",         wxID_FILE3 },
+    { "wxID_FILE4",         wxID_FILE4 },
+    { "wxID_FILE5",         wxID_FILE5 },
+    { "wxID_FILE6",         wxID_FILE6 },
+    { "wxID_FILE7",         wxID_FILE7 },
+    { "wxID_FILE8",         wxID_FILE8 },
+    { "wxID_FILE9",         wxID_FILE9 }
+    
 };
 
 static int sg_StandardSymbolSize = (sizeof(sg_StandardSymbols)/sizeof(wxStandardSymbolStruct));
@@ -271,12 +319,12 @@ bool wxResourceSymbolTable::IsStandardSymbol(const wxString& symbol) const
 bool wxResourceSymbolTable::FillComboBox(wxComboBox* comboBox)
 {
     m_hashTable.BeginFind();
-
+    
     wxNode* node = m_hashTable.Next();
     while (node)
     {
-        char* str = node->key.string;
-
+        const char* str = node->GetKeyString();
+        
         comboBox->Append(str);
         node = m_hashTable.Next();
     }