diff options
author | Jari Vetoniemi <jari.vetoniemi@indooratlas.com> | 2020-03-16 18:49:26 +0900 |
---|---|---|
committer | Jari Vetoniemi <jari.vetoniemi@indooratlas.com> | 2020-03-30 00:39:06 +0900 |
commit | fcbf63e62c627deae76c1b8cb8c0876c536ed811 (patch) | |
tree | 64cb17de3f41a2b6fef2368028fbd00349946994 /jni/ruby/ext/tk/sample/tkextlib/blt/calendar.rb |
Fresh start
Diffstat (limited to 'jni/ruby/ext/tk/sample/tkextlib/blt/calendar.rb')
-rw-r--r-- | jni/ruby/ext/tk/sample/tkextlib/blt/calendar.rb | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/jni/ruby/ext/tk/sample/tkextlib/blt/calendar.rb b/jni/ruby/ext/tk/sample/tkextlib/blt/calendar.rb new file mode 100644 index 0000000..86d3404 --- /dev/null +++ b/jni/ruby/ext/tk/sample/tkextlib/blt/calendar.rb @@ -0,0 +1,117 @@ +#!/usr/bin/env ruby + +require 'tk' +require 'tkextlib/blt' + +require 'date' + +dir = File.join(File.dirname(File.expand_path(__FILE__)), 'images') +file = File.join(dir, 'chalk.gif') +active = File.join(dir, 'rain.gif') + +texture1 = TkPhotoImage.new(:file=>file) +texture2 = TkPhotoImage.new(:file=>active) + +TkOption.add('*Tile', texture1) + +TkOption.add('*HighlightThickness', 0) +TkOption.add('*calendar.weekframe*Tile', texture2) +TkOption.add('*Calendar.Label.borderWidth', 0) +TkOption.add('*Calendar.Label.relief', :sunken) +TkOption.add('*Calendar.Frame.borderWidth', 2) +TkOption.add('*Calendar.Frame.relief', :raised) +TkOption.add('*Calendar.Label.font', 'Helvetica 11') +TkOption.add('*Calendar.Label.foreground', 'navyblue') +TkOption.add('*button.foreground', 'navyblue') +TkOption.add('*background', 'grey85') +TkOption.add('*Label.ipadX', 200) + +TkOption.add('*tile', texture2) + +class BLT_Calendar_sample + @@monthInfo = [ + nil, # dummy + ['January', 31], + ['February', 28], + ['March', 31], + ['April', 30], + ['May', 31], + ['June', 30], + ['July', 31], + ['August', 31], + ['Septembar', 30], + ['October', 31], + ['November', 30], + ['December', 31] + ] + + @@abbrDays = [ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ] + + def initialize() + today = Date.today + + if TkComm.bool(Tk.info(:commands, '.calendar')) + Tk.destroy('.calendar') + end + cal = Tk::BLT::Tile::Frame.new(:widgetname=>'.calendar', + :classname=>'Calendar', + :width=>'3i', :height=>'3i') + + mon = Tk::BLT::Tile::Label.new(cal, :font=>'Courier 14 bold', + :text=>"#{@@monthInfo[today.month][0]} " + + "#{today.year}") + Tk::BLT::Table.add(cal, mon, [1, 0], :cspan=>7, :pady=>10) + + week_f = Tk::BLT::Tile::Frame.new(cal, :widgetname=>'weekframe', + :relief=>:sunken, :borderwidth=>1) + Tk::BLT::Table.add(cal, week_f, [2, 0], :columnspan=>7, :fill=>:both) + + @@abbrDays.each_with_index{|dayName, idx| + Tk::BLT::Table.add(cal, + Tk::BLT::Tile::Label.new(cal, :text=>dayName, + :font=>'Helvetica 12'), + [2, idx], :pady=>2, :padx=>2) + } + + Tk::BLT::Table.itemconfigure(cal, 'c*', 'r2', :pad=>4) + + numDays = @@monthInfo[today.month][1] + week = 0 + cnt = 1 + + wkday = today.wday - ((today.day - 1) % 7) + wkday += 7 if wkday < 0 + + while cnt <= numDays + Tk::BLT::Table.add(cal, + Tk::BLT::Tile::Label.new(cal, :text=>cnt){ + self.configure(:borderwidth=>1, + :relief=>:sunken) if cnt == today.day + }, + [week+3, wkday], :fill=>:both, :ipadx=>10, :ipady=>4) + cnt += 1 + wkday += 1 + if wkday == 7 + week += 1 + wkday = 0 + end + end + + Tk::BLT::Tile::Frame.new(cal, :borderwidth=>1, :relief=>:sunken){|f| + Tk::BLT::Table.add(f, + Tk::BLT::Tile::Button.new(f, :widgetname=>'button', + :command=>proc{exit}, + :borderwidth=>2, + :text=>'Quit'), + :padx=>4, :pady=>4) + Tk::BLT::Table.add(cal, f, [week+4, 5], :cspan=>2, :pady=>4) + } + + Tk::BLT::Table.add(Tk.root, cal, :fill=>:both) + Tk::BLT::Table.itemconfigure(cal, 'r0', :resize=>:none) + end +end + +BLT_Calendar_sample.new + +Tk.mainloop |