Keine Beschreibung

helpers.py 3.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. # -*- Mode: Python; coding: utf-8; indent-tabs-mode: nil; tab-width: 4 -*-
  2. ### BEGIN LICENSE
  3. # This file is in the public domain
  4. ### END LICENSE
  5. ### DO NOT EDIT THIS FILE ###
  6. """Helpers for an Ubuntu application."""
  7. import logging
  8. import os
  9. from . organiccodeconfig import get_data_file
  10. from . Builder import Builder
  11. from locale import gettext as _
  12. def get_builder(builder_file_name):
  13. """Return a fully-instantiated Gtk.Builder instance from specified ui
  14. file
  15. :param builder_file_name: The name of the builder file, without extension.
  16. Assumed to be in the 'ui' directory under the data path.
  17. """
  18. # Look for the ui file that describes the user interface.
  19. ui_filename = get_data_file('ui', '%s.ui' % (builder_file_name,))
  20. if not os.path.exists(ui_filename):
  21. ui_filename = None
  22. builder = Builder()
  23. builder.set_translation_domain('organiccode')
  24. builder.add_from_file(ui_filename)
  25. return builder
  26. # Owais Lone : To get quick access to icons and stuff.
  27. def get_media_file(media_file_name):
  28. media_filename = get_data_file('media', '%s' % (media_file_name,))
  29. if not os.path.exists(media_filename):
  30. media_filename = None
  31. return "file:///"+media_filename
  32. class NullHandler(logging.Handler):
  33. def emit(self, record):
  34. pass
  35. def set_up_logging(opts):
  36. # add a handler to prevent basicConfig
  37. root = logging.getLogger()
  38. null_handler = NullHandler()
  39. root.addHandler(null_handler)
  40. formatter = logging.Formatter("%(levelname)s:%(name)s: %(funcName)s() '%(message)s'")
  41. logger = logging.getLogger('organiccode')
  42. logger_sh = logging.StreamHandler()
  43. logger_sh.setFormatter(formatter)
  44. logger.addHandler(logger_sh)
  45. lib_logger = logging.getLogger('organiccode_lib')
  46. lib_logger_sh = logging.StreamHandler()
  47. lib_logger_sh.setFormatter(formatter)
  48. lib_logger.addHandler(lib_logger_sh)
  49. # Set the logging level to show debug messages.
  50. if opts.verbose:
  51. logger.setLevel(logging.DEBUG)
  52. logger.debug('logging enabled')
  53. if opts.verbose > 1:
  54. lib_logger.setLevel(logging.DEBUG)
  55. def get_help_uri(page=None):
  56. # help_uri from source tree - default language
  57. here = os.path.dirname(__file__)
  58. help_uri = os.path.abspath(os.path.join(here, '..', 'help', 'C'))
  59. if not os.path.exists(help_uri):
  60. # installed so use gnome help tree - user's language
  61. help_uri = 'organiccode'
  62. # unspecified page is the index.page
  63. if page is not None:
  64. help_uri = '%s#%s' % (help_uri, page)
  65. return help_uri
  66. def show_uri(parent, link):
  67. from gi.repository import Gtk # pylint: disable=E0611
  68. screen = parent.get_screen()
  69. Gtk.show_uri(screen, link, Gtk.get_current_event_time())
  70. def alias(alternative_function_name):
  71. '''see http://www.drdobbs.com/web-development/184406073#l9'''
  72. def decorator(function):
  73. '''attach alternative_function_name(s) to function'''
  74. if not hasattr(function, 'aliases'):
  75. function.aliases = []
  76. function.aliases.append(alternative_function_name)
  77. return function
  78. return decorator