Class: Schoolkeep::GuiClient

Inherits:
Object
  • Object
show all
Defined in:
lib/schoolkeep/gui_client.rb

Instance Method Summary collapse

Constructor Details

#initializeGuiClient

Returns a new instance of GuiClient.



6
7
8
9
10
11
12
13
14
# 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

Instance Method Details

#choose_templates_directory_buttonObject



51
52
53
54
55
56
57
58
59
60
61
62
63
64
# 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

#rootObject



16
17
18
19
20
21
22
23
24
25
26
# 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_startObject



74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# 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_stopObject



91
92
93
94
95
96
97
# 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_buttonObject



28
29
30
31
32
33
34
35
36
37
# 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_fieldObject



45
46
47
48
49
# 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_frameObject



39
40
41
42
43
# 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_serverObject



66
67
68
69
70
71
72
# File 'lib/schoolkeep/gui_client.rb', line 66

def toggle_server
  if @server
    server_stop
  else
    server_start
  end
end