#!/usr/bin/env python
#
######################
# Frontend for Picviz
######################
# (C) 2008 Sebastien Tricaud
#

# Python libs
import os
import sys
import time
import string

# QT
from PyQt4 import QtCore, QtGui


# Picviz
import picviz

# UI
from PicvizGui import axisgui, lines, defaults, selection, UiPicviz

ui = UiPicviz.Ui_MainWindow()
app = QtGui.QApplication(sys.argv)
window = QtGui.QMainWindow()
scene = QtGui.QGraphicsScene()
comboboxes = {}
image = 0

#class Timeout:
#	def __init__(self, last):
#		self.last_timeout = last
#
#	def canActivate(self, time):
#		if int(time) - self.last_timeout > 1:
#			print "update: %d-%d" % (int(time),self.last_timeout)
#		self.last_timeout = int(time)
#
#	def getTimeout(self):
#		return self.last_timeout
#
#	def updateTimeout(self):
#		self.last_timeout = int(time.time())

class PicvizApp(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.ui = UiPicviz.Ui_MainWindow()
        self.ui.setupUi(self)

def ComboIndexChange(widget):
	pass
#	print "foo"


if __name__ == "__main__":

	filter = None
	if len(sys.argv) < 2:
		pcvfile = QtGui.QFileDialog.getOpenFileName(None,
				"Open Picviz graph",
				"",
				"Picviz Files (*.pcv)")
	else:
		pcvfile = sys.argv[1]
		if len(sys.argv) > 2:
			filtertable = sys.argv[2:]
			filter = string.join(filtertable, " ")

	#picviz.Debug()
	image = picviz.ParseImage(str(pcvfile), filter)
	if not image:
		print "*** Could not create image. Exiting."
		sys.exit(1)

	ui.setupUi(window)
        window.setWindowTitle("Picviz %s Frontend [%s]" % (picviz.Version(), pcvfile))
	window.show()

	scene = QtGui.QGraphicsScene(ui.graphicsView)
	#ui.graphicsView.setRenderHint(QtGui.QPainter.Antialiasing)
	ui.graphicsView.setScene(scene)
	#scene.setSceneRect(0, 0, 875, 500)

	i = 0
	while i < image['axes_number']:
		combo = axisgui.AxisName(ui, window)
		combo.show()
		for axis in image['axes']:
			combo.setItemName(axis['label'],axis['id'])
		combo.setCurrentIndex(i)

		i = i + 1

	ui.horizontalSlider.setPageStep(1)
	ui.horizontalSlider.setMinimum(0)
	linenb = 0
	for line in image['lines']:
		linenb = linenb + 1
	ui.horizontalSlider.setMaximum(linenb)
	ui.horizontalSlider.setValue(linenb)

	ui.menubar.hide()

	axisgui.addAxes(image, scene, line)

	line = lines.Line(scene, image)
	line.addLines(linenb)

	window.connect(ui.horizontalSlider, QtCore.SIGNAL('valueChanged(int)'),
			line.update_lines_view)
	#addLines(window, image)

	sys.exit(app.exec_())

