#!/usr/bin/env python
# I, Danny Milosavljevic, hereby place this file into the public domain.

import pygtk
pygtk.require("2.0")
import gtk
import gobject
import sys
import gmonitor # Controls, StatusDialog.
import gdisplay # EventBox, View.

if __name__ == '__main__':
    from emulators.emulators import C128
    from optparse import OptionParser
    parser = OptionParser()
    parser.add_option("-t", "--tape", dest="tape",help="load from T64 tape image", metavar="TAPE")
    parser.add_option("-p", "--prg", dest="prg", help="load from PRG file", metavar="PRG")
    parser.add_option("-0", "--p00", dest="p00", help="load from P00 file", metavar="P00")
    parser.add_option("-8", "--drive-8", dest="drive8", help="connect drive 8 to D64 image", metavar="DRIVE8")
    parser.add_option("-u", "--unit-test", dest="unit_test", help="prepare for running unit test", metavar="UNIT_TEST")
    (options, args) = parser.parse_args()
    c_128 = C128()
    if options.tape:
        c_128.set_tape_image_name(options.tape, "T64")
        #c_128.set_tape_loader(loaders.t64.Loader.parse(open(options.tape, "rb"), options.tape))
    elif options.prg:
        c_128.set_tape_image_name(options.prg, "PRG")
    elif options.p00:
        c_128.set_tape_image_name(options.p00, "P00")
    if options.drive8:
        c_128.set_1541_image_name(8, options.drive8, "D64")
    if options.unit_test:
        c_128.prepare_unit_tests()
        #c_128.set_tape_loader(loaders.t64.Loader.parse(open(options.prg, "rb"), options.prg))
    #c_128.CPU.B_disasm = True
    for i in range(700000): # boot a little first
        c_128.iterate()
    controls = gmonitor.Controls(c_128)
    assert(isinstance(controls, gtk.VBox))
    graphics_view = gdisplay.View(c_128, controls)
    controls.graphics_view = graphics_view
    controls.set_timer()
    gtk.main()
