#!/usr/bin/env python2

import sys, os
from types import *
from qt import *

class iceCurCfg(QWidget):
	def __init__(self,parent = None,name = None):
		QWidget.__init__(self,parent,name)

		if name == None:
			self.setName("iceCurCfg")

		self.setCaption(self.trUtf8("IceCursor Configurator"))

		topLayout = QVBoxLayout(self,0,6,"Layout4")

		Layout1 = QHBox(self)

		self.lbSheme = QLabel(Layout1,"lbSheme")
		self.lbSheme.setText(self.trUtf8("Scheme:"))

		self.cbScheme = QComboBox(0,Layout1,"cbScheme")
		topLayout.addWidget(Layout1)

		Layout2 = QHBox(self,"Layout2")

		self.pbSave = QPushButton(Layout2,"pbSave")
		self.pbSave.setText(self.trUtf8("Save As..."))

		self.pbDel = QPushButton(Layout2,"pbDel")
		self.pbDel.setText(self.trUtf8("Delete"))
		topLayout.addWidget(Layout2)

		self.lvCursors = QListView(self,"lvCursors")
		self.lvCursors.addColumn(self.trUtf8("Cursor"))
		self.lvCursors.addColumn(self.trUtf8("Image"))
		#self.lvCursors.setSorting(-1)
		topLayout.addWidget(self.lvCursors)

		Layout5 = QHBox(self,"Layout5")
		
		self.pbBrowse = QPushButton(Layout5,"pbBrowse")
		self.pbBrowse.setText(self.trUtf8("Browse..."))
		self.pbDefault = QPushButton(Layout5,"pbDefault")
		self.pbDefault.setText(self.trUtf8("Default..."))
		topLayout.addWidget(Layout5)
		
		self.pbAbout = QPushButton(self ,"pbAbout")
		self.pbAbout.setText(self.trUtf8("About..."))
		topLayout.addWidget(self.pbAbout)

		Layout3 = QHBox(self,"Layout3")

		self.pbOk = QPushButton(Layout3,"pbOk")
		self.pbOk.setText(self.trUtf8("Ok"))

		self.pbCansel = QPushButton(Layout3,"pbCansel")
		self.pbCansel.setText(self.trUtf8("Cancel"))
		topLayout.addWidget(Layout3)

		self.connect(self.pbOk,SIGNAL("clicked()"),self.slotOk)
		self.connect(self.pbDel,SIGNAL("clicked()"),self.slotDel)
		self.connect(self.pbSave,SIGNAL("clicked()"),self.slotSave)
		self.connect(self.pbBrowse,SIGNAL("clicked()"),self.slotBrowse)
		self.connect(self.cbScheme,SIGNAL("highlighted(int)"),self.slotSchemeChanged)
		self.connect(self.pbCansel,SIGNAL("clicked()"), self.close)
		self.connect(self.pbAbout,SIGNAL("clicked()"),self.slotAbout)
		self.connect(self.pbDefault,SIGNAL("clicked()"),self.slotDefault)

		if os.getuid() == 0:
			res = QMessageBox.information(self, self.trUtf8("Information"),
				self.trUtf8("You are root.\n"
				"Press \'Ok\' button for working with global IceWM's cursor's dir\n"
				"and \'Cancel\' button for working with your private IceWM's dir."),
				QMessageBox.Ok, QMessageBox.Cancel)
		#if os.getuid() == 0
		else:
			res = 2		
		#else
		
		if res == 1:
			#You should correct this dir on your IceWM's global dir.
			self.icewmCfgDir = "/usr/local/share/icewm"
		#if res
		else:
			if os.environ.has_key("ICEWM_CFGDIR") == 1:
				self.icewmCfgDir = os.environ["ICEWM_CFGDIR"]
			else:
				self.icewmCfgDir = os.environ["HOME"] + "/.icewm"
			#else if os.environ.has_key("ICEWM_CFGDIR") == 1
			
		self.icewmCfgDir = self.icewmCfgDir + "/cursors"

		self.cursorNames = ["left", "move", "right", "sizeB", "sizeBL", "sizeBR",
							"sizeL", "sizeR", "sizeT", "sizeTL", "sizeTR"]
							
		self.loadCursors()
	#def __init__(self,parent = None,name = None)
	
	def slotOk(self):
		if os.access(self.icewmCfgDir, os.R_OK | os.W_OK) == 0:
			print "Create cursors dir"
			os.mkdir(self.icewmCfgDir)
		#if (os.access(self.icewmCfgDir, R_OK | W_OK) == 0) 
		curIt = self.lvCursors.firstChild()
		while curIt != None:
			curPixmap = curIt.pixmap(1)
			curName = "%s" % curIt.text(0)
			curFileName = self.icewmCfgDir + "/" + curName + ".xpm"
			if curPixmap != None:
				curPixmap.save(curFileName, "XPM")
			elif os.access(curFileName, os.F_OK) == 1:
				os.remove(curFileName)
			#else if curPixmap != None
			curIt = curIt.nextSibling()
		#while curIt != None
		if QMessageBox.information(self, self.trUtf8("Question"),
		   self.trUtf8("Do you want to restart IceWM?"),
		   QMessageBox.Yes, QMessageBox.No) == QMessageBox.Yes:
			   os.system("killall -HUP icewm")
	    #if QMessageBox
		self.close()
	#def slotOk(self):

	def slotSave(self):
		print "iceCurCfg.slotSave(): Not implemented yet"
	#def slotSave(self):

	def slotDel(self):
		print "iceCurCfg.slotDel(): Not implemented yet"
	#def slotDel(self):

	def slotSchemeChanged(self,a0):
		print "iceCurCfg.slotSchemeChanged(int): Not implemented yet"
	#def slotSchemeChanged(self,a0):
	
	def slotDefault(self):
		curIt = self.lvCursors.currentItem()
		image = QPixmap()
		curIt.setPixmap(1, image)
		curIt.setText(1, "Default")
	#def slotDefault(self):

	def slotBrowse(self):
		curIt = self.lvCursors.currentItem()
		curFile = QFileDialog.getOpenFileName(self.icewmCfgDir, "XPM images (*.xpm)",
		  self, "open file dlg", self.trUtf8("Choose a image for cursor "))
		if curFile.length() == 0:
			return
		#if curFile.length() == 0
		image = QPixmap(QImage(curFile))
		curIt.setPixmap(1, image)
		curIt.setText(1, "")
		if image.isNull() == 1:
			curIt.setText(1, "Default")
		#if image.isNull()
	#def slotBrowse(self):
	
	def slotAbout(self):
		QMessageBox.information(self, self.trUtf8("About"),
		   self.trUtf8("IceCursors Configurator 0.1\nCopyright (c) 2003 by Khohlov Vadim"),
		   QMessageBox.Ok)
	#def slotAbout(self):
	
	def loadCursors(self):
		#self.loadCursors.clear()
		for curName in self.cursorNames:
			fullCurName = self.icewmCfgDir + "/" + curName + ".xpm"
			image = QPixmap(QImage(fullCurName))
			curIt = QListViewItem(self.lvCursors, curName, "", "0")
			if image.isNull() == 1:
				curIt.setText(1, "Default")
			else:
				curIt.setPixmap(1, image)
			#else if image.isNull() == 1
		#for c in self.cursorNames
		self.lvCursors.setSelected(self.lvCursors.firstChild(), 1)
	#def loadCursors(self)
#class iceCurCfg(QWidget):

app = QApplication(sys.argv)

iceCurCfgApp = iceCurCfg()
app.setMainWidget(iceCurCfgApp)
iceCurCfgApp.show()
app.exec_loop()
