当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 2 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 通过smart-open让Fvwm的MenuBrowser更智能, 根据文件类型选择打开方式.
帖子发表于 : 2010-06-25 20:09 
头像

注册: 2009-05-20 21:43
帖子: 735
送出感谢: 2
接收感谢: 2
代码:
#文件浏览菜单:
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


      }


_________________
http://wonc.me/


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 通过smart-open让Fvwm的MenuBrowser更智能, 根据文件类型选择打开方式.
帖子发表于 : 2010-06-25 20:11 
头像

注册: 2009-05-20 21:43
帖子: 735
送出感谢: 2
接收感谢: 2
注释中的 detect_file_type_by_content() 函数能够使程序的功能更完整, 但是这个可能比较麻烦. 或许有现有的东西可以利用.
希望达人指点!


_________________
http://wonc.me/


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 2 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 4 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译