diff options
author | Julien Valroff <julien@kirya.net> | 2011-03-25 22:07:02 +0100 |
---|---|---|
committer | Julien Valroff <julien@kirya.net> | 2011-03-25 22:07:02 +0100 |
commit | 59350657b70c3c2bb9e1cf90817bb4607a00e4fe (patch) | |
tree | 4eb598ac0235c9cf1614eaf9e33b1d7d290e9e3d /rapid/common.py | |
parent | 478f6858602c736b67d420cbf198aeab3313cc23 (diff) | |
parent | 6866d4a5b74779f087b8e44148a49163d8b7327b (diff) |
Merge commit 'upstream/0.4.0_alpha1' into experimental
Diffstat (limited to 'rapid/common.py')
-rw-r--r-- | rapid/common.py | 225 |
1 files changed, 0 insertions, 225 deletions
diff --git a/rapid/common.py b/rapid/common.py deleted file mode 100644 index a55d835..0000000 --- a/rapid/common.py +++ /dev/null @@ -1,225 +0,0 @@ -#!/usr/bin/python -# -*- coding: latin1 -*- - -### Copyright (C) 2007-09 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -import os -import sys -import gc -import distutils.version -import gtk.gdk as gdk -import gtk -try: - import gio -except: - pass - -import config - -import locale -import gettext - -class Configi18n: - """ Setup translation - - Adapated from code example of Mark Mruss http://www.learningpython.com. - Unlike his example, this code uses a local locale directory only if the environment - variable LOCALEDIR has been set to some or other value. - """ - - # Do not put this code block in __init__, because it needs to be run only once - - # if the evironment value 'LOCAELDIR' is set, then use this as the source of translation data - # otherwise, rely on the system-wide data - locale_path = os.environ.get('LOCALEDIR', None) - - # Init the list of languages to support - langs = [] - #Check the default locale - lc, encoding = locale.getdefaultlocale() - if (lc): - #If we have a default, it's the first in the list - langs = [lc] - # Now let's get all of the supported languages on the system - language = os.environ.get('LANGUAGE', None) - if (language): - # langage comes back something like en_CA:en_US:en_GB:en - langs += language.split(":") - - # add on to the back of the list the translations that we know that we have, our defaults - langs += ["en_US"] - - # Now langs is a list of all of the languages that we are going - # to try to use. First we check the default, then what the system - # told us, and finally the 'known' list - - gettext.bindtextdomain(config.APP_NAME, locale_path) - gettext.textdomain(config.APP_NAME) - # Get the language to use - lang = gettext.translation(config.APP_NAME, locale_path, languages=langs, fallback = True) - # Install the language, map _() (which we marked our - # strings to translate with) to self.lang.gettext() which will - # translate them. - _ = lang.gettext - - -def pythonifyVersion(v): - """ makes version number a version number in distutils sense""" - return distutils.version.StrictVersion(v.replace( '~','')) - -def getFullProgramName(): - """ return the full name of the process running """ - return os.path.basename(sys.argv[0]) - -def getProgramName(): - """ return the name of the process running, removing the .py extension if it exists """ - programName = getFullProgramName() - if programName.find('.py') > 0: - programName = programName[:programName.find('.py')] - return programName - -def splitDirectories(directories): - """ split directories specified in string into a list """ - if directories.find(',') > 0: - d = directories.split(',') - else: - d = directories.split() - directories = [] - for i in d: - directories.append(i.strip()) - return directories - - - -def getFullPath(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 escape(s): - """ - Replace special characters by SGML entities. - """ - entities = ("&&", "<<", ">>") - for e in entities: - s = s.replace(e[0], e[1:]) - return s - -def formatSizeForUser(bytes, zeroString="", withDecimals=True, kbOnly=False): - """Format an int containing the number of bytes into a string suitable for - printing out to the user. zeroString 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 kbOnly: - value = (bytes / (1024.0 * 1024.0 * 1024.0)) - if withDecimals: - format = "%1.1fGB" - else: - format = "%dGB" - elif bytes > (1 << 20) and not kbOnly: - value = (bytes / (1024.0 * 1024.0)) - if withDecimals: - format = "%1.1fMB" - else: - format = "%dMB" - elif bytes > (1 << 10): - value = (bytes / 1024.0) - if withDecimals: - format = "%1.1fKB" - else: - format = "%dKB" - elif bytes > 1: - value = bytes - if withDecimals: - format = "%1.1fB" - else: - format = "%dB" - else: - return zeroString - return format % value - -def scale2pixbuf(width_max, height_max, pixbuf, return_size=False): - """ - Scale to width_max and height_max. - Keep aspect ratio. - Code adapted from gthumpy, by guettli - """ - - width_orig = float(pixbuf.get_width()) - height_orig = float(pixbuf.get_height()) - if (width_orig / width_max) > (height_orig / height_max): - height = int((height_orig / width_orig) * width_max) - width = width_max - else: - width = int((width_orig / height_orig) * height_max) - height=height_max - - pixbuf = pixbuf.scale_simple(width, height, gdk.INTERP_BILINEAR) - gc.collect() # Tell Python to clean up the memory - if return_size: - return pixbuf, width_orig, height_orig - return pixbuf - -def get_icon_pixbuf(using_gio, icon, size, fallback='gtk-harddisk'): - """ returns icon for the volume, or None if not available""" - - icontheme = gtk.icon_theme_get_default() - - if using_gio: - f = None - if isinstance(icon, gio.ThemedIcon): - try: - # on some user's systems, themes do not have icons associated with them - iconinfo = icontheme.choose_icon(icon.get_names(), size, gtk.ICON_LOOKUP_USE_BUILTIN) - f = iconinfo.get_filename() - v = gtk.gdk.pixbuf_new_from_file_at_size(f, size, size) - except: - f = None - if not f: - v = icontheme.load_icon(fallback, size, gtk.ICON_LOOKUP_USE_BUILTIN) - else: - v = icontheme.load_icon(icon, size, gtk.ICON_LOOKUP_USE_BUILTIN) - return v - -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 - """ - - iconfactory = 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) - iconfactory.add(stock_id, iconset) - iconfactory.add_default() - - - - -if __name__ == '__main__': - i = Configi18n() - _ = i._ - print _("hello world") |