【eclipse插件开发实战】 Eclipse插件开发5——时间插件Timer开发实例详解

 Eclipse插件开发5——时间插件Timer开发实例详解


        这里做的TimeHelper插件设定为在菜单栏、工具栏提供快捷方式,需要在相应地方设置扩展点,最后弹出窗体显示时间。

        在上一篇文章里创建好了Time工程,在MANIFEST.MF的“扩展”选项卡里可以看到基本的插件扩展,当然这里最开始只有org.eclipse.core.runtime.application和org.eclipse.ui.perspectives,如下图所示:



        下面我们就要添加插件扩展,首先要说明几个东西:

1.      commands:通过这个扩展可以自定义添加事件处理类(例如TimeHandler.java);

2.      menu:在菜单栏里扩展插件,并且这个之后是要绑定到commands上的,commands的事件处理类用以处理相应事件;

3.      toolbar:在工具栏里扩展插件,这个之后也需要绑定到commands上,commands的事件处理类用以处理相应事件;

        在右侧点击“添加”按钮,即可添加相应扩展,这里添加三个东西:org.eclipse.ui.commands、org.eclipse.ui.menus(之后要在工具栏用)、org.eclipse.ui.menus(之后要在菜单栏用),添加好后如下图所示:




step1:新建commands并添加事件处理函数TimeHandler

        在org.eclipse.ui.commands上右键→新建command,在右侧里设定名称name为Time,id设为rcpproject.commands.Time(这个id只是一个区分,怎么写都可以,只要不重复,之后就是通过这个id来找到相应的commands的)。



        最主要的defaultHandler,这里双击defaultHandler超链接,就会提示创建一个新的处理类,这里在timer包下创建TimeHandler类,继承自org.eclipse.core.commands.AbstractHandler,接口为IHandler。代码如下:

package timer;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.commands.IHandler;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.ui.handlers.HandlerUtil;

public class TimeHandler extends AbstractHandler implements IHandler {	
	Date date = new Date(System.currentTimeMillis());
	String str = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
	
	public Object execute(ExecutionEvent event) throws ExecutionException {
			MessageDialog.openInformation(HandlerUtil.getActiveWorkbenchWindow(event).getShell(), 
					"Time Helper", "Current time is " + str);
		return null;
	}
}

        这里创建一个窗体,得到工作台事件.getActiveWorkbenchWindow(event),窗口标题为TimeHelper,对话框里显示当前时间。


step2:添加事件到工具栏

        在org.eclipse.ui.menus上右键新建menuContribution,然后再右键新建toolbar(id设为SayTime),再右键新建commands,此时把commands绑定到之前写的处理类上,通过设定好的commandId来关联:此处设定为rcpproject.commands.Time(就是之前的org.eclipse.ui.commands的id)。当然,这里还可以添加icon,把图标添加上去,前提是之前你在icon文件夹下已经放好了相应图标元素。另外还可以设定tooltip,设置提示语为StartAlarm。




step3:添加事件到菜单栏

同样的方式,在下面第二个org.eclipse.ui.menus上右键新建menuContribution,然后再右键新建menu(id设为timeMenu),再右键新建commands,把commands绑定到之前写的处理类上,设定commandId关联:此处设定为rcpproject.commands.Time,同上操作。



        运行程序,这里需要在运行配置里设置一下“Run a product”:org.eclipse.app.package.rcp.product




       最后导出jar包,安装到plugins文件夹下,重启eclipse最终效果图:


        该项目源码我已经commit到github,有兴趣的可以去看一下:https://github.com/DianaCody/Time.git,并且插件的jar包下载也在README.md文档里有下载链接,把jar包放到plugin目录下即可安装,jar包也可以到我的csdn资源页下载:http://download.csdn.net/detail/dianacody/7659081

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
你好!对于PyQt5项目开发的机器视觉实例,我们可以考虑使用OpenCV库来处理图像和视频数据,并结合PyQt5进行界面设计和交互。以下是一个简单的例子,演示了如何使用PyQt5和OpenCV实现一个简单的机器视觉应用程序: ```python import sys import cv2 from PyQt5.QtGui import QImage, QPixmap from PyQt5.QtWidgets import QApplication, QLabel, QWidget, QVBoxLayout class VideoWidget(QWidget): def __init__(self): super().__init__() self.video_label = QLabel(self) layout = QVBoxLayout() layout.addWidget(self.video_label) self.setLayout(layout) self.video_capture = cv2.VideoCapture(0) # 打开摄像头 self.timer = QTimer(self) self.timer.timeout.connect(self.update_frame) self.timer.start(30) # 每隔30毫秒更新一帧图像 def update_frame(self): ret, frame = self.video_capture.read() # 读取一帧图像 if ret: rgb_image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) # 转换为RGB格式 h, w, ch = rgb_image.shape bytes_per_line = ch * w q_image = QImage(rgb_image.data, w, h, bytes_per_line, QImage.Format_RGB888) self.video_label.setPixmap(QPixmap.fromImage(q_image)) if __name__ == '__main__': app = QApplication(sys.argv) video_widget = VideoWidget() video_widget.show() sys.exit(app.exec_()) ``` 在这个例子,我们创建了一个继承自QWidget的VideoWidget类,它包含一个QLabel用于显示视频帧。我们使用OpenCV的VideoCapture类打开摄像头,并使用定时器不断读取摄像头的图像数据。然后,我们使用cv2.cvtColor方法将BGR格式的图像转换为RGB格式,并使用QImage和QPixmap将图像显示在QLabel上。 当我们运行这个应用程序时,将会弹出一个窗口显示摄像头捕捉到的实时视频帧。 当然,这只是一个简单的示例,您可以根据您的具体需求进行更复杂的机器视觉应用程序开发。希望对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值