kredki 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/lib/kredki/core/application.rb +314 -0
- data/lib/kredki/core/color.rb +100 -0
- data/lib/kredki/core/event/block_event_reaction.rb +44 -0
- data/lib/kredki/core/event/composite_event_manager.rb +37 -0
- data/lib/kredki/core/event/event.rb +91 -0
- data/lib/kredki/core/event/event_manager.rb +60 -0
- data/lib/kredki/core/event/event_manager_jobs.rb +53 -0
- data/lib/kredki/core/event/event_reaction.rb +36 -0
- data/lib/kredki/core/event/family/drop_event.rb +40 -0
- data/lib/kredki/core/event/family/exit_event.rb +5 -0
- data/lib/kredki/core/event/family/focus_enter_event.rb +5 -0
- data/lib/kredki/core/event/family/focus_leave_event.rb +5 -0
- data/lib/kredki/core/event/family/hide_event.rb +5 -0
- data/lib/kredki/core/event/family/joystick_event.rb +102 -0
- data/lib/kredki/core/event/family/key_event.rb +40 -0
- data/lib/kredki/core/event/family/mouse_event.rb +190 -0
- data/lib/kredki/core/event/family/pastele_event.rb +11 -0
- data/lib/kredki/core/event/family/show_event.rb +5 -0
- data/lib/kredki/core/event/family/text_event.rb +23 -0
- data/lib/kredki/core/event/family/tick_event.rb +5 -0
- data/lib/kredki/core/event/family/update_complete_event.rb +5 -0
- data/lib/kredki/core/event/family/window_event.rb +108 -0
- data/lib/kredki/core/event/job_event_reaction.rb +44 -0
- data/lib/kredki/core/event/joystick_event_manager.rb +30 -0
- data/lib/kredki/core/event/keyboard_event_manager.rb +29 -0
- data/lib/kredki/core/event/method_event_reaction.rb +46 -0
- data/lib/kredki/core/event/mouse_event_manager.rb +27 -0
- data/lib/kredki/core/font.rb +53 -0
- data/lib/kredki/core/job/after_job.rb +59 -0
- data/lib/kredki/core/job/job.rb +108 -0
- data/lib/kredki/core/job/loop_job.rb +87 -0
- data/lib/kredki/core/job/play_animation_job.rb +44 -0
- data/lib/kredki/core/job/play_job.rb +41 -0
- data/lib/kredki/core/job/play_loop_animation_job.rb +98 -0
- data/lib/kredki/core/job/play_loop_job.rb +104 -0
- data/lib/kredki/core/job/side_job.rb +62 -0
- data/lib/kredki/core/kernel-path.rb +71 -0
- data/lib/kredki/core/kredki.rb +89 -0
- data/lib/kredki/core/linear_gradient.rb +43 -0
- data/lib/kredki/core/media/clipboard.rb +35 -0
- data/lib/kredki/core/media/joystick.rb +199 -0
- data/lib/kredki/core/media/keyboard.rb +84 -0
- data/lib/kredki/core/media/keyboard_modifiers_decoder.rb +154 -0
- data/lib/kredki/core/media/mouse.rb +197 -0
- data/lib/kredki/core/paint/animation.rb +247 -0
- data/lib/kredki/core/paint/area.rb +67 -0
- data/lib/kredki/core/paint/block_shape_area.rb +102 -0
- data/lib/kredki/core/paint/ellipse.rb +22 -0
- data/lib/kredki/core/paint/paint.rb +392 -0
- data/lib/kredki/core/paint/picture.rb +126 -0
- data/lib/kredki/core/paint/rectangle.rb +202 -0
- data/lib/kredki/core/paint/scene.rb +277 -0
- data/lib/kredki/core/paint/shape.rb +394 -0
- data/lib/kredki/core/paint/shape_area.rb +57 -0
- data/lib/kredki/core/paint/text.rb +222 -0
- data/lib/kredki/core/pastele/pastele-extern.rb +139 -0
- data/lib/kredki/core/pastele/pastele.rb +205 -0
- data/lib/kredki/core/radial_gradient.rb +45 -0
- data/lib/kredki/core/setup.rb +214 -0
- data/lib/kredki/core/window/pane.rb +178 -0
- data/lib/kredki/core/window/pane_event_manager.rb +44 -0
- data/lib/kredki/core/window/pane_events.rb +366 -0
- data/lib/kredki/core/window/window.rb +584 -0
- data/lib/kredki/core.rb +2 -0
- data/lib/kredki/hide.rb +9 -0
- data/lib/kredki/irb.rb +90 -0
- data/lib/kredki/module.rb +3 -0
- data/lib/kredki/pads/application.rb +13 -0
- data/lib/kredki/pads/button.rb +151 -0
- data/lib/kredki/pads/checkbox/checkbox.rb +68 -0
- data/lib/kredki/pads/checkbox/checkbox_button.rb +65 -0
- data/lib/kredki/pads/context/item.rb +65 -0
- data/lib/kredki/pads/context/item_group.rb +10 -0
- data/lib/kredki/pads/context/layer.rb +59 -0
- data/lib/kredki/pads/context/menu.rb +77 -0
- data/lib/kredki/pads/context/pad.rb +26 -0
- data/lib/kredki/pads/context/primary_layer.rb +51 -0
- data/lib/kredki/pads/context/secondary_layer.rb +60 -0
- data/lib/kredki/pads/item/item.rb +140 -0
- data/lib/kredki/pads/item/item_group.rb +44 -0
- data/lib/kredki/pads/item/item_x.rb +22 -0
- data/lib/kredki/pads/item/item_y.rb +31 -0
- data/lib/kredki/pads/label.rb +71 -0
- data/lib/kredki/pads/layer.rb +326 -0
- data/lib/kredki/pads/layout/align.rb +10 -0
- data/lib/kredki/pads/layout/layout.rb +88 -0
- data/lib/kredki/pads/layout/way.rb +99 -0
- data/lib/kredki/pads/layout/x_way.rb +119 -0
- data/lib/kredki/pads/layout/y_way.rb +120 -0
- data/lib/kredki/pads/list/item.rb +117 -0
- data/lib/kredki/pads/list/item_group.rb +36 -0
- data/lib/kredki/pads/list/pad.rb +74 -0
- data/lib/kredki/pads/list/tree/item.rb +138 -0
- data/lib/kredki/pads/list/tree/item_group.rb +86 -0
- data/lib/kredki/pads/list/tree/pad.rb +94 -0
- data/lib/kredki/pads/module.rb +11 -0
- data/lib/kredki/pads/note.rb +212 -0
- data/lib/kredki/pads/notes.rb +32 -0
- data/lib/kredki/pads/option/option.rb +121 -0
- data/lib/kredki/pads/option/option_item.rb +15 -0
- data/lib/kredki/pads/option/option_item_group.rb +16 -0
- data/lib/kredki/pads/option/option_layer.rb +81 -0
- data/lib/kredki/pads/pad/animation_pad.rb +106 -0
- data/lib/kredki/pads/pad/glyph_pad.rb +71 -0
- data/lib/kredki/pads/pad/pad.rb +1290 -0
- data/lib/kredki/pads/pad/pad_events.rb +358 -0
- data/lib/kredki/pads/pad/picture_pad.rb +89 -0
- data/lib/kredki/pads/pad/rectangle_pad.rb +181 -0
- data/lib/kredki/pads/pad/scroll_pad.rb +176 -0
- data/lib/kredki/pads/pad/shape_pad.rb +148 -0
- data/lib/kredki/pads/pad/space_pad.rb +33 -0
- data/lib/kredki/pads/pad/text_pad.rb +310 -0
- data/lib/kredki/pads/pane.rb +267 -0
- data/lib/kredki/pads/portal_layer.rb +94 -0
- data/lib/kredki/pads/radio/group.rb +45 -0
- data/lib/kredki/pads/radio/item.rb +69 -0
- data/lib/kredki/pads/radio/item_button.rb +143 -0
- data/lib/kredki/pads/service/event_queue.rb +79 -0
- data/lib/kredki/pads/service/service.rb +248 -0
- data/lib/kredki/pads/service/service_event_manager.rb +43 -0
- data/lib/kredki/pads/service/service_filter.rb +98 -0
- data/lib/kredki/pads/service/service_inherited.rb +48 -0
- data/lib/kredki/pads/setup.rb +36 -0
- data/lib/kredki/pads/slider/slider.rb +145 -0
- data/lib/kredki/pads/slider/slider_x.rb +41 -0
- data/lib/kredki/pads/slider/slider_y.rb +41 -0
- data/lib/kredki/pads/table/cell.rb +22 -0
- data/lib/kredki/pads/table/column.rb +63 -0
- data/lib/kredki/pads/table/column_layout.rb +88 -0
- data/lib/kredki/pads/table/pad.rb +116 -0
- data/lib/kredki/pads/table/row.rb +24 -0
- data/lib/kredki/pads/table/scroll_rows.rb +50 -0
- data/lib/kredki/pads/text/editable_text_verse.rb +77 -0
- data/lib/kredki/pads/text/editable_text_verses.rb +59 -0
- data/lib/kredki/pads/text/navigable_text_pad.rb +413 -0
- data/lib/kredki/pads/text/text_edition.rb +97 -0
- data/lib/kredki/pads/text/text_navigation.rb +109 -0
- data/lib/kredki/pads/toolbar/item.rb +62 -0
- data/lib/kredki/pads/toolbar/item_group.rb +22 -0
- data/lib/kredki/pads/toolbar/layer.rb +41 -0
- data/lib/kredki/pads/toolbar/pad.rb +51 -0
- data/lib/kredki/pads/toolbar/primary_layer.rb +64 -0
- data/lib/kredki/pads/window.rb +11 -0
- data/lib/kredki/script.rb +29 -0
- data/lib/kredki/setup.rb +2 -0
- data/lib/kredki/test.rb +35 -0
- data/lib/kredki.rb +10 -0
- data/lib/readme.md +31 -0
- data/stuff/config/config.rb +431 -0
- data/stuff/config/pads_config.rb +111 -0
- data/stuff/dll/SDL3.dll +0 -0
- data/stuff/dll/pastele.dll +0 -0
- data/stuff/dll/thorvg-1.dll +0 -0
- data/stuff/font/MartianMono-StdRg.ttf +0 -0
- data/stuff/font/MavenPro-Medium.ttf +0 -0
- data/stuff/font/MavenPro-Regular.ttf +0 -0
- data/stuff/glyph/alert-circle-svgrepo-com.svg +4 -0
- data/stuff/glyph/alert-triangle-svgrepo-com.svg +12 -0
- data/stuff/glyph/archivebox-svgrepo-com.svg +5 -0
- data/stuff/glyph/arrow-2-ccw-svgrepo-com.svg +5 -0
- data/stuff/glyph/arrow-2-cw-svgrepo-com.svg +5 -0
- data/stuff/glyph/arrow-2-rectangle-path-svgrepo-com.svg +5 -0
- data/stuff/glyph/arrow-4-way-svgrepo-com.svg +4 -0
- data/stuff/glyph/arrow-ccw-svgrepo-com.svg +4 -0
- data/stuff/glyph/arrow-circle-down-svgrepo-com.svg +4 -0
- data/stuff/glyph/arrow-circle-left-svgrepo-com.svg +4 -0
- data/stuff/glyph/arrow-circle-right-svgrepo-com.svg +4 -0
- data/stuff/glyph/arrow-circle-up-svgrepo-com.svg +4 -0
- data/stuff/glyph/arrow-cw-svgrepo-com.svg +4 -0
- data/stuff/glyph/arrow-down-svgrepo-com.svg +4 -0
- data/stuff/glyph/arrow-from-line-down-svgrepo-com.svg +5 -0
- data/stuff/glyph/arrow-from-line-left-svgrepo-com.svg +5 -0
- data/stuff/glyph/arrow-from-line-right-svgrepo-com.svg +5 -0
- data/stuff/glyph/arrow-from-line-up-svgrepo-com.svg +5 -0
- data/stuff/glyph/arrow-from-shape-right-svgrepo-com.svg +5 -0
- data/stuff/glyph/arrow-from-shape-up-svgrepo-com.svg +5 -0
- data/stuff/glyph/arrow-left-svgrepo-com.svg +4 -0
- data/stuff/glyph/arrow-right-arrow-left-svgrepo-com.svg +5 -0
- data/stuff/glyph/arrow-right-svgrepo-com.svg +4 -0
- data/stuff/glyph/arrow-shape-turn-left-svgrepo-com.svg +4 -0
- data/stuff/glyph/arrow-shape-turn-right-svgrepo-com.svg +4 -0
- data/stuff/glyph/arrow-small-down-svgrepo-com.svg +4 -0
- data/stuff/glyph/arrow-small-left-svgrepo-com.svg +4 -0
- data/stuff/glyph/arrow-small-right-svgrepo-com.svg +4 -0
- data/stuff/glyph/arrow-small-up-svgrepo-com.svg +4 -0
- data/stuff/glyph/arrow-thin-down-svgrepo-com.svg +4 -0
- data/stuff/glyph/arrow-thin-left-svgrepo-com.svg +4 -0
- data/stuff/glyph/arrow-thin-right-svgrepo-com.svg +4 -0
- data/stuff/glyph/arrow-thin-up-svgrepo-com.svg +4 -0
- data/stuff/glyph/arrow-to-line-down-svgrepo-com.svg +5 -0
- data/stuff/glyph/arrow-to-line-left-svgrepo-com.svg +5 -0
- data/stuff/glyph/arrow-to-line-right-svgrepo-com.svg +5 -0
- data/stuff/glyph/arrow-to-line-up-svgrepo-com.svg +5 -0
- data/stuff/glyph/arrow-to-shape-down-svgrepo-com.svg +5 -0
- data/stuff/glyph/arrow-to-shape-right-svgrepo-com.svg +5 -0
- data/stuff/glyph/arrow-trend-down-svgrepo-com.svg +12 -0
- data/stuff/glyph/arrow-trend-up-svgrepo-com.svg +12 -0
- data/stuff/glyph/arrow-turn-down-left-svgrepo-com.svg +4 -0
- data/stuff/glyph/arrow-turn-down-right-svgrepo-com.svg +4 -0
- data/stuff/glyph/arrow-turn-left-down-svgrepo-com.svg +4 -0
- data/stuff/glyph/arrow-turn-left-up-svgrepo-com.svg +4 -0
- data/stuff/glyph/arrow-turn-right-down-svgrepo-com.svg +4 -0
- data/stuff/glyph/arrow-turn-right-up-svgrepo-com.svg +4 -0
- data/stuff/glyph/arrow-turn-up-left-svgrepo-com.svg +4 -0
- data/stuff/glyph/arrow-turn-up-right-svgrepo-com.svg +4 -0
- data/stuff/glyph/arrow-up-arrow-down-svgrepo-com.svg +5 -0
- data/stuff/glyph/arrow-up-svgrepo-com.svg +4 -0
- data/stuff/glyph/at-sign-svgrepo-com.svg +4 -0
- data/stuff/glyph/bag-svgrepo-com.svg +4 -0
- data/stuff/glyph/bell-slash-svgrepo-com.svg +6 -0
- data/stuff/glyph/bell-svgrepo-com.svg +5 -0
- data/stuff/glyph/book-open-svgrepo-com.svg +5 -0
- data/stuff/glyph/bookmark-svgrepo-com.svg +4 -0
- data/stuff/glyph/box-svgrepo-com.svg +6 -0
- data/stuff/glyph/calendar-svgrepo-com.svg +5 -0
- data/stuff/glyph/camera-svgrepo-com.svg +4 -0
- data/stuff/glyph/caret-down-svgrepo-com.svg +4 -0
- data/stuff/glyph/caret-left-svgrepo-com.svg +4 -0
- data/stuff/glyph/caret-right-svgrepo-com.svg +4 -0
- data/stuff/glyph/caret-up-svgrepo-com.svg +4 -0
- data/stuff/glyph/cart-svgrepo-com.svg +6 -0
- data/stuff/glyph/chart-pie-svgrepo-com.svg +5 -0
- data/stuff/glyph/chartbar-2-svgrepo-com.svg +7 -0
- data/stuff/glyph/chartbar-svgrepo-com.svg +7 -0
- data/stuff/glyph/checkmark-circle-svgrepo-com.svg +4 -0
- data/stuff/glyph/checkmark-double-svgrepo-com.svg +5 -0
- data/stuff/glyph/checkmark-square-svgrepo-com.svg +4 -0
- data/stuff/glyph/checkmark-svgrepo-com.svg +4 -0
- data/stuff/glyph/chevron-down-svgrepo-com.svg +4 -0
- data/stuff/glyph/chevron-left-chevron-right-svgrepo-com.svg +5 -0
- data/stuff/glyph/chevron-left-svgrepo-com.svg +4 -0
- data/stuff/glyph/chevron-right-svgrepo-com.svg +4 -0
- data/stuff/glyph/chevron-small-down-svgrepo-com.svg +4 -0
- data/stuff/glyph/chevron-small-left-svgrepo-com.svg +4 -0
- data/stuff/glyph/chevron-small-right-svgrepo-com.svg +4 -0
- data/stuff/glyph/chevron-small-up-svgrepo-com.svg +4 -0
- data/stuff/glyph/chevron-up-chevron-down-svgrepo-com.svg +5 -0
- data/stuff/glyph/chevron-up-svgrepo-com.svg +4 -0
- data/stuff/glyph/clock-svgrepo-com.svg +4 -0
- data/stuff/glyph/cloud-arrow-up-svgrepo-com.svg +4 -0
- data/stuff/glyph/cloud-download-svgrepo-com.svg +4 -0
- data/stuff/glyph/cloud-slash-svgrepo-com.svg +5 -0
- data/stuff/glyph/cloud-svgrepo-com.svg +4 -0
- data/stuff/glyph/columns-svgrepo-com.svg +5 -0
- data/stuff/glyph/command-svgrepo-com.svg +4 -0
- data/stuff/glyph/compass-svgrepo-com.svg +5 -0
- data/stuff/glyph/credit-card-svgrepo-com.svg +5 -0
- data/stuff/glyph/crop-svgrepo-com.svg +5 -0
- data/stuff/glyph/crown-svgrepo-com.svg +4 -0
- data/stuff/glyph/delete-left-svgrepo-com.svg +4 -0
- data/stuff/glyph/device-desktop-svgrepo-com.svg +4 -0
- data/stuff/glyph/device-mobile-svgrepo-com.svg +4 -0
- data/stuff/glyph/device-tablet-svgrepo-com.svg +4 -0
- data/stuff/glyph/doc-svgrepo-com.svg +5 -0
- data/stuff/glyph/dot-small-svgrepo-com.svg +4 -0
- data/stuff/glyph/dots-3-horizontal-svgrepo-com.svg +6 -0
- data/stuff/glyph/dots-3-vertical-svgrepo-com.svg +6 -0
- data/stuff/glyph/dots-6-horizontal-svgrepo-com.svg +9 -0
- data/stuff/glyph/dots-6-vertical-svgrepo-com.svg +9 -0
- data/stuff/glyph/dots-9-svgrepo-com.svg +12 -0
- data/stuff/glyph/emoji-frown-svgrepo-com.svg +4 -0
- data/stuff/glyph/emoji-meh-svgrepo-com.svg +4 -0
- data/stuff/glyph/emoji-smile-svgrepo-com.svg +4 -0
- data/stuff/glyph/envelope-svgrepo-com.svg +5 -0
- data/stuff/glyph/external-link-svgrepo-com.svg +5 -0
- data/stuff/glyph/eye-slash-svgrepo-com.svg +15 -0
- data/stuff/glyph/eye-svgrepo-com.svg +4 -0
- data/stuff/glyph/filter-svgrepo-com.svg +4 -0
- data/stuff/glyph/flame-svgrepo-com.svg +4 -0
- data/stuff/glyph/floppy-disk-svgrepo-com.svg +4 -0
- data/stuff/glyph/folder-svgrepo-com.svg +4 -0
- data/stuff/glyph/fullscreen-alt-svgrepo-com.svg +7 -0
- data/stuff/glyph/fullscreen-exit-alt-svgrepo-com.svg +7 -0
- data/stuff/glyph/fullscreen-exit-svgrepo-com.svg +5 -0
- data/stuff/glyph/fullscreen-svgrepo-com.svg +5 -0
- data/stuff/glyph/gear-svgrepo-com.svg +4 -0
- data/stuff/glyph/giftbox-svgrepo-com.svg +6 -0
- data/stuff/glyph/half-star-svgrepo-com.svg +4 -0
- data/stuff/glyph/hashtag-svgrepo-com.svg +4 -0
- data/stuff/glyph/headphones-svgrepo-com.svg +4 -0
- data/stuff/glyph/heart-half-svgrepo-com.svg +4 -0
- data/stuff/glyph/heart-svgrepo-com.svg +4 -0
- data/stuff/glyph/house-svgrepo-com.svg +4 -0
- data/stuff/glyph/image-svgrepo-com.svg +4 -0
- data/stuff/glyph/info-circle-svgrepo-com.svg +4 -0
- data/stuff/glyph/key-svgrepo-com.svg +4 -0
- data/stuff/glyph/layers-3-svgrepo-com.svg +6 -0
- data/stuff/glyph/layout-svgrepo-com.svg +6 -0
- data/stuff/glyph/line-3-svgrepo-com.svg +6 -0
- data/stuff/glyph/link-alt-svgrepo-com.svg +5 -0
- data/stuff/glyph/link-svgrepo-com.svg +6 -0
- data/stuff/glyph/list-bullet-svgrepo-com.svg +9 -0
- data/stuff/glyph/location-svgrepo-com.svg +4 -0
- data/stuff/glyph/lock-open-svgrepo-com.svg +4 -0
- data/stuff/glyph/lock-svgrepo-com.svg +4 -0
- data/stuff/glyph/map-pin-svgrepo-com.svg +4 -0
- data/stuff/glyph/medal-svgrepo-com.svg +13 -0
- data/stuff/glyph/media-backward-end-svgrepo-com.svg +5 -0
- data/stuff/glyph/media-backward-svgrepo-com.svg +5 -0
- data/stuff/glyph/media-forward-end-svgrepo-com.svg +5 -0
- data/stuff/glyph/media-forward-svgrepo-com.svg +4 -0
- data/stuff/glyph/media-pause-circle-svgrepo-com.svg +4 -0
- data/stuff/glyph/media-pause-svgrepo-com.svg +5 -0
- data/stuff/glyph/media-play-circle-svgrepo-com.svg +4 -0
- data/stuff/glyph/media-play-svgrepo-com.svg +4 -0
- data/stuff/glyph/media-stop-circle-svgrepo-com.svg +4 -0
- data/stuff/glyph/media-stop-svgrepo-com.svg +4 -0
- data/stuff/glyph/message-bubble-2-svgrepo-com.svg +4 -0
- data/stuff/glyph/message-bubble-svgrepo-com.svg +4 -0
- data/stuff/glyph/mic-slash-svgrepo-com.svg +6 -0
- data/stuff/glyph/mic-svgrepo-com.svg +5 -0
- data/stuff/glyph/minus-circle-svgrepo-com.svg +4 -0
- data/stuff/glyph/minus-square-svgrepo-com.svg +4 -0
- data/stuff/glyph/minus-svgrepo-com.svg +4 -0
- data/stuff/glyph/moon-svgrepo-com.svg +4 -0
- data/stuff/glyph/music-note-svgrepo-com.svg +4 -0
- data/stuff/glyph/nosign-svgrepo-com.svg +4 -0
- data/stuff/glyph/paper-clip-svgrepo-com.svg +4 -0
- data/stuff/glyph/paper-plane-svgrepo-com.svg +4 -0
- data/stuff/glyph/pen-tool-svgrepo-com.svg +4 -0
- data/stuff/glyph/pencil-svgrepo-com.svg +5 -0
- data/stuff/glyph/percent-svgrepo-com.svg +6 -0
- data/stuff/glyph/phone-incoming-svgrepo-com.svg +5 -0
- data/stuff/glyph/phone-missed-svgrepo-com.svg +4 -0
- data/stuff/glyph/phone-outgoing-svgrepo-com.svg +5 -0
- data/stuff/glyph/phone-slash-svgrepo-com.svg +4 -0
- data/stuff/glyph/phone-svgrepo-com.svg +4 -0
- data/stuff/glyph/plus-circle-svgrepo-com.svg +4 -0
- data/stuff/glyph/plus-square-svgrepo-com.svg +4 -0
- data/stuff/glyph/plus-svgrepo-com.svg +4 -0
- data/stuff/glyph/power-svgrepo-com.svg +5 -0
- data/stuff/glyph/printer-svgrepo-com.svg +5 -0
- data/stuff/glyph/question-circle-svgrepo-com.svg +4 -0
- data/stuff/glyph/scissors-svgrepo-com.svg +5 -0
- data/stuff/glyph/search-svgrepo-com.svg +4 -0
- data/stuff/glyph/server-svgrepo-com.svg +5 -0
- data/stuff/glyph/shape-circle-svgrepo-com.svg +4 -0
- data/stuff/glyph/shape-rhombus-svgrepo-com.svg +4 -0
- data/stuff/glyph/shape-square-svgrepo-com.svg +4 -0
- data/stuff/glyph/shape-triangle-svgrepo-com.svg +12 -0
- data/stuff/glyph/share-svgrepo-com.svg +4 -0
- data/stuff/glyph/shield-slash-svgrepo-com.svg +13 -0
- data/stuff/glyph/shield-svgrepo-com.svg +4 -0
- data/stuff/glyph/shippingbox-svgrepo-com.svg +7 -0
- data/stuff/glyph/slider-3-horizontal-svgrepo-com.svg +9 -0
- data/stuff/glyph/slider-3-vertical-svgrepo-com.svg +9 -0
- data/stuff/glyph/speaker-svgrepo-com.svg +4 -0
- data/stuff/glyph/speaker-wave-1-svgrepo-com.svg +5 -0
- data/stuff/glyph/speaker-wave-2-svgrepo-com.svg +6 -0
- data/stuff/glyph/speaker-xmark-svgrepo-com.svg +5 -0
- data/stuff/glyph/square-4-grid-svgrepo-com.svg +7 -0
- data/stuff/glyph/square-on-square-svgrepo-com.svg +5 -0
- data/stuff/glyph/star-svgrepo-com.svg +4 -0
- data/stuff/glyph/sun-svgrepo-com.svg +12 -0
- data/stuff/glyph/tag-svgrepo-com.svg +4 -0
- data/stuff/glyph/text-align-center-svgrepo-com.svg +7 -0
- data/stuff/glyph/text-align-justify-svgrepo-com.svg +7 -0
- data/stuff/glyph/text-align-left-svgrepo-com.svg +7 -0
- data/stuff/glyph/text-align-right-svgrepo-com.svg +7 -0
- data/stuff/glyph/text-bold-svgrepo-com.svg +4 -0
- data/stuff/glyph/text-heading-svgrepo-com.svg +4 -0
- data/stuff/glyph/text-italic-svgrepo-com.svg +4 -0
- data/stuff/glyph/text-svgrepo-com.svg +4 -0
- data/stuff/glyph/text-underline-svgrepo-com.svg +5 -0
- data/stuff/glyph/thumbs-down-svgrepo-com.svg +5 -0
- data/stuff/glyph/thumbs-up-svgrepo-com.svg +5 -0
- data/stuff/glyph/trash-svgrepo-com.svg +5 -0
- data/stuff/glyph/tray-svgrepo-com.svg +4 -0
- data/stuff/glyph/umbrela-svgrepo-com.svg +4 -0
- data/stuff/glyph/user-svgrepo-com.svg +5 -0
- data/stuff/glyph/users-svgrepo-com.svg +7 -0
- data/stuff/glyph/video-svgrepo-com.svg +12 -0
- data/stuff/glyph/waveform-ecg-svgrepo-com.svg +4 -0
- data/stuff/glyph/wi-fi-svgrepo-com.svg +7 -0
- data/stuff/glyph/xmark-circle-svgrepo-com.svg +4 -0
- data/stuff/glyph/xmark-small-svgrepo-com.svg +4 -0
- data/stuff/glyph/xmark-svgrepo-com.svg +4 -0
- data/stuff/glyph/zap-svgrepo-com.svg +4 -0
- data/stuff/glyph/zoom-in-svgrepo-com.svg +5 -0
- data/stuff/glyph/zoom-out-svgrepo-com.svg +5 -0
- data/stuff/readme.md +266 -0
- data/stuff/so/libSDL3.so +0 -0
- data/stuff/so/libpastele.so +0 -0
- data/stuff/so/libthorvg-1.so +0 -0
- metadata +427 -0
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
module Kredki
|
|
2
|
+
module Pads
|
|
3
|
+
module Tree
|
|
4
|
+
# Tree list item model.
|
|
5
|
+
class Item < List::Item
|
|
6
|
+
|
|
7
|
+
# Add new subitem.
|
|
8
|
+
def item! *a, **ka, &b
|
|
9
|
+
at = (lower.subitems(self).last || self).pad_index + 1
|
|
10
|
+
open = self.open
|
|
11
|
+
lower.item! *a, scenic: open, layoutic: open, size_x: 1r, at: at, level: level + 1, **ka, &b
|
|
12
|
+
set_leaf false if @leaf.nil?
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# Set whether is opened.
|
|
16
|
+
def set_open value = true, &block
|
|
17
|
+
return if (c = open) == (value = block ? block[c] : value == Not ? !c : value)
|
|
18
|
+
update_open value
|
|
19
|
+
lower&.update_open
|
|
20
|
+
true
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# See #set_open.
|
|
24
|
+
def open= param
|
|
25
|
+
send_bundle :set_open, param
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# Get whether is opened.
|
|
29
|
+
def open
|
|
30
|
+
@open || @open.nil?
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Set whether is leaf.
|
|
34
|
+
def set_leaf value = true, &block
|
|
35
|
+
return if (c = leaf) == (value = block ? block[c] : value == Not ? !c : value)
|
|
36
|
+
@leaf = value
|
|
37
|
+
update_icon
|
|
38
|
+
true
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# See #set_leaf.
|
|
42
|
+
def leaf= param
|
|
43
|
+
send_bundle :set_leaf, param
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# Get whether is leaf.
|
|
47
|
+
def leaf
|
|
48
|
+
@leaf || @leaf.nil?
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# Set level.
|
|
52
|
+
def set_level level
|
|
53
|
+
return if @level == level
|
|
54
|
+
@level = level
|
|
55
|
+
update_level
|
|
56
|
+
true
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# See #set_level.
|
|
60
|
+
def level= param
|
|
61
|
+
send_bundle :set_level, param
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# Get level
|
|
65
|
+
def level
|
|
66
|
+
@level || 0
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# :section: LEVEL 2
|
|
70
|
+
|
|
71
|
+
def initialize
|
|
72
|
+
super
|
|
73
|
+
|
|
74
|
+
@icon_space = put SpacePad, size: [:y, 1r]
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def sketch
|
|
78
|
+
super
|
|
79
|
+
|
|
80
|
+
update_icon
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def update_level
|
|
84
|
+
set_margin_xs 4 + level * get_size_y * 0.5
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def update_open open
|
|
88
|
+
@open = open
|
|
89
|
+
update_icon
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def update_icon
|
|
93
|
+
@icon_space.clear
|
|
94
|
+
if leaf
|
|
95
|
+
default_leaf_icon
|
|
96
|
+
elsif open
|
|
97
|
+
default_catalog_open_icon
|
|
98
|
+
else
|
|
99
|
+
default_catalog_icon
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def default_leaf_icon
|
|
104
|
+
@icon_space.put Pad, size: 1r, fill: :text do
|
|
105
|
+
set_area do
|
|
106
|
+
ellipse 1/5r, 1/5r
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
def default_catalog_icon
|
|
112
|
+
@icon_space.put RectanglePad, :@catalog_icon, keyboardy: false, fill: 0, size: 1r do
|
|
113
|
+
set_stroke fill: :text, width: 2, cap: :round
|
|
114
|
+
set_mouse_cursor :pointer
|
|
115
|
+
set_area do |sx, sy|
|
|
116
|
+
jump sx * 0.4, sy * 0.35
|
|
117
|
+
line sx * 0.6, sy * 0.5
|
|
118
|
+
line sx * 0.4, sy * 0.65
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def default_catalog_open_icon
|
|
124
|
+
@icon_space.put RectanglePad, :@catalog_icon, keyboardy: false, fill: 0, size: 1r do
|
|
125
|
+
set_stroke fill: :text, width: 2, cap: :round
|
|
126
|
+
set_mouse_cursor :pointer
|
|
127
|
+
set_area do |sx, sy|
|
|
128
|
+
jump sx * 0.35, sy * 0.4
|
|
129
|
+
line sx * 0.5, sy * 0.6
|
|
130
|
+
line sx * 0.65, sy * 0.4
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
end#Item
|
|
136
|
+
end#Tree
|
|
137
|
+
end#Pads
|
|
138
|
+
end#Kredki
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
module Kredki
|
|
2
|
+
module Pads
|
|
3
|
+
module Tree
|
|
4
|
+
class ItemGroup < Pads::ItemGroup
|
|
5
|
+
|
|
6
|
+
# Add new item.
|
|
7
|
+
def item!(...)
|
|
8
|
+
put(Item, __method__, ...)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# Get all items.
|
|
12
|
+
def items
|
|
13
|
+
each_upper(Tree::Item).to_a
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Get selected items.
|
|
17
|
+
def selected_items
|
|
18
|
+
each_upper(Tree::Item, selected: true).to_a
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# :section: LEVEL 2
|
|
22
|
+
|
|
23
|
+
def select_up_to pad
|
|
24
|
+
bound = 0
|
|
25
|
+
each_upper(Item).each do |it|
|
|
26
|
+
bound += 1 if it == pad
|
|
27
|
+
bound += 1 if it.keyboard_in
|
|
28
|
+
it.set_selected if bound > 0
|
|
29
|
+
break if bound > 1
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def subitems item
|
|
34
|
+
each(Item).drop_while{|it| it != item }.drop(1).take_while{|it| it.level > item.level }
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def update_open
|
|
38
|
+
hide_level = 0
|
|
39
|
+
each_upper(Item).each do |it|
|
|
40
|
+
level = it.level
|
|
41
|
+
if level <= hide_level
|
|
42
|
+
it.set_scenic true
|
|
43
|
+
it.set_layoutic true
|
|
44
|
+
hide_level = it.open ? level + 1 : level
|
|
45
|
+
else
|
|
46
|
+
it.set_scenic false
|
|
47
|
+
it.set_layoutic false
|
|
48
|
+
it.update_open false if it.open
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def focus_previous
|
|
54
|
+
kb = nil
|
|
55
|
+
each_upper(Item, reverse: true).each do |it|
|
|
56
|
+
if kb
|
|
57
|
+
return focus it if it.displayed && !it.disabled
|
|
58
|
+
elsif it.keyboard_in
|
|
59
|
+
kb = it
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
return focus kb if kb
|
|
63
|
+
find_upper(Item, displayed: true, disabled: false)&.then{|it| focus it }
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def focus_next
|
|
67
|
+
kb = nil
|
|
68
|
+
each_upper(Item).each do |it|
|
|
69
|
+
if kb
|
|
70
|
+
return focus it if it.displayed && !it.disabled
|
|
71
|
+
elsif it.keyboard_in
|
|
72
|
+
kb = it
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
return focus kb if kb
|
|
76
|
+
find_upper(Item, displayed: true, disabled: false)&.then{|it| focus it }
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def focus item
|
|
80
|
+
item&.keyboard_request
|
|
81
|
+
item
|
|
82
|
+
end
|
|
83
|
+
end#ItemGroup
|
|
84
|
+
end#Tree
|
|
85
|
+
end#Pads
|
|
86
|
+
end#Kredki
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
require_relative 'item_group'
|
|
2
|
+
require_relative 'item'
|
|
3
|
+
|
|
4
|
+
module Kredki
|
|
5
|
+
module Pads
|
|
6
|
+
module Tree
|
|
7
|
+
# Tree list pad.
|
|
8
|
+
class Pad < RectanglePad
|
|
9
|
+
|
|
10
|
+
# Add new item.
|
|
11
|
+
def item! *a, **ka, &b
|
|
12
|
+
@item_group.item! *a, size_x: 1r, **ka, &b
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# Create and attach select event reaction.
|
|
16
|
+
def on_select ...
|
|
17
|
+
on(Item::SelectEvent, ...)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# See #on_select.
|
|
21
|
+
def on_select= param
|
|
22
|
+
on_select do: param
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# Get all items.
|
|
26
|
+
def items
|
|
27
|
+
@item_group.items
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# Get selected items.
|
|
31
|
+
def selected_items
|
|
32
|
+
@item_group.selected_items
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# :section: LEVEL 2
|
|
36
|
+
|
|
37
|
+
def sketch
|
|
38
|
+
super
|
|
39
|
+
|
|
40
|
+
set keyboardy: true
|
|
41
|
+
set fill: :gray
|
|
42
|
+
set layout: :yss
|
|
43
|
+
|
|
44
|
+
@item_group = put ItemGroup
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def behavior
|
|
48
|
+
super
|
|
49
|
+
|
|
50
|
+
on Item::SelectEvent do |it|
|
|
51
|
+
item = it.target
|
|
52
|
+
source = it.source
|
|
53
|
+
if source.is_a? KeyClickEvent
|
|
54
|
+
if source.key.id == :enter
|
|
55
|
+
item.set_open Not
|
|
56
|
+
else
|
|
57
|
+
if source.ctrl?
|
|
58
|
+
item.set_selected Not
|
|
59
|
+
else
|
|
60
|
+
each_upper(Item).each_set{|it| set_selected it == item }
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
else
|
|
64
|
+
kb = Kredki.keyboard
|
|
65
|
+
if kb.shift?
|
|
66
|
+
if kb.ctrl?
|
|
67
|
+
item.set_open Not
|
|
68
|
+
else
|
|
69
|
+
item.set_selected
|
|
70
|
+
end
|
|
71
|
+
elsif kb.ctrl?
|
|
72
|
+
item.set_selected Not
|
|
73
|
+
else
|
|
74
|
+
each_upper(Item).each{|it| it.set_selected it == item }
|
|
75
|
+
if source.target.is(:@catalog_icon) || layer.mouse_click_combo > 1
|
|
76
|
+
item.set_open Not
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
on_focus_leave do
|
|
83
|
+
each_upper(Item).each_set selected: false
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def put_pad pad, at = nil
|
|
88
|
+
super
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
end#List
|
|
92
|
+
end#Tree
|
|
93
|
+
end#Pads
|
|
94
|
+
end#Kredki
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
require_relative 'service/event_queue'
|
|
2
|
+
require_relative 'service/service'
|
|
3
|
+
require_relative 'pad/pad'
|
|
4
|
+
require_relative 'pad/shape_pad'
|
|
5
|
+
require_relative 'pad/rectangle_pad'
|
|
6
|
+
require_relative 'layer'
|
|
7
|
+
require_relative 'application'
|
|
8
|
+
require_relative 'window'
|
|
9
|
+
require_relative 'pane'
|
|
10
|
+
|
|
11
|
+
load Kredki::Pads.config
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
require_relative 'text/editable_text_verse'
|
|
2
|
+
|
|
3
|
+
module Kredki
|
|
4
|
+
module Pads
|
|
5
|
+
# Control with text entry.
|
|
6
|
+
class Note < RectanglePad
|
|
7
|
+
include TextEdition
|
|
8
|
+
|
|
9
|
+
# Set text content.
|
|
10
|
+
def set_text text = ""
|
|
11
|
+
return send_bundle :set_text, yield(self.text) if block_given?
|
|
12
|
+
@verse.set_subject text
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# See #set_text.
|
|
16
|
+
def text= param
|
|
17
|
+
send_bundle :set_text, param
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Get text content.
|
|
21
|
+
def text
|
|
22
|
+
@verse.text
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# Set suit.
|
|
26
|
+
def set_suit *suit
|
|
27
|
+
return send_bundle :set_suit, yield(self.suit) if block_given?
|
|
28
|
+
suit = Util.uncover suit
|
|
29
|
+
return if @suit == suit && suit != :random
|
|
30
|
+
@suit = suit
|
|
31
|
+
repaint
|
|
32
|
+
true
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# See #set_suit.
|
|
36
|
+
def suit= param
|
|
37
|
+
send_bundle :set_suit, param
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Get suit.
|
|
41
|
+
def suit
|
|
42
|
+
@suit
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# Set verse features.
|
|
46
|
+
def set_verse ...
|
|
47
|
+
send_branch(__method__, ...)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# See #set_verse.
|
|
51
|
+
def verse= param
|
|
52
|
+
send_bundle :set_verse, param
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# Set verse size.
|
|
56
|
+
def set_verse_size ...
|
|
57
|
+
@verse.set_verse_size(...)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
# See #set_verse_size.
|
|
61
|
+
def verse_size= param
|
|
62
|
+
send_bundle :set_verse_size, param
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# Get verse size.
|
|
66
|
+
def verse_size
|
|
67
|
+
@verse.verse_size
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# Set verse font.
|
|
71
|
+
def set_verse_font ...
|
|
72
|
+
@verse.set_font(...)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
# See #set_verse_font.
|
|
76
|
+
def verse_font= param
|
|
77
|
+
send_bundle :set_verse_font, param
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
# Get verse font.
|
|
81
|
+
def verse_font
|
|
82
|
+
@verse.font
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
# Set verse layout.
|
|
86
|
+
def set_verse_layout ...
|
|
87
|
+
@verse.set_verse_layout(...)
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
# See #set_verse_layout.
|
|
91
|
+
def verse_layout= param
|
|
92
|
+
send_bundle :set_verse_layout, param
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
# Get verse layout.
|
|
96
|
+
def verse_layout
|
|
97
|
+
@verse.verse_layout
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
# Set a feature recognized by its class.
|
|
101
|
+
def << feature
|
|
102
|
+
case feature
|
|
103
|
+
when String
|
|
104
|
+
set_text feature
|
|
105
|
+
else
|
|
106
|
+
super
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
# :section: LEVEL 2
|
|
111
|
+
|
|
112
|
+
class NoteLayout < Layout::XWay
|
|
113
|
+
def arrange_layoutic pad, clip_size_x, clip_size_y, cx
|
|
114
|
+
sx, sy = pad.area_size
|
|
115
|
+
px = pad.get_x clip_size_x, sx, cx
|
|
116
|
+
py = pad.get_y clip_size_y, sy, (get_y @y, clip_size_y, sy)
|
|
117
|
+
pad.arrange
|
|
118
|
+
pad.update_xy px, py
|
|
119
|
+
pad.update_margin
|
|
120
|
+
[sx, sy, px, py]
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def initialize
|
|
125
|
+
super
|
|
126
|
+
|
|
127
|
+
@verse = default_verse
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
attr :verse
|
|
131
|
+
|
|
132
|
+
def sketch
|
|
133
|
+
super
|
|
134
|
+
|
|
135
|
+
set_layout NoteLayout.new(Start, Center)
|
|
136
|
+
set_mousy
|
|
137
|
+
set_keyboardy
|
|
138
|
+
set_stroke_width 1
|
|
139
|
+
set_margin 2
|
|
140
|
+
set_suit :gray
|
|
141
|
+
set_size_y Fit
|
|
142
|
+
|
|
143
|
+
sketch_verse
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
def sketch_verse
|
|
147
|
+
text_edition @verse, false
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
def behavior
|
|
151
|
+
super
|
|
152
|
+
|
|
153
|
+
on_mouse_scroll do: method(:mouse_scroll)
|
|
154
|
+
|
|
155
|
+
on_mouse_press :scroll do |e|
|
|
156
|
+
start_drag e.xy, :scroll
|
|
157
|
+
e.close
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
on_mouse_move do |e|
|
|
161
|
+
if e.drag? && e.button == :scroll
|
|
162
|
+
@verse.process_drag e
|
|
163
|
+
e.close
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
on_edit early: true do |e|
|
|
168
|
+
e.close if in_disabled
|
|
169
|
+
end
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
def mouse_scroll event
|
|
173
|
+
x, y = Kredki.relative_scroll(*event.xy)
|
|
174
|
+
@verse.scroll x == 0 ? y : x, y
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
def presence
|
|
178
|
+
super
|
|
179
|
+
|
|
180
|
+
Event.each(
|
|
181
|
+
on_focus_enter,
|
|
182
|
+
on_focus_leave,
|
|
183
|
+
on_mouse_enter,
|
|
184
|
+
on_mouse_leave,
|
|
185
|
+
do: method(:repaint)
|
|
186
|
+
)
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
def repaint event = nil
|
|
190
|
+
color = Kredki.color @suit
|
|
191
|
+
kb_top = keyboard_top
|
|
192
|
+
|
|
193
|
+
if in_disabled
|
|
194
|
+
set_opacity 3/4r
|
|
195
|
+
set_mouse_cursor nil
|
|
196
|
+
area.set_fill color
|
|
197
|
+
area.set_stroke_fill color
|
|
198
|
+
else
|
|
199
|
+
set_opacity 1r
|
|
200
|
+
set_mouse_cursor :text
|
|
201
|
+
area.set_fill kb_top ? color.darken : mouse_in ? color.lighten : color
|
|
202
|
+
area.set_stroke_fill kb_top ? :stroke_focus : color
|
|
203
|
+
end
|
|
204
|
+
verse.selection.each_paint{|it| it.set_fill kb_top ? :text_selection : :text_selection_inactive }
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
def default_verse
|
|
208
|
+
put EditableTextVerse, "", size_x: 1r, mousy: false, verse_size: Kredki.text_size
|
|
209
|
+
end
|
|
210
|
+
end
|
|
211
|
+
end
|
|
212
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
require_relative 'text/editable_text_verses'
|
|
2
|
+
|
|
3
|
+
module Kredki
|
|
4
|
+
module Pads
|
|
5
|
+
# A multiline text control.
|
|
6
|
+
class Notes < Note
|
|
7
|
+
|
|
8
|
+
# :section: LEVEL 2
|
|
9
|
+
|
|
10
|
+
def sketch
|
|
11
|
+
super
|
|
12
|
+
|
|
13
|
+
set_size_y 64
|
|
14
|
+
set_verse_size Kredki.text_size
|
|
15
|
+
set_verse_layout :yss
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def sketch_verse
|
|
19
|
+
text_edition @verse, true
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def mouse_scroll event
|
|
23
|
+
@verse.scroll *Kredki.relative_scroll(*event.xy)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def default_verse
|
|
27
|
+
put EditableTextVerses, size: 1r, mousy: false
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
require_relative '../note'
|
|
2
|
+
require_relative 'option_layer'
|
|
3
|
+
|
|
4
|
+
module Kredki
|
|
5
|
+
module Pads
|
|
6
|
+
# Control to select option from list.
|
|
7
|
+
class Option < Pad
|
|
8
|
+
|
|
9
|
+
# Add new item.
|
|
10
|
+
def item! ...
|
|
11
|
+
dropdown!.item!(size_x: 1r).set(...)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# Create/Update dropdown.
|
|
15
|
+
def dropdown! ...
|
|
16
|
+
@dropdown ||= default_dropdown_layer
|
|
17
|
+
@dropdown.set(...)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Get dropdown.
|
|
21
|
+
def dropdown
|
|
22
|
+
@dropdown
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# Create and attach select event reaction.
|
|
26
|
+
def on_select ...
|
|
27
|
+
on(Item::SelectEvent, ...)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# See #on_select.
|
|
31
|
+
def on_select= param
|
|
32
|
+
on_select do: param
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# :section: LEVEL 2
|
|
36
|
+
|
|
37
|
+
def initialize
|
|
38
|
+
super
|
|
39
|
+
|
|
40
|
+
@note = put Note, size: 1r
|
|
41
|
+
@arrow = default_arrow_button
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def sketch
|
|
45
|
+
super
|
|
46
|
+
|
|
47
|
+
set_size_y 24
|
|
48
|
+
dropdown!
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def behavior
|
|
52
|
+
super
|
|
53
|
+
|
|
54
|
+
on_key :enter do |e|
|
|
55
|
+
p e
|
|
56
|
+
p @dropdown.loaded
|
|
57
|
+
if @dropdown.loaded
|
|
58
|
+
item?(keyboard_in: true)&.report_selected e
|
|
59
|
+
else
|
|
60
|
+
@dropdown.load self
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
on_mouse_click :primary do
|
|
65
|
+
@dropdown.load self unless @dropdown.loaded
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
@arrow.on_mouse_click :primary do |e|
|
|
69
|
+
if @dropdown.loaded
|
|
70
|
+
@dropdown.unload
|
|
71
|
+
else
|
|
72
|
+
@dropdown.load self
|
|
73
|
+
end
|
|
74
|
+
e.close
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
@arrow.on_mouse_move do |it|
|
|
78
|
+
if it.drag?
|
|
79
|
+
it.close
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
on_select do |e|
|
|
84
|
+
@dropdown.unload
|
|
85
|
+
subject = e.target.find_upper(TextPad).subject
|
|
86
|
+
set_subject subject
|
|
87
|
+
@note.set_text subject
|
|
88
|
+
@note.verse.update_cursor subject.to_s.length
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
@dropdown.on_key :escape do |it|
|
|
92
|
+
@dropdown.unload
|
|
93
|
+
it.close
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
on_focus_leave do
|
|
97
|
+
@dropdown.unload
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def default_dropdown_layer
|
|
102
|
+
put OptionLayer
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def default_arrow_button
|
|
106
|
+
@note.put Button, size: [20, 1r] do
|
|
107
|
+
set stroke_width: 0
|
|
108
|
+
set keyboardy: false
|
|
109
|
+
put RectanglePad, mousy: false, keyboardy: false, fill: 0, size: 1r do
|
|
110
|
+
set_stroke fill: :text, width: 2, cap: :round
|
|
111
|
+
set_area do |sx, sy|
|
|
112
|
+
jump sx * 0.2, sy * 0.35
|
|
113
|
+
line sx * 0.5, sy * 0.65
|
|
114
|
+
line sx * 0.8, sy * 0.35
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
end
|