class Schoolkeep::GuiClient

Public Class Methods

new() click to toggle source
# File lib/schoolkeep/gui_client.rb, line 6
def initialize
  choose_templates_directory_button
  templates_directory_field
  server_toggle_button

  if not defined?(Ocra)
    Tk.mainloop
  end
end

Public Instance Methods

choose_templates_directory_button() click to toggle source
# File lib/schoolkeep/gui_client.rb, line 51
def choose_templates_directory_button
  gui_client = self
  @choose_templates_directory_button ||= TkButton.new(templates_directory_frame) do
    text "Choose Templates Directory"
    command do
      dir = gui_client.templates_directory_field.get
      if dir == ""
        dir = ENV["HOME"]
      end
      gui_client.templates_directory_field.set Tk::chooseDirectory("initialdir" => dir)
    end
    pack "side" => "right"
  end
end
root() click to toggle source
# File lib/schoolkeep/gui_client.rb, line 16
def root
  @root ||= TkRoot.new do
    title "SchoolKeep Local Dev Server"
    minsize 400, 100
    iconphoto(
      *%w(144 72 57 16).map do |size|
        TkPhotoImage.new("file" => "media/sk-#{size}.gif")
      end
    )
  end
end
server_start() click to toggle source
# File lib/schoolkeep/gui_client.rb, line 74
def server_start
  templates_directory_field.state "readonly"
  choose_templates_directory_button.state "disabled"
  @server = Thread.new {
    server = Server.new(
      dir: templates_directory_field.get,
      quiet: true
    )
    begin
        server.start
    ensure
        server.shutdown
    end
  }
  server_toggle_button.text "Stop Server"
end
server_stop() click to toggle source
# File lib/schoolkeep/gui_client.rb, line 91
def server_stop
  @server.kill
  @server = nil
  server_toggle_button.text "Start Server"
  templates_directory_field.state "normal"
  choose_templates_directory_button.state "normal"
end
server_toggle_button() click to toggle source
# File lib/schoolkeep/gui_client.rb, line 28
def server_toggle_button
  gui_client = self
  @server_toggle_button ||= TkButton.new(root) do
    text "Start Server"
    command do
      gui_client.toggle_server
    end
    pack
  end
end
templates_directory_field() click to toggle source
# File lib/schoolkeep/gui_client.rb, line 45
def templates_directory_field
  @templates_directory_field ||= TkEntry.new(templates_directory_frame) do
    pack "side" => "left"
  end
end
templates_directory_frame() click to toggle source
# File lib/schoolkeep/gui_client.rb, line 39
def templates_directory_frame
  @templates_directory_frame ||= TkFrame.new(root) do
    pack "side" => "top"
  end
end
toggle_server() click to toggle source
# File lib/schoolkeep/gui_client.rb, line 66
def toggle_server
  if @server
    server_stop
  else
    server_start
  end
end