Hello community,

here is the log from the commit of package folder-color for openSUSE:Factory 
checked in at 2015-05-07 08:29:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/folder-color (Old)
 and      /work/SRC/openSUSE:Factory/.folder-color.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "folder-color"

Changes:
--------
--- /work/SRC/openSUSE:Factory/folder-color/folder-color.changes        
2015-03-30 19:33:50.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.folder-color.new/folder-color.changes   
2015-05-07 08:29:21.000000000 +0200
@@ -1,0 +2,7 @@
+Wed May  6 11:34:12 UTC 2015 - [email protected]
+
+- Update to 0.0.78:
+  * Orange colour changed to Humanity.
+  * Dark recent inside.
+
+-------------------------------------------------------------------

Old:
----
  folder-color-caja_0.0.70_all.tar.gz
  folder-color-common_0.0.70_all.tar.gz
  folder-color_0.0.70_all.tar.gz

New:
----
  folder-color-caja_0.0.78.tar.gz
  folder-color-common_0.0.78.tar.gz
  folder-color_0.0.78.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ folder-color.spec ++++++
--- /var/tmp/diff_new_pack.6yolx5/_old  2015-05-07 08:29:21.000000000 +0200
+++ /var/tmp/diff_new_pack.6yolx5/_new  2015-05-07 08:29:21.000000000 +0200
@@ -19,15 +19,15 @@
 %define _name   folder_color
 %define _version 0.0.7x
 Name:           folder-color
-Version:        0.0.70
+Version:        0.0.78
 Release:        0
 Summary:        Change a directory colour in Caja and Nautilus
 License:        GPL-3.0+
 Group:          Productivity/File utilities
 Url:            https://launchpad.net/folder-color
-Source0:        
https://launchpad.net/%{name}/trunk/%{_version}/+download/%{name}-common_%{version}_all.tar.gz
-Source1:        
https://launchpad.net/%{name}/trunk/%{_version}/+download/%{name}-caja_%{version}_all.tar.gz
-Source2:        
https://launchpad.net/%{name}/trunk/%{_version}/+download/%{name}_%{version}_all.tar.gz
+Source0:        
https://launchpad.net/%{name}/trunk/%{_version}/+download/%{name}-common_%{version}.tar.gz
+Source1:        
https://launchpad.net/%{name}/trunk/%{_version}/+download/%{name}-caja_%{version}.tar.gz
+Source2:        
https://launchpad.net/%{name}/trunk/%{_version}/+download/%{name}_%{version}.tar.gz
 BuildRequires:  fdupes
 BuildRequires:  hicolor-icon-theme
 BuildRequires:  intltool

++++++ folder-color-caja_0.0.70_all.tar.gz -> folder-color-caja_0.0.78.tar.gz 
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/folder-color-caja/caja-extension/folder-color.py 
new/folder-color-caja/caja-extension/folder-color.py
--- old/folder-color-caja/caja-extension/folder-color.py        2015-03-29 
12:04:42.000000000 +0200
+++ new/folder-color-caja/caja-extension/folder-color.py        2015-05-01 
18:19:13.000000000 +0200
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Folder Color 0.0.70
+# Folder Color 0.0.78
 # Copyright (C) 2012-2015 Marcos Alvarez Costales 
https://launchpad.net/~costales
 #
 # Folder Color is free software; you can redistribute it and/or modify
@@ -16,7 +16,7 @@
 # along with Folder Color; if not, see http://www.gnu.org/licenses
 # for more information.
 
-import os, urllib, gettext, glob, webbrowser, operator, shutil, ConfigParser
+import os, urllib, gettext, glob, webbrowser, operator, shutil, ConfigParser, 
subprocess
 from gi.repository import Caja, Gtk, GObject, Gio, GLib
 
 # i18n
@@ -31,22 +31,29 @@
         
         self.DEFAULT_PATH_THEME = ''
         
-        self.PLACES  = 'places'
-        self.EMBLEMS = 'emblems'
-        self.CUSTOM  = 'custom'
+        self.PLACES       = 'places'
+        self.EMBLEMS      = 'emblems'
+        self.CUSTOM       = 'custom'
+        self.GLOBALCOLOR  = 'globalcolor'
         
         self.FOLDER      = 'folder'
-        self.PRE_PLACES  = '_'.join([self.FOLDER, 'color'])
-        self.PRE_EMBLEMS = '_'.join([self.FOLDER, 'emblem'])
-        self.PRE_CUSTOMS = '_'.join([self.FOLDER, 'custom'])
-        
-        self.SEARCH_PLACES  = '_'.join([self.PRE_PLACES,  '*.svg'])
-        self.SEARCH_EMBLEMS = '_'.join([self.PRE_EMBLEMS, '*.svg'])
-        self.SEARCH_CUSTOMS = ''.join([self.PRE_CUSTOMS, '*.svg'])
-        
-        self.CHECK_PLACE  = 'folder_color_blue'
-        self.CHECK_EMBLEM = 'folder_emblem_favorite'
-        self.CHECK_CUSTOM = 'folder_custom'
+        self.PRE_PLACES  = 'folder_color'
+        self.PRE_EMBLEMS = 'folder_emblem'
+        self.PRE_CUSTOMS = 'folder_custom'
+        
+        self.SEARCH_PLACES      = 'folder_color_*.svg'
+        self.SEARCH_EMBLEMS     = 'folder_emblem_*.svg'
+        self.SEARCH_CUSTOMS     = 'folder_custom*.svg'
+        self.SEARCH_GLOBALCOLOR = 'folder_color_globalcolor.svg'
+        
+        self.CHECK_PLACE       = 'folder_color_blue'
+        self.CHECK_EMBLEM      = 'folder_emblem_favorite'
+        self.CHECK_CUSTOM      = 'folder_custom'
+        self.CHECK_GLOBALCOLOR = 'folder_color_globalcolor'
+        
+        self.EXTRA_HOME   = 'folder_extraicons_%s_home'
+        self.EXTRA_REMOTE = 'folder_extraicons_%s_remote'
+        self.EXTRA_RECENT = 'folder_extraicons_%s_recent'
         
         self.DESKTOP   = 'desktop'
         self.DOCUMENTS = 'documents'
@@ -59,6 +66,7 @@
         
         self.DEFAULT_ICONS   = ('undo', 'edit', 'picker', 'preferences', 
'default', self.DESKTOP, self.DOCUMENTS, self.DOWNLOADS, self.MUSIC, 
self.PICTURES, self.PUBLIC, self.TEMPLATES, self.VIDEOS)
         self.DEFAULT_FOLDERS = self._get_default_folders()
+        self.ICON_RESOLUTIONS = {'16': '16x16', '22': '22x22', '24': '24x24', 
'32': '32x32', '48': '48x48', '64': '64x64'}
         
         self.SYSTEM_PATH_THEME = '/usr/share/icons'
         self.USER_PATH_THEME   = os.path.join(os.getenv('HOME'), '.icons')
@@ -71,12 +79,12 @@
         self.VALUE_LIGHT  = 'value_light'
         self.VALUE_MIDDLE = 'value_middle'
         self.VALUE_DARK   = 'value_dark'
-    
+        
         # Caja crashed? Allow future Preference dialogs
         if remove_pid:
             self.lock.remove()
     
-    def get_iconname(self, folder, name, what='places'):
+    def get_iconname(self, folder, name, what='places', get_px='48'):
         """For 'green' returns folder_color_green_downloads"""
         if what == self.PLACES:
             prefix = self.PRE_PLACES
@@ -89,7 +97,7 @@
         
         if folder in self.DEFAULT_FOLDERS:
             iconname = '_'.join([prefix, name.replace(' ', '_').lower(), 
self.DEFAULT_FOLDERS[folder]])
-            filename = ''.join([self.get_path(what), iconname, '.svg'])
+            filename = ''.join([self.get_path(what, get_px), iconname, '.svg'])
             if os.path.isfile(filename): # Exist?
                 return iconname
         
@@ -103,16 +111,18 @@
             icon_name = icon_name.replace(self.PRE_PLACES, 
'').replace(self.PRE_EMBLEMS, '').replace('_', ' ').strip()
         return icon_name
     
-    def get_path(self, what='places'):
+    def get_path(self, what='places', get_px='48'):
         """Get current path. By example: 
/usr/share/icons/hicolor/48x48/places/"""
         icon = Gtk.IconTheme.get_default()
         
         if what == self.PLACES:
-            icon_path = icon.lookup_icon(self.CHECK_PLACE,  48, 0)
+            icon_path = icon.lookup_icon(self.CHECK_PLACE, int(get_px), 0)
         elif what == self.EMBLEMS:
             icon_path = icon.lookup_icon(self.CHECK_EMBLEM, 24, 0)
         elif what == self.CUSTOM:
-            icon_path = icon.lookup_icon(self.CHECK_CUSTOM, 48, 0)
+            icon_path = icon.lookup_icon(self.CHECK_CUSTOM, int(get_px), 0)
+        elif what == self.GLOBALCOLOR:
+            icon_path = icon.lookup_icon(self.CHECK_GLOBALCOLOR, 16, 0)
         else:
             return ''
         
@@ -136,6 +146,8 @@
             path = ''.join([self.get_path(what), self.SEARCH_EMBLEMS])
         elif what == self.CUSTOM:
             path = ''.join([self.get_path(what), self.SEARCH_CUSTOMS])
+        elif what == self.GLOBALCOLOR:
+            path = ''.join([self.get_path(what), self.SEARCH_GLOBALCOLOR])
         else:
             return available_items
         
@@ -179,7 +191,8 @@
     
     def _reload_icon(self, folder):
         """Reload the current folder icon"""
-        os.system('touch "%s"' % folder)
+        proc = subprocess.Popen(['touch', folder], shell=False)
+        proc.communicate()
     
     def _get_default_folders(self):
         """Default user folders"""
@@ -232,9 +245,12 @@
         """Set an emblem"""
         # TODO: Use Gio
         if emblem:
-            os.system('gvfs-set-attribute -t stringv "%s" metadata::emblems 
"%s"' % (folder, emblem))
+            cmd = ['gvfs-set-attribute', '-t', 'stringv', folder, 
'metadata::emblems', emblem]
         else:
-            os.system('gvfs-set-attribute -t unset "%s" metadata::emblems' % 
folder)
+            cmd = ['gvfs-set-attribute', '-t', 'unset', folder, 
'metadata::emblems']
+        
+        proc = subprocess.Popen(cmd, shell=False)
+        proc.communicate()
         
         self._reload_icon(folder)
     
@@ -304,7 +320,6 @@
                 pass
             except:
                 pass
-        pass
     
     def get_file_items(self, window, items):
         """Caja invoke this function in its startup > Then, create menu 
entry"""
@@ -312,7 +327,25 @@
         if not self._check_generate_menu(items):
             return
         # Return menu
-        return self._generate_menu(items)
+        return self._generate_menu(items, self._check_generate_restore(items))
+    
+    def _check_generate_restore(self, items):
+        # For each dir, search custom icon or emblem
+        for item in items:
+            if item.is_gone():
+                continue
+            
+            folder_name = urllib.unquote(item.get_uri()[7:])
+            folder = Gio.File.new_for_path(folder_name)
+            info = folder.query_info('metadata', 0, None)
+            if info.get_attribute_as_string('metadata::custom-icon-name'):
+                return True
+            if info.get_attribute_as_string('metadata::custom-icon'):
+                return True
+            if info.get_attribute_as_string('metadata::emblems'):
+                return True
+        
+        return False
     
     def _check_generate_menu(self, items):
         """Show the menu?"""
@@ -336,7 +369,7 @@
         # All OK > Generate menu
         return True
     
-    def _generate_menu(self, items):
+    def _generate_menu(self, items, show_restore):
         """Generate menu: Color | Custom? | Restore | Emblems? | Preferences"""
         # Main menu [1 or +1 folder(s)]
         if len(items) > 1:
@@ -377,24 +410,31 @@
             submenu.append_item(item)
         
         # Restore
-        item_sep = Caja.MenuItem(name='ChangeFolderEmblemMenu::Sep', 
label=_("Restore:"), sensitive=False)
-        submenu.append_item(item_sep)
-        
-        item_restore = Caja.MenuItem(name='ChangeFolderColorMenu::Restore', 
label=_("Default"), icon='folder_color_undo')
-        item_restore.connect('activate', self._menu_activate_restore, items)
-        submenu.append_item(item_restore)
-        
-        # Preferences
-        path = self.foldercolor.get_current_icontheme()[0]
-        if path:
+        if show_restore:
+            item_sep = Caja.MenuItem(name='ChangeFolderEmblemMenu::Sep', 
label=_("Restore:"), sensitive=False)
+            submenu.append_item(item_sep)
+            
+            item_restore = 
Caja.MenuItem(name='ChangeFolderColorMenu::Restore', label=_("Default"), 
icon='folder_color_undo')
+            item_restore.connect('activate', self._menu_activate_restore, 
items)
+            submenu.append_item(item_restore)
+        
+        # Global Color
+        path_theme,customs = 
self.foldercolor.get_available_icons('globalcolor')
+        if len(customs) and path_theme == self.DEFAULT_PATH_THEME: # Show 
Global Color only if the theme wants that
             item_sep = Caja.MenuItem(name='ChangeFolderColorMenu::Sep2', 
label=_("Edit:"), sensitive=False)
             submenu.append_item(item_sep)
-            item = 
Caja.MenuItem(name=''.join(['ChangeFolderColorMenu::"preferences"']), 
label=_("Global Color"), icon='folder_color_preferences')
+            item = 
Caja.MenuItem(name=''.join(['ChangeFolderColorMenu::"preferences"']), 
label=_("Global Color"), icon='folder_color_globalcolor')
             item.connect('activate', self._menu_activate_preferences)
             submenu.append_item(item)
+        elif not os.path.exists(self.foldercolor.HIDE_DONATION):
+            item_sep = Caja.MenuItem(name='ChangeFolderColorMenu::Sep2', 
label=_("Support:"), sensitive=False)
+            submenu.append_item(item_sep)
+            item = 
Caja.MenuItem(name=''.join(['ChangeFolderColorMenu::"donate"']), 
label=_("Donate? Click to hide"))
+            item.connect('activate', self._on_donate_menu)
+            submenu.append_item(item)
         
         return top_menuitem,
-        
+    
     def _menu_activate_color(self, menu, color, folders):
         """Set Custom Color"""
         for each_folder in folders:
@@ -498,7 +538,18 @@
         win.show_all()
         Gtk.main()
     
+    def _on_donate_menu(self, btn):
+        """Open from contextual menu"""
+        webbrowser.open(self.foldercolor.URL_DONATE)
+        try:
+            os.makedirs(self.foldercolor.HIDE_DONATION)
+        except OSError as exception:
+            pass
+        except:
+            pass
+    
     def _on_donate_hide(self, null):
+        """Open from global color window"""
         self.vbox_donate.hide()
         # Hide donation after show it
         try:
@@ -557,14 +608,13 @@
     """Set default global color"""
     def __init__(self):
         self.foldercolor = FolderColor()
-        pass
     
     def restore(self):
         """Restore theme to default"""
         path, name, index = self.foldercolor.get_current_icontheme()
         if not path:
             return
-        fc_name = '.'.join([name, 'foldercolor']) # Only remove a Folder Color 
theme
+        fc_name = '.'.join([name, 'foldercolor']) # Folder Color theme
         local_theme = os.path.join(self.foldercolor.USER_PATH_THEME, fc_name)
         self._set_theme(name)
     
@@ -592,197 +642,105 @@
                 return cfg.get(section, 'Inherits')
         return ''
     
-    def _cp_file(self, src, dst):
-        if os.path.isfile(src):
-            try:
-                shutil.copy2(src, dst)
-            except:
-                pass
+    def _cp_icon(self, src_file, dst_file):
+        try:
+            shutil.copy2(src_file, dst_file)
+        except:
+            pass
     
     def _generate_local_theme(self, name, inherit, color):
         """Generate a inherit local theme from system theme"""
         # Create folder
         name = '.'.join([name, 'foldercolor']) # Generate a Folder Color theme
         try:
-            dst_path = os.path.join(self.foldercolor.USER_PATH_THEME, name, 
'scalable', 'places')
-            if not os.path.exists(dst_path):
-                os.makedirs(dst_path)
-            dst_path = os.path.join(self.foldercolor.USER_PATH_THEME, name, 
'16x16', 'places')
-            if not os.path.exists(dst_path):
-                os.makedirs(dst_path)
-            dst_path = os.path.join(self.foldercolor.USER_PATH_THEME, name, 
'22x22', 'places')
-            if not os.path.exists(dst_path):
-                os.makedirs(dst_path)
-            dst_path = os.path.join(self.foldercolor.USER_PATH_THEME, name, 
'24x24', 'places')
-            if not os.path.exists(dst_path):
-                os.makedirs(dst_path)
+            for resolution,resolution_x in 
self.foldercolor.ICON_RESOLUTIONS.iteritems():
+                dst_path = os.path.join(self.foldercolor.USER_PATH_THEME, 
name, resolution_x, 'places')
+                if not os.path.exists(dst_path):
+                    os.makedirs(dst_path)
         except OSError as exception:
             pass
         except:
             pass
-
-        # Generate icons
+        
+        # Generate regular icons
         for folder in self.foldercolor.DEFAULT_FOLDERS:
-            # scalable
-            src_file = ''.join([self.foldercolor.get_path(), 
self.foldercolor.get_iconname(folder, color), '.svg'])
-            dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, name, 
'scalable', 'places', self._get_folder_icon(folder))
-            self._cp_file(src_file, dst_file)
-            # 16x16
-            src_file_16 = src_file.replace('/48', '/16').replace('48/', '16/')
-            dst_file_16 = dst_file.replace('/scalable/', '/16x16/')
-            self._cp_file(src_file_16, dst_file_16)
-            # 22x22
-            src_file_22 = src_file.replace('/48', '/22').replace('48/', '22/')
-            dst_file_22 = dst_file.replace('/scalable/', '/22x22/')
-            self._cp_file(src_file_22, dst_file_22)
-            # 24x24
-            src_file_24 = src_file.replace('/48', '/24').replace('48/', '24/')
-            dst_file_24 = dst_file.replace('/scalable/', '/24x24/')
-            self._cp_file(src_file_24, dst_file_24)
-        
-        # folder.svg
-        src_file = ''.join([self.foldercolor.get_path(), 
self.foldercolor.get_iconname('', color), '.svg'])
-        dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, name, 
'scalable', 'places', self._get_folder_icon(None, 0))
-        self._cp_file(src_file, dst_file)
-        
-        src_file_16 = src_file.replace('/48', '/16').replace('48/', '16/')
-        dst_file_16 = dst_file.replace('scalable', '16x16')
-        self._cp_file(src_file_16, dst_file_16)
-        
-        src_file_22 = src_file.replace('/48', '/22').replace('48/', '22/')
-        dst_file_22 = dst_file.replace('scalable', '22x22')
-        self._cp_file(src_file_22, dst_file_22)
-        
-        src_file_24 = src_file.replace('/48', '/24').replace('48/', '24/')
-        dst_file_24 = dst_file.replace('scalable', '24x24')
-        self._cp_file(src_file_24, dst_file_24)
-        
-        # inode-directory.svg
-        dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, name, 
'scalable', 'places', self._get_folder_icon(None, 1))
-        self._cp_file(src_file, dst_file)
-        
-        src_file_16 = src_file.replace('/48', '/16').replace('48/', '16/')
-        dst_file_16 = dst_file.replace('scalable', '16x16')
-        self._cp_file(src_file_16, dst_file_16)
-        
-        src_file_22 = src_file.replace('/48', '/22').replace('48/', '22/')
-        dst_file_22 = dst_file.replace('scalable', '22x22')
-        self._cp_file(src_file_22, dst_file_22)
-        
-        src_file_24 = src_file.replace('/48', '/24').replace('48/', '24/')
-        dst_file_24 = dst_file.replace('scalable', '24x24')
-        self._cp_file(src_file_24, dst_file_24)
-        
-        # user-home.svg
-        dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, name, 
'scalable', 'places', self._get_folder_icon(None, 2))
-        self._cp_file(src_file, dst_file)
-        
-        src_file_16 = src_file.replace('/48', '/16').replace('48/', '16/')
-        dst_file_16 = dst_file.replace('scalable', '16x16')
-        self._cp_file(src_file_16, dst_file_16)
-        
-        src_file_22 = src_file.replace('/48', '/22').replace('48/', '22/')
-        dst_file_22 = dst_file.replace('scalable', '22x22')
-        self._cp_file(src_file_22, dst_file_22)
-        
-        src_file_24 = src_file.replace('/48', '/24').replace('48/', '24/')
-        dst_file_24 = dst_file.replace('scalable', '24x24')
-        self._cp_file(src_file_24, dst_file_24)
-        
-        # folder_home.svg
-        dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, name, 
'scalable', 'places', self._get_folder_icon(None, 3))
-        self._cp_file(src_file, dst_file)
-        
-        src_file_16 = src_file.replace('/48', '/16').replace('48/', '16/')
-        dst_file_16 = dst_file.replace('scalable', '16x16')
-        self._cp_file(src_file_16, dst_file_16)
-        
-        src_file_22 = src_file.replace('/48', '/22').replace('48/', '22/')
-        dst_file_22 = dst_file.replace('scalable', '22x22')
-        self._cp_file(src_file_22, dst_file_22)
-        
-        src_file_24 = src_file.replace('/48', '/24').replace('48/', '24/')
-        dst_file_24 = dst_file.replace('scalable', '24x24')
-        self._cp_file(src_file_24, dst_file_24)
-        
-        # network-workgroup.svg
-        dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, name, 
'scalable', 'places', self._get_folder_icon(None, 4))
-        self._cp_file(src_file, dst_file)
-        
-        src_file_16 = src_file.replace('/48', '/16').replace('48/', '16/')
-        dst_file_16 = dst_file.replace('scalable', '16x16')
-        self._cp_file(src_file_16, dst_file_16)
-        
-        src_file_22 = src_file.replace('/48', '/22').replace('48/', '22/')
-        dst_file_22 = dst_file.replace('scalable', '22x22')
-        self._cp_file(src_file_22, dst_file_22)
-        
-        src_file_24 = src_file.replace('/48', '/24').replace('48/', '24/')
-        dst_file_24 = dst_file.replace('scalable', '24x24')
-        self._cp_file(src_file_24, dst_file_24)
-        
-        # folder-remote.svg
-        dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, name, 
'scalable', 'places', self._get_folder_icon(None, 5))
-        self._cp_file(src_file, dst_file)
-        
-        src_file_16 = src_file.replace('/48', '/16').replace('48/', '16/')
-        dst_file_16 = dst_file.replace('scalable', '16x16')
-        self._cp_file(src_file_16, dst_file_16)
-        
-        src_file_22 = src_file.replace('/48', '/22').replace('48/', '22/')
-        dst_file_22 = dst_file.replace('scalable', '22x22')
-        self._cp_file(src_file_22, dst_file_22)
-        
-        src_file_24 = src_file.replace('/48', '/24').replace('48/', '24/')
-        dst_file_24 = dst_file.replace('scalable', '24x24')
-        self._cp_file(src_file_24, dst_file_24)
-        
-        # document-open-recent.svg
-        dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, name, 
'scalable', 'places', self._get_folder_icon(None, 6))
-        self._cp_file(src_file, dst_file)
-        
-        src_file_16 = src_file.replace('/48', '/16').replace('48/', '16/')
-        dst_file_16 = dst_file.replace('scalable', '16x16')
-        self._cp_file(src_file_16, dst_file_16)
-        
-        src_file_22 = src_file.replace('/48', '/22').replace('48/', '22/')
-        dst_file_22 = dst_file.replace('scalable', '22x22')
-        self._cp_file(src_file_22, dst_file_22)
-        
-        src_file_24 = src_file.replace('/48', '/24').replace('48/', '24/')
-        dst_file_24 = dst_file.replace('scalable', '24x24')
-        self._cp_file(src_file_24, dst_file_24)
+            for resolution,resolution_x in 
self.foldercolor.ICON_RESOLUTIONS.iteritems():
+                # Get source default icon for a resolution
+                src_file = ''.join([self.foldercolor.get_path('places', 
resolution), self.foldercolor.get_iconname(folder, color, 'places', 
resolution), '.svg'])
+                # Generate
+                dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, 
name, resolution_x, 'places', self._get_folder_icon(folder))
+                self._cp_icon(src_file, dst_file)
+        
+        # Generate no regular icons: default, home, remote
+        for resolution,resolution_x in 
self.foldercolor.ICON_RESOLUTIONS.iteritems():
+            src_file = ''.join([self.foldercolor.get_path('places', 
resolution), self.foldercolor.get_iconname('', color, 'places', resolution), 
'.svg'])
+            
+            # folder.svg & inode-directory.svg
+            dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, name, 
resolution_x, 'places', self._get_folder_icon(None, 0)) # folder.svg
+            self._cp_icon(src_file, dst_file)
+            dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, name, 
resolution_x, 'places', self._get_folder_icon(None, 1)) # inode-directory.svg
+            self._cp_icon(src_file, dst_file)
+            
+            # user-home.svg & folder_home.svg
+            src_icon_default_folder = src_file
+            # Exist home? If not > default folder icon
+            src_file = ''.join([self.foldercolor.get_path('places', 
resolution), self.foldercolor.EXTRA_HOME % color, '.svg'])
+            if not os.path.isfile(src_file):
+                src_file = src_icon_default_folder
+            # Generate
+            dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, name, 
resolution_x, 'places', self._get_folder_icon(None, 2)) # user-home.svg
+            self._cp_icon(src_file, dst_file)
+            dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, name, 
resolution_x, 'places', self._get_folder_icon(None, 3)) # folder_home.svg
+            self._cp_icon(src_file, dst_file)
+        
+            # network-workgroup.svg & folder-remote.svg
+            # Exist remote? If not > default folder icon
+            src_file = ''.join([self.foldercolor.get_path('places', 
resolution), self.foldercolor.EXTRA_REMOTE % color, '.svg'])
+            if not os.path.isfile(src_file):
+                src_file = src_icon_default_folder
+            # Generate
+            dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, name, 
resolution_x, 'places', self._get_folder_icon(None, 4)) # network-workgroup.svg
+            self._cp_icon(src_file, dst_file)
+            dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, name, 
resolution_x, 'places', self._get_folder_icon(None, 5)) # folder-remote.svg
+            self._cp_icon(src_file, dst_file)
+            
+            # document-open-recent.svg
+            src_file = ''.join([self.foldercolor.get_path('places', 
resolution), self.foldercolor.EXTRA_RECENT % color, '.svg'])
+            if not os.path.isfile(src_file):
+                src_file = src_icon_default_folder
+            # Generate
+            dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, name, 
resolution_x, 'places', self._get_folder_icon(None, 6)) # 
document-open-recent.svg
+            self._cp_icon(src_file, dst_file)
         
         # Generate index.theme
         index_file = '/'.join([os.path.join(self.foldercolor.USER_PATH_THEME, 
name), 'index.theme'])
         cfg = ConfigParser.ConfigParser()
         cfg.optionxform = str
         cfg.add_section('Icon Theme')
-        cfg.set('Icon Theme', 'Name',        name)
-        cfg.set('Icon Theme', 'Hidden',      'true')
-        cfg.set('Icon Theme', 'Comment',     'Generated by Folder Color')
-        cfg.set('Icon Theme', 'Inherits',    inherit)
-        cfg.set('Icon Theme', 'Directories', 
'scalable/places,16x16/places,22x22/places,24x24/places')
-        cfg.add_section('scalable/places')
-        cfg.set('scalable/places', 'Size',    '48')
-        cfg.set('scalable/places', 'Context', 'Places')
-        cfg.set('scalable/places', 'Type',    'Scalable')
-        cfg.add_section('16x16/places')
-        cfg.set('16x16/places', 'Size',    '16')
-        cfg.set('16x16/places', 'Context', 'Places')
-        cfg.set('16x16/places', 'Type',    'Threshold')
-        cfg.add_section('22x22/places')
-        cfg.set('22x22/places', 'Size',    '22')
-        cfg.set('22x22/places', 'Context', 'Places')
-        cfg.set('22x22/places', 'Type',    'Threshold')
-        cfg.add_section('24x24/places')
-        cfg.set('24x24/places', 'Size',    '24')
-        cfg.set('24x24/places', 'Context', 'Places')
-        cfg.set('24x24/places', 'Type',    'Threshold')
+        cfg.set('Icon Theme', 'Name',     name)
+        cfg.set('Icon Theme', 'Hidden',   'true')
+        cfg.set('Icon Theme', 'Comment',  'Generated by Folder Color')
+        cfg.set('Icon Theme', 'Inherits', inherit)
+        
+        for resolution,resolution_x in 
self.foldercolor.ICON_RESOLUTIONS.iteritems():
+            section = '/'.join([resolution_x, 'places']) # 16x16/places
+            try:
+                all_px = ','.join([all_px, section])
+            except:
+                all_px = section
+        cfg.set('Icon Theme', 'Directories', all_px)
+        
+        for resolution,resolution_x in 
self.foldercolor.ICON_RESOLUTIONS.iteritems():
+            section = '/'.join([resolution_x, 'places']) # 16x16/places
+            cfg.add_section(section)
+            cfg.set(section, 'Size',    resolution)
+            cfg.set(section, 'Context', 'Places')
+            cfg.set(section, 'Type',    'Threshold')
+        
         f = open(index_file, 'w')
         cfg.write(f)  
         f.close()
-    
+        
         # Reload icon cache
         os.system('gtk-update-icon-cache -q "%s"' % 
os.path.join(self.foldercolor.USER_PATH_THEME, name))
         
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/folder-color-caja/debian/changelog 
new/folder-color-caja/debian/changelog
--- old/folder-color-caja/debian/changelog      2015-03-29 12:04:42.000000000 
+0200
+++ new/folder-color-caja/debian/changelog      2015-05-01 18:19:13.000000000 
+0200
@@ -1,7 +1,7 @@
-folder-color-caja (0.0.70) trusty; urgency=low
+folder-color-caja (0.0.78) trusty; urgency=low
 
-  * Fixed #1437800: No transparency in custom colors
-  * Updated translations
+  * Orange color changed to Humanity
+  * Dark recent inside
 
- -- costales <[email protected]>  Sat, 28 Mar 2015 18:12:31 +0000
+ -- costales <[email protected]>  Fri, 1 May 2015 18:04:31 +0000
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/folder-color-caja/debian/control 
new/folder-color-caja/debian/control
--- old/folder-color-caja/debian/control        2015-03-29 12:04:42.000000000 
+0200
+++ new/folder-color-caja/debian/control        2015-05-01 18:19:13.000000000 
+0200
@@ -1,7 +1,7 @@
 Source: folder-color-caja
 Section: utils
 Priority: extra
-Standards-Version: 0.0.70
+Standards-Version: 0.0.78
 Maintainer: costales <[email protected]>
 Build-Depends: python-distutils-extra, debhelper (>=7)
 Homepage: https://code.launchpad.net/folder-color
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/folder-color-caja/setup.py 
new/folder-color-caja/setup.py
--- old/folder-color-caja/setup.py      2015-03-29 12:04:41.000000000 +0200
+++ new/folder-color-caja/setup.py      2015-05-01 18:19:12.000000000 +0200
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 
-# Folder Color 0.0.70 - http://launchpad.net/folder-color
+# Folder Color 0.0.78 - http://launchpad.net/folder-color
 # Copyright (C) 2012-2015 Marcos Alvarez Costales 
https://launchpad.net/~costales
 #
 # folder-color is free software; you can redistribute it and/or modify
@@ -26,7 +26,7 @@
 # Setup stage
 DistUtilsExtra.auto.setup(
     name         = "folder-color-caja",
-    version      = "0.0.70",
+    version      = "0.0.78",
     description  = "Change your folder color in Caja",
     author       = "Marcos Alvarez Costales https://launchpad.net/~costales";,
     author_email = "https://launchpad.net/~costales";,

++++++ folder-color-common_0.0.70_all.tar.gz -> 
folder-color-common_0.0.78.tar.gz ++++++
++++ 69948 lines of diff (skipped)

++++++ folder-color_0.0.70_all.tar.gz -> folder-color_0.0.78.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/folder-color/debian/changelog 
new/folder-color/debian/changelog
--- old/folder-color/debian/changelog   2015-03-29 12:04:28.000000000 +0200
+++ new/folder-color/debian/changelog   2015-05-01 18:19:04.000000000 +0200
@@ -1,7 +1,7 @@
-folder-color (0.0.70) trusty; urgency=low
+folder-color (0.0.78) trusty; urgency=low
 
-  * Fixed #1437800: No transparency in custom colors
-  * Updated translations
+  * Orange color changed to Humanity
+  * Dark recent inside
 
- -- costales <[email protected]>  Sat, 28 Mar 2015 18:12:31 +0000
+ -- costales <[email protected]>  Fri, 1 May 2015 18:04:31 +0000
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/folder-color/debian/control 
new/folder-color/debian/control
--- old/folder-color/debian/control     2015-03-29 12:04:28.000000000 +0200
+++ new/folder-color/debian/control     2015-05-01 18:19:04.000000000 +0200
@@ -1,7 +1,7 @@
 Source: folder-color
 Section: utils
 Priority: extra
-Standards-Version: 0.0.70
+Standards-Version: 0.0.78
 Maintainer: costales <[email protected]>
 Build-Depends: python-distutils-extra, debhelper (>=7)
 Homepage: https://code.launchpad.net/folder-color
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/folder-color/nautilus-extension/folder-color.py 
new/folder-color/nautilus-extension/folder-color.py
--- old/folder-color/nautilus-extension/folder-color.py 2015-03-29 
12:03:51.000000000 +0200
+++ new/folder-color/nautilus-extension/folder-color.py 2015-05-01 
18:18:43.000000000 +0200
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-# Folder Color 0.0.70
+# Folder Color 0.0.78
 # Copyright (C) 2012-2015 Marcos Alvarez Costales 
https://launchpad.net/~costales
 #
 # Folder Color is free software; you can redistribute it and/or modify
@@ -16,7 +16,7 @@
 # along with Folder Color; if not, see http://www.gnu.org/licenses
 # for more information.
 
-import os, urllib, gettext, glob, webbrowser, operator, shutil, ConfigParser
+import os, urllib, gettext, glob, webbrowser, operator, shutil, ConfigParser, 
subprocess
 from gi.repository import Nautilus, Gtk, GObject, Gio, GLib
 
 # i18n
@@ -31,22 +31,29 @@
         
         self.DEFAULT_PATH_THEME = ''
         
-        self.PLACES  = 'places'
-        self.EMBLEMS = 'emblems'
-        self.CUSTOM  = 'custom'
+        self.PLACES       = 'places'
+        self.EMBLEMS      = 'emblems'
+        self.CUSTOM       = 'custom'
+        self.GLOBALCOLOR  = 'globalcolor'
         
         self.FOLDER      = 'folder'
-        self.PRE_PLACES  = '_'.join([self.FOLDER, 'color'])
-        self.PRE_EMBLEMS = '_'.join([self.FOLDER, 'emblem'])
-        self.PRE_CUSTOMS = '_'.join([self.FOLDER, 'custom'])
-        
-        self.SEARCH_PLACES  = '_'.join([self.PRE_PLACES,  '*.svg'])
-        self.SEARCH_EMBLEMS = '_'.join([self.PRE_EMBLEMS, '*.svg'])
-        self.SEARCH_CUSTOMS = ''.join([self.PRE_CUSTOMS, '*.svg'])
-        
-        self.CHECK_PLACE  = 'folder_color_blue'
-        self.CHECK_EMBLEM = 'folder_emblem_favorite'
-        self.CHECK_CUSTOM = 'folder_custom'
+        self.PRE_PLACES  = 'folder_color'
+        self.PRE_EMBLEMS = 'folder_emblem'
+        self.PRE_CUSTOMS = 'folder_custom'
+        
+        self.SEARCH_PLACES      = 'folder_color_*.svg'
+        self.SEARCH_EMBLEMS     = 'folder_emblem_*.svg'
+        self.SEARCH_CUSTOMS     = 'folder_custom*.svg'
+        self.SEARCH_GLOBALCOLOR = 'folder_color_globalcolor.svg'
+        
+        self.CHECK_PLACE       = 'folder_color_blue'
+        self.CHECK_EMBLEM      = 'folder_emblem_favorite'
+        self.CHECK_CUSTOM      = 'folder_custom'
+        self.CHECK_GLOBALCOLOR = 'folder_color_globalcolor'
+        
+        self.EXTRA_HOME   = 'folder_extraicons_%s_home'
+        self.EXTRA_REMOTE = 'folder_extraicons_%s_remote'
+        self.EXTRA_RECENT = 'folder_extraicons_%s_recent'
         
         self.DESKTOP   = 'desktop'
         self.DOCUMENTS = 'documents'
@@ -59,6 +66,7 @@
         
         self.DEFAULT_ICONS   = ('undo', 'edit', 'picker', 'preferences', 
'default', self.DESKTOP, self.DOCUMENTS, self.DOWNLOADS, self.MUSIC, 
self.PICTURES, self.PUBLIC, self.TEMPLATES, self.VIDEOS)
         self.DEFAULT_FOLDERS = self._get_default_folders()
+        self.ICON_RESOLUTIONS = {'16': '16x16', '22': '22x22', '24': '24x24', 
'32': '32x32', '48': '48x48', '64': '64x64'}
         
         self.SYSTEM_PATH_THEME = '/usr/share/icons'
         self.USER_PATH_THEME   = os.path.join(os.getenv('HOME'), '.icons')
@@ -71,12 +79,12 @@
         self.VALUE_LIGHT  = 'value_light'
         self.VALUE_MIDDLE = 'value_middle'
         self.VALUE_DARK   = 'value_dark'
-    
+        
         # Nautilus crashed? Allow future Preference dialogs
         if remove_pid:
             self.lock.remove()
     
-    def get_iconname(self, folder, name, what='places'):
+    def get_iconname(self, folder, name, what='places', get_px='48'):
         """For 'green' returns folder_color_green_downloads"""
         if what == self.PLACES:
             prefix = self.PRE_PLACES
@@ -89,7 +97,7 @@
         
         if folder in self.DEFAULT_FOLDERS:
             iconname = '_'.join([prefix, name.replace(' ', '_').lower(), 
self.DEFAULT_FOLDERS[folder]])
-            filename = ''.join([self.get_path(what), iconname, '.svg'])
+            filename = ''.join([self.get_path(what, get_px), iconname, '.svg'])
             if os.path.isfile(filename): # Exist?
                 return iconname
         
@@ -103,16 +111,18 @@
             icon_name = icon_name.replace(self.PRE_PLACES, 
'').replace(self.PRE_EMBLEMS, '').replace('_', ' ').strip()
         return icon_name
     
-    def get_path(self, what='places'):
+    def get_path(self, what='places', get_px='48'):
         """Get current path. By example: 
/usr/share/icons/hicolor/48x48/places/"""
         icon = Gtk.IconTheme.get_default()
         
         if what == self.PLACES:
-            icon_path = icon.lookup_icon(self.CHECK_PLACE,  48, 0)
+            icon_path = icon.lookup_icon(self.CHECK_PLACE, int(get_px), 0)
         elif what == self.EMBLEMS:
             icon_path = icon.lookup_icon(self.CHECK_EMBLEM, 24, 0)
         elif what == self.CUSTOM:
-            icon_path = icon.lookup_icon(self.CHECK_CUSTOM, 48, 0)
+            icon_path = icon.lookup_icon(self.CHECK_CUSTOM, int(get_px), 0)
+        elif what == self.GLOBALCOLOR:
+            icon_path = icon.lookup_icon(self.CHECK_GLOBALCOLOR, 16, 0)
         else:
             return ''
         
@@ -136,6 +146,8 @@
             path = ''.join([self.get_path(what), self.SEARCH_EMBLEMS])
         elif what == self.CUSTOM:
             path = ''.join([self.get_path(what), self.SEARCH_CUSTOMS])
+        elif what == self.GLOBALCOLOR:
+            path = ''.join([self.get_path(what), self.SEARCH_GLOBALCOLOR])
         else:
             return available_items
         
@@ -179,7 +191,8 @@
     
     def _reload_icon(self, folder):
         """Reload the current folder icon"""
-        os.system('touch "%s"' % folder)
+        proc = subprocess.Popen(['touch', folder], shell=False)
+        proc.communicate()
     
     def _get_default_folders(self):
         """Default user folders"""
@@ -232,9 +245,12 @@
         """Set an emblem"""
         # TODO: Use Gio
         if emblem:
-            os.system('gvfs-set-attribute -t stringv "%s" metadata::emblems 
"%s"' % (folder, emblem))
+            cmd = ['gvfs-set-attribute', '-t', 'stringv', folder, 
'metadata::emblems', emblem]
         else:
-            os.system('gvfs-set-attribute -t unset "%s" metadata::emblems' % 
folder)
+            cmd = ['gvfs-set-attribute', '-t', 'unset', folder, 
'metadata::emblems']
+        
+        proc = subprocess.Popen(cmd, shell=False)
+        proc.communicate()
         
         self._reload_icon(folder)
     
@@ -304,7 +320,6 @@
                 pass
             except:
                 pass
-        pass
     
     def get_file_items(self, window, items):
         """Nautilus invoke this function in its startup > Then, create menu 
entry"""
@@ -312,7 +327,25 @@
         if not self._check_generate_menu(items):
             return
         # Return menu
-        return self._generate_menu(items)
+        return self._generate_menu(items, self._check_generate_restore(items))
+    
+    def _check_generate_restore(self, items):
+        # For each dir, search custom icon or emblem
+        for item in items:
+            if item.is_gone():
+                continue
+            
+            folder_name = urllib.unquote(item.get_uri()[7:])
+            folder = Gio.File.new_for_path(folder_name)
+            info = folder.query_info('metadata', 0, None)
+            if info.get_attribute_as_string('metadata::custom-icon-name'):
+                return True
+            if info.get_attribute_as_string('metadata::custom-icon'):
+                return True
+            if info.get_attribute_as_string('metadata::emblems'):
+                return True
+        
+        return False
     
     def _check_generate_menu(self, items):
         """Show the menu?"""
@@ -336,7 +369,7 @@
         # All OK > Generate menu
         return True
     
-    def _generate_menu(self, items):
+    def _generate_menu(self, items, show_restore):
         """Generate menu: Color | Custom? | Restore | Emblems? | Preferences"""
         # Main menu [1 or +1 folder(s)]
         if len(items) > 1:
@@ -377,24 +410,31 @@
             submenu.append_item(item)
         
         # Restore
-        item_sep = Nautilus.MenuItem(name='ChangeFolderEmblemMenu::Sep', 
label=_("Restore:"), sensitive=False)
-        submenu.append_item(item_sep)
-        
-        item_restore = 
Nautilus.MenuItem(name='ChangeFolderColorMenu::Restore', label=_("Default"), 
icon='folder_color_undo')
-        item_restore.connect('activate', self._menu_activate_restore, items)
-        submenu.append_item(item_restore)
-        
-        # Preferences
-        path = self.foldercolor.get_current_icontheme()[0]
-        if path:
+        if show_restore:
+            item_sep = Nautilus.MenuItem(name='ChangeFolderEmblemMenu::Sep', 
label=_("Restore:"), sensitive=False)
+            submenu.append_item(item_sep)
+            
+            item_restore = 
Nautilus.MenuItem(name='ChangeFolderColorMenu::Restore', label=_("Default"), 
icon='folder_color_undo')
+            item_restore.connect('activate', self._menu_activate_restore, 
items)
+            submenu.append_item(item_restore)
+        
+        # Global Color
+        path_theme,customs = 
self.foldercolor.get_available_icons('globalcolor')
+        if len(customs) and path_theme == self.DEFAULT_PATH_THEME: # Show 
Global Color only if the theme wants that
             item_sep = Nautilus.MenuItem(name='ChangeFolderColorMenu::Sep2', 
label=_("Edit:"), sensitive=False)
             submenu.append_item(item_sep)
-            item = 
Nautilus.MenuItem(name=''.join(['ChangeFolderColorMenu::"preferences"']), 
label=_("Global Color"), icon='folder_color_preferences')
+            item = 
Nautilus.MenuItem(name=''.join(['ChangeFolderColorMenu::"preferences"']), 
label=_("Global Color"), icon='folder_color_globalcolor')
             item.connect('activate', self._menu_activate_preferences)
             submenu.append_item(item)
+        elif not os.path.exists(self.foldercolor.HIDE_DONATION):
+            item_sep = Nautilus.MenuItem(name='ChangeFolderColorMenu::Sep2', 
label=_("Support:"), sensitive=False)
+            submenu.append_item(item_sep)
+            item = 
Nautilus.MenuItem(name=''.join(['ChangeFolderColorMenu::"donate"']), 
label=_("Donate? Click to hide"))
+            item.connect('activate', self._on_donate_menu)
+            submenu.append_item(item)
         
         return top_menuitem,
-        
+    
     def _menu_activate_color(self, menu, color, folders):
         """Set Custom Color"""
         for each_folder in folders:
@@ -498,7 +538,18 @@
         win.show_all()
         Gtk.main()
     
+    def _on_donate_menu(self, btn):
+        """Open from contextual menu"""
+        webbrowser.open(self.foldercolor.URL_DONATE)
+        try:
+            os.makedirs(self.foldercolor.HIDE_DONATION)
+        except OSError as exception:
+            pass
+        except:
+            pass
+    
     def _on_donate_hide(self, null):
+        """Open from global color window"""
         self.vbox_donate.hide()
         # Hide donation after show it
         try:
@@ -557,14 +608,13 @@
     """Set default global color"""
     def __init__(self):
         self.foldercolor = FolderColor()
-        pass
     
     def restore(self):
         """Restore theme to default"""
         path, name, index = self.foldercolor.get_current_icontheme()
         if not path:
             return
-        fc_name = '.'.join([name, 'foldercolor']) # Only remove a Folder Color 
theme
+        fc_name = '.'.join([name, 'foldercolor']) # Folder Color theme
         local_theme = os.path.join(self.foldercolor.USER_PATH_THEME, fc_name)
         self._set_theme(name)
     
@@ -592,197 +642,105 @@
                 return cfg.get(section, 'Inherits')
         return ''
     
-    def _cp_file(self, src, dst):
-        if os.path.isfile(src):
-            try:
-                shutil.copy2(src, dst)
-            except:
-                pass
+    def _cp_icon(self, src_file, dst_file):
+        try:
+            shutil.copy2(src_file, dst_file)
+        except:
+            pass
     
     def _generate_local_theme(self, name, inherit, color):
         """Generate a inherit local theme from system theme"""
         # Create folder
         name = '.'.join([name, 'foldercolor']) # Generate a Folder Color theme
         try:
-            dst_path = os.path.join(self.foldercolor.USER_PATH_THEME, name, 
'scalable', 'places')
-            if not os.path.exists(dst_path):
-                os.makedirs(dst_path)
-            dst_path = os.path.join(self.foldercolor.USER_PATH_THEME, name, 
'16x16', 'places')
-            if not os.path.exists(dst_path):
-                os.makedirs(dst_path)
-            dst_path = os.path.join(self.foldercolor.USER_PATH_THEME, name, 
'22x22', 'places')
-            if not os.path.exists(dst_path):
-                os.makedirs(dst_path)
-            dst_path = os.path.join(self.foldercolor.USER_PATH_THEME, name, 
'24x24', 'places')
-            if not os.path.exists(dst_path):
-                os.makedirs(dst_path)
+            for resolution,resolution_x in 
self.foldercolor.ICON_RESOLUTIONS.iteritems():
+                dst_path = os.path.join(self.foldercolor.USER_PATH_THEME, 
name, resolution_x, 'places')
+                if not os.path.exists(dst_path):
+                    os.makedirs(dst_path)
         except OSError as exception:
             pass
         except:
             pass
-
-        # Generate icons
+        
+        # Generate regular icons
         for folder in self.foldercolor.DEFAULT_FOLDERS:
-            # scalable
-            src_file = ''.join([self.foldercolor.get_path(), 
self.foldercolor.get_iconname(folder, color), '.svg'])
-            dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, name, 
'scalable', 'places', self._get_folder_icon(folder))
-            self._cp_file(src_file, dst_file)
-            # 16x16
-            src_file_16 = src_file.replace('/48', '/16').replace('48/', '16/')
-            dst_file_16 = dst_file.replace('/scalable/', '/16x16/')
-            self._cp_file(src_file_16, dst_file_16)
-            # 22x22
-            src_file_22 = src_file.replace('/48', '/22').replace('48/', '22/')
-            dst_file_22 = dst_file.replace('/scalable/', '/22x22/')
-            self._cp_file(src_file_22, dst_file_22)
-            # 24x24
-            src_file_24 = src_file.replace('/48', '/24').replace('48/', '24/')
-            dst_file_24 = dst_file.replace('/scalable/', '/24x24/')
-            self._cp_file(src_file_24, dst_file_24)
-        
-        # folder.svg
-        src_file = ''.join([self.foldercolor.get_path(), 
self.foldercolor.get_iconname('', color), '.svg'])
-        dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, name, 
'scalable', 'places', self._get_folder_icon(None, 0))
-        self._cp_file(src_file, dst_file)
-        
-        src_file_16 = src_file.replace('/48', '/16').replace('48/', '16/')
-        dst_file_16 = dst_file.replace('scalable', '16x16')
-        self._cp_file(src_file_16, dst_file_16)
-        
-        src_file_22 = src_file.replace('/48', '/22').replace('48/', '22/')
-        dst_file_22 = dst_file.replace('scalable', '22x22')
-        self._cp_file(src_file_22, dst_file_22)
-        
-        src_file_24 = src_file.replace('/48', '/24').replace('48/', '24/')
-        dst_file_24 = dst_file.replace('scalable', '24x24')
-        self._cp_file(src_file_24, dst_file_24)
-        
-        # inode-directory.svg
-        dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, name, 
'scalable', 'places', self._get_folder_icon(None, 1))
-        self._cp_file(src_file, dst_file)
-        
-        src_file_16 = src_file.replace('/48', '/16').replace('48/', '16/')
-        dst_file_16 = dst_file.replace('scalable', '16x16')
-        self._cp_file(src_file_16, dst_file_16)
-        
-        src_file_22 = src_file.replace('/48', '/22').replace('48/', '22/')
-        dst_file_22 = dst_file.replace('scalable', '22x22')
-        self._cp_file(src_file_22, dst_file_22)
-        
-        src_file_24 = src_file.replace('/48', '/24').replace('48/', '24/')
-        dst_file_24 = dst_file.replace('scalable', '24x24')
-        self._cp_file(src_file_24, dst_file_24)
-        
-        # user-home.svg
-        dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, name, 
'scalable', 'places', self._get_folder_icon(None, 2))
-        self._cp_file(src_file, dst_file)
-        
-        src_file_16 = src_file.replace('/48', '/16').replace('48/', '16/')
-        dst_file_16 = dst_file.replace('scalable', '16x16')
-        self._cp_file(src_file_16, dst_file_16)
-        
-        src_file_22 = src_file.replace('/48', '/22').replace('48/', '22/')
-        dst_file_22 = dst_file.replace('scalable', '22x22')
-        self._cp_file(src_file_22, dst_file_22)
-        
-        src_file_24 = src_file.replace('/48', '/24').replace('48/', '24/')
-        dst_file_24 = dst_file.replace('scalable', '24x24')
-        self._cp_file(src_file_24, dst_file_24)
-        
-        # folder_home.svg
-        dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, name, 
'scalable', 'places', self._get_folder_icon(None, 3))
-        self._cp_file(src_file, dst_file)
-        
-        src_file_16 = src_file.replace('/48', '/16').replace('48/', '16/')
-        dst_file_16 = dst_file.replace('scalable', '16x16')
-        self._cp_file(src_file_16, dst_file_16)
-        
-        src_file_22 = src_file.replace('/48', '/22').replace('48/', '22/')
-        dst_file_22 = dst_file.replace('scalable', '22x22')
-        self._cp_file(src_file_22, dst_file_22)
-        
-        src_file_24 = src_file.replace('/48', '/24').replace('48/', '24/')
-        dst_file_24 = dst_file.replace('scalable', '24x24')
-        self._cp_file(src_file_24, dst_file_24)
-        
-        # network-workgroup.svg
-        dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, name, 
'scalable', 'places', self._get_folder_icon(None, 4))
-        self._cp_file(src_file, dst_file)
-        
-        src_file_16 = src_file.replace('/48', '/16').replace('48/', '16/')
-        dst_file_16 = dst_file.replace('scalable', '16x16')
-        self._cp_file(src_file_16, dst_file_16)
-        
-        src_file_22 = src_file.replace('/48', '/22').replace('48/', '22/')
-        dst_file_22 = dst_file.replace('scalable', '22x22')
-        self._cp_file(src_file_22, dst_file_22)
-        
-        src_file_24 = src_file.replace('/48', '/24').replace('48/', '24/')
-        dst_file_24 = dst_file.replace('scalable', '24x24')
-        self._cp_file(src_file_24, dst_file_24)
-        
-        # folder-remote.svg
-        dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, name, 
'scalable', 'places', self._get_folder_icon(None, 5))
-        self._cp_file(src_file, dst_file)
-        
-        src_file_16 = src_file.replace('/48', '/16').replace('48/', '16/')
-        dst_file_16 = dst_file.replace('scalable', '16x16')
-        self._cp_file(src_file_16, dst_file_16)
-        
-        src_file_22 = src_file.replace('/48', '/22').replace('48/', '22/')
-        dst_file_22 = dst_file.replace('scalable', '22x22')
-        self._cp_file(src_file_22, dst_file_22)
-        
-        src_file_24 = src_file.replace('/48', '/24').replace('48/', '24/')
-        dst_file_24 = dst_file.replace('scalable', '24x24')
-        self._cp_file(src_file_24, dst_file_24)
-        
-        # document-open-recent.svg
-        dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, name, 
'scalable', 'places', self._get_folder_icon(None, 6))
-        self._cp_file(src_file, dst_file)
-        
-        src_file_16 = src_file.replace('/48', '/16').replace('48/', '16/')
-        dst_file_16 = dst_file.replace('scalable', '16x16')
-        self._cp_file(src_file_16, dst_file_16)
-        
-        src_file_22 = src_file.replace('/48', '/22').replace('48/', '22/')
-        dst_file_22 = dst_file.replace('scalable', '22x22')
-        self._cp_file(src_file_22, dst_file_22)
-        
-        src_file_24 = src_file.replace('/48', '/24').replace('48/', '24/')
-        dst_file_24 = dst_file.replace('scalable', '24x24')
-        self._cp_file(src_file_24, dst_file_24)
+            for resolution,resolution_x in 
self.foldercolor.ICON_RESOLUTIONS.iteritems():
+                # Get source default icon for a resolution
+                src_file = ''.join([self.foldercolor.get_path('places', 
resolution), self.foldercolor.get_iconname(folder, color, 'places', 
resolution), '.svg'])
+                # Generate
+                dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, 
name, resolution_x, 'places', self._get_folder_icon(folder))
+                self._cp_icon(src_file, dst_file)
+        
+        # Generate no regular icons: default, home, remote
+        for resolution,resolution_x in 
self.foldercolor.ICON_RESOLUTIONS.iteritems():
+            src_file = ''.join([self.foldercolor.get_path('places', 
resolution), self.foldercolor.get_iconname('', color, 'places', resolution), 
'.svg'])
+            
+            # folder.svg & inode-directory.svg
+            dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, name, 
resolution_x, 'places', self._get_folder_icon(None, 0)) # folder.svg
+            self._cp_icon(src_file, dst_file)
+            dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, name, 
resolution_x, 'places', self._get_folder_icon(None, 1)) # inode-directory.svg
+            self._cp_icon(src_file, dst_file)
+            
+            # user-home.svg & folder_home.svg
+            src_icon_default_folder = src_file
+            # Exist home? If not > default folder icon
+            src_file = ''.join([self.foldercolor.get_path('places', 
resolution), self.foldercolor.EXTRA_HOME % color, '.svg'])
+            if not os.path.isfile(src_file):
+                src_file = src_icon_default_folder
+            # Generate
+            dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, name, 
resolution_x, 'places', self._get_folder_icon(None, 2)) # user-home.svg
+            self._cp_icon(src_file, dst_file)
+            dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, name, 
resolution_x, 'places', self._get_folder_icon(None, 3)) # folder_home.svg
+            self._cp_icon(src_file, dst_file)
+        
+            # network-workgroup.svg & folder-remote.svg
+            # Exist remote? If not > default folder icon
+            src_file = ''.join([self.foldercolor.get_path('places', 
resolution), self.foldercolor.EXTRA_REMOTE % color, '.svg'])
+            if not os.path.isfile(src_file):
+                src_file = src_icon_default_folder
+            # Generate
+            dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, name, 
resolution_x, 'places', self._get_folder_icon(None, 4)) # network-workgroup.svg
+            self._cp_icon(src_file, dst_file)
+            dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, name, 
resolution_x, 'places', self._get_folder_icon(None, 5)) # folder-remote.svg
+            self._cp_icon(src_file, dst_file)
+            
+            # document-open-recent.svg
+            src_file = ''.join([self.foldercolor.get_path('places', 
resolution), self.foldercolor.EXTRA_RECENT % color, '.svg'])
+            if not os.path.isfile(src_file):
+                src_file = src_icon_default_folder
+            # Generate
+            dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, name, 
resolution_x, 'places', self._get_folder_icon(None, 6)) # 
document-open-recent.svg
+            self._cp_icon(src_file, dst_file)
         
         # Generate index.theme
         index_file = '/'.join([os.path.join(self.foldercolor.USER_PATH_THEME, 
name), 'index.theme'])
         cfg = ConfigParser.ConfigParser()
         cfg.optionxform = str
         cfg.add_section('Icon Theme')
-        cfg.set('Icon Theme', 'Name',        name)
-        cfg.set('Icon Theme', 'Hidden',      'true')
-        cfg.set('Icon Theme', 'Comment',     'Generated by Folder Color')
-        cfg.set('Icon Theme', 'Inherits',    inherit)
-        cfg.set('Icon Theme', 'Directories', 
'scalable/places,16x16/places,22x22/places,24x24/places')
-        cfg.add_section('scalable/places')
-        cfg.set('scalable/places', 'Size',    '48')
-        cfg.set('scalable/places', 'Context', 'Places')
-        cfg.set('scalable/places', 'Type',    'Scalable')
-        cfg.add_section('16x16/places')
-        cfg.set('16x16/places', 'Size',    '16')
-        cfg.set('16x16/places', 'Context', 'Places')
-        cfg.set('16x16/places', 'Type',    'Threshold')
-        cfg.add_section('22x22/places')
-        cfg.set('22x22/places', 'Size',    '22')
-        cfg.set('22x22/places', 'Context', 'Places')
-        cfg.set('22x22/places', 'Type',    'Threshold')
-        cfg.add_section('24x24/places')
-        cfg.set('24x24/places', 'Size',    '24')
-        cfg.set('24x24/places', 'Context', 'Places')
-        cfg.set('24x24/places', 'Type',    'Threshold')
+        cfg.set('Icon Theme', 'Name',     name)
+        cfg.set('Icon Theme', 'Hidden',   'true')
+        cfg.set('Icon Theme', 'Comment',  'Generated by Folder Color')
+        cfg.set('Icon Theme', 'Inherits', inherit)
+        
+        for resolution,resolution_x in 
self.foldercolor.ICON_RESOLUTIONS.iteritems():
+            section = '/'.join([resolution_x, 'places']) # 16x16/places
+            try:
+                all_px = ','.join([all_px, section])
+            except:
+                all_px = section
+        cfg.set('Icon Theme', 'Directories', all_px)
+        
+        for resolution,resolution_x in 
self.foldercolor.ICON_RESOLUTIONS.iteritems():
+            section = '/'.join([resolution_x, 'places']) # 16x16/places
+            cfg.add_section(section)
+            cfg.set(section, 'Size',    resolution)
+            cfg.set(section, 'Context', 'Places')
+            cfg.set(section, 'Type',    'Threshold')
+        
         f = open(index_file, 'w')
         cfg.write(f)  
         f.close()
-    
+        
         # Reload icon cache
         os.system('gtk-update-icon-cache -q "%s"' % 
os.path.join(self.foldercolor.USER_PATH_THEME, name))
         
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/folder-color/setup.py new/folder-color/setup.py
--- old/folder-color/setup.py   2015-03-29 12:04:28.000000000 +0200
+++ new/folder-color/setup.py   2015-05-01 18:19:04.000000000 +0200
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 
-# Folder Color 0.0.70 - http://launchpad.net/folder-color
+# Folder Color 0.0.78 - http://launchpad.net/folder-color
 # Copyright (C) 2012-2015 Marcos Alvarez Costales 
https://launchpad.net/~costales
 #
 # folder-color is free software; you can redistribute it and/or modify
@@ -26,7 +26,7 @@
 # Setup stage
 DistUtilsExtra.auto.setup(
     name         = "folder-color",
-    version      = "0.0.70",
+    version      = "0.0.78",
     description  = "Change your folder color in Nautilus",
     author       = "Marcos Alvarez Costales https://launchpad.net/~costales";,
     author_email = "https://launchpad.net/~costales";,


Reply via email to