二、熟悉脚本编程的模型
用脚本编写的插件是架构在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。
- PutValue(key_text, value)
- 设定指定Key的Value。
- Clear()
- 清除所有的设定。
- utils
- 方法
- loadImage(file_path)
- 返回装入的图片
- 只支持本地文件,不支持Url
- setInterval(handler, elapse_ms)
- 返回新产生的计时器的id
- 设定周期调用handler的时间间隔
- clearInterval(timer_id)
- 清除/停止指定的计时器
- setTimeout(handler, elapse_ms)
- 返回新的计时器id
- 设定一次性调用handler的计时器的时间间隔。
- clearTimeout(timer_id)
- 清除/停止指定的计时器
- alert(text)
- 显示一个信息对话框
- confirm(text)
- 显示一个让用户选择确定和取消的对话框
- 用户选择ok返回true,选择cancel返回false
- prompt(label, default_text)
- 显示个对话框让用户进行输入
- 返回用户输入的文本
- Graphics
- 方法
- DrawLine(x1, y1, x2, y2, color);
- 用color画条从x1,y1到x2,y2的直线
- DrawRect(x, y, width, height, line_color, fill_color)
- 用指定坐标,制定颜色画个长方形
- DrawImage(x, y, width, height, image, alpha_percent)
- 在指定长方形内显示图片,可以设定透明度alpha_percent,范围0-100
- DrawText(x, y, width, height, text, color, flags, font)
- 在指定长方形内显示文字
- GetTextWidth(text, flags, font)
- 得到指定字体的文本的宽度
- GetTextHeight(text, width, flags, font)
- 得到指定字体的文本的高度
- Menu
- 方法
- AddItem(item_text, style, handler)
- 增加一个菜单,菜单的样式是gddMenuItemFlagXXXX常量的组合。菜单事件处理函数的原型是OnMenuItem(item_text)。
- SetItemStyle(item_text, style)
- 设定指定菜单的样式。
- AddPopup(popup_text)
- 加入一个子菜单或者弹出菜单。
- Window
- 方法
- AddControl(ctrl_class, ctrl_type, ctrl_id, text, x, y, width, height)
- 返回新控件的WindowControl对象
- 创建一个给定数据的控件并加入窗体内。ctrl_class应该是gddWndCtrlClassXXX中的一个,ctrl_type应该是gddWndCtrlTypeXXX中的一个。ctrl_id, text, x, y, width和height等参数会直接传给ctrl_class的内,所以他们的值需要满足那些属性的要求。
- GetControl(ctrl_id)
- 返回指定Id的WindowControl对象。
- 事件句柄
- onClose
- 原型:OnClose(button_id),button_id是gddIdXXXX中的一个。
- 返回false保持窗口不关闭,返回true或者不返回怎窗口关闭。
- WindowControl
- 属性
- id
- 字符串,可读写
- 控件的标识符
- enabled
- 布尔变量,可读写
- 设定控件是否可用
- text
- 对于列表控件,是字符串数组。对其他控件是字符串。可读写。
- 用于控件的显示文本。
- value
- 对于列表控件是当前选中的字符串。对于复选框,是布尔变量,表明选择状态。对于其他控件,就是显示的文本。可读写。
- x
- 整数,可读写。控件的x坐标。
- y
- 整数,可读写。控件的y坐标。
- width
- 整数,可读写。控件的宽度。
- height
- 整数,可读写。控件的高度。


请不要吝惜您的评论,每一条评论,都是我在漫漫长夜前行的力量
4 条评论:
继续呀 好像还没有完
10:26 上午
En,还没完
还在写,最近有点忙
11:08 上午
你好!
我想向你请教一个问题。
现在我在负责公司文档服务器,使用google桌面可以实现很强大的关键字搜索功能,但是其权限限制方面却非常弱。我安装了DNKA插件,也只能实现非常简单的用户管理功能。比如简单的说,我想对A用户开放两个目录的开放权限时就无法设置,因为DNKA只支持一个用户设定一个目录作为搜索目标。
我能想到的解决方案有:
1.下载具有更强用户管理功能的插件。--可惜一直没有找到合适的。
2.修改google桌面,使其只能列出搜索结果,但用户无法打开。需配合FTP服务器获取文件。等于把权限控制的问题由FTP服务器来完成了。--但我对google桌面使用的语言不甚了解,一时找不到如何下手。
3.重新编写插件,自己开放用户管理功能。--我也是软件专业毕业,以前用java开发,也曾经接触过网站方面的active控件,但没有用过javascript。对你介绍的开发环境也挺陌生的,不知道该如何下手,工作量大概多少。
看高手是否能指点一二?可以加我msn联系:
dongyuexia@hotmail.com
盼回!
多谢!!
5:55 下午
还以为会有有用的信息呢,结果就是从google主页转来的那点DOC!能不能直接整点别的地方没有的,是你自己弄出来的东西?
9:49 下午
发表评论
<< 主页