Hello community, here is the log from the commit of package folder-color for openSUSE:Factory checked in at 2015-03-30 19:33:49 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 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-23 12:17:51.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.folder-color.new/folder-color.changes 2015-03-30 19:33:50.000000000 +0200 @@ -1,0 +2,7 @@ +Sun Mar 29 13:06:32 UTC 2015 - [email protected] + +- Update to 0.0.70: + * Fix no transparency in custom colours. + * Update translations. + +------------------------------------------------------------------- Old: ---- folder-color-caja_0.0.62_all.tar.gz folder-color-common_0.0.60_all.tar.gz folder-color_0.0.62_all.tar.gz New: ---- 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 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ folder-color.spec ++++++ --- /var/tmp/diff_new_pack.ZQcWIN/_old 2015-03-30 19:33:51.000000000 +0200 +++ /var/tmp/diff_new_pack.ZQcWIN/_new 2015-03-30 19:33:51.000000000 +0200 @@ -17,16 +17,15 @@ %define _name folder_color -%define _version 0.0.6x -%define _common_ver 0.0.60 +%define _version 0.0.7x Name: folder-color -Version: 0.0.62 +Version: 0.0.70 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_%{_common_ver}_all.tar.gz +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 BuildRequires: fdupes ++++++ folder-color-caja_0.0.62_all.tar.gz -> folder-color-caja_0.0.70_all.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-18 19:42:06.000000000 +0100 +++ new/folder-color-caja/caja-extension/folder-color.py 2015-03-29 12:04:42.000000000 +0200 @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Folder Color 0.0.62 +# Folder Color 0.0.70 # Copyright (C) 2012-2015 Marcos Alvarez Costales https://launchpad.net/~costales # # Folder Color is free software; you can redistribute it and/or modify @@ -67,8 +67,7 @@ self.HIDE_DONATION = os.path.join(self.CFG_PATH, 'hide_donation') self.URL_DONATE = 'http://gufw.org/donate_foldercolor' - self.GRADIENT_MIDDLE_RANGE = 2500 - self.GRADIENT_DARK_RANGE = 5000 + self.GRADIENT_RANGE = 15 self.VALUE_LIGHT = 'value_light' self.VALUE_MIDDLE = 'value_middle' self.VALUE_DARK = 'value_dark' @@ -241,28 +240,43 @@ def custom_color_dialog(self): """Shows the dialog and return the color""" - colorselectiondialog = Gtk.ColorSelectionDialog(_("Choose a Folder Color")) - selector = colorselectiondialog.get_color_selection() - response = colorselectiondialog.run() - colorselectiondialog.destroy() + dialog = Gtk.ColorSelectionDialog() + response = dialog.run() if response == Gtk.ResponseType.OK: - color = selector.get_current_color() - # Control max color range - if color.red <= self.GRADIENT_DARK_RANGE: - color.red = self.GRADIENT_DARK_RANGE - if color.green <= self.GRADIENT_DARK_RANGE: - color.green = self.GRADIENT_DARK_RANGE - if color.blue <= self.GRADIENT_DARK_RANGE: - color.blue = self.GRADIENT_DARK_RANGE - # Convert to hex - rgb_ligth = (color.red, color.green, color.blue) - rgb_middle = (color.red-self.GRADIENT_MIDDLE_RANGE, color.green-self.GRADIENT_MIDDLE_RANGE, color.blue-self.GRADIENT_MIDDLE_RANGE) - rgb_dark = (color.red-self.GRADIENT_DARK_RANGE, color.green-self.GRADIENT_DARK_RANGE, color.blue-self.GRADIENT_DARK_RANGE) - htmlcolor_light = ''.join((str(hex(i/257))[2:].rjust(2, '0') for i in rgb_ligth)).upper() - htmlcolor_middle = ''.join((str(hex(i/257))[2:].rjust(2, '0') for i in rgb_middle)).upper() - htmlcolor_dark = ''.join((str(hex(i/257))[2:].rjust(2, '0') for i in rgb_dark)).upper() - return (htmlcolor_light, htmlcolor_middle, htmlcolor_dark) + # Color + color = dialog.get_color_selection().get_current_color() + dialog.destroy() + red = int(color.red / 256) + green = int(color.green / 256) + blue = int(color.blue / 256) + # Light + hex_light = "%02x%02x%02x" % (red, green, blue) + # Middle + red = red - self.GRADIENT_RANGE + if red < 0: + red = 0 + green = green - self.GRADIENT_RANGE + if green < 0: + green = 0 + blue = blue - self.GRADIENT_RANGE + if blue < 0: + blue = 0 + hex_middle = "%02x%02x%02x" % (red, green, blue) + # Dark + red = red - self.GRADIENT_RANGE + if red < 0: + red = 0 + green = green - self.GRADIENT_RANGE + if green < 0: + green = 0 + blue = blue - self.GRADIENT_RANGE + if blue < 0: + blue = 0 + hex_dark = "%02x%02x%02x" % (red, green, blue) + return (hex_light, hex_middle, hex_dark) + + dialog.destroy() return None def _generate_custom_file(self, src_file, dst_file, colors): @@ -279,7 +293,7 @@ def __init__(self): self.foldercolor = FolderColor() self.lock = Lock() - self.switcher = Switcher() + self.globalcolor = GlobalColor() dummy_i18n = (_("Brown"), _("Blue"), _("Green"), _("Grey"), _("Orange"), _("Pink"), _("Red"), _("Purple"), _("Yellow"), _("Favorite"), _("Finished"), _("Important"), _("In Progress")) # Need i18n, because colors/emblems are dynamic now @@ -463,35 +477,21 @@ label = Gtk.Label(_("Global Color:")) button = Gtk.Button(_("Apply")) button.connect('clicked', self._on_color_changed) - exp1 = Gtk.AspectFrame() - exp1.set_shadow_type(0) - exp2 = Gtk.AspectFrame() - exp2.set_shadow_type(0) - hbox.pack_start(exp1, True, True, 0) hbox.pack_start(label, False, False, 0) hbox.pack_start(self.cb_colors, False, False, 0) hbox.pack_start(button, False, False, 0) - hbox.pack_start(exp2, True, True, 0) vbox.pack_start(hbox, False, False, 0) - - label = Gtk.Label(_("(You may need to restart the file manager)")) - label.set_justify(Gtk.Justification.LEFT) - vbox.pack_start(label, True, True, 0) - # Donate if not os.path.exists(self.foldercolor.HIDE_DONATION): self.vbox_donate = Gtk.VBox(spacing=6) - self.vbox_donate.pack_start(Gtk.HSeparator(), False, True, 6) + self.vbox_donate.pack_start(Gtk.HSeparator(), True, True, 0) + link_donate = Gtk.LinkButton(self.foldercolor.URL_DONATE, _("Donate? Click to hide")) + link_donate.set_tooltip_text(_("Thanks in advance!")) + link_donate.connect("clicked", self._on_donate_hide) hbox = Gtk.HBox(spacing=6) - btn_donate = Gtk.LinkButton(self.foldercolor.URL_DONATE, _("Suppport this app with a donation")) - img_hide = Gtk.Image(stock=Gtk.STOCK_CLOSE) - btn_hide = Gtk.Button(image=img_hide) - btn_hide.connect("clicked", self._on_donate_hide) - btn_hide.set_tooltip_text(_("Hide donation forever")) - hbox.pack_start(btn_donate, False, False, 0) - hbox.pack_start(btn_hide, False, False, 0) - self.vbox_donate.pack_start(hbox, False, False, 0) - vbox.pack_start(self.vbox_donate, False, False, 0) + hbox.pack_start(link_donate, True, True, 0) + self.vbox_donate.pack_start(hbox, True, True, 0) + vbox.pack_start(self.vbox_donate, True, True, 0) win.add(vbox) win.connect('delete-event', self._close_win) @@ -521,9 +521,9 @@ return if color == 'default': - self.switcher.restore() + self.globalcolor.restore() else: - self.switcher.set_color(color) + self.globalcolor.set_color(color) class Lock: @@ -553,7 +553,7 @@ return False -class Switcher: +class GlobalColor: """Set default global color""" def __init__(self): self.foldercolor = FolderColor() @@ -592,13 +592,30 @@ 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 _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') - os.makedirs(dst_path) + 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) except OSError as exception: pass except: @@ -606,24 +623,135 @@ # Generate 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)) - shutil.copy2(src_file, dst_file) + 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)) # folder.svg - shutil.copy2(src_file, dst_file) - dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, name, 'scalable', 'places', self._get_folder_icon(None, 1)) # inode-directory.svg - shutil.copy2(src_file, dst_file) - dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, name, 'scalable', 'places', self._get_folder_icon(None, 2)) # user-home.svg - shutil.copy2(src_file, dst_file) - dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, name, 'scalable', 'places', self._get_folder_icon(None, 3)) # folder_home.svg - shutil.copy2(src_file, dst_file) - dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, name, 'scalable', 'places', self._get_folder_icon(None, 4)) # network-workgroup.svg - shutil.copy2(src_file, dst_file) - dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, name, 'scalable', 'places', self._get_folder_icon(None, 5)) # folder-remote.svg - shutil.copy2(src_file, dst_file) - dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, name, 'scalable', 'places', self._get_folder_icon(None, 6)) # document-open-recent.svg - shutil.copy2(src_file, dst_file) + 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) # Generate index.theme index_file = '/'.join([os.path.join(self.foldercolor.USER_PATH_THEME, name), 'index.theme']) @@ -634,13 +762,23 @@ 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') + cfg.set('Icon Theme', 'Directories', 'scalable/places,16x16/places,22x22/places,24x24/places') cfg.add_section('scalable/places') - cfg.set('scalable/places', 'MinSize', '16') cfg.set('scalable/places', 'Size', '48') - cfg.set('scalable/places', 'MaxSize', '256') 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') f = open(index_file, 'w') cfg.write(f) f.close() 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-18 19:42:07.000000000 +0100 +++ new/folder-color-caja/debian/changelog 2015-03-29 12:04:42.000000000 +0200 @@ -1,10 +1,7 @@ -folder-color-caja (0.0.62) trusty; urgency=low +folder-color-caja (0.0.70) trusty; urgency=low - * Allow local themes - * Fixed folders network and recent - * Allow to hide donation - * Layout in Global color fixed + * Fixed #1437800: No transparency in custom colors * Updated translations - -- costales <[email protected]> Web, 18 Mar 2015 19:02:31 +0000 + -- costales <[email protected]> Sat, 28 Mar 2015 18:12: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-18 19:42:07.000000000 +0100 +++ new/folder-color-caja/debian/control 2015-03-29 12:04:42.000000000 +0200 @@ -1,7 +1,7 @@ Source: folder-color-caja Section: utils Priority: extra -Standards-Version: 0.0.62 +Standards-Version: 0.0.70 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-18 19:42:06.000000000 +0100 +++ new/folder-color-caja/setup.py 2015-03-29 12:04:41.000000000 +0200 @@ -1,6 +1,6 @@ #!/usr/bin/env python -# Folder Color 0.0.62 - http://launchpad.net/folder-color +# Folder Color 0.0.70 - 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.62", + version = "0.0.70", 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.60_all.tar.gz -> folder-color-common_0.0.70_all.tar.gz ++++++ ++++ 16614 lines of diff (skipped) ++++++ folder-color_0.0.62_all.tar.gz -> folder-color_0.0.70_all.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-18 19:41:59.000000000 +0100 +++ new/folder-color/debian/changelog 2015-03-29 12:04:28.000000000 +0200 @@ -1,10 +1,7 @@ -folder-color (0.0.62) trusty; urgency=low +folder-color (0.0.70) trusty; urgency=low - * Allow local themes - * Fixed folders network and recent - * Allow to hide donation - * Layout in Global color fixed + * Fixed #1437800: No transparency in custom colors * Updated translations - -- costales <[email protected]> Web, 18 Mar 2015 19:02:31 +0000 + -- costales <[email protected]> Sat, 28 Mar 2015 18:12: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-18 19:41:59.000000000 +0100 +++ new/folder-color/debian/control 2015-03-29 12:04:28.000000000 +0200 @@ -1,7 +1,7 @@ Source: folder-color Section: utils Priority: extra -Standards-Version: 0.0.62 +Standards-Version: 0.0.70 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-18 19:41:35.000000000 +0100 +++ new/folder-color/nautilus-extension/folder-color.py 2015-03-29 12:03:51.000000000 +0200 @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Folder Color 0.0.62 +# Folder Color 0.0.70 # Copyright (C) 2012-2015 Marcos Alvarez Costales https://launchpad.net/~costales # # Folder Color is free software; you can redistribute it and/or modify @@ -67,8 +67,7 @@ self.HIDE_DONATION = os.path.join(self.CFG_PATH, 'hide_donation') self.URL_DONATE = 'http://gufw.org/donate_foldercolor' - self.GRADIENT_MIDDLE_RANGE = 2500 - self.GRADIENT_DARK_RANGE = 5000 + self.GRADIENT_RANGE = 15 self.VALUE_LIGHT = 'value_light' self.VALUE_MIDDLE = 'value_middle' self.VALUE_DARK = 'value_dark' @@ -241,28 +240,43 @@ def custom_color_dialog(self): """Shows the dialog and return the color""" - colorselectiondialog = Gtk.ColorSelectionDialog(_("Choose a Folder Color")) - selector = colorselectiondialog.get_color_selection() - response = colorselectiondialog.run() - colorselectiondialog.destroy() - + dialog = Gtk.ColorChooserDialog() + dialog.set_use_alpha(False) + response = dialog.run() if response == Gtk.ResponseType.OK: - color = selector.get_current_color() - # Control max color range - if color.red <= self.GRADIENT_DARK_RANGE: - color.red = self.GRADIENT_DARK_RANGE - if color.green <= self.GRADIENT_DARK_RANGE: - color.green = self.GRADIENT_DARK_RANGE - if color.blue <= self.GRADIENT_DARK_RANGE: - color.blue = self.GRADIENT_DARK_RANGE - # Convert to hex - rgb_ligth = (color.red, color.green, color.blue) - rgb_middle = (color.red-self.GRADIENT_MIDDLE_RANGE, color.green-self.GRADIENT_MIDDLE_RANGE, color.blue-self.GRADIENT_MIDDLE_RANGE) - rgb_dark = (color.red-self.GRADIENT_DARK_RANGE, color.green-self.GRADIENT_DARK_RANGE, color.blue-self.GRADIENT_DARK_RANGE) - htmlcolor_light = ''.join((str(hex(i/257))[2:].rjust(2, '0') for i in rgb_ligth)).upper() - htmlcolor_middle = ''.join((str(hex(i/257))[2:].rjust(2, '0') for i in rgb_middle)).upper() - htmlcolor_dark = ''.join((str(hex(i/257))[2:].rjust(2, '0') for i in rgb_dark)).upper() - return (htmlcolor_light, htmlcolor_middle, htmlcolor_dark) + # Color + color = dialog.get_rgba() + dialog.destroy() + red = (color.red * 255) + green = (color.green * 255) + blue = (color.blue * 255) + # Light + hex_light = "%02x%02x%02x" % (red, green, blue) + # Middle + red = red - self.GRADIENT_RANGE + if red < 0: + red = 0 + green = green - self.GRADIENT_RANGE + if green < 0: + green = 0 + blue = blue - self.GRADIENT_RANGE + if blue < 0: + blue = 0 + hex_middle = "%02x%02x%02x" % (red, green, blue) + # Dark + red = red - self.GRADIENT_RANGE + if red < 0: + red = 0 + green = green - self.GRADIENT_RANGE + if green < 0: + green = 0 + blue = blue - self.GRADIENT_RANGE + if blue < 0: + blue = 0 + hex_dark = "%02x%02x%02x" % (red, green, blue) + return (hex_light, hex_middle, hex_dark) + + dialog.destroy() return None def _generate_custom_file(self, src_file, dst_file, colors): @@ -279,7 +293,7 @@ def __init__(self): self.foldercolor = FolderColor() self.lock = Lock() - self.switcher = Switcher() + self.globalcolor = GlobalColor() dummy_i18n = (_("Brown"), _("Blue"), _("Green"), _("Grey"), _("Orange"), _("Pink"), _("Red"), _("Purple"), _("Yellow"), _("Favorite"), _("Finished"), _("Important"), _("In Progress")) # Need i18n, because colors/emblems are dynamic now @@ -463,35 +477,21 @@ label = Gtk.Label(_("Global Color:")) button = Gtk.Button(_("Apply")) button.connect('clicked', self._on_color_changed) - exp1 = Gtk.AspectFrame() - exp1.set_shadow_type(0) - exp2 = Gtk.AspectFrame() - exp2.set_shadow_type(0) - hbox.pack_start(exp1, True, True, 0) hbox.pack_start(label, False, False, 0) hbox.pack_start(self.cb_colors, False, False, 0) hbox.pack_start(button, False, False, 0) - hbox.pack_start(exp2, True, True, 0) vbox.pack_start(hbox, False, False, 0) - - label = Gtk.Label(_("(You may need to restart the file manager)")) - label.set_justify(Gtk.Justification.LEFT) - vbox.pack_start(label, True, True, 0) - # Donate if not os.path.exists(self.foldercolor.HIDE_DONATION): self.vbox_donate = Gtk.VBox(spacing=6) - self.vbox_donate.pack_start(Gtk.HSeparator(), False, True, 6) + self.vbox_donate.pack_start(Gtk.HSeparator(), True, True, 0) + link_donate = Gtk.LinkButton(self.foldercolor.URL_DONATE, _("Donate? Click to hide")) + link_donate.set_tooltip_text(_("Thanks in advance!")) + link_donate.connect("clicked", self._on_donate_hide) hbox = Gtk.HBox(spacing=6) - btn_donate = Gtk.LinkButton(self.foldercolor.URL_DONATE, _("Suppport this app with a donation")) - img_hide = Gtk.Image(stock=Gtk.STOCK_CLOSE) - btn_hide = Gtk.Button(image=img_hide) - btn_hide.connect("clicked", self._on_donate_hide) - btn_hide.set_tooltip_text(_("Hide donation forever")) - hbox.pack_start(btn_donate, False, False, 0) - hbox.pack_start(btn_hide, False, False, 0) - self.vbox_donate.pack_start(hbox, False, False, 0) - vbox.pack_start(self.vbox_donate, False, False, 0) + hbox.pack_start(link_donate, True, True, 0) + self.vbox_donate.pack_start(hbox, True, True, 0) + vbox.pack_start(self.vbox_donate, True, True, 0) win.add(vbox) win.connect('delete-event', self._close_win) @@ -521,9 +521,9 @@ return if color == 'default': - self.switcher.restore() + self.globalcolor.restore() else: - self.switcher.set_color(color) + self.globalcolor.set_color(color) class Lock: @@ -553,7 +553,7 @@ return False -class Switcher: +class GlobalColor: """Set default global color""" def __init__(self): self.foldercolor = FolderColor() @@ -592,13 +592,30 @@ 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 _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') - os.makedirs(dst_path) + 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) except OSError as exception: pass except: @@ -606,24 +623,135 @@ # Generate 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)) - shutil.copy2(src_file, dst_file) + 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)) # folder.svg - shutil.copy2(src_file, dst_file) - dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, name, 'scalable', 'places', self._get_folder_icon(None, 1)) # inode-directory.svg - shutil.copy2(src_file, dst_file) - dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, name, 'scalable', 'places', self._get_folder_icon(None, 2)) # user-home.svg - shutil.copy2(src_file, dst_file) - dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, name, 'scalable', 'places', self._get_folder_icon(None, 3)) # folder_home.svg - shutil.copy2(src_file, dst_file) - dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, name, 'scalable', 'places', self._get_folder_icon(None, 4)) # network-workgroup.svg - shutil.copy2(src_file, dst_file) - dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, name, 'scalable', 'places', self._get_folder_icon(None, 5)) # folder-remote.svg - shutil.copy2(src_file, dst_file) - dst_file = os.path.join(self.foldercolor.USER_PATH_THEME, name, 'scalable', 'places', self._get_folder_icon(None, 6)) # document-open-recent.svg - shutil.copy2(src_file, dst_file) + 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) # Generate index.theme index_file = '/'.join([os.path.join(self.foldercolor.USER_PATH_THEME, name), 'index.theme']) @@ -634,13 +762,23 @@ 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') + cfg.set('Icon Theme', 'Directories', 'scalable/places,16x16/places,22x22/places,24x24/places') cfg.add_section('scalable/places') - cfg.set('scalable/places', 'MinSize', '16') cfg.set('scalable/places', 'Size', '48') - cfg.set('scalable/places', 'MaxSize', '256') 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') f = open(index_file, 'w') cfg.write(f) f.close() 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-18 19:41:59.000000000 +0100 +++ new/folder-color/setup.py 2015-03-29 12:04:28.000000000 +0200 @@ -1,6 +1,6 @@ #!/usr/bin/env python -# Folder Color 0.0.62 - http://launchpad.net/folder-color +# Folder Color 0.0.70 - 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.62", + version = "0.0.70", description = "Change your folder color in Nautilus", author = "Marcos Alvarez Costales https://launchpad.net/~costales", author_email = "https://launchpad.net/~costales",
