pyqsplitter 保持一个窗口不能拖动_又解决了一个小问题

OpenInTerminal-Lite 是一款 macOS 系统辅助功能,它可以为访达 Finder 菜单栏添加一个用终端打开、用编辑器打开的按钮,可以方便用户直接进入当前路径。支持终端、iTerm2、VS Code、Atom、Sublime Text 等工具。@Appinn

5dd64848c114d0fbe7df0bb7aa1881f9.png

在微博有同学寻找 Go2shell 的替代品:

想请教一下有 MacOS Catalina (version 10.15) 下可用的,功能类似Go2shell,可以在当前文件夹位置打开 bash 终端的工具吗?自定义右键 shortcut 可以实现类似的功能,但还是没有在工具栏上直接点开方便……真的很爱用 Go2Shell,但貌似开发者不再更新不支持新版本的系统了?

最终,青小蛙觉得 @Yawgnauh、@H和B各一半的HB 两位同学推荐的 OpenInTerminal 系列工具非常完美的解决了问题。

OpenInTerminal/OpenInEditor 有两套程序:标准版和 Lite 版本,主要区别如下:

功能OpenInTerminalOpenInTerminal-Lite & OpenInEditor-Lite
支持 Terminal, iTerm, Hyper 和 Alacritty
支持 Visual Studio Code, VSCode Insiders, Atom, Sublime Text, VSCodium, BBEdit,TextMate,CotEditor,MacVim 和 PhpStorm
设置为打开新的窗口或者标签页
支持中文,英语,法语和俄语
将已选择的文件或者访达窗口的路径拷贝到粘贴板
图形化设置界面
支持键盘快捷键
支持 Dark Mode

对于只想在 Finder 上点一下就打开终端、编辑器的同学来说,Lite 功能已经足够。

安装 OpenInTerminal-Lite

安装略微麻烦一点点,青小蛙以 OpenInTerminal-Lite 为例,其它版本请根据开发者页面设置:

brew cask install openinterminal

需要先安装 brew。

既然都使用终端了,那么就用 brew 方式安装吧,Brew 的安装方式:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

并没完,安装之后,需要先打开应用程序文件夹,将 OpenInTerminal-Lite 拖动到菜单栏上:

7cfcc9bf9e679cc15370aa9a232f7771.gif

对于使用深色模式的 macOS 用户,还需要下载深色图标,然后右键 OpenInTerminal-Lite 选择 显示简介,将深色图标拖动到最上面的图标上即可。

然后,就能愉快的在 Finder 菜单栏上一键打开终端啦,真的非常非常方便。

740b1a73649b4aac23b4a3b7070836e8.gif

更多使用说明可参加官网页面:标准版、Lite 版:https://github.com/Ji4n1ng/OpenInTerminal/blob/master/Resources/README-Lite-zh.md

有需求的同学请留言,我们会补上搬运地址,默认不提供。

c3718ff9560ba00c6275ccfe06003c61.png

本来今天不打算更新了,但想想还是有不少 Mac 用户,以及 Mac 用户中的终端用户 ?另外,已经有同学反馈这货的图标太丑太丑太丑太丑太丑了,不能忍的同学就...想想办法,能忍的凑合用。嗯。

1、 分割控件类:CSplitterControl SplitterControl.h SplitterControl.cpp 2、创建对象、增加资源 class xx { ... private: CSplitterControl m_wndSplitter1; // 上下分割 IDC_SPLITTER_TOP 分割线资源更改资源可见属性为不可见,防止出现2条线 void DoResize1(int delta); CSplitterControl m_wndSplitter2; // 左右分割 IDC_SPLITTER_LEFT void DoResize2(int delta); } 3、初始化 BOOL CT1Dlg::OnInitDialog() { ... // TODO: Add extra initialization here {//m_wndSplitter1 CRect rc; CWnd* pWnd; pWnd = GetDlgItem(IDC_SPLITTER_TOP); pWnd->GetWindowRect(rc); ScreenToClient(rc); m_wndSplitter1.Create(WS_CHILD | WS_VISIBLE, rc, this, IDC_SPLITTER_TOP); CRect rc2; GetDlgItem(IDOK)->GetWindowRect(&rc2); ScreenToClient(&rc2); CRect rc3; GetDlgItem(IDCANCEL)->GetWindowRect(&rc3); ScreenToClient(&rc3); m_wndSplitter1.SetRange(rc2.bottom, rc3.top); } {// m_wndSplitter2 CRect rc; CWnd* pWnd; pWnd = GetDlgItem(IDC_SPLITTER_LEFT); pWnd->GetWindowRect(rc); ScreenToClient(rc); m_wndSplitter2.Create(WS_CHILD | WS_VISIBLE, rc, this, IDC_SPLITTER_LEFT); CRect rc2; GetDlgItem(IDC_BUTTON1)->GetWindowRect(&rc2); ScreenToClient(&rc2); CRect rc3; GetDlgItem(IDC_BUTTON2)->GetWindowRect(&rc3); ScreenToClient(&rc3); m_wndSplitter2.SetRange(rc2.right+1, rc3.left-1); } return TRUE; // return TRUE unless you set the focus to a control } LRESULT CT1Dlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam) { // TODO: Add your specialized code here and/or call the base class if (message == WM_NOTIFY) { if (wParam == IDC_SPLITTER_TOP) { SPC_NMHDR* pHdr = (SPC_NMHDR*) lParam; DoResize1(pHdr->delta); } else if (wParam == IDC_SPLITTER_LEFT) { SPC_NMHDR* pHdr = (SPC_NMHDR*) lParam; DoResize2(pHdr->delta); } } return CDialog::DefWindowProc(message, wParam, lParam); } void CT1Dlg::DoResize1(int delta) { CSplitterControl::ChangeHeight(GetDlgItem(IDC_BUTTON1),delta); CSplitterControl::ChangeHeight(GetDlgItem(IDC_BUTTON2), -delta, CW_BOTTOMALIGN); Invalidate();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值