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 ,通过查看 userMenuTrigListuserPostInstallTrigList 可以判断相应的程序是否已经注册过。

上面两个 TrigList 返回的是一个已经注册的子程序的 symbol 名组成的 list 。

假设已经定义了一个用于自动集成工具栏的子程序 autoPlaceToolbar

unless( member( 'autoPlaceToolbar appInfo->userPostInstallTrigList )
; 当程序名不存在(未注册)的时候再执行注册
deRegUserTriggers( winType nil nil 'autoPlaceToolbar )
)

Toolbar

  1. 注册 toolbar place 的子程序需要写在 s_postInstallTrigger 位置。
  2. 子程序中需要在 hiPlaceToolbar 之后多加一句 hiShowToolbar 。这是因为同一窗口在切换 viewType 时,可能会让 toolbar 隐藏。( 就挺无语的 ... )
  3. 子程序中目标窗口要从输入变量中获取:arg->window,不要使用 hiGetCurrentWindow(),某些情况下可能会导致 toolbar 集成到错误的窗口去。
  4. hiPlaceToolbardeManageToolbar 不要同时使用,会冲突。

下面是一个自动集成 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 时需要注意的事情的更多相关文章

  1. Centos6.5卸载图形化

    问题描述: Centos6.5想运行在非图形化状态,减小系统资源的开销!提升服务器性能....... 问题解决: 01.切换运行模式,变相实现非图形化运行 多用户模式 init 图形化模式 init ...

  2. Ceontos6.X配置XDMCP远程调用图形化

    Linux一般不需要图形化,但是偶尔也是需要的,基于X11协议的图形化XDMCP很受推广,VNC也是很不错的... 前提: 关闭防火墙,不关闭需要配置177端口放行 关闭selinux,不关闭自己配置 ...

  3. iNeuOS工业互联平台,WEB组态(iNeuView)集成图报组件,满足实时数据图形化展示的需求

    目       录 1.      概述... 1 2.      平台演示... 2 3.      应用过程... 3 4.      实时数据展示效果... 5 1.   概述 市场和开源社区有 ...

  4. JS组件系列——Gojs组件,前端图形化插件之利器

    前言:之前分享过两篇关于流程画图的前端组件,使用的jsPlumb.这个组件本身还不错,使用方便.入门简单.轻量级,但是使用一段时间下来,发现一些弊病,比如组件不太稳定,初始进入页面的时候连线的样式有时 ...

  5. JS图形化插件利器组件系列 —— Gojs组件

    阅读目录 一.组件效果预览 二.初次接触 1.Gojs简介 2.使用入门 三.综合效果 1.自定义流程的使用 2.工业流程图 四.总结 正文 前言:之前分享过两篇关于流程画图的前端组件,使用的jsPl ...

  6. JS前端图形化插件之利器Gojs组件(php中文网)

    JS前端图形化插件之利器Gojs组件(php中文网) 一.总结 一句话总结:php中文网我可以好好走一波 二.JS前端图形化插件之利器Gojs组件 参考: JS前端图形化插件之利器Gojs组件-js教 ...

  7. 三十二、Java图形化界面设计——布局管理器之CardLayout(卡片布局)

    摘自 http://blog.csdn.net/liujun13579/article/details/7773945 三十二.Java图形化界面设计--布局管理器之CardLayout(卡片布局) ...

  8. Java图形化界面设计——容器(JFrame)

    Java图形化界面设计——容器(JFrame) 程序是为了方便用户使用的,因此实现图形化界面的程序编写是所有编程语言发展的必然趋势,在命令提示符下运行的程序可以让我们了解java程序的基本知识体系结构 ...

  9. Java 图形化界面设计(GUI)实战练习(代码)

    关于Java图形化界面设计,基础知识网上可搜,下面简单介绍一下重点概念,然后就由浅入深代码实例. 程序是为了方便用户使用的,Java引入图形化界面编程. 1.JFrame 是容器类 2.AWT 是抽象 ...

随机推荐

  1. 小数的十进制和二进数转换 “无限不循环”小数的IEEE 754表示

    十进制 -> 二进制 将整数部分和小数部分分开处理 例:3.125(10) 其整数部分为11(2) 小数部分按照下面的步骤求解: 0.125 x 2 = 0.25 取0 0.250 x 2 = ...

  2. Less-32 宽字节

    <!-- 下午整了半天Less-29~31,愣是没调好jsp环境,只好跳过. 难受.jpg !--> Less-32: 核心语句: 各种回显均存在. 第一句话指定了字符集为gbk. che ...

  3. 【UE4】 补丁Patch 与 DLC

    概述 UE4 中主要使用 Project Launcher 来进行补丁和DLC的制作 补丁与 DLC 都需要基于某个版本而制作 补丁 与 DLC 最后以 Pak 形式表现, 补丁的 pak 可以重命名 ...

  4. Java中的函数式编程(六)流Stream基础

    写在前面 如果说函数式接口和lambda表达式是Java中函数式编程的基石,那么stream就是在基石上的最富丽堂皇的大厦. 只有熟悉了stream,你才能说熟悉了Java 的函数式编程. 本文主要介 ...

  5. UltraSoft - Alpha - Scrum Meeting 4

    Date: Apr 18th, 2020. 会议内容为 例行汇报. Scrum 情况汇报 进度情况 组员 负责 前两日进度 后两日任务 CookieLau PM 完成前后端交互规格的约定,了解前后端进 ...

  6. Redis核心原理与实践--Redis启动过程源码分析

    Redis服务器负责接收处理用户请求,为用户提供服务. Redis服务器的启动命令格式如下: redis-server [ configfile ] [ options ] configfile参数指 ...

  7. [调试笔记] 晚测5 T1 容易题

    众所周知,sbwzx在考试一结束就嚷嚷T1是个sb题.那他为什么调了2小时才调出来呢?快和小编一起看看吧. Sb题:指除了sbwzx别人都能做出来的题 1.CE:震惊!sbwzx竟然连map都不会用, ...

  8. 解决svn异常报错“”cleanup failed to process the following paths …… previous operation has not finished”

    参考高票答案https://stackoverflow.com/questions/10128201/subversion-stuck-due-to-previous-operation-has-no ...

  9. [CSP-S2021] 廊桥分配

    链接: P7913 题意: 有 \(m_1\) 架飞机和 \(m_2\) 架飞机停在两个机场,每架飞机有到达和离开的时间,要将 \(n\) 个廊桥分给两个机场,每个廊桥同一时刻只能停一架飞机,需要最大 ...

  10. git merge远程合并

    当某个分支上的开发工作完成后需要将其合入主分支master 但是在提交合并前我们自己最好做一次衍合,目的是检测是否有冲突的风险,如果有应该在本分支先解决冲突然后在提交合并. 否则解决冲突的工作就全部转 ...