0001483: Cannot display media files within GRAMPS (running on MS Vista)

svn: r9898
This commit is contained in:
Brian Matherly 2008-01-21 04:10:52 +00:00
parent 2b7534d55d
commit 6873e9823b
2 changed files with 45 additions and 44 deletions

View File

@ -1,3 +1,7 @@
2008-01-20 Brian Matherly <brian@gramps-project.org>
* src/Mime/_WinMime.py:
0001483: Cannot display media files within GRAMPS (running on MS Vista)
2008-01-20 Brian Matherly <brian@gramps-project.org>
* src/plugins/Makefile.am:
* po/POTFILES.in:

View File

@ -18,7 +18,11 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# $Id:
# $Id$
"""
Mime utility functions for the MS Windows platform
"""
#-------------------------------------------------------------------------
#
@ -29,40 +33,32 @@ import os
from _winreg import *
from gettext import gettext as _
#-------------------------------------------------------------------------
#
# GNOME/GTK
#
#-------------------------------------------------------------------------
import gtk
#-------------------------------------------------------------------------
#
# Gramps modules
#
#-------------------------------------------------------------------------
import const
import _PythonMime
def get_application(type):
def get_application(mime_type):
"""Returns the application command and application name of the
specified mime type"""
extension = _get_extension(type)
progId = _get_prog_id(extension)
extension = _get_extension(mime_type)
progid = _get_prog_id(extension)
if not progId:
if not progid:
return None
# Find the application associated with this program ID
aReg = ConnectRegistry(None,HKEY_CLASSES_ROOT)
subkey = OpenKey(aReg, "%s\shell\open\command" % progId)
hcr = ConnectRegistry(None, HKEY_CLASSES_ROOT)
subkey = OpenKey(hcr, "%s\shell\open\command" % progid)
if subkey:
n,command,type = EnumValue(subkey, 0)
if type == REG_EXPAND_SZ:
name, command, data_type = EnumValue(subkey, 0)
if data_type == REG_EXPAND_SZ:
command = command.replace( '%SystemRoot%',
os.getenv('SystemRoot') )
CloseKey(aReg)
CloseKey(hcr)
else:
return None
CloseKey(subkey)
@ -77,17 +73,21 @@ def get_application(type):
app = command.split()[0]
hcu = ConnectRegistry(None, HKEY_CURRENT_USER)
try:
subkey = OpenKey(hcu, "Software\Microsoft\Windows\ShellNoRoam\MUICache")
except WindowsError:
subkey = None
desc = None
if subkey:
try:
desc,ValType = QueryValueEx(subkey, app)
except:
# No friendly name exists. Use progId
desc = progId
desc, data_type = QueryValueEx(subkey, app)
except WindowsError:
# No friendly name exists. Use progid
desc = progid
CloseKey(subkey)
else:
desc = progId
desc = progid
CloseKey(hcu)
return (command, desc)
@ -96,12 +96,12 @@ def get_description(mime_type):
"""Returns the description of the specfied mime type"""
desc = None
extension = _get_extension(mime_type)
progId = _get_prog_id(extension)
progid = _get_prog_id(extension)
if progId:
aReg = ConnectRegistry(None,HKEY_CLASSES_ROOT)
desc = QueryValue(aReg, progId)
CloseKey(aReg)
if progid:
hcr = ConnectRegistry(None, HKEY_CLASSES_ROOT)
desc = QueryValue(hcr, progid)
CloseKey(hcr)
if not desc:
desc = _("unknown")
@ -122,8 +122,6 @@ def mime_type_is_defined(mime_type):
else:
return _PythonMime.mime_type_is_defined(mime_type)
_icon_theme = gtk.icon_theme_get_default()
def find_mime_type_pixbuf(mime_type):
return _PythonMime.find_mime_type_pixbuf(mime_type)
@ -139,14 +137,14 @@ def _get_extension(mime_type):
"""
extension = None
try:
aReg = ConnectRegistry(None,HKEY_CLASSES_ROOT)
subkey = OpenKey(aReg, "MIME\DataBase\Content Type")
hcr = ConnectRegistry(None, HKEY_CLASSES_ROOT)
subkey = OpenKey(hcr, "MIME\DataBase\Content Type")
mimekey = OpenKey(subkey, mime_type)
extension,type = QueryValueEx(mimekey, "Extension")
extension, value_type = QueryValueEx(mimekey, "Extension")
CloseKey(mimekey)
CloseKey(subkey)
CloseKey(aReg)
except:
CloseKey(hcr)
except WindowsError:
extension = None
if not extension:
@ -160,7 +158,6 @@ def _get_extension(mime_type):
return extension
def _get_prog_id(extension):
"""
Return the program ID associated with this extension
@ -170,10 +167,10 @@ def _get_prog_id(extension):
return None
try:
aReg = ConnectRegistry(None,HKEY_CLASSES_ROOT)
progId = QueryValue(aReg, extension)
CloseKey(aReg)
return progId
except:
hcr = ConnectRegistry(None, HKEY_CLASSES_ROOT)
progid = QueryValue(hcr, extension)
CloseKey(hcr)
return progid
except WindowsError:
return None