summaryrefslogtreecommitdiff
blob: 1b37e3013c1e350345564b7c527f3146501e1f14 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
diff -Naur kicad-5.1.5-orig/CMakeLists.txt kicad-5.1.5/CMakeLists.txt
--- kicad-5.1.5-orig/CMakeLists.txt	2019-11-14 09:09:45.000000000 -0800
+++ kicad-5.1.5/CMakeLists.txt	2019-12-15 03:41:57.574995996 -0800
@@ -442,6 +442,10 @@
 set( KIFACE_PREFIX  "_" )
 #message( STATUS "KIFACE_SUFFIX:${KIFACE_SUFFIX}  KIFACE_PREFIX:${KIFACE_PREFIX}" )
 
+# KICAD_HELP is the location of the help files accessed from the UI
+# (usually provided via kicad-doc package)
+set ( KICAD_HELP share/doc/kicad
+    CACHE PATH "Alternative location of KiCad help files.")
 
 #================================================
 # Locations for install targets.
diff -Naur kicad-5.1.5-orig/CMakeModules/config.h.cmake kicad-5.1.5/CMakeModules/config.h.cmake
--- kicad-5.1.5-orig/CMakeModules/config.h.cmake	2019-11-14 09:09:45.000000000 -0800
+++ kicad-5.1.5/CMakeModules/config.h.cmake	2019-12-15 03:42:00.368013375 -0800
@@ -59,6 +59,10 @@
 /// The install prefix defined during CMake configuration or fall back to CMAKE_INSTALL_PREFIX.
 #define DEFAULT_INSTALL_PATH            "@DEFAULT_INSTALL_PATH@"
 
+/// KiCad help files path can be different on some systems allow adding alternative,
+/// search path for them. Defaults to CMAKE_INSTALL_PREFIX/share/doc/kicad
+#define KICAD_HELP                       "@KICAD_HELP@"
+
 /// The wxPython version found during configuration.
 #if defined( KICAD_SCRIPTING_WXPYTHON )
 #define WXPYTHON_VERSION                "@WXPYTHON_VERSION@"
diff -Naur kicad-5.1.5-orig/common/searchhelpfilefullpath.cpp kicad-5.1.5/common/searchhelpfilefullpath.cpp
--- kicad-5.1.5-orig/common/searchhelpfilefullpath.cpp	2019-11-14 09:09:45.000000000 -0800
+++ kicad-5.1.5/common/searchhelpfilefullpath.cpp	2019-12-15 03:42:03.168030796 -0800
@@ -25,7 +25,7 @@
 
 #include <pgm_base.h>
 #include <common.h>
-#include <config.h>     // to define DEFAULT_INSTALL_PATH
+#include <config.h>     // to define DEFAULT_INSTALL_PATH and KICAD_HELP
 #include <macros.h>
 #include <trace_helpers.h>
 
@@ -69,6 +69,10 @@
     wxArrayString   subdirs;
     wxArrayString   altsubdirs;
     SEARCH_STACK    ss = aSStack;
+#if ! defined(__WXMAC__) // && defined(__linux__)
+    SEARCH_STACK    altss;
+    wxArrayString   moresubdirs;
+#endif
 
     // It might already be in aSStack, but why depend on other code
     // far away when it's so easy to add it again (to our copy) as the first place to look.
@@ -76,6 +80,7 @@
     // This is CMAKE_INSTALL_PREFIX unless DEFAULT_INSTALL_PATH was defined during
     // build configuration:
     ss.AddPaths( wxT( DEFAULT_INSTALL_PATH ), 0 );
+    altss.AddPaths( wxT( KICAD_HELP ), 0 );
 
 #if defined(__WXMAC__)
     ss.AddPaths( GetOSXKicadMachineDataDir() );
@@ -104,16 +109,17 @@
 
     // Based on kicad-doc.bzr/CMakeLists.txt, line 20, the help files are
     // installed into "<CMAKE_INSTALL_PREFIX>/share/doc/kicad/help" for linux.
-    // This is ${KICAD_HELP} var in that CMakeLists.txt file.
     // Below we account for an international subdirectory.
     subdirs.Add( "share" );
     subdirs.Add( "doc" );
     subdirs.Add( "kicad" );
     subdirs.Add( "help" );
 
+    // For custom help path installations via ${KICAD_HELP}
+    moresubdirs.Add( "help" );
+
     // Based on kicad-doc.bzr/CMakeLists.txt, line 35, the help files are
     // installed into "<CMAKE_INSTALL_PREFIX>/doc/help" for Windows.
-    // This is ${KICAD_HELP} var in that CMakeLists.txt file.
     // Below we account for an international subdirectory.
     altsubdirs.Add( "doc" );
     altsubdirs.Add( "help" );
@@ -159,6 +165,9 @@
     {
         subdirs.Add( locale_name_dirs[ii] );
         altsubdirs.Add( locale_name_dirs[ii] );
+#if ! defined(__WXMAC__) // && defined(__linux__)
+        moresubdirs.Add( locale_name_dirs[ii] );
+#endif
 
         fn = FindFileInSearchPaths( ss, aBaseName + wxT( ".html" ), &altsubdirs );
 
@@ -188,8 +197,27 @@
         if( !fn.IsEmpty() )
             break;
 
+#if ! defined(__WXMAC__) // && defined(__linux__)
+        fn = FindFileInSearchPaths( altss, aBaseName + wxT( ".html" ), &moresubdirs );
+
+        if( !fn.IsEmpty() )
+        {
+            // Prepend URI protocol since we will open in a browser
+            fn = wxT( "file://" ) + fn;
+            break;
+        }
+
+        fn = FindFileInSearchPaths( altss, aBaseName + wxT( ".pdf" ), &moresubdirs );
+
+        if( !fn.IsEmpty() )
+            break;
+#endif
+
         subdirs.RemoveAt( subdirs.GetCount() - 1 );
         altsubdirs.RemoveAt( altsubdirs.GetCount() - 1 );
+#if ! defined(__WXMAC__) // && defined(__linux__)
+        moresubdirs.RemoveAt( altsubdirs.GetCount() - 1 );
+#endif
     }
 
     return fn;