Changes in src/sas/guiframe/documentation_window.py [f202138:7a508b6] in sasview
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sas/guiframe/documentation_window.py
rf202138 r7a508b6 1 """ 2 documentation module provides a simple means to add help throughout the 3 application. It checks for the existence of html2 package needed to support 4 fully html panel which supports css. The class defined here takes a title for 5 the particular help panel, a pointer to the html documentation file of interest 6 within the documentation tree along with a 'command' string such as a page 7 anchor or a query string etc. The path to the doc directory is retrieved 8 automatically by the class itself. Thus with these three pieces of information 9 the class generates a panel with the appropriate title bar and help file 10 formatted according the style sheets called in the html file. Finally, if an 11 old version of Python is running and the html2 package is not available the 12 class brings up the default browser and passes the file:/// string to it. In 13 this case however the instruction portion is usually not passed for security 14 reasons. 15 """ 1 16 import os 2 17 import logging … … 4 19 import webbrowser 5 20 import urllib 21 import sys 6 22 7 wx_supports_html2 = True 23 SPHINX_DOC_ENV = "SASVIEW_DOC_PATH" 24 WX_SUPPORTS_HTML2 = True 8 25 try: 9 26 import wx.html2 as html 10 27 except: 11 wx_supports_html2 = False 28 WX_SUPPORTS_HTML2 = False 29 12 30 13 31 from gui_manager import get_app_dir … … 15 33 16 34 class DocumentationWindow(wx.Frame): 17 def __init__(self, parent, id, path, title, size=(850, 540)): 18 wx.Frame.__init__(self, parent, id, title, size=size) 35 """ 36 DocumentationWindow inherits from wx.Frame and provides a centralized 37 coherent framework for all help documentation. Help files must be html 38 files stored in an properly organized tree below the top 'doc' folder. In 39 order to display the appropriate help file from anywhere in the gui, the 40 code simply needs to know the location below the top level where the 41 help file resides along with the name of the help file. 42 called 43 (self, parent, dummy_id, path, url_instruction, title, size=(850, 540)) 19 44 20 SPHINX_DOC_ENV = "SASVIEW_DOC_PATH" 45 :param path: path to html file beginning AFTER /doc/ and ending in the 46 file.html 47 :param url_instructions: anchor string or other query e.g. '#MyAnchor 48 :param title - text to place in the title bar of the help panel 49 """ 50 def __init__(self, parent, dummy_id, path, url_instruction, title, size=(850, 540)): 51 wx.Frame.__init__(self, parent, dummy_id, title, size=size) 52 21 53 if SPHINX_DOC_ENV in os.environ: 22 54 docs_path = os.path.join(os.environ[SPHINX_DOC_ENV]) … … 27 59 docs_path = os.path.join(get_app_dir(), "doc") 28 60 61 #note that filepath for mac OS, at least in bundle starts with a 62 #forward slash as /Application, while the PC string begins C:\ 63 #It seems that mac OS is happy with four slashes as in file:////App... 64 #Two slashes is not sufficient to indicate path from root. Thus for now 65 #we use "file:///" +... If the mac behavior changes may need to make the 66 #file:/// be another constant at the beginning that yields // for Mac 67 #and /// for PC. 68 #Note added June 21, 2015 PDB 29 69 file_path = os.path.join(docs_path, path) 30 url = "file:///" + urllib.quote(file_path )70 url = "file:///" + urllib.quote(file_path, r'/\:')+ url_instruction 31 71 32 72 if not os.path.exists(file_path): 33 73 logging.error("Could not find Sphinx documentation at %s \ 34 74 -- has it been built?", file_path) 35 elif wx_supports_html2:75 elif WX_SUPPORTS_HTML2: 36 76 # Complete HTML/CSS support! 37 77 self.view = html.WebView.New(self) 38 78 self.view.LoadURL(url) 39 79 self.Show() 40 else: 80 else: 41 81 logging.error("No html2 support, popping up a web browser") 42 82 #For cases that do not build against current version dependency 43 # Wx 3.0 we provide a webbrowser call - this is particularly for 83 # Wx 3.0 we provide a webbrowser call - this is particularly for 44 84 #Red hat used at SNS for which Wx 3.0 is not available. This 45 #does not deal with issue of math in docs of course. 85 #does not deal with issue of math in docs of course. 46 86 webbrowser.open_new_tab(url) 47 87 48 88 def main(): 89 """ 90 main loop function if running alone for testing. 91 """ 49 92 app = wx.App() 50 DocumentationWindow(None, -1, "index.html", " Documentation",)93 DocumentationWindow(None, -1, "index.html", "", "Documentation",) 51 94 app.MainLoop() 52 95
Note: See TracChangeset
for help on using the changeset viewer.