samples/hello/hello_custom_shell.rb in glimmer-dsl-swt-4.18.4.3 vs samples/hello/hello_custom_shell.rb in glimmer-dsl-swt-4.18.4.4
- old
+ new
@@ -1,155 +1,155 @@
-# Copyright (c) 2007-2021 Andy Maleh
-#
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal in the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-#
-# The above copyright notice and this permission notice shall be
-# included in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-require 'date'
-
-# This class declares an `email_shell` custom shell, aka custom window (by convention)
-# Used to view an email message
-class EmailShell
- include Glimmer::UI::CustomShell
-
- # multiple options without default values
- options :date, :subject, :from, :message
-
- # single option with default value
- option :to, default: '"John Irwin" <john.irwin@example.com>'
-
- before_body {
- @swt_style |= swt(:shell_trim, :modeless)
- }
-
- body {
- # pass received swt_style through to shell to customize it (e.g. :dialog_trim for a blocking shell)
- shell(swt_style) {
- grid_layout(2, false)
-
- text subject
-
- label {
- text 'Date:'
- }
- label {
- text date
- }
-
- label {
- text 'From:'
- }
- label {
- text from
- }
-
- label {
- text 'To:'
- }
- label {
- text to
- }
-
- label {
- text 'Subject:'
- }
- label {
- text subject
- }
-
- label {
- layout_data(:fill, :fill, true, true) {
- horizontal_span 2
- vertical_indent 10
- }
-
- background :white
- text message
- }
- }
- }
-
-end
-
-class HelloCustomShell
- # including Glimmer enables the Glimmer DSL syntax, including auto-discovery of the `email_shell` custom widget
- include Glimmer
-
- Email = Struct.new(:date, :subject, :from, :message, keyword_init: true)
- EmailSystem = Struct.new(:emails, keyword_init: true)
-
- def initialize
- @email_system = EmailSystem.new(
- emails: [
- Email.new(date: DateTime.new(2029, 10, 22, 11, 3, 0).strftime('%F %I:%M %p'), subject: '3rd Week Report', from: '"Dianne Tux" <dianne.tux@example.com>', message: "Hello,\n\nI was wondering if you'd like to go over the weekly report sometime this afternoon.\n\nDianne"),
- Email.new(date: DateTime.new(2029, 10, 21, 8, 1, 0).strftime('%F %I:%M %p'), subject: 'Glimmer Upgrade v100.0', from: '"Robert McGabbins" <robert.mcgabbins@example.com>', message: "Team,\n\nWe are upgrading to Glimmer version 100.0.\n\nEveryone pull the latest code!\n\nRegards,\n\nRobert McGabbins"),
- Email.new(date: DateTime.new(2029, 10, 19, 16, 58, 0).strftime('%F %I:%M %p'), subject: 'Christmas Party', from: '"Lisa Ferreira" <lisa.ferreira@example.com>', message: "Merry Christmas,\n\nAll office Christmas Party arrangements have been set\n\nMake sure to bring a Secret Santa gift\n\nBest regards,\n\nLisa Ferreira"),
- Email.new(date: DateTime.new(2029, 10, 16, 9, 43, 0).strftime('%F %I:%M %p'), subject: 'Glimmer Upgrade v99.0', from: '"Robert McGabbins" <robert.mcgabbins@example.com>', message: "Team,\n\nWe are upgrading to Glimmer version 99.0.\n\nEveryone pull the latest code!\n\nRegards,\n\nRobert McGabbins"),
- Email.new(date: DateTime.new(2029, 10, 15, 11, 2, 0).strftime('%F %I:%M %p'), subject: '2nd Week Report', from: '"Dianne Tux" <dianne.tux@example.com>', message: "Hello,\n\nI was wondering if you'd like to go over the weekly report sometime this afternoon.\n\nDianne"),
- Email.new(date: DateTime.new(2029, 10, 2, 10, 34, 0).strftime('%F %I:%M %p'), subject: 'Glimmer Upgrade v98.0', from: '"Robert McGabbins" <robert.mcgabbins@example.com>', message: "Team,\n\nWe are upgrading to Glimmer version 98.0.\n\nEveryone pull the latest code!\n\nRegards,\n\nRobert McGabbins"),
- ]
- )
- end
-
- def launch
- shell {
- grid_layout
-
- text 'Hello, Custom Shell!'
-
- label {
- font height: 24, style: :bold
- text 'Emails:'
- }
-
- label {
- font height: 18
- text 'Click an email to view its message'
- }
-
- table {
- layout_data :fill, :fill, true, true
-
- table_column {
- text 'Date:'
- width 180
- }
- table_column {
- text 'Subject:'
- width 180
- }
- table_column {
- text 'From:'
- width 360
- }
-
- items bind(@email_system, :emails), column_properties(:date, :subject, :from)
-
- on_mouse_up { |event|
- email = event.table_item.get_data
- Thread.new do
- async_exec {
- email_shell(date: email.date, subject: email.subject, from: email.from, message: email.message).open
- }
- end
- }
- }
- }.open
- end
-end
-
-HelloCustomShell.new.launch
+# Copyright (c) 2007-2021 Andy Maleh
+#
+# Permission is hereby granted, free of charge, to any person obtaining
+# a copy of this software and associated documentation files (the
+# "Software"), to deal in the Software without restriction, including
+# without limitation the rights to use, copy, modify, merge, publish,
+# distribute, sublicense, and/or sell copies of the Software, and to
+# permit persons to whom the Software is furnished to do so, subject to
+# the following conditions:
+#
+# The above copyright notice and this permission notice shall be
+# included in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+require 'date'
+
+# This class declares an `email_shell` custom shell, aka custom window (by convention)
+# Used to view an email message
+class EmailShell
+ include Glimmer::UI::CustomShell
+
+ # multiple options without default values
+ options :date, :subject, :from, :message
+
+ # single option with default value
+ option :to, default: '"John Irwin" <john.irwin@example.com>'
+
+ before_body {
+ @swt_style |= swt(:shell_trim, :modeless)
+ }
+
+ body {
+ # pass received swt_style through to shell to customize it (e.g. :dialog_trim for a blocking shell)
+ shell(swt_style) {
+ grid_layout(2, false)
+
+ text subject
+
+ label {
+ text 'Date:'
+ }
+ label {
+ text date
+ }
+
+ label {
+ text 'From:'
+ }
+ label {
+ text from
+ }
+
+ label {
+ text 'To:'
+ }
+ label {
+ text to
+ }
+
+ label {
+ text 'Subject:'
+ }
+ label {
+ text subject
+ }
+
+ label {
+ layout_data(:fill, :fill, true, true) {
+ horizontal_span 2
+ vertical_indent 10
+ }
+
+ background :white
+ text message
+ }
+ }
+ }
+
+end
+
+class HelloCustomShell
+ # including Glimmer enables the Glimmer DSL syntax, including auto-discovery of the `email_shell` custom widget
+ include Glimmer
+
+ Email = Struct.new(:date, :subject, :from, :message, keyword_init: true)
+ EmailSystem = Struct.new(:emails, keyword_init: true)
+
+ def initialize
+ @email_system = EmailSystem.new(
+ emails: [
+ Email.new(date: DateTime.new(2029, 10, 22, 11, 3, 0).strftime('%F %I:%M %p'), subject: '3rd Week Report', from: '"Dianne Tux" <dianne.tux@example.com>', message: "Hello,\n\nI was wondering if you'd like to go over the weekly report sometime this afternoon.\n\nDianne"),
+ Email.new(date: DateTime.new(2029, 10, 21, 8, 1, 0).strftime('%F %I:%M %p'), subject: 'Glimmer Upgrade v100.0', from: '"Robert McGabbins" <robert.mcgabbins@example.com>', message: "Team,\n\nWe are upgrading to Glimmer version 100.0.\n\nEveryone pull the latest code!\n\nRegards,\n\nRobert McGabbins"),
+ Email.new(date: DateTime.new(2029, 10, 19, 16, 58, 0).strftime('%F %I:%M %p'), subject: 'Christmas Party', from: '"Lisa Ferreira" <lisa.ferreira@example.com>', message: "Merry Christmas,\n\nAll office Christmas Party arrangements have been set\n\nMake sure to bring a Secret Santa gift\n\nBest regards,\n\nLisa Ferreira"),
+ Email.new(date: DateTime.new(2029, 10, 16, 9, 43, 0).strftime('%F %I:%M %p'), subject: 'Glimmer Upgrade v99.0', from: '"Robert McGabbins" <robert.mcgabbins@example.com>', message: "Team,\n\nWe are upgrading to Glimmer version 99.0.\n\nEveryone pull the latest code!\n\nRegards,\n\nRobert McGabbins"),
+ Email.new(date: DateTime.new(2029, 10, 15, 11, 2, 0).strftime('%F %I:%M %p'), subject: '2nd Week Report', from: '"Dianne Tux" <dianne.tux@example.com>', message: "Hello,\n\nI was wondering if you'd like to go over the weekly report sometime this afternoon.\n\nDianne"),
+ Email.new(date: DateTime.new(2029, 10, 2, 10, 34, 0).strftime('%F %I:%M %p'), subject: 'Glimmer Upgrade v98.0', from: '"Robert McGabbins" <robert.mcgabbins@example.com>', message: "Team,\n\nWe are upgrading to Glimmer version 98.0.\n\nEveryone pull the latest code!\n\nRegards,\n\nRobert McGabbins"),
+ ]
+ )
+ end
+
+ def launch
+ shell {
+ grid_layout
+
+ text 'Hello, Custom Shell!'
+
+ label {
+ font height: 24, style: :bold
+ text 'Emails:'
+ }
+
+ label {
+ font height: 18
+ text 'Click an email to view its message'
+ }
+
+ table {
+ layout_data :fill, :fill, true, true
+
+ table_column {
+ text 'Date:'
+ width 180
+ }
+ table_column {
+ text 'Subject:'
+ width 180
+ }
+ table_column {
+ text 'From:'
+ width 360
+ }
+
+ items bind(@email_system, :emails), column_properties(:date, :subject, :from)
+
+ on_mouse_up { |event|
+ email = event.table_item.get_data
+ Thread.new do
+ async_exec {
+ email_shell(date: email.date, subject: email.subject, from: email.from, message: email.message).open
+ }
+ end
+ }
+ }
+ }.open
+ end
+end
+
+HelloCustomShell.new.launch