--------------------------------------------------------------------------------
(52) → re-create the following games or applications; if they exist,
       improve on them. We need to have tons of games available.
# Games:
#
#   Clock
#   Tangram
#   Scramble
#   Mastermind
#   VierGewinnt
#   NewMinesweeper
#   AsteroidsFighter
#   Tictactoe
#   AmpleGame
#
      r.add_shortcut('1', 'notebook_tab(1)', :strgalt)
      r.add_shortcut('2', 'notebook_tab(2)', :strgalt)
      r.add_shortcut('3', 'notebook_tab(3)', :strgalt)
      r.add_shortcut('4', 'notebook_tab(4)', :strgalt)
^^^ this is now parts of the games-paradise project though
--------------------------------------------------------------------------------
(1) → We have to support HTML tags eventually, such as:
      div {}
      The idea here is to be able to do things such as:
      div('mars1em') {
      }
      And then port all my .cgi pages to that in ADDITION.
      Kind of like being able to write the code once, and
      have it work on many different toolkits and platforms.

--------------------------------------------------------------------------------
(2) → move games into games_paradise huh
      ^^^^ ^^^ at some later point.
--------------------------------------------------------------------------------
(3) → port pyform example
      ^ we have one .rb file as example but we need
      to still automate this via an array or hash
      as input data structure; and add a screenshot
      once that eventually works.
        https://pyforms.readthedocs.io/en/v3.0/getting-started/the-basic/
      ^^^ hmmmmmmmm
--------------------------------------------------------------------------------
(2) → add a close button to the notebook tabs in the editor. perhaps
      simplify this via this API:
      hbox1 = gtk_hbox
      add_this_tab_with_close_button("Foobar", hbox1)
      ^^^ and document this + screenshot.
      The close button should be similar to geany or so.
      download the close button or something like that.
      this exists somewhere no?
      hmm yeah in notebook_tab_with_icon.rb
      It now works, more or less, so the next step is to attach it to
      the gtk-editor when we rewrite that editor eventually.
--------------------------------------------------------------------------------
(3) → in gtk-editor
      - when we load a file, re-calculate the number of lines in that file
      ^^^ and update accordingly
      and then, change the widget that shows how many numbers are
      - on changed tab event recalculate the number of lines
      - on right-click context menu add a rename tab label
      - fix the entry, aka
      in the "save as functionality" allow this as
      a per-tab use, perhaps in a hash or so.we want to have
      each save-able entry defined below per tab so that we
      can manipulate many different files.
      - must rewrite it
--------------------------------------------------------------------------------
(4) → Fix the .set_title() thing. This does not work - not sure why not.
--------------------------------------------------------------------------------
(5) → port the gtk-shell to gtk3 too. continue with it!
      and make vte optional hmmm
      just rewrite it ...^^^
--------------------------------------------------------------------------------
(6) → Think about "button {}" as a DSL layer.
      Make it work for gtk_paradise
--------------------------------------------------------------------------------
(7) → also learn a bit from pygobject
      and see if we can port more stuff.
      Look what can be ported; then look at the gtk3-demo in ruby
      and then remove this entry here. \o/
--------------------------------------------------------------------------------
(8) → PORT A LOT OF DOCUMENTATION from gtk.rb as well
      ALSO add at the least two new images.. either from
      legacy ... and/or new widgets that are bundled.
      then remove at the least the lower part of this todo
      entry. porting documentation will take longer.
--------------------------------------------------------------------------------
(11) → add a differential background in the treeview widget
--------------------------------------------------------------------------------
(12) → clone the webmin-functionality into gtk_paradise.
      At the least the main parts; and ideally in a language
      that can be agnostic.
--------------------------------------------------------------------------------
(13) → @hscale.set_value(3.0)
      ^^^^
      find out how to jump in a custom adjustment. Perhaps re-read this, read
      tricks too, and then remove this after adding a bit documentation to
      gtk_paradise.
--------------------------------------------------------------------------------
(14) → port gidnight commander completely. In particular it must
      work on windows by default !!!
      Integrate the view-widget that was created into it, rather
      than use custom-logic.
      START WITH GTK3
      on change in gidnight commander, update gtk-entry too. Aka both
      entries must be synced to one another - try to connect these two.
--------------------------------------------------------------------------------
(15) → make gtk-runner a module.
      then try to include it into ruby-gtk3.
      ^^^ hmmmmm. Has this been done yet? We have to fix
      the bug with the title being wrong still.
      Perhaps we should re-do the whole project from
      the get go, with that focus as primary objective,
      as little as it seems..
--------------------------------------------------------------------------------
(16) → ADD and document:
      @canvas.signal_connect(:key_press_event) do |widget,event|
      _ = Gdk::Keyval.to_name(event.keyval)
      case _
      when 'Up','KP_Up','KP_End','KP_Page_Up'
      move_rect(:up)
      when 'Down','KP_Down','KP_Page_Down','KP_Home'
      move_rect(:down)
      when 'Left','KP_Left'
      move_rect(:left)
      when 'Right','KP_Right'
      move_rect(:right)
      when 'space'
      e 'space key heisst nach unten fallen lassen'
      else
      e _
      end
      end
      ^^^ up_key?,
      down_key?
      ^^^ and document this
--------------------------------------------------------------------------------
(18) → include vte into gtk_paradise
      ^^^ we need a few vte examples really. do they even work ....
      hmmmmmmm.
      It shall showcase what is possible here.
--------------------------------------------------------------------------------
(19) → in gtk-paradise add a class that can be used to view
      a file. perhaps use Gtk.display_this_file('/Depot/j/TODO.md') too
      for it. Make it a standalone class, and then add it to
      ADmin Panel
      AND then document admin panel a bit more, and then upload this.
      well eprhaps don't use display_this_file since it requires an
      existing file.
      OR:
      adjust this:
# ======================================================================= #
# Next we have to return this widget.
# ======================================================================= #
      Gtk.textview(
      :default,
      :default,
      :default,
      use_this_text_buffer
      )
      ^^^
--------------------------------------------------------------------------------
(20) → (20)
      - continue with:
      TranslateGtkCCodeIntoRubyCode
--------------------------------------------------------------------------------
(21) → (21)
      add:
      Gtk.show_this_image()
      ^^^
      and then show_this_image() in gtk-paradise base module.
      perhaps take the image-creation from random_image.rb
      to a general purpose image loader, that also shows
      the original length.
--------------------------------------------------------------------------------
(22) → in a notebook tab, make the selected variant
      have another colour; and then when this works
      also make it BIGGER and appear out or so.
--------------------------------------------------------------------------------
(23) → Create a scramble-example via gtk-canvas.
--------------------------------------------------------------------------------
(24) → Continue with view_webpage_module.rb. We want to be able to use this
      as a "browser" source viewer or something. It shall download a webpage
      and then render the content in a textview.
      Perhaps first create a local file.
      Once that works, document this.
--------------------------------------------------------------------------------
(25) → create a manifest.yml, for studium
      ^^^ hmm
      called via reset
      make a DSL-variant for yaml files for now.
      What the hell does that mean? Hmmm .....
      The idea was to describe GUI components in such a
      file without needing to write ruby code as is.
--------------------------------------------------------------------------------
(26) → continue with conky. make it ideally so that we can
      cherry-pick what we want to use.
--------------------------------------------------------------------------------
(27) → Think of a way to turn commandline programs into generic UIs.
      This probably has to work via a --help call, so that these
      options can become a GUI.
--------------------------------------------------------------------------------
(28) → enhance view-webpage. also add ruby-gtk2 ...
--------------------------------------------------------------------------------
(29) → increase_the_font_size_to(to = '150%')
      old_font = ::Gtk::Settings.default.gtk_font_name
      ^^^ this is a bit buggy. we should query the current font in use
      for a particular widget, and then make modifications based
      on it, rather than using the Gtk::Settings.default variant.
--------------------------------------------------------------------------------
(30) → - write a demo-example
      demo-gtk2 # also for ruby-gtk2
      demo-gtk3 # and for ruby-gtk3
      ^^^
      It shall showcase all that is available dynamically.
--------------------------------------------------------------------------------
(31) → need to check for speed and improve it. gtk_paradise is getting
      too slow ... :(
--------------------------------------------------------------------------------
(32) → notebook_controller.yml
      ^^^^ make sure this works properly. and remove old code too I think.
      ^^^^ so that we have an overview of everything that works as-is.
      and ... we may have to check which widgets are too slow. Rewrite
      these.
--------------------------------------------------------------------------------
(33) → create an EverestClone; in functionality.
      It does not need to copy everything, but simply a GUI that nicely shows
      the graphics, CPU etc... of the given computer system
      This looks like so:
      https://www.chip.de/ii/1/3/5/3/1/1/5/8763c7fb0dbf0499.png
--------------------------------------------------------------------------------
(34) → Make it possible to use only the CSS rules that are actually in use,
      rather than all CSS.
      For this to work we must register the CSS classes in use.
      And then use some api such as:
      use_lean_CSS_rules
      ^^^ and document it too.
      017_lean_CSS_example.rb
      ^^^^
--------------------------------------------------------------------------------
(35) → Also, consider adding more images to the top-bar. hmmm. but which
      images?
      Finally, add a top-to-bottm dragger between control panel
      and the text-view stuff.
      - the go-to-widget must be improved. use some modal window or
      something like that. and the functionality has a bug,
      we count char-marks too.
--------------------------------------------------------------------------------
(36) → add these cute scroll events:
      entry1.on_scroll_up_event {
      e 'EIN SCROLL UP EVENT!!!!!!'
      }
      entry1.on_scroll_down_event {
      e 'EIN SCROLL UP EVENT!!!!!!'
      }
--------------------------------------------------------------------------------
(37) → https://i.imgur.com/zA9GqtR.png
      ^^^ re-create scramble somehow.
--------------------------------------------------------------------------------
(38) → add an imgur-uploader, a small widget for that.
--------------------------------------------------------------------------------
(39) → in the wiki.rb file: we need to add more functionality, until we can
      easily run a wiki. We must enable links in text-view widgets, and
      look for a general parser thingy.
--------------------------------------------------------------------------------
(40) → clone the functionality of cuiterm, at the least with a border around
      a text view or something like that.
--------------------------------------------------------------------------------
(41) → add a keyboard with buttons, so that people can simulate having a keyboard
      as user interface. perhaps implement via grid.
--------------------------------------------------------------------------------
(42) → add a cursor-example, e. g. when hovering into a box, change the cursor.
      and when hovering out, restore the old cursor again.
--------------------------------------------------------------------------------
(43) → Finish rubular port in ruby-gtk3; make it as identical to rubular.com
      as possible.
--------------------------------------------------------------------------------
(44) → improve the drawing model, in particular ingtegrate it into the
      Gtk namespace, and move the examples to the other examples.
      and port it to ruby-gtk3. as well
      as add more documentation to it!
--------------------------------------------------------------------------------
(45) → Add a button-maker thingy in pseudo-CSS, for gtk_paradise,
      aka:
      buttons:
      button1:
      css_class: 'mars1em pad5px bblack1'
      on_clicked: do_something1
      button2:
      css_class: 'mars1em pad5px bblack1'
      on_clicked: do_something2
      ^^^ test these in a yaml file. This works now.
      What is missing is better documentation, and adding more
      options for flexibility.
      Also add:
      rounded_border: xyz
      As a shortcut.
--------------------------------------------------------------------------------
(46) → add a zenity-clone in ruby-gtk3 and commandline support for this.
--------------------------------------------------------------------------------
(47) → 002_text_view_example.rb
      this in gtk4 has to be fixed
--------------------------------------------------------------------------------
(48) → in the editor, add a mini-shell from Roebe::Shell, only for the input
      and a tiny scroll bar on the bottom. perhaps even style it with black
      background and white font? or yellow font? anyway, it is more important
      that this actually works.
--------------------------------------------------------------------------------
(49) → extend the unified gtk installer
      This should ideally work with gtk2, gtk3 and gtk4 one day.
      However had, for the time being we will focus on ruby-gtk3 and
      ignore the other two variants.
      We have to find a solution for the colour stuff in gtk2 for
      instance; in CSS this is easier.
--------------------------------------------------------------------------------
(50) → improve the support for ruby-gtk2 into gtk-paradise gem.
      in general.
      test it slowly hmmmmmm..
      ^^^ yeah spend some time doing this now.
--------------------------------------------------------------------------------
(51) → add a virtual keyboard that can be controlled via the mouse.
       make it look similar to the web-variant.

--------------------------------------------------------------------------------
18) Port more zenity-options + examples + documentation + images.
^^^^
- return_p_tag
  ^^^ test this too
--------------------------------------------------------------------------------
(19) → integrate ms_sys_control.
      update it... reconsider it as a subclass of Gtk::Runner (probably not)
      require 'gtk_paradise/widgets/mswin/ms_sys_control.rb'
      then embed it into the admin_panel. Unfortunately the admin panel
      is getting too slow so we need a solution there.

improve the documentation then upload

actually test gir-ffi-gem on windows, att he least the
hello world example
--------------------------------------------------------------------------------
3) perhaps use ruby-gir for ruby-gtk2 hmmm as well as for ruby-gtk3 actually
   yup, supporting gtk2 works via ruby-gir so I should adapt gtk_paradise
   eventually.
--------------------------------------------------------------------------------