← Back to team overview

kicad-developers team mailing list archive

Add URL to menu (update: new doc website)

 

Hi devs,

In my previous e-mail I proposed a feature which opens the documentation in
the default web-browser (only when off-line documentation couldn't be found
or isn't installed).
At that time, the reason to not implement this feature was mainly due to
the URL.

Now the new documentation URL is successfully setup (thanks to ajo!), I
updated my code.
Please, see my attachment of the new patch, which is *tested* and ready to
be merged.

All thanks for your collaboration! Have a nice day.

Kind regards,
Melroy van den Berg
IRC: melroy / danger89
=== modified file 'AUTHORS.txt'
--- AUTHORS.txt	2014-10-22 10:24:16 +0000
+++ AUTHORS.txt	2015-05-18 13:11:31 +0000
@@ -1,5 +1,5 @@
-* Copyright (C) 1992-2014 Jean-Pierre Charras
-* Copyright (C) 1992-2014 Kicad Developers Team
+* Copyright (C) 1992-2015 Jean-Pierre Charras
+* Copyright (C) 1992-2015 Kicad Developers Team
 * under GNU General Public License (see copyright.txt)
 
 == Main Authors
@@ -31,6 +31,7 @@
 Nick Østergaard <oe.nick[at]gmail.com>
 Andrew Zonenberg <azonenberg[at]drawersteak.com>
 Cirilo Bernardo <cirilo_bernardo[at]yahoo.com>
+Melroy van den Berg <webmaster1989[at]gmail.com>
 
 See also CHANGELOG.txt for contributors.
 
@@ -38,6 +39,7 @@
 Jean-Pierre Charras <jean-pierre.charras[at]gipsa-lab.inpg.fr>
 Igor Plyatov <plyatov[at]gmail.com>
 Fabrizio Tappero <fabrizio-dot-tappero[at]gmail-dot-com>
+Melroy van den Berg <webmaster1989[at]gmail.com>
 
 == Translators
 Czech (CZ) Martin Kratoška <martin[at]ok1rr-dot-com>

=== modified file 'common/basicframe.cpp'
--- common/basicframe.cpp	2015-05-11 16:25:33 +0000
+++ common/basicframe.cpp	2015-05-29 19:01:12 +0000
@@ -33,6 +33,7 @@
 #include <wx/clipbrd.h>
 #include <wx/statline.h>
 #include <wx/platinfo.h>
+#include <wx/hashmap.h>
 
 #include <build_version.h>
 #include <fctsys.h>
@@ -61,7 +62,41 @@
 /// Configuration file entry for wxAuiManger perspective.
 static const wxChar entryPerspective[] = wxT( "Perspective" );
 
-
+/// Documentation location URL
+static const wxString documentationURL = wxT("http://docs.kicad-pcb.org/%s";);
+
+/// Define Getting Started online URI
+static const wxString gettingStartedURI = wxT("Getting_Started_in_KiCad/Getting_Started_in_KiCad.html");
+
+/// Define KiCad online URI
+static const wxString kiCadURI = wxT("KiCad/KiCad.html");
+
+/// Define Eeschema online URI
+static const wxString eeschemaURI = wxT("Eeschema/Eeschema.html");
+
+/// Define Pcbnew online URI
+static const wxString pcbnewURI = wxT("Pcbnew/Pcbnew.html");
+
+/// Define GerbView online URI
+static const wxString gerbviewURI = wxT("GerbView/GerbView.html");
+
+/// Define Pl Editor online URI
+static const wxString plEditorURI = wxT("Pl_Editor/Pl_Editor.html");
+
+/// Define CvPcb Editor online URI
+static const wxString cvPcbURI = wxT("CvPcb/CvPcb.html");
+
+/// Enum holding all the possible values
+enum HelpValue { helpKiCad,
+                 helpEeschema,
+                 helpPcbnew,
+                 helpGerbView,
+                 helpPlEditor,
+                 helpCvPcb};
+
+/// Map to associate the strings with the enum values
+WX_DECLARE_STRING_HASH_MAP( int, HelpHashMap);
+HelpHashMap helpHashMap;
 
 EDA_BASE_FRAME::EDA_BASE_FRAME( wxWindow* aParent, FRAME_T aFrameType,
         const wxString& aTitle, const wxPoint& aPos, const wxSize& aSize,
@@ -92,6 +127,14 @@
 
     m_FramePos.x = m_FramePos.y = 0;
 
+    // Init Hash map
+    helpHashMap["kicad"] = helpKiCad;
+    helpHashMap["eeschema"] = helpEeschema;
+    helpHashMap["pcbnew"] = helpPcbnew;
+    helpHashMap["gerbview"] = helpGerbView;
+    helpHashMap["pl_editor"] = helpPlEditor;
+    helpHashMap["cvpcb"] = helpCvPcb;
+
     Connect( ID_HELP_COPY_VERSION_STRING,
              wxEVT_COMMAND_MENU_SELECTED,
              wxCommandEventHandler( EDA_BASE_FRAME::CopyVersionInfoToClipboard ) );
@@ -388,7 +431,8 @@
 
 void EDA_BASE_FRAME::GetKicadHelp( wxCommandEvent& event )
 {
-    const SEARCH_STACK& search = sys_search();
+    const SEARCH_STACK& search = sys_search();    
+    wxString helpURL;
 
     /* We have to get document for beginners,
      * or the full specific doc
@@ -396,6 +440,7 @@
      * else the specific doc file (its name is in Kiface().GetHelpFileName())
      * The document for beginners is the same for all KiCad utilities
      */
+
     if( event.GetId() == wxID_INDEX )
     {
         // List of possible names for Getting Started in KiCad
@@ -417,32 +462,71 @@
 
         if( !helpFile )
         {
-            wxString msg = wxString::Format( _(
-                "Html or pdf help file \n'%s'\n or\n'%s' could not be found." ), names[0], names[1] );
-            wxMessageBox( msg );
+            // If help file (html / pdf) could not be found,
+            // open the online Getting started documenation URL
+            helpURL = wxString::Format( _(documentationURL),
+                               GetChars( gettingStartedURI )
+                               );
         }
         else
         {
             GetAssociatedDocument( this, helpFile );
         }
-
-        return;
-    }
-
-    wxString base_name = help_name();
-    wxString helpFile = SearchHelpFileFullPath( search, base_name );
-
-    if( !helpFile )
-    {
-        wxString msg = wxString::Format( _(
-            "Help file '%s' could not be found." ),
-            GetChars( base_name )
-            );
-        wxMessageBox( msg );
     }
     else
     {
-        GetAssociatedDocument( this, helpFile );
+        wxString base_name = help_name();
+        wxString helpFile = SearchHelpFileFullPath( search, base_name );
+
+        if( !helpFile )
+        {
+            wxString uri;
+            // Switch on the enum value
+            switch(helpHashMap[base_name]) {
+            case helpKiCad:
+                uri = kiCadURI;
+                break;
+            case helpEeschema:
+                uri = eeschemaURI;
+                break;
+            case helpPcbnew:
+                uri = pcbnewURI;
+                break;
+            case helpGerbView:
+                uri = gerbviewURI;
+                break;
+            case helpPlEditor:
+                uri = plEditorURI;
+                break;
+            case helpCvPcb:
+                uri = cvPcbURI;
+                break;
+            default:
+                wxString msg = wxString::Format( _(
+                    "Help file/URLs for '%s' could not be found." ),
+                    GetChars( base_name )
+                    );
+                wxMessageBox( msg );
+                break;
+            }
+
+            if(!uri.IsEmpty())
+            {
+                helpURL = wxString::Format( _(documentationURL),
+                               GetChars( uri )
+                               );
+            }
+        }
+        else
+        {
+            GetAssociatedDocument( this, helpFile );
+        }
+    }
+
+    if(!helpURL.IsEmpty())
+    {
+        // Open website
+        GetAssociatedDocument( this, helpURL );
     }
 }
 


Follow ups