glimmer-dsl-libui 0.2.2 → 0.2.6

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # [<img src="https://raw.githubusercontent.com/AndyObtiva/glimmer/master/images/glimmer-logo-hi-res.png" height=85 />](https://github.com/AndyObtiva/glimmer) Glimmer DSL for LibUI 0.2.2
1
+ # [<img src="https://raw.githubusercontent.com/AndyObtiva/glimmer/master/images/glimmer-logo-hi-res.png" height=85 />](https://github.com/AndyObtiva/glimmer) Glimmer DSL for LibUI 0.2.6
2
2
  ## Prerequisite-Free Ruby Desktop Development GUI Library
3
3
  [![Gem Version](https://badge.fury.io/rb/glimmer-dsl-libui.svg)](http://badge.fury.io/rb/glimmer-dsl-libui)
4
4
  [![Maintainability](https://api.codeclimate.com/v1/badges/ce2853efdbecf6ebdc73/maintainability)](https://codeclimate.com/github/AndyObtiva/glimmer-dsl-libui/maintainability)
@@ -197,7 +197,7 @@ Other [Glimmer](https://rubygems.org/gems/glimmer) DSL gems you might be interes
197
197
 
198
198
  ## Table of Contents
199
199
 
200
- - [Glimmer DSL for LibUI 0.2.2](#-glimmer-dsl-for-libui-022)
200
+ - [Glimmer DSL for LibUI 0.2.6](#-glimmer-dsl-for-libui-026)
201
201
  - [Glimmer GUI DSL Concepts](#glimmer-gui-dsl-concepts)
202
202
  - [Usage](#usage)
203
203
  - [Girb (Glimmer IRB)](#girb-glimmer-irb)
@@ -244,6 +244,8 @@ Other [Glimmer](https://rubygems.org/gems/glimmer) DSL gems you might be interes
244
244
  - [Login](#login)
245
245
  - [Timer](#timer)
246
246
  - [Color The Circles](#color-the-circles)
247
+ - [Basic Draw Text](#basic-draw-text)
248
+ - [Custom Draw Text](#custom-draw-text)
247
249
  - [Contributing to glimmer-dsl-libui](#contributing-to-glimmer-dsl-libui)
248
250
  - [Help](#help)
249
251
  - [Issues](#issues)
@@ -331,7 +333,7 @@ gem install glimmer-dsl-libui
331
333
  Or install via Bundler `Gemfile`:
332
334
 
333
335
  ```ruby
334
- gem 'glimmer-dsl-libui', '~> 0.2.2'
336
+ gem 'glimmer-dsl-libui', '~> 0.2.6'
335
337
  ```
336
338
 
337
339
  Add `require 'glimmer-dsl-libui'` at the top, and then `include Glimmer` into the top-level main object for testing or into an actual class for serious usage.
@@ -788,6 +790,50 @@ Check [Basic Transform](#basic-transform) example for use of [X11](https://en.wi
788
790
 
789
791
  Check [Histogram](#histogram) example for use of hex colors.
790
792
 
793
+ To draw `text` in an `area`, you simply nest a `text(x, y, width)` control directly under `area` or inside a `on_draw` listener, and then nest attributed `string {string_value}` controls underneath it returning an actual `String` (think of them as the `<span>` element in html, which contains a string of text).
794
+
795
+ `text` control can have the following properties:
796
+ - `default_font`:
797
+ - `align`: `:left` (default), `:center`, or `:right` (`align` currently seems not to work on the Mac)
798
+
799
+ `string` can have the following properties:
800
+ - `font`: font descriptor hash consisting of `:family`, `:size`, `:weight` (`[:minimum, :thin, :ultra_light, :light, :book, :normal, :medium, :semi_bold, :bold, :ultra_bold, :heavy, :ultra_heavy, :maximum]`), `:italic` (`[:normal, :oblique, :italic]`), and `:stretch` (`[:ultra_condensed, :extra_condensed, :condensed, :semi_condensed, :normal, :semi_expanded, :expanded, :extra_expanded, :ultra_expanded]`) key values
801
+ - `color`: rgba, hex, or x11 color
802
+ - `background`: rgba, hex, or x11 color
803
+ - `underline`: one of `:none`, `:single`, `:double`, `:suggestion`, `:color_custom`, `:color_spelling`, `:color_grammar`, `:color_auxiliary`
804
+ - `underline_color`: one of `:spelling`, `:grammar`, `:auxiliary`, rgba, hex, or x11 color
805
+ - `open_type_features`: it must have a block containing `open_type_tag` occurrances, which take the a, b, c, d arguments plus a number at the end.
806
+
807
+ Example (you may copy/paste in [`girb`](#girb-glimmer-irb)):
808
+
809
+ ```ruby
810
+ window('area text drawing') {
811
+ area {
812
+ text {
813
+ default_font family: 'Helvetica', size: 12, weight: :normal, italic: :normal, stretch: :normal
814
+
815
+ string {
816
+ font family: 'Georgia', size: 13, weight: :medium, italic: :normal, stretch: :normal
817
+ color r: 230, g: 100, b: 50, a: 0.5
818
+ background r: 230, g: 200, b: 250, a: 0.8
819
+ underline :single
820
+ underline_color :spelling
821
+ open_type_features {
822
+ open_type_tag 'l', 'i', 'g', 'a', 0
823
+ open_type_tag 'l', 'i', 'g', 'a', 1
824
+ }
825
+
826
+ "This is a test\n\n"
827
+ }
828
+
829
+ string {
830
+ 'This is another test'
831
+ }
832
+ }
833
+ }
834
+ }.show
835
+ ```
836
+
791
837
  ### Smart Defaults and Conventions
792
838
 
793
839
  - `horizontal_box`, `vertical_box`, `grid`, and `form` controls have `padded` as `true` upon instantiation to ensure more user-friendly GUI by default
@@ -1276,9 +1322,7 @@ window('Notepad', 500, 300) {
1276
1322
 
1277
1323
  ### Midi Player
1278
1324
 
1279
- This example has prerequisites:
1280
- - Install [TiMidity](http://timidity.sourceforge.net) and ensure `timidity` command is in `PATH` (can be installed via [Homebrew](https://brew.sh) on Mac or [apt-get](https://help.ubuntu.com/community/AptGet/Howto) on Linux).
1281
- - Add `*.mid` files to `~/Music` directory (you may copy the ones included in [sounds](sounds) directory)
1325
+ To run this example, install [TiMidity](http://timidity.sourceforge.net) and ensure `timidity` command is in `PATH` (can be installed via [Homebrew](https://brew.sh) on Mac or [apt-get](https://help.ubuntu.com/community/AptGet/Howto) on Linux).
1282
1326
 
1283
1327
  [examples/midi_player.rb](examples/midi_player.rb)
1284
1328
 
@@ -1417,7 +1461,7 @@ class TinyMidiPlayer
1417
1461
 
1418
1462
  def initialize
1419
1463
  @pid = nil
1420
- @music_directory = File.expand_path(ARGV[0] || '~/Music/')
1464
+ @music_directory = File.expand_path('../sounds', __dir__)
1421
1465
  @midi_files = Dir.glob(File.join(@music_directory, '**/*.mid'))
1422
1466
  .sort_by { |path| File.basename(path) }
1423
1467
  at_exit { stop_midi }
@@ -4538,6 +4582,8 @@ window('Login') {
4538
4582
 
4539
4583
  ### Timer
4540
4584
 
4585
+ To run this example, install [TiMidity](http://timidity.sourceforge.net) and ensure `timidity` command is in `PATH` (can be installed via [Homebrew](https://brew.sh) on Mac or [apt-get](https://help.ubuntu.com/community/AptGet/Howto) on Linux).
4586
+
4541
4587
  [examples/timer.rb](examples/timer.rb)
4542
4588
 
4543
4589
  Run with this command from the root of the project if you cloned the project:
@@ -4565,8 +4611,6 @@ Linux
4565
4611
  New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
4566
4612
 
4567
4613
  ```ruby
4568
- # frozen_string_literal: true
4569
-
4570
4614
  require 'glimmer-dsl-libui'
4571
4615
 
4572
4616
  class Timer
@@ -4578,13 +4622,13 @@ class Timer
4578
4622
 
4579
4623
  def initialize
4580
4624
  @pid = nil
4581
- @midi_file = File.expand_path('../sounds/AlanWalker-Faded.mid', __dir__)
4582
- at_exit { stop_midi }
4625
+ @alarm_file = File.expand_path('../sounds/AlanWalker-Faded.mid', __dir__)
4626
+ at_exit { stop_alarm }
4583
4627
  setup_timer
4584
4628
  create_gui
4585
4629
  end
4586
4630
 
4587
- def stop_midi
4631
+ def stop_alarm
4588
4632
  if @pid
4589
4633
  if @th.alive?
4590
4634
  Process.kill(:SIGKILL, @pid)
@@ -4595,11 +4639,11 @@ class Timer
4595
4639
  end
4596
4640
  end
4597
4641
 
4598
- def play_midi
4599
- stop_midi
4642
+ def play_alarm
4643
+ stop_alarm
4600
4644
  if @pid.nil?
4601
4645
  begin
4602
- @pid = spawn "timidity -G 0.0-10.0 #{@midi_file}"
4646
+ @pid = spawn "timidity -G 0.0-10.0 #{@alarm_file}"
4603
4647
  @th = Process.detach @pid
4604
4648
  rescue Errno::ENOENT
4605
4649
  warn 'Timidty++ not found. Please install Timidity++.'
@@ -4634,7 +4678,8 @@ class Timer
4634
4678
  @stop_button.enabled = false
4635
4679
  @started = false
4636
4680
  unless @played
4637
- play_midi
4681
+ play_alarm
4682
+ msg_box('Alarm', 'Countdown Is Finished!')
4638
4683
  @played = true
4639
4684
  end
4640
4685
  end
@@ -4939,6 +4984,504 @@ end
4939
4984
  ColorTheCircles.new.launch
4940
4985
  ```
4941
4986
 
4987
+ ### Basic Draw Text
4988
+
4989
+ [examples/basic_draw_text.rb](examples/basic_draw_text.rb)
4990
+
4991
+ Run with this command from the root of the project if you cloned the project:
4992
+
4993
+ ```
4994
+ ruby -r './lib/glimmer-dsl-libui' examples/basic_draw_text.rb
4995
+ ```
4996
+
4997
+ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/glimmer-dsl-libui):
4998
+
4999
+ ```
5000
+ ruby -r glimmer-dsl-libui -e "require 'examples/basic_draw_text'"
5001
+ ```
5002
+
5003
+ Mac
5004
+
5005
+ ![glimmer-dsl-libui-mac-basic-draw-text.png](images/glimmer-dsl-libui-mac-basic-draw-text.png)
5006
+
5007
+ Linux
5008
+
5009
+ ![glimmer-dsl-libui-linux-basic-draw-text.png](images/glimmer-dsl-libui-linux-basic-draw-text.png)
5010
+
5011
+ [LibUI](https://github.com/kojix2/LibUI) Original Version:
5012
+
5013
+ ```ruby
5014
+ require 'libui'
5015
+
5016
+ UI = LibUI
5017
+
5018
+ UI.init
5019
+
5020
+ handler = UI::FFI::AreaHandler.malloc
5021
+ area = UI.new_area(handler)
5022
+
5023
+ # Michael Ende (1929-1995)
5024
+ # The Neverending Story is a fantasy novel by German writer Michael Ende,
5025
+ # The English version, translated by Ralph Manheim, was published in 1983.
5026
+
5027
+ TITLE = 'Michael Ende (1929-1995) The Neverending Story'
5028
+
5029
+ str1 = \
5030
+ ' At last Ygramul sensed that something was coming toward ' \
5031
+ 'her. With the speed of lightning, she turned about, confronting ' \
5032
+ 'Atreyu with an enormous steel-blue face. Her single eye had a ' \
5033
+ 'vertical pupil, which stared at Atreyu with inconceivable malignancy. '
5034
+
5035
+ str2 = \
5036
+ ' A cry of fear escaped Bastian. '
5037
+
5038
+ str3 = \
5039
+ ' A cry of terror passed through the ravine and echoed from ' \
5040
+ 'side to side. Ygramul turned her eye to left and right, to see if ' \
5041
+ 'someone else had arrived, for that sound could not have been ' \
5042
+ 'made by the boy who stood there as though paralyzed with ' \
5043
+ 'horror. '
5044
+
5045
+ str4 = \
5046
+ ' Could she have heard my cry? Bastion wondered in alarm. ' \
5047
+ "But that's not possible. "
5048
+
5049
+ str5 = \
5050
+ ' And then Atreyu heard Ygramuls voice. It was very high ' \
5051
+ 'and slightly hoarse, not at all the right kind of voice for that ' \
5052
+ 'enormous face. Her lips did not move as she spoke. It was the ' \
5053
+ 'buzzing of a great swarm of hornets that shaped itself into ' \
5054
+ 'words. '
5055
+
5056
+ str = ''
5057
+ attr_str = UI.new_attributed_string(str)
5058
+
5059
+ def attr_str.append(what, color)
5060
+ case color
5061
+ when :red
5062
+ color_attribute = UI.new_color_attribute(0.0, 0.5, 0.0, 0.7)
5063
+ when :green
5064
+ color_attribute = UI.new_color_attribute(0.5, 0.0, 0.25, 0.7)
5065
+ end
5066
+ start = UI.attributed_string_len(self)
5067
+ UI.attributed_string_append_unattributed(self, what)
5068
+ UI.attributed_string_set_attribute(self, color_attribute, start, start + what.size)
5069
+ UI.attributed_string_append_unattributed(self, "\n\n")
5070
+ end
5071
+
5072
+ attr_str.append(str1, :green)
5073
+ attr_str.append(str2, :red)
5074
+ attr_str.append(str3, :green)
5075
+ attr_str.append(str4, :red)
5076
+ attr_str.append(str5, :green)
5077
+
5078
+ Georgia = 'Georgia'
5079
+
5080
+ handler_draw_event = Fiddle::Closure::BlockCaller.new(0, [1, 1, 1]) do |_, _, adp|
5081
+ area_draw_params = UI::FFI::AreaDrawParams.new(adp)
5082
+ default_font = UI::FFI::FontDescriptor.malloc
5083
+ default_font.Family = Georgia
5084
+ default_font.Size = 13
5085
+ default_font.Weight = 500
5086
+ default_font.Italic = 0
5087
+ default_font.Stretch = 4
5088
+ params = UI::FFI::DrawTextLayoutParams.malloc
5089
+
5090
+ # UI.font_button_font(font_button, default_font)
5091
+ params.String = attr_str
5092
+ params.DefaultFont = default_font
5093
+ params.Width = area_draw_params.AreaWidth
5094
+ params.Align = 0
5095
+ text_layout = UI.draw_new_text_layout(params)
5096
+ UI.draw_text(area_draw_params.Context, text_layout, 0, 0)
5097
+ UI.draw_free_text_layout(text_layout)
5098
+ end
5099
+
5100
+ handler.Draw = handler_draw_event
5101
+ # Assigning to local variables
5102
+ # This is intended to protect Fiddle::Closure from garbage collection.
5103
+ handler.MouseEvent = (c1 = Fiddle::Closure::BlockCaller.new(0, [0]) {})
5104
+ handler.MouseCrossed = (c2 = Fiddle::Closure::BlockCaller.new(0, [0]) {})
5105
+ handler.DragBroken = (c3 = Fiddle::Closure::BlockCaller.new(0, [0]) {})
5106
+ handler.KeyEvent = (c4 = Fiddle::Closure::BlockCaller.new(0, [0]) {})
5107
+
5108
+ box = UI.new_vertical_box
5109
+ UI.box_set_padded(box, 1)
5110
+ UI.box_append(box, area, 1)
5111
+
5112
+ main_window = UI.new_window(TITLE, 600, 400, 1)
5113
+ UI.window_set_margined(main_window, 1)
5114
+ UI.window_set_child(main_window, box)
5115
+
5116
+ UI.window_on_closing(main_window) do
5117
+ UI.control_destroy(main_window)
5118
+ UI.quit
5119
+ 0
5120
+ end
5121
+ UI.control_show(main_window)
5122
+
5123
+ UI.main
5124
+ UI.quit
5125
+ ```
5126
+
5127
+ [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
5128
+
5129
+ ```ruby
5130
+ require 'glimmer-dsl-libui'
5131
+
5132
+ # Michael Ende (1929-1995)
5133
+ # The Neverending Story is a fantasy novel by German writer Michael Ende,
5134
+ # The English version, translated by Ralph Manheim, was published in 1983.
5135
+ class BasicDrawText
5136
+ include Glimmer
5137
+
5138
+ def alternating_color_string(initial: false, &block)
5139
+ @index = 0 if initial
5140
+ @index += 1
5141
+ string {
5142
+ if @index.odd?
5143
+ color r: 0.5, g: 0, b: 0.25, a: 0.7
5144
+ else
5145
+ color r: 0, g: 0.5, b: 0, a: 0.7
5146
+ end
5147
+
5148
+ block.call + "\n\n"
5149
+ }
5150
+ end
5151
+
5152
+ def launch
5153
+ window('Michael Ende (1929-1995) The Neverending Story', 600, 400) {
5154
+ margined true
5155
+
5156
+ area {
5157
+ text { # default arguments for x, y, and width are (0, 0, area_draw_params[:area_width])
5158
+ # align :left # default alignment
5159
+ default_font family: 'Georgia', size: 13, weight: :medium, italic: :normal, stretch: :normal
5160
+
5161
+ alternating_color_string(initial: true) {
5162
+ ' At last Ygramul sensed that something was coming toward ' \
5163
+ 'her. With the speed of lightning, she turned about, confronting ' \
5164
+ 'Atreyu with an enormous steel-blue face. Her single eye had a ' \
5165
+ 'vertical pupil, which stared at Atreyu with inconceivable malignancy. '
5166
+ }
5167
+ alternating_color_string {
5168
+ ' A cry of fear escaped Bastian. '
5169
+ }
5170
+ alternating_color_string {
5171
+ ' A cry of terror passed through the ravine and echoed from ' \
5172
+ 'side to side. Ygramul turned her eye to left and right, to see if ' \
5173
+ 'someone else had arrived, for that sound could not have been ' \
5174
+ 'made by the boy who stood there as though paralyzed with ' \
5175
+ 'horror. '
5176
+ }
5177
+ alternating_color_string {
5178
+ ' Could she have heard my cry? Bastion wondered in alarm. ' \
5179
+ "But that's not possible. "
5180
+ }
5181
+ alternating_color_string {
5182
+ ' And then Atreyu heard Ygramuls voice. It was very high ' \
5183
+ 'and slightly hoarse, not at all the right kind of voice for that ' \
5184
+ 'enormous face. Her lips did not move as she spoke. It was the ' \
5185
+ 'buzzing of a great swarm of hornets that shaped itself into ' \
5186
+ 'words. '
5187
+ }
5188
+ }
5189
+ }
5190
+ }.show
5191
+ end
5192
+ end
5193
+
5194
+ BasicDrawText.new.launch
5195
+ ```
5196
+
5197
+ [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version 2:
5198
+
5199
+ ```ruby
5200
+ require 'glimmer-dsl-libui'
5201
+
5202
+ # Michael Ende (1929-1995)
5203
+ # The Neverending Story is a fantasy novel by German writer Michael Ende,
5204
+ # The English version, translated by Ralph Manheim, was published in 1983.
5205
+ class BasicDrawText
5206
+ include Glimmer
5207
+
5208
+ def alternating_color_string(initial: false, &block)
5209
+ @index = 0 if initial
5210
+ @index += 1
5211
+ string {
5212
+ if @index.odd?
5213
+ color r: 0.5, g: 0, b: 0.25, a: 0.7
5214
+ else
5215
+ color r: 0, g: 0.5, b: 0, a: 0.7
5216
+ end
5217
+
5218
+ block.call + "\n\n"
5219
+ }
5220
+ end
5221
+
5222
+ def launch
5223
+ window('Michael Ende (1929-1995) The Neverending Story', 600, 400) {
5224
+ margined true
5225
+
5226
+ area {
5227
+ on_draw do |area_draw_params|
5228
+ text { # default arguments for x, y, and width are (0, 0, area_draw_params[:area_width])
5229
+ # align :left # default alignment
5230
+ default_font family: 'Georgia', size: 13, weight: :medium, italic: :normal, stretch: :normal
5231
+
5232
+ alternating_color_string(initial: true) {
5233
+ ' At last Ygramul sensed that something was coming toward ' \
5234
+ 'her. With the speed of lightning, she turned about, confronting ' \
5235
+ 'Atreyu with an enormous steel-blue face. Her single eye had a ' \
5236
+ 'vertical pupil, which stared at Atreyu with inconceivable malignancy. '
5237
+ }
5238
+ alternating_color_string {
5239
+ ' A cry of fear escaped Bastian. '
5240
+ }
5241
+ alternating_color_string {
5242
+ ' A cry of terror passed through the ravine and echoed from ' \
5243
+ 'side to side. Ygramul turned her eye to left and right, to see if ' \
5244
+ 'someone else had arrived, for that sound could not have been ' \
5245
+ 'made by the boy who stood there as though paralyzed with ' \
5246
+ 'horror. '
5247
+ }
5248
+ alternating_color_string {
5249
+ ' Could she have heard my cry? Bastion wondered in alarm. ' \
5250
+ "But that's not possible. "
5251
+ }
5252
+ alternating_color_string {
5253
+ ' And then Atreyu heard Ygramuls voice. It was very high ' \
5254
+ 'and slightly hoarse, not at all the right kind of voice for that ' \
5255
+ 'enormous face. Her lips did not move as she spoke. It was the ' \
5256
+ 'buzzing of a great swarm of hornets that shaped itself into ' \
5257
+ 'words. '
5258
+ }
5259
+ }
5260
+ end
5261
+ }
5262
+ }.show
5263
+ end
5264
+ end
5265
+
5266
+ BasicDrawText.new.launch
5267
+ ```
5268
+
5269
+ ### Custom Draw Text
5270
+
5271
+ [examples/custom_draw_text.rb](examples/custom_draw_text.rb)
5272
+
5273
+ Run with this command from the root of the project if you cloned the project:
5274
+
5275
+ ```
5276
+ ruby -r './lib/glimmer-dsl-libui' examples/custom_draw_text.rb
5277
+ ```
5278
+
5279
+ Run with this command if you installed the [Ruby gem](https://rubygems.org/gems/glimmer-dsl-libui):
5280
+
5281
+ ```
5282
+ ruby -r glimmer-dsl-libui -e "require 'examples/custom_draw_text'"
5283
+ ```
5284
+
5285
+ Mac
5286
+
5287
+ ![glimmer-dsl-libui-mac-custom-draw-text.png](images/glimmer-dsl-libui-mac-custom-draw-text.png)
5288
+ ![glimmer-dsl-libui-mac-custom-draw-text-changed.png](images/glimmer-dsl-libui-mac-custom-draw-text-changed.png)
5289
+
5290
+ Linux
5291
+
5292
+ ![glimmer-dsl-libui-linux-custom-draw-text.png](images/glimmer-dsl-libui-linux-custom-draw-text.png)
5293
+ ![glimmer-dsl-libui-linux-custom-draw-text-changed.png](images/glimmer-dsl-libui-linux-custom-draw-text-changed.png)
5294
+
5295
+ New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version:
5296
+
5297
+ ```ruby
5298
+ require 'glimmer-dsl-libui'
5299
+
5300
+ # Michael Ende (1929-1995)
5301
+ # The Neverending Story is a fantasy novel by German writer Michael Ende,
5302
+ # The English version, translated by Ralph Manheim, was published in 1983.
5303
+ class CustomDrawText
5304
+ include Glimmer
5305
+
5306
+ def launch
5307
+ window('Michael Ende (1929-1995) The Neverending Story', 600, 500) {
5308
+ margined true
5309
+
5310
+ vertical_box {
5311
+ form {
5312
+ stretchy false
5313
+
5314
+ font_button { |fb|
5315
+ label 'Font'
5316
+
5317
+ on_changed do
5318
+ @string.font = fb.font
5319
+ end
5320
+ }
5321
+ color_button { |cb|
5322
+ label 'Color'
5323
+
5324
+ on_changed do
5325
+ @string.color = cb.color
5326
+ end
5327
+ }
5328
+ color_button { |cb|
5329
+ label 'Background'
5330
+
5331
+ on_changed do
5332
+ @string.background = cb.color
5333
+ end
5334
+ }
5335
+ combobox { |c|
5336
+ label 'Underline'
5337
+ items Glimmer::LibUI.enum_symbols(:underline).map(&:to_s).map {|word| word.split('_').map(&:capitalize).join(' ')}
5338
+ selected 'None'
5339
+
5340
+ on_selected do
5341
+ @string.underline = c.selected_item.underscore
5342
+ end
5343
+ }
5344
+ }
5345
+
5346
+ area {
5347
+ text { # default arguments for x, y, and width are (0, 0, area_draw_params[:area_width])
5348
+ # align :left # default alignment
5349
+
5350
+ @string = string {
5351
+ ' At last Ygramul sensed that something was coming toward ' \
5352
+ 'her. With the speed of lightning, she turned about, confronting ' \
5353
+ 'Atreyu with an enormous steel-blue face. Her single eye had a ' \
5354
+ 'vertical pupil, which stared at Atreyu with inconceivable malignancy. ' \
5355
+ "\n\n" \
5356
+ ' A cry of fear escaped Bastian. ' \
5357
+ "\n\n" \
5358
+ ' A cry of terror passed through the ravine and echoed from ' \
5359
+ 'side to side. Ygramul turned her eye to left and right, to see if ' \
5360
+ 'someone else had arrived, for that sound could not have been ' \
5361
+ 'made by the boy who stood there as though paralyzed with ' \
5362
+ 'horror. ' \
5363
+ "\n\n" \
5364
+ ' Could she have heard my cry? Bastion wondered in alarm. ' \
5365
+ "But that's not possible. " \
5366
+ "\n\n" \
5367
+ ' And then Atreyu heard Ygramuls voice. It was very high ' \
5368
+ 'and slightly hoarse, not at all the right kind of voice for that ' \
5369
+ 'enormous face. Her lips did not move as she spoke. It was the ' \
5370
+ 'buzzing of a great swarm of hornets that shaped itself into ' \
5371
+ 'words. ' \
5372
+ "\n\n"
5373
+ }
5374
+ }
5375
+ }
5376
+ }
5377
+ }.show
5378
+ end
5379
+ end
5380
+
5381
+ CustomDrawText.new.launch
5382
+ ```
5383
+
5384
+ New [Glimmer DSL for LibUI](https://rubygems.org/gems/glimmer-dsl-libui) Version 2:
5385
+
5386
+ ```ruby
5387
+ require 'glimmer-dsl-libui'
5388
+
5389
+ # Michael Ende (1929-1995)
5390
+ # The Neverending Story is a fantasy novel by German writer Michael Ende,
5391
+ # The English version, translated by Ralph Manheim, was published in 1983.
5392
+ class CustomDrawText
5393
+ include Glimmer
5394
+
5395
+ def launch
5396
+ window('Michael Ende (1929-1995) The Neverending Story', 600, 500) {
5397
+ margined true
5398
+
5399
+ vertical_box {
5400
+ form {
5401
+ stretchy false
5402
+
5403
+ font_button { |fb|
5404
+ label 'Font'
5405
+
5406
+ on_changed do
5407
+ @font = fb.font
5408
+ @area.queue_redraw_all
5409
+ end
5410
+ }
5411
+ color_button { |cb|
5412
+ label 'Color'
5413
+
5414
+ on_changed do
5415
+ @color = cb.color
5416
+ @area.queue_redraw_all
5417
+ end
5418
+ }
5419
+ color_button { |cb|
5420
+ label 'Background'
5421
+
5422
+ on_changed do
5423
+ @background = cb.color
5424
+ @area.queue_redraw_all
5425
+ end
5426
+ }
5427
+ combobox { |c|
5428
+ label 'Underline'
5429
+ items Glimmer::LibUI.enum_symbols(:underline).map(&:to_s).map {|word| word.split('_').map(&:capitalize).join(' ')}
5430
+ selected 'None'
5431
+
5432
+ on_selected do
5433
+ @underline = c.selected_item.underscore
5434
+ @area.queue_redraw_all
5435
+ end
5436
+ }
5437
+ }
5438
+
5439
+ @area = area {
5440
+ on_draw do |area_draw_params|
5441
+ text { # default arguments for x, y, and width are (0, 0, area_draw_params[:area_width])
5442
+ # align :left # default alignment
5443
+
5444
+ @string = string {
5445
+ font @font unless @font.nil?
5446
+ color @color unless @color.nil?
5447
+ background @background unless @background.nil?
5448
+ underline @underline unless @underline.nil?
5449
+
5450
+ ' At last Ygramul sensed that something was coming toward ' \
5451
+ 'her. With the speed of lightning, she turned about, confronting ' \
5452
+ 'Atreyu with an enormous steel-blue face. Her single eye had a ' \
5453
+ 'vertical pupil, which stared at Atreyu with inconceivable malignancy. ' \
5454
+ "\n\n" \
5455
+ ' A cry of fear escaped Bastian. ' \
5456
+ "\n\n" \
5457
+ ' A cry of terror passed through the ravine and echoed from ' \
5458
+ 'side to side. Ygramul turned her eye to left and right, to see if ' \
5459
+ 'someone else had arrived, for that sound could not have been ' \
5460
+ 'made by the boy who stood there as though paralyzed with ' \
5461
+ 'horror. ' \
5462
+ "\n\n" \
5463
+ ' Could she have heard my cry? Bastion wondered in alarm. ' \
5464
+ "But that's not possible. " \
5465
+ "\n\n" \
5466
+ ' And then Atreyu heard Ygramuls voice. It was very high ' \
5467
+ 'and slightly hoarse, not at all the right kind of voice for that ' \
5468
+ 'enormous face. Her lips did not move as she spoke. It was the ' \
5469
+ 'buzzing of a great swarm of hornets that shaped itself into ' \
5470
+ 'words. ' \
5471
+ "\n\n"
5472
+ }
5473
+ }
5474
+ end
5475
+ }
5476
+ }
5477
+ }.show
5478
+ end
5479
+ end
5480
+
5481
+ CustomDrawText.new.launch
5482
+
5483
+ ```
5484
+
4942
5485
  ## Contributing to glimmer-dsl-libui
4943
5486
 
4944
5487
  - Check out the latest master to make sure the feature hasn't been
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.2
1
+ 0.2.6