class Quiz_Data_Builder(object):
    """
    Creates the treestore and the list of quizzes. This is then used to create
    a quiz_data-object.
    """
    def __init__(self):
        self.treestore = TreeStore(str, str, bool)
        self.quiz_list = []
        self.last_added_section = None

    def append_section(self, title):
        """
        Adds a new section to the treestore. The given "title" must be a either
        a list with maximum 2 title for the question and answer or a str.
        """
        if len(title) < 2:
            title.append("")
        elif isinstance(title, str):
            title = [title, ""]
        column = []; column.extend(title)
        column.append(True)
        self.last_added_section = self.treestore.append(None, column)

    def append_question(self, question, is_selected=True):
        """
        Add a new question/answer-pair to the current section 
        (last_added_section).
        """
        self.quiz_list.append(question)
        column = []; column.extend(question)
        column.append(is_selected)
        self.treestore.append(self.last_added_section, column)
class Quiz_Data_Builder(object):
    """
    Creates the treestore and the list of quizzes. This is then used to create
    a quiz_data-object.
    """
    def __init__(self):
        self.treestore = TreeStore(str, str, bool)
        self.quiz_list = []
        self.last_added_section = None

    def dummy_data(self):
        self.quiz_list = [["", ""]]

    def append_section(self, title):
        """
        Adds a new section to the treestore. The given "title" must be a either
        a list with maximum 2 title for the question and answer or a str.
        """
        if len(title) < 2:
            title.append("")
        elif isinstance(title, str):
            title = [title, ""]
        column = []; column.extend(title)
        column.append(True)
        self.last_added_section = self.treestore.append(None, column)

    def append_question(self, question, is_selected=True):
        """
        Add a new question/answer-pair to the current section 
        (last_added_section).
        """
        self.quiz_list.append(question)
        column = []; column.extend(question)
        column.append(is_selected)
        self.treestore.append(self.last_added_section, column)
    def __init__(self, files):

        TreeStore.__init__(self, str)

        splitted = []
        for line in files.splitlines():
            part = line.split("/")
            try:
                part.remove('')
            except ValueError:
                pass
            splitted.append(part)
            continue

        nodes={}
        for split in splitted:
            last = None
            for part in split:
                if part in nodes.keys():
                    if split.index(part) == len(split)-1:
                        continue
                    last = part
                continue

            if not last:
                nodes[split[0]] = self.append(None, [split[0]])
            else:                
                idx = split.index(last)+1
                nodes[split[idx]] = self.append(nodes[last], [split[idx]])
            continue
Beispiel #4
0
 def get_tree_links(self):
     """Devuelve el arbol de marcadores/favoritos de la aplicación
     contenido en un objeto de tipo TreeStore
     
     """
     tree = TreeStore(str, str)
     folder = tree.append(None, [_("Marcadores de Opera"), None])
     #print "#########################################################"
     self.get_bookmarks(tree, folder, self.get_configuration())
     #print "#########################################################"
     return tree
 def __init__(self, quiz_data_builder=None):
     if quiz_data_builder == None:
         self.treestore = TreeStore(str, str, bool)
         self.quiz_list = [['', '']]
     else:
         self.treestore = quiz_data_builder.treestore
         self.quiz_list = quiz_data_builder.quiz_list
Beispiel #6
0
    def _make_repos_model (self):
        repos_model = TreeStore(str)
        all_it = repos_model.append(None, [_("All")])

        for repo in self.database.repos:
            if repo == "foreigners":
                continue
            repo_it = repos_model.append(all_it, [repo])
            repos_model.append(repo_it, [_("all")])
            repos_model.append(repo_it, [_("installed")])
            continue

        repos_model.append(all_it, [_("foreigners")])
        return repos_model
Beispiel #7
0
    def _make_repos_model (self):
        repos_model = TreeStore(str)
        repos = sorted( self.database.repos.keys() )
        
        for repo in repos:
            if repo == "foreigners" or repo == "local":
                continue
            repo_it = repos_model.append(None, [repo])
        
        repos_model.append(None, [_("foreigners")])   
        repos_model.append(None, [_("orphans")])

        return repos_model 
Beispiel #8
0
    def get_tree_options(self, update=False):
        """Devuele el árbol de opciones generado para el usario seleccionado.
        El objeto devuelto es de tipo gtk.TreeStore.
        Este método debe ampliarse en las clases hijas.
        
        Argumentos de entrada:
        update -- indica si se debe actualizar el contenido del árbol (default False)
        
        """
        if self.tree_options:
            if update:
                self.tree_options.clear()
            else:
                return self.tree_options
        else:
            from gtk import TreeStore
            self.tree_options = TreeStore( str, 'gboolean', str, str, str)

        name_usr = self.tree_options.append(None, [self.get_name(), None, None, _('Usuario seleccionado'), None])

        # Files
        parent = self.tree_options.append(name_usr , [_("Archivos"), None, None, _('Migrar archivos'), None] )
        personal = self.tree_options.append( parent, [_("Carpeta Personal"), None, str(self.folders['Personal'].get_size()), _('Archivos personales: ')+ self.folders['Personal'].get_info(), 'documentos'] )
        return self.tree_options
Beispiel #9
0
 def __create_model(self):
     from gtk import TreeStore
     from gio import Icon
     model = TreeStore(Icon, str, str, str)
     return model
 def __init__(self):
     self.treestore = TreeStore(str, str, bool)
     self.quiz_list = []
     self.last_added_section = None
Beispiel #11
0
 def __create_model(self):
     from gtk import TreeStore
     from gtk.gdk import Pixbuf
     model = TreeStore(int, str, str, int, Pixbuf)
     return model
Beispiel #12
0
    def get_tree_options(self, update=False):
        """Devuele el árbol de opciones generado para el usario seleccionado.
        El objeto devuelto es de tipo gtk.TreeStore.
        
        Argumentos de entrada:
        update -- indica si se debe actualizar el contenido del árbol (default False)
        
        """
        if self.tree_options:
            if update:
                self.tree_options.clear()
            else:
                return self.tree_options
        else:
            self.tree_options = TreeStore( str, 'gboolean', str, str, object)


        name_usr = self.tree_options.append(None, [self.get_name(), None, None, _('Usuario seleccionado'), None])

        # Files
        data = self.tree_options.append(name_usr , [_("Archivos"), None, None, _('Importar archivos'), None] )
        folder_2_copy = []
        if self.os.find("Vista") > 1:
            for s in folder(self.path).get_subfolders():
                add = s.get_size() and not s.get_name() in ('AppData', 'Links', 'Tracing', 'Searches', 'Cookies', 'NetHood', 'PrintHood', 'Local Settings', 'Application Data', 'Recent', 'Templates', 'SendTo', 'Start Menu', 'Saved Games', 'Favorites','Contacts') and not s.get_name().startswith('{')
                if add:
                    folder_2_copy.append(s)
        else:
            folder_2_copy.append(self.folders['Personal'])
            folder_2_copy.append(self.folders['Desktop'])

        # eMule
        if 'eMule' in self.folders.keys():
            emule_inc = self.get_incoming_path()
            emule_temp = self.get_temp_path()
            try:
                self.tree_options.append( data, [_("Descargados eMule"), None, str(emule_inc.get_size()), _('Archivos descargados: ')+ emule_inc.get_info(), ''] )
                self.tree_options.append( data, [_("Temporales eMule"), None, str(emule_temp.get_size()), _('Archivos temporales: ')+ emule_temp.get_info(), ''] )
            except:
                pass
        for f in folder_2_copy:
            c = self.get_copier(f)
            self.tree_options.append( data, [c.name, None, str(c.size), c.description, c] )


        # configuraciones
        conf = self.tree_options.append(name_usr , [_("Configuraciones"), None, None, _('Importar configuraciones'), None] )

        # Bookmarks
        navegadores = []
        try:
            navegadores.append(webbrowser.winfirefox(self))
        except:
            pass
        try:
            navegadores.append(webbrowser.iexplorer(self))
        except:
            pass
        try:
            navegadores.append(webbrowser.opera(self))
        except:
            pass
        try:
            navegadores.append(webbrowser.chrome(self))
        except:
            pass
        if navegadores:
            nav = self.tree_options.append(conf, [_("Navegadores"), None, None, _('Navegadores web'), None] )
            for n in navegadores:
                self.tree_options.append(nav, [n.name, None, n.size, n.description, n] )

        # Correo
        lectores = []
        out = self.get_OUTLOOK_accounts()
        for k, v in out.iteritems():
            try:
                if k == "Outlook12":
                    lectores.append(mail.outlook12(self, v))
                elif k == "Outlook11":
                    lectores.append(mail.outlook11(self, v))
                elif k == "Outlook Express":
                    lectores.append(mail.outlook_express(self, v))
                elif k == "Outlook9":
                    lectores.append(mail.outlook9(self, v))
            except:
                pass
        try:
            lectores.append(mail.windowsmail(self, self.get_WINDOWS_MAIL_accounts().values()))
        except:
            pass
        try:
            lectores.append(mail.windowslivemail(self, self.get_WINDOWS_LIVE_MAIL_accounts().values()))
        except:
            pass
        try:
            lectores.append(mail.winthunderbird(self, self.get_THUNDERBIRD_accounts()))
        except:
            pass
        if lectores:
            lec = self.tree_options.append(conf, [_("Gestores de correo"), None, None, _('Gestores de correo electrónico'), None] )
            for l in lectores:
                self.tree_options.append(lec, [l.name, None, l.size, l.description, l] )

        # Instant Messenger
        cuentas = messenger.get_IM_accounts(self)
        if cuentas:
            im = self.tree_options.append(conf, [_("Mensajería Instantánea"), None, None, _('Cuentas de IM'), None] )
        for a in cuentas:
            self.tree_options.append(im, [a.name, None, a.size, a.description, a] )

        # Otras configuraciones
        configuraciones = []
        try:
            configuraciones.append(settings.wallpaper(self))
        except:
            pass
        try:
            configuraciones.append(settings.fonts_installer(self))
        except:
            pass
        try:
            configuraciones.append(settings.emule(self))
        except:
            pass
        try:
            configuraciones.append(settings.avatar(self))
        except:
            pass
        try:
            configuraciones.append(settings.calendar(self))
        except:
            pass
        try:
            configuraciones.append(settings.contacts(self))
        except:
            pass

        if configuraciones:
            cfg = self.tree_options.append(conf, [_("Otros"), None, None, _('Otras opciones de configuración'), None] )
            for c in configuraciones:
                self.tree_options.append(cfg, [c.name, None, c.size, c.description, c] )

        return self.tree_options
Beispiel #13
0
class winuser(regedit, generic_usr):
    """Clase para el manejo de usuarios de Windows.
    Hereda de las clases Generic_usr y Regedit.
        
    """

    def __init__(self, dir, pc, ops):
        """Constructor de la clase.
        
        Argumentos de entrada:
        dir  -- directorio raíz del usuario
        pc -- objeto de la clase PC
        ops -- sistema operativo al que pertence el usuario
        
        """
        regedit.__init__(self, dir)
        generic_usr.__init__(self, dir, pc, ops)


    def get_copier(self, folder):
        """Devuelve un objeto de tipo Copier para copiar una carpeta
        
        Argumentos de entrada:
        folder -- objeto de tipo Folder de la carpeta a copiar
        
        """
        return copier(self, folder)


    def get_avatar(self):
        """ Devuelve la imagen del usuario. Disponible a partir de XP"""
        if os.path.exists(os.path.join(self.folders["Local AppData"].path,'Temp',self.name+".bmp")):
            return os.path.join(self.folders["Local AppData"].path,'Temp',self.name+".bmp")
        elif os.path.exists(os.path.join(self.folders["AppData"].path.replace(self.name, 'All Users'), 'Microsoft', 'User Account Pictures', self.name+".bmp")):
            return os.path.join(self.folders["AppData"].path.replace(self.name, 'All Users'), 'Microsoft', 'User Account Pictures', self.name+".bmp")
        else:
            return "/usr/share/pixmaps/nobody.png"


    def get_AOL_accounts(self):
        """Devuelve una lista con los usuarios de AOL Instant Messenger"""
        r = self.search_key("Software\America Online\AOL Instant Messenger (TM)\CurrentVersion\Users")
        return r

    def get_GTALK_account(self):
        """Devuelve el identificador usado en Gtalk"""
        r = self.search_key("Software\Google\Google Talk\Accounts")
        try:
            return r['a'].split('/')[0]
        except:
            return 0

    def get_OUTLOOK_accounts(self):
        """Devuelve un dicccionario con los las claves del registro que
        contienen la configuración de correo de Outlook. 
        Compatible con Outlook desde la versión 9 a la 12 y con Outlook
        Express 6
        
        """
        claves = {"Outlook9":[], "Outlook Express":[], "Outlook11":[], "Outlook12":[]}
        ou11 = re.compile(r'\[NTUSER\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Windows Messaging Subsystem\\Profiles\\.*Outlook.*\\\w+\\\d+')
        ou12 = re.compile(r'\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Windows Messaging Subsystem\\Profiles\\Outlook\\\w+\\\d+')
        try:
            reg = open(self.tempreg, 'r')
        except:
            self.error('No fue posible acceder al archivo')
        else:
            for e in reg.readlines():
                if e.find('\Software\\Microsoft\\Office\\Outlook\\OMI Account Manager\\Accounts\\0') != -1:
                    claves["Outlook9"].append(e)
                elif e.find('\Software\\Microsoft\\Internet Account Manager\\Accounts\\0') != -1:
                    claves["Outlook Express"].append(e)
                elif ou11.match(e):
                    claves["Outlook11"].append(e)
                elif e.find('\Software\\Microsoft\\Office\\12.0\\Outlook\\Catalog') != -1:
                    claves["Outlook12"].append(e)
                elif ou12.search(e):
                    claves["Outlook12"].append(e)

            reg.close()
            return claves

    def get_WINDOWS_MAIL_accounts(self):
        """Devuelve un dicccionario con los archivos que
        contienen la configuración de correo de Windows Mail. 
        
        """
        dict = {}
        ruta = os.path.join(self.folders["Local AppData"].path, 'Microsoft', 'Windows Mail')
        if os.path.exists(ruta):
            for d in os.listdir(ruta):
                file = os.path.join(ruta, d, '*.oeaccount')
                if glob.glob(file):
                    dict[d] = glob.glob(file)[0]
        return dict
        
    def get_WINDOWS_LIVE_MAIL_accounts(self):
        """Devuelve un dicccionario con los archivos que
        contienen la configuración de correo de Windows Live Mail. 
        
        """
        dict = {}
        ruta = os.path.join(self.folders["Local AppData"].path, 'Microsoft', 'Windows Live Mail')
        if os.path.exists(ruta):
            for d in os.listdir(ruta):
                file = os.path.join(ruta, d, '*.oeaccount')
                if glob.glob(file):
                    dict[d] = glob.glob(file)[0]
        return dict
        
    def get_THUNDERBIRD_accounts(self):
        """Devuelve una lista con las cuentas de correo configuradas en 
        Mozilla Thunderbird
        """
        prefs = self.get_THUNDERBIRD_prefs()
        try:
            p = open(prefs, 'r')
            content = p.readlines()
            p.close()
        except:
            return []
        else:
            pattern = re.compile('.+mail\.accountmanager\.accounts.*\s+\"(?P<accounts>.+)\".*')
            for l in content:
                m = pattern.match(l)
                if m:
                    return m.group('accounts').split(',')
                
    def get_THUNDERBIRD_prefs(self):
        """Devuelve el archivo de configuración de Mozilla Thunderbird"""
        prefs = glob.glob(os.path.join(self.folders["AppData"].path, 'Thunderbird', 'Profiles', '*.default', 'prefs.js'))
        if prefs:
            return prefs[0]

    def get_MSN_account(self):
        """Devuelve la cuenta asociada a MSN Messenger"""
        r = self.search_key("Software\Microsoft\MSNMessenger")
        try:
            return r["User .NET Messenger Service"]
        except:
            return 0

    def get_YAHOO_account(self):
        """Devuelve el identificador usado en Yahoo! Messenger"""
        r = self.search_key("Software\Yahoo\pager")
        try:
            return r["Yahoo! User ID"]
        except:
            return 0

    def check_path(self, path):
        """Devuelve la ruta real accesible desde Linux de la ruta completa 
        de la carpeta respecto a Windows
        
        Argumentos de entrada:
        path -- ruta completa de una carpeta de Windows
        
        """
        i = path.find(':')
        path = path.replace(path[:i+1], self.mount_points[path[i-1:i+1]])
        path = path.replace('\\','/')
        return path

    def get_user_folders(self, pc):
        """Devuelve las carpetas de archivos, confifguraciones y programas del usuario"""
        r = self.search_key("Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders")
        if r:
            if "!Do not use this registry key" in r:
                del r["!Do not use this registry key"]
            if self.os.find("Vista") > 1:
                r["Downloads"] = os.path.join(os.path.split(r["Personal"])[0], "Downloads")
                
            self.mount_points = pc.map_win_units(r) # Obtener los puntos de montaje
            
            for k, v in r.iteritems():
                if v:
                    try:
                        if not k == 'Wallpaper':
                            r[k] = folder(self.check_path(v), False)
                            #print "%s: %s --> %s" % (k, v, r[k].path)
                        else:
                            r[k] = self.check_path(v)
                            #print "%s: %s --> %s" % (k, v, r[k])
                    except:
                        pass
            return r
        else:
            raise Exception("Error reading de registry")


    def get_messenger_accounts(self):
        """Devuelve las cuentas de mensajería de Windows Live Messenger"""
        accounts = []
        live_msn = folder(os.path.join(self.folders['Local AppData'].path, 'Microsoft', 'Messenger'), False)
        if live_msn.path and os.path.exists(live_msn.path):
            for m in os.listdir(live_msn.path):
                if m.find('@') != -1:
                    accounts.append(m)
        return accounts

    def get_details(self):
        """Devuelve información sobre el usuario        OBSOLETO
        
        """
        size = "0Mb"
        if self.os.find("XP") > 1:
            size = "%.2fMb" % (self.folders['Personal'].get_size()/1024.0)
        elif self.os.find("Vista") > 1:
            s = 0
            for p in ("Personal", "My Video", "My Music", "My Pictures", "Desktop", "Downloads"):
                s +=  self.folders[p].get_size()
            size = "%.2fMb" % (int(s)/1024.0)
        return "Sistema Operativo"+": "+self.os +", "+ size +" de datos"

    def get_info(self):
        """Devuelve la información de archivos y programas del usuario"""
        pass


    def get_tree_options(self, update=False):
        """Devuele el árbol de opciones generado para el usario seleccionado.
        El objeto devuelto es de tipo gtk.TreeStore.
        
        Argumentos de entrada:
        update -- indica si se debe actualizar el contenido del árbol (default False)
        
        """
        if self.tree_options:
            if update:
                self.tree_options.clear()
            else:
                return self.tree_options
        else:
            self.tree_options = TreeStore( str, 'gboolean', str, str, object)


        name_usr = self.tree_options.append(None, [self.get_name(), None, None, _('Usuario seleccionado'), None])

        # Files
        data = self.tree_options.append(name_usr , [_("Archivos"), None, None, _('Importar archivos'), None] )
        folder_2_copy = []
        if self.os.find("Vista") > 1:
            for s in folder(self.path).get_subfolders():
                add = s.get_size() and not s.get_name() in ('AppData', 'Links', 'Tracing', 'Searches', 'Cookies', 'NetHood', 'PrintHood', 'Local Settings', 'Application Data', 'Recent', 'Templates', 'SendTo', 'Start Menu', 'Saved Games', 'Favorites','Contacts') and not s.get_name().startswith('{')
                if add:
                    folder_2_copy.append(s)
        else:
            folder_2_copy.append(self.folders['Personal'])
            folder_2_copy.append(self.folders['Desktop'])

        # eMule
        if 'eMule' in self.folders.keys():
            emule_inc = self.get_incoming_path()
            emule_temp = self.get_temp_path()
            try:
                self.tree_options.append( data, [_("Descargados eMule"), None, str(emule_inc.get_size()), _('Archivos descargados: ')+ emule_inc.get_info(), ''] )
                self.tree_options.append( data, [_("Temporales eMule"), None, str(emule_temp.get_size()), _('Archivos temporales: ')+ emule_temp.get_info(), ''] )
            except:
                pass
        for f in folder_2_copy:
            c = self.get_copier(f)
            self.tree_options.append( data, [c.name, None, str(c.size), c.description, c] )


        # configuraciones
        conf = self.tree_options.append(name_usr , [_("Configuraciones"), None, None, _('Importar configuraciones'), None] )

        # Bookmarks
        navegadores = []
        try:
            navegadores.append(webbrowser.winfirefox(self))
        except:
            pass
        try:
            navegadores.append(webbrowser.iexplorer(self))
        except:
            pass
        try:
            navegadores.append(webbrowser.opera(self))
        except:
            pass
        try:
            navegadores.append(webbrowser.chrome(self))
        except:
            pass
        if navegadores:
            nav = self.tree_options.append(conf, [_("Navegadores"), None, None, _('Navegadores web'), None] )
            for n in navegadores:
                self.tree_options.append(nav, [n.name, None, n.size, n.description, n] )

        # Correo
        lectores = []
        out = self.get_OUTLOOK_accounts()
        for k, v in out.iteritems():
            try:
                if k == "Outlook12":
                    lectores.append(mail.outlook12(self, v))
                elif k == "Outlook11":
                    lectores.append(mail.outlook11(self, v))
                elif k == "Outlook Express":
                    lectores.append(mail.outlook_express(self, v))
                elif k == "Outlook9":
                    lectores.append(mail.outlook9(self, v))
            except:
                pass
        try:
            lectores.append(mail.windowsmail(self, self.get_WINDOWS_MAIL_accounts().values()))
        except:
            pass
        try:
            lectores.append(mail.windowslivemail(self, self.get_WINDOWS_LIVE_MAIL_accounts().values()))
        except:
            pass
        try:
            lectores.append(mail.winthunderbird(self, self.get_THUNDERBIRD_accounts()))
        except:
            pass
        if lectores:
            lec = self.tree_options.append(conf, [_("Gestores de correo"), None, None, _('Gestores de correo electrónico'), None] )
            for l in lectores:
                self.tree_options.append(lec, [l.name, None, l.size, l.description, l] )

        # Instant Messenger
        cuentas = messenger.get_IM_accounts(self)
        if cuentas:
            im = self.tree_options.append(conf, [_("Mensajería Instantánea"), None, None, _('Cuentas de IM'), None] )
        for a in cuentas:
            self.tree_options.append(im, [a.name, None, a.size, a.description, a] )

        # Otras configuraciones
        configuraciones = []
        try:
            configuraciones.append(settings.wallpaper(self))
        except:
            pass
        try:
            configuraciones.append(settings.fonts_installer(self))
        except:
            pass
        try:
            configuraciones.append(settings.emule(self))
        except:
            pass
        try:
            configuraciones.append(settings.avatar(self))
        except:
            pass
        try:
            configuraciones.append(settings.calendar(self))
        except:
            pass
        try:
            configuraciones.append(settings.contacts(self))
        except:
            pass

        if configuraciones:
            cfg = self.tree_options.append(conf, [_("Otros"), None, None, _('Otras opciones de configuración'), None] )
            for c in configuraciones:
                self.tree_options.append(cfg, [c.name, None, c.size, c.description, c] )

        return self.tree_options
    def get_tree_options(self, update=False):
        """Devuele el árbol de opciones generado para el usario seleccionado.
        El objeto devuelto es de tipo gtk.TreeStore.
        
        Argumentos de entrada:
        update -- indica si se debe actualizar el contenido del árbol (default False)
        
        """
        if self.tree_options:
            if update:
                self.tree_options.clear()
            else:
                sleep(2.0)
                return self.tree_options
        else:
            self.tree_options = TreeStore(str, "gboolean", str, str, object)

        name_usr = self.tree_options.append(None, [self.get_name(), None, None, _("Usuario seleccionado"), None])

        # Files
        data = self.tree_options.append(name_usr, [_("Archivos"), None, None, _("Importar archivos"), None])
        folder_2_copy = []
        if self.os.find("Vista") > 1:
            for s in folder(self.path).get_subfolders():
                add = (
                    s.get_size()
                    and not s.get_name()
                    in (
                        "AppData",
                        "Links",
                        "Tracing",
                        "Searches",
                        "Cookies",
                        "NetHood",
                        "PrintHood",
                        "Local Settings",
                        "Application Data",
                        "Recent",
                        "Templates",
                        "SendTo",
                        "Start Menu",
                        "Saved Games",
                        "Favorites",
                        "Contacts",
                    )
                    and not s.get_name().startswith("{")
                )
                if add:
                    folder_2_copy.append(s)
        else:
            folder_2_copy.append(self.folders["Personal"])
            folder_2_copy.append(self.folders["Desktop"])

        # eMule
        if "eMule" in self.folders.keys():
            emule_inc = self.get_incoming_path()
            emule_temp = self.get_temp_path()
            try:
                self.tree_options.append(
                    data,
                    [
                        _("Descargados eMule"),
                        None,
                        str(emule_inc.get_size()),
                        _("Archivos descargados: ") + emule_inc.get_info(),
                        "",
                    ],
                )
                self.tree_options.append(
                    data,
                    [
                        _("Temporales eMule"),
                        None,
                        str(emule_temp.get_size()),
                        _("Archivos temporales: ") + emule_temp.get_info(),
                        "",
                    ],
                )
            except:
                pass
        for f in folder_2_copy:
            try:
                c = self.get_copier(f)
                dir = self.tree_options.append(data, [c.name, None, str(c.size), c.description, c])
                try:
                    conv = converter(self, f)
                    self.tree_options.append(dir, [conv.name, None, str(conv.size), conv.description, conv])
                except:
                    pass
            except:
                pass

        # configuraciones
        conf = self.tree_options.append(
            name_usr, [_("Configuraciones"), None, None, _("Importar configuraciones"), None]
        )

        # Bookmarks
        navegadores = []
        try:
            navegadores.append(firefox.firefox(self))
        except:
            pass
        try:
            navegadores.append(explorer.iexplorer(self))
        except:
            pass
        try:
            navegadores.append(opera.opera(self))
        except:
            pass
        try:
            navegadores.append(chrome.chrome(self))
        except:
            pass
        if navegadores:
            nav = self.tree_options.append(conf, [_("Navegadores"), None, None, _("Navegadores web"), None])
            for n in navegadores:
                self.tree_options.append(nav, [n.name, None, n.size, n.description, n])

        # Correo
        lectores = []
        try:
            lectores.append(thunderbird.thunderbird(self, self.get_THUNDERBIRD_accounts()))
        except:
            pass
        out = self.get_OUTLOOK_accounts()
        for k, v in out.iteritems():
            try:
                if k == "Outlook12":
                    lectores.append(outlook.outlook12(self, v))
                elif k == "Outlook11":
                    lectores.append(outlook.outlook11(self, v))
                elif k == "Outlook Express":
                    lectores.append(outlook.outlook_express(self, v))
                elif k == "Outlook9":
                    lectores.append(outlook.outlook9(self, v))
            except:
                pass
        try:
            lectores.append(livemail.windowsmail(self, self.get_WINDOWS_MAIL_accounts().values()))
        except:
            pass
        try:
            lectores.append(livemail.windowslivemail(self, self.get_WINDOWS_LIVE_MAIL_accounts().values()))
        except:
            pass
        if lectores:
            lec = self.tree_options.append(
                conf, [_("Gestores de correo"), None, None, _("Gestores de correo electrónico"), None]
            )
            for l in lectores:
                self.tree_options.append(lec, [l.name, None, l.size, l.description, l])

        # Instant Messenger
        cuentas = []
        try:
            cuentas.append(live.windowslive(self, self.get_MSN_account()))
        except:
            pass
        for ac in self.get_messenger_accounts():
            try:
                cuentas.append(live.windowslive(self, ac))
            except:
                pass
        try:
            cuentas.append(gtalk.gtalk(self))
        except:
            pass

        if cuentas:
            im = self.tree_options.append(conf, [_("Mensajería Instantánea"), None, None, _("Cuentas de IM"), None])
        for a in cuentas:
            self.tree_options.append(im, [a.name, None, a.size, a.description, a])

        # Otras configuraciones
        configuraciones = []
        try:
            configuraciones.append(misc.wallpaper(self))
        except:
            pass
        try:
            configuraciones.append(misc.fonts_installer(self))
        except:
            pass
        try:
            configuraciones.append(emule.emule(self))
        except:
            pass
        try:
            configuraciones.append(misc.avatar(self))
        except:
            pass
        try:
            configuraciones.append(planner.calendar(self))
        except:
            pass
        try:
            configuraciones.append(addressbook.contacts(self))
        except:
            pass

        if len(configuraciones):
            cfg = self.tree_options.append(conf, [_("Otros"), None, None, _("Otras opciones de configuración"), None])
            for c in configuraciones:
                try:
                    self.tree_options.append(cfg, [c.name, None, c.size, c.description, c])
                except:
                    pass

        return self.tree_options
Beispiel #15
0
class generic_usr:
    """Clase abstracta para los usuarios del PC"""

    def __init__(self, dir, pc, ops):
        """Constructor de la clase.
        
        Argumentos de entrada:
        dir  -- directorio raíz del usuario
        pc -- objeto de la clase PC
        ops -- sistema operativo al que pertence el usuario
        
        """
        self.os = ops
        self.path = dir
        self.name = os.path.split(dir)[1]
        self.folders = self.get_user_folders(pc)
        if not self.folders:
            self.error("Couldn't get user folders.")
        else:
            self.init_apps()
            self.info = None
            self.tree_options = None
            self.errors = []
        if self.errors: print self.errors

    def init_apps(self):
        """Método a definir por las clases hijas para ejecutarse al 
        crear el objeto
        """
        pass

    def get_path(self):
        """Devuelve la carpeta raíz del usuario"""
        return self.path

    def get_personal_folder(self):
        """Devuelve las carpetas personales y de configuración del usuario"""
        return self.folders['Personal']

    def get_avatar(self):
        """Devuelve la imagen de usuario"""
        return "/usr/share/pixmaps/nobody.png"

    def get_name(self):
        """Devuelve el nombre del usuario en el sistema"""
        return self.name

    def get_details(self):
        """Devuelve información sobre el usuario        OBSOLETO
        
        """
        size = "0Mb"
        size = "%.2fMb" % (self.folders['Personal'].get_size()/1024.0)
        return "Sistema Operativo"+": "+self.os +", "+ size +" de datos"

    def get_info(self):
        """Método a definir por las clases hijas.
        Devuelve la información de archivos y programas del usuario
        
        """
        pass

    def all_errors(self):
        """Devuelve los errores producidos en tiempo de ejecuccion"""
        return self.errors

    def get_tree_options(self, update=False):
        """Devuele el árbol de opciones generado para el usario seleccionado.
        El objeto devuelto es de tipo gtk.TreeStore.
        Este método debe ampliarse en las clases hijas.
        
        Argumentos de entrada:
        update -- indica si se debe actualizar el contenido del árbol (default False)
        
        """
        if self.tree_options:
            if update:
                self.tree_options.clear()
            else:
                return self.tree_options
        else:
            from gtk import TreeStore
            self.tree_options = TreeStore( str, 'gboolean', str, str, str)

        name_usr = self.tree_options.append(None, [self.get_name(), None, None, _('Usuario seleccionado'), None])

        # Files
        parent = self.tree_options.append(name_usr , [_("Archivos"), None, None, _('Migrar archivos'), None] )
        personal = self.tree_options.append( parent, [_("Carpeta Personal"), None, str(self.folders['Personal'].get_size()), _('Archivos personales: ')+ self.folders['Personal'].get_info(), 'documentos'] )
        return self.tree_options

    def get_user_folders(self, pc):
        """Devuelve un diccionario que contiene las carpetas de archivos, 
        configuraciones y programas del usuario.
        
        Esta clase debe ampliarse en las clases hijas
        
        Argumentos de entrada:
        pc -- objeto de tipo PC
        
        """
        folders = {}
        folders["Personal"] = folder(self.path)
        return folders

    def clean(self):
        """Método abstracto que elimina los archivos temporales usados"""
        pass
 def __init__(self):
     self.treestore = TreeStore(str, str, bool)
     self.quiz_list = []
     self.last_added_section = None