gtk_paradise 0.9.120

Sign up to get free protection for your applications and to get access to all the features.
Files changed (714) hide show
  1. checksums.yaml +7 -0
  2. data/LICENCE.md +6 -0
  3. data/README.md +8966 -0
  4. data/bin/application_menu +7 -0
  5. data/bin/demo-gtk3 +39 -0
  6. data/bin/gtk_calculator +7 -0
  7. data/bin/gtk_display_this_file +23 -0
  8. data/bin/gtk_paradise +7 -0
  9. data/bin/minesweeper +7 -0
  10. data/bin/notebook_controller +7 -0
  11. data/bin/pdfwalker +7 -0
  12. data/doc/README.gen +8938 -0
  13. data/doc/todo/TODO_FOR_THE_GTK_PARADISE_PROJECT.md +246 -0
  14. data/doc/todo/recurring_todo_tasks.md +9 -0
  15. data/gtk_paradise.gemspec +83 -0
  16. data/lib/gtk_paradise/app/app.rb +208 -0
  17. data/lib/gtk_paradise/app/app_module.rb +1739 -0
  18. data/lib/gtk_paradise/autoinclude.rb +7 -0
  19. data/lib/gtk_paradise/base_module/base_module.rb +67 -0
  20. data/lib/gtk_paradise/base_module/change_directory.rb +22 -0
  21. data/lib/gtk_paradise/base_module/colours.rb +81 -0
  22. data/lib/gtk_paradise/base_module/combo_box_and_combo_box_entry.rb +113 -0
  23. data/lib/gtk_paradise/base_module/commandline_arguments.rb +36 -0
  24. data/lib/gtk_paradise/base_module/configuration.rb +50 -0
  25. data/lib/gtk_paradise/base_module/constants.rb +23 -0
  26. data/lib/gtk_paradise/base_module/css.rb +398 -0
  27. data/lib/gtk_paradise/base_module/debug.rb +127 -0
  28. data/lib/gtk_paradise/base_module/draggable.rb +95 -0
  29. data/lib/gtk_paradise/base_module/e.rb +20 -0
  30. data/lib/gtk_paradise/base_module/emoji.rb +107 -0
  31. data/lib/gtk_paradise/base_module/esystem.rb +22 -0
  32. data/lib/gtk_paradise/base_module/events.rb +111 -0
  33. data/lib/gtk_paradise/base_module/fonts.rb +119 -0
  34. data/lib/gtk_paradise/base_module/graphics_display.rb +47 -0
  35. data/lib/gtk_paradise/base_module/gtk3.rb +43 -0
  36. data/lib/gtk_paradise/base_module/gtk_buttons.rb +562 -0
  37. data/lib/gtk_paradise/base_module/gtk_entry.rb +126 -0
  38. data/lib/gtk_paradise/base_module/gtk_fixed.rb +18 -0
  39. data/lib/gtk_paradise/base_module/gtk_grid.rb +61 -0
  40. data/lib/gtk_paradise/base_module/gtk_image.rb +501 -0
  41. data/lib/gtk_paradise/base_module/gtk_label.rb +211 -0
  42. data/lib/gtk_paradise/base_module/gtk_notebook.rb +88 -0
  43. data/lib/gtk_paradise/base_module/gtk_scrolled_window.rb +155 -0
  44. data/lib/gtk_paradise/base_module/html_support.rb +230 -0
  45. data/lib/gtk_paradise/base_module/misc.rb +2949 -0
  46. data/lib/gtk_paradise/base_module/pango.rb +24 -0
  47. data/lib/gtk_paradise/base_module/popover.rb +241 -0
  48. data/lib/gtk_paradise/base_module/register_sigint.rb +20 -0
  49. data/lib/gtk_paradise/base_module/reset.rb +128 -0
  50. data/lib/gtk_paradise/base_module/return_corresponding_gtk_stock_item.rb +92 -0
  51. data/lib/gtk_paradise/base_module/roebe.rb +19 -0
  52. data/lib/gtk_paradise/base_module/table.rb +438 -0
  53. data/lib/gtk_paradise/base_module/time.rb +35 -0
  54. data/lib/gtk_paradise/base_module_and_app_module/base_module_and_app_module.rb +21 -0
  55. data/lib/gtk_paradise/colours/gtk_colour_constants.rb +192 -0
  56. data/lib/gtk_paradise/colours/parse.rb +79 -0
  57. data/lib/gtk_paradise/commandline/commandline.rb +126 -0
  58. data/lib/gtk_paradise/constants/available_cursors.rb +52 -0
  59. data/lib/gtk_paradise/constants/constants.rb +18 -0
  60. data/lib/gtk_paradise/constants/fonts.rb +38 -0
  61. data/lib/gtk_paradise/constants/misc.rb +56 -0
  62. data/lib/gtk_paradise/constants/newline.rb +14 -0
  63. data/lib/gtk_paradise/constants/xbm_icons.rb +121 -0
  64. data/lib/gtk_paradise/css_files/colours.css +362 -0
  65. data/lib/gtk_paradise/css_files/css_accordion.css +51 -0
  66. data/lib/gtk_paradise/css_files/project.css +479 -0
  67. data/lib/gtk_paradise/css_files/themes/README.md +1 -0
  68. data/lib/gtk_paradise/css_files/themes/rainbow_theme.css +23 -0
  69. data/lib/gtk_paradise/emojis/emojis.rb +756 -0
  70. data/lib/gtk_paradise/examples/README.md +11 -0
  71. data/lib/gtk_paradise/examples/advanced/001_5x5_grid_example.rb +175 -0
  72. data/lib/gtk_paradise/examples/advanced/002_advanced_drag_and_drop_example.rb +103 -0
  73. data/lib/gtk_paradise/examples/advanced/003_html_like_support.rb +206 -0
  74. data/lib/gtk_paradise/examples/advanced/004_on_hover_example_on_gtk_entry.rb +78 -0
  75. data/lib/gtk_paradise/examples/advanced/005_csv_example.rb +24 -0
  76. data/lib/gtk_paradise/examples/advanced/006_file_chooser_button_example.rb +106 -0
  77. data/lib/gtk_paradise/examples/advanced/007_label_responding_to_events_example.rb +182 -0
  78. data/lib/gtk_paradise/examples/advanced/008_options_example.rb +47 -0
  79. data/lib/gtk_paradise/examples/advanced/009_key_events.rb +81 -0
  80. data/lib/gtk_paradise/examples/advanced/010_extensive_text_view_example.rb +161 -0
  81. data/lib/gtk_paradise/examples/advanced/011_moving_blocks_example.rb +91 -0
  82. data/lib/gtk_paradise/examples/advanced/012_cell_data_sorting_example.rb +79 -0
  83. data/lib/gtk_paradise/examples/advanced/013_advanced_css_example.rb +272 -0
  84. data/lib/gtk_paradise/examples/advanced/014_popup_example.rb +123 -0
  85. data/lib/gtk_paradise/examples/advanced/015_advanced_button_example.rb +156 -0
  86. data/lib/gtk_paradise/examples/advanced/016_change_background_on_click_event.rb +38 -0
  87. data/lib/gtk_paradise/examples/advanced/017_lean_CSS_example.rb +247 -0
  88. data/lib/gtk_paradise/examples/advanced/018_coloured_text_example.rb +158 -0
  89. data/lib/gtk_paradise/examples/advanced/019_gtk_entry_showing_the_cursor_position.rb +67 -0
  90. data/lib/gtk_paradise/examples/advanced/020_scale_this_image.rb +154 -0
  91. data/lib/gtk_paradise/examples/advanced/021_scroll_events_on_gtk_entry.rb +37 -0
  92. data/lib/gtk_paradise/examples/advanced/README.md +4 -0
  93. data/lib/gtk_paradise/examples/cairo/README.md +7 -0
  94. data/lib/gtk_paradise/examples/cairo/basic_cairo_shapes.rb +131 -0
  95. data/lib/gtk_paradise/examples/cairo/cairo_testing.rb +96 -0
  96. data/lib/gtk_paradise/examples/cairo/cairo_transparent_rectangles.rb +94 -0
  97. data/lib/gtk_paradise/examples/cairo/donut_shape.rb +76 -0
  98. data/lib/gtk_paradise/examples/cairo/fancy_triangle.rb +42 -0
  99. data/lib/gtk_paradise/examples/cairo/ping_pong_game.rb +315 -0
  100. data/lib/gtk_paradise/examples/cairo/three_rectangles.rb +67 -0
  101. data/lib/gtk_paradise/examples/controller/README.md +3 -0
  102. data/lib/gtk_paradise/examples/controller/controller.rb +81 -0
  103. data/lib/gtk_paradise/examples/css/001_border_examples.rb +246 -0
  104. data/lib/gtk_paradise/examples/css/002_import_CSS_file.rb +87 -0
  105. data/lib/gtk_paradise/examples/css/README.md +5 -0
  106. data/lib/gtk_paradise/examples/gdk_pixbuf/save_image_example.rb +72 -0
  107. data/lib/gtk_paradise/examples/glib/parse_glib_settings.rb +48 -0
  108. data/lib/gtk_paradise/examples/gtk2/001_tooltips_example.rb +88 -0
  109. data/lib/gtk_paradise/examples/gtk2/002_simple_window.rb +8 -0
  110. data/lib/gtk_paradise/examples/gtk2/003_draw_rectangle.rb +41 -0
  111. data/lib/gtk_paradise/examples/gtk2/004_simple_button.rb +38 -0
  112. data/lib/gtk_paradise/examples/gtk2/005_scale_button.rb +28 -0
  113. data/lib/gtk_paradise/examples/gtk2/006_print_example.rb +259 -0
  114. data/lib/gtk_paradise/examples/gtk2/007_radio_button_window.rb +57 -0
  115. data/lib/gtk_paradise/examples/gtk2/008_list_store_example.rb +145 -0
  116. data/lib/gtk_paradise/examples/gtk2/009_spin_button_example.rb +168 -0
  117. data/lib/gtk_paradise/examples/gtk2/010_paned_widget_example.rb +171 -0
  118. data/lib/gtk_paradise/examples/gtk2/011_password_example.rb +22 -0
  119. data/lib/gtk_paradise/examples/gtk2/012_popup_example.rb +61 -0
  120. data/lib/gtk_paradise/examples/gtk2/013_show_this_cursor.rb +25 -0
  121. data/lib/gtk_paradise/examples/gtk2/014_link_button.rb +44 -0
  122. data/lib/gtk_paradise/examples/gtk2/015_gc_drawing_examples.rb +63 -0
  123. data/lib/gtk_paradise/examples/gtk2/016_combo_box_example.rb +155 -0
  124. data/lib/gtk_paradise/examples/gtk2/017_multiple_gtk_windows.rb +20 -0
  125. data/lib/gtk_paradise/examples/gtk2/018_entry_completion.rb +28 -0
  126. data/lib/gtk_paradise/examples/gtk2/019_insert_text_into_a_text_buffer_example.rb +77 -0
  127. data/lib/gtk_paradise/examples/gtk2/020_size_group_example.rb +29 -0
  128. data/lib/gtk_paradise/examples/gtk2/021_check_button.rb +22 -0
  129. data/lib/gtk_paradise/examples/gtk2/022_hello_world_in_gtk2_and_bold_font.rb +53 -0
  130. data/lib/gtk_paradise/examples/gtk2/023_pixbuf_animation_example.rb +36 -0
  131. data/lib/gtk_paradise/examples/gtk2/024_colour_around_button.rb +49 -0
  132. data/lib/gtk_paradise/examples/gtk2/025_icon_view.rb +50 -0
  133. data/lib/gtk_paradise/examples/gtk2/026_disappearing_buttons.rb +55 -0
  134. data/lib/gtk_paradise/examples/gtk2/027_colour_choose_button.rb +30 -0
  135. data/lib/gtk_paradise/examples/gtk2/028_gtk_expander.rb +23 -0
  136. data/lib/gtk_paradise/examples/gtk2/029_gtk_label_example.rb +59 -0
  137. data/lib/gtk_paradise/examples/gtk2/030_complete_menu_example.rb +76 -0
  138. data/lib/gtk_paradise/examples/gtk2/031_message_dialog.rb +38 -0
  139. data/lib/gtk_paradise/examples/gtk2/032_frame_example.rb +82 -0
  140. data/lib/gtk_paradise/examples/gtk2/033_notebook_example.rb +89 -0
  141. data/lib/gtk_paradise/examples/gtk2/034_radio_menu_item_showcase.rb +73 -0
  142. data/lib/gtk_paradise/examples/gtk2/035_status_icon_example.rb +57 -0
  143. data/lib/gtk_paradise/examples/gtk2/036_threads_example.rb +72 -0
  144. data/lib/gtk_paradise/examples/gtk2/037_extensive_markup_example.rb +49 -0
  145. data/lib/gtk_paradise/examples/gtk2/038_accesskeys_demonstration.rb +136 -0
  146. data/lib/gtk_paradise/examples/gtk2/039_accel_group_example.rb +24 -0
  147. data/lib/gtk_paradise/examples/gtk2/040_gtksourceview2_example.rb +42 -0
  148. data/lib/gtk_paradise/examples/gtk2/041_drawing_example.rb +130 -0
  149. data/lib/gtk_paradise/examples/gtk2/042_buttons_showcasing_the_relief.rb +34 -0
  150. data/lib/gtk_paradise/examples/gtk2/043_gtk_entry.rb +47 -0
  151. data/lib/gtk_paradise/examples/gtk2/044_tree_model_filter.rb +60 -0
  152. data/lib/gtk_paradise/examples/gtk2/045_sorted_tree.rb +137 -0
  153. data/lib/gtk_paradise/examples/gtk2/046_sockets.rb +17 -0
  154. data/lib/gtk_paradise/examples/gtk2/047_progress_bar_example.rb +105 -0
  155. data/lib/gtk_paradise/examples/gtk2/048_event_box_with_popup_menu.rb +64 -0
  156. data/lib/gtk_paradise/examples/gtk2/049_gtk_dialog_sample.rb +51 -0
  157. data/lib/gtk_paradise/examples/gtk2/050_about_dialog.rb +29 -0
  158. data/lib/gtk_paradise/examples/gtk2/051_tree_view_column_example.rb +83 -0
  159. data/lib/gtk_paradise/examples/gtk2/052_packing_demonstration.rb +131 -0
  160. data/lib/gtk_paradise/examples/gtk2/053_vertical_boxes.rb +34 -0
  161. data/lib/gtk_paradise/examples/gtk2/054_drag_and_drop_example.rb +97 -0
  162. data/lib/gtk_paradise/examples/gtk2/055_button_box.rb +122 -0
  163. data/lib/gtk_paradise/examples/gtk2/056_vbox_with_spacing_and_border_width.rb +20 -0
  164. data/lib/gtk_paradise/examples/gtk2/057_show_image.rb +42 -0
  165. data/lib/gtk_paradise/examples/gtk2/058_random_stock_item.rb +39 -0
  166. data/lib/gtk_paradise/examples/gtk2/059_manual_menu.rb +56 -0
  167. data/lib/gtk_paradise/examples/gtk2/060_style_property.rb +82 -0
  168. data/lib/gtk_paradise/examples/gtk2/060_style_property.rc +17 -0
  169. data/lib/gtk_paradise/examples/gtk2/061_mouse_movement.rb +174 -0
  170. data/lib/gtk_paradise/examples/gtk2/README.md +16 -0
  171. data/lib/gtk_paradise/examples/gtk2/settings/README.md +2 -0
  172. data/lib/gtk_paradise/examples/gtk2/settings/gtk_settings.rb +40 -0
  173. data/lib/gtk_paradise/examples/gtk2/uimanager/uimanager.xml +36 -0
  174. data/lib/gtk_paradise/examples/gtk2/uimanager/uimanager_example.rb +113 -0
  175. data/lib/gtk_paradise/examples/gtk3/001_font_related_information.rb +93 -0
  176. data/lib/gtk_paradise/examples/gtk3/002_simple_window.rb +48 -0
  177. data/lib/gtk_paradise/examples/gtk3/003_sorted_tree.rb +141 -0
  178. data/lib/gtk_paradise/examples/gtk3/004_small_paned_example.rb +48 -0
  179. data/lib/gtk_paradise/examples/gtk3/005_spinner_example.rb +46 -0
  180. data/lib/gtk_paradise/examples/gtk3/006_password_example.rb +45 -0
  181. data/lib/gtk_paradise/examples/gtk3/007_progress_bar_example.rb +200 -0
  182. data/lib/gtk_paradise/examples/gtk3/008_menubar_example.rb +96 -0
  183. data/lib/gtk_paradise/examples/gtk3/009_scrolled_window_example.rb +49 -0
  184. data/lib/gtk_paradise/examples/gtk3/010_paned_widget_example.rb +186 -0
  185. data/lib/gtk_paradise/examples/gtk3/011_sockets.rb +19 -0
  186. data/lib/gtk_paradise/examples/gtk3/012_notebook_example.rb +75 -0
  187. data/lib/gtk_paradise/examples/gtk3/013_icon_theme_example.rb +104 -0
  188. data/lib/gtk_paradise/examples/gtk3/014_switcher_window.rb +68 -0
  189. data/lib/gtk_paradise/examples/gtk3/015_list_box_example.rb +64 -0
  190. data/lib/gtk_paradise/examples/gtk3/016_hello_world_in_gtk3_and_bold_font.rb +54 -0
  191. data/lib/gtk_paradise/examples/gtk3/017_grid_example.rb +52 -0
  192. data/lib/gtk_paradise/examples/gtk3/018_buttons_showcasing_the_relief.rb +60 -0
  193. data/lib/gtk_paradise/examples/gtk3/019_text_buffer_example.rb +220 -0
  194. data/lib/gtk_paradise/examples/gtk3/020_radio_button_window.rb +101 -0
  195. data/lib/gtk_paradise/examples/gtk3/021_scale_button_demo.rb +51 -0
  196. data/lib/gtk_paradise/examples/gtk3/022_popup_example.rb +90 -0
  197. data/lib/gtk_paradise/examples/gtk3/023_horizontal_and_vertical_scale.rb +23 -0
  198. data/lib/gtk_paradise/examples/gtk3/024_installation_assistant.rb +365 -0
  199. data/lib/gtk_paradise/examples/gtk3/025_switch_example.rb +55 -0
  200. data/lib/gtk_paradise/examples/gtk3/026_hover_button_example_via_css.rb +75 -0
  201. data/lib/gtk_paradise/examples/gtk3/027_spin_button_example.rb +82 -0
  202. data/lib/gtk_paradise/examples/gtk3/028_radio_menu_item_example.rb +76 -0
  203. data/lib/gtk_paradise/examples/gtk3/029_gtk_dialog_sample.rb +72 -0
  204. data/lib/gtk_paradise/examples/gtk3/030_draw_rectangles.rb +34 -0
  205. data/lib/gtk_paradise/examples/gtk3/031_colour_choose_button.rb +38 -0
  206. data/lib/gtk_paradise/examples/gtk3/032_drag_and_drop_example.rb +83 -0
  207. data/lib/gtk_paradise/examples/gtk3/033_cell_renderer_pixbuf_example.rb +48 -0
  208. data/lib/gtk_paradise/examples/gtk3/034_combo_box_example.rb +49 -0
  209. data/lib/gtk_paradise/examples/gtk3/035_notebook_css_example.rb +130 -0
  210. data/lib/gtk_paradise/examples/gtk3/036_revealer_example.rb +46 -0
  211. data/lib/gtk_paradise/examples/gtk3/037_css_example_of_a_button_changing_the_background_colour_on_click_event.rb +124 -0
  212. data/lib/gtk_paradise/examples/gtk3/038_ten_labels_in_a_vertical_box_example.rb +32 -0
  213. data/lib/gtk_paradise/examples/gtk3/039_threads_example.rb +44 -0
  214. data/lib/gtk_paradise/examples/gtk3/040_font_chooser_dialog_example.rb +19 -0
  215. data/lib/gtk_paradise/examples/gtk3/041_flowbox.rb +72 -0
  216. data/lib/gtk_paradise/examples/gtk3/042_colourized_button_example.rb +82 -0
  217. data/lib/gtk_paradise/examples/gtk3/043_form_example.rb +151 -0
  218. data/lib/gtk_paradise/examples/gtk3/044_check_button.rb +27 -0
  219. data/lib/gtk_paradise/examples/gtk3/045_fixed_example.rb +78 -0
  220. data/lib/gtk_paradise/examples/gtk3/046_event_box_example.rb +32 -0
  221. data/lib/gtk_paradise/examples/gtk3/047_examples_with_css.rb +173 -0
  222. data/lib/gtk_paradise/examples/gtk3/048_accel_group_example.rb +27 -0
  223. data/lib/gtk_paradise/examples/gtk3/049_change_the_application_theme.rb +68 -0
  224. data/lib/gtk_paradise/examples/gtk3/050_header_bar_example.rb +58 -0
  225. data/lib/gtk_paradise/examples/gtk3/051_gtk_label_example.rb +86 -0
  226. data/lib/gtk_paradise/examples/gtk3/052_popover_example.rb +58 -0
  227. data/lib/gtk_paradise/examples/gtk3/053_entry_completion.rb +44 -0
  228. data/lib/gtk_paradise/examples/gtk3/054_svg_viewer.rb +43 -0
  229. data/lib/gtk_paradise/examples/gtk3/055_button_demo.rb +92 -0
  230. data/lib/gtk_paradise/examples/gtk3/056_text_iterator_example.rb +72 -0
  231. data/lib/gtk_paradise/examples/gtk3/057_image_example.rb +51 -0
  232. data/lib/gtk_paradise/examples/gtk3/058_frame_example.rb +104 -0
  233. data/lib/gtk_paradise/examples/gtk3/059_gtk_expander.rb +23 -0
  234. data/lib/gtk_paradise/examples/gtk3/060_ten_vboxes_example.rb +32 -0
  235. data/lib/gtk_paradise/examples/gtk3/061_gtk_entry.rb +91 -0
  236. data/lib/gtk_paradise/examples/gtk3/062_toggle_button_example.rb +19 -0
  237. data/lib/gtk_paradise/examples/gtk3/063_button_box_example.rb +67 -0
  238. data/lib/gtk_paradise/examples/gtk3/064_tree_view_column_example.rb +97 -0
  239. data/lib/gtk_paradise/examples/gtk3/065_tooltips_example.rb +216 -0
  240. data/lib/gtk_paradise/examples/gtk3/066_vertical_boxes.rb +32 -0
  241. data/lib/gtk_paradise/examples/gtk3/067_vbox_with_spacing_and_border_width.rb +24 -0
  242. data/lib/gtk_paradise/examples/gtk3/068_text_view_example.rb +34 -0
  243. data/lib/gtk_paradise/examples/gtk3/069_file_chooser_dialog.rb +41 -0
  244. data/lib/gtk_paradise/examples/gtk3/070_bindings.rb +126 -0
  245. data/lib/gtk_paradise/examples/gtk3/071_search_bar_example.rb +59 -0
  246. data/lib/gtk_paradise/examples/gtk3/072_recent_chooser_dialog.rb +51 -0
  247. data/lib/gtk_paradise/examples/gtk3/073_showcase_the_cursors.rb +94 -0
  248. data/lib/gtk_paradise/examples/gtk3/074_app_chooser_button_example.rb +27 -0
  249. data/lib/gtk_paradise/examples/gtk3/075_tiny_button_via_css.rb +49 -0
  250. data/lib/gtk_paradise/examples/gtk3/076_stack_example.rb +46 -0
  251. data/lib/gtk_paradise/examples/gtk3/077_status_icon_example.rb +54 -0
  252. data/lib/gtk_paradise/examples/gtk3/078_message_dialog_example.rb +179 -0
  253. data/lib/gtk_paradise/examples/gtk3/079_two_windows_example.rb +30 -0
  254. data/lib/gtk_paradise/examples/gtk3/080_extensive_markup_example.rb +49 -0
  255. data/lib/gtk_paradise/examples/gtk3/081_simple_dialog_example.rb +45 -0
  256. data/lib/gtk_paradise/examples/gtk3/082_scrolling_example.rb +56 -0
  257. data/lib/gtk_paradise/examples/gtk3/083_bottom_left_placement.rb +50 -0
  258. data/lib/gtk_paradise/examples/gtk3/084_undecorated_window_example.rb +29 -0
  259. data/lib/gtk_paradise/examples/gtk3/vte/vte3_terminal.rb +59 -0
  260. data/lib/gtk_paradise/examples/pango/pango_power.rb +72 -0
  261. data/lib/gtk_paradise/experimental/README.md +2 -0
  262. data/lib/gtk_paradise/experimental/experimental.config +6 -0
  263. data/lib/gtk_paradise/experimental/experimental.rb +249 -0
  264. data/lib/gtk_paradise/fonts/fonts.rb +679 -0
  265. data/lib/gtk_paradise/gdk/cursor.rb +30 -0
  266. data/lib/gtk_paradise/gdk/gdk.rb +29 -0
  267. data/lib/gtk_paradise/gnome/README.md +5 -0
  268. data/lib/gtk_paradise/gnome/canvas.rb +54 -0
  269. data/lib/gtk_paradise/gtk_classes/about.rb +48 -0
  270. data/lib/gtk_paradise/gtk_classes/about_dialog.rb +25 -0
  271. data/lib/gtk_paradise/gtk_classes/accel_group.rb +38 -0
  272. data/lib/gtk_paradise/gtk_classes/alignment.rb +20 -0
  273. data/lib/gtk_paradise/gtk_classes/application.rb +30 -0
  274. data/lib/gtk_paradise/gtk_classes/box.rb +318 -0
  275. data/lib/gtk_paradise/gtk_classes/button.rb +383 -0
  276. data/lib/gtk_paradise/gtk_classes/button_box.rb +38 -0
  277. data/lib/gtk_paradise/gtk_classes/cairo/context.rb +54 -0
  278. data/lib/gtk_paradise/gtk_classes/calendar.rb +29 -0
  279. data/lib/gtk_paradise/gtk_classes/cell_renderer_text.rb +57 -0
  280. data/lib/gtk_paradise/gtk_classes/check_button.rb +113 -0
  281. data/lib/gtk_paradise/gtk_classes/colours/colours.rb +158 -0
  282. data/lib/gtk_paradise/gtk_classes/combo_box.rb +117 -0
  283. data/lib/gtk_paradise/gtk_classes/combo_box_entry.rb +74 -0
  284. data/lib/gtk_paradise/gtk_classes/combo_box_text.rb +101 -0
  285. data/lib/gtk_paradise/gtk_classes/dialog.rb +20 -0
  286. data/lib/gtk_paradise/gtk_classes/entry.rb +433 -0
  287. data/lib/gtk_paradise/gtk_classes/entry_completion.rb +70 -0
  288. data/lib/gtk_paradise/gtk_classes/event_box.rb +44 -0
  289. data/lib/gtk_paradise/gtk_classes/event_button.rb +55 -0
  290. data/lib/gtk_paradise/gtk_classes/event_key.rb +39 -0
  291. data/lib/gtk_paradise/gtk_classes/expander.rb +37 -0
  292. data/lib/gtk_paradise/gtk_classes/file_chooser_dialog.rb +34 -0
  293. data/lib/gtk_paradise/gtk_classes/file_filter.rb +26 -0
  294. data/lib/gtk_paradise/gtk_classes/file_selection.rb +54 -0
  295. data/lib/gtk_paradise/gtk_classes/frame.rb +75 -0
  296. data/lib/gtk_paradise/gtk_classes/grid.rb +343 -0
  297. data/lib/gtk_paradise/gtk_classes/header_bar.rb +58 -0
  298. data/lib/gtk_paradise/gtk_classes/hscale.rb +60 -0
  299. data/lib/gtk_paradise/gtk_classes/image.rb +68 -0
  300. data/lib/gtk_paradise/gtk_classes/image_menu_item.rb +18 -0
  301. data/lib/gtk_paradise/gtk_classes/label.rb +542 -0
  302. data/lib/gtk_paradise/gtk_classes/list_store.rb +41 -0
  303. data/lib/gtk_paradise/gtk_classes/menu.rb +114 -0
  304. data/lib/gtk_paradise/gtk_classes/menu_bar.rb +23 -0
  305. data/lib/gtk_paradise/gtk_classes/menu_item.rb +57 -0
  306. data/lib/gtk_paradise/gtk_classes/notebook.rb +247 -0
  307. data/lib/gtk_paradise/gtk_classes/option_menu.rb +21 -0
  308. data/lib/gtk_paradise/gtk_classes/popover.rb +26 -0
  309. data/lib/gtk_paradise/gtk_classes/radio_button.rb +22 -0
  310. data/lib/gtk_paradise/gtk_classes/radio_menu_item.rb +44 -0
  311. data/lib/gtk_paradise/gtk_classes/scale_button.rb +33 -0
  312. data/lib/gtk_paradise/gtk_classes/scrolled_window.rb +175 -0
  313. data/lib/gtk_paradise/gtk_classes/search_bar.rb +27 -0
  314. data/lib/gtk_paradise/gtk_classes/size_group.rb +13 -0
  315. data/lib/gtk_paradise/gtk_classes/source_buffer.rb +51 -0
  316. data/lib/gtk_paradise/gtk_classes/source_view.rb +47 -0
  317. data/lib/gtk_paradise/gtk_classes/spin_button.rb +89 -0
  318. data/lib/gtk_paradise/gtk_classes/spinner.rb +37 -0
  319. data/lib/gtk_paradise/gtk_classes/status_icon.rb +105 -0
  320. data/lib/gtk_paradise/gtk_classes/statusbar.rb +44 -0
  321. data/lib/gtk_paradise/gtk_classes/text_buffer.rb +227 -0
  322. data/lib/gtk_paradise/gtk_classes/text_tag.rb +15 -0
  323. data/lib/gtk_paradise/gtk_classes/text_view.rb +251 -0
  324. data/lib/gtk_paradise/gtk_classes/toggle_button.rb +40 -0
  325. data/lib/gtk_paradise/gtk_classes/toolbar.rb +92 -0
  326. data/lib/gtk_paradise/gtk_classes/tree_iter.rb +87 -0
  327. data/lib/gtk_paradise/gtk_classes/tree_selection.rb +40 -0
  328. data/lib/gtk_paradise/gtk_classes/tree_view.rb +322 -0
  329. data/lib/gtk_paradise/gtk_classes/tree_view_column.rb +62 -0
  330. data/lib/gtk_paradise/gtk_classes/vbox.rb +51 -0
  331. data/lib/gtk_paradise/gtk_classes/vscale.rb +42 -0
  332. data/lib/gtk_paradise/gtk_classes/vte.rb +28 -0
  333. data/lib/gtk_paradise/gtk_classes/widget.rb +1422 -0
  334. data/lib/gtk_paradise/gtk_classes/window.rb +72 -0
  335. data/lib/gtk_paradise/hello_world/README.md +10 -0
  336. data/lib/gtk_paradise/hello_world/hello_world_gtk2.rb +31 -0
  337. data/lib/gtk_paradise/hello_world/hello_world_gtk3.rb +33 -0
  338. data/lib/gtk_paradise/images/icons/closed.png +0 -0
  339. data/lib/gtk_paradise/images/icons/directory.png +0 -0
  340. data/lib/gtk_paradise/images/icons/logo.png +0 -0
  341. data/lib/gtk_paradise/images/icons/opened.png +0 -0
  342. data/lib/gtk_paradise/images/internal/COLOUR_BUTTON.png +0 -0
  343. data/lib/gtk_paradise/images/internal/EXPANDER.png +0 -0
  344. data/lib/gtk_paradise/images/internal/GDK_CURSORS.png +0 -0
  345. data/lib/gtk_paradise/images/internal/PROGRESS_BAR.png +0 -0
  346. data/lib/gtk_paradise/images/internal/README.md +3 -0
  347. data/lib/gtk_paradise/images/internal/SEPARATOR.png +0 -0
  348. data/lib/gtk_paradise/images/internal/TEXT_BUFFER2.png +0 -0
  349. data/lib/gtk_paradise/images/internal/VPANED.png +0 -0
  350. data/lib/gtk_paradise/images/internal/combo_box_text.png +0 -0
  351. data/lib/gtk_paradise/images/internal/combo_box_wrap_width_example.png +0 -0
  352. data/lib/gtk_paradise/images/internal/directory_content_screenshot.png +0 -0
  353. data/lib/gtk_paradise/images/internal/fancy_gtk_label.png +0 -0
  354. data/lib/gtk_paradise/images/internal/gtk_assistant.png +0 -0
  355. data/lib/gtk_paradise/images/internal/gtk_bold_label.png +0 -0
  356. data/lib/gtk_paradise/images/internal/gtk_cell_renderer_progress.png +0 -0
  357. data/lib/gtk_paradise/images/internal/gtk_color_dialog.png +0 -0
  358. data/lib/gtk_paradise/images/internal/gtk_coloured_text_example.png +0 -0
  359. data/lib/gtk_paradise/images/internal/gtk_notebook_horizontal.png +0 -0
  360. data/lib/gtk_paradise/images/internal/gtk_notebook_tabs_are_left.png +0 -0
  361. data/lib/gtk_paradise/images/internal/gtk_options.png +0 -0
  362. data/lib/gtk_paradise/images/internal/gtk_recent_chooser_dialog.png +0 -0
  363. data/lib/gtk_paradise/images/internal/gtk_scale_button.png +0 -0
  364. data/lib/gtk_paradise/images/internal/gtk_scrolled_window.png +0 -0
  365. data/lib/gtk_paradise/images/internal/gtk_size_group.png +0 -0
  366. data/lib/gtk_paradise/images/internal/pong_game.png +0 -0
  367. data/lib/gtk_paradise/images/logo/logo.png +0 -0
  368. data/lib/gtk_paradise/images/misc/ARROW_RIGHT.png +0 -0
  369. data/lib/gtk_paradise/images/misc/RMC.jpg +0 -0
  370. data/lib/gtk_paradise/images/misc/SCROLLED_WINDOW.png +0 -0
  371. data/lib/gtk_paradise/images/misc/apple.png +0 -0
  372. data/lib/gtk_paradise/images/misc/border_examples_via_CSS.png +0 -0
  373. data/lib/gtk_paradise/images/misc/broken_image.png +0 -0
  374. data/lib/gtk_paradise/images/misc/dot.png +0 -0
  375. data/lib/gtk_paradise/images/misc/gtk_entry_with_icon_name.png +0 -0
  376. data/lib/gtk_paradise/images/misc/gtk_font_size_widget_example.png +0 -0
  377. data/lib/gtk_paradise/images/misc/head.png +0 -0
  378. data/lib/gtk_paradise/images/misc/maximize_button.png +0 -0
  379. data/lib/gtk_paradise/images/misc/sample_image.png +0 -0
  380. data/lib/gtk_paradise/images/misc/small_clock.png +0 -0
  381. data/lib/gtk_paradise/images/misc/small_shield.png +0 -0
  382. data/lib/gtk_paradise/images/misc/tabble.png +0 -0
  383. data/lib/gtk_paradise/images/misc/tomato.png +0 -0
  384. data/lib/gtk_paradise/images/misc/weather.png +0 -0
  385. data/lib/gtk_paradise/pango/pango.rb +48 -0
  386. data/lib/gtk_paradise/pango/pango_fonts.rb +52 -0
  387. data/lib/gtk_paradise/pango/pango_renderer.rb +69 -0
  388. data/lib/gtk_paradise/project/project.rb +39 -0
  389. data/lib/gtk_paradise/prototypes/README.md +6 -0
  390. data/lib/gtk_paradise/prototypes/gtk3_prototype.rb +34 -0
  391. data/lib/gtk_paradise/prototypes/gtk3_standalone.rb +143 -0
  392. data/lib/gtk_paradise/prototypes/shared_code.rb +137 -0
  393. data/lib/gtk_paradise/require_gtk2.rb +7 -0
  394. data/lib/gtk_paradise/require_gtk3.rb +7 -0
  395. data/lib/gtk_paradise/requires/base_module_and_app_module.rb +7 -0
  396. data/lib/gtk_paradise/requires/do_require_the_files_under_the_gtk_classes_subdirectory.rb +11 -0
  397. data/lib/gtk_paradise/requires/numbered_lines.rb +7 -0
  398. data/lib/gtk_paradise/requires/require_files_irrespective_of_the_gtk_version_at_hand.rb +43 -0
  399. data/lib/gtk_paradise/requires/require_gtk2.rb +11 -0
  400. data/lib/gtk_paradise/requires/require_gtk2_or_gtk3.rb +87 -0
  401. data/lib/gtk_paradise/requires/require_gtk3.rb +30 -0
  402. data/lib/gtk_paradise/requires/require_gtk_runner.rb +1 -0
  403. data/lib/gtk_paradise/requires/require_the_base_module.rb +7 -0
  404. data/lib/gtk_paradise/requires/require_the_base_module_and_gtk_run.rb +8 -0
  405. data/lib/gtk_paradise/requires/require_the_base_module_and_the_toplevel_methods.rb +8 -0
  406. data/lib/gtk_paradise/requires/require_the_classes_files_for_gtk2.rb +11 -0
  407. data/lib/gtk_paradise/requires/require_the_classes_files_for_gtk3.rb +11 -0
  408. data/lib/gtk_paradise/requires/require_the_default_gtk_version.rb +14 -0
  409. data/lib/gtk_paradise/requires/require_the_gtk_colours.rb +7 -0
  410. data/lib/gtk_paradise/requires/require_the_gtk_paradise_commandline.rb +7 -0
  411. data/lib/gtk_paradise/requires/require_the_minesweeper_files.rb +11 -0
  412. data/lib/gtk_paradise/requires/require_the_tabble_project.rb +7 -0
  413. data/lib/gtk_paradise/requires/require_the_toplevel_methods.rb +11 -0
  414. data/lib/gtk_paradise/requires/run_this_widget.rb +7 -0
  415. data/lib/gtk_paradise/run.rb +70 -0
  416. data/lib/gtk_paradise/run_this_widget/run_this_widget.rb +125 -0
  417. data/lib/gtk_paradise/threads/README.md +1 -0
  418. data/lib/gtk_paradise/threads/threads.rb +67 -0
  419. data/lib/gtk_paradise/toplevel_methods/allow_only_numbers.rb +59 -0
  420. data/lib/gtk_paradise/toplevel_methods/css.rb +172 -0
  421. data/lib/gtk_paradise/toplevel_methods/csv.rb +102 -0
  422. data/lib/gtk_paradise/toplevel_methods/cursor.rb +69 -0
  423. data/lib/gtk_paradise/toplevel_methods/determine_which_gtk_version_is_in_use.rb +33 -0
  424. data/lib/gtk_paradise/toplevel_methods/e.rb +18 -0
  425. data/lib/gtk_paradise/toplevel_methods/enable_and_disable_warnings.rb +58 -0
  426. data/lib/gtk_paradise/toplevel_methods/events.rb +72 -0
  427. data/lib/gtk_paradise/toplevel_methods/keyboard.rb +25 -0
  428. data/lib/gtk_paradise/toplevel_methods/keys.rb +96 -0
  429. data/lib/gtk_paradise/toplevel_methods/main_file.rb +31 -0
  430. data/lib/gtk_paradise/toplevel_methods/misc.rb +798 -0
  431. data/lib/gtk_paradise/toplevel_methods/register_sigint.rb +17 -0
  432. data/lib/gtk_paradise/toplevel_methods/roebe.rb +22 -0
  433. data/lib/gtk_paradise/toplevel_methods/screen_resolution.rb +47 -0
  434. data/lib/gtk_paradise/toplevel_methods/select_file.rb +168 -0
  435. data/lib/gtk_paradise/toplevel_methods/spacer.rb +55 -0
  436. data/lib/gtk_paradise/toplevel_methods/text_buffer_tags.rb +188 -0
  437. data/lib/gtk_paradise/toplevel_methods/tokenizer.rb +103 -0
  438. data/lib/gtk_paradise/toplevel_methods/tooltips.rb +71 -0
  439. data/lib/gtk_paradise/toplevel_methods/we_use_this_gtk_version.rb +65 -0
  440. data/lib/gtk_paradise/utility_scripts/README.md +1 -0
  441. data/lib/gtk_paradise/utility_scripts/generate_gtk_prototype.rb +149 -0
  442. data/lib/gtk_paradise/version/upstream_gtk_version.rb +46 -0
  443. data/lib/gtk_paradise/version/version.rb +25 -0
  444. data/lib/gtk_paradise/widgets/README.md +12 -0
  445. data/lib/gtk_paradise/widgets/gtk2/README.md +7 -0
  446. data/lib/gtk_paradise/widgets/gtk2/animation.rb +149 -0
  447. data/lib/gtk_paradise/widgets/gtk2/browser/browser.config +6 -0
  448. data/lib/gtk_paradise/widgets/gtk2/browser/browser.rb +29 -0
  449. data/lib/gtk_paradise/widgets/gtk2/cat_merge.rb +198 -0
  450. data/lib/gtk_paradise/widgets/gtk2/cdripper/cdripper.config +6 -0
  451. data/lib/gtk_paradise/widgets/gtk2/cdripper/cdripper.rb +31 -0
  452. data/lib/gtk_paradise/widgets/gtk2/cell_renderer_progress_example.rb +108 -0
  453. data/lib/gtk_paradise/widgets/gtk2/clipboard_demo.rb +200 -0
  454. data/lib/gtk_paradise/widgets/gtk2/colour_filled_widget/colour_filled_widget.config +6 -0
  455. data/lib/gtk_paradise/widgets/gtk2/colour_filled_widget/colour_filled_widget.rb +29 -0
  456. data/lib/gtk_paradise/widgets/gtk2/conky/conky.rb +30 -0
  457. data/lib/gtk_paradise/widgets/gtk2/contacts/contacts.config +6 -0
  458. data/lib/gtk_paradise/widgets/gtk2/contacts/contacts.rb +29 -0
  459. data/lib/gtk_paradise/widgets/gtk2/cursor_examples.rb +121 -0
  460. data/lib/gtk_paradise/widgets/gtk2/debug_widget/debug_widget.rb +31 -0
  461. data/lib/gtk_paradise/widgets/gtk2/demo_of_labels.rb +133 -0
  462. data/lib/gtk_paradise/widgets/gtk2/dictionary.rb +263 -0
  463. data/lib/gtk_paradise/widgets/gtk2/directory_content_widget/directory_content_widget.rb +30 -0
  464. data/lib/gtk_paradise/widgets/gtk2/editable_combo_field.rb +178 -0
  465. data/lib/gtk_paradise/widgets/gtk2/editor/README.md +3 -0
  466. data/lib/gtk_paradise/widgets/gtk2/emoji_toggle_widget/emoji_toggle_widget.rb +37 -0
  467. data/lib/gtk_paradise/widgets/gtk2/emoji_widget/emoji_widget.config +6 -0
  468. data/lib/gtk_paradise/widgets/gtk2/emoji_widget/emoji_widget.rb +30 -0
  469. data/lib/gtk_paradise/widgets/gtk2/error_widget/error_widget.rb +30 -0
  470. data/lib/gtk_paradise/widgets/gtk2/expander_example.rb +90 -0
  471. data/lib/gtk_paradise/widgets/gtk2/file_opener.rb +301 -0
  472. data/lib/gtk_paradise/widgets/gtk2/file_path_widget/file_path_widget.rb +30 -0
  473. data/lib/gtk_paradise/widgets/gtk2/file_viewer/file_viewer.config +6 -0
  474. data/lib/gtk_paradise/widgets/gtk2/file_viewer/file_viewer.rb +33 -0
  475. data/lib/gtk_paradise/widgets/gtk2/foto_lister.rb +198 -0
  476. data/lib/gtk_paradise/widgets/gtk2/gidnight_commander/gidnight_commander.config +6 -0
  477. data/lib/gtk_paradise/widgets/gtk2/gidnight_commander/gidnight_commander.rb +595 -0
  478. data/lib/gtk_paradise/widgets/gtk2/google_searcher/google_searcher.rb +30 -0
  479. data/lib/gtk_paradise/widgets/gtk2/gtksourceview2_example.rb +105 -0
  480. data/lib/gtk_paradise/widgets/gtk2/hbox_example.rb +114 -0
  481. data/lib/gtk_paradise/widgets/gtk2/information_about_the_harddisc.rb +33 -0
  482. data/lib/gtk_paradise/widgets/gtk2/keyboard_grab.rb +81 -0
  483. data/lib/gtk_paradise/widgets/gtk2/list_store_table3/list_store_table3.rb +29 -0
  484. data/lib/gtk_paradise/widgets/gtk2/lsmod/lsmod.config +6 -0
  485. data/lib/gtk_paradise/widgets/gtk2/lsmod/lsmod.rb +27 -0
  486. data/lib/gtk_paradise/widgets/gtk2/lspci/lspci.config +6 -0
  487. data/lib/gtk_paradise/widgets/gtk2/lspci/lspci.rb +29 -0
  488. data/lib/gtk_paradise/widgets/gtk2/maximize_button/maximize_button.rb +33 -0
  489. data/lib/gtk_paradise/widgets/gtk2/menu_demo.rb +130 -0
  490. data/lib/gtk_paradise/widgets/gtk2/mini_clock/mini_clock.rb +48 -0
  491. data/lib/gtk_paradise/widgets/gtk2/mswin/README.md +3 -0
  492. data/lib/gtk_paradise/widgets/gtk2/mswin/constants.rb +42 -0
  493. data/lib/gtk_paradise/widgets/gtk2/mswin/ms_sys_control.rb +562 -0
  494. data/lib/gtk_paradise/widgets/gtk2/mswin/sys_cmd_button.rb +153 -0
  495. data/lib/gtk_paradise/widgets/gtk2/multiple_select_in_a_tree_view_widget.rb +99 -0
  496. data/lib/gtk_paradise/widgets/gtk2/my_calendar/my_calendar.config +6 -0
  497. data/lib/gtk_paradise/widgets/gtk2/my_calendar/my_calendar.rb +34 -0
  498. data/lib/gtk_paradise/widgets/gtk2/notebook_tab_coloured_top_bar.rb +74 -0
  499. data/lib/gtk_paradise/widgets/gtk2/notebook_tab_with_icon/notebook_tab_with_icon.rb +30 -0
  500. data/lib/gtk_paradise/widgets/gtk2/one_column_with_text_and_image/one_column_with_text_and_image.rb +30 -0
  501. data/lib/gtk_paradise/widgets/gtk2/paned_example.rb +107 -0
  502. data/lib/gtk_paradise/widgets/gtk2/pdfwalker/about.rb +25 -0
  503. data/lib/gtk_paradise/widgets/gtk2/pdfwalker/config.rb +106 -0
  504. data/lib/gtk_paradise/widgets/gtk2/pdfwalker/file.rb +304 -0
  505. data/lib/gtk_paradise/widgets/gtk2/pdfwalker/hexview.rb +81 -0
  506. data/lib/gtk_paradise/widgets/gtk2/pdfwalker/imgview.rb +63 -0
  507. data/lib/gtk_paradise/widgets/gtk2/pdfwalker/menu.rb +366 -0
  508. data/lib/gtk_paradise/widgets/gtk2/pdfwalker/properties.rb +110 -0
  509. data/lib/gtk_paradise/widgets/gtk2/pdfwalker/signing.rb +536 -0
  510. data/lib/gtk_paradise/widgets/gtk2/pdfwalker/textview.rb +86 -0
  511. data/lib/gtk_paradise/widgets/gtk2/pdfwalker/treeview.rb +400 -0
  512. data/lib/gtk_paradise/widgets/gtk2/pdfwalker/walker.rb +303 -0
  513. data/lib/gtk_paradise/widgets/gtk2/pdfwalker/xrefs.rb +71 -0
  514. data/lib/gtk_paradise/widgets/gtk2/pid_displayer/pid_displayer.config +6 -0
  515. data/lib/gtk_paradise/widgets/gtk2/pid_displayer/pid_displayer.rb +30 -0
  516. data/lib/gtk_paradise/widgets/gtk2/ping_widget/ping_widget.rb +30 -0
  517. data/lib/gtk_paradise/widgets/gtk2/psaux_viewer/psaux_viewer.rb +29 -0
  518. data/lib/gtk_paradise/widgets/gtk2/random_image/random_image.rb +39 -0
  519. data/lib/gtk_paradise/widgets/gtk2/reorderable_tabs_example.rb +148 -0
  520. data/lib/gtk_paradise/widgets/gtk2/ruler_widget.rb +127 -0
  521. data/lib/gtk_paradise/widgets/gtk2/scale_button_example.rb +116 -0
  522. data/lib/gtk_paradise/widgets/gtk2/scale_this_image.rb +164 -0
  523. data/lib/gtk_paradise/widgets/gtk2/scrolled_window_with_viewport/scrolled_window_with_viewport.rb +30 -0
  524. data/lib/gtk_paradise/widgets/gtk2/select_file/select_file.rb +32 -0
  525. data/lib/gtk_paradise/widgets/gtk2/show_icon_theme/show_icon_theme.rb +34 -0
  526. data/lib/gtk_paradise/widgets/gtk2/simple_clock/simple_clock.rb +29 -0
  527. data/lib/gtk_paradise/widgets/gtk2/slider_changing_button.rb +116 -0
  528. data/lib/gtk_paradise/widgets/gtk2/status_icon_example.rb +200 -0
  529. data/lib/gtk_paradise/widgets/gtk2/stopwatch/stopwatch.rb +30 -0
  530. data/lib/gtk_paradise/widgets/gtk2/sys_message/sys_message.config +6 -0
  531. data/lib/gtk_paradise/widgets/gtk2/sys_message/sys_message.rb +29 -0
  532. data/lib/gtk_paradise/widgets/gtk2/tabby/tabby.config +6 -0
  533. data/lib/gtk_paradise/widgets/gtk2/tabby/tabby.rb +27 -0
  534. data/lib/gtk_paradise/widgets/gtk2/tabby/view.rb +32 -0
  535. data/lib/gtk_paradise/widgets/gtk2/table2.rb +144 -0
  536. data/lib/gtk_paradise/widgets/gtk2/table_example.rb +129 -0
  537. data/lib/gtk_paradise/widgets/gtk2/timer_window/button_cancel.rb +39 -0
  538. data/lib/gtk_paradise/widgets/gtk2/timer_window/button_start.rb +83 -0
  539. data/lib/gtk_paradise/widgets/gtk2/timer_window/cycle_runner.rb +72 -0
  540. data/lib/gtk_paradise/widgets/gtk2/timer_window/input_validator.rb +38 -0
  541. data/lib/gtk_paradise/widgets/gtk2/timer_window/panel.rb +90 -0
  542. data/lib/gtk_paradise/widgets/gtk2/timer_window/progress_bar.rb +30 -0
  543. data/lib/gtk_paradise/widgets/gtk2/timer_window/text_field.rb +44 -0
  544. data/lib/gtk_paradise/widgets/gtk2/timer_window/timer.rb +95 -0
  545. data/lib/gtk_paradise/widgets/gtk2/timer_window/timer_window.config +6 -0
  546. data/lib/gtk_paradise/widgets/gtk2/timer_window/timer_window.rb +137 -0
  547. data/lib/gtk_paradise/widgets/gtk2/toolbar_example.rb +119 -0
  548. data/lib/gtk_paradise/widgets/gtk2/tree_view_demo.rb +148 -0
  549. data/lib/gtk_paradise/widgets/gtk2/unicode_clock/unicode_clock.rb +30 -0
  550. data/lib/gtk_paradise/widgets/gtk2/user/user.rb +29 -0
  551. data/lib/gtk_paradise/widgets/gtk2/wget_wrapper/wget_wrapper.rb +29 -0
  552. data/lib/gtk_paradise/widgets/gtk2/xpm_loader/xpm_loader.rb +32 -0
  553. data/lib/gtk_paradise/widgets/gtk2/youtube_dl.rb +227 -0
  554. data/lib/gtk_paradise/widgets/gtk3/browser/browser.rb +30 -0
  555. data/lib/gtk_paradise/widgets/gtk3/burn_this_iso_file/burn_this_iso_file.rb +241 -0
  556. data/lib/gtk_paradise/widgets/gtk3/burning_widget/burning_widget.rb +30 -0
  557. data/lib/gtk_paradise/widgets/gtk3/burning_widget/drawing_widget.rb +107 -0
  558. data/lib/gtk_paradise/widgets/gtk3/calculator/calculator.rb +456 -0
  559. data/lib/gtk_paradise/widgets/gtk3/cdripper/cdripper.rb +29 -0
  560. data/lib/gtk_paradise/widgets/gtk3/checkbox_image/checkbox_image.rb +169 -0
  561. data/lib/gtk_paradise/widgets/gtk3/colour_filled_widget/colour_filled_widget.rb +29 -0
  562. data/lib/gtk_paradise/widgets/gtk3/colour_palette/colour_palette.rb +30 -0
  563. data/lib/gtk_paradise/widgets/gtk3/coloured_bar/coloured_bar.rb +33 -0
  564. data/lib/gtk_paradise/widgets/gtk3/coloured_square/coloured_square.rb +186 -0
  565. data/lib/gtk_paradise/widgets/gtk3/conky/conky.rb +31 -0
  566. data/lib/gtk_paradise/widgets/gtk3/contacts/contacts.rb +29 -0
  567. data/lib/gtk_paradise/widgets/gtk3/cpu_widget/cpu_widget.rb +228 -0
  568. data/lib/gtk_paradise/widgets/gtk3/debug_widget/debug_widget.rb +30 -0
  569. data/lib/gtk_paradise/widgets/gtk3/directory_content_widget/directory_content_widget.rb +30 -0
  570. data/lib/gtk_paradise/widgets/gtk3/editor/connect_skeleton.rb +97 -0
  571. data/lib/gtk_paradise/widgets/gtk3/editor/create.rb +160 -0
  572. data/lib/gtk_paradise/widgets/gtk3/editor/editor.rb +836 -0
  573. data/lib/gtk_paradise/widgets/gtk3/editor/internal_widgets/README.md +3 -0
  574. data/lib/gtk_paradise/widgets/gtk3/editor/internal_widgets/goto_line_widget.rb +234 -0
  575. data/lib/gtk_paradise/widgets/gtk3/editor/misc.rb +568 -0
  576. data/lib/gtk_paradise/widgets/gtk3/emoji_toggle_widget/emoji_toggle_widget.rb +37 -0
  577. data/lib/gtk_paradise/widgets/gtk3/emoji_widget/emoji_widget.rb +30 -0
  578. data/lib/gtk_paradise/widgets/gtk3/error_widget/error_widget.rb +30 -0
  579. data/lib/gtk_paradise/widgets/gtk3/file_path_widget/file_path_widget.rb +30 -0
  580. data/lib/gtk_paradise/widgets/gtk3/file_viewer/file_viewer.rb +33 -0
  581. data/lib/gtk_paradise/widgets/gtk3/files_in_directory/files_in_directory.rb +318 -0
  582. data/lib/gtk_paradise/widgets/gtk3/flexible_vte/README.md +4 -0
  583. data/lib/gtk_paradise/widgets/gtk3/flexible_vte/flexible_vte.rb +241 -0
  584. data/lib/gtk_paradise/widgets/gtk3/flip_state_widget/flip_state_widget.rb +30 -0
  585. data/lib/gtk_paradise/widgets/gtk3/font_size_widget/action_button.rb +69 -0
  586. data/lib/gtk_paradise/widgets/gtk3/font_size_widget/font_size_widget.rb +540 -0
  587. data/lib/gtk_paradise/widgets/gtk3/gidnight_commander/gidnight_commander.rb +415 -0
  588. data/lib/gtk_paradise/widgets/gtk3/google_searcher/google_searcher.rb +30 -0
  589. data/lib/gtk_paradise/widgets/gtk3/image_close_on_click_action/image_close_on_click_action.rb +101 -0
  590. data/lib/gtk_paradise/widgets/gtk3/image_viewer/image_viewer.rb +214 -0
  591. data/lib/gtk_paradise/widgets/gtk3/information_about_the_harddisc/information_about_the_harddisc.rb +30 -0
  592. data/lib/gtk_paradise/widgets/gtk3/insert_character/insert_character.rb +266 -0
  593. data/lib/gtk_paradise/widgets/gtk3/linux_users/linux_users.rb +192 -0
  594. data/lib/gtk_paradise/widgets/gtk3/list_store_table3/list_store_table3.rb +29 -0
  595. data/lib/gtk_paradise/widgets/gtk3/lsmod/lsmod.rb +27 -0
  596. data/lib/gtk_paradise/widgets/gtk3/lspci/lspci.rb +29 -0
  597. data/lib/gtk_paradise/widgets/gtk3/maximize_button/maximize_button.rb +29 -0
  598. data/lib/gtk_paradise/widgets/gtk3/mini_clock/mini_clock.rb +47 -0
  599. data/lib/gtk_paradise/widgets/gtk3/my_calendar/my_calendar.rb +30 -0
  600. data/lib/gtk_paradise/widgets/gtk3/notebook_controller/notebook_controller.rb +30 -0
  601. data/lib/gtk_paradise/widgets/gtk3/notebook_tab_with_icon/notebook_tab_with_icon.rb +30 -0
  602. data/lib/gtk_paradise/widgets/gtk3/numbered_lines/numbered_lines.rb +307 -0
  603. data/lib/gtk_paradise/widgets/gtk3/one_column_with_text_and_image/one_column_with_text_and_image.rb +30 -0
  604. data/lib/gtk_paradise/widgets/gtk3/pid_displayer/pid_displayer.rb +30 -0
  605. data/lib/gtk_paradise/widgets/gtk3/ping_widget/ping_widget.rb +30 -0
  606. data/lib/gtk_paradise/widgets/gtk3/psaux_viewer/psaux_viewer.rb +29 -0
  607. data/lib/gtk_paradise/widgets/gtk3/random_image/random_image.rb +29 -0
  608. data/lib/gtk_paradise/widgets/gtk3/regex_matcher/regex_matcher.rb +156 -0
  609. data/lib/gtk_paradise/widgets/gtk3/rename_widget/rename_widget.rb +305 -0
  610. data/lib/gtk_paradise/widgets/gtk3/scrolled_window_with_viewport/scrolled_window_with_viewport.rb +30 -0
  611. data/lib/gtk_paradise/widgets/gtk3/select_file/select_file.rb +32 -0
  612. data/lib/gtk_paradise/widgets/gtk3/show_icon_theme/show_icon_theme.rb +30 -0
  613. data/lib/gtk_paradise/widgets/gtk3/simple_clock/simple_clock.rb +38 -0
  614. data/lib/gtk_paradise/widgets/gtk3/stopwatch/stopwatch.rb +30 -0
  615. data/lib/gtk_paradise/widgets/gtk3/sys_message/sys_message.rb +29 -0
  616. data/lib/gtk_paradise/widgets/gtk3/system_information/system_information.rb +188 -0
  617. data/lib/gtk_paradise/widgets/gtk3/tabble/admin_panel.rb +196 -0
  618. data/lib/gtk_paradise/widgets/gtk3/tabble/constants.rb +19 -0
  619. data/lib/gtk_paradise/widgets/gtk3/tabble/image_and_button.rb +383 -0
  620. data/lib/gtk_paradise/widgets/gtk3/tabble/tabble.rb +535 -0
  621. data/lib/gtk_paradise/widgets/gtk3/tabby/tabby.rb +29 -0
  622. data/lib/gtk_paradise/widgets/gtk3/tabby/view.rb +32 -0
  623. data/lib/gtk_paradise/widgets/gtk3/text_entry_widget/text_entry_widget.rb +30 -0
  624. data/lib/gtk_paradise/widgets/gtk3/unicode_clock/unicode_clock.rb +30 -0
  625. data/lib/gtk_paradise/widgets/gtk3/user/user.rb +29 -0
  626. data/lib/gtk_paradise/widgets/gtk3/view_webpage/view_webpage.rb +183 -0
  627. data/lib/gtk_paradise/widgets/gtk3/vote_box_widget/vote_box_widget.rb +30 -0
  628. data/lib/gtk_paradise/widgets/gtk3/wget_wrapper/wget_wrapper.rb +30 -0
  629. data/lib/gtk_paradise/widgets/gtk3/xpm_loader/xpm_loader.rb +32 -0
  630. data/lib/gtk_paradise/widgets/shared_code/admin_panel/admin_panel_module.rb +235 -0
  631. data/lib/gtk_paradise/widgets/shared_code/browser/browser_module.rb +314 -0
  632. data/lib/gtk_paradise/widgets/shared_code/burning_widget/burning_widget_module.rb +185 -0
  633. data/lib/gtk_paradise/widgets/shared_code/cdripper/cdripper_module.rb +564 -0
  634. data/lib/gtk_paradise/widgets/shared_code/colour_filled_widget/colour_filled_widget_module.rb +283 -0
  635. data/lib/gtk_paradise/widgets/shared_code/colour_palette/colour_palette_module.rb +362 -0
  636. data/lib/gtk_paradise/widgets/shared_code/coloured_bar/coloured_bar_module.rb +248 -0
  637. data/lib/gtk_paradise/widgets/shared_code/conky/conky_module.rb +378 -0
  638. data/lib/gtk_paradise/widgets/shared_code/contacts/contacts_module.rb +335 -0
  639. data/lib/gtk_paradise/widgets/shared_code/customizable_dialog/customizable_dialog.rb +95 -0
  640. data/lib/gtk_paradise/widgets/shared_code/debug_widget/debug_widget_module.rb +307 -0
  641. data/lib/gtk_paradise/widgets/shared_code/directory_content_widget/constants.rb +53 -0
  642. data/lib/gtk_paradise/widgets/shared_code/directory_content_widget/directory_content_widget_module.rb +777 -0
  643. data/lib/gtk_paradise/widgets/shared_code/directory_content_widget/handle_this_file_or_symlink.rb +83 -0
  644. data/lib/gtk_paradise/widgets/shared_code/emoji_toggle_widget/emoji_toggle_widget_module.rb +226 -0
  645. data/lib/gtk_paradise/widgets/shared_code/emoji_widget/emoji_widget_module.rb +212 -0
  646. data/lib/gtk_paradise/widgets/shared_code/error_widget/error_widget_module.rb +157 -0
  647. data/lib/gtk_paradise/widgets/shared_code/file_path_widget/file_path_widget.css +0 -0
  648. data/lib/gtk_paradise/widgets/shared_code/file_path_widget/file_path_widget_module.rb +245 -0
  649. data/lib/gtk_paradise/widgets/shared_code/file_viewer/file_viewer_module.rb +285 -0
  650. data/lib/gtk_paradise/widgets/shared_code/flip_state_widget/flip_state_widget_module.rb +203 -0
  651. data/lib/gtk_paradise/widgets/shared_code/google_searcher/google_searcher_module.rb +218 -0
  652. data/lib/gtk_paradise/widgets/shared_code/information_about_the_harddisc/harddisc_information.rb +155 -0
  653. data/lib/gtk_paradise/widgets/shared_code/information_about_the_harddisc/information_about_the_harddisc_module.rb +444 -0
  654. data/lib/gtk_paradise/widgets/shared_code/list_store_table3/list_store_table3_module.rb +144 -0
  655. data/lib/gtk_paradise/widgets/shared_code/lsmod/lsmod_module.rb +275 -0
  656. data/lib/gtk_paradise/widgets/shared_code/lspci/lspci_module.rb +329 -0
  657. data/lib/gtk_paradise/widgets/shared_code/maximize_button/maximize_button_module.rb +166 -0
  658. data/lib/gtk_paradise/widgets/shared_code/mini_clock/mini_clock_module.rb +228 -0
  659. data/lib/gtk_paradise/widgets/shared_code/my_calendar/my_calendar_module.rb +327 -0
  660. data/lib/gtk_paradise/widgets/shared_code/notebook_controller/notebook_controller_module.rb +339 -0
  661. data/lib/gtk_paradise/widgets/shared_code/notebook_tab_with_icon/notebook_tab_with_icon_module.rb +297 -0
  662. data/lib/gtk_paradise/widgets/shared_code/one_column_with_text_and_image/one_column_with_text_and_image_module.rb +223 -0
  663. data/lib/gtk_paradise/widgets/shared_code/pid_displayer/pid_displayer_module.rb +596 -0
  664. data/lib/gtk_paradise/widgets/shared_code/ping_widget/ping_widget_module.rb +326 -0
  665. data/lib/gtk_paradise/widgets/shared_code/psaux_viewer/psaux_viewer_module.rb +210 -0
  666. data/lib/gtk_paradise/widgets/shared_code/random_image/random_image_module.rb +307 -0
  667. data/lib/gtk_paradise/widgets/shared_code/scrolled_window_with_viewport/scrolled_window_with_viewport_module.rb +165 -0
  668. data/lib/gtk_paradise/widgets/shared_code/select_file/select_file_module.rb +241 -0
  669. data/lib/gtk_paradise/widgets/shared_code/shell/shell.css +5 -0
  670. data/lib/gtk_paradise/widgets/shared_code/shell/shell_module.rb +0 -0
  671. data/lib/gtk_paradise/widgets/shared_code/show_icon_theme/show_icon_theme_module.rb +364 -0
  672. data/lib/gtk_paradise/widgets/shared_code/simple_clock/simple_clock_module.rb +266 -0
  673. data/lib/gtk_paradise/widgets/shared_code/stopwatch/stopwatch_module.rb +341 -0
  674. data/lib/gtk_paradise/widgets/shared_code/sys_message/sys_message_module.rb +211 -0
  675. data/lib/gtk_paradise/widgets/shared_code/tabby/tabby_module.rb +189 -0
  676. data/lib/gtk_paradise/widgets/shared_code/tabby/view_module.rb +340 -0
  677. data/lib/gtk_paradise/widgets/shared_code/text_entry_widget/text_entry_widget_module.rb +182 -0
  678. data/lib/gtk_paradise/widgets/shared_code/unicode_clock/unicode_clock.css +0 -0
  679. data/lib/gtk_paradise/widgets/shared_code/unicode_clock/unicode_clock_module.rb +192 -0
  680. data/lib/gtk_paradise/widgets/shared_code/user/user_module.rb +307 -0
  681. data/lib/gtk_paradise/widgets/shared_code/vote_box_widget/vote_box_widget_module.rb +208 -0
  682. data/lib/gtk_paradise/widgets/shared_code/wget_wrapper/wget_wrapper_module.rb +266 -0
  683. data/lib/gtk_paradise/widgets/shared_code/xpm_loader/xpm_loader_module.rb +190 -0
  684. data/lib/gtk_paradise/widgets/version_agnostic/audio_button.rb +134 -0
  685. data/lib/gtk_paradise/widgets/version_agnostic/button_open_remote_webpage.rb +171 -0
  686. data/lib/gtk_paradise/widgets/version_agnostic/button_with_border.rb +63 -0
  687. data/lib/gtk_paradise/widgets/version_agnostic/button_xorg_buffer.rb +150 -0
  688. data/lib/gtk_paradise/widgets/version_agnostic/coloured_button.rb +248 -0
  689. data/lib/gtk_paradise/widgets/version_agnostic/coloured_unit.rb +54 -0
  690. data/lib/gtk_paradise/widgets/version_agnostic/my_image_menu_item.rb +103 -0
  691. data/lib/gtk_paradise/widgets/version_agnostic/my_menu_item_separator.rb +31 -0
  692. data/lib/gtk_paradise/widgets/version_agnostic/non_numbers_only.rb +66 -0
  693. data/lib/gtk_paradise/widgets/version_agnostic/note_window.rb +107 -0
  694. data/lib/gtk_paradise/widgets/version_agnostic/numbers_only.rb +61 -0
  695. data/lib/gtk_paradise/www/index.cgi +34 -0
  696. data/lib/gtk_paradise/yaml/browser_URLs.yml +22 -0
  697. data/lib/gtk_paradise/yaml/configuration_options_for_class_gtk_runner.yml +29 -0
  698. data/lib/gtk_paradise/yaml/menu.yml +1026 -0
  699. data/lib/gtk_paradise/yaml/notebook_controller.yml +299 -0
  700. data/lib/gtk_paradise/yaml/use_this_gtk_version_by_default.yml +1 -0
  701. data/lib/gtk_paradise.rb +5 -0
  702. data/test/gtk2/testing_combo_box.rb +24 -0
  703. data/test/gtk2/testing_gtk_image.rb +24 -0
  704. data/test/gtk2/testing_label_with_ampersand.rb +26 -0
  705. data/test/gtk2/testing_notebook.rb +23 -0
  706. data/test/gtk2/testing_the_gtk_paradise_project.rb +25 -0
  707. data/test/gtk3/test_widget.rb +114 -0
  708. data/test/gtk3/testing_app.rb +22 -0
  709. data/test/gtk3/testing_base_module.rb +63 -0
  710. data/test/gtk3/testing_colours.rb +11 -0
  711. data/test/gtk3/testing_project_base_directory.rb +9 -0
  712. data/test/gtk3/testing_the_html_pseudo_tags.rb +127 -0
  713. data/test/misc/testing_gtk_paradise_runner.rb +22 -0
  714. metadata +813 -0
@@ -0,0 +1,836 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # === Gtk::Editor
6
+ # =========================================================================== #
7
+ # require 'gtk_paradise/widgets/gtk3/editor/editor.rb'
8
+ # Gtk::Editor.run
9
+ # =========================================================================== #
10
+ require 'gtk_paradise/widgets/gtk3/editor/connect_skeleton.rb'
11
+ require 'gtk_paradise/widgets/gtk3/editor/create.rb'
12
+ require 'gtk_paradise/widgets/gtk3/editor/misc.rb'
13
+
14
+ module Gtk
15
+
16
+ class Editor < ::Gtk::Box # === Gtk::Editor
17
+
18
+ require 'gtk_paradise/requires/require_the_base_module.rb'
19
+ include ::Gtk::BaseModule
20
+
21
+ begin
22
+ require 'save_file'
23
+ rescue LoadError; end
24
+
25
+ begin
26
+ require 'colours'
27
+ rescue LoadError; end
28
+
29
+ require 'gtk_paradise/widgets/gtk3/insert_character/insert_character.rb'
30
+ require 'gtk_paradise/widgets/gtk3/font_size_widget/font_size_widget.rb'
31
+ require 'gtk_paradise/widgets/gtk3/numbered_lines/numbered_lines.rb'
32
+ require 'gtk_paradise/widgets/gtk3/colour_palette/colour_palette.rb'
33
+
34
+ # ========================================================================= #
35
+ # === initialize
36
+ # ========================================================================= #
37
+ def initialize(
38
+ commandline_arguments = ARGV,
39
+ run_already = true
40
+ )
41
+ super(:vertical)
42
+ reset
43
+ set_commandline_arguments(
44
+ commandline_arguments
45
+ )
46
+ # ======================================================================= #
47
+ # === Handle blocks next
48
+ # ======================================================================= #
49
+ if block_given?
50
+ yielded = yield
51
+ case yielded
52
+ # ===================================================================== #
53
+ # === :do_not_use_the_colour_box_widget
54
+ # ===================================================================== #
55
+ when :do_not_use_the_colour_box_widget
56
+ do_not_use_the_colour_box_widget
57
+ end
58
+ end
59
+ run if run_already
60
+ end
61
+
62
+ # ========================================================================= #
63
+ # === handle_CSS_rules (CSS tag)
64
+ # ========================================================================= #
65
+ def handle_CSS_rules
66
+ use_gtk_paradise_project_css_file
67
+ more_CSS_then_apply_it '
68
+ #colour_palette_text {
69
+ color: darkblue;
70
+ border-bottom: 1px solid darkgreen;
71
+ padding: 1px;
72
+ }
73
+
74
+ #scrollbar_for_the_editor scrollbar {
75
+ padding: 1px;
76
+ min-width: 5px;
77
+ }
78
+
79
+ #scrollbar_for_the_editor trough {
80
+ background-color: transparent;
81
+ background-repeat: no-repeat;
82
+ background-position: center;
83
+ }
84
+
85
+ #scrollbar_for_the_editor slider {
86
+ /* Size of the slider */
87
+ min-width: 5px;
88
+ min-height: 5px;
89
+ border-radius: 5px;
90
+ margin: 0;
91
+ min-height: 5px;
92
+ min-width: 5px;
93
+ background-color: steelblue;
94
+
95
+ /* Padding around the slider */
96
+ border: 2px solid steelblue;
97
+ }
98
+
99
+ notebook {
100
+ padding: 2px;
101
+ margin: 2px;
102
+ }
103
+
104
+ #button_clear_the_textbuffer {
105
+ border: 2px solid midnightblue;
106
+ }
107
+
108
+ '
109
+ end
110
+
111
+ # ========================================================================= #
112
+ # === array_containing_the_text_buffers?
113
+ # ========================================================================= #
114
+ def array_containing_the_text_buffers?
115
+ @hash_all_tab_widgets.map {|object_id, inner_hash|
116
+ inner_hash[:text_buffer]
117
+ }
118
+ end
119
+
120
+ # ========================================================================= #
121
+ # === array_containing_the_numbered_lines?
122
+ # ========================================================================= #
123
+ def array_containing_the_numbered_lines?
124
+ @hash_all_tab_widgets.map {|object_id, inner_hash|
125
+ inner_hash[:numbered_lines]
126
+ }
127
+ end
128
+
129
+ # ========================================================================= #
130
+ # === array_containing_the_scrolled_windows?
131
+ # ========================================================================= #
132
+ def array_containing_the_scrolled_windows?
133
+ return @hash_all_tab_widgets.map {|object_id, inner_hash|
134
+ inner_hash[:scrolled_window]
135
+ }
136
+ end
137
+
138
+ # ========================================================================= #
139
+ # === set_save_into_this_local_file
140
+ # ========================================================================= #
141
+ def set_save_into_this_local_file(i)
142
+ @entry_save_into_this_local_file.set_text(i.to_s)
143
+ end
144
+
145
+ # ========================================================================= #
146
+ # === entry_for_insert_this_text?
147
+ #
148
+ # This method will yield the entry that contains the "insert this text"
149
+ # part.
150
+ # ========================================================================= #
151
+ def entry_for_insert_this_text?
152
+ @entry_insert_this_text
153
+ end
154
+
155
+ # ========================================================================= #
156
+ # === retrieve_text
157
+ #
158
+ # Retrieve the selected text from the GtkTextView and display it to
159
+ # the user.
160
+ # ========================================================================= #
161
+ def retrieve_text(
162
+ textview
163
+ )
164
+ start_iter, end_iter, selected = textview.buffer.selection_bounds
165
+ # ======================================================================= #
166
+ # The next clause can be used to select everything.
167
+ # if !selected
168
+ # start_iter, end_iter = textview.buffer.bounds
169
+ # end
170
+ # ======================================================================= #
171
+ if selected.nil?
172
+ selected = ''
173
+ end
174
+ if start_iter and end_iter
175
+ text = textview.buffer.get_text(start_iter, end_iter, false) # false for "include_hidden_chars"
176
+ else
177
+ text = ''
178
+ end
179
+ @entry_insert_this_text.set_text(text)
180
+ return text
181
+ end
182
+
183
+ # ========================================================================= #
184
+ # === insert_text (insert tag)
185
+ #
186
+ # Insert the text from the GtkEntry into the GtkTextView.
187
+ # ========================================================================= #
188
+ def insert_text(
189
+ entry = @entry_insert_this_text, text_view
190
+ )
191
+ text_buffer = text_view.buffer
192
+ mark = text_buffer.selection_bound # First, obtain the text-mark.
193
+ iter = text_buffer.get_iter_at(mark: mark) # The text-mark is translated into an iter.
194
+ text_buffer.insert(iter, entry.text) # Put the content of the gtk-entry into the buffer.
195
+ end
196
+
197
+ # ========================================================================= #
198
+ # === set_buffer
199
+ #
200
+ # This method can be used to set the content of the buffer.
201
+ # ========================================================================= #
202
+ def set_buffer(i)
203
+ main_text_buffer?.set_text(i.to_s)
204
+ end
205
+
206
+ # ========================================================================= #
207
+ # === set_colour
208
+ # ========================================================================= #
209
+ def set_colour(i)
210
+ @entry_insert_this_text.set_text(i.to_s)
211
+ end
212
+
213
+ # ========================================================================= #
214
+ # === focus_on_tab
215
+ # ========================================================================= #
216
+ def focus_on_tab(i = 1)
217
+ @notebook.focus_on_this_tab(i.to_i - 1)
218
+ end
219
+
220
+ # ========================================================================= #
221
+ # === create_the_notebook_tab
222
+ # ========================================================================= #
223
+ def create_the_notebook_tab
224
+ @notebook = return_default_notebook
225
+ respond_to_on_switched_tab_event
226
+ @notebook.signal_connect_after(:switch_page) { |widget, page, page_number|
227
+ update_the_label_showing_how_many_lines_are_in_the_current_buffer
228
+ }
229
+ # ======================================================================= #
230
+ # Add 5 tabs next:
231
+ # ======================================================================= #
232
+ 5.times {
233
+ # ===================================================================== #
234
+ # The following is just test-code.
235
+ # ===================================================================== #
236
+ n_times = rand(5)+1
237
+ _ = ''.dup
238
+ n_times.times {
239
+ _ << "AHIFOUVEUHIVE\n"
240
+ }
241
+ add_a_new_tab(_)
242
+ }
243
+ end
244
+
245
+ # ========================================================================= #
246
+ # === respond_to_on_switched_tab_event
247
+ # ========================================================================= #
248
+ def respond_to_on_switched_tab_event
249
+ @notebook.on_switched_tab { |widget, page, page_number|
250
+ this_is_now_the_main_buffer(page_number)
251
+ }
252
+ end
253
+
254
+ # ========================================================================= #
255
+ # === sync_change_to_use_this_font
256
+ # ========================================================================= #
257
+ def sync_change_to_use_this_font(
258
+ use_this_font = use_which_font?
259
+ )
260
+ array_containing_the_scrolled_windows?.each {|this_scrolled_window|
261
+ # ===================================================================== #
262
+ # Every scrolled-window will use the same font.
263
+ # ===================================================================== #
264
+ this_scrolled_window.set_font(use_this_font)
265
+ }
266
+ # ======================================================================= #
267
+ # === Sync the font in use onto the numbered-lines widget
268
+ #
269
+ # We also have to sync to the widget on the left side that displays
270
+ # the line numbers.
271
+ # ======================================================================= #
272
+ array_containing_the_numbered_lines?.each {|this_numbered_line|
273
+ this_numbered_line.set_font(use_this_font)
274
+ }
275
+ end
276
+
277
+ # ========================================================================= #
278
+ # === start_iter?
279
+ #
280
+ # Obtain the start-iter from the main buffer.
281
+ # ========================================================================= #
282
+ def start_iter?(
283
+ buffer = main_text_buffer?
284
+ )
285
+ buffer.start_iter
286
+ end
287
+
288
+ # ========================================================================= #
289
+ # === current_textview?
290
+ # ========================================================================= #
291
+ def current_textview?
292
+ this_id = @notebook.get_nth_page(active_notebook_tab?).object_id
293
+ hash = @hash_all_tab_widgets
294
+ if hash.has_key? this_id
295
+ pointer = hash[this_id]
296
+ return pointer[:text_view]
297
+ end
298
+ return nil
299
+ end; alias textview? current_textview? # === textview?
300
+ alias main_textview? current_textview? # === main_textview?
301
+
302
+ # ========================================================================= #
303
+ # === update_the_label_showing_how_many_lines_are_in_the_current_buffer
304
+ # ========================================================================= #
305
+ def update_the_label_showing_how_many_lines_are_in_the_current_buffer(
306
+ use_this_buffer = buffer_content?
307
+ )
308
+ if @label_n_lines_in_the_file and use_this_buffer
309
+ @label_n_lines_in_the_file.set_text(
310
+ (
311
+ use_this_buffer.text?.to_s.count("\n") + 1
312
+ ).to_s+' lines'
313
+ )
314
+ @label_n_lines_in_the_file.make_bold
315
+ end
316
+ end; alias update_n_lines update_the_label_showing_how_many_lines_are_in_the_current_buffer # === update_n_lines
317
+
318
+ # ========================================================================= #
319
+ # === do_focus_on_the_first_tab
320
+ # ========================================================================= #
321
+ def do_focus_on_the_first_tab
322
+ @notebook.focus_on_the_first_tab
323
+ @notebook.set_focus(true)
324
+ end
325
+
326
+ # ========================================================================= #
327
+ # === add_status_message
328
+ # ========================================================================= #
329
+ def add_status_message(i)
330
+ @status_bar.push(@status_bar_context_id, i)
331
+ end
332
+
333
+ # ========================================================================= #
334
+ # === create_the_status_bar
335
+ # ========================================================================= #
336
+ def create_the_status_bar
337
+ @status_bar = return_default_status_bar
338
+ @status_bar.use_this_font = smallest_non_monospaced_font?
339
+ @status_bar_context_id = @status_bar.get_context_id(
340
+ 'The statusbar for this editor.'
341
+ )
342
+ end
343
+
344
+ # ========================================================================= #
345
+ # === return_current_iter
346
+ # ========================================================================= #
347
+ def return_current_iter(
348
+ buffer = main_buffer?
349
+ )
350
+ buffer.get_iter_at(offset: -1)
351
+ end
352
+
353
+ # ========================================================================= #
354
+ # === active_notebook_tab?
355
+ # ========================================================================= #
356
+ def active_notebook_tab?
357
+ @notebook.page
358
+ end
359
+
360
+ # ========================================================================= #
361
+ # === Gtk::Editor.run
362
+ # ========================================================================= #
363
+ def self.run(
364
+ i = ARGV
365
+ )
366
+ require 'gtk_paradise/app/app.rb'
367
+ _ = ::Gtk::Editor.new(i)
368
+ r = ::Gtk.run { :add_a_new_accel_group }
369
+ r << _
370
+ _.set_parent_widget(r)
371
+ _.enable_these_key_combinations(HASH_DESIGNATED_KEY_COMBINATIONS)
372
+ r.automatic_size_then_automatic_title
373
+ r.on_button_press_event { |widget, event|
374
+ if ::Gtk.right_mouse_click?(event) # right mouse click event.
375
+ _.context_menu?.popup_based_on_this_event(event)
376
+ end
377
+ }
378
+ r.add_shortcut(1, 'focus_on_tab(1)', :strg)
379
+ r.add_shortcut(2, 'focus_on_tab(2)', :strg)
380
+ r.add_shortcut(3, 'focus_on_tab(3)', :strg)
381
+ r.add_shortcut(4, 'focus_on_tab(4)', :strg)
382
+ r.add_shortcut(5, 'focus_on_tab(5)', :strg)
383
+ r.add_shortcut(6, 'focus_on_tab(6)', :strg)
384
+ r.add_shortcut(7, 'focus_on_tab(7)', :strg)
385
+ r.add_shortcut(8, 'focus_on_tab(8)', :strg)
386
+ r.add_shortcut(9, 'focus_on_tab(9)', :strg)
387
+ r.maximize # It is simply more convenient that way.
388
+ r.top_left_then_run
389
+ end
390
+
391
+ # ========================================================================= #
392
+ # === do_save_the_buffer
393
+ # ========================================================================= #
394
+ def do_save_the_buffer(
395
+ what = main_text_buffer?.text.to_s
396
+ )
397
+ into = @entry_save_into_this_local_file.text?
398
+ # ======================================================================= #
399
+ # e "Storing into the file `#{sfile(into)}`."
400
+ # ^^^ This is no longer necessary, as we now store into the status-bar.
401
+ # ======================================================================= #
402
+ add_status_message("Saving into: #{into}")
403
+ SaveFile.write_what_into(what, into)
404
+ Thread.new {
405
+ sleep 2 # Sleep for 2 seconds.
406
+ add_status_message('') # Clear the old message again.
407
+ }
408
+ end; alias save_the_buffer do_save_the_buffer # === save_the_buffer
409
+ alias do_save_into_the_file do_save_the_buffer # === do_save_into_the_file
410
+
411
+ # ========================================================================= #
412
+ # === initialize_the_hash_containing_all_buffer_tags
413
+ # ========================================================================= #
414
+ def initialize_the_hash_containing_all_buffer_tags(
415
+ text_buffer = array_containing_the_text_buffers?[0]
416
+ )
417
+ _ = Gtk::TextBufferTags.create_default_tags(text_buffer)
418
+ @hash_all_tags[:bold] = _.return_bold_tag
419
+ @hash_all_tags[:underline] = _.return_underline_tag
420
+ # ======================================================================= #
421
+ # Set up different tags next.
422
+ # ======================================================================= #
423
+ text_buffer.onto_the_end(
424
+ "underlined!!!\n",
425
+ tags: [ @hash_all_tags[:underline] ]
426
+ )
427
+ text_buffer.onto_the_end(
428
+ "bold text example!!!\n",
429
+ tags: [ @hash_all_tags[:bold] ]
430
+ )
431
+ text_buffer.insert(text_buffer.start_iter, "class Foobar # this is a comment\nend\n") # Insert some regular text.
432
+ text_buffer.insert(text_buffer.start_iter, "This is some text.\n") # Insert some regular text.
433
+ # ======================================================================= #
434
+ # Next, insert some markup text - bold text.
435
+ # ======================================================================= #
436
+ text_buffer.append_markup(
437
+ "<b>and some bold text</b> via <b>markup-tags</b>.\n"
438
+ )
439
+ text_buffer.append_italic("And this will be in italic.\n")
440
+ text_buffer.append_markup("... <i>and italic, <b>too</b>!</i> \\o/\n\n")
441
+ %w( red gold green steelblue white ).each {|entry|
442
+ text_buffer.insert_markup(
443
+ text_buffer.end_iter,
444
+ "<span color=\"#{entry}\">This is a test message via the span-tag.</span>\n",
445
+ -1
446
+ )
447
+ }
448
+ darkblue = text_buffer.create_tag(nil, { foreground: 'darkblue' })
449
+ iter = text_buffer.return_current_iter
450
+ text_buffer.insert(iter, 'A hyperlink: ', tags: [darkblue] )
451
+ # text_buffer.append_markup(
452
+ # "\nAnd a hyperlink: <a href=\"www.google.at\">google</i>"
453
+ # )
454
+ # The a-href tag does not work.
455
+ iter = text_buffer.return_current_iter
456
+ text_buffer.insert(iter, "This is more text that "\
457
+ "is just added (appended, actually).\n")
458
+ text_buffer.append_markup(
459
+ '<span foreground="blue" underline="single">ABC</span>'
460
+ )
461
+ end; alias initialize_the_buffer_tags initialize_the_hash_containing_all_buffer_tags # === initialize_the_buffer_tags
462
+
463
+ # ========================================================================= #
464
+ # === main_text_buffer?
465
+ # ========================================================================= #
466
+ def main_text_buffer?
467
+ of_this_buffer = active_notebook_tab?
468
+ of_this_buffer = array_containing_the_text_buffers?[of_this_buffer]
469
+ return of_this_buffer
470
+ end; alias buffer_content? main_text_buffer? # === buffer_content?
471
+
472
+ # ========================================================================= #
473
+ # === update_the_main_buffer
474
+ # ========================================================================= #
475
+ def update_the_main_buffer(i = '')
476
+ main_buffer?.set_text(i.to_s)
477
+ end
478
+
479
+ # ========================================================================= #
480
+ # === create_the_topbar
481
+ # ========================================================================= #
482
+ def create_the_topbar
483
+ # ======================================================================= #
484
+ # === @top_bar
485
+ # ======================================================================= #
486
+ @top_bar = return_top_bar
487
+ @top_bar.spacing = 5
488
+ # ======================================================================= #
489
+ # Create the open-file button next.
490
+ # ======================================================================= #
491
+ button = gtk_button
492
+ button.add(image_open_file)
493
+ button.hint = 'This button can be used to open a local '\
494
+ 'file into the main view of the editor.'
495
+ button.on_clicked {
496
+ do_create_a_new_file_chooser_dialog
497
+ }
498
+ @top_bar << button
499
+ # ======================================================================= #
500
+ # Create the add-a-new-tab button next.
501
+ # ======================================================================= #
502
+ button = gtk_button
503
+ button.add(image_bookmark_new)
504
+ button.hint = 'Click this button to create a new tab.'
505
+ button.on_clicked {
506
+ do_create_a_new_tab
507
+ }
508
+ @top_bar << button
509
+ # ======================================================================= #
510
+ # Create the remove-a-new-tab button next.
511
+ # ======================================================================= #
512
+ button = gtk_button
513
+ button.add(image_list_remove)
514
+ button.hint = 'Click this button to remove the last tab. So currently '\
515
+ 'you have to reposition the tabs properly, before then removing the '\
516
+ 'last tab as such.'
517
+ button.on_clicked {
518
+ remove_the_last_tab
519
+ }
520
+ @top_bar << button
521
+ end; alias create_the_top_bar create_the_topbar # === create_the_top_bar
522
+
523
+ # ========================================================================= #
524
+ # === add_a_new_tab
525
+ # ========================================================================= #
526
+ def add_a_new_tab(
527
+ fill_the_buffer_with_this_string = ''
528
+ )
529
+ scrolled_window, title = return_a_new_scrolled_window(fill_the_buffer_with_this_string)
530
+ @notebook.add_flexible_tab(
531
+ widget: scrolled_window,
532
+ title: title
533
+ )
534
+ @notebook.show_all
535
+ end; alias do_create_a_new_tab add_a_new_tab # === do_create_a_new_tab
536
+
537
+ # ========================================================================= #
538
+ # === object_ids?
539
+ # ========================================================================= #
540
+ def object_ids?
541
+ @hash_all_tab_widgets.keys
542
+ end
543
+
544
+ # ========================================================================= #
545
+ # === remove_the_last_tab
546
+ # ========================================================================= #
547
+ def remove_the_last_tab
548
+ last_tab = @notebook.remove_the_last_tab
549
+ # ======================================================================= #
550
+ # We must also de-register it from the main Hash if it is part of
551
+ # the main hash.
552
+ # ======================================================================= #
553
+ if object_ids?.include? last_tab.object_id
554
+ @hash_all_tab_widgets.delete(last_tab.object_id)
555
+ end
556
+ end
557
+
558
+ # ========================================================================= #
559
+ # === create_the_gtk_insert_character_widget
560
+ # ========================================================================= #
561
+ def create_the_gtk_insert_character_widget(
562
+ i = 0
563
+ )
564
+ # ======================================================================= #
565
+ # === @insert_character
566
+ # ======================================================================= #
567
+ @insert_character = ::Gtk::InsertCharacter.new
568
+ @insert_character.css_classes('mar0px pad0px')
569
+ @insert_character.do_delete_the_selected_text_in_the_buffer
570
+ @insert_character.append_this_button(' # ') # For a comment.
571
+ this_is_now_the_main_buffer(i)
572
+ end
573
+
574
+ # ========================================================================= #
575
+ # === create_then_add_the_header_bar
576
+ # ========================================================================= #
577
+ def create_then_add_the_header_bar
578
+ header_bar = header_bar?
579
+ minimal(header_bar)
580
+ end
581
+
582
+ # ========================================================================= #
583
+ # === delete_the_selected_text_in_the_buffer
584
+ # ========================================================================= #
585
+ def delete_the_selected_text_in_the_buffer
586
+ main_buffer?.delete_selection(false, false)
587
+ end
588
+
589
+ # ========================================================================= #
590
+ # === do_create_a_new_file_chooser_dialog (open tag)
591
+ #
592
+ # This method is run when the user wants to open a local file.
593
+ # ========================================================================= #
594
+ def do_create_a_new_file_chooser_dialog(
595
+ i = main_file?.to_s
596
+ )
597
+ create_a_new_file_chooser_dialog(self) {{
598
+ start_dir: return_pwd,
599
+ show_hidden_files: :yes,
600
+ current_folder: ENV['MY_DATA'],
601
+ additional_directories: [
602
+ ENV['PC'],
603
+ ENV['MY_TEMP'],
604
+ ENV['RSRC'],
605
+ '/Depot/j/',
606
+ '/Depot/jj/',
607
+ '/Depot/jjj/',
608
+ '/Depot/jjjj/'
609
+ ]
610
+ }}
611
+ _ = ::Gtk.main_file?.to_s
612
+ if _ and File.exist?(_) and current_buffer?
613
+ @entry_save_into_this_local_file.set_text(_) # Also sync it onto the file-path entry.
614
+ current_buffer?.set_text(
615
+ File.read(_).to_s
616
+ )
617
+ if _.end_with? '.rb'
618
+ treat_the_buffer_as_a_ruby_file
619
+ end
620
+ update_the_label_showing_how_many_lines_are_in_the_current_buffer
621
+ end
622
+ end; alias do_open_a_local_file do_create_a_new_file_chooser_dialog # === do_open_a_local_file
623
+
624
+ # ========================================================================= #
625
+ # === this_is_now_the_main_buffer
626
+ # ========================================================================= #
627
+ def this_is_now_the_main_buffer(i)
628
+ if i and @insert_character
629
+ if i.is_a? Numeric
630
+ i = array_containing_the_text_buffers?[i]
631
+ end
632
+ @insert_character.attach_to_this_buffer(i)
633
+ end
634
+ end
635
+
636
+ # ========================================================================= #
637
+ # === return_a_new_scrolled_window
638
+ #
639
+ # This method will return a proper scrolled-window.
640
+ # ========================================================================= #
641
+ def return_a_new_scrolled_window(
642
+ fill_the_buffer_with_this_string = ''
643
+ )
644
+ text_buffer = gtk_text_buffer(fill_the_buffer_with_this_string)
645
+ text_buffer.on_cursor_position_changed {|widget, event|
646
+ update_the_label_indicating_the_cursor_position(
647
+ text_buffer.cursor_position? + 1
648
+ )
649
+ }
650
+ # ======================================================================= #
651
+ # Let the buffer respond to certain events next; most importantly
652
+ # the on-changed event. Be careful about infinite loops, though - if
653
+ # we re-act to every on-changed event, and a method call triggers
654
+ # another one, then we have an infinite loop.
655
+ # ======================================================================= #
656
+ text_buffer.signal_connect(:changed) { |widget, event|
657
+ update_n_lines(text_buffer)
658
+ # ===================================================================== #
659
+ # The next check is used to avoid the infinite loop problem described
660
+ # above. This is currently (October 2021) a bit buggy in the sense
661
+ # that the old iter is not kept; this may have to be changed at
662
+ # a later time.
663
+ # ===================================================================== #
664
+ # if is_it_a_ruby_file? and is_the_cooldown_phase_over?
665
+ # treat_the_buffer_as_a_ruby_file
666
+ # start_cooldown_phase
667
+ # end
668
+ }
669
+ text_view = gtk_text_view(text_buffer)
670
+ text_view.left_margin = LEFT_MARGIN_TO_USE_FOR_THE_TEXTVIEW_WIDGET
671
+ text_view.pad2px
672
+ text_view.set_wrap_mode(:word)
673
+ # ======================================================================= #
674
+ # Each such scrolled window will carry the main text-buffer in use.
675
+ # ======================================================================= #
676
+ hbox = gtk_hbox
677
+ numbered_lines = Gtk::NumberedLines.new
678
+ hbox.minimal(numbered_lines)
679
+ hbox.maximal(text_view)
680
+ scrolled_window = gtk_scrolled_window(hbox) { :up_and_down_always }
681
+ scrolled_window.set_hexpand(true)
682
+ scrolled_window.set_vexpand(true)
683
+ scrolled_window.set_name('scrollbar_for_the_editor')
684
+ scrolled_window.width_height(580, 500)
685
+ scrolled_window.pad5px
686
+ scrolled_window.bblack2
687
+
688
+ text_view.signal_connect(:key_release_event) {|widget, event|
689
+ name_of_the_event = Gdk::Keyval.to_name(event.keyval).to_s
690
+ case name_of_the_event
691
+ when 'Return','KP_Enter'
692
+ # =================================================================== #
693
+ # Here the user hit the enter-key. Now we check if the line above,
694
+ # above the cursor, begins with a "def" line. In this case we will
695
+ # indent via two ' ' characters.
696
+ # =================================================================== #
697
+ cursor_position = text_buffer.cursor_position?
698
+ string = text_buffer.text?[0 .. cursor_position]
699
+ splitted = string.split("\n")
700
+ last = splitted.last
701
+ if last.strip.start_with? 'def ' # Re-act on "def" lines.
702
+ # ================================================================= #
703
+ # We will also consider the real indent at hand.
704
+ # ================================================================= #
705
+ indent_level = ' ' * (last.rstrip.count(' ') / 2)
706
+ insert_this_text_at_the_cursor_position(indent_level+'end')
707
+ end
708
+ end
709
+ false
710
+ }
711
+
712
+ title = '#'+(array_containing_the_text_buffers?.size+1).to_s
713
+ # ======================================================================= #
714
+ # Build up our Hash next:
715
+ # ======================================================================= #
716
+ @hash_all_tab_widgets[scrolled_window.object_id] = {
717
+ numbered_lines: numbered_lines,
718
+ text_buffer: text_buffer,
719
+ text_view: text_view,
720
+ scrolled_window: scrolled_window,
721
+ title: title
722
+ }
723
+ return [scrolled_window, title]
724
+ end
725
+
726
+ # ========================================================================= #
727
+ # === is_it_a_ruby_file?
728
+ # ========================================================================= #
729
+ def is_it_a_ruby_file?
730
+ @entry_save_into_this_local_file.text?.end_with? '.rb'
731
+ end
732
+
733
+ # ========================================================================= #
734
+ # === cooldown_start?
735
+ # ========================================================================= #
736
+ def cooldown_start?
737
+ @cooldown_start
738
+ end
739
+
740
+ # ========================================================================= #
741
+ # === is_the_cooldown_phase_over?
742
+ #
743
+ # When is the cooldown phase over?
744
+ #
745
+ # (1) when it is nil, which is the initial case
746
+ # (2) when the current time is less than 0.5 seconds within the old time
747
+ #
748
+ # ========================================================================= #
749
+ def is_the_cooldown_phase_over?
750
+ _ = cooldown_start?
751
+ if _ and (Time.now - 0.5) > _
752
+ _ = nil
753
+ end
754
+ return true if _.nil?
755
+ return false
756
+ end
757
+
758
+ # ========================================================================= #
759
+ # === start_cooldown_phase
760
+ # ========================================================================= #
761
+ def start_cooldown_phase
762
+ @cooldown_start = ::Time.now
763
+ end
764
+
765
+ # ========================================================================= #
766
+ # === do_clear_the_textbuffer_based_on_object_id
767
+ # ========================================================================= #
768
+ def do_clear_the_textbuffer_based_on_object_id
769
+ current_buffer = current_buffer?
770
+ current_buffer.clear if current_buffer
771
+ end; alias clear_the_textbuffer do_clear_the_textbuffer_based_on_object_id # === clear_the_textbuffer
772
+
773
+ # ========================================================================= #
774
+ # === run (run tag)
775
+ # ========================================================================= #
776
+ def run
777
+ create_skeleton_then_connect_skeleton
778
+ sync_change_to_use_this_font
779
+ Thread.new {
780
+ sleep 0.003
781
+ do_focus_on_the_first_tab
782
+ initialize_the_hash_containing_all_buffer_tags
783
+ }
784
+ end
785
+
786
+ # ========================================================================= #
787
+ # === insert_this_text_at_the_cursor
788
+ # ========================================================================= #
789
+ def insert_this_text_at_the_cursor(
790
+ this_text
791
+ )
792
+ current_buffer = current_buffer?
793
+ current_buffer.insert_at_cursor(this_text.to_s)
794
+ end; alias insert_this_text_at_the_cursor_position insert_this_text_at_the_cursor # === insert_this_text_at_the_cursor_position
795
+
796
+ # ========================================================================= #
797
+ # === current_buffer?
798
+ # ========================================================================= #
799
+ def current_buffer?(
800
+ this_id = @notebook.get_nth_page(active_notebook_tab?).object_id
801
+ )
802
+ hash = @hash_all_tab_widgets
803
+ if hash.has_key? this_id
804
+ pointer = hash[this_id]
805
+ return pointer[:text_buffer]
806
+ end
807
+ return nil
808
+ end; alias main_buffer? current_buffer? # === main_buffer?
809
+ alias current_main_buffer? current_buffer? # === current_main_buffer?
810
+ alias current_text_buffer? current_buffer? # === current_text_buffer?
811
+
812
+ # ========================================================================= #
813
+ # === return_the_colour_palette
814
+ # ========================================================================= #
815
+ def return_the_colour_palette
816
+ # ======================================================================= #
817
+ # Add the Colour-Palette widget next:
818
+ # ======================================================================= #
819
+ colour_palette = ::Gtk::ColourPalette.new(:do_not_run_yet) {{
820
+ dimension: '3x1' # Specify the dimension to use here, via x-axis x y-axis.
821
+ }}
822
+ colour_palette.set_parent_widget(self)
823
+ colour_palette.run
824
+ frame = gtk_frame('Colour palette')
825
+ frame.use_this_font = smallest_font?
826
+ frame.set_name('colour_palette_text')
827
+ frame.make_bold
828
+ frame.add(colour_palette)
829
+ return frame
830
+ end
831
+
832
+ end; end
833
+
834
+ if __FILE__ == $PROGRAM_NAME
835
+ Gtk::Editor.run
836
+ end