X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;f=print-filename.py;h=1a448d345b62eabc45a95cd76aa9ef3f34896809;hb=199f6beec9c9bf6eb08446a4c956ff709aef8fa7;hp=72769b1a591245789db184c88f1a1f3dedcdf7fe;hpb=661f084ccb18819bc9bf0060226f4009a83797cf;p=xsetbg.git diff --git a/print-filename.py b/print-filename.py index 72769b1..1a448d3 100755 --- a/print-filename.py +++ b/print-filename.py @@ -1,95 +1,68 @@ -#! /usr/local/bin/python -O -"""This file is a part of XSetBg. -Author: Oleg BroytMann -Copyright (C) 2004-2006 PhiloSoft Design +#! /usr/bin/env python +"""Print background filename + +Print the filename of the current or previous background image. + +This file is a part of XSetBg. + """ -__version__ = "$Revision$"[11:-2] -__author__ = "Oleg BroytMann " -__copyright__ = "Copyright (C) 2004-2006 PhiloSoft Design" -__date__ = "$Date$"[7:-2] -__revision__ = "$Id$"[5:-2] +__author__ = "Oleg Broytman " +__copyright__ = "Copyright (C) 2004-2015 PhiloSoft Design" +__license__ = "GNU GPL" + +import sys +from xsetbg_db import xsetbg_db -import sys, os, shelve +if not xsetbg_db: + sys.exit("Error: no database found") def usage(code=0): - sys.stderr.write("Usage: %s [-0|--null] [-o|--old] [-s|--spaces] [-w|--width] [width]\n" % sys.argv[0]) - sys.exit(code) + sys.stderr.write("Usage: %s [-o|--old]\n" % sys.argv[0]) + sys.exit(code) def get_args(): - from getopt import getopt, GetoptError - - try: - options, arguments = getopt(sys.argv[1:], "0osw:", - ["null", "old", "spaces", "width="]) - except GetoptError: - usage(1) - - print0 = False - old = False - spaces = '' - width = None - - for option, value in options: - if option in ("-h", "--help"): - usage() - elif option in ("-0", "--null"): - print0 = True - elif option in ("-o", "--old"): - old = True - elif option in ("-s", "--spaces"): - spaces = ' ' - elif option in ("-w", "--width"): - width = int(value) - else: - usage(2) - - if arguments: - if width is not None: - usage(3) - elif len(arguments) > 1: - usage(4) - else: - width = int(arguments[0]) - - return print0, old, spaces, width - -print0, old, spaces, width = get_args() - - -xsetbg_dir = os.path.join(os.environ["HOME"], "lib", "xsetbg") -os.chdir(xsetbg_dir) - -global_db_name = "xsetbg.db" -filename_key = "filename" -old_filename_key = "old_filename" - - -global_db = shelve.open(global_db_name, flag='r') -if old: - key = old_filename_key -else: - key = filename_key -filename = global_db[key] -global_db.close() + from getopt import getopt, GetoptError + try: + options, arguments = getopt(sys.argv[1:], "he:o", + ["help", "output-encoding=", "old"]) + except GetoptError: + usage(1) -if width: - lines = [] - while filename: - lines.append("%s%s%s" % (spaces, filename[:width], spaces)) - filename = filename[width:] - filename = "\n".join(lines) -else: - filename = "%s%s%s" % (spaces, filename, spaces) + old = False + output_encoding = None + for option, value in options: + if option in ("-h", "--help"): + usage() + elif option in ("-e", "--output-encoding"): + output_encoding = value + elif option in ("-o", "--old"): + old = True + else: + usage(2) -sys.stdout.write(filename) + if arguments: + usage(3) -if print0: - sys.stdout.write('\0') + if output_encoding is None: + from m_lib.defenc import default_encoding + output_encoding = default_encoding + return old, output_encoding + +old, output_encoding = get_args() + + +if old: + index = 1 else: - print + index = 0 + +filename = xsetbg_db.select('last_shown IS NOT NULL', + orderBy='-last_shown')[index].full_name + +print filename.encode(output_encoding)