All pastes #207926 Raw Edit

Unnamed

public text v1 · immutable
#207926 ·published 2006-10-18 09:36 UTC
rendered paste body
#####  KNOPF  #####
class C_Knopf

  def initialize(farbe, mofarbe, cover, addtext, row, column)
    TkButton.new($r) {
         text cover
         bg farbe
         activebackground mofarbe
         width 2
         command proc { $disp.addtext addtext }
         grid(
               "row" => row,
               "column" => column,
               "padx" => 1,
               "pady" => 1,
               "ipadx" => 10,
               "ipady" => 1,
               "sticky" => "ew"
             )
    }
  end

end


#####  DISPLAY  #####
class C_Display

  def initialize
    @text = ""
    @textobj = TkLabel.new($r) {
                   width 32
                   borderwidth 4
                   relief 'sunken'
                   foreground 'black'
                   background '#CCFFCC'
                   anchor 'w'
                   grid(
                         "row" => 0,
                         "column" => 1,
                         "columnspan" => 4,
                         "ipady" => 5,
                         "sticky" => "ew"
                       )
               }
  end

  def gettext
    return @text
  end

  def addtext(text)
    exit                   if text == "%QUIT%"
    $rechner.solve(@text)  if text == "%SOLVE%"
    @text = ""             if text == "%CLEAR%"
    @text += text          if text[0].chr != "%"

    update
  end

  def settext(text)
    @text = text
  end

  def update
    @textobj.text = @text
    $r.update
  end

end


#####  RECHNER  #####
class C_Rechner

  def start
    $r = TkRoot.new{ title 'Taschenrechner' }
    $disp = C_Display.new

    C_Knopf.new('#FF6666', '#FFAAAA', 'Quit', '%QUIT%', 1, 1)
    C_Knopf.new('#FFDDDD', '#FFEEEE', 'Clear', '%CLEAR%', 1, 2)
    C_Knopf.new('#DDDDDD', '#EEEEEE', '(', '(', 1, 3)
    C_Knopf.new('#DDDDDD', '#EEEEEE', ')', ')', 1, 4)

    C_Knopf.new('#DDDDFF', '#EEEEFF', '7', '7', 2, 1)
    C_Knopf.new('#DDDDFF', '#EEEEFF', '8', '8', 2, 2)
    C_Knopf.new('#DDDDFF', '#EEEEFF', '9', '9', 2, 3)
    C_Knopf.new('#DDDDDD', '#EEEEEE', '+', '+', 2, 4)

    C_Knopf.new('#DDDDFF', '#EEEEFF', '4', '4', 3, 1)
    C_Knopf.new('#DDDDFF', '#EEEEFF', '5', '5', 3, 2)
    C_Knopf.new('#DDDDFF', '#EEEEFF', '6', '6', 3, 3)
    C_Knopf.new('#DDDDDD', '#EEEEEE', '-', '-', 3, 4)

    C_Knopf.new('#DDDDFF', '#EEEEFF', '1', '1', 4, 1)
    C_Knopf.new('#DDDDFF', '#EEEEFF', '2', '2', 4, 2)
    C_Knopf.new('#DDDDFF', '#EEEEFF', '3', '3', 4, 3)
    C_Knopf.new('#DDDDDD', '#EEEEEE', '*', '*', 4, 4)

    C_Knopf.new('#DDDDDD', '#EEEEEE', '.', '.', 5, 1)
    C_Knopf.new('#DDDDFF', '#EEEEFF', '0', '0', 5, 2)
    C_Knopf.new('#DDDDDD', '#EEEEEE', '=', '%SOLVE%', 5, 3)
    C_Knopf.new('#DDDDDD', '#EEEEEE', '/', '/', 5, 4)

    Tk.mainloop
  end

  def solve(text)
    ret = eval("#{text}").to_s
    $disp.settext(ret)
  end

end