#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
import pygtk
if not sys.platform == 'win32':
	pygtk.require('2.0')
import gtk
import gobject
import os.path
import urllib
import xml.etree.ElementTree

class DescAppBox(gtk.VBox):
	def __init__(self, config):
		self.config = config
		gtk.VBox.__init__(self)
		self.HBox = gtk.HBox()
		self.set_border_width(2)
		
		self.VBoxHaut = gtk.VBox()
		
		self.HBBFramakey = gtk.HButtonBox()
		self.HBBFramakey.set_layout(gtk.BUTTONBOX_START)
		self.HBBFramasoft = gtk.HButtonBox()
		self.HBBFramasoft.set_layout(gtk.BUTTONBOX_START)
		self.HBBWebsite = gtk.HButtonBox()
		self.HBBWebsite.set_layout(gtk.BUTTONBOX_START)
		
		self.Icon = gtk.Image()
		self.Icon.set_padding(2, 2)
		self.App = gtk.Label("")
		self.App.set_padding(2, 2)
		self.App.set_alignment(0, 0.5)
		self.App.set_use_markup(True)
		self.Desc = gtk.Label("")
		self.Desc.set_padding(2, 2)
		self.Desc.set_line_wrap(True)
		self.Desc.set_use_markup(True)
		self.Desc.set_alignment(0, 0.5)
		self.LongDesc = gtk.Label("")
		self.LongDesc.set_padding(2, 2)
		self.LongDesc.set_line_wrap(True)
		self.LongDesc.set_use_markup(True)
		self.LongDesc.set_alignment(0, 0.5)
		self.FramakeyLink = gtk.LinkButton("http://www.framakey.org/", "Fiche Framakey")
		self.FramasoftLink = gtk.LinkButton("http://www.framasoft.net/", "Fiche Framasoft")
		self.Website = gtk.LinkButton("http://www.roromis.fr.nf/", "Site")
		self.Licence = gtk.Label("Licence: GPL")
		self.Licence.set_padding(2, 2)
		self.Licence.set_alignment(0, 0.5)
		self.Size = gtk.Label("Taille de l'archive: 0 Mo")
		self.Size.set_padding(2, 2)
		self.Size.set_alignment(0, 0.5)
		self.ZipSize = gtk.Label("Taille décompressée: 0 Mo")
		self.ZipSize.set_padding(2, 2)
		self.ZipSize.set_alignment(0, 0.5)
		
		self.VBoxHaut.pack_start(self.App, False, False)
		self.VBoxHaut.pack_start(self.Desc, False, False)
		
		self.HBox.pack_start(self.Icon, False, False)
		self.HBox.pack_start(self.VBoxHaut, True, True)
		
		self.pack_start(self.HBox, False, False)
		self.pack_start(self.LongDesc, False, False)
		
		self.HBBFramakey.pack_start(self.FramakeyLink, False, False)
		self.HBBFramasoft.pack_start(self.FramasoftLink, False, False)
		self.HBBWebsite.pack_start(self.Website, False, False)
		
		self.pack_start(self.HBBFramakey, False, False)
		self.pack_start(self.HBBFramasoft, False, False)
		self.pack_start(self.HBBWebsite, False, False)
		self.pack_start(self.Licence, False, False)
		self.pack_start(self.Size, False, False)
		self.pack_start(self.ZipSize, False, False)
	
	def display_app(self, app):
		infos = app.get()
		if infos['parentname'] != "" and infos['parentname'] != None:
			self.App.set_markup("<big><big><b>" + infos['parentname'] + "</b></big></big>")
			self.App.show()
		else:
			self.App.hide()
		
		if os.path.isfile(infos['icon']):
			self.Icon.set_from_file(infos['icon'])
			self.Icon.show()
		elif os.path.isfile("img/" + infos['name'] + ".png"):
				self.Icon.set_from_file("img/" + infos['name'] + ".png")
				self.Icon.show()
		else:
			self.Icon.hide()
			
		if infos['desc'] != "" and infos['desc'] != None:
			self.Desc.set_markup("<b>" + infos['desc'] + "</b>")
			self.Desc.show()
		else:
			self.Desc.hide()
		
		if infos['longdesc'] != "" and infos['longdesc'] != None:
			self.LongDesc.set_markup(infos['longdesc'])
			self.LongDesc.show()
		else:
			self.LongDesc.hide()
		
		if infos['framakey']!= "" and infos['framakey'] != None:
			self.FramakeyLink.set_uri(infos['framakey'])
			self.FramakeyLink.show()
		else:
			self.FramakeyLink.hide()
		

		if infos['framasoft'] != "" and infos['framasoft'] != None:
			self.FramasoftLink.set_uri(infos['framasoft'])
			self.FramasoftLink.show()
		else:
			self.FramasoftLink.hide()
		

		if infos['website'] != "" and infos['website'] != None:
			self.Website.set_uri(infos['website'])
			self.Website.show()
		else:
			self.Website.hide()
			
		if infos['licence'] != "" and infos['licence'] != None:
			self.Licence.set_markup("<b>Licence:</b> " + infos['licence'])
			self.Licence.show()
		else:
			self.Licence.hide()
			
		if infos['strsize'] != "" and infos['strsize'] != None:
			self.Size.set_markup("<b>Taille décompressée:</b> " + infos['strsize'])
			self.Size.show()
		else:
			self.Size.hide()
			
		if infos['strzipsize'] != "" and infos['strzipsize'] != None:
			self.ZipSize.set_markup("<b>Taille de l'archive:</b> " + infos['strzipsize'])
			self.ZipSize.show()
		else:
			self.ZipSize.hide()
		
	
	def import_xml(self, element):
		app = element.get("parentname")
		if app != "" and app != None:
			self.App.set_markup("<big><big><b>" + app + "</b></big></big>")
			self.App.show()
		else:
			self.App.hide()
		icon = element.find("icon")
		if icon != None:
			if icon.text != "" and icon.text != None:
				if os.path.isfile("img/" + app + ".png"):
					self.Icon.set_from_file("img/" + app + ".png")
					self.Icon.show()
				if not os.path.isfile("img/" + app + ".png"):
					try:
						urllib.urlretrieve(icon.text, "img/" + app + ".png")
						self.Icon.set_from_file("img/" + app + ".png")
						self.Icon.show()
					except:					
						self.Icon.hide()
			else:
				self.Icon.hide()
		else:
			self.Icon.hide()
			
		desc = element.find("desc")
		if desc != None:
			if desc.text != "" and desc.text != None:
				self.Desc.set_markup("<b>" + desc.text + "</b>")
				self.Desc.show()
			else:
				self.Desc.hide()
		else:
			self.Desc.hide()
		
		longdesc = element.find("longdesc")
		if longdesc != None:
			if longdesc.text != "" and longdesc.text != None:
				self.LongDesc.set_markup(longdesc.text)
				self.LongDesc.show()
			else:
				self.LongDesc.hide()
		else:
			self.LongDesc.hide()
		
		framakey = element.find("framakey")
		if framakey != None:
			if framakey.text != "" and framakey.text != None:
				self.FramakeyLink.set_uri(framakey.text)
				self.FramakeyLink.show()
			else:
				self.FramakeyLink.hide()
		else:
			self.FramakeyLink.hide()
		
		framasoft = element.find("framasoft")
		if framasoft != None:
			if framasoft.text != "" and framasoft.text != None:
				self.FramasoftLink.set_uri(framasoft.text)
				self.FramasoftLink.show()
			else:
				self.FramasoftLink.hide()
		else:
			self.FramasoftLink.hide()
		
		website = element.find("website")
		if website != None:
			if website.text != "" and website.text != None:
				self.Website.set_uri(website.text)
				self.Website.show()
			else:
				self.Website.hide()
		else:
			self.Website.hide()
			
		licence = element.find("licence")
		if licence != None:
			if licence.text != "" and licence.text != None:
				self.Licence.set_markup("<b>Licence:</b> " + licence.text)
				self.Licence.show()
			else:
				self.Licence.hide()
		else:
			self.Licence.hide()
			
		size = element.find("size")
		if size != None:
			if size.text != "" and size.text != None:
				self.Size.set_markup("<b>Taille décompressée:</b> " + size.text)
				self.Size.show()
			else:
				self.Size.hide()
		else:
			self.Size.hide()
			
		zipsize = element.find("zipsize")
		if zipsize != None:
			if zipsize.text != "" and zipsize.text != None:
				self.ZipSize.set_markup("<b>Taille de l'archive:</b> " + zipsize.text)
				self.ZipSize.show()
			else:
				self.ZipSize.hide()
		else:
			self.ZipSize.hide()

	def hide_all(self):
		self.Icon.hide()
		self.App.hide()
		self.Desc.hide()
		self.LongDesc.hide()
		self.FramakeyLink.hide()
		self.FramasoftLink.hide()
		self.Website.hide()
		self.Licence.hide()
		self.Size.hide()
		self.ZipSize.hide()
