wxruby3 1.7.0 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. checksums.yaml +4 -4
  2. data/INSTALL.md +27 -2
  3. data/README.md +15 -15
  4. data/ext/wxruby3/include/wxRubyApp.h +145 -46
  5. data/ext/wxruby3/include/wxruby-ComboPopup.h +25 -8
  6. data/ext/wxruby3/include/wxruby-GCTracking.h +262 -0
  7. data/ext/wxruby3/include/wxruby-MBConv.h +190 -0
  8. data/ext/wxruby3/include/wxruby-SharedEventHandler.h +183 -0
  9. data/ext/wxruby3/include/wxruby-SharedPtr.h +104 -0
  10. data/ext/wxruby3/include/wxruby-runtime.h +29 -0
  11. data/ext/wxruby3/swig/custom/rubytracking.swg +8 -22
  12. data/ext/wxruby3/swig/custom/wx_ruby_shared_ptr.i +434 -0
  13. data/ext/wxruby3/swig/custom/wx_shared_ptr.i +431 -0
  14. data/ext/wxruby3/swig/mark_free_impl.i +7 -132
  15. data/ext/wxruby3/swig/memory_management.i +8 -44
  16. data/ext/wxruby3/swig/wx.i +46 -73
  17. data/lib/wx/core/const.rb +0 -1
  18. data/lib/wx/core/context_help.rb +17 -0
  19. data/lib/wx/core/cursor.rb +1 -0
  20. data/lib/wx/core/helpcontrollerhelpprovider.rb +10 -2
  21. data/lib/wx/core/mbconv.rb +11 -0
  22. data/lib/wx/core/media_ctrl.rb +31 -0
  23. data/lib/wx/core/top_level_window.rb +7 -0
  24. data/lib/wx/core.rb +6 -0
  25. data/lib/wx/doc/art_provider.rb +17 -0
  26. data/lib/wx/doc/context_help.rb +42 -0
  27. data/lib/wx/doc/core.rb +0 -5
  28. data/lib/wx/doc/functions.rb +10 -0
  29. data/lib/wx/doc/gen/affine_matrix2d.rb +2 -0
  30. data/lib/wx/doc/gen/art_provider.rb +12 -0
  31. data/lib/wx/doc/gen/aui/aui_notebook_event.rb +15 -15
  32. data/lib/wx/doc/gen/aui/aui_pane_info.rb +8 -8
  33. data/lib/wx/doc/gen/aui/aui_tool_bar_event.rb +5 -5
  34. data/lib/wx/doc/gen/book_ctrl_base.rb +2 -1
  35. data/lib/wx/doc/gen/calendar_event.rb +5 -5
  36. data/lib/wx/doc/gen/choicebook.rb +2 -2
  37. data/lib/wx/doc/gen/collapsible_pane.rb +1 -1
  38. data/lib/wx/doc/gen/colour_dialog.rb +1 -1
  39. data/lib/wx/doc/gen/colour_picker_event.rb +3 -3
  40. data/lib/wx/doc/gen/context_help_button.rb +0 -53
  41. data/lib/wx/doc/gen/core.rb +4 -4
  42. data/lib/wx/doc/gen/credential_entry_dialog.rb +2 -2
  43. data/lib/wx/doc/gen/date_event.rb +2 -2
  44. data/lib/wx/doc/gen/dial_up_event.rb +2 -2
  45. data/lib/wx/doc/gen/dir_filter_list_ctrl.rb +2 -2
  46. data/lib/wx/doc/gen/event.rb +58 -58
  47. data/lib/wx/doc/gen/ext_help_controller.rb +62 -16
  48. data/lib/wx/doc/gen/file_ctrl.rb +4 -4
  49. data/lib/wx/doc/gen/file_dir_picker_event.rb +2 -2
  50. data/lib/wx/doc/gen/file_system.rb +1 -1
  51. data/lib/wx/doc/gen/find_dialog_event.rb +5 -5
  52. data/lib/wx/doc/gen/font_picker_event.rb +1 -1
  53. data/lib/wx/doc/gen/grid/grid_ctrl.rb +67 -32
  54. data/lib/wx/doc/gen/header_ctrl_event.rb +13 -13
  55. data/lib/wx/doc/gen/help_controller.rb +45 -2
  56. data/lib/wx/doc/gen/html/html_help_controller.rb +74 -32
  57. data/lib/wx/doc/gen/html/html_help_window.rb +3 -3
  58. data/lib/wx/doc/gen/html/html_window.rb +4 -4
  59. data/lib/wx/doc/gen/hyperlink_ctrl.rb +1 -1
  60. data/lib/wx/doc/gen/list_ctrl.rb +22 -22
  61. data/lib/wx/doc/gen/listbook.rb +2 -2
  62. data/lib/wx/doc/gen/mb_conv.rb +10 -0
  63. data/lib/wx/doc/gen/media_event.rb +6 -6
  64. data/lib/wx/doc/gen/notebook.rb +2 -2
  65. data/lib/wx/doc/gen/pg/pg_validation_info.rb +14 -14
  66. data/lib/wx/doc/gen/pg/property_grid_interface.rb +2 -2
  67. data/lib/wx/doc/gen/rbn/ribbon_art_provider.rb +19 -9
  68. data/lib/wx/doc/gen/rbn/ribbon_button_bar.rb +2 -2
  69. data/lib/wx/doc/gen/rbn/ribbon_gallery.rb +3 -3
  70. data/lib/wx/doc/gen/rbn/ribbon_panel.rb +2 -2
  71. data/lib/wx/doc/gen/rbn/ribbon_tool_bar.rb +2 -2
  72. data/lib/wx/doc/gen/rt/event_list.rb +17 -0
  73. data/lib/wx/doc/gen/rt/shared_evt_handler.rb +14 -0
  74. data/lib/wx/doc/gen/rt/thread_event.rb +71 -0
  75. data/lib/wx/doc/gen/rtc/rich_text_ctrl.rb +19 -19
  76. data/lib/wx/doc/gen/sash_event.rb +2 -2
  77. data/lib/wx/doc/gen/sash_layout_window.rb +2 -2
  78. data/lib/wx/doc/gen/search_ctrl.rb +2 -2
  79. data/lib/wx/doc/gen/spin_ctrl.rb +2 -2
  80. data/lib/wx/doc/gen/splitter_window.rb +6 -6
  81. data/lib/wx/doc/gen/stc/styled_text_event.rb +34 -34
  82. data/lib/wx/doc/gen/task_bar_icon_event.rb +10 -10
  83. data/lib/wx/doc/gen/text_ctrl.rb +4 -4
  84. data/lib/wx/doc/gen/toggle_button.rb +1 -1
  85. data/lib/wx/doc/gen/toolbook.rb +2 -2
  86. data/lib/wx/doc/gen/top_level_window.rb +19 -0
  87. data/lib/wx/doc/gen/tree_ctrl.rb +21 -21
  88. data/lib/wx/doc/gen/treebook.rb +4 -4
  89. data/lib/wx/doc/gen/utils.rb +2 -2
  90. data/lib/wx/doc/gen/web/event_list.rb +95 -0
  91. data/lib/wx/doc/gen/web/web_view.rb +1136 -0
  92. data/lib/wx/doc/gen/web/web_view_event.rb +210 -0
  93. data/lib/wx/doc/gen/web/web_view_handler.rb +318 -0
  94. data/lib/wx/doc/gen/window.rb +1 -1
  95. data/lib/wx/doc/gen/wizard_event.rb +7 -7
  96. data/lib/wx/doc/html/html_help_controller.rb +23 -1
  97. data/lib/wx/doc/mbconv.rb +108 -0
  98. data/lib/wx/doc/rt/shared_event_handler.rb +49 -0
  99. data/lib/wx/doc/rt/thread_event.rb +28 -0
  100. data/lib/wx/doc/webview.rb +40 -0
  101. data/lib/wx/helpers.rb +1 -1
  102. data/lib/wx/html/htmlhelpcontroller.rb +10 -0
  103. data/lib/wx/keyword_defs.rb +11 -0
  104. data/lib/wx/rt/events/evt_list.rb +8 -0
  105. data/lib/wx/rt/require.rb +8 -0
  106. data/lib/wx/rt/thread_event.rb +14 -0
  107. data/lib/wx/rt.rb +16 -0
  108. data/lib/wx/version.rb +1 -1
  109. data/lib/wx/web/events/evt_list.rb +74 -0
  110. data/lib/wx/web/require.rb +8 -0
  111. data/lib/wx/web/webview.rb +106 -0
  112. data/lib/wx/web.rb +17 -0
  113. data/lib/wx/wxruby/cmd/setup.rb +15 -0
  114. data/lib/wx.rb +2 -0
  115. data/rakelib/configure.rb +24 -0
  116. data/rakelib/gem.rb +3 -2
  117. data/rakelib/install.rb +54 -27
  118. data/rakelib/lib/config/macosx.rb +7 -5
  119. data/rakelib/lib/config/mingw.rb +66 -5
  120. data/rakelib/lib/config/pkgman/mingw.rb +1 -1
  121. data/rakelib/lib/config/unixish.rb +4 -2
  122. data/rakelib/lib/config.rb +37 -3
  123. data/rakelib/lib/core/include/client_data.inc +38 -17
  124. data/rakelib/lib/core/include/funcall.inc +1 -1
  125. data/rakelib/lib/core/include/swigdirector.inc +3 -3
  126. data/rakelib/lib/core/include/swigrubyrun.inc +14 -26
  127. data/rakelib/lib/core/package.rb +0 -2
  128. data/rakelib/lib/director/app.rb +1 -8
  129. data/rakelib/lib/director/art_provider.rb +7 -3
  130. data/rakelib/lib/director/comboctrl.rb +0 -7
  131. data/rakelib/lib/director/context_help_button.rb +35 -2
  132. data/rakelib/lib/director/event_handler.rb +32 -28
  133. data/rakelib/lib/director/fs_file.rb +15 -10
  134. data/rakelib/lib/director/functions.rb +8 -0
  135. data/rakelib/lib/director/grid_cell_attr.rb +1 -3
  136. data/rakelib/lib/director/grid_cell_editor.rb +14 -12
  137. data/rakelib/lib/director/grid_cell_renderer.rb +11 -8
  138. data/rakelib/lib/director/grid_ctrl.rb +140 -121
  139. data/rakelib/lib/director/help_controller.rb +70 -2
  140. data/rakelib/lib/director/mb_conv.rb +30 -0
  141. data/rakelib/lib/director/menu.rb +92 -42
  142. data/rakelib/lib/director/menu_bar.rb +84 -45
  143. data/rakelib/lib/director/menu_item.rb +2 -2
  144. data/rakelib/lib/director/persistence_manager.rb +3 -2
  145. data/rakelib/lib/director/preview_frame.rb +2 -2
  146. data/rakelib/lib/director/richtext_buffer.rb +5 -2
  147. data/rakelib/lib/director/shared_evt_handler.rb +30 -0
  148. data/rakelib/lib/director/sizer.rb +8 -17
  149. data/rakelib/lib/director/sizer_item.rb +3 -4
  150. data/rakelib/lib/director/task_bar_icon.rb +7 -7
  151. data/rakelib/lib/director/thread_event.rb +33 -0
  152. data/rakelib/lib/director/validator.rb +3 -1
  153. data/rakelib/lib/director/variant.rb +16 -12
  154. data/rakelib/lib/director/webview.rb +166 -0
  155. data/rakelib/lib/director/webview_event.rb +37 -0
  156. data/rakelib/lib/director/webview_handler.rb +63 -0
  157. data/rakelib/lib/generate/doc/thread_event.yaml +20 -0
  158. data/rakelib/lib/generate/doc/web_view.yaml +135 -0
  159. data/rakelib/lib/generate/doc/web_view_event.yaml +38 -0
  160. data/rakelib/lib/generate/doc/web_view_handler.yaml +58 -0
  161. data/rakelib/lib/specs/interfaces.rb +12 -0
  162. data/rakelib/lib/typemap/common.rb +34 -1
  163. data/rakelib/lib/typemap/mb_conv.rb +58 -0
  164. data/rakelib/prepost.rake +23 -31
  165. data/rakelib/prepost.rb +20 -0
  166. data/samples/event/threaded.rb +295 -42
  167. data/samples/event/tn_threaded.png +0 -0
  168. data/samples/help/doc/back.gif +0 -0
  169. data/samples/help/doc/contents.gif +0 -0
  170. data/samples/help/doc/cshelp.txt +9 -0
  171. data/samples/help/doc/doc.chm +0 -0
  172. data/samples/help/doc/doc.cnt +8 -0
  173. data/samples/help/doc/doc.h +7 -0
  174. data/samples/help/doc/doc.hhc +40 -0
  175. data/samples/help/doc/doc.hhk +31 -0
  176. data/samples/help/doc/doc.hhp +33 -0
  177. data/samples/help/doc/doc.hpj +21 -0
  178. data/samples/help/doc/doc.htm +27 -0
  179. data/samples/help/doc/doc1.htm +24 -0
  180. data/samples/help/doc/doc2.htm +12 -0
  181. data/samples/help/doc/doc3.htm +12 -0
  182. data/samples/help/doc/doc4.htm +12 -0
  183. data/samples/help/doc/doc5.htm +14 -0
  184. data/samples/help/doc/forward.gif +0 -0
  185. data/samples/help/doc/up.gif +0 -0
  186. data/samples/help/doc.chm +0 -0
  187. data/samples/help/doc.chw +0 -0
  188. data/samples/help/doc.zip +0 -0
  189. data/samples/help/help.rb +352 -0
  190. data/samples/help/tn_help.png +0 -0
  191. data/samples/webview/handler_advanced.html +55 -0
  192. data/samples/webview/tn_webview.png +0 -0
  193. data/samples/webview/webview.rb +1264 -0
  194. data/tests/assets/handler_advanced.html +55 -0
  195. data/tests/assets/test.css +1 -0
  196. data/tests/assets/test.html +9 -0
  197. data/tests/assets/test.zip +0 -0
  198. data/tests/lib/text_entry_tests.rb +2 -2
  199. data/tests/lib/wxapp_runner.rb +40 -0
  200. data/tests/lib/wxframe_runner.rb +17 -2
  201. data/tests/test_art.rb +8 -8
  202. data/tests/test_clipboard.rb +4 -4
  203. data/tests/test_config.rb +6 -6
  204. data/tests/test_exceptions.rb +8 -6
  205. data/tests/test_ext_controls.rb +3 -3
  206. data/tests/test_file_dialog.rb +5 -5
  207. data/tests/test_font.rb +7 -7
  208. data/tests/test_grid_ctrl.rb +133 -0
  209. data/tests/test_help.rb +88 -0
  210. data/tests/test_intl.rb +1 -1
  211. data/tests/test_media_ctrl.rb +14 -6
  212. data/tests/test_menu.rb +94 -86
  213. data/tests/test_persistence.rb +1 -1
  214. data/tests/test_proof_check.rb +5 -5
  215. data/tests/test_propgrid.rb +1 -1
  216. data/tests/test_shared_event_handler.rb +141 -0
  217. data/tests/test_std_controls.rb +5 -5
  218. data/tests/test_webview.rb +492 -0
  219. data/tests/test_window.rb +3 -3
  220. metadata +78 -2
@@ -0,0 +1,27 @@
1
+
2
+ <HTML>
3
+ <HEAD><TITLE>Help Demo</TITLE></HEAD>
4
+
5
+ <BODY BGCOLOR=#FFFFFF>
6
+
7
+
8
+ <A NAME="contents"><H2 ALIGN=CENTER>
9
+ Help Demo</H2><P></A>
10
+ <P>
11
+
12
+ <H3 ALIGN=CENTER>by Julian Smart (adapted for wxRuby3 by Martin Corino)</H3><P>
13
+
14
+
15
+ <P><HR><P>
16
+ <P><P><H2>Contents</H2><P><P>
17
+ <UL>
18
+
19
+ <LI><A HREF="doc1.htm#intro">Introduction</A>
20
+
21
+ <LI><A HREF="doc5.htm#chapter2">Chapter 2</A>
22
+ </UL>
23
+
24
+
25
+ </BODY>
26
+
27
+ </HTML>
@@ -0,0 +1,24 @@
1
+ <HTML>
2
+ <head><title>Introduction</title></head>
3
+
4
+ <BODY BGCOLOR=#FFFFFF>
5
+ <A NAME="intro"></A><CENTER>
6
+ <A HREF="doc.htm"><img align=center src="contents.gif" BORDER=0 ALT="Contents"></A> <A HREF="doc.htm"><img align=center src="up.gif" BORDER=0 ALT="Up"></A> <img align=center src="back.gif" BORDER=0 ALT="Previous"> <A HREF="doc2.htm#classes"><img align=center src="forward.gif" BORDER=0 ALT="Next"></A> </CENTER><HR>
7
+
8
+ <H2>Introduction</H2>
9
+
10
+ This is a demo document for the wxRuby3 'help' sample.<P>
11
+ You should process this file with Tex2RTF, for example:<P>
12
+ <TT>tex2rtf -winhelp -twice doc.tex doc.hlp</TT><P>
13
+ and then run:<P>
14
+ <TT>hc doc</TT><P>
15
+ where hc is the help compiler.<P>
16
+ Note that you can also generate HTML and Word RTF with Tex2RTF.<P>
17
+
18
+ <A HREF="doc2.htm#classes"><B>Classes</B></A><BR>
19
+
20
+ <A HREF="doc3.htm#functions"><B>Functions</B></A><BR>
21
+
22
+ <A HREF="doc4.htm#about"><B>About</B></A><BR>
23
+
24
+ </BODY></HTML>
@@ -0,0 +1,12 @@
1
+ <HTML>
2
+ <head><title>Classes</title></head>
3
+
4
+ <BODY BGCOLOR=#FFFFFF>
5
+ <A NAME="classes"></A><CENTER>
6
+ <A HREF="doc.htm"><img align=center src="contents.gif" BORDER=0 ALT="Contents"></A> <A HREF="doc1.htm#intro"><img align=center src="up.gif" BORDER=0 ALT="Up"></A> <A HREF="doc1.htm#intro"><img align=center src="back.gif" BORDER=0 ALT="Previous"></A> <A HREF="doc3.htm#functions"><img align=center src="forward.gif" BORDER=0 ALT="Next"></A> </CENTER><HR>
7
+
8
+ <H2>Classes</H2>
9
+ <P>
10
+ This would say something about classes, but doesn't yet.<P>
11
+
12
+ </BODY></HTML>
@@ -0,0 +1,12 @@
1
+ <HTML>
2
+ <head><title>Functions</title></head>
3
+
4
+ <BODY BGCOLOR=#FFFFFF>
5
+ <A NAME="functions"></A><CENTER>
6
+ <A HREF="doc.htm"><img align=center src="contents.gif" BORDER=0 ALT="Contents"></A> <A HREF="doc1.htm#intro"><img align=center src="up.gif" BORDER=0 ALT="Up"></A> <A HREF="doc2.htm#classes"><img align=center src="back.gif" BORDER=0 ALT="Previous"></A> <A HREF="doc4.htm#about"><img align=center src="forward.gif" BORDER=0 ALT="Next"></A> </CENTER><HR>
7
+
8
+ <H2>Functions</H2>
9
+ <P>
10
+ This would say something about functions, but doesn't yet.<P>
11
+
12
+ </BODY></HTML>
@@ -0,0 +1,12 @@
1
+ <HTML>
2
+ <head><title>About</title></head>
3
+
4
+ <BODY BGCOLOR=#FFFFFF>
5
+ <A NAME="about"></A><CENTER>
6
+ <A HREF="doc.htm"><img align=center src="contents.gif" BORDER=0 ALT="Contents"></A> <A HREF="doc1.htm#intro"><img align=center src="up.gif" BORDER=0 ALT="Up"></A> <A HREF="doc3.htm#functions"><img align=center src="back.gif" BORDER=0 ALT="Previous"></A> <A HREF="doc5.htm#chapter2"><img align=center src="forward.gif" BORDER=0 ALT="Next"></A> </CENTER><HR>
7
+
8
+ <H2>About</H2>
9
+ <P>
10
+ About this HelpDemo: this file is really not much of a demo, but it's a start.<P>
11
+
12
+ </BODY></HTML>
@@ -0,0 +1,14 @@
1
+ <HTML>
2
+ <head><title>Chapter 2</title></head>
3
+
4
+ <BODY BGCOLOR=#FFFFFF>
5
+ <A NAME="chapter2"></A><CENTER>
6
+ <A HREF="doc.htm"><img align=center src="contents.gif" BORDER=0 ALT="Contents"></A> <A HREF="doc.htm"><img align=center src="up.gif" BORDER=0 ALT="Up"></A> <A HREF="doc4.htm#about"><img align=center src="back.gif" BORDER=0 ALT="Previous"></A> <img align=center src="forward.gif" BORDER=0 ALT="Next"> </CENTER><HR>
7
+
8
+ <H2>Chapter 2</H2>
9
+
10
+ Another chapter in this enticing little manual.<P>
11
+
12
+
13
+
14
+ </BODY></HTML>
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,352 @@
1
+ # Copyright (c) 2023 M.J.N. Corino, The Netherlands
2
+ #
3
+ # This software is released under the MIT license.
4
+
5
+ # Adapted for Wx::Ruby3
6
+ ###
7
+
8
+ require 'wx'
9
+
10
+ module Help
11
+
12
+ # Define this to false to use the help controller as the help
13
+ # provider, or to true to use the 'simple help provider'
14
+ # (the one implemented with Wx::TipWindow).
15
+ USE_SIMPLE_HELP_PROVIDER = false
16
+
17
+ # define this to true to use external help controller (not used by default)
18
+ USE_EXT_HELP = false
19
+
20
+ # IDs for the controls and the menu commands
21
+ module ID
22
+ include Wx::IDHelper
23
+ # menu items
24
+ HelpDemo_Quit = self.next_id
25
+ HelpDemo_Help_Index = self.next_id
26
+ HelpDemo_Help_Classes = self.next_id
27
+ HelpDemo_Help_Functions = self.next_id
28
+ HelpDemo_Help_Help = self.next_id
29
+ HelpDemo_Help_Search = self.next_id
30
+ HelpDemo_Help_ContextHelp = self.next_id
31
+ HelpDemo_Help_DialogContextHelp = self.next_id
32
+
33
+ HelpDemo_Html_Help_Index = self.next_id
34
+ HelpDemo_Html_Help_Classes = self.next_id
35
+ HelpDemo_Html_Help_Functions = self.next_id
36
+ HelpDemo_Html_Help_Help = self.next_id
37
+ HelpDemo_Html_Help_Search = self.next_id
38
+
39
+ HelpDemo_Advanced_Html_Help_Index = self.next_id
40
+ HelpDemo_Advanced_Html_Help_Classes = self.next_id
41
+ HelpDemo_Advanced_Html_Help_Functions = self.next_id
42
+ HelpDemo_Advanced_Html_Help_Help = self.next_id
43
+ HelpDemo_Advanced_Html_Help_Search = self.next_id
44
+ HelpDemo_Advanced_Html_Help_Modal = self.next_id
45
+
46
+ HelpDemo_MS_Html_Help_Index = self.next_id
47
+ HelpDemo_MS_Html_Help_Classes = self.next_id
48
+ HelpDemo_MS_Html_Help_Functions = self.next_id
49
+ HelpDemo_MS_Html_Help_Help = self.next_id
50
+ HelpDemo_MS_Html_Help_Search = self.next_id
51
+
52
+ HelpDemo_Best_Help_Index = self.next_id
53
+ HelpDemo_Best_Help_Classes = self.next_id
54
+ HelpDemo_Best_Help_Functions = self.next_id
55
+ HelpDemo_Best_Help_Help = self.next_id
56
+ HelpDemo_Best_Help_Search = self.next_id
57
+
58
+ HelpDemo_Help_KDE = self.next_id
59
+ HelpDemo_Help_GNOME = self.next_id
60
+ HelpDemo_Help_Netscape = self.next_id
61
+ # controls start here (the numbers are, of course, arbitrary)
62
+ HelpDemo_Text = self.next_id(HelpDemo_Help_Netscape + 999)
63
+ end
64
+
65
+ # Define a new frame type: this is going to be our main frame
66
+ class MyFrame < Wx::Frame
67
+ # ctor(s)
68
+ def initialize(title, pos, size)
69
+ super(nil, pos: pos, size: size)
70
+
71
+ @help = USE_EXT_HELP ? Wx::ExtHelpController.new : Wx::HelpController.new
72
+ @embeddedHtmlHelp = Wx::HTML::HtmlHelpController.new(Wx::HTML::HF_EMBEDDED|Wx::HTML::HF_DEFAULT_STYLE)
73
+ @advancedHtmlHelp = Wx::HTML::HtmlHelpController.new
74
+
75
+ # set the frame icon
76
+ self.icon = Wx.Icon(:sample, Wx::BITMAP_TYPE_XPM, art_path: File.join(__dir__, '..'))
77
+
78
+ # create a menu bar
79
+ menuFile = Wx::Menu.new
80
+
81
+ menuFile.append(ID::HelpDemo_Help_Index, "&Help Index...")
82
+ menuFile.append(ID::HelpDemo_Help_Classes, "&Help on Classes...")
83
+ menuFile.append(ID::HelpDemo_Help_Functions, "&Help on Functions...")
84
+ menuFile.append(ID::HelpDemo_Help_ContextHelp, "&Context Help...")
85
+ menuFile.append(ID::HelpDemo_Help_DialogContextHelp, "&Dialog Context Help...\tCtrl-H")
86
+ menuFile.append(ID::HelpDemo_Help_Help, "&About Help Demo...")
87
+ menuFile.append(ID::HelpDemo_Help_Search, "&Search help...")
88
+ menuFile.append_separator
89
+ menuFile.append(ID::HelpDemo_Advanced_Html_Help_Index, "Advanced HTML &Help Index...")
90
+ menuFile.append(ID::HelpDemo_Advanced_Html_Help_Classes, "Advanced HTML &Help on Classes...")
91
+ menuFile.append(ID::HelpDemo_Advanced_Html_Help_Functions, "Advanced HTML &Help on Functions...")
92
+ menuFile.append(ID::HelpDemo_Advanced_Html_Help_Help, "Advanced HTML &About Help Demo...")
93
+ menuFile.append(ID::HelpDemo_Advanced_Html_Help_Search, "Advanced HTML &Search help...")
94
+ menuFile.append(ID::HelpDemo_Advanced_Html_Help_Modal, "Advanced HTML Help &Modal Dialog...")
95
+
96
+ unless Wx::PLATFORM == 'WXMSW' || !Wx.has_feature?(:USE_HTML)
97
+ menuFile.append_separator
98
+ menuFile.append(ID::HelpDemo_Help_KDE, "Use &KDE")
99
+ menuFile.append(ID::HelpDemo_Help_GNOME, "Use &GNOME")
100
+ menuFile.append(ID::HelpDemo_Help_Netscape, "Use &Netscape")
101
+ end
102
+
103
+ menuFile.append_separator
104
+ menuFile.append(ID::HelpDemo_Quit, "E&xit")
105
+
106
+ # now append the freshly created menu to the menu bar...
107
+ menuBar = Wx::MenuBar.new
108
+ menuBar.append(menuFile, "&File")
109
+
110
+ # ... and attach this menu bar to the frame
111
+ set_menu_bar(menuBar)
112
+
113
+ if Wx.has_feature?(:USE_STATUSBAR)
114
+ # create a status bar just for fun (by default with 1 pane only)
115
+ create_status_bar
116
+ set_status_text("Welcome to wxWidgets!")
117
+ end # USE_STATUSBAR
118
+
119
+ # Create embedded HTML Help window
120
+ @embeddedHelpWindow = Wx::HTML::HtmlHelpWindow.new
121
+ # @embeddedHtmlHelp.use_config(config, rootPath) # Can set your own config object here
122
+ @embeddedHtmlHelp.set_help_window(@embeddedHelpWindow)
123
+
124
+ @embeddedHelpWindow.create(self, Wx::ID_ANY, Wx::DEFAULT_POSITION, get_client_size, Wx::TAB_TRAVERSAL|Wx::NO_BORDER, Wx::HTML::HF_DEFAULT_STYLE)
125
+
126
+ @embeddedHtmlHelp.add_book(File.join(__dir__, 'doc.zip'))
127
+ @embeddedHtmlHelp.display("Introduction")
128
+
129
+ evt_menu(ID::HelpDemo_Quit, :on_quit)
130
+ evt_menu(ID::HelpDemo_Help_Index, :on_help)
131
+ evt_menu(ID::HelpDemo_Help_Classes, :on_help)
132
+ evt_menu(ID::HelpDemo_Help_Functions, :on_help)
133
+ evt_menu(ID::HelpDemo_Help_Help, :on_help)
134
+ evt_menu(ID::HelpDemo_Help_Search, :on_help)
135
+ evt_menu(ID::HelpDemo_Help_ContextHelp, :on_show_context_help)
136
+ evt_menu(ID::HelpDemo_Help_DialogContextHelp, :on_show_dialog_context_help)
137
+
138
+ evt_menu(ID::HelpDemo_Advanced_Html_Help_Index, :on_advanced_html_help)
139
+ evt_menu(ID::HelpDemo_Advanced_Html_Help_Classes, :on_advanced_html_help)
140
+ evt_menu(ID::HelpDemo_Advanced_Html_Help_Functions, :on_advanced_html_help)
141
+ evt_menu(ID::HelpDemo_Advanced_Html_Help_Help, :on_advanced_html_help)
142
+ evt_menu(ID::HelpDemo_Advanced_Html_Help_Search, :on_advanced_html_help)
143
+ evt_menu(ID::HelpDemo_Advanced_Html_Help_Modal, :on_modal_html_help)
144
+
145
+ evt_menu(ID::HelpDemo_Help_KDE, :on_help)
146
+ evt_menu(ID::HelpDemo_Help_GNOME, :on_help)
147
+ evt_menu(ID::HelpDemo_Help_Netscape, :on_help)
148
+ end
149
+
150
+ def get_help_controller
151
+ @help
152
+ end
153
+
154
+ def get_advanced_html_help_controller
155
+ @advancedHtmlHelp
156
+ end
157
+
158
+ # event handlers
159
+ def on_quit(_event)
160
+ # true is to force the frame to close
161
+ close(true)
162
+ end
163
+
164
+ def on_help(event)
165
+ show_help(event.get_id, @help)
166
+ end
167
+
168
+ def on_advanced_html_help(event)
169
+ show_help(event.get_id, @advancedHtmlHelp)
170
+ end
171
+
172
+ def on_modal_html_help(_event)
173
+ Wx::HTML.HtmlModalHelp(self, File.join(__dir__, 'doc.zip'), "Introduction")
174
+ end
175
+
176
+ def on_show_context_help(_event)
177
+ # This starts context help mode, then the user
178
+ # clicks on a window to send a help message
179
+ Wx.ContextHelp(self)
180
+ end
181
+
182
+ def on_show_dialog_context_help(_event)
183
+ Help::MyModalDialog(self)
184
+ end
185
+
186
+ def show_help(commandId, helpController)
187
+ case commandId
188
+ when ID::HelpDemo_Help_Classes,
189
+ ID::HelpDemo_Html_Help_Classes,
190
+ ID::HelpDemo_Advanced_Html_Help_Classes,
191
+ ID::HelpDemo_MS_Html_Help_Classes,
192
+ ID::HelpDemo_Best_Help_Classes
193
+ helpController.display_section(2)
194
+ #helpController.display_section("Classes") # An alternative form for most controllers
195
+
196
+ when ID::HelpDemo_Help_Functions,
197
+ ID::HelpDemo_Html_Help_Functions,
198
+ ID::HelpDemo_Advanced_Html_Help_Functions,
199
+ ID::HelpDemo_MS_Html_Help_Functions
200
+ helpController.display_section(1)
201
+ #helpController.display_section("Functions") # An alternative form for most controllers
202
+
203
+ when ID::HelpDemo_Help_Help,
204
+ ID::HelpDemo_Html_Help_Help,
205
+ ID::HelpDemo_Advanced_Html_Help_Help,
206
+ ID::HelpDemo_MS_Html_Help_Help,
207
+ ID::HelpDemo_Best_Help_Help
208
+ helpController.display_section(3)
209
+ #helpController.display_section("About"); # An alternative form for most controllers
210
+
211
+ when ID::HelpDemo_Help_Search,
212
+ ID::HelpDemo_Html_Help_Search,
213
+ ID::HelpDemo_Advanced_Html_Help_Search,
214
+ ID::HelpDemo_MS_Html_Help_Search,
215
+ ID::HelpDemo_Best_Help_Search
216
+ key = Wx.get_text_from_user("Search for?",
217
+ "Search help for keyword",
218
+ '',
219
+ self)
220
+ helpController.keyword_search(key) unless key.empty?
221
+
222
+ when ID::HelpDemo_Help_Index,
223
+ ID::HelpDemo_Html_Help_Index,
224
+ ID::HelpDemo_Advanced_Html_Help_Index,
225
+ ID::HelpDemo_MS_Html_Help_Index,
226
+ ID::HelpDemo_Best_Help_Index
227
+ helpController.display_contents
228
+
229
+ # These three calls are only used by wxExtHelpController
230
+
231
+ when ID::HelpDemo_Help_KDE
232
+ helpController.set_viewer("kdehelp")
233
+ when ID::HelpDemo_Help_GNOME
234
+ helpController.set_viewer("gnome-help-browser")
235
+ when ID::HelpDemo_Help_Netscape
236
+ helpController.set_viewer("netscape", Wx::HELP_NETSCAPE)
237
+ else
238
+ #
239
+ end
240
+ end
241
+
242
+ end
243
+
244
+ # A custom modal dialog
245
+ class MyModalDialog < Wx::Dialog
246
+ def initialize(parent)
247
+ super(parent, Wx::ID_ANY, 'Modal Dialog')
248
+
249
+ # Add the context-sensitive help button on the caption for the platforms
250
+ # which support it (currently MSW only)
251
+ set_extra_style(Wx::DIALOG_EX_CONTEXTHELP)
252
+
253
+
254
+ sizerTop = Wx::VBoxSizer.new
255
+ sizerRow = Wx::HBoxSizer.new
256
+
257
+ btnOK = Wx::Button.new(self, Wx::ID_OK, "&OK")
258
+ btnOK.set_help_text("The OK button confirms the dialog choices.")
259
+
260
+ btnCancel = Wx::Button.new(self, Wx::ID_CANCEL, "&Cancel")
261
+ btnCancel.set_help_text("The Cancel button cancels the dialog.")
262
+
263
+ sizerRow.add(btnOK, 0, Wx::ALIGN_CENTER | Wx::ALL, 5)
264
+ sizerRow.add(btnCancel, 0, Wx::ALIGN_CENTER | Wx::ALL, 5)
265
+
266
+ # Add explicit context-sensitive help button for non-MSW
267
+ unless Wx::PLATFORM == 'WXMSW'
268
+ sizerRow.add(Wx::ContextHelpButton.new(self), 0, Wx::ALIGN_CENTER | Wx::ALL, 5)
269
+ end
270
+
271
+ text = Wx::TextCtrl.new(self, value: "A demo text control",
272
+ size: [300, 100],
273
+ style: Wx::TE_MULTILINE)
274
+ text.set_help_text("Type text here if you have got nothing more interesting to do")
275
+ sizerTop.add(text, 0, Wx::EXPAND|Wx::ALL, 5 )
276
+ sizerTop.add(sizerRow, 0, Wx::ALIGN_RIGHT|Wx::ALL, 5 )
277
+
278
+ set_sizer_and_fit(sizerTop)
279
+
280
+ btnOK.set_focus
281
+ btnOK.set_default
282
+ end
283
+ end
284
+
285
+ class App < Wx::App
286
+ def on_init
287
+ # Create a simple help provider to make SetHelpText() do something.
288
+ # Note that this must be set before any SetHelpText() calls are made.
289
+ provider = USE_SIMPLE_HELP_PROVIDER ? Wx::SimpleHelpProvider.new : Wx::HelpControllerHelpProvider.new
290
+ Wx::HelpProvider.set(provider)
291
+
292
+ # Required for advanced HTML help
293
+ if Wx.has_feature?(:USE_STREAMS) && Wx.has_feature?(:USE_ZIPSTREAM) && Wx.has_feature?(:USE_ZLIB)
294
+ Wx::FileSystem.add_handler(Wx::ArchiveFSHandler.new)
295
+ end
296
+
297
+ # Create the main application window
298
+ frame = MyFrame.new("HelpDemo wxWidgets App",
299
+ [50, 50], [600, 400])
300
+
301
+ unless USE_SIMPLE_HELP_PROVIDER
302
+ provider.set_help_controller(frame.get_help_controller)
303
+ end # !USE_SIMPLE_HELP_PROVIDER
304
+
305
+ frame.show(true)
306
+
307
+ # initialize the help system: this means that we'll use doc.hlp file under
308
+ # Windows and that the HTML docs are in the subdirectory doc for platforms
309
+ # using HTML help
310
+ unless frame.get_help_controller.init(File.join(__dir__, 'doc'))
311
+ Wx.log_error("Cannot initialize the help system, aborting.")
312
+ # return false
313
+ end
314
+
315
+ # initialize the advanced HTML help system: this means that the HTML docs are in .htb
316
+ # (zipped) form
317
+ unless frame.get_advanced_html_help_controller.init(File.join(__dir__, 'doc'))
318
+ Wx.log_error("Cannot initialize the advanced HTML help system, aborting.")
319
+ # return false
320
+ end
321
+
322
+ true
323
+ end
324
+
325
+ def on_exit
326
+ Wx::HelpProvider.set(nil)
327
+ 0
328
+ end
329
+
330
+ end
331
+
332
+ end
333
+
334
+ module HelpSample
335
+
336
+ include WxRuby::Sample if defined? WxRuby::Sample
337
+
338
+ def self.describe
339
+ { file: __FILE__,
340
+ summary: 'wxRuby Help example.',
341
+ description: 'wxRuby example showcasing the use of Wx::HelpController.' }
342
+ end
343
+
344
+ def self.run
345
+ execute(__FILE__)
346
+ end
347
+
348
+ if $0 == __FILE__
349
+ Help::App.run
350
+ end
351
+
352
+ end
Binary file
@@ -0,0 +1,55 @@
1
+ <head>
2
+ <title>Advanced Handler Sample</title>
3
+
4
+ <style>
5
+ .mono {
6
+ font-family: monospace;
7
+ }
8
+ </style>
9
+
10
+ <script>
11
+ function sendRequest() {
12
+ let url = document.getElementById("request_url").value;
13
+ let request_content_type = document.getElementById("request_content_type").value;
14
+ let request_data = document.getElementById("request_data").value;
15
+ console.log("clicked");
16
+
17
+ const req = new XMLHttpRequest();
18
+ req.addEventListener("load", (ev) => {
19
+ document.getElementById("response_response").value = req.responseText;
20
+ });
21
+ req.open("POST", url);
22
+ req.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
23
+ req.send(request_data);
24
+ }
25
+ </script>
26
+ </head>
27
+
28
+ <body>
29
+ <p>
30
+ This sample demonstrates how to use <i>Wx::WebViewHandler::start_request()</i>
31
+ to enable advanced requests from html and javascript in the web view.
32
+ </p>
33
+
34
+ Request URL<br />
35
+ <input id="request_url" size="40" value=""><br />
36
+ Request content type<br />
37
+ <input id="request_content_type" size="40" value="application/json"><br />
38
+ Request Data<br />
39
+ <textarea class="mono" cols="60" rows="8" id="request_data">{ param1: "wxwidgets", param2: "webview" }</textarea>
40
+ <br />
41
+ <button onclick="sendRequest()">Start request</button><br />
42
+ Response Data<br />
43
+ <textarea class="mono" cols="60" rows="8" id="response_response"></textarea>
44
+
45
+ <script>
46
+ // init request_url
47
+ let postURL;
48
+ if (navigator.userAgent.indexOf("Edg") > 0)
49
+ postURL = "https://wxpost.wxsite//main/test/1";
50
+ else
51
+ postURL = "wxpost://main/test/1";
52
+
53
+ document.getElementById("request_url").value = postURL;
54
+ </script>
55
+ </body>
Binary file