gtk_paradise 0.9.120
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENCE.md +6 -0
- data/README.md +8966 -0
- data/bin/application_menu +7 -0
- data/bin/demo-gtk3 +39 -0
- data/bin/gtk_calculator +7 -0
- data/bin/gtk_display_this_file +23 -0
- data/bin/gtk_paradise +7 -0
- data/bin/minesweeper +7 -0
- data/bin/notebook_controller +7 -0
- data/bin/pdfwalker +7 -0
- data/doc/README.gen +8938 -0
- data/doc/todo/TODO_FOR_THE_GTK_PARADISE_PROJECT.md +246 -0
- data/doc/todo/recurring_todo_tasks.md +9 -0
- data/gtk_paradise.gemspec +83 -0
- data/lib/gtk_paradise/app/app.rb +208 -0
- data/lib/gtk_paradise/app/app_module.rb +1739 -0
- data/lib/gtk_paradise/autoinclude.rb +7 -0
- data/lib/gtk_paradise/base_module/base_module.rb +67 -0
- data/lib/gtk_paradise/base_module/change_directory.rb +22 -0
- data/lib/gtk_paradise/base_module/colours.rb +81 -0
- data/lib/gtk_paradise/base_module/combo_box_and_combo_box_entry.rb +113 -0
- data/lib/gtk_paradise/base_module/commandline_arguments.rb +36 -0
- data/lib/gtk_paradise/base_module/configuration.rb +50 -0
- data/lib/gtk_paradise/base_module/constants.rb +23 -0
- data/lib/gtk_paradise/base_module/css.rb +398 -0
- data/lib/gtk_paradise/base_module/debug.rb +127 -0
- data/lib/gtk_paradise/base_module/draggable.rb +95 -0
- data/lib/gtk_paradise/base_module/e.rb +20 -0
- data/lib/gtk_paradise/base_module/emoji.rb +107 -0
- data/lib/gtk_paradise/base_module/esystem.rb +22 -0
- data/lib/gtk_paradise/base_module/events.rb +111 -0
- data/lib/gtk_paradise/base_module/fonts.rb +119 -0
- data/lib/gtk_paradise/base_module/graphics_display.rb +47 -0
- data/lib/gtk_paradise/base_module/gtk3.rb +43 -0
- data/lib/gtk_paradise/base_module/gtk_buttons.rb +562 -0
- data/lib/gtk_paradise/base_module/gtk_entry.rb +126 -0
- data/lib/gtk_paradise/base_module/gtk_fixed.rb +18 -0
- data/lib/gtk_paradise/base_module/gtk_grid.rb +61 -0
- data/lib/gtk_paradise/base_module/gtk_image.rb +501 -0
- data/lib/gtk_paradise/base_module/gtk_label.rb +211 -0
- data/lib/gtk_paradise/base_module/gtk_notebook.rb +88 -0
- data/lib/gtk_paradise/base_module/gtk_scrolled_window.rb +155 -0
- data/lib/gtk_paradise/base_module/html_support.rb +230 -0
- data/lib/gtk_paradise/base_module/misc.rb +2949 -0
- data/lib/gtk_paradise/base_module/pango.rb +24 -0
- data/lib/gtk_paradise/base_module/popover.rb +241 -0
- data/lib/gtk_paradise/base_module/register_sigint.rb +20 -0
- data/lib/gtk_paradise/base_module/reset.rb +128 -0
- data/lib/gtk_paradise/base_module/return_corresponding_gtk_stock_item.rb +92 -0
- data/lib/gtk_paradise/base_module/roebe.rb +19 -0
- data/lib/gtk_paradise/base_module/table.rb +438 -0
- data/lib/gtk_paradise/base_module/time.rb +35 -0
- data/lib/gtk_paradise/base_module_and_app_module/base_module_and_app_module.rb +21 -0
- data/lib/gtk_paradise/colours/gtk_colour_constants.rb +192 -0
- data/lib/gtk_paradise/colours/parse.rb +79 -0
- data/lib/gtk_paradise/commandline/commandline.rb +126 -0
- data/lib/gtk_paradise/constants/available_cursors.rb +52 -0
- data/lib/gtk_paradise/constants/constants.rb +18 -0
- data/lib/gtk_paradise/constants/fonts.rb +38 -0
- data/lib/gtk_paradise/constants/misc.rb +56 -0
- data/lib/gtk_paradise/constants/newline.rb +14 -0
- data/lib/gtk_paradise/constants/xbm_icons.rb +121 -0
- data/lib/gtk_paradise/css_files/colours.css +362 -0
- data/lib/gtk_paradise/css_files/css_accordion.css +51 -0
- data/lib/gtk_paradise/css_files/project.css +479 -0
- data/lib/gtk_paradise/css_files/themes/README.md +1 -0
- data/lib/gtk_paradise/css_files/themes/rainbow_theme.css +23 -0
- data/lib/gtk_paradise/emojis/emojis.rb +756 -0
- data/lib/gtk_paradise/examples/README.md +11 -0
- data/lib/gtk_paradise/examples/advanced/001_5x5_grid_example.rb +175 -0
- data/lib/gtk_paradise/examples/advanced/002_advanced_drag_and_drop_example.rb +103 -0
- data/lib/gtk_paradise/examples/advanced/003_html_like_support.rb +206 -0
- data/lib/gtk_paradise/examples/advanced/004_on_hover_example_on_gtk_entry.rb +78 -0
- data/lib/gtk_paradise/examples/advanced/005_csv_example.rb +24 -0
- data/lib/gtk_paradise/examples/advanced/006_file_chooser_button_example.rb +106 -0
- data/lib/gtk_paradise/examples/advanced/007_label_responding_to_events_example.rb +182 -0
- data/lib/gtk_paradise/examples/advanced/008_options_example.rb +47 -0
- data/lib/gtk_paradise/examples/advanced/009_key_events.rb +81 -0
- data/lib/gtk_paradise/examples/advanced/010_extensive_text_view_example.rb +161 -0
- data/lib/gtk_paradise/examples/advanced/011_moving_blocks_example.rb +91 -0
- data/lib/gtk_paradise/examples/advanced/012_cell_data_sorting_example.rb +79 -0
- data/lib/gtk_paradise/examples/advanced/013_advanced_css_example.rb +272 -0
- data/lib/gtk_paradise/examples/advanced/014_popup_example.rb +123 -0
- data/lib/gtk_paradise/examples/advanced/015_advanced_button_example.rb +156 -0
- data/lib/gtk_paradise/examples/advanced/016_change_background_on_click_event.rb +38 -0
- data/lib/gtk_paradise/examples/advanced/017_lean_CSS_example.rb +247 -0
- data/lib/gtk_paradise/examples/advanced/018_coloured_text_example.rb +158 -0
- data/lib/gtk_paradise/examples/advanced/019_gtk_entry_showing_the_cursor_position.rb +67 -0
- data/lib/gtk_paradise/examples/advanced/020_scale_this_image.rb +154 -0
- data/lib/gtk_paradise/examples/advanced/021_scroll_events_on_gtk_entry.rb +37 -0
- data/lib/gtk_paradise/examples/advanced/README.md +4 -0
- data/lib/gtk_paradise/examples/cairo/README.md +7 -0
- data/lib/gtk_paradise/examples/cairo/basic_cairo_shapes.rb +131 -0
- data/lib/gtk_paradise/examples/cairo/cairo_testing.rb +96 -0
- data/lib/gtk_paradise/examples/cairo/cairo_transparent_rectangles.rb +94 -0
- data/lib/gtk_paradise/examples/cairo/donut_shape.rb +76 -0
- data/lib/gtk_paradise/examples/cairo/fancy_triangle.rb +42 -0
- data/lib/gtk_paradise/examples/cairo/ping_pong_game.rb +315 -0
- data/lib/gtk_paradise/examples/cairo/three_rectangles.rb +67 -0
- data/lib/gtk_paradise/examples/controller/README.md +3 -0
- data/lib/gtk_paradise/examples/controller/controller.rb +81 -0
- data/lib/gtk_paradise/examples/css/001_border_examples.rb +246 -0
- data/lib/gtk_paradise/examples/css/002_import_CSS_file.rb +87 -0
- data/lib/gtk_paradise/examples/css/README.md +5 -0
- data/lib/gtk_paradise/examples/gdk_pixbuf/save_image_example.rb +72 -0
- data/lib/gtk_paradise/examples/glib/parse_glib_settings.rb +48 -0
- data/lib/gtk_paradise/examples/gtk2/001_tooltips_example.rb +88 -0
- data/lib/gtk_paradise/examples/gtk2/002_simple_window.rb +8 -0
- data/lib/gtk_paradise/examples/gtk2/003_draw_rectangle.rb +41 -0
- data/lib/gtk_paradise/examples/gtk2/004_simple_button.rb +38 -0
- data/lib/gtk_paradise/examples/gtk2/005_scale_button.rb +28 -0
- data/lib/gtk_paradise/examples/gtk2/006_print_example.rb +259 -0
- data/lib/gtk_paradise/examples/gtk2/007_radio_button_window.rb +57 -0
- data/lib/gtk_paradise/examples/gtk2/008_list_store_example.rb +145 -0
- data/lib/gtk_paradise/examples/gtk2/009_spin_button_example.rb +168 -0
- data/lib/gtk_paradise/examples/gtk2/010_paned_widget_example.rb +171 -0
- data/lib/gtk_paradise/examples/gtk2/011_password_example.rb +22 -0
- data/lib/gtk_paradise/examples/gtk2/012_popup_example.rb +61 -0
- data/lib/gtk_paradise/examples/gtk2/013_show_this_cursor.rb +25 -0
- data/lib/gtk_paradise/examples/gtk2/014_link_button.rb +44 -0
- data/lib/gtk_paradise/examples/gtk2/015_gc_drawing_examples.rb +63 -0
- data/lib/gtk_paradise/examples/gtk2/016_combo_box_example.rb +155 -0
- data/lib/gtk_paradise/examples/gtk2/017_multiple_gtk_windows.rb +20 -0
- data/lib/gtk_paradise/examples/gtk2/018_entry_completion.rb +28 -0
- data/lib/gtk_paradise/examples/gtk2/019_insert_text_into_a_text_buffer_example.rb +77 -0
- data/lib/gtk_paradise/examples/gtk2/020_size_group_example.rb +29 -0
- data/lib/gtk_paradise/examples/gtk2/021_check_button.rb +22 -0
- data/lib/gtk_paradise/examples/gtk2/022_hello_world_in_gtk2_and_bold_font.rb +53 -0
- data/lib/gtk_paradise/examples/gtk2/023_pixbuf_animation_example.rb +36 -0
- data/lib/gtk_paradise/examples/gtk2/024_colour_around_button.rb +49 -0
- data/lib/gtk_paradise/examples/gtk2/025_icon_view.rb +50 -0
- data/lib/gtk_paradise/examples/gtk2/026_disappearing_buttons.rb +55 -0
- data/lib/gtk_paradise/examples/gtk2/027_colour_choose_button.rb +30 -0
- data/lib/gtk_paradise/examples/gtk2/028_gtk_expander.rb +23 -0
- data/lib/gtk_paradise/examples/gtk2/029_gtk_label_example.rb +59 -0
- data/lib/gtk_paradise/examples/gtk2/030_complete_menu_example.rb +76 -0
- data/lib/gtk_paradise/examples/gtk2/031_message_dialog.rb +38 -0
- data/lib/gtk_paradise/examples/gtk2/032_frame_example.rb +82 -0
- data/lib/gtk_paradise/examples/gtk2/033_notebook_example.rb +89 -0
- data/lib/gtk_paradise/examples/gtk2/034_radio_menu_item_showcase.rb +73 -0
- data/lib/gtk_paradise/examples/gtk2/035_status_icon_example.rb +57 -0
- data/lib/gtk_paradise/examples/gtk2/036_threads_example.rb +72 -0
- data/lib/gtk_paradise/examples/gtk2/037_extensive_markup_example.rb +49 -0
- data/lib/gtk_paradise/examples/gtk2/038_accesskeys_demonstration.rb +136 -0
- data/lib/gtk_paradise/examples/gtk2/039_accel_group_example.rb +24 -0
- data/lib/gtk_paradise/examples/gtk2/040_gtksourceview2_example.rb +42 -0
- data/lib/gtk_paradise/examples/gtk2/041_drawing_example.rb +130 -0
- data/lib/gtk_paradise/examples/gtk2/042_buttons_showcasing_the_relief.rb +34 -0
- data/lib/gtk_paradise/examples/gtk2/043_gtk_entry.rb +47 -0
- data/lib/gtk_paradise/examples/gtk2/044_tree_model_filter.rb +60 -0
- data/lib/gtk_paradise/examples/gtk2/045_sorted_tree.rb +137 -0
- data/lib/gtk_paradise/examples/gtk2/046_sockets.rb +17 -0
- data/lib/gtk_paradise/examples/gtk2/047_progress_bar_example.rb +105 -0
- data/lib/gtk_paradise/examples/gtk2/048_event_box_with_popup_menu.rb +64 -0
- data/lib/gtk_paradise/examples/gtk2/049_gtk_dialog_sample.rb +51 -0
- data/lib/gtk_paradise/examples/gtk2/050_about_dialog.rb +29 -0
- data/lib/gtk_paradise/examples/gtk2/051_tree_view_column_example.rb +83 -0
- data/lib/gtk_paradise/examples/gtk2/052_packing_demonstration.rb +131 -0
- data/lib/gtk_paradise/examples/gtk2/053_vertical_boxes.rb +34 -0
- data/lib/gtk_paradise/examples/gtk2/054_drag_and_drop_example.rb +97 -0
- data/lib/gtk_paradise/examples/gtk2/055_button_box.rb +122 -0
- data/lib/gtk_paradise/examples/gtk2/056_vbox_with_spacing_and_border_width.rb +20 -0
- data/lib/gtk_paradise/examples/gtk2/057_show_image.rb +42 -0
- data/lib/gtk_paradise/examples/gtk2/058_random_stock_item.rb +39 -0
- data/lib/gtk_paradise/examples/gtk2/059_manual_menu.rb +56 -0
- data/lib/gtk_paradise/examples/gtk2/060_style_property.rb +82 -0
- data/lib/gtk_paradise/examples/gtk2/060_style_property.rc +17 -0
- data/lib/gtk_paradise/examples/gtk2/061_mouse_movement.rb +174 -0
- data/lib/gtk_paradise/examples/gtk2/README.md +16 -0
- data/lib/gtk_paradise/examples/gtk2/settings/README.md +2 -0
- data/lib/gtk_paradise/examples/gtk2/settings/gtk_settings.rb +40 -0
- data/lib/gtk_paradise/examples/gtk2/uimanager/uimanager.xml +36 -0
- data/lib/gtk_paradise/examples/gtk2/uimanager/uimanager_example.rb +113 -0
- data/lib/gtk_paradise/examples/gtk3/001_font_related_information.rb +93 -0
- data/lib/gtk_paradise/examples/gtk3/002_simple_window.rb +48 -0
- data/lib/gtk_paradise/examples/gtk3/003_sorted_tree.rb +141 -0
- data/lib/gtk_paradise/examples/gtk3/004_small_paned_example.rb +48 -0
- data/lib/gtk_paradise/examples/gtk3/005_spinner_example.rb +46 -0
- data/lib/gtk_paradise/examples/gtk3/006_password_example.rb +45 -0
- data/lib/gtk_paradise/examples/gtk3/007_progress_bar_example.rb +200 -0
- data/lib/gtk_paradise/examples/gtk3/008_menubar_example.rb +96 -0
- data/lib/gtk_paradise/examples/gtk3/009_scrolled_window_example.rb +49 -0
- data/lib/gtk_paradise/examples/gtk3/010_paned_widget_example.rb +186 -0
- data/lib/gtk_paradise/examples/gtk3/011_sockets.rb +19 -0
- data/lib/gtk_paradise/examples/gtk3/012_notebook_example.rb +75 -0
- data/lib/gtk_paradise/examples/gtk3/013_icon_theme_example.rb +104 -0
- data/lib/gtk_paradise/examples/gtk3/014_switcher_window.rb +68 -0
- data/lib/gtk_paradise/examples/gtk3/015_list_box_example.rb +64 -0
- data/lib/gtk_paradise/examples/gtk3/016_hello_world_in_gtk3_and_bold_font.rb +54 -0
- data/lib/gtk_paradise/examples/gtk3/017_grid_example.rb +52 -0
- data/lib/gtk_paradise/examples/gtk3/018_buttons_showcasing_the_relief.rb +60 -0
- data/lib/gtk_paradise/examples/gtk3/019_text_buffer_example.rb +220 -0
- data/lib/gtk_paradise/examples/gtk3/020_radio_button_window.rb +101 -0
- data/lib/gtk_paradise/examples/gtk3/021_scale_button_demo.rb +51 -0
- data/lib/gtk_paradise/examples/gtk3/022_popup_example.rb +90 -0
- data/lib/gtk_paradise/examples/gtk3/023_horizontal_and_vertical_scale.rb +23 -0
- data/lib/gtk_paradise/examples/gtk3/024_installation_assistant.rb +365 -0
- data/lib/gtk_paradise/examples/gtk3/025_switch_example.rb +55 -0
- data/lib/gtk_paradise/examples/gtk3/026_hover_button_example_via_css.rb +75 -0
- data/lib/gtk_paradise/examples/gtk3/027_spin_button_example.rb +82 -0
- data/lib/gtk_paradise/examples/gtk3/028_radio_menu_item_example.rb +76 -0
- data/lib/gtk_paradise/examples/gtk3/029_gtk_dialog_sample.rb +72 -0
- data/lib/gtk_paradise/examples/gtk3/030_draw_rectangles.rb +34 -0
- data/lib/gtk_paradise/examples/gtk3/031_colour_choose_button.rb +38 -0
- data/lib/gtk_paradise/examples/gtk3/032_drag_and_drop_example.rb +83 -0
- data/lib/gtk_paradise/examples/gtk3/033_cell_renderer_pixbuf_example.rb +48 -0
- data/lib/gtk_paradise/examples/gtk3/034_combo_box_example.rb +49 -0
- data/lib/gtk_paradise/examples/gtk3/035_notebook_css_example.rb +130 -0
- data/lib/gtk_paradise/examples/gtk3/036_revealer_example.rb +46 -0
- data/lib/gtk_paradise/examples/gtk3/037_css_example_of_a_button_changing_the_background_colour_on_click_event.rb +124 -0
- data/lib/gtk_paradise/examples/gtk3/038_ten_labels_in_a_vertical_box_example.rb +32 -0
- data/lib/gtk_paradise/examples/gtk3/039_threads_example.rb +44 -0
- data/lib/gtk_paradise/examples/gtk3/040_font_chooser_dialog_example.rb +19 -0
- data/lib/gtk_paradise/examples/gtk3/041_flowbox.rb +72 -0
- data/lib/gtk_paradise/examples/gtk3/042_colourized_button_example.rb +82 -0
- data/lib/gtk_paradise/examples/gtk3/043_form_example.rb +151 -0
- data/lib/gtk_paradise/examples/gtk3/044_check_button.rb +27 -0
- data/lib/gtk_paradise/examples/gtk3/045_fixed_example.rb +78 -0
- data/lib/gtk_paradise/examples/gtk3/046_event_box_example.rb +32 -0
- data/lib/gtk_paradise/examples/gtk3/047_examples_with_css.rb +173 -0
- data/lib/gtk_paradise/examples/gtk3/048_accel_group_example.rb +27 -0
- data/lib/gtk_paradise/examples/gtk3/049_change_the_application_theme.rb +68 -0
- data/lib/gtk_paradise/examples/gtk3/050_header_bar_example.rb +58 -0
- data/lib/gtk_paradise/examples/gtk3/051_gtk_label_example.rb +86 -0
- data/lib/gtk_paradise/examples/gtk3/052_popover_example.rb +58 -0
- data/lib/gtk_paradise/examples/gtk3/053_entry_completion.rb +44 -0
- data/lib/gtk_paradise/examples/gtk3/054_svg_viewer.rb +43 -0
- data/lib/gtk_paradise/examples/gtk3/055_button_demo.rb +92 -0
- data/lib/gtk_paradise/examples/gtk3/056_text_iterator_example.rb +72 -0
- data/lib/gtk_paradise/examples/gtk3/057_image_example.rb +51 -0
- data/lib/gtk_paradise/examples/gtk3/058_frame_example.rb +104 -0
- data/lib/gtk_paradise/examples/gtk3/059_gtk_expander.rb +23 -0
- data/lib/gtk_paradise/examples/gtk3/060_ten_vboxes_example.rb +32 -0
- data/lib/gtk_paradise/examples/gtk3/061_gtk_entry.rb +91 -0
- data/lib/gtk_paradise/examples/gtk3/062_toggle_button_example.rb +19 -0
- data/lib/gtk_paradise/examples/gtk3/063_button_box_example.rb +67 -0
- data/lib/gtk_paradise/examples/gtk3/064_tree_view_column_example.rb +97 -0
- data/lib/gtk_paradise/examples/gtk3/065_tooltips_example.rb +216 -0
- data/lib/gtk_paradise/examples/gtk3/066_vertical_boxes.rb +32 -0
- data/lib/gtk_paradise/examples/gtk3/067_vbox_with_spacing_and_border_width.rb +24 -0
- data/lib/gtk_paradise/examples/gtk3/068_text_view_example.rb +34 -0
- data/lib/gtk_paradise/examples/gtk3/069_file_chooser_dialog.rb +41 -0
- data/lib/gtk_paradise/examples/gtk3/070_bindings.rb +126 -0
- data/lib/gtk_paradise/examples/gtk3/071_search_bar_example.rb +59 -0
- data/lib/gtk_paradise/examples/gtk3/072_recent_chooser_dialog.rb +51 -0
- data/lib/gtk_paradise/examples/gtk3/073_showcase_the_cursors.rb +94 -0
- data/lib/gtk_paradise/examples/gtk3/074_app_chooser_button_example.rb +27 -0
- data/lib/gtk_paradise/examples/gtk3/075_tiny_button_via_css.rb +49 -0
- data/lib/gtk_paradise/examples/gtk3/076_stack_example.rb +46 -0
- data/lib/gtk_paradise/examples/gtk3/077_status_icon_example.rb +54 -0
- data/lib/gtk_paradise/examples/gtk3/078_message_dialog_example.rb +179 -0
- data/lib/gtk_paradise/examples/gtk3/079_two_windows_example.rb +30 -0
- data/lib/gtk_paradise/examples/gtk3/080_extensive_markup_example.rb +49 -0
- data/lib/gtk_paradise/examples/gtk3/081_simple_dialog_example.rb +45 -0
- data/lib/gtk_paradise/examples/gtk3/082_scrolling_example.rb +56 -0
- data/lib/gtk_paradise/examples/gtk3/083_bottom_left_placement.rb +50 -0
- data/lib/gtk_paradise/examples/gtk3/084_undecorated_window_example.rb +29 -0
- data/lib/gtk_paradise/examples/gtk3/vte/vte3_terminal.rb +59 -0
- data/lib/gtk_paradise/examples/pango/pango_power.rb +72 -0
- data/lib/gtk_paradise/experimental/README.md +2 -0
- data/lib/gtk_paradise/experimental/experimental.config +6 -0
- data/lib/gtk_paradise/experimental/experimental.rb +249 -0
- data/lib/gtk_paradise/fonts/fonts.rb +679 -0
- data/lib/gtk_paradise/gdk/cursor.rb +30 -0
- data/lib/gtk_paradise/gdk/gdk.rb +29 -0
- data/lib/gtk_paradise/gnome/README.md +5 -0
- data/lib/gtk_paradise/gnome/canvas.rb +54 -0
- data/lib/gtk_paradise/gtk_classes/about.rb +48 -0
- data/lib/gtk_paradise/gtk_classes/about_dialog.rb +25 -0
- data/lib/gtk_paradise/gtk_classes/accel_group.rb +38 -0
- data/lib/gtk_paradise/gtk_classes/alignment.rb +20 -0
- data/lib/gtk_paradise/gtk_classes/application.rb +30 -0
- data/lib/gtk_paradise/gtk_classes/box.rb +318 -0
- data/lib/gtk_paradise/gtk_classes/button.rb +383 -0
- data/lib/gtk_paradise/gtk_classes/button_box.rb +38 -0
- data/lib/gtk_paradise/gtk_classes/cairo/context.rb +54 -0
- data/lib/gtk_paradise/gtk_classes/calendar.rb +29 -0
- data/lib/gtk_paradise/gtk_classes/cell_renderer_text.rb +57 -0
- data/lib/gtk_paradise/gtk_classes/check_button.rb +113 -0
- data/lib/gtk_paradise/gtk_classes/colours/colours.rb +158 -0
- data/lib/gtk_paradise/gtk_classes/combo_box.rb +117 -0
- data/lib/gtk_paradise/gtk_classes/combo_box_entry.rb +74 -0
- data/lib/gtk_paradise/gtk_classes/combo_box_text.rb +101 -0
- data/lib/gtk_paradise/gtk_classes/dialog.rb +20 -0
- data/lib/gtk_paradise/gtk_classes/entry.rb +433 -0
- data/lib/gtk_paradise/gtk_classes/entry_completion.rb +70 -0
- data/lib/gtk_paradise/gtk_classes/event_box.rb +44 -0
- data/lib/gtk_paradise/gtk_classes/event_button.rb +55 -0
- data/lib/gtk_paradise/gtk_classes/event_key.rb +39 -0
- data/lib/gtk_paradise/gtk_classes/expander.rb +37 -0
- data/lib/gtk_paradise/gtk_classes/file_chooser_dialog.rb +34 -0
- data/lib/gtk_paradise/gtk_classes/file_filter.rb +26 -0
- data/lib/gtk_paradise/gtk_classes/file_selection.rb +54 -0
- data/lib/gtk_paradise/gtk_classes/frame.rb +75 -0
- data/lib/gtk_paradise/gtk_classes/grid.rb +343 -0
- data/lib/gtk_paradise/gtk_classes/header_bar.rb +58 -0
- data/lib/gtk_paradise/gtk_classes/hscale.rb +60 -0
- data/lib/gtk_paradise/gtk_classes/image.rb +68 -0
- data/lib/gtk_paradise/gtk_classes/image_menu_item.rb +18 -0
- data/lib/gtk_paradise/gtk_classes/label.rb +542 -0
- data/lib/gtk_paradise/gtk_classes/list_store.rb +41 -0
- data/lib/gtk_paradise/gtk_classes/menu.rb +114 -0
- data/lib/gtk_paradise/gtk_classes/menu_bar.rb +23 -0
- data/lib/gtk_paradise/gtk_classes/menu_item.rb +57 -0
- data/lib/gtk_paradise/gtk_classes/notebook.rb +247 -0
- data/lib/gtk_paradise/gtk_classes/option_menu.rb +21 -0
- data/lib/gtk_paradise/gtk_classes/popover.rb +26 -0
- data/lib/gtk_paradise/gtk_classes/radio_button.rb +22 -0
- data/lib/gtk_paradise/gtk_classes/radio_menu_item.rb +44 -0
- data/lib/gtk_paradise/gtk_classes/scale_button.rb +33 -0
- data/lib/gtk_paradise/gtk_classes/scrolled_window.rb +175 -0
- data/lib/gtk_paradise/gtk_classes/search_bar.rb +27 -0
- data/lib/gtk_paradise/gtk_classes/size_group.rb +13 -0
- data/lib/gtk_paradise/gtk_classes/source_buffer.rb +51 -0
- data/lib/gtk_paradise/gtk_classes/source_view.rb +47 -0
- data/lib/gtk_paradise/gtk_classes/spin_button.rb +89 -0
- data/lib/gtk_paradise/gtk_classes/spinner.rb +37 -0
- data/lib/gtk_paradise/gtk_classes/status_icon.rb +105 -0
- data/lib/gtk_paradise/gtk_classes/statusbar.rb +44 -0
- data/lib/gtk_paradise/gtk_classes/text_buffer.rb +227 -0
- data/lib/gtk_paradise/gtk_classes/text_tag.rb +15 -0
- data/lib/gtk_paradise/gtk_classes/text_view.rb +251 -0
- data/lib/gtk_paradise/gtk_classes/toggle_button.rb +40 -0
- data/lib/gtk_paradise/gtk_classes/toolbar.rb +92 -0
- data/lib/gtk_paradise/gtk_classes/tree_iter.rb +87 -0
- data/lib/gtk_paradise/gtk_classes/tree_selection.rb +40 -0
- data/lib/gtk_paradise/gtk_classes/tree_view.rb +322 -0
- data/lib/gtk_paradise/gtk_classes/tree_view_column.rb +62 -0
- data/lib/gtk_paradise/gtk_classes/vbox.rb +51 -0
- data/lib/gtk_paradise/gtk_classes/vscale.rb +42 -0
- data/lib/gtk_paradise/gtk_classes/vte.rb +28 -0
- data/lib/gtk_paradise/gtk_classes/widget.rb +1422 -0
- data/lib/gtk_paradise/gtk_classes/window.rb +72 -0
- data/lib/gtk_paradise/hello_world/README.md +10 -0
- data/lib/gtk_paradise/hello_world/hello_world_gtk2.rb +31 -0
- data/lib/gtk_paradise/hello_world/hello_world_gtk3.rb +33 -0
- data/lib/gtk_paradise/images/icons/closed.png +0 -0
- data/lib/gtk_paradise/images/icons/directory.png +0 -0
- data/lib/gtk_paradise/images/icons/logo.png +0 -0
- data/lib/gtk_paradise/images/icons/opened.png +0 -0
- data/lib/gtk_paradise/images/internal/COLOUR_BUTTON.png +0 -0
- data/lib/gtk_paradise/images/internal/EXPANDER.png +0 -0
- data/lib/gtk_paradise/images/internal/GDK_CURSORS.png +0 -0
- data/lib/gtk_paradise/images/internal/PROGRESS_BAR.png +0 -0
- data/lib/gtk_paradise/images/internal/README.md +3 -0
- data/lib/gtk_paradise/images/internal/SEPARATOR.png +0 -0
- data/lib/gtk_paradise/images/internal/TEXT_BUFFER2.png +0 -0
- data/lib/gtk_paradise/images/internal/VPANED.png +0 -0
- data/lib/gtk_paradise/images/internal/combo_box_text.png +0 -0
- data/lib/gtk_paradise/images/internal/combo_box_wrap_width_example.png +0 -0
- data/lib/gtk_paradise/images/internal/directory_content_screenshot.png +0 -0
- data/lib/gtk_paradise/images/internal/fancy_gtk_label.png +0 -0
- data/lib/gtk_paradise/images/internal/gtk_assistant.png +0 -0
- data/lib/gtk_paradise/images/internal/gtk_bold_label.png +0 -0
- data/lib/gtk_paradise/images/internal/gtk_cell_renderer_progress.png +0 -0
- data/lib/gtk_paradise/images/internal/gtk_color_dialog.png +0 -0
- data/lib/gtk_paradise/images/internal/gtk_coloured_text_example.png +0 -0
- data/lib/gtk_paradise/images/internal/gtk_notebook_horizontal.png +0 -0
- data/lib/gtk_paradise/images/internal/gtk_notebook_tabs_are_left.png +0 -0
- data/lib/gtk_paradise/images/internal/gtk_options.png +0 -0
- data/lib/gtk_paradise/images/internal/gtk_recent_chooser_dialog.png +0 -0
- data/lib/gtk_paradise/images/internal/gtk_scale_button.png +0 -0
- data/lib/gtk_paradise/images/internal/gtk_scrolled_window.png +0 -0
- data/lib/gtk_paradise/images/internal/gtk_size_group.png +0 -0
- data/lib/gtk_paradise/images/internal/pong_game.png +0 -0
- data/lib/gtk_paradise/images/logo/logo.png +0 -0
- data/lib/gtk_paradise/images/misc/ARROW_RIGHT.png +0 -0
- data/lib/gtk_paradise/images/misc/RMC.jpg +0 -0
- data/lib/gtk_paradise/images/misc/SCROLLED_WINDOW.png +0 -0
- data/lib/gtk_paradise/images/misc/apple.png +0 -0
- data/lib/gtk_paradise/images/misc/border_examples_via_CSS.png +0 -0
- data/lib/gtk_paradise/images/misc/broken_image.png +0 -0
- data/lib/gtk_paradise/images/misc/dot.png +0 -0
- data/lib/gtk_paradise/images/misc/gtk_entry_with_icon_name.png +0 -0
- data/lib/gtk_paradise/images/misc/gtk_font_size_widget_example.png +0 -0
- data/lib/gtk_paradise/images/misc/head.png +0 -0
- data/lib/gtk_paradise/images/misc/maximize_button.png +0 -0
- data/lib/gtk_paradise/images/misc/sample_image.png +0 -0
- data/lib/gtk_paradise/images/misc/small_clock.png +0 -0
- data/lib/gtk_paradise/images/misc/small_shield.png +0 -0
- data/lib/gtk_paradise/images/misc/tabble.png +0 -0
- data/lib/gtk_paradise/images/misc/tomato.png +0 -0
- data/lib/gtk_paradise/images/misc/weather.png +0 -0
- data/lib/gtk_paradise/pango/pango.rb +48 -0
- data/lib/gtk_paradise/pango/pango_fonts.rb +52 -0
- data/lib/gtk_paradise/pango/pango_renderer.rb +69 -0
- data/lib/gtk_paradise/project/project.rb +39 -0
- data/lib/gtk_paradise/prototypes/README.md +6 -0
- data/lib/gtk_paradise/prototypes/gtk3_prototype.rb +34 -0
- data/lib/gtk_paradise/prototypes/gtk3_standalone.rb +143 -0
- data/lib/gtk_paradise/prototypes/shared_code.rb +137 -0
- data/lib/gtk_paradise/require_gtk2.rb +7 -0
- data/lib/gtk_paradise/require_gtk3.rb +7 -0
- data/lib/gtk_paradise/requires/base_module_and_app_module.rb +7 -0
- data/lib/gtk_paradise/requires/do_require_the_files_under_the_gtk_classes_subdirectory.rb +11 -0
- data/lib/gtk_paradise/requires/numbered_lines.rb +7 -0
- data/lib/gtk_paradise/requires/require_files_irrespective_of_the_gtk_version_at_hand.rb +43 -0
- data/lib/gtk_paradise/requires/require_gtk2.rb +11 -0
- data/lib/gtk_paradise/requires/require_gtk2_or_gtk3.rb +87 -0
- data/lib/gtk_paradise/requires/require_gtk3.rb +30 -0
- data/lib/gtk_paradise/requires/require_gtk_runner.rb +1 -0
- data/lib/gtk_paradise/requires/require_the_base_module.rb +7 -0
- data/lib/gtk_paradise/requires/require_the_base_module_and_gtk_run.rb +8 -0
- data/lib/gtk_paradise/requires/require_the_base_module_and_the_toplevel_methods.rb +8 -0
- data/lib/gtk_paradise/requires/require_the_classes_files_for_gtk2.rb +11 -0
- data/lib/gtk_paradise/requires/require_the_classes_files_for_gtk3.rb +11 -0
- data/lib/gtk_paradise/requires/require_the_default_gtk_version.rb +14 -0
- data/lib/gtk_paradise/requires/require_the_gtk_colours.rb +7 -0
- data/lib/gtk_paradise/requires/require_the_gtk_paradise_commandline.rb +7 -0
- data/lib/gtk_paradise/requires/require_the_minesweeper_files.rb +11 -0
- data/lib/gtk_paradise/requires/require_the_tabble_project.rb +7 -0
- data/lib/gtk_paradise/requires/require_the_toplevel_methods.rb +11 -0
- data/lib/gtk_paradise/requires/run_this_widget.rb +7 -0
- data/lib/gtk_paradise/run.rb +70 -0
- data/lib/gtk_paradise/run_this_widget/run_this_widget.rb +125 -0
- data/lib/gtk_paradise/threads/README.md +1 -0
- data/lib/gtk_paradise/threads/threads.rb +67 -0
- data/lib/gtk_paradise/toplevel_methods/allow_only_numbers.rb +59 -0
- data/lib/gtk_paradise/toplevel_methods/css.rb +172 -0
- data/lib/gtk_paradise/toplevel_methods/csv.rb +102 -0
- data/lib/gtk_paradise/toplevel_methods/cursor.rb +69 -0
- data/lib/gtk_paradise/toplevel_methods/determine_which_gtk_version_is_in_use.rb +33 -0
- data/lib/gtk_paradise/toplevel_methods/e.rb +18 -0
- data/lib/gtk_paradise/toplevel_methods/enable_and_disable_warnings.rb +58 -0
- data/lib/gtk_paradise/toplevel_methods/events.rb +72 -0
- data/lib/gtk_paradise/toplevel_methods/keyboard.rb +25 -0
- data/lib/gtk_paradise/toplevel_methods/keys.rb +96 -0
- data/lib/gtk_paradise/toplevel_methods/main_file.rb +31 -0
- data/lib/gtk_paradise/toplevel_methods/misc.rb +798 -0
- data/lib/gtk_paradise/toplevel_methods/register_sigint.rb +17 -0
- data/lib/gtk_paradise/toplevel_methods/roebe.rb +22 -0
- data/lib/gtk_paradise/toplevel_methods/screen_resolution.rb +47 -0
- data/lib/gtk_paradise/toplevel_methods/select_file.rb +168 -0
- data/lib/gtk_paradise/toplevel_methods/spacer.rb +55 -0
- data/lib/gtk_paradise/toplevel_methods/text_buffer_tags.rb +188 -0
- data/lib/gtk_paradise/toplevel_methods/tokenizer.rb +103 -0
- data/lib/gtk_paradise/toplevel_methods/tooltips.rb +71 -0
- data/lib/gtk_paradise/toplevel_methods/we_use_this_gtk_version.rb +65 -0
- data/lib/gtk_paradise/utility_scripts/README.md +1 -0
- data/lib/gtk_paradise/utility_scripts/generate_gtk_prototype.rb +149 -0
- data/lib/gtk_paradise/version/upstream_gtk_version.rb +46 -0
- data/lib/gtk_paradise/version/version.rb +25 -0
- data/lib/gtk_paradise/widgets/README.md +12 -0
- data/lib/gtk_paradise/widgets/gtk2/README.md +7 -0
- data/lib/gtk_paradise/widgets/gtk2/animation.rb +149 -0
- data/lib/gtk_paradise/widgets/gtk2/browser/browser.config +6 -0
- data/lib/gtk_paradise/widgets/gtk2/browser/browser.rb +29 -0
- data/lib/gtk_paradise/widgets/gtk2/cat_merge.rb +198 -0
- data/lib/gtk_paradise/widgets/gtk2/cdripper/cdripper.config +6 -0
- data/lib/gtk_paradise/widgets/gtk2/cdripper/cdripper.rb +31 -0
- data/lib/gtk_paradise/widgets/gtk2/cell_renderer_progress_example.rb +108 -0
- data/lib/gtk_paradise/widgets/gtk2/clipboard_demo.rb +200 -0
- data/lib/gtk_paradise/widgets/gtk2/colour_filled_widget/colour_filled_widget.config +6 -0
- data/lib/gtk_paradise/widgets/gtk2/colour_filled_widget/colour_filled_widget.rb +29 -0
- data/lib/gtk_paradise/widgets/gtk2/conky/conky.rb +30 -0
- data/lib/gtk_paradise/widgets/gtk2/contacts/contacts.config +6 -0
- data/lib/gtk_paradise/widgets/gtk2/contacts/contacts.rb +29 -0
- data/lib/gtk_paradise/widgets/gtk2/cursor_examples.rb +121 -0
- data/lib/gtk_paradise/widgets/gtk2/debug_widget/debug_widget.rb +31 -0
- data/lib/gtk_paradise/widgets/gtk2/demo_of_labels.rb +133 -0
- data/lib/gtk_paradise/widgets/gtk2/dictionary.rb +263 -0
- data/lib/gtk_paradise/widgets/gtk2/directory_content_widget/directory_content_widget.rb +30 -0
- data/lib/gtk_paradise/widgets/gtk2/editable_combo_field.rb +178 -0
- data/lib/gtk_paradise/widgets/gtk2/editor/README.md +3 -0
- data/lib/gtk_paradise/widgets/gtk2/emoji_toggle_widget/emoji_toggle_widget.rb +37 -0
- data/lib/gtk_paradise/widgets/gtk2/emoji_widget/emoji_widget.config +6 -0
- data/lib/gtk_paradise/widgets/gtk2/emoji_widget/emoji_widget.rb +30 -0
- data/lib/gtk_paradise/widgets/gtk2/error_widget/error_widget.rb +30 -0
- data/lib/gtk_paradise/widgets/gtk2/expander_example.rb +90 -0
- data/lib/gtk_paradise/widgets/gtk2/file_opener.rb +301 -0
- data/lib/gtk_paradise/widgets/gtk2/file_path_widget/file_path_widget.rb +30 -0
- data/lib/gtk_paradise/widgets/gtk2/file_viewer/file_viewer.config +6 -0
- data/lib/gtk_paradise/widgets/gtk2/file_viewer/file_viewer.rb +33 -0
- data/lib/gtk_paradise/widgets/gtk2/foto_lister.rb +198 -0
- data/lib/gtk_paradise/widgets/gtk2/gidnight_commander/gidnight_commander.config +6 -0
- data/lib/gtk_paradise/widgets/gtk2/gidnight_commander/gidnight_commander.rb +595 -0
- data/lib/gtk_paradise/widgets/gtk2/google_searcher/google_searcher.rb +30 -0
- data/lib/gtk_paradise/widgets/gtk2/gtksourceview2_example.rb +105 -0
- data/lib/gtk_paradise/widgets/gtk2/hbox_example.rb +114 -0
- data/lib/gtk_paradise/widgets/gtk2/information_about_the_harddisc.rb +33 -0
- data/lib/gtk_paradise/widgets/gtk2/keyboard_grab.rb +81 -0
- data/lib/gtk_paradise/widgets/gtk2/list_store_table3/list_store_table3.rb +29 -0
- data/lib/gtk_paradise/widgets/gtk2/lsmod/lsmod.config +6 -0
- data/lib/gtk_paradise/widgets/gtk2/lsmod/lsmod.rb +27 -0
- data/lib/gtk_paradise/widgets/gtk2/lspci/lspci.config +6 -0
- data/lib/gtk_paradise/widgets/gtk2/lspci/lspci.rb +29 -0
- data/lib/gtk_paradise/widgets/gtk2/maximize_button/maximize_button.rb +33 -0
- data/lib/gtk_paradise/widgets/gtk2/menu_demo.rb +130 -0
- data/lib/gtk_paradise/widgets/gtk2/mini_clock/mini_clock.rb +48 -0
- data/lib/gtk_paradise/widgets/gtk2/mswin/README.md +3 -0
- data/lib/gtk_paradise/widgets/gtk2/mswin/constants.rb +42 -0
- data/lib/gtk_paradise/widgets/gtk2/mswin/ms_sys_control.rb +562 -0
- data/lib/gtk_paradise/widgets/gtk2/mswin/sys_cmd_button.rb +153 -0
- data/lib/gtk_paradise/widgets/gtk2/multiple_select_in_a_tree_view_widget.rb +99 -0
- data/lib/gtk_paradise/widgets/gtk2/my_calendar/my_calendar.config +6 -0
- data/lib/gtk_paradise/widgets/gtk2/my_calendar/my_calendar.rb +34 -0
- data/lib/gtk_paradise/widgets/gtk2/notebook_tab_coloured_top_bar.rb +74 -0
- data/lib/gtk_paradise/widgets/gtk2/notebook_tab_with_icon/notebook_tab_with_icon.rb +30 -0
- data/lib/gtk_paradise/widgets/gtk2/one_column_with_text_and_image/one_column_with_text_and_image.rb +30 -0
- data/lib/gtk_paradise/widgets/gtk2/paned_example.rb +107 -0
- data/lib/gtk_paradise/widgets/gtk2/pdfwalker/about.rb +25 -0
- data/lib/gtk_paradise/widgets/gtk2/pdfwalker/config.rb +106 -0
- data/lib/gtk_paradise/widgets/gtk2/pdfwalker/file.rb +304 -0
- data/lib/gtk_paradise/widgets/gtk2/pdfwalker/hexview.rb +81 -0
- data/lib/gtk_paradise/widgets/gtk2/pdfwalker/imgview.rb +63 -0
- data/lib/gtk_paradise/widgets/gtk2/pdfwalker/menu.rb +366 -0
- data/lib/gtk_paradise/widgets/gtk2/pdfwalker/properties.rb +110 -0
- data/lib/gtk_paradise/widgets/gtk2/pdfwalker/signing.rb +536 -0
- data/lib/gtk_paradise/widgets/gtk2/pdfwalker/textview.rb +86 -0
- data/lib/gtk_paradise/widgets/gtk2/pdfwalker/treeview.rb +400 -0
- data/lib/gtk_paradise/widgets/gtk2/pdfwalker/walker.rb +303 -0
- data/lib/gtk_paradise/widgets/gtk2/pdfwalker/xrefs.rb +71 -0
- data/lib/gtk_paradise/widgets/gtk2/pid_displayer/pid_displayer.config +6 -0
- data/lib/gtk_paradise/widgets/gtk2/pid_displayer/pid_displayer.rb +30 -0
- data/lib/gtk_paradise/widgets/gtk2/ping_widget/ping_widget.rb +30 -0
- data/lib/gtk_paradise/widgets/gtk2/psaux_viewer/psaux_viewer.rb +29 -0
- data/lib/gtk_paradise/widgets/gtk2/random_image/random_image.rb +39 -0
- data/lib/gtk_paradise/widgets/gtk2/reorderable_tabs_example.rb +148 -0
- data/lib/gtk_paradise/widgets/gtk2/ruler_widget.rb +127 -0
- data/lib/gtk_paradise/widgets/gtk2/scale_button_example.rb +116 -0
- data/lib/gtk_paradise/widgets/gtk2/scale_this_image.rb +164 -0
- data/lib/gtk_paradise/widgets/gtk2/scrolled_window_with_viewport/scrolled_window_with_viewport.rb +30 -0
- data/lib/gtk_paradise/widgets/gtk2/select_file/select_file.rb +32 -0
- data/lib/gtk_paradise/widgets/gtk2/show_icon_theme/show_icon_theme.rb +34 -0
- data/lib/gtk_paradise/widgets/gtk2/simple_clock/simple_clock.rb +29 -0
- data/lib/gtk_paradise/widgets/gtk2/slider_changing_button.rb +116 -0
- data/lib/gtk_paradise/widgets/gtk2/status_icon_example.rb +200 -0
- data/lib/gtk_paradise/widgets/gtk2/stopwatch/stopwatch.rb +30 -0
- data/lib/gtk_paradise/widgets/gtk2/sys_message/sys_message.config +6 -0
- data/lib/gtk_paradise/widgets/gtk2/sys_message/sys_message.rb +29 -0
- data/lib/gtk_paradise/widgets/gtk2/tabby/tabby.config +6 -0
- data/lib/gtk_paradise/widgets/gtk2/tabby/tabby.rb +27 -0
- data/lib/gtk_paradise/widgets/gtk2/tabby/view.rb +32 -0
- data/lib/gtk_paradise/widgets/gtk2/table2.rb +144 -0
- data/lib/gtk_paradise/widgets/gtk2/table_example.rb +129 -0
- data/lib/gtk_paradise/widgets/gtk2/timer_window/button_cancel.rb +39 -0
- data/lib/gtk_paradise/widgets/gtk2/timer_window/button_start.rb +83 -0
- data/lib/gtk_paradise/widgets/gtk2/timer_window/cycle_runner.rb +72 -0
- data/lib/gtk_paradise/widgets/gtk2/timer_window/input_validator.rb +38 -0
- data/lib/gtk_paradise/widgets/gtk2/timer_window/panel.rb +90 -0
- data/lib/gtk_paradise/widgets/gtk2/timer_window/progress_bar.rb +30 -0
- data/lib/gtk_paradise/widgets/gtk2/timer_window/text_field.rb +44 -0
- data/lib/gtk_paradise/widgets/gtk2/timer_window/timer.rb +95 -0
- data/lib/gtk_paradise/widgets/gtk2/timer_window/timer_window.config +6 -0
- data/lib/gtk_paradise/widgets/gtk2/timer_window/timer_window.rb +137 -0
- data/lib/gtk_paradise/widgets/gtk2/toolbar_example.rb +119 -0
- data/lib/gtk_paradise/widgets/gtk2/tree_view_demo.rb +148 -0
- data/lib/gtk_paradise/widgets/gtk2/unicode_clock/unicode_clock.rb +30 -0
- data/lib/gtk_paradise/widgets/gtk2/user/user.rb +29 -0
- data/lib/gtk_paradise/widgets/gtk2/wget_wrapper/wget_wrapper.rb +29 -0
- data/lib/gtk_paradise/widgets/gtk2/xpm_loader/xpm_loader.rb +32 -0
- data/lib/gtk_paradise/widgets/gtk2/youtube_dl.rb +227 -0
- data/lib/gtk_paradise/widgets/gtk3/browser/browser.rb +30 -0
- data/lib/gtk_paradise/widgets/gtk3/burn_this_iso_file/burn_this_iso_file.rb +241 -0
- data/lib/gtk_paradise/widgets/gtk3/burning_widget/burning_widget.rb +30 -0
- data/lib/gtk_paradise/widgets/gtk3/burning_widget/drawing_widget.rb +107 -0
- data/lib/gtk_paradise/widgets/gtk3/calculator/calculator.rb +456 -0
- data/lib/gtk_paradise/widgets/gtk3/cdripper/cdripper.rb +29 -0
- data/lib/gtk_paradise/widgets/gtk3/checkbox_image/checkbox_image.rb +169 -0
- data/lib/gtk_paradise/widgets/gtk3/colour_filled_widget/colour_filled_widget.rb +29 -0
- data/lib/gtk_paradise/widgets/gtk3/colour_palette/colour_palette.rb +30 -0
- data/lib/gtk_paradise/widgets/gtk3/coloured_bar/coloured_bar.rb +33 -0
- data/lib/gtk_paradise/widgets/gtk3/coloured_square/coloured_square.rb +186 -0
- data/lib/gtk_paradise/widgets/gtk3/conky/conky.rb +31 -0
- data/lib/gtk_paradise/widgets/gtk3/contacts/contacts.rb +29 -0
- data/lib/gtk_paradise/widgets/gtk3/cpu_widget/cpu_widget.rb +228 -0
- data/lib/gtk_paradise/widgets/gtk3/debug_widget/debug_widget.rb +30 -0
- data/lib/gtk_paradise/widgets/gtk3/directory_content_widget/directory_content_widget.rb +30 -0
- data/lib/gtk_paradise/widgets/gtk3/editor/connect_skeleton.rb +97 -0
- data/lib/gtk_paradise/widgets/gtk3/editor/create.rb +160 -0
- data/lib/gtk_paradise/widgets/gtk3/editor/editor.rb +836 -0
- data/lib/gtk_paradise/widgets/gtk3/editor/internal_widgets/README.md +3 -0
- data/lib/gtk_paradise/widgets/gtk3/editor/internal_widgets/goto_line_widget.rb +234 -0
- data/lib/gtk_paradise/widgets/gtk3/editor/misc.rb +568 -0
- data/lib/gtk_paradise/widgets/gtk3/emoji_toggle_widget/emoji_toggle_widget.rb +37 -0
- data/lib/gtk_paradise/widgets/gtk3/emoji_widget/emoji_widget.rb +30 -0
- data/lib/gtk_paradise/widgets/gtk3/error_widget/error_widget.rb +30 -0
- data/lib/gtk_paradise/widgets/gtk3/file_path_widget/file_path_widget.rb +30 -0
- data/lib/gtk_paradise/widgets/gtk3/file_viewer/file_viewer.rb +33 -0
- data/lib/gtk_paradise/widgets/gtk3/files_in_directory/files_in_directory.rb +318 -0
- data/lib/gtk_paradise/widgets/gtk3/flexible_vte/README.md +4 -0
- data/lib/gtk_paradise/widgets/gtk3/flexible_vte/flexible_vte.rb +241 -0
- data/lib/gtk_paradise/widgets/gtk3/flip_state_widget/flip_state_widget.rb +30 -0
- data/lib/gtk_paradise/widgets/gtk3/font_size_widget/action_button.rb +69 -0
- data/lib/gtk_paradise/widgets/gtk3/font_size_widget/font_size_widget.rb +540 -0
- data/lib/gtk_paradise/widgets/gtk3/gidnight_commander/gidnight_commander.rb +415 -0
- data/lib/gtk_paradise/widgets/gtk3/google_searcher/google_searcher.rb +30 -0
- data/lib/gtk_paradise/widgets/gtk3/image_close_on_click_action/image_close_on_click_action.rb +101 -0
- data/lib/gtk_paradise/widgets/gtk3/image_viewer/image_viewer.rb +214 -0
- data/lib/gtk_paradise/widgets/gtk3/information_about_the_harddisc/information_about_the_harddisc.rb +30 -0
- data/lib/gtk_paradise/widgets/gtk3/insert_character/insert_character.rb +266 -0
- data/lib/gtk_paradise/widgets/gtk3/linux_users/linux_users.rb +192 -0
- data/lib/gtk_paradise/widgets/gtk3/list_store_table3/list_store_table3.rb +29 -0
- data/lib/gtk_paradise/widgets/gtk3/lsmod/lsmod.rb +27 -0
- data/lib/gtk_paradise/widgets/gtk3/lspci/lspci.rb +29 -0
- data/lib/gtk_paradise/widgets/gtk3/maximize_button/maximize_button.rb +29 -0
- data/lib/gtk_paradise/widgets/gtk3/mini_clock/mini_clock.rb +47 -0
- data/lib/gtk_paradise/widgets/gtk3/my_calendar/my_calendar.rb +30 -0
- data/lib/gtk_paradise/widgets/gtk3/notebook_controller/notebook_controller.rb +30 -0
- data/lib/gtk_paradise/widgets/gtk3/notebook_tab_with_icon/notebook_tab_with_icon.rb +30 -0
- data/lib/gtk_paradise/widgets/gtk3/numbered_lines/numbered_lines.rb +307 -0
- data/lib/gtk_paradise/widgets/gtk3/one_column_with_text_and_image/one_column_with_text_and_image.rb +30 -0
- data/lib/gtk_paradise/widgets/gtk3/pid_displayer/pid_displayer.rb +30 -0
- data/lib/gtk_paradise/widgets/gtk3/ping_widget/ping_widget.rb +30 -0
- data/lib/gtk_paradise/widgets/gtk3/psaux_viewer/psaux_viewer.rb +29 -0
- data/lib/gtk_paradise/widgets/gtk3/random_image/random_image.rb +29 -0
- data/lib/gtk_paradise/widgets/gtk3/regex_matcher/regex_matcher.rb +156 -0
- data/lib/gtk_paradise/widgets/gtk3/rename_widget/rename_widget.rb +305 -0
- data/lib/gtk_paradise/widgets/gtk3/scrolled_window_with_viewport/scrolled_window_with_viewport.rb +30 -0
- data/lib/gtk_paradise/widgets/gtk3/select_file/select_file.rb +32 -0
- data/lib/gtk_paradise/widgets/gtk3/show_icon_theme/show_icon_theme.rb +30 -0
- data/lib/gtk_paradise/widgets/gtk3/simple_clock/simple_clock.rb +38 -0
- data/lib/gtk_paradise/widgets/gtk3/stopwatch/stopwatch.rb +30 -0
- data/lib/gtk_paradise/widgets/gtk3/sys_message/sys_message.rb +29 -0
- data/lib/gtk_paradise/widgets/gtk3/system_information/system_information.rb +188 -0
- data/lib/gtk_paradise/widgets/gtk3/tabble/admin_panel.rb +196 -0
- data/lib/gtk_paradise/widgets/gtk3/tabble/constants.rb +19 -0
- data/lib/gtk_paradise/widgets/gtk3/tabble/image_and_button.rb +383 -0
- data/lib/gtk_paradise/widgets/gtk3/tabble/tabble.rb +535 -0
- data/lib/gtk_paradise/widgets/gtk3/tabby/tabby.rb +29 -0
- data/lib/gtk_paradise/widgets/gtk3/tabby/view.rb +32 -0
- data/lib/gtk_paradise/widgets/gtk3/text_entry_widget/text_entry_widget.rb +30 -0
- data/lib/gtk_paradise/widgets/gtk3/unicode_clock/unicode_clock.rb +30 -0
- data/lib/gtk_paradise/widgets/gtk3/user/user.rb +29 -0
- data/lib/gtk_paradise/widgets/gtk3/view_webpage/view_webpage.rb +183 -0
- data/lib/gtk_paradise/widgets/gtk3/vote_box_widget/vote_box_widget.rb +30 -0
- data/lib/gtk_paradise/widgets/gtk3/wget_wrapper/wget_wrapper.rb +30 -0
- data/lib/gtk_paradise/widgets/gtk3/xpm_loader/xpm_loader.rb +32 -0
- data/lib/gtk_paradise/widgets/shared_code/admin_panel/admin_panel_module.rb +235 -0
- data/lib/gtk_paradise/widgets/shared_code/browser/browser_module.rb +314 -0
- data/lib/gtk_paradise/widgets/shared_code/burning_widget/burning_widget_module.rb +185 -0
- data/lib/gtk_paradise/widgets/shared_code/cdripper/cdripper_module.rb +564 -0
- data/lib/gtk_paradise/widgets/shared_code/colour_filled_widget/colour_filled_widget_module.rb +283 -0
- data/lib/gtk_paradise/widgets/shared_code/colour_palette/colour_palette_module.rb +362 -0
- data/lib/gtk_paradise/widgets/shared_code/coloured_bar/coloured_bar_module.rb +248 -0
- data/lib/gtk_paradise/widgets/shared_code/conky/conky_module.rb +378 -0
- data/lib/gtk_paradise/widgets/shared_code/contacts/contacts_module.rb +335 -0
- data/lib/gtk_paradise/widgets/shared_code/customizable_dialog/customizable_dialog.rb +95 -0
- data/lib/gtk_paradise/widgets/shared_code/debug_widget/debug_widget_module.rb +307 -0
- data/lib/gtk_paradise/widgets/shared_code/directory_content_widget/constants.rb +53 -0
- data/lib/gtk_paradise/widgets/shared_code/directory_content_widget/directory_content_widget_module.rb +777 -0
- data/lib/gtk_paradise/widgets/shared_code/directory_content_widget/handle_this_file_or_symlink.rb +83 -0
- data/lib/gtk_paradise/widgets/shared_code/emoji_toggle_widget/emoji_toggle_widget_module.rb +226 -0
- data/lib/gtk_paradise/widgets/shared_code/emoji_widget/emoji_widget_module.rb +212 -0
- data/lib/gtk_paradise/widgets/shared_code/error_widget/error_widget_module.rb +157 -0
- data/lib/gtk_paradise/widgets/shared_code/file_path_widget/file_path_widget.css +0 -0
- data/lib/gtk_paradise/widgets/shared_code/file_path_widget/file_path_widget_module.rb +245 -0
- data/lib/gtk_paradise/widgets/shared_code/file_viewer/file_viewer_module.rb +285 -0
- data/lib/gtk_paradise/widgets/shared_code/flip_state_widget/flip_state_widget_module.rb +203 -0
- data/lib/gtk_paradise/widgets/shared_code/google_searcher/google_searcher_module.rb +218 -0
- data/lib/gtk_paradise/widgets/shared_code/information_about_the_harddisc/harddisc_information.rb +155 -0
- data/lib/gtk_paradise/widgets/shared_code/information_about_the_harddisc/information_about_the_harddisc_module.rb +444 -0
- data/lib/gtk_paradise/widgets/shared_code/list_store_table3/list_store_table3_module.rb +144 -0
- data/lib/gtk_paradise/widgets/shared_code/lsmod/lsmod_module.rb +275 -0
- data/lib/gtk_paradise/widgets/shared_code/lspci/lspci_module.rb +329 -0
- data/lib/gtk_paradise/widgets/shared_code/maximize_button/maximize_button_module.rb +166 -0
- data/lib/gtk_paradise/widgets/shared_code/mini_clock/mini_clock_module.rb +228 -0
- data/lib/gtk_paradise/widgets/shared_code/my_calendar/my_calendar_module.rb +327 -0
- data/lib/gtk_paradise/widgets/shared_code/notebook_controller/notebook_controller_module.rb +339 -0
- data/lib/gtk_paradise/widgets/shared_code/notebook_tab_with_icon/notebook_tab_with_icon_module.rb +297 -0
- data/lib/gtk_paradise/widgets/shared_code/one_column_with_text_and_image/one_column_with_text_and_image_module.rb +223 -0
- data/lib/gtk_paradise/widgets/shared_code/pid_displayer/pid_displayer_module.rb +596 -0
- data/lib/gtk_paradise/widgets/shared_code/ping_widget/ping_widget_module.rb +326 -0
- data/lib/gtk_paradise/widgets/shared_code/psaux_viewer/psaux_viewer_module.rb +210 -0
- data/lib/gtk_paradise/widgets/shared_code/random_image/random_image_module.rb +307 -0
- data/lib/gtk_paradise/widgets/shared_code/scrolled_window_with_viewport/scrolled_window_with_viewport_module.rb +165 -0
- data/lib/gtk_paradise/widgets/shared_code/select_file/select_file_module.rb +241 -0
- data/lib/gtk_paradise/widgets/shared_code/shell/shell.css +5 -0
- data/lib/gtk_paradise/widgets/shared_code/shell/shell_module.rb +0 -0
- data/lib/gtk_paradise/widgets/shared_code/show_icon_theme/show_icon_theme_module.rb +364 -0
- data/lib/gtk_paradise/widgets/shared_code/simple_clock/simple_clock_module.rb +266 -0
- data/lib/gtk_paradise/widgets/shared_code/stopwatch/stopwatch_module.rb +341 -0
- data/lib/gtk_paradise/widgets/shared_code/sys_message/sys_message_module.rb +211 -0
- data/lib/gtk_paradise/widgets/shared_code/tabby/tabby_module.rb +189 -0
- data/lib/gtk_paradise/widgets/shared_code/tabby/view_module.rb +340 -0
- data/lib/gtk_paradise/widgets/shared_code/text_entry_widget/text_entry_widget_module.rb +182 -0
- data/lib/gtk_paradise/widgets/shared_code/unicode_clock/unicode_clock.css +0 -0
- data/lib/gtk_paradise/widgets/shared_code/unicode_clock/unicode_clock_module.rb +192 -0
- data/lib/gtk_paradise/widgets/shared_code/user/user_module.rb +307 -0
- data/lib/gtk_paradise/widgets/shared_code/vote_box_widget/vote_box_widget_module.rb +208 -0
- data/lib/gtk_paradise/widgets/shared_code/wget_wrapper/wget_wrapper_module.rb +266 -0
- data/lib/gtk_paradise/widgets/shared_code/xpm_loader/xpm_loader_module.rb +190 -0
- data/lib/gtk_paradise/widgets/version_agnostic/audio_button.rb +134 -0
- data/lib/gtk_paradise/widgets/version_agnostic/button_open_remote_webpage.rb +171 -0
- data/lib/gtk_paradise/widgets/version_agnostic/button_with_border.rb +63 -0
- data/lib/gtk_paradise/widgets/version_agnostic/button_xorg_buffer.rb +150 -0
- data/lib/gtk_paradise/widgets/version_agnostic/coloured_button.rb +248 -0
- data/lib/gtk_paradise/widgets/version_agnostic/coloured_unit.rb +54 -0
- data/lib/gtk_paradise/widgets/version_agnostic/my_image_menu_item.rb +103 -0
- data/lib/gtk_paradise/widgets/version_agnostic/my_menu_item_separator.rb +31 -0
- data/lib/gtk_paradise/widgets/version_agnostic/non_numbers_only.rb +66 -0
- data/lib/gtk_paradise/widgets/version_agnostic/note_window.rb +107 -0
- data/lib/gtk_paradise/widgets/version_agnostic/numbers_only.rb +61 -0
- data/lib/gtk_paradise/www/index.cgi +34 -0
- data/lib/gtk_paradise/yaml/browser_URLs.yml +22 -0
- data/lib/gtk_paradise/yaml/configuration_options_for_class_gtk_runner.yml +29 -0
- data/lib/gtk_paradise/yaml/menu.yml +1026 -0
- data/lib/gtk_paradise/yaml/notebook_controller.yml +299 -0
- data/lib/gtk_paradise/yaml/use_this_gtk_version_by_default.yml +1 -0
- data/lib/gtk_paradise.rb +5 -0
- data/test/gtk2/testing_combo_box.rb +24 -0
- data/test/gtk2/testing_gtk_image.rb +24 -0
- data/test/gtk2/testing_label_with_ampersand.rb +26 -0
- data/test/gtk2/testing_notebook.rb +23 -0
- data/test/gtk2/testing_the_gtk_paradise_project.rb +25 -0
- data/test/gtk3/test_widget.rb +114 -0
- data/test/gtk3/testing_app.rb +22 -0
- data/test/gtk3/testing_base_module.rb +63 -0
- data/test/gtk3/testing_colours.rb +11 -0
- data/test/gtk3/testing_project_base_directory.rb +9 -0
- data/test/gtk3/testing_the_html_pseudo_tags.rb +127 -0
- data/test/misc/testing_gtk_paradise_runner.rb +22 -0
- 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
|