⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tkfont.rb

📁 ruby的源代码
💻 RB
📖 第 1 页 / 共 2 页
字号:
  end  def configinfo_core_tk4x(font, option=nil)    # dummy    if option      ""    else      [['family',[]], ['size',[]], ['weight',[]], ['slant',[]], 	['underline',[]], ['overstrike',[]], ['charset',[]], 	['pointadjust',[]]]    end  end  def configure_core_tk8x(font, slot, value=None)    if slot.kind_of? Hash      tk_call 'font', 'configure', font, *hash_kv(slot)    else      tk_call 'font', 'configure', font, "-#{slot}", value    end  end  def configinfo_core_tk8x(font, option=nil)    if option == 'compound'      ""    elsif option      tk_call('font', 'configure', font, "-#{option}")    else      l = tk_split_simplelist(tk_call('font', 'configure', font))      r = []      while key=l.shift	if key == '-compound'	  l.shift	else	  r.push [key[1..-1], l.shift]	end      end      r    end  end  def delete_core_tk4x    Tk_FontNameTBL[@id] = nil    Tk_FontUseTBL.delete_if{|key,value| value == self}  end  def delete_core_tk8x    begin      tk_call('font', 'delete', @latinfont)    rescue    end    begin      tk_call('font', 'delete', @kanjifont)    rescue    end    begin      tk_call('font', 'delete', @compoundfont)    rescue    end    Tk_FontNameTBL[@id] = nil    Tk_FontUseTBL.delete_if{|key,value| value == self}  end  def latin_replace_core_tk4x(ltn)    create_latinfont_tk4x(ltn)    @compoundfont[0] = [@latinfont] if JAPANIZED_TK    @fontslot['font'] = @latinfont    Tk_FontUseTBL.dup.each{|w, fobj|      if self == fobj	begin	  if w.include?(';')	    win, tag = w.split(';')	    winobj = tk_tcl2ruby(win)#	    winobj.tagfont_configure(tag, {'font'=>@latinfont})	    if winobj.kind_of? TkText	      tk_call(win, 'tag', 'configure', tag, '-font', @latinfont)	    elsif winobj.kind_of? TkCanvas	      tk_call(win, 'itemconfigure', tag, '-font', @latinfont)	    elsif winobj.kind_of? TkMenu	      tk_call(win, 'entryconfigure', tag, '-font', @latinfont)	    else	      raise RuntimeError, "unknown widget type"	    end	  else#	    tk_tcl2ruby(w).font_configure('font'=>@latinfont)	    tk_call(w, 'configure', '-font', @latinfont)	  end	rescue	  Tk_FontUseTBL[w] = nil	end      end    }    self  end  def kanji_replace_core_tk4x(knj)    return self unless JAPANIZED_TK    create_kanjifont_tk4x(knj)    @compoundfont[1] = [@kanjifont]    @fontslot['kanjifont'] = @kanjifont    Tk_FontUseTBL.dup.each{|w, fobj|      if self == fobj	begin	  if w.include?(';')	    win, tag = w.split(';')	    winobj = tk_tcl2ruby(win)#	    winobj.tagfont_configure(tag, {'kanjifont'=>@kanjifont})	    if winobj.kind_of? TkText	      tk_call(win, 'tag', 'configure', tag, '-kanjifont', @kanjifont)	    elsif winobj.kind_of? TkCanvas	      tk_call(win, 'itemconfigure', tag, '-kanjifont', @kanjifont)	    elsif winobj.kind_of? TkMenu	      tk_call(win, 'entryconfigure', tag, '-kanjifont', @latinfont)	    else	      raise RuntimeError, "unknown widget type"	    end	  else#	    tk_tcl2ruby(w).font_configure('kanjifont'=>@kanjifont)	    tk_call(w, 'configure', '-kanjifont', @kanjifont)	  end	rescue	  Tk_FontUseTBL[w] = nil	end      end    }    self  end  def latin_replace_core_tk8x(ltn)    begin      tk_call('font', 'delete', @latinfont)    rescue    end    create_latinfont(ltn)    self  end  def kanji_replace_core_tk8x(knj)    begin      tk_call('font', 'delete', @kanjifont)    rescue    end    create_kanjifont(knj)    self  end  def measure_core_tk4x(window, text)    0  end  def measure_core_tk8x(window, text)    if window      number(tk_call('font', 'measure', @compoundfont, 		     '-displayof', window, text))    else      number(tk_call('font', 'measure', @compoundfont, text))    end  end  def metrics_core_tk4x(font, window, option=nil)    # dummy    if option      ""    else      [['ascent',[]], ['descent',[]], ['linespace',[]], ['fixed',[]]]    end  end  def metrics_core_tk8x(font, window, option=nil)    if option      if window	number(tk_call('font', 'metrics', font, 		       "-displayof", window, "-#{option}"))      else	number(tk_call('font', 'metrics', font, "-#{option}"))      end    else      l = tk_split_list(if window			  tk_call('font','metrics',font,"-displayof",window)			else			  tk_call('font','metrics',font)			end)      r = []      while key=l.shift	r.push [key[1..-1], l.shift.to_i]      end      r    end  end  ###################################  # private alias  ###################################  case (Tk::TK_VERSION)  when /^4\.*/    alias create_latinfont    create_latinfont_tk4x    alias create_kanjifont    create_kanjifont_tk4x    alias create_compoundfont create_compoundfont_tk4x    alias actual_core         actual_core_tk4x    alias configure_core      configure_core_tk4x    alias configinfo_core     configinfo_core_tk4x    alias delete_core         delete_core_tk4x    alias latin_replace_core  latin_replace_core_tk4x    alias kanji_replace_core  kanji_replace_core_tk4x    alias measure_core        measure_core_tk4x    alias metrics_core        metrics_core_tk4x  when /^8\.[0123]/    alias create_latinfont    create_latinfont_tk8x    alias create_kanjifont    create_kanjifont_tk8x    alias create_compoundfont create_compoundfont_tk8x    alias actual_core         actual_core_tk8x    alias configure_core      configure_core_tk8x    alias configinfo_core     configinfo_core_tk8x    alias delete_core         delete_core_tk8x    alias latin_replace_core  latin_replace_core_tk8x    alias kanji_replace_core  kanji_replace_core_tk8x    alias measure_core        measure_core_tk8x    alias metrics_core        metrics_core_tk8x  when /^8\.*/    alias create_latinfont    create_latinfont_tk8x    alias create_kanjifont    create_kanjifont_tk8x    alias create_compoundfont create_compoundfont_tk8x    alias actual_core         actual_core_tk8x    alias configure_core      configure_core_tk8x    alias configinfo_core     configinfo_core_tk8x    alias delete_core         delete_core_tk8x    alias latin_replace_core  latin_replace_core_tk8x    alias kanji_replace_core  kanji_replace_core_tk8x    alias measure_core        measure_core_tk8x    alias metrics_core        metrics_core_tk8x  end  ###################################  public  ###################################  def method_missing(id, *args)    name = id.id2name    case args.length    when 1      configure name, args[0]    when 0      begin	configinfo name      rescue	fail NameError, "undefined local variable or method `#{name}' for #{self.to_s}", error_at      end    else      fail NameError, "undefined method `#{name}' for #{self.to_s}", error_at    end  end  def call_font_configure(path, *args)    args += hash_kv(args.pop.update(@fontslot))    tk_call(*args)    Tk_FontUseTBL[path] = self    self  end  def used    ret = []    Tk_FontUseTBL.each{|key,value|      if key.include?(';')	win, tag = key.split(';')	winobj = tk_tcl2ruby(win)	if winobj.kind_of? TkText	  ret.push([winobj, winobj.tagid2obj(tag)])	elsif winobj.kind_of? TkCanvas	  if (tagobj = TkcTag.id2obj(winobj, tag)).kind_of? TkcTag	    ret.push([winobj, tagobj])	  elsif (tagobj = TkcItem.id2obj(tag)).kind_of? TkcItem	    ret.push([winobj, tagobj])	  else	    ret.push([winobj, tag])	  end	elsif winobj.kind_of? TkMenu	  ret.push([winobj, tag])	else	  ret.push([win, tag])	end      else	ret.push(tk_tcl2ruby(key)) if value == self      end    }    ret  end  def id    @id  end  def to_eval    font  end  def font    @compoundfont  end  def latin_font    @latinfont  end  def kanji_font    @kanjifont  end  def actual(option=nil)    actual_core(@compoundfont, nil, option)  end  def actual_displayof(window, option=nil)    window = '.' unless window    actual_core(@compoundfont, window, option)  end  def latin_actual(option=nil)    actual_core(@latinfont, nil, option)  end  def latin_actual_displayof(window, option=nil)    window = '.' unless window    actual_core(@latinfont, window, option)  end  def kanji_actual(option=nil)    #if JAPANIZED_TK    if @kanjifont != ""      actual_core(@kanjifont, nil, option)    else      actual_core_tk4x(nil, nil, option)    end  end  def kanji_actual_displayof(window, option=nil)    #if JAPANIZED_TK    if @kanjifont != ""      window = '.' unless window      actual_core(@kanjifont, window, option)    else      actual_core_tk4x(nil, window, option)    end  end  def [](slot)    configinfo slot  end  def []=(slot, val)    configure slot, val  end  def configure(slot, value=None)    configure_core(@compoundfont, slot, value)  end  def configinfo(slot=nil)    configinfo_core(@compoundfont, slot)  end  def delete    delete_core  end  def latin_configure(slot, value=None)    if JAPANIZED_TK      configure_core(@latinfont, slot, value)    else      configure(slot, value)    end  end  def latin_configinfo(slot=nil)    if JAPANIZED_TK      configinfo_core(@latinfont, slot)    else      configinfo(slot)    end  end  def kanji_configure(slot, value=None)    #if JAPANIZED_TK    if @kanjifont != ""      configure_core(@kanjifont, slot, value)      configure('size'=>configinfo('size')) # to reflect new configuration    else      #""      configure(slot, value)    end  end  def kanji_configinfo(slot=nil)    #if JAPANIZED_TK    if @kanjifont != ""      configinfo_core(@kanjifont, slot)    else      #[]      configinfo(slot)    end  end  def replace(ltn, knj)    latin_replace(ltn)    kanji_replace(knj)    self  end  def latin_replace(ltn)    latin_replace_core(ltn)    reset_pointadjust  end  def kanji_replace(knj)    kanji_replace_core(knj)    reset_pointadjust  end  def measure(text)    measure_core(nil, text)  end  def measure_displayof(window, text)    window = '.' unless window    measure_core(window, text)  end  def metrics(option=nil)    metrics_core(@compoundfont, nil, option)  end  def metrics_displayof(window, option=nil)    window = '.' unless window    metrics_core(@compoundfont, window, option)  end  def latin_metrics(option=nil)    metrics_core(@latinfont, nil, option)  end  def latin_metrics_displayof(window, option=nil)    window = '.' unless window    metrics_core(@latinfont, window, option)  end  def kanji_metrics(option=nil)    if JAPANIZED_TK      metrics_core(@kanjifont, nil, option)    else      metrics_core_tk4x(nil, nil, option)    end  end  def kanji_metrics_displayof(window, option=nil)    if JAPANIZED_TK      window = '.' unless window      metrics_core(@kanjifont, window, option)    else      metrics_core_tk4x(nil, window, option)    end  end  def reset_pointadjust    begin      if /^8\.*/ === Tk::TK_VERSION  && JAPANIZED_TK        configure('pointadjust' => latin_actual.assoc('size')[1].to_f /                                       kanji_actual.assoc('size')[1].to_f )      end    rescue    end    self  end  ###################################  # public alias  ###################################  alias ascii_font             latin_font  alias create_asciifont       create_latinfont  alias ascii_actual           latin_actual  alias ascii_actual_displayof latin_actual_displayof  alias ascii_configure        latin_configure  alias ascii_configinfo       latin_configinfo  alias ascii_replace          latin_replace  alias ascii_metrics          latin_metricsendmodule TkTreatTagFont  def font_configinfo    @parent.tagfont_configinfo(@id)  end#  alias font font_configinfo  def font_configure(slot)    @parent.tagfont_configure(@id, slot)  end  def latinfont_configure(ltn, keys=nil)    @parent.latintagfont_configure(@id, ltn, keys)  end  alias asciifont_configure latinfont_configure  def kanjifont_configure(knj, keys=nil)    @parent.kanjitagfont_configure(@id, ltn, keys)  end  def font_copy(window, wintag=nil)    @parent.tagfont_copy(@id, window, wintag)  end  def latinfont_copy(window, wintag=nil)    @parent.latintagfont_copy(@id, window, wintag)  end  alias asciifont_copy latinfont_copy  def kanjifont_copy(window, wintag=nil)    @parent.kanjitagfont_copy(@id, window, wintag)  endend

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -