diff options
Diffstat (limited to 'rapid/utilities.py')
-rw-r--r-- | rapid/utilities.py | 152 |
1 files changed, 0 insertions, 152 deletions
diff --git a/rapid/utilities.py b/rapid/utilities.py deleted file mode 100644 index f0f0569..0000000 --- a/rapid/utilities.py +++ /dev/null @@ -1,152 +0,0 @@ -#!/usr/bin/python -# -*- coding: latin1 -*- - -### Copyright (C) 2007-2012 Damon Lynch <damonlynch@gmail.com> - -### This program is free software; you can redistribute it and/or modify -### it under the terms of the GNU General Public License as published by -### the Free Software Foundation; either version 2 of the License, or -### (at your option) any later version. - -### This program is distributed in the hope that it will be useful, -### but WITHOUT ANY WARRANTY; without even the implied warranty of -### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -### GNU General Public License for more details. - -### You should have received a copy of the GNU General Public License -### along with this program; if not, write to the Free Software -### Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 -### USA - -import os -import gio -import gtk -from PIL import Image -import distutils.version - -def get_full_path(path): - """ make path relative to home directory if not an absolute path """ - if os.path.isabs(path): - return path - else: - return os.path.join(os.path.expanduser('~'), path) - -def is_directory(path): - - # for some very strange reason, doing it the GIO way fails with - # unknown type, even for directories! - return os.path.isdir(path) - - if False: - d = gio.File(path) - if d.query_exists(): - file_info = d.query_filesystem_info(attributes="standard::type") - file_type = file_info.get_file_type() - if file_type == gio.FILE_TYPE_DIRECTORY: - return True - - return False - -def format_size_for_user(bytes, zero_string="", with_decimals=True, kb_only=False): - """Format an int containing the number of bytes into a string suitable for - printing out to the user. zero_string is the string to use if bytes == 0. - source: https://develop.participatoryculture.org/trac/democracy/browser/trunk/tv/portable/util.py?rev=3993 - - """ - if bytes > (1 << 30) and not kb_only: - value = (bytes / (1024.0 * 1024.0 * 1024.0)) - if with_decimals: - format = "%1.1fGB" - else: - format = "%dGB" - elif bytes > (1 << 20) and not kb_only: - value = (bytes / (1024.0 * 1024.0)) - if with_decimals: - format = "%1.1fMB" - else: - format = "%dMB" - elif bytes > (1 << 10): - value = (bytes / 1024.0) - if with_decimals: - format = "%1.1fKB" - else: - format = "%dKB" - elif bytes > 1: - value = bytes - if with_decimals: - format = "%1.1fB" - else: - format = "%dB" - else: - return zero_string - return format % value - -def register_iconsets(icon_info): - """ - Register icons in the icon set if they're not already used - - From http://faq.pygtk.org/index.py?req=show&file=faq08.012.htp - """ - - icon_factory = gtk.IconFactory() - stock_ids = gtk.stock_list_ids() - for stock_id, file in icon_info: - # only load image files when our stock_id is not present - if stock_id not in stock_ids: - pixbuf = gtk.gdk.pixbuf_new_from_file(file) - iconset = gtk.IconSet(pixbuf) - icon_factory.add(stock_id, iconset) - icon_factory.add_default() - -def escape(s): - """ - Replace special characters by SGML entities. - """ - entities = ("&&", "<<", ">>") - for e in entities: - s = s.replace(e[0], e[1:]) - return s - -def image_to_pixbuf(image): - # convert PIL image to pixbuf - # this one handles transparency, unlike the default example in the pygtk FAQ - # this is also from the pygtk FAQ - IS_RGBA = image.mode=='RGBA' - return gtk.gdk.pixbuf_new_from_data( - image.tobytes(), # data - gtk.gdk.COLORSPACE_RGB, # color mode - IS_RGBA, # has alpha - 8, # bits - image.size[0], # width - image.size[1], # height - (IS_RGBA and 4 or 3) * image.size[0] # rowstride - ) - -def pixbuf_to_image(pb): - assert(pb.get_colorspace() == gtk.gdk.COLORSPACE_RGB) - dimensions = pb.get_width(), pb.get_height() - stride = pb.get_rowstride() - pixels = pb.get_pixels() - - mode = pb.get_has_alpha() and "RGBA" or "RGB" - image = Image.frombuffer(mode, dimensions, pixels, - "raw", mode, stride, 1) - - if mode == "RGB": - # convert to having an alpha value, so that the image can - # act as a mask in the drop shadow paste - image = image.convert("RGBA") - - return image - -def pythonify_version(v): - """ makes version number a version number in distutils sense""" - return distutils.version.StrictVersion(v.replace( '~','')) - -def human_readable_version(v): - """ returns a version in human readable form""" - v = v.replace('~a', ' alpha ') - v = v.replace('~b', ' beta ') - v = v.replace('~rc', ' RC ') - return v - |