PageRenderTime 26ms CodeModel.GetById 18ms RepoModel.GetById 1ms app.codeStats 0ms

/src/ruby-1.9.1-p0/ext/tk/lib/tk/autoload.rb

https://github.com/srirammca53/update_status
Ruby | 414 lines | 249 code | 115 blank | 50 comment | 12 complexity | bff8eb7604ef657a3638da6c1e1f73e5 MD5 | raw file
  1. #
  2. # autoload
  3. #
  4. ############################################
  5. # geometry manager
  6. module Tk
  7. autoload :Grid, 'tk/grid'
  8. def Grid(*args); TkGrid.configure(*args); end
  9. autoload :Pack, 'tk/pack'
  10. def Pack(*args); TkPack.configure(*args); end
  11. autoload :Place, 'tk/place'
  12. def Place(*args); TkPlace.configure(*args); end
  13. end
  14. autoload :TkGrid, 'tk/grid'
  15. def TkGrid(*args); TkGrid.configure(*args); end
  16. autoload :TkPack, 'tk/pack'
  17. def TkPack(*args); TkPack.configure(*args); end
  18. autoload :TkPlace, 'tk/place'
  19. def TkPlace(*args); TkPlace.configure(*args); end
  20. ############################################
  21. # classes on Tk module
  22. module Tk
  23. autoload :Button, 'tk/button'
  24. autoload :Canvas, 'tk/canvas'
  25. autoload :CheckButton, 'tk/checkbutton'
  26. autoload :Checkbutton, 'tk/checkbutton'
  27. autoload :Entry, 'tk/entry'
  28. autoload :Frame, 'tk/frame'
  29. autoload :Label, 'tk/label'
  30. autoload :LabelFrame, 'tk/labelframe'
  31. autoload :Labelframe, 'tk/labelframe'
  32. autoload :Listbox, 'tk/listbox'
  33. autoload :Menu, 'tk/menu'
  34. autoload :MenuClone, 'tk/menu'
  35. autoload :CloneMenu, 'tk/menu'
  36. autoload :SystemMenu, 'tk/menu'
  37. autoload :SysMenu_Help, 'tk/menu'
  38. autoload :SysMenu_System, 'tk/menu'
  39. autoload :SysMenu_Apple, 'tk/menu'
  40. autoload :Menubutton, 'tk/menu'
  41. autoload :MenuButton, 'tk/menu'
  42. autoload :OptionMenubutton, 'tk/menu'
  43. autoload :OptionMenBbutton, 'tk/menu'
  44. autoload :Message, 'tk/message'
  45. autoload :PanedWindow, 'tk/panedwindow'
  46. autoload :Panedwindow, 'tk/panedwindow'
  47. autoload :RadioButton, 'tk/radiobutton'
  48. autoload :Radiobutton, 'tk/radiobutton'
  49. autoload :Root, 'tk/root'
  50. autoload :Scale, 'tk/scale'
  51. autoload :Scrollbar, 'tk/scrollbar'
  52. autoload :XScrollbar, 'tk/scrollbar'
  53. autoload :YScrollbar, 'tk/scrollbar'
  54. autoload :Spinbox, 'tk/spinbox'
  55. autoload :Text, 'tk/text'
  56. autoload :Toplevel, 'tk/toplevel'
  57. end
  58. ############################################
  59. # sub-module of Tk
  60. module Tk
  61. autoload :Clock, 'tk/clock'
  62. autoload :OptionObj, 'tk/optionobj'
  63. autoload :X_Scrollable, 'tk/scrollable'
  64. autoload :Y_Scrollable, 'tk/scrollable'
  65. autoload :Scrollable, 'tk/scrollable'
  66. autoload :Wm, 'tk/wm'
  67. autoload :Wm_for_General, 'tk/wm'
  68. autoload :MacResource, 'tk/macpkg'
  69. autoload :WinDDE, 'tk/winpkg'
  70. autoload :WinRegistry, 'tk/winpkg'
  71. autoload :ValidateConfigure, 'tk/validation'
  72. autoload :ItemValidateConfigure, 'tk/validation'
  73. autoload :EncodedString, 'tk/encodedstr'
  74. def Tk.EncodedString(str, enc = nil); Tk::EncodedString.new(str, enc); end
  75. autoload :BinaryString, 'tk/encodedstr'
  76. def Tk.BinaryString(str); Tk::BinaryString.new(str); end
  77. autoload :UTF8_String, 'tk/encodedstr'
  78. def Tk.UTF8_String(str); Tk::UTF8_String.new(str); end
  79. end
  80. ############################################
  81. # toplevel classes/modules (fixed)
  82. autoload :TkBgError, 'tk/bgerror'
  83. autoload :TkBindTag, 'tk/bindtag'
  84. autoload :TkBindTagAll, 'tk/bindtag'
  85. autoload :TkDatabaseClass, 'tk/bindtag'
  86. autoload :TkConsole, 'tk/console'
  87. autoload :TkcItem, 'tk/canvas'
  88. autoload :TkcArc, 'tk/canvas'
  89. autoload :TkcBitmap, 'tk/canvas'
  90. autoload :TkcImage, 'tk/canvas'
  91. autoload :TkcLine, 'tk/canvas'
  92. autoload :TkcOval, 'tk/canvas'
  93. autoload :TkcPolygon, 'tk/canvas'
  94. autoload :TkcRectangle, 'tk/canvas'
  95. autoload :TkcText, 'tk/canvas'
  96. autoload :TkcWindow, 'tk/canvas'
  97. autoload :TkcTagAccess, 'tk/canvastag'
  98. autoload :TkcTag, 'tk/canvastag'
  99. autoload :TkcTagString, 'tk/canvastag'
  100. autoload :TkcNamedTag, 'tk/canvastag'
  101. autoload :TkcTagAll, 'tk/canvastag'
  102. autoload :TkcTagCurrent, 'tk/canvastag'
  103. autoload :TkcTagGroup, 'tk/canvastag'
  104. autoload :TkClipboard, 'tk/clipboard'
  105. autoload :TkComposite, 'tk/composite'
  106. autoload :TkConsole, 'tk/console'
  107. autoload :TkDialog, 'tk/dialog'
  108. autoload :TkDialog2, 'tk/dialog'
  109. autoload :TkDialogObj, 'tk/dialog'
  110. autoload :TkWarning, 'tk/dialog'
  111. autoload :TkWarning2, 'tk/dialog'
  112. autoload :TkWarningObj, 'tk/dialog'
  113. autoload :TkEvent, 'tk/event'
  114. autoload :TkFont, 'tk/font'
  115. autoload :TkNamedFont, 'tk/font'
  116. autoload :TkImage, 'tk/image'
  117. autoload :TkBitmapImage, 'tk/image'
  118. autoload :TkPhotoImage, 'tk/image'
  119. autoload :TkItemConfigMethod, 'tk/itemconfig'
  120. autoload :TkTreatItemFont, 'tk/itemfont'
  121. autoload :TkKinput, 'tk/kinput'
  122. autoload :TkSystemMenu, 'tk/menu'
  123. autoload :TkMenubar, 'tk/menubar'
  124. autoload :TkMenuSpec, 'tk/menuspec'
  125. autoload :TkManageFocus, 'tk/mngfocus'
  126. autoload :TkMsgCatalog, 'tk/msgcat'
  127. autoload :TkMsgCat, 'tk/msgcat'
  128. autoload :TkNamespace, 'tk/namespace'
  129. autoload :TkOptionDB, 'tk/optiondb'
  130. autoload :TkOption, 'tk/optiondb'
  131. autoload :TkResourceDB, 'tk/optiondb'
  132. autoload :TkPackage, 'tk/package'
  133. autoload :TkPalette, 'tk/palette'
  134. autoload :TkRoot, 'tk/root'
  135. autoload :TkScrollbox, 'tk/scrollbox'
  136. autoload :TkSelection, 'tk/selection'
  137. autoload :TkTreatTagFont, 'tk/tagfont'
  138. autoload :TkTextImage, 'tk/textimage'
  139. autoload :TktImage, 'tk/textimage'
  140. autoload :TkTextMark, 'tk/textmark'
  141. autoload :TkTextNamedMark, 'tk/textmark'
  142. autoload :TkTextMarkInsert, 'tk/textmark'
  143. autoload :TkTextMarkCurrent, 'tk/textmark'
  144. autoload :TkTextMarkAnchor, 'tk/textmark'
  145. autoload :TktMark, 'tk/textmark'
  146. autoload :TktNamedMark, 'tk/textmark'
  147. autoload :TktMarkInsert, 'tk/textmark'
  148. autoload :TktMarkCurrent, 'tk/textmark'
  149. autoload :TktMarkAnchor, 'tk/textmark'
  150. autoload :TkTextTag, 'tk/texttag'
  151. autoload :TkTextNamedTag, 'tk/texttag'
  152. autoload :TkTextTagSel, 'tk/texttag'
  153. autoload :TktTag, 'tk/texttag'
  154. autoload :TktNamedTag, 'tk/texttag'
  155. autoload :TktTagSel, 'tk/texttag'
  156. autoload :TkTextWindow, 'tk/textwindow'
  157. autoload :TktWindow, 'tk/textwindow'
  158. autoload :TkAfter, 'tk/timer'
  159. autoload :TkTimer, 'tk/timer'
  160. autoload :TkRTTimer, 'tk/timer'
  161. autoload :TkTextWin, 'tk/txtwin_abst'
  162. autoload :TkValidation, 'tk/validation'
  163. autoload :TkValidateCommand, 'tk/validation'
  164. autoload :TkVariable, 'tk/variable'
  165. autoload :TkVarAccess, 'tk/variable'
  166. autoload :TkVirtualEvent, 'tk/virtevent'
  167. autoload :TkNamedVirtualEvent,'tk/virtevent'
  168. autoload :TkWinfo, 'tk/winfo'
  169. autoload :TkXIM, 'tk/xim'
  170. ############################################
  171. # toplevel classes/modules (switchable)
  172. module Tk
  173. @TOPLEVEL_ALIAS_TABLE = {}
  174. @TOPLEVEL_ALIAS_TABLE[:Tk] = {
  175. :TkButton => 'tk/button',
  176. :TkCanvas => 'tk/canvas',
  177. :TkCheckButton => 'tk/checkbutton',
  178. :TkCheckbutton => 'tk/checkbutton',
  179. # :TkDialog => 'tk/dialog',
  180. # :TkDialog2 => 'tk/dialog',
  181. # :TkDialogObj => 'tk/dialog',
  182. # :TkWarning => 'tk/dialog',
  183. # :TkWarning2 => 'tk/dialog',
  184. # :TkWarningObj => 'tk/dialog',
  185. :TkEntry => 'tk/entry',
  186. :TkFrame => 'tk/frame',
  187. :TkLabel => 'tk/label',
  188. :TkLabelFrame => 'tk/labelframe',
  189. :TkLabelframe => 'tk/labelframe',
  190. :TkListbox => 'tk/listbox',
  191. :TkMacResource => 'tk/macpkg',
  192. :TkMenu => 'tk/menu',
  193. :TkMenuClone => 'tk/menu',
  194. :TkCloneMenu => 'tk/menu',
  195. # :TkSystemMenu => 'tk/menu',
  196. :TkSysMenu_Help => 'tk/menu',
  197. :TkSysMenu_System => 'tk/menu',
  198. :TkSysMenu_Apple => 'tk/menu',
  199. :TkMenubutton => 'tk/menu',
  200. :TkMenuButton => 'tk/menu',
  201. :TkOptionMenubutton => 'tk/menu',
  202. :TkOptionMenuButton => 'tk/menu',
  203. :TkMessage => 'tk/message',
  204. :TkPanedWindow => 'tk/panedwindow',
  205. :TkPanedwindow => 'tk/panedwindow',
  206. :TkRadioButton => 'tk/radiobutton',
  207. :TkRadiobutton => 'tk/radiobutton',
  208. # :TkRoot => 'tk/root',
  209. :TkScale => 'tk/scale',
  210. :TkScrollbar => 'tk/scrollbar',
  211. :TkXScrollbar => 'tk/scrollbar',
  212. :TkYScrollbar => 'tk/scrollbar',
  213. :TkSpinbox => 'tk/spinbox',
  214. :TkText => 'tk/text',
  215. :TkToplevel => 'tk/toplevel',
  216. :TkWinDDE => 'tk/winpkg',
  217. :TkWinRegistry => 'tk/winpkg',
  218. }
  219. @TOPLEVEL_ALIAS_OWNER = {}
  220. @TOPLEVEL_ALIAS_SETUP_PROC = {}
  221. @current_default_widget_set = nil
  222. end
  223. ############################################
  224. # methods to control default widget set
  225. ############################################
  226. class << Tk
  227. def default_widget_set
  228. @current_default_widget_set
  229. end
  230. def default_widget_set=(target)
  231. target = target.to_sym
  232. return target if target == @current_default_widget_set
  233. if (cmd = @TOPLEVEL_ALIAS_SETUP_PROC[target])
  234. cmd.call(target)
  235. end
  236. _replace_toplevel_aliases(target)
  237. end
  238. def __set_toplevel_aliases__(target, obj, *symbols)
  239. @TOPLEVEL_ALIAS_TABLE[target = target.to_sym] ||= {}
  240. symbols.each{|sym|
  241. @TOPLEVEL_ALIAS_TABLE[target][sym = sym.to_sym] = obj
  242. # if @current_default_widget_set == target
  243. if @TOPLEVEL_ALIAS_OWNER[sym] == target
  244. Object.class_eval{remove_const sym} if Object.const_defined?(sym)
  245. Object.const_set(sym, obj)
  246. end
  247. }
  248. end
  249. ###################################
  250. private
  251. def _replace_toplevel_aliases(target)
  252. # check already autoloaded
  253. if (table = @TOPLEVEL_ALIAS_TABLE[current = @current_default_widget_set])
  254. table.each{|sym, file|
  255. if !Object.autoload?(sym) && Object.const_defined?(sym) &&
  256. @TOPLEVEL_ALIAS_TABLE[current][sym].kind_of?(String)
  257. # autoload -> class
  258. @TOPLEVEL_ALIAS_TABLE[current][sym] = Object.const_get(sym)
  259. end
  260. }
  261. end
  262. # setup autoloads
  263. @TOPLEVEL_ALIAS_TABLE[target].each{|sym, file|
  264. Object.class_eval{remove_const sym} if Object.const_defined?(sym)
  265. if file.kind_of?(String)
  266. # file => autoload target file
  267. Object.autoload(sym, file)
  268. else
  269. # file => loaded class object
  270. Object.const_set(sym, file)
  271. end
  272. @TOPLEVEL_ALIAS_OWNER[sym] = target
  273. }
  274. # update current alias
  275. @current_default_widget_set = target
  276. end
  277. end
  278. ############################################
  279. # setup default widget set => :Tk
  280. Tk.default_widget_set = :Tk
  281. ############################################
  282. # depend on the version of Tcl/Tk
  283. # major, minor, type, patchlevel = TclTkLib.get_version
  284. ############################################
  285. # Ttk (Tile) support
  286. =begin
  287. if major > 8 ||
  288. (major == 8 && minor > 5) ||
  289. (major == 8 && minor == 5 && type >= TclTkLib::RELEASE_TYPE::BETA)
  290. # Tcl/Tk 8.5 beta or later
  291. Object.autoload :Ttk, 'tkextlib/tile'
  292. Tk.autoload :Tile, 'tkextlib/tile'
  293. require 'tk/ttk_selector'
  294. end
  295. =end
  296. Object.autoload :Ttk, 'tkextlib/tile'
  297. Tk.autoload :Tile, 'tkextlib/tile'
  298. require 'tk/ttk_selector'