]> git.saurik.com Git - wxWidgets.git/blobdiff - src/html/m_fonts.cpp
fixed handling of the accelerators of menu items added to already attached submenus
[wxWidgets.git] / src / html / m_fonts.cpp
index b183ffaa33caaff53ce519b08b939ed809bc5917..ebcbe2625ad7a2d0d8a66ec3dd432db5ea958fed 100644 (file)
@@ -4,10 +4,10 @@
 // Author:      Vaclav Slavik
 // RCS-ID:      $Id$
 // Copyright:   (c) 1999 Vaclav Slavik
 // Author:      Vaclav Slavik
 // RCS-ID:      $Id$
 // Copyright:   (c) 1999 Vaclav Slavik
-// Licence:     wxWindows Licence
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 /////////////////////////////////////////////////////////////////////////////
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
 #pragma implementation
 #endif
 
 #pragma implementation
 #endif
 
 #include "wx/defs.h"
 #if wxUSE_HTML && wxUSE_STREAMS
 
 #include "wx/defs.h"
 #if wxUSE_HTML && wxUSE_STREAMS
 
-#ifdef __BORDLANDC__
+#ifdef __BORLANDC__
 #pragma hdrstop
 #endif
 
 #ifndef WXPRECOMP
 #pragma hdrstop
 #endif
 
 #ifndef WXPRECOMP
-#include "wx/wx.h"
 #endif
 
 #include "wx/html/forcelnk.h"
 #endif
 
 #include "wx/html/forcelnk.h"
 FORCE_LINK_ME(m_fonts)
 
 
 FORCE_LINK_ME(m_fonts)
 
 
-TAG_HANDLER_BEGIN(FONT, "FONT")
+TAG_HANDLER_BEGIN(FONT, "FONT" )
 
     TAG_HANDLER_VARS
 
     TAG_HANDLER_VARS
-        wxSortedArrayString m_Faces;
+        wxArrayString m_Faces;
+
+    TAG_HANDLER_CONSTR(FONT) { }
 
     TAG_HANDLER_PROC(tag)
     {
 
     TAG_HANDLER_PROC(tag)
     {
@@ -43,72 +44,73 @@ TAG_HANDLER_BEGIN(FONT, "FONT")
         int oldsize = m_WParser->GetFontSize();
         wxString oldface = m_WParser->GetFontFace();
 
         int oldsize = m_WParser->GetFontSize();
         wxString oldface = m_WParser->GetFontFace();
 
-        if (tag.HasParam(wxT("COLOR"))) 
-           {
-            unsigned long tmp = 0; 
+        if (tag.HasParam(wxT("COLOR")))
+        {
             wxColour clr;
             wxColour clr;
-            if (tag.ScanParam(wxT("COLOR"), wxT("#%lX"), &tmp) == 1) 
-               {
-                clr = wxColour((tmp & 0xFF0000) >> 16 , (tmp & 0x00FF00) >> 8, (tmp & 0x0000FF));
+            if (tag.GetParamAsColour(wxT("COLOR"), &clr))
+            {
                 m_WParser->SetActualColor(clr);
                 m_WParser->GetContainer()->InsertCell(new wxHtmlColourCell(clr));
             }
         }
 
                 m_WParser->SetActualColor(clr);
                 m_WParser->GetContainer()->InsertCell(new wxHtmlColourCell(clr));
             }
         }
 
-        if (tag.HasParam(wxT("SIZE"))) 
-           {
-            long tmp = 0;
-            wxChar c = tag.GetParam(wxT("SIZE"))[(unsigned int) 0];
-            if (tag.ScanParam(wxT("SIZE"), wxT("%li"), &tmp) == 1) 
-               {
-                if (c == '+' || c == '-')
+        if (tag.HasParam(wxT("SIZE")))
+        {
+            int tmp = 0;
+            wxChar c = tag.GetParam(wxT("SIZE")).GetChar(0);
+            if (tag.GetParamAsInt(wxT("SIZE"), &tmp))
+            {
+                if (c == wxT('+') || c == wxT('-'))
                     m_WParser->SetFontSize(oldsize+tmp);
                 else
                     m_WParser->SetFontSize(tmp);
                     m_WParser->SetFontSize(oldsize+tmp);
                 else
                     m_WParser->SetFontSize(tmp);
-                m_WParser->GetContainer()->InsertCell(new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
+                m_WParser->GetContainer()->InsertCell(
+                    new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
             }
         }
             }
         }
-        
-        if (tag.HasParam(wxT("FACE"))) 
-           {
-            if (m_Faces.GetCount() == 0) 
-               {
+
+        if (tag.HasParam(wxT("FACE")))
+        {
+            if (m_Faces.GetCount() == 0)
+            {
                 wxFontEnumerator enu;
                 enu.EnumerateFacenames();
                 wxFontEnumerator enu;
                 enu.EnumerateFacenames();
-                m_Faces = *enu.GetFacenames();
+                const wxArrayString *faces = enu.GetFacenames();
+                if ( faces )
+                    m_Faces = *faces;
             }
             }
-            wxStringTokenizer tk(tag.GetParam(wxT("FACE")), ",");
+            wxStringTokenizer tk(tag.GetParam(wxT("FACE")), wxT(","));
             int index;
             int index;
-            
-            while (tk.HasMoreTokens()) 
-               {
-                if ((index = m_Faces.Index(tk.GetNextToken())) != wxNOT_FOUND) 
-                       {
+
+            while (tk.HasMoreTokens())
+            {
+                if ((index = m_Faces.Index(tk.GetNextToken(), false)) != wxNOT_FOUND)
+                {
                     m_WParser->SetFontFace(m_Faces[index]);
                     m_WParser->GetContainer()->InsertCell(new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
                     break;
                 }
                     m_WParser->SetFontFace(m_Faces[index]);
                     m_WParser->GetContainer()->InsertCell(new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
                     break;
                 }
-               }
+            }
         }
 
         ParseInner(tag);
 
         }
 
         ParseInner(tag);
 
-        if (oldface != m_WParser->GetFontFace()) 
-           {
+        if (oldface != m_WParser->GetFontFace())
+        {
             m_WParser->SetFontFace(oldface);
             m_WParser->GetContainer()->InsertCell(new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
             m_WParser->SetFontFace(oldface);
             m_WParser->GetContainer()->InsertCell(new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
-        }        
-        if (oldsize != m_WParser->GetFontSize()) 
-           {
+        }
+        if (oldsize != m_WParser->GetFontSize())
+        {
             m_WParser->SetFontSize(oldsize);
             m_WParser->GetContainer()->InsertCell(new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
             m_WParser->SetFontSize(oldsize);
             m_WParser->GetContainer()->InsertCell(new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
-        }        
-        if (oldclr != m_WParser->GetActualColor()) 
-           {
+        }
+        if (oldclr != m_WParser->GetActualColor())
+        {
             m_WParser->SetActualColor(oldclr);
             m_WParser->GetContainer()->InsertCell(new wxHtmlColourCell(oldclr));
         }
             m_WParser->SetActualColor(oldclr);
             m_WParser->GetContainer()->InsertCell(new wxHtmlColourCell(oldclr));
         }
-        return TRUE;
+        return true;
     }
 
 TAG_HANDLER_END(FONT)
     }
 
 TAG_HANDLER_END(FONT)
@@ -116,18 +118,22 @@ TAG_HANDLER_END(FONT)
 
 TAG_HANDLER_BEGIN(FACES_U, "U,STRIKE")
 
 
 TAG_HANDLER_BEGIN(FACES_U, "U,STRIKE")
 
+    TAG_HANDLER_CONSTR(FACES_U) { }
+
     TAG_HANDLER_PROC(tag)
     {
         int underlined = m_WParser->GetFontUnderlined();
 
     TAG_HANDLER_PROC(tag)
     {
         int underlined = m_WParser->GetFontUnderlined();
 
-        m_WParser->SetFontUnderlined(TRUE);
-        m_WParser->GetContainer()->InsertCell(new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
+        m_WParser->SetFontUnderlined(true);
+        m_WParser->GetContainer()->InsertCell(
+            new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
 
         ParseInner(tag);
 
         m_WParser->SetFontUnderlined(underlined);
 
         ParseInner(tag);
 
         m_WParser->SetFontUnderlined(underlined);
-        m_WParser->GetContainer()->InsertCell(new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
-        return TRUE;
+        m_WParser->GetContainer()->InsertCell(
+            new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
+        return true;
     }
 
 TAG_HANDLER_END(FACES_U)
     }
 
 TAG_HANDLER_END(FACES_U)
@@ -136,19 +142,22 @@ TAG_HANDLER_END(FACES_U)
 
 
 TAG_HANDLER_BEGIN(FACES_B, "B,STRONG")
 
 
 TAG_HANDLER_BEGIN(FACES_B, "B,STRONG")
+    TAG_HANDLER_CONSTR(FACES_B) { }
 
     TAG_HANDLER_PROC(tag)
     {
         int bold = m_WParser->GetFontBold();
 
 
     TAG_HANDLER_PROC(tag)
     {
         int bold = m_WParser->GetFontBold();
 
-        m_WParser->SetFontBold(TRUE);
-        m_WParser->GetContainer()->InsertCell(new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
+        m_WParser->SetFontBold(true);
+        m_WParser->GetContainer()->InsertCell(
+            new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
 
         ParseInner(tag);
 
         m_WParser->SetFontBold(bold);
 
         ParseInner(tag);
 
         m_WParser->SetFontBold(bold);
-        m_WParser->GetContainer()->InsertCell(new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
-        return TRUE;
+        m_WParser->GetContainer()->InsertCell(
+            new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
+        return true;
     }
 
 TAG_HANDLER_END(FACES_B)
     }
 
 TAG_HANDLER_END(FACES_B)
@@ -157,19 +166,22 @@ TAG_HANDLER_END(FACES_B)
 
 
 TAG_HANDLER_BEGIN(FACES_I, "I,EM,CITE,ADDRESS")
 
 
 TAG_HANDLER_BEGIN(FACES_I, "I,EM,CITE,ADDRESS")
+    TAG_HANDLER_CONSTR(FACES_I) { }
 
     TAG_HANDLER_PROC(tag)
     {
         int italic = m_WParser->GetFontItalic();
 
 
     TAG_HANDLER_PROC(tag)
     {
         int italic = m_WParser->GetFontItalic();
 
-        m_WParser->SetFontItalic(TRUE);
-        m_WParser->GetContainer()->InsertCell(new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
+        m_WParser->SetFontItalic(true);
+        m_WParser->GetContainer()->InsertCell(
+            new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
 
         ParseInner(tag);
 
         m_WParser->SetFontItalic(italic);
 
         ParseInner(tag);
 
         m_WParser->SetFontItalic(italic);
-        m_WParser->GetContainer()->InsertCell(new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
-        return TRUE;
+        m_WParser->GetContainer()->InsertCell(
+            new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
+        return true;
     }
 
 TAG_HANDLER_END(FACES_I)
     }
 
 TAG_HANDLER_END(FACES_I)
@@ -178,19 +190,22 @@ TAG_HANDLER_END(FACES_I)
 
 
 TAG_HANDLER_BEGIN(FACES_TT, "TT,CODE,KBD,SAMP")
 
 
 TAG_HANDLER_BEGIN(FACES_TT, "TT,CODE,KBD,SAMP")
+    TAG_HANDLER_CONSTR(FACES_TT) { }
 
     TAG_HANDLER_PROC(tag)
     {
         int fixed = m_WParser->GetFontFixed();
 
 
     TAG_HANDLER_PROC(tag)
     {
         int fixed = m_WParser->GetFontFixed();
 
-        m_WParser->SetFontFixed(TRUE);
-        m_WParser->GetContainer()->InsertCell(new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
+        m_WParser->SetFontFixed(true);
+        m_WParser->GetContainer()->InsertCell(
+            new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
 
         ParseInner(tag);
 
         m_WParser->SetFontFixed(fixed);
 
         ParseInner(tag);
 
         m_WParser->SetFontFixed(fixed);
-        m_WParser->GetContainer()->InsertCell(new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
-        return TRUE;
+        m_WParser->GetContainer()->InsertCell(
+            new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
+        return true;
     }
 
 TAG_HANDLER_END(FACES_TT)
     }
 
 TAG_HANDLER_END(FACES_TT)
@@ -200,6 +215,7 @@ TAG_HANDLER_END(FACES_TT)
 
 
 TAG_HANDLER_BEGIN(Hx, "H1,H2,H3,H4,H5,H6")
 
 
 TAG_HANDLER_BEGIN(Hx, "H1,H2,H3,H4,H5,H6")
+    TAG_HANDLER_CONSTR(Hx) { }
 
     TAG_HANDLER_PROC(tag)
     {
 
     TAG_HANDLER_PROC(tag)
     {
@@ -213,10 +229,10 @@ TAG_HANDLER_BEGIN(Hx, "H1,H2,H3,H4,H5,H6")
         old_f = m_WParser->GetFontFixed();
         old_al = m_WParser->GetAlign();
 
         old_f = m_WParser->GetFontFixed();
         old_al = m_WParser->GetAlign();
 
-        m_WParser->SetFontBold(TRUE);
-        m_WParser->SetFontItalic(FALSE);
-        m_WParser->SetFontUnderlined(FALSE);
-        m_WParser->SetFontFixed(FALSE);
+        m_WParser->SetFontBold(true);
+        m_WParser->SetFontItalic(false);
+        m_WParser->SetFontUnderlined(false);
+        m_WParser->SetFontFixed(false);
 
         if (tag.GetName() == wxT("H1"))
                 m_WParser->SetFontSize(7);
 
         if (tag.GetName() == wxT("H1"))
                 m_WParser->SetFontSize(7);
@@ -224,24 +240,24 @@ TAG_HANDLER_BEGIN(Hx, "H1,H2,H3,H4,H5,H6")
                 m_WParser->SetFontSize(6);
         else if (tag.GetName() == wxT("H3"))
                 m_WParser->SetFontSize(5);
                 m_WParser->SetFontSize(6);
         else if (tag.GetName() == wxT("H3"))
                 m_WParser->SetFontSize(5);
-        else if (tag.GetName() == wxT("H4")) 
-           {
+        else if (tag.GetName() == wxT("H4"))
+        {
                 m_WParser->SetFontSize(5);
                 m_WParser->SetFontSize(5);
-                m_WParser->SetFontItalic(TRUE);
-                m_WParser->SetFontBold(FALSE);
+                m_WParser->SetFontItalic(true);
+                m_WParser->SetFontBold(false);
         }
         else if (tag.GetName() == wxT("H5"))
                 m_WParser->SetFontSize(4);
         }
         else if (tag.GetName() == wxT("H5"))
                 m_WParser->SetFontSize(4);
-        else if (tag.GetName() == wxT("H6")) 
-           {
+        else if (tag.GetName() == wxT("H6"))
+        {
                 m_WParser->SetFontSize(4);
                 m_WParser->SetFontSize(4);
-                m_WParser->SetFontItalic(TRUE);
-                m_WParser->SetFontBold(FALSE);
+                m_WParser->SetFontItalic(true);
+                m_WParser->SetFontBold(false);
         }
 
         c = m_WParser->GetContainer();
         }
 
         c = m_WParser->GetContainer();
-        if (c->GetFirstCell()) 
-           {
+        if (c->GetFirstChild())
+        {
             m_WParser->CloseContainer();
             m_WParser->OpenContainer();
             c = m_WParser->GetContainer();
             m_WParser->CloseContainer();
             m_WParser->OpenContainer();
             c = m_WParser->GetContainer();
@@ -262,19 +278,21 @@ TAG_HANDLER_BEGIN(Hx, "H1,H2,H3,H4,H5,H6")
         m_WParser->SetFontFixed(old_f);
         m_WParser->SetAlign(old_al);
 
         m_WParser->SetFontFixed(old_f);
         m_WParser->SetAlign(old_al);
 
-        m_WParser->GetContainer()->InsertCell(new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
+        m_WParser->GetContainer()->InsertCell(
+            new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
         m_WParser->CloseContainer();
         m_WParser->OpenContainer();
         c = m_WParser->GetContainer();
         c->SetIndent(m_WParser->GetCharHeight(), wxHTML_INDENT_TOP);
 
         m_WParser->CloseContainer();
         m_WParser->OpenContainer();
         c = m_WParser->GetContainer();
         c->SetIndent(m_WParser->GetCharHeight(), wxHTML_INDENT_TOP);
 
-        return TRUE;
+        return true;
     }
 
 TAG_HANDLER_END(Hx)
 
 
 TAG_HANDLER_BEGIN(BIGSMALL, "BIG,SMALL")
     }
 
 TAG_HANDLER_END(Hx)
 
 
 TAG_HANDLER_BEGIN(BIGSMALL, "BIG,SMALL")
+    TAG_HANDLER_CONSTR(BIGSMALL) { }
 
     TAG_HANDLER_PROC(tag)
     {
 
     TAG_HANDLER_PROC(tag)
     {
@@ -282,13 +300,15 @@ TAG_HANDLER_BEGIN(BIGSMALL, "BIG,SMALL")
         int sz = (tag.GetName() == wxT("BIG")) ? +1 : -1;
 
         m_WParser->SetFontSize(sz);
         int sz = (tag.GetName() == wxT("BIG")) ? +1 : -1;
 
         m_WParser->SetFontSize(sz);
-        m_WParser->GetContainer()->InsertCell(new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
+        m_WParser->GetContainer()->InsertCell(
+            new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
 
         ParseInner(tag);
 
         m_WParser->SetFontSize(oldsize);
 
         ParseInner(tag);
 
         m_WParser->SetFontSize(oldsize);
-        m_WParser->GetContainer()->InsertCell(new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
-        return TRUE;
+        m_WParser->GetContainer()->InsertCell(
+            new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
+        return true;
     }
 
 TAG_HANDLER_END(BIGSMALL)
     }
 
 TAG_HANDLER_END(BIGSMALL)