#!/usr/bin/env ruby

def allremove_gtk(win)
  win.remove(win.child)
  table = Gtk::Table.new(3, 2, false) #縦、横

# メッセージ
  str="以前のDCAST実行時に作成されたファイルが残っています。\n下のボタンを押しファイル等を削除してから、次に進んでください。"
  dummy = ""
  label_show(1, 2, 0, 1, table, str, dummy) # 横始、横終、縦始、縦終

# イメージ
  image_show(0, 1, 0, 2, table) # 横始、横終、縦始、縦終

# RUNボタンの設定
  button = Gtk::Button.new(Gtk::Stock::EXECUTE)
  table.attach(button, 1, 2, 1, 2, Gtk::FILL, Gtk::FILL, 0, 10)

  button.signal_connect("clicked") do
    puts "./dcast-allremove"
    $pid = fork{exec("ruby ./dcast-allremove")}

    th = Thread.new {
      $dia.wait
    }

    $finish = false
    $cancel = false
    (0..2000).each {|i|
      if ($cancel)
        Process.kill("KILL", $pid)
        break
      end

      IO.popen("ps --no-headers " + $pid.to_s){|io|
        while line = io.gets
          $finish=true if line.split[2] == "Z+"
        end
      }
      break if ($finish)

      sleep(3)
    }

    Gtk.main_quit
    th.join
    $dia.finish if ($cancel) || ($finish)
  end

##############################
# main
##############################
  $dia = MyDialog.new

# 下のボタン
  frame = Gtk::Frame.new("DCAST")
  hbox = Gtk::HBox.new(false, 0)

  cancel_button = Gtk::Button.new(Gtk::Stock::QUIT)
  prev_button = Gtk::Button.new(Gtk::Stock::GO_BACK)
  next_button = Gtk::Button.new(Gtk::Stock::GO_FORWARD)

  hbox.pack_start(cancel_button, false, false, 10)
  hbox.pack_end(next_button, false, false, 0)
  hbox.pack_end(prev_button, false, false, 25)

  frame.add(hbox)
  table.attach(frame, 0, 2, 2, 3)

  cancel_button.signal_connect("clicked") {
    Gtk::main_quit
  }
  $filename="./dcast.conf"
  next_button.signal_connect("clicked") {
    if ($finish)
      unless FileTest.exist?($filename)
        first(win)
      else
        first_select(win)
      end
    end
  }

  win.set_title("Run DCAST")
  win.set_default_size(500,300)
  win.add(table)
  win.show_all
end


if __FILE__ == $0
  require "load"

  Gtk.init

  win = Gtk::Window.new
  win.signal_connect("destroy") {
    Gtk::main_quit
  }

  allremove_gtk(win)

  Gtk.main
end
