我的时光,停在了你的角落…~
用JavaScript开发你的Google桌面(Google Desktop)显示插件
Google桌面搜索推出第二个版本的时候,有两个细节很值得留意。
第一是名字里面少了点东西,Google桌面搜索(Google Desktop Search)变成了Google桌面(Google Desktop);第二是功能方面多了点东西,那就是增加了Google桌面边栏 (Google Desktop SiderBar)。
这两个细节有很多人都忽略了,在他们看来,Google桌面仍旧只是一个桌面搜索工具。我要说他们错了,有了桌面边栏以后的Google Desktop更像一个个人信息平台,一个良好的桌面搜索是构建个人信息平台的基础,但绝对不是全部。可以参照的是,今年7月,Yahoo收购了Konfabulator。这样,在桌面信息中心的争夺战中,Google和Yahoo一人往前线走了一步。
如果有人问我什么是WebOs,我会说这就是WebOs的雏形。桌面边栏是一个客户端程序,但是里面显示的内容都来自网络,实时适时更新。桌面边栏里面的大部分功能都可以在浏览器里面实现,也就是说,你可以把它理解为一个看起来稍微胖了一点的Web客户端。或者说,按照流行的话说,他是一个Rich的,一个丰富的客户端。
现在每天我的桌面边栏都是打开的,我用它来浏览Google News,用它来关注Google、百度和微软的股价,用它来实时跟踪我的Google Adsense广告点击和收益情况,甚至用它的插件gdTunes来控制我的iTunes播放音乐。还有些东西我也想用它来做,唯一的障碍就是没有相应的插件。
但是这个问题也很好解决,因为从一开始推出,Google桌面和桌面边栏就支持非常强大全面的插件接口,你几乎可以用这些接口实现任何你想要的插件。
Google桌面插件接口是基于Com的,这样任何支持Com的语言和开发工具都可以用来开发Google桌面插件。Google方面似乎更推荐大家使用VC7来进行开发,他们提供了一个VC7开发Google桌面插件的向导。
然而,今天本文要介绍的是用JavaScript(实际上也可以用VBScript)来开发Google桌面插件。因为这更加简单,也更加可靠,因为用JavaScript来开发Google桌面插件可以避开Com的复杂性。当然,用这个方法开发插件也会受到一些表现能力方面的限制,你的插件只能包含标准的Google桌面插件界面元素。
下面我们开始如何开发Google桌面插件(这里说的是显示插件,也就是会显示在桌面边栏上面的插件。):
一、开发环境的建立
首先你先要到Google桌面网站(http://desktop.google.com/)下载最新版的SDK。下载完毕后,解压到任意目录,然后把其中的tools目录加入到Windows环境变量Path之中。
然后,你要到Wix网站(http://sourceforge.net/projects/wix/)去下载Wix工具。下载后,解压到任意目录,这个目录也加入到Windows环境变量Path之中。
二、熟悉脚本编程的模型
用脚本编写的插件是架构在plug-in helper框架之上的。用JavaScript我们可以修改插件的属性和显示的内容,还可以修改插件菜单,实现设定对话框等等。我们还可以使用标准的JavaScript特性、函数和数据类型。但是对目前的发行版,脚本不能在桌面边框的界面中使用本地的用户界面元素。
脚本插件接口了下面的全局变量供开发者使用:
pluginHelper
用来修改插件的配置信息。
属性
title
字符串,只写
用来设定插件的标题
about_text
字符串,只写
用来设定关于对话框里面显示的文本
content_items
content_item对象的数组,可读写
保存显示内容条目的数组
max_content_items
整数,可读写
可以显示的最大内容条目数。默认值为25,但是插件可以修改。
window_width
整数,只读
插件窗口的宽度,单位为点阵。
window_height
整数,只读
插件窗口的高度,单位为点阵。
pin_images
image数组,可读写
Array of images to use for the ‘pin’ icon, which when clicked pins the clicked item at the top of the list.
方法
SetFlags(plugin_flags, content_flags)
没有返回值
设定插件和内容的标志,从而影响插件的行为。
SetIcons(small_icon, large_icon)
没有返回值
设定插件标题和关于对话框里面的图标。
AddContentItem(content_item, display_options)
没有返回值
添加指定的内容条目。
RemoveContentItem(content_item)
没有返回值
移去指定的内容条目。
RemoveAllContentItems()
没有返回值
移去所有的内容条目。
事件句柄
onShowOptionsDlg
在显示设定对话框前对其进行初始化。原型:InitDialog(window)
返回false取消对话框,true或者不返回任何东西的情况下显示对话框
onAddCustomMenuItems
在显示菜单前对其进行初始化。原型:AddCustomMenuItems(menu)
不需返回
onCommand
执行GD API定义的命令(命令形式为GDD_CMD_xxxx)。原型:OnCommand(command)
不需返回
onDisplayStateChange
显示状态变化时调用。原型:OnDisplayStateChange(new_display_state)
不需返回
ContentItem
属性
image
Image类型,可读写
用来显示条目的图像
notifier_image
Image类型,可读写
显示在提醒器里面的图像
time_created
时间类型,可读写
条目的创建时间
heading
字符串,可读写
条目显示的标题
source
字符串,可读写
条目的网站/新闻来源
snippet
字符串,可读写
条目的摘要
open_command
字符串,可读写
打开或者双击条目时要打开的地址或者文件。
layout
整数,可读写
条目显示的布局
tooltip
字符串,可读写
提示信息
方法
SetRect(x, y, width, height)
不返回任何东西
设定条目的显示位置。在设定条目的位置前,需要打开ANUAL_LAYOUT标志。否则,条目将会在缺省的位置 出现。
事件句柄
onDrawItem
描绘条目的时候调用.
原型:DrawItem(item, display_target, graphics, x, y, width, height)
不需返回
onGetHeight
取得给定宽度的条目的高度
原型:GetHeight(item, display_target, graphics, width)
返回给定宽度的条目的高度
onOpenItem
用户打开或双击条目的时候调用
原型:OpenItem(item)
不需返回
onToggleItemPinnedState
用户点击pin按钮的时候调用
原型:ToggleItemPinnedState(item)
不需返回
onGetIsTooltipRequired
判断指定位置显示的条目是否需要提示信息
原型:GetIsTooltipRequired(item, display_target, graphics, x, y, width, height)
onDetaisView
显示指定条目的时候显示。
原型:OnDetailsView(item)
不返回会取消细节视图,或者返回有以下属性的对象
obj.title 细节视图里面显示的标题
obj.details_control 细节视图里面显示的activeX控件
obj.flags 控制细节视图显示布局和用途的标志
以上参数的更多细节请参看文档中IGoogleDesktopDisplayContentItemHandler接口的OnDetailsView事件。
onProcessDetailsViewFeedback
在细节视图中处理用户动作
原型:ProcessDetailsViewFeedback(item, details_view_flags)
不需返回
onRemoveItem
用户删除内容条目的时候触发
原型:RemoveItem(item)
返回true取消删除操作,返回false确认操作,删除指定内容条目。
options
方法
GetValue(key_text)
返回指定Key对应的Value

最新评论