[ Skill ] 图形化组件在注册 User Trigger 时需要注意的事情
https://www.cnblogs.com/yeungchie/
使用 deRegUserTriggers 可以用来配置:当打开一个新窗口时,自动集成自定义的菜单、工具栏等等。
- 使用格式如下:
deRegUserTriggers(
t_viewType
[ s_appTrigger
[ s_menuTrigger
[ s_postInstallTrigger ] ] ]
) => t / nil
ViewType
首先,viewType 在不同版本的 Virtuoso 可能存在差异,比如 maskLayoutGXL 高版本中可能已经取消。因此在注册前可以先判断一下当前类型是否可以获取到信息。
给不存在的 viewType 注册会报 Error 。
viewType = "maskLayoutGXL"
when( appInfo = deGetAppInfo( viewType )
; 判断 appInfo 为真再进行下一步操作。
)
TrigList
第二步,再判断是否已经注册过,重复注册会报 Warning 。
上一步返回的 appInfo 是一个 DPL ,通过查看 userMenuTrigList 或 userPostInstallTrigList 可以判断相应的程序是否已经注册过。
上面两个 TrigList 返回的是一个已经注册的子程序的 symbol 名组成的 list 。
假设已经定义了一个用于自动集成工具栏的子程序 autoPlaceToolbar :
unless( member( 'autoPlaceToolbar appInfo->userPostInstallTrigList )
; 当程序名不存在(未注册)的时候再执行注册
deRegUserTriggers( winType nil nil 'autoPlaceToolbar )
)
Toolbar
- 注册 toolbar place 的子程序需要写在
s_postInstallTrigger位置。 - 子程序中需要在
hiPlaceToolbar之后多加一句hiShowToolbar。这是因为同一窗口在切换 viewType 时,可能会让 toolbar 隐藏。( 就挺无语的 ... ) - 子程序中目标窗口要从输入变量中获取:
arg->window,不要使用hiGetCurrentWindow(),某些情况下可能会导致 toolbar 集成到错误的窗口去。 hiPlaceToolbar和deManageToolbar不要同时使用,会冲突。
下面是一个自动集成 toolbar的例子:
- Place
procedure( ycAutoPlaceToolbar( \@optional arg( list( nil 'window hiGetCurrentWindow())) "l" )
prog(( win toolbars )
boundp( '_ycToolbar ) || return()
win = arg->window || return()
toolbars = hiGetWindowToolbars( win )
unless( member( _ycToolbar toolbars )
hiPlaceToolbar( win _ycToolbar 'left )
)
hiShowToolbar( _ycToolbar )
return( t )
)
); ycAutoPlaceToolbar
- RegTrigger
foreach( viewType list( "maskLayout" "maskLayoutXL" "maskLayoutGXL" )
let(( appInfo )
when( appInfo = deGetAppInfo( viewType )
unless( member( 'ycAutoPlaceToolbar appInfo->userPostInstallTrigList )
deRegUserTriggers( viewType nil nil 'ycAutoPlaceToolbar )
)
)
)
); RegTrigger
[ Skill ] 图形化组件在注册 User Trigger 时需要注意的事情的更多相关文章
- Centos6.5卸载图形化
问题描述: Centos6.5想运行在非图形化状态,减小系统资源的开销!提升服务器性能....... 问题解决: 01.切换运行模式,变相实现非图形化运行 多用户模式 init 图形化模式 init ...
- Ceontos6.X配置XDMCP远程调用图形化
Linux一般不需要图形化,但是偶尔也是需要的,基于X11协议的图形化XDMCP很受推广,VNC也是很不错的... 前提: 关闭防火墙,不关闭需要配置177端口放行 关闭selinux,不关闭自己配置 ...
- iNeuOS工业互联平台,WEB组态(iNeuView)集成图报组件,满足实时数据图形化展示的需求
目 录 1. 概述... 1 2. 平台演示... 2 3. 应用过程... 3 4. 实时数据展示效果... 5 1. 概述 市场和开源社区有 ...
- JS组件系列——Gojs组件,前端图形化插件之利器
前言:之前分享过两篇关于流程画图的前端组件,使用的jsPlumb.这个组件本身还不错,使用方便.入门简单.轻量级,但是使用一段时间下来,发现一些弊病,比如组件不太稳定,初始进入页面的时候连线的样式有时 ...
- JS图形化插件利器组件系列 —— Gojs组件
阅读目录 一.组件效果预览 二.初次接触 1.Gojs简介 2.使用入门 三.综合效果 1.自定义流程的使用 2.工业流程图 四.总结 正文 前言:之前分享过两篇关于流程画图的前端组件,使用的jsPl ...
- JS前端图形化插件之利器Gojs组件(php中文网)
JS前端图形化插件之利器Gojs组件(php中文网) 一.总结 一句话总结:php中文网我可以好好走一波 二.JS前端图形化插件之利器Gojs组件 参考: JS前端图形化插件之利器Gojs组件-js教 ...
- 三十二、Java图形化界面设计——布局管理器之CardLayout(卡片布局)
摘自 http://blog.csdn.net/liujun13579/article/details/7773945 三十二.Java图形化界面设计--布局管理器之CardLayout(卡片布局) ...
- Java图形化界面设计——容器(JFrame)
Java图形化界面设计——容器(JFrame) 程序是为了方便用户使用的,因此实现图形化界面的程序编写是所有编程语言发展的必然趋势,在命令提示符下运行的程序可以让我们了解java程序的基本知识体系结构 ...
- Java 图形化界面设计(GUI)实战练习(代码)
关于Java图形化界面设计,基础知识网上可搜,下面简单介绍一下重点概念,然后就由浅入深代码实例. 程序是为了方便用户使用的,Java引入图形化界面编程. 1.JFrame 是容器类 2.AWT 是抽象 ...
随机推荐
- 从网络通信的演进过程彻底搞懂Redis高性能通信的原理(全网最详细,建议收藏)
我们一直说Redis的性能很快,那为什么快?Redis为了达到性能最大化,做了哪些方面的优化呢? 在深度解析Redis的数据结构 这篇文章中,其实从数据结构上分析了Redis性能高的一方面原因. 在目 ...
- el-scrollbar滚动条置底
<el-scrollbar ref="leftScrollbar" style="height: 600px"></el-scrollbar& ...
- LiveVideoStackCon2021 北京站专访:从上云到创新,视频云的新技术、新场景
伴随着视频技术的进步和标准的迭代,视频产业从模拟进入到数字时代,完成了从电影电视到互联网的媒介转换,并且衍生出了超高清.3D.AR/VR 等多种创新形态.特别是在后疫情的当下,我们可以看到音视频技术领 ...
- Spring session redis ERR unknown command 'CONFIG'
部署线上服务启动报错 redis.clients.jedis.exceptions.JedisDataException: ERR unknown command 'CONFIG' Redis CON ...
- [技术博客] 软工-Ruby on Rails前端工具链的配置以及对Web应用结构设计的一点思考
一.相关工具链简介 HAML HAML是专门面向Ruby on Rails模版语法设计的一门标记语言,其结合RoR的views部分模版语法的特点,对原来的*.html.erb(嵌入Ruby代码的HTM ...
- [BZOJ4399]魔法少女LJJ----------线段树进阶
感谢线段树进阶,给了我重新做人的机会.---------------某不知名OIer,Keen_z Description 题目描述 在森林中见过会动的树,在沙漠中见过会动的仙人掌过后,魔法少女LJJ ...
- VS2017+QT5.12.10+QGIS3.16环境搭建及开发全流程
题记:大力发展生产力,助力高效采集.(转载请注明出处https://www.cnblogs.com/1024bytes/p/15477374.html) 本篇随笔分为五个部分: 一.获取QGIS3.1 ...
- 深入理解xLua基于IL代码注入的热更新原理
目前大部分手游都会采用热更新来解决应用商店审核周期长,无法满足快节奏迭代的问题.另外热更新能够有效降低版本升级所需的资源大小,节省玩家的时间和流量,这也使其成为移动游戏的主流更新方式之一. 热更新可以 ...
- 21.6.4 test
\(NOI\) 模拟赛 太离谱了,碳基生物心态极限 \(T1\),字符串滚出OI,最后想了个区间dp,期望得分32pts,实际得分0pts,不知为啥挂了.正解是没学过的SAM. \(T2\),正解博弈 ...
- Loto实践干货(8) 实测 保险丝 用示波器带电流探头
本文用LOTO示波器和5A的电流探头来实验两种常见类型的保险丝的保护曲线.一种是熔断型的,另一种是自恢复型的.我们通常需要在一些电路中对电流过大的情况做保护,比如防止用户把输出源短路,比如防止用户对电 ...