"""
KSpread Kross Python Script.
Export to HTML File.
Description:
This script exports data from KSpread to a HTML file.
Author:
Sebastian Sauer 
Copyright:
Dual-licensed under LGPL v2+higher and the BSD license.
"""
import os, sys
try:
	from TQt import tqt
except (ImportError):
	raise Exception("Failed to import the required PyTQt python module.")
class Dialog(tqt.TQDialog):
	def __init__(self, scriptpath, parent):
		self.scriptpath = scriptpath
		import krosskspreadcore
		self.doc = krosskspreadcore.get("KSpreadDocument")
		from TQt import tqt
		tqt.TQDialog.__init__(self, parent, "Dialog", 1, tqt.TQt.WDestructiveClose)
		self.setCaption("Export to HTML File")
		layout = tqt.TQVBoxLayout(self)
		box = tqt.TQVBox(self)
		box.setMargin(10)
		box.setSpacing(10)
		layout.addWidget(box)
		sheetbox = tqt.TQHBox(box)
		sheetbox.setSpacing(6)
		sheetlabel = tqt.TQLabel("Sheet:",sheetbox)
		self.sheetcombo = tqt.TQComboBox(sheetbox)
		currentsheetname = self.doc.currentSheet().name()
		for sheetname in self.doc.sheetNames():
			self.sheetcombo.insertItem(sheetname)
			if sheetname == currentsheetname:
				self.sheetcombo.setCurrentItem(self.sheetcombo.count() - 1)
		sheetlabel.setBuddy(self.sheetcombo)
		sheetbox.setStretchFactor(self.sheetcombo,1)
		self.styles = {
			"Paper" :
				"html { background-color:#efefef; }"
				"body { background-color:#fafafa; color:#303030; margin:1em; padding:1em; border:#606060 1px solid; }"
			,
			"Plain" :
				"html { background-color:#ffffff; color:#000; }"
				"body { margin:1em; }"
			,
			"Seawater" :
				"html { background-color:#0000aa; }"
				"body { background-color:#000066; color:#efefff; margin:1em; padding:1em; border:#00f 1px solid; }"
				"h1 { color:#0000ff; }"
				"th { color:#6666ff; }"
			,
		}
		stylebox = tqt.TQHBox(box)
		stylebox.setSpacing(6)
		stylelabel = tqt.TQLabel("Style:",stylebox)
		self.stylecombo = tqt.TQComboBox(stylebox)
		stylenames = list(self.styles.keys())
		stylenames.sort()
		for stylename in stylenames:
			self.stylecombo.insertItem(stylename)
		stylelabel.setBuddy(self.stylecombo)
		stylebox.setStretchFactor(self.stylecombo,1)
		filebox = tqt.TQHBox(box)
		filebox.setSpacing(6)
		filelabel = tqt.TQLabel("File:",filebox)
		self.fileedit = tqt.TQLineEdit(self.getDefaultFile(),filebox)
		btn = tqt.TQPushButton("...",filebox)
		tqt.TQObject.connect(btn, tqt.TQ_SIGNAL("clicked()"),self.browseClicked)
		filelabel.setBuddy(self.fileedit)
		filebox.setStretchFactor(self.fileedit,1)
		btnbox = tqt.TQHBox(box)
		btnbox.setSpacing(6)
		okbtn = tqt.TQPushButton(btnbox)
		okbtn.setText("Export")
		okbtn.setDefault(True)
		tqt.TQObject.connect(okbtn,tqt.TQ_SIGNAL("clicked()"),self.startExport)
		cancelbtn = tqt.TQPushButton(btnbox)
		cancelbtn.setText("Cancel")
		tqt.TQObject.connect(cancelbtn,tqt.TQ_SIGNAL("clicked()"),self.close)
		box.setMinimumWidth(480)
	def browseClicked(self):
		from TQt import tqt
		filename = str( tqt.TQFileDialog.getSaveFileName(str(self.fileedit.text()),"*.htm *.html *.xhtml;;*", self) )
		if filename != "": self.fileedit.setText(filename)
	def getDefaultFile(self):
		import os
		try:
			homepath = os.getenv("HOME")
			if not homepath:
				import pwd
				user = os.getenv("USER") or os.getenv("LOGNAME")
				if not user:
					pwent = pwd.getpwuid(os.getuid())
				else:
					pwent = pwd.getpwnam(user)
				homepath = pwent[6]
		except (KeyError, ImportError):
			homepath = os.curdir
		return os.path.join(homepath, "kspreadexport.html")
	def startExport(self):
		from TQt import tqt
		sheetname = str( self.sheetcombo.currentText() )
		sheet = self.doc.sheetByName( sheetname )
		print("sheetname=%s sheet=%s" % (sheetname,sheet))
		filename = str( self.fileedit.text() )
		try:
			file = open(filename, "w")
		except IOError as xxx_todo_changeme:
			(errno, strerror) = xxx_todo_changeme.args
			tqt.TQMessageBox.critical(self,"Error","Failed to create HTML file \"%s\"
%s" % (filename,strerror))
			return
		file.write("\n")
		file.write("\n")
		file.write("\n")
		file.write("%s\n" % sheetname)
		file.write("\n")
		file.write("\n")
		file.write("%s
\n" % sheetname)
		file.write("\n")
		cell = sheet.firstCell()
		prevrow = -1
		while cell:
			#print "Cell col=%s row=%s value=%s" % (cell.column(),cell.row(),cell.value())
			row = cell.row()
			if row != prevrow:
				prevrow = row
				file.write("")
				file.write("| %s" % row)
			file.write(" | %s" % cell.value())
			cell = cell.nextCell()
			if cell == None or cell.row() != prevrow:
				file.write(" | 
\n")
		file.write("
\n")
		file.write("\n")
		file.close()
		self.close()
if __name__ == "__main__":
	scriptpath = os.getcwd()
	tqtapp = tqt.TQApplication(sys.argv)
else:
	scriptpath = os.path.dirname(__name__)
	tqtapp = tqt.tqApp
dialog = Dialog(scriptpath, tqtapp.mainWidget())
dialog.exec_loop()