shoes/samples/good-reminder.rb in shoesgem-0.1424.0 vs shoes/samples/good-reminder.rb in shoesgem-0.1426.0
- old
+ new
@@ -1,174 +1,174 @@
-require 'yaml'
-
-Shoes.app :title => "A Gentle Reminder",
- :width => 370, :height => 560, :resizable => false do
-
- background white
- background tan, :height => 40
-
- caption "A Gentle Reminder", :margin => 8, :stroke => white
-
- stack :margin => 10, :margin_top => 50 do
- para "You need to", :stroke => red, :fill => yellow
-
- stack :margin_left => 5, :margin_right => 10, :width => 1.0, :height => 200, :scroll => true do
- background white
- border white, :strokewidth => 3
- @gui_todo = para
- end
-
- flow :margin_top => 10 do
- para "Remember to"
- @add = edit_line(:margin_left => 10, :width => 180)
- button("Add", :margin_left => 5) { add_todo(@add.text); @add.text = '' }
- end
- end
-
- stack :margin_top => 10 do
- background darkgray
- para strong('Completed'), :stroke => white
- end
-
- @gui_completed = stack :width => 1.0, :height => 207, :margin_right => 20
-
-
- def data_path
- if RUBY_PLATFORM =~ /win32/
- if ENV['USERPROFILE']
- if File.exist?(File.join(File.expand_path(ENV['USERPROFILE']), "Application Data"))
- user_data_directory = File.join File.expand_path(ENV['USERPROFILE']), "Application Data", "GentleReminder"
- else
- user_data_directory = File.join File.expand_path(ENV['USERPROFILE']), "GentleReminder"
- end
- else
- user_data_directory = File.join File.expand_path(Dir.getwd), "data"
- end
- else
- user_data_directory = File.expand_path(File.join("~", ".gentlereminder"))
- end
-
- unless File.exist?(user_data_directory)
- Dir.mkdir(user_data_directory)
- end
-
- return File.join(user_data_directory, "data.yaml")
- end
-
-
- def refresh_todo
- @gui_todo.replace *(
- @todo.map { |item|
- [ item, ' ' ] + [ link('Done') { complete_todo item } ] + [ ' ' ] +
- [ link('Forget it') { forget_todo item } ] + [ "\n" ]
- }.flatten
- )
- end
-
-
- def refresh
- refresh_todo
-
- @gui_completed.clear
-
- @gui_completed.append do
- background white
-
- @completed.keys.sort.reverse.each { |day|
- stack do
- background lightgrey
- para strong(Time.at(day).strftime('%B %d, %Y')), :stroke => white
- end
-
- stack do
- inscription *(
- @completed[day].map { |item|
- [ item ] + [ ' ' ] + [ link('Not Done') { undo_todo day, item } ] +
- (@completed[day].index(item) == @completed[day].length - 1 ? [ '' ] : [ "\n" ])
- }.flatten
- )
- end
-
- }
- end
- end
-
-
- def complete_todo(item)
- day = Time.today.to_i
-
- if @completed.keys.include? day
- @completed[day] << item
- else
- @completed[day] = [ item ]
- end
-
- @todo.delete(item)
-
- save
-
- refresh
- end
-
-
- def undo_todo(day, item)
- @completed[day].delete item
-
- @completed.delete(day) if @completed[day].empty?
-
- @todo << item unless @todo.include? item
-
- save
-
- refresh
- end
-
-
- def add_todo(item)
- item = item.strip
-
- return if item == ''
-
- if @todo.include? item
- alert('You have already added that to the list!')
- return
- end
-
- @todo << item
-
- save
-
- refresh_todo
- end
-
-
- def forget_todo(item)
- @todo.delete item
-
- save
-
- refresh_todo
- end
-
-
- def load
- if File.exist?(data_path)
- @todo, @completed = YAML::load(File.open(data_path, 'r'))
- else
- @todo = []
- @completed = {}
- end
-
- refresh
- end
-
-
- def save
- File.open(data_path, 'w') { |f|
- f.write [ @todo, @completed ].to_yaml
- }
- end
-
-
- load
-
-end
+require 'yaml'
+
+Shoes.app :title => "A Gentle Reminder",
+ :width => 370, :height => 560, :resizable => false do
+
+ background white
+ background tan, :height => 40
+
+ caption "A Gentle Reminder", :margin => 8, :stroke => white
+
+ stack :margin => 10, :margin_top => 50 do
+ para "You need to", :stroke => red, :fill => yellow
+
+ stack :margin_left => 5, :margin_right => 10, :width => 1.0, :height => 200, :scroll => true do
+ background white
+ border white, :strokewidth => 3
+ @gui_todo = para
+ end
+
+ flow :margin_top => 10 do
+ para "Remember to"
+ @add = edit_line(:margin_left => 10, :width => 180)
+ button("Add", :margin_left => 5) { add_todo(@add.text); @add.text = '' }
+ end
+ end
+
+ stack :margin_top => 10 do
+ background darkgray
+ para strong('Completed'), :stroke => white
+ end
+
+ @gui_completed = stack :width => 1.0, :height => 207, :margin_right => 20
+
+
+ def data_path
+ if RUBY_PLATFORM =~ /win32/
+ if ENV['USERPROFILE']
+ if File.exist?(File.join(File.expand_path(ENV['USERPROFILE']), "Application Data"))
+ user_data_directory = File.join File.expand_path(ENV['USERPROFILE']), "Application Data", "GentleReminder"
+ else
+ user_data_directory = File.join File.expand_path(ENV['USERPROFILE']), "GentleReminder"
+ end
+ else
+ user_data_directory = File.join File.expand_path(Dir.getwd), "data"
+ end
+ else
+ user_data_directory = File.expand_path(File.join("~", ".gentlereminder"))
+ end
+
+ unless File.exist?(user_data_directory)
+ Dir.mkdir(user_data_directory)
+ end
+
+ return File.join(user_data_directory, "data.yaml")
+ end
+
+
+ def refresh_todo
+ @gui_todo.replace *(
+ @todo.map { |item|
+ [ item, ' ' ] + [ link('Done') { complete_todo item } ] + [ ' ' ] +
+ [ link('Forget it') { forget_todo item } ] + [ "\n" ]
+ }.flatten
+ )
+ end
+
+
+ def refresh
+ refresh_todo
+
+ @gui_completed.clear
+
+ @gui_completed.append do
+ background white
+
+ @completed.keys.sort.reverse.each { |day|
+ stack do
+ background lightgrey
+ para strong(Time.at(day).strftime('%B %d, %Y')), :stroke => white
+ end
+
+ stack do
+ inscription *(
+ @completed[day].map { |item|
+ [ item ] + [ ' ' ] + [ link('Not Done') { undo_todo day, item } ] +
+ (@completed[day].index(item) == @completed[day].length - 1 ? [ '' ] : [ "\n" ])
+ }.flatten
+ )
+ end
+
+ }
+ end
+ end
+
+
+ def complete_todo(item)
+ day = Time.today.to_i
+
+ if @completed.keys.include? day
+ @completed[day] << item
+ else
+ @completed[day] = [ item ]
+ end
+
+ @todo.delete(item)
+
+ save
+
+ refresh
+ end
+
+
+ def undo_todo(day, item)
+ @completed[day].delete item
+
+ @completed.delete(day) if @completed[day].empty?
+
+ @todo << item unless @todo.include? item
+
+ save
+
+ refresh
+ end
+
+
+ def add_todo(item)
+ item = item.strip
+
+ return if item == ''
+
+ if @todo.include? item
+ alert('You have already added that to the list!')
+ return
+ end
+
+ @todo << item
+
+ save
+
+ refresh_todo
+ end
+
+
+ def forget_todo(item)
+ @todo.delete item
+
+ save
+
+ refresh_todo
+ end
+
+
+ def load
+ if File.exist?(data_path)
+ @todo, @completed = YAML::load(File.open(data_path, 'r'))
+ else
+ @todo = []
+ @completed = {}
+ end
+
+ refresh
+ end
+
+
+ def save
+ File.open(data_path, 'w') { |f|
+ f.write [ @todo, @completed ].to_yaml
+ }
+ end
+
+
+ load
+
+end