def add_mac_options(options): # http://svn.pythonmac.org/py2app/py2app/trunk/doc/index.html#tweaking-your-info-plist # http://developer.apple.com/documentation/MacOSX/Conceptual/BPRuntimeConfig/Articles/PListKeys.html if py2app is None: return options from translate.storage import factory options.update({ "app": [__script__], "options": { "py2app": { # "semi_standalone": True, "compressed": True, "argv_emulation": True, "plist": { "CFBundleGetInfoString": __description__, "CFBundleGetInfoString": __name__, "CFBundleIconFile": "%s.icns" % __filename__, "CFBundleShortVersionString": __version__, # "LSHasLocalizedDisplayName": "1", # "LSMinimumSystemVersion": ???, "NSHumanReadableCopyright": __copyright__, "CFBundleDocumentTypes": [{ "CFBundleTypeExtensions": [extention.lstrip("*.") for extention in extentions], "CFBundleTypeIconFile": "%s.icns" % __filename__, "CFBundleTypeMIMETypes": mimetypes, "CFBundleTypeName": description, # ???? } for description, extentions, mimetypes in factory.supported_files()] } } }}) return options
def test_mimetypes(self): """Test that the factory knows the mimetypes for this class.""" supported = factory.supported_files() supported_dict = dict([(name, (extensions, mimetypes)) for name, extensions, mimetypes in supported]) if not (self.StoreClass.Name and self.StoreClass.Name in supported_dict): return detail = supported_dict[self.StoreClass.Name] # will start to get problematic once translated print("Factory:", detail[1]) print("StoreClass:", self.StoreClass.Mimetypes) for ext in detail[1]: assert ext in self.StoreClass.Mimetypes for ext in self.StoreClass.Mimetypes: assert ext in detail[1]
def test_mimetypes(self): """Test that the factory knows the mimetypes for this class.""" supported = factory.supported_files() supported_dict = dict([(name, (extensions, mimetypes)) for name, extensions, mimetypes in supported]) if not (self.StoreClass.Name and self.StoreClass.Name in supported_dict): return detail = supported_dict[self.StoreClass.Name] # will start to get problematic once translated print("Factory:", detail[1]) print("StoreClass:", self.StoreClass.Mimetypes) for ext in detail[1]: assert ext in self.StoreClass.Mimetypes for ext in self.StoreClass.Mimetypes: assert ext in detail[1]
def _init_add_chooser(self): # The following code was mostly copied from virtaal.views.MainView._create_dialogs() dlg = gtk.FileChooserDialog( _('Add Files'), self.controller.main_controller.view.main_window, gtk.FILE_CHOOSER_ACTION_OPEN, (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK)) dlg.set_default_response(gtk.RESPONSE_OK) all_supported_filter = gtk.FileFilter() all_supported_filter.set_name(_("All Supported Files")) dlg.add_filter(all_supported_filter) supported_files_dict = dict([ (_(name), (extension, mimetype)) for name, extension, mimetype in store_factory.supported_files() ]) supported_file_names = supported_files_dict.keys() supported_file_names.sort(cmp=strcoll) for name in supported_file_names: extensions, mimetypes = supported_files_dict[name] #XXX: we can't open generic .csv formats, so listing it is probably # more harmful than good. if "csv" in extensions: continue new_filter = gtk.FileFilter() new_filter.set_name(name) if extensions: for extension in extensions: new_filter.add_pattern("*." + extension) all_supported_filter.add_pattern("*." + extension) for compress_extension in store_factory.decompressclass.keys( ): new_filter.add_pattern("*.%s.%s" % (extension, compress_extension)) all_supported_filter.add_pattern( "*.%s.%s" % (extension, compress_extension)) if mimetypes: for mimetype in mimetypes: new_filter.add_mime_type(mimetype) all_supported_filter.add_mime_type(mimetype) dlg.add_filter(new_filter) all_filter = gtk.FileFilter() all_filter.set_name(_("All Files")) all_filter.add_pattern("*") dlg.add_filter(all_filter) dlg.set_select_multiple(True) self.add_chooser = dlg
def _get_file_types(): global _file_types if _file_types: return _file_types from translate.storage import factory from locale import strcoll all_supported_ext = [] supported_files = [] _sorted = sorted(factory.supported_files(), cmp=strcoll, key=lambda x: x[0]) for name, extensions, mimetypes in _sorted: name = _(name) extension_filter = ' '.join(["*.%s" % ext for ext in extensions]) all_supported_ext.append(extension_filter) supported_files.append((name, extension_filter)) supported_files.insert(0, (_("All Supported Files"), ' '.join(all_supported_ext))) _file_types = supported_files return supported_files
def _init_add_chooser(self): # The following code was mostly copied from virtaal.views.MainView._create_dialogs() dlg = gtk.FileChooserDialog( _("Add Files"), self.controller.main_controller.view.main_window, gtk.FILE_CHOOSER_ACTION_OPEN, (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK), ) dlg.set_default_response(gtk.RESPONSE_OK) all_supported_filter = gtk.FileFilter() all_supported_filter.set_name(_("All Supported Files")) dlg.add_filter(all_supported_filter) supported_files_dict = dict( [(_(name), (extension, mimetype)) for name, extension, mimetype in store_factory.supported_files()] ) supported_file_names = supported_files_dict.keys() supported_file_names.sort(cmp=strcoll) for name in supported_file_names: extensions, mimetypes = supported_files_dict[name] # XXX: we can't open generic .csv formats, so listing it is probably # more harmful than good. if "csv" in extensions: continue new_filter = gtk.FileFilter() new_filter.set_name(name) if extensions: for extension in extensions: new_filter.add_pattern("*." + extension) all_supported_filter.add_pattern("*." + extension) for compress_extension in store_factory.decompressclass.keys(): new_filter.add_pattern("*.%s.%s" % (extension, compress_extension)) all_supported_filter.add_pattern("*.%s.%s" % (extension, compress_extension)) if mimetypes: for mimetype in mimetypes: new_filter.add_mime_type(mimetype) all_supported_filter.add_mime_type(mimetype) dlg.add_filter(new_filter) all_filter = gtk.FileFilter() all_filter.set_name(_("All Files")) all_filter.add_pattern("*") dlg.add_filter(all_filter) dlg.set_select_multiple(True) self.add_chooser = dlg
def _get_file_types(): global _file_types if _file_types: return _file_types from translate.storage import factory from locale import strcoll all_supported_ext = [] supported_files = [] _sorted = sorted(factory.supported_files(), cmp=strcoll, key=lambda x: x[0]) for name, extensions, mimetypes in _sorted: name = _(name) extension_filter = ["*.%s" % ext for ext in extensions] all_supported_ext.extend(extension_filter) supported_files.append((name, extension_filter)) supported_files.insert(0, (_("All Supported Files"), all_supported_ext)) _file_types = supported_files return supported_files
def add_mac_options(options): # http://svn.pythonmac.org/py2app/py2app/trunk/doc/index.html#tweaking-your-info-plist # http://developer.apple.com/documentation/MacOSX/Conceptual/BPRuntimeConfig/Articles/PListKeys.html if py2app is None: return options options['data_files'].extend([('share/OSX_Leopard_theme', glob(path.join('devsupport', 'OSX_Leopard_theme', '*')))]) options['data_files'].extend([('', ['devsupport/virtaal.icns'])]) # For some reason py2app can't handle bin/virtaal since it doesn't end in .py import shutil shutil.copy2('bin/virtaal', 'bin/run_virtaal.py') from translate.storage import factory options.update({ "app": ["bin/run_virtaal.py"], "options": { "py2app": { "packages": ["CoreFoundation", "objc"], "includes": ["lxml", "lxml._elementpath", "lxml.etree", "glib", "gio", "psyco", "cairo", "pango", "pangocairo", "atk", "gobject", "gtk.keysyms", "pycurl", "translate.services", "translate.services.tmclient", "translate.services.opentranclient", "CoreFoundation"], #"semi_standalone": True, "compressed": True, "argv_emulation": True, "plist": { "CFBundleGetInfoString": virtaal_description, "CFBundleName": PRETTY_NAME, "CFBundleIconFile": "virtaal.icns", "CFBundleShortVersionString": virtaal_version, #"LSHasLocalizedDisplayName": "1", #"LSMinimumSystemVersion": ???, "NSHumanReadableCopyright": "Copyright (C) 2007-2009 Zuza Software Foundation", "CFBundleDocumentTypes": [{ "CFBundleTypeExtensions": [extention.lstrip("*.") for extention in extentions], "CFBundleTypeIconFile": "virtaal.icns", "CFBundleTypeMIMETypes": mimetypes, "CFBundleTypeName": description, #???? } for description, extentions, mimetypes in factory.supported_files()] } } }}) return options
def add_mac_options(options): # http://svn.pythonmac.org/py2app/py2app/trunk/doc/index.html#tweaking-your-info-plist # http://developer.apple.com/documentation/MacOSX/Conceptual/BPRuntimeConfig/Articles/PListKeys.html if py2app is None: return options options['data_files'].extend([('share/OSX_Leopard_theme', glob(path.join('devsupport', 'OSX_Leopard_theme', '*')))]) options['data_files'].extend([('', ['devsupport/virtaal.icns'])]) # For some reason py2app can't handle bin/virtaal since it doesn't end in .py import shutil shutil.copy2('bin/virtaal', 'bin/run_virtaal.py') from translate.storage import factory options.update({ "app": ["bin/run_virtaal.py"], "options": { "py2app": { "packages": ["CoreFoundation", "objc"], "includes": ["lxml", "lxml._elementpath", "lxml.etree", "glib", "gio", "psyco", "cairo", "pango", "pangocairo", "atk", "gobject", "gtk.keysyms", "pycurl", "translate.services", "translate.services.tmclient", "translate.services.opentranclient", "CoreFoundation"], #"semi_standalone": True, "compressed": True, "argv_emulation": True, "plist": { "CFBundleGetInfoString": virtaal_description, "CFBundleName": PRETTY_NAME, "CFBundleIconFile": "virtaal.icns", "CFBundleShortVersionString": virtaal_version, #"LSHasLocalizedDisplayName": "1", #"LSMinimumSystemVersion": ???, "NSHumanReadableCopyright": "Copyright (C) 2007-2009 Zuza Software Foundation", "CFBundleDocumentTypes": [{ "CFBundleTypeExtensions": [extention.lstrip("*.") for extention in extentions], "CFBundleTypeIconFile": "virtaal.icns", "CFBundleTypeMIMETypes": mimetypes, "CFBundleTypeName": description, #???? } for description, extentions, mimetypes in factory.supported_files()] } } }}) return options
def darwin_open_dialog(window, title, directory): # http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/AppFileMgmt/Concepts/SaveOpenPanels.html#//apple_ref/doc/uid/20000771-BBCFDGFC # http://scottr.org/blog/2008/jul/04/building-cocoa-guis-python-pyobjc-part-four/ from objc import NO from AppKit import NSOpenPanel from translate.storage import factory from locale import strcoll file_types = [] _sorted = sorted(factory.supported_files(), cmp=strcoll, key=lambda x: x[0]) for name, extension, mimetype in _sorted: file_types.extend(extension) panel = NSOpenPanel.openPanel() panel.setCanChooseDirectories_(NO) panel.setTitle_(title or _("Choose a Translation File")) panel.setAllowsMultipleSelection_(NO) panel.setAllowedFileTypes_(file_types) panel.setDirectoryURL_(u"file:///%s" % directory) ret_value = panel.runModalForTypes_(file_types) if ret_value: return (panel.filenames()[0], panel.URLs()[0].absoluteString()) else: return ()
def darwin_open_dialog(window, title, directory): # http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/AppFileMgmt/Concepts/SaveOpenPanels.html#//apple_ref/doc/uid/20000771-BBCFDGFC # http://scottr.org/blog/2008/jul/04/building-cocoa-guis-python-pyobjc-part-four/ from objc import NO from AppKit import NSOpenPanel from translate.storage import factory from locale import strcoll file_types = [] _sorted = sorted(factory.supported_files(), cmp=strcoll, key=lambda x: x[0]) for name, extension, mimetype in _sorted: file_types.extend(extension) panel = NSOpenPanel.openPanel() panel.setCanChooseDirectories_(NO) panel.setTitle_(title or _("Choose a Translation File")) panel.setAllowsMultipleSelection_(NO) panel.setAllowedFileTypes_(file_types) panel.setDirectoryURL_(u"file:///%s" % directory) ret_value = panel.runModalForTypes_(file_types) if ret_value: return (panel.filenames()[0], panel.URLs()[0].absoluteString()) else: return ()
def create_inno_script(name, _lib_dir, dist_dir, exe_files, other_files, version = "1.0"): if not dist_dir.endswith(os.sep): dist_dir += os.sep exe_files = [chop(dist_dir, p) for p in exe_files] other_files = [chop(dist_dir, p) for p in other_files] pathname = path.join(dist_dir, name + os.extsep + "iss") # See http://www.jrsoftware.org/isfaq.php for more InnoSetup config options. ofi = open(pathname, "w") print >> ofi, r'''; WARNING: This script has been created by py2exe. Changes to this script ; will be overwritten the next time py2exe is run! [Languages] Name: "en"; MessagesFile: "compiler:Default.isl" Name: "eu"; MessagesFile: "compiler:Languages\Basque.isl" Name: "ca"; MessagesFile: "compiler:Languages\Catalan.isl" Name: "cz"; MessagesFile: "compiler:Languages\Czech.isl" Name: "da"; MessagesFile: "compiler:Languages\Danish.isl" Name: "nl"; MessagesFile: "compiler:Languages\Dutch.isl" Name: "fi"; MessagesFile: "compiler:Languages\Finnish.isl" Name: "fr"; MessagesFile: "compiler:Languages\French.isl" Name: "de"; MessagesFile: "compiler:Languages\German.isl" Name: "he"; MessagesFile: "compiler:Languages\Hebrew.isl" Name: "hu"; MessagesFile: "compiler:Languages\Hungarian.isl" Name: "it"; MessagesFile: "compiler:Languages\Italian.isl" Name: "nb"; MessagesFile: "compiler:Languages\Norwegian.isl" Name: "pl"; MessagesFile: "compiler:Languages\Polish.isl" Name: "pt_BR"; MessagesFile: "compiler:Languages\BrazilianPortuguese.isl" Name: "pt"; MessagesFile: "compiler:Languages\Portuguese.isl" Name: "ru"; MessagesFile: "compiler:Languages\Russian.isl" Name: "sk"; MessagesFile: "compiler:Languages\Slovak.isl" Name: "sl"; MessagesFile: "compiler:Languages\Slovenian.isl" Name: "es"; MessagesFile: "compiler:Languages\Spanish.isl" [Setup] AppName=%(name)s AppVerName=%(name)s %(version)s AppPublisher=Zuza Software Foundation AppPublisherURL=http://www.translate.org.za/ AppVersion=%(version)s AppSupportURL=http://translate.sourceforge.net/ ;AppComments= ;AppCopyright=Copyright (C) 2007-2009 Zuza Software Foundation DefaultDirName={pf}\%(name)s DefaultGroupName=%(name)s LanguageDetectionMethod=locale OutputBaseFilename=%(name)s-%(version)s-setup ChangesAssociations=yes SetupIconFile=%(icon_path)s ;WizardSmallImageFile=compiler:images\WizModernSmallImage13.bmp WizardImageFile=%(wizard_image)s [Files]''' % { 'name': name, 'version': version, 'icon_path': path.join(TARGET_DATA_DIR, "icons", "virtaal.ico"), 'wizard_image': path.join(os.pardir, "devsupport", "virtaal_innosetup.bmp") } for fpath in exe_files + other_files: print >> ofi, r'Source: "%s"; DestDir: "{app}\%s"; Flags: ignoreversion' % (fpath, os.path.dirname(fpath)) print >> ofi, r''' [Icons] Name: "{group}\%(name)s Translation Editor"; Filename: "{app}\virtaal.exe"; Name: "{group}\%(name)s (uninstall)"; Filename: "{uninstallexe}"''' % {'name': name} # For now we don't worry about install scripts # if install_scripts: # print >> ofi, r"[Run]" # # for fpath in install_scripts: # print >> ofi, r'Filename: "{app}\%s"; WorkingDir: "{app}"; Parameters: "-install"' % fpath # # print >> ofi # print >> ofi, r"[UninstallRun]" # # for fpath in install_scripts: # print >> ofi, r'Filename: "{app}\%s"; WorkingDir: "{app}"; Parameters: "-remove"' % fpath # File associations. Note the directive "ChangesAssociations=yes" above # that causes the installer to tell Explorer to refresh associations. # This part might cause the created installer to need administrative # privileges. An alternative might be to rather write to # HKCU\Software\Classes, but this won't be system usable then. Didn't # see a way to test and alter the behaviour. # For each file type we should have something like this: # #;File extension: #Root: HKCR; Subkey: ".po"; ValueType: string; ValueName: ""; ValueData: "virtaal_po"; Flags: uninsdeletevalue #;Description of the file type #Root: HKCR; Subkey: "virtaal_po"; ValueType: string; ValueName: ""; ValueData: "Gettext PO"; Flags: uninsdeletekey #;Icon to use in Explorer #Root: HKCR; Subkey: "virtaal_po\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\share\icons\virtaal.ico" #;The command to open the file #Root: HKCR; Subkey: "virtaal_po\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\virtaal.exe"" ""%1""" print >> ofi, "[Registry]" from translate.storage import factory for description, extentions, _mimetypes in factory.supported_files(): # We skip those types where we depend on mime types, not extentions if not extentions: continue # Form a key from the first extention for internal only key = extentions[0] # Associate each extention with the file type for extention in extentions: # We don't want to associate with all .txt or .pot (PowerPoint template) files, so let's skip it if extention in ["txt", "pot", "csv"]: continue print >> ofi, r'Root: HKCR; Subkey: ".%(extention)s"; ValueType: string; ValueName: ""; ValueData: "virtaal_%(key)s"; Flags: uninsdeletevalue' % {'extention': extention, 'key': key} print >> ofi, r'''Root: HKCR; Subkey: "virtaal_%(key)s"; ValueType: string; ValueName: ""; ValueData: "%(description)s"; Flags: uninsdeletekey Root: HKCR; Subkey: "virtaal_%(key)s\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\share\icons\x-translation.ico" Root: HKCR; Subkey: "virtaal_%(key)s\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\virtaal.exe"" ""%%1"""''' % {'key': key, 'description': description} # Show a "Launch Virtaal" checkbox on the last installer screen print >> ofi, r''' [Run] Filename: "{app}\virtaal.exe"; Description: "{cm:LaunchProgram,%(name)s}"; Flags: nowait postinstall skipifsilent''' % {'name': name} print >> ofi ofi.close() return pathname
# (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, see <http://www.gnu.org/licenses/>. from translate.storage import factory import gtk rf = gtk.RecentFilter() for name, extensions, mimetypes in factory.supported_files(): if extensions: for extension in extensions: if extension in ("txt"): continue rf.add_pattern("*.%s" % extension) for compress_extension in factory.decompressclass.keys(): rf.add_pattern("*.%s.%s" % (extension, compress_extension)) if mimetypes: for mimetype in mimetypes: rf.add_mime_type(mimetype) for app in ("virtaal", "poedit", "kbabel", "lokalize", "gtranslator"): rf.add_application(app) rm = gtk.recent_manager_get_default()
def create_inno_script(name, _lib_dir, dist_dir, exe_files, other_files, version="1.0"): if not dist_dir.endswith(os.sep): dist_dir += os.sep exe_files = [chop(dist_dir, p) for p in exe_files] other_files = [chop(dist_dir, p) for p in other_files] pathname = path.join(dist_dir, name + os.extsep + "iss") # See http://www.jrsoftware.org/isfaq.php for more InnoSetup config options. ofi = open(pathname, "w") print >> ofi, r'''; WARNING: This script has been created by py2exe. Changes to this script ; will be overwritten the next time py2exe is run! [Languages] Name: "en"; MessagesFile: "compiler:Default.isl" Name: "eu"; MessagesFile: "compiler:Languages\Basque.isl" Name: "ca"; MessagesFile: "compiler:Languages\Catalan.isl" Name: "cz"; MessagesFile: "compiler:Languages\Czech.isl" Name: "da"; MessagesFile: "compiler:Languages\Danish.isl" Name: "nl"; MessagesFile: "compiler:Languages\Dutch.isl" Name: "fi"; MessagesFile: "compiler:Languages\Finnish.isl" Name: "fr"; MessagesFile: "compiler:Languages\French.isl" Name: "de"; MessagesFile: "compiler:Languages\German.isl" Name: "he"; MessagesFile: "compiler:Languages\Hebrew.isl" Name: "hu"; MessagesFile: "compiler:Languages\Hungarian.isl" Name: "it"; MessagesFile: "compiler:Languages\Italian.isl" Name: "nb"; MessagesFile: "compiler:Languages\Norwegian.isl" Name: "pl"; MessagesFile: "compiler:Languages\Polish.isl" Name: "pt_BR"; MessagesFile: "compiler:Languages\BrazilianPortuguese.isl" Name: "pt"; MessagesFile: "compiler:Languages\Portuguese.isl" Name: "ru"; MessagesFile: "compiler:Languages\Russian.isl" Name: "sk"; MessagesFile: "compiler:Languages\Slovak.isl" Name: "sl"; MessagesFile: "compiler:Languages\Slovenian.isl" Name: "es"; MessagesFile: "compiler:Languages\Spanish.isl" [Setup] AppName=%(name)s AppVerName=%(name)s %(version)s AppPublisher=Zuza Software Foundation AppPublisherURL=http://www.translate.org.za/ AppVersion=%(version)s AppSupportURL=http://translate.sourceforge.net/ ;AppComments= ;AppCopyright=Copyright (C) 2007-2009 Zuza Software Foundation DefaultDirName={pf}\%(name)s DefaultGroupName=%(name)s LanguageDetectionMethod=locale OutputBaseFilename=%(name)s-%(version)s-setup ChangesAssociations=yes SetupIconFile=%(icon_path)s ;WizardSmallImageFile=compiler:images\WizModernSmallImage13.bmp WizardImageFile=%(wizard_image)s [Files]''' % { 'name': name, 'version': version, 'icon_path': path.join(TARGET_DATA_DIR, "icons", "virtaal.ico"), 'wizard_image': path.join(os.pardir, "devsupport", "virtaal_innosetup.bmp") } for fpath in exe_files + other_files: print >> ofi, r'Source: "%s"; DestDir: "{app}\%s"; Flags: ignoreversion' % ( fpath, os.path.dirname(fpath)) print >> ofi, r''' [Icons] Name: "{group}\%(name)s Translation Editor"; Filename: "{app}\virtaal.exe"; Name: "{group}\%(name)s (uninstall)"; Filename: "{uninstallexe}"''' % { 'name': name } # For now we don't worry about install scripts # if install_scripts: # print >> ofi, r"[Run]" # # for fpath in install_scripts: # print >> ofi, r'Filename: "{app}\%s"; WorkingDir: "{app}"; Parameters: "-install"' % fpath # # print >> ofi # print >> ofi, r"[UninstallRun]" # # for fpath in install_scripts: # print >> ofi, r'Filename: "{app}\%s"; WorkingDir: "{app}"; Parameters: "-remove"' % fpath # File associations. Note the directive "ChangesAssociations=yes" above # that causes the installer to tell Explorer to refresh associations. # This part might cause the created installer to need administrative # privileges. An alternative might be to rather write to # HKCU\Software\Classes, but this won't be system usable then. Didn't # see a way to test and alter the behaviour. # For each file type we should have something like this: # #;File extension: #Root: HKCR; Subkey: ".po"; ValueType: string; ValueName: ""; ValueData: "virtaal_po"; Flags: uninsdeletevalue #;Description of the file type #Root: HKCR; Subkey: "virtaal_po"; ValueType: string; ValueName: ""; ValueData: "Gettext PO"; Flags: uninsdeletekey #;Icon to use in Explorer #Root: HKCR; Subkey: "virtaal_po\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\share\icons\virtaal.ico" #;The command to open the file #Root: HKCR; Subkey: "virtaal_po\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\virtaal.exe"" ""%1""" print >> ofi, "[Registry]" from translate.storage import factory for description, extentions, _mimetypes in factory.supported_files(): # We skip those types where we depend on mime types, not extentions if not extentions: continue # Form a key from the first extention for internal only key = extentions[0] # Associate each extention with the file type for extention in extentions: # We don't want to associate with all .txt or .pot (PowerPoint template) files, so let's skip it if extention in ["txt", "pot", "csv"]: continue print >> ofi, r'Root: HKCR; Subkey: ".%(extention)s"; ValueType: string; ValueName: ""; ValueData: "virtaal_%(key)s"; Flags: uninsdeletevalue' % { 'extention': extention, 'key': key } print >> ofi, r'''Root: HKCR; Subkey: "virtaal_%(key)s"; ValueType: string; ValueName: ""; ValueData: "%(description)s"; Flags: uninsdeletekey Root: HKCR; Subkey: "virtaal_%(key)s\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\share\icons\x-translation.ico" Root: HKCR; Subkey: "virtaal_%(key)s\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\virtaal.exe"" ""%%1"""''' % { 'key': key, 'description': description } # Show a "Launch Virtaal" checkbox on the last installer screen print >> ofi, r''' [Run] Filename: "{app}\virtaal.exe"; Description: "{cm:LaunchProgram,%(name)s}"; Flags: nowait postinstall skipifsilent''' % { 'name': name } print >> ofi ofi.close() return pathname
# # 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, see <http://www.gnu.org/licenses/>. from translate.storage import factory import gtk rf = gtk.RecentFilter() for name, extensions, mimetypes in factory.supported_files(): if extensions: for extension in extensions: if extension in ("txt"): continue rf.add_pattern("*.%s" % extension) for compress_extension in factory.decompressclass.keys(): rf.add_pattern("*.%s.%s" % (extension, compress_extension)) if mimetypes: for mimetype in mimetypes: rf.add_mime_type(mimetype) for app in ("virtaal", "poedit", "kbabel", "lokalize", "gtranslator"): rf.add_application(app) rm = gtk.recent_manager_get_default()