#!/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 string
import urllib
import xml.etree.ElementTree
import ConfigParser

class ListStoreAfficher(gtk.ListStore):
	def __init__(self, config, fenetre):
		self.config = config
		gtk.ListStore.__init__(self, gobject.TYPE_BOOLEAN,gobject.TYPE_BOOLEAN, str, str)
		
		self.import_head()
		self.import_src_list(fenetre)
		
	def ajouter(self, activable, active, name, link = ""):
		if name == None or name == "":
			name = link
		if active == "False" or active == "false" or active == "0" or active == 0:
			active = False
		else:
			active = True
		self.append([activable, active, name, link])
	
	def get(self, iter):
		return (self[self.get_path(iter)][0], self[self.get_path(iter)][1], self[self.get_path(iter)][2], self[self.get_path(iter)][3])
	
	def import_head(self):
		self.ajouter(True, self.config.get('Display', 'DisplayInstalled'), "Installé", "displayinstalled")
		self.ajouter(True, self.config.get('Display', 'DisplayUninstalled'), "Non-installé", "displayuninstalled")
		self.ajouter(False, False, "-----------")
	
	def import_src_list(self, fenetre):
		erreur = []
		files = ""
		config = ConfigParser.ConfigParser()
		config.read('list/sources.list')
		for section in config.sections():
			url = config.get(section, 'link')
			display = config.get(section, 'display')
			name = section
			
			url = string.replace(url, "\n", "")
			file = string.replace(url, "http://", "")
			file = string.replace(file, "\\", "-")
			file = string.replace(file, "/", "-")
			file = string.replace(file, "|", "-")
			file = string.replace(file, ":", "-")
			file = string.replace(file, "*", "-")
			file = string.replace(file, "?", "-")
			file = string.replace(file, "\"", "-")
			file = string.replace(file, "<", "-")
			file = string.replace(file, ">", "-")
			try:
				urllib.urlretrieve(url, "list/" + file)
				self.ajouter(True, display, name, url)
			except IOError:
				erreur.append(url)
				if os.path.isfile("list/" + file):
					self.ajouter(True, display, name, url)

		if len(erreur) > 0:
			for i in range(len(erreur)):
				files += "\n" + erreur[i]
			DialogErreur = gtk.MessageDialog(fenetre, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, "Erreur: Impossible de télécharger les fichiers suivants:" + files)
			DialogErreur.run()
			DialogErreur.destroy()