通过smart-open让Fvwm的MenuBrowser更智能, 根据文件类型选择打开方式.

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
头像
潇洒走一回
帖子: 735
注册时间: 2009-05-20 21:43

通过smart-open让Fvwm的MenuBrowser更智能, 根据文件类型选择打开方式.

#1

帖子 潇洒走一回 » 2010-06-25 20:09

代码: 全选

#文件浏览菜单:
DestroyMenu MenuBrowser
AddToMenu MenuBrowser
+ DynamicPopUpAction PipeRead \
	'~/bin/fvwm-menu-directory_Wonder \
	--name=MenuBrowser \
	--xterm="gnome-terminal -e" \
	--links --order 4 \
	--reuse \
	--special-dirs \
	--exec-file=smart-open'
smart-open 程序:

代码: 全选

#!/usr/bin/python
# coding=UTF-8
#根据文件类型使用特定程序打开文件
import sys, os
from opener_map import opener_map

if len(sys.argv) <= 1:
	print "Usage:", sys.argv[0], "<filename>"
	exit(1)

def get_extension_name(FileName):
	'''获得文件的扩展名
	'''
	ExtensionName = FileName.split('.')[-1]
	if ExtensionName == FileName:
		return None
	else:
		return ExtensionName

FileName = sys.argv[1]
ExtensionName = get_extension_name(FileName)
# 根据文件扩展名确定文件类型, 如果没有扩展名, 则根据文件内容探测文件类型
if ExtensionName:
	FileType = ExtensionName.lower()
else:
	FileType = 'txt' #暂时设为 txt 类型
	#FileType = detect_file_type_by_content(FileName)

#根据最终得到文件类型确定打开工具
try:
	final_opener = opener_map[FileType]
except KeyError:
	print "未知的文件类型, 将使用gvim打开"
	final_opener = 'gvim'

#回显并执行命令:
CMD = final_opener + ' ' + '"' + FileName + '"' + ' &'
print CMD
os.system(CMD)
smart-open使用的opener_map模块:

代码: 全选

#!/usr/bin/pytho
# coding=UTF-8

default_editor='gvim'
default_music_player='totem'
default_video_player='totem'
default_pic_viewer='gpicview'
default_web_browser='firefox'
default_word_processor='openoffice.org'
default_pdf_reader='evince'


opener_map = {
		"" : default_editor,
		"txt" : default_editor,

		"sh" : default_editor,
		"py" : default_editor,
		"c" : default_editor,
		"cc" : default_editor,
		"cpp" : default_editor,
		"cxx" : default_editor,
		"h" : default_editor,
		"hpp" : default_editor,

		"xml" : default_editor,

		"png" : default_pic_viewer,
		"jpg" : default_pic_viewer,
		"bmp" : default_pic_viewer,
		"svg" : default_pic_viewer,
		"xpm" : default_pic_viewer,

		"mp3" : default_music_player,
		"ogg" : default_music_player,
		"wav" : default_music_player,

		"rmvb" : default_video_player,
		"rm" : default_video_player,
		"mp4" : default_video_player,

		"html" : default_web_browser,

		"doc" : default_word_processor,
		"ods" : default_word_processor,
		"odt" : default_word_processor,
		"ppt" : default_word_processor,
		"xls" : default_word_processor,

		"pdf" : default_pdf_reader


		}
头像
潇洒走一回
帖子: 735
注册时间: 2009-05-20 21:43

Re: 通过smart-open让Fvwm的MenuBrowser更智能, 根据文件类型选择打开方式.

#2

帖子 潇洒走一回 » 2010-06-25 20:11

注释中的 detect_file_type_by_content() 函数能够使程序的功能更完整, 但是这个可能比较麻烦. 或许有现有的东西可以利用.
希望达人指点!
回复