在 GTKmm 中启动外部编辑器

Launching external editor in GTKmm

本文关键字:外部 编辑器 启动 GTKmm      更新时间:2023-10-16

我正在编写(使用C++和GTKmm)一个简单的照片浏览器,可以在GitHub上找到:

https://github.com/jjkrol/ZPR

目前,我正在努力创建一个按钮,该按钮将允许用户在外部编辑器(例如GIMP)中打开当前显示的照片。因此,我有两个问题:

  • 是否有使用 Gtk::AppChooserDialog 类的示例?我找不到任何编辑器,如果没有它们,很难开始选择编辑器。

  • 最重要的问题 - 我正在考虑一种在命令行中使用照片启动应用程序的方法。我想到的唯一解决方案是使用 system() 调用来做这样的事情:system("gimp/path/to/current/photo.jpg");,但这可能不是最好的方法。有人知道更好的方法吗?我想有一天将我的应用程序移植到 Windows,一种更便携的方式会很棒。

提前非常感谢你。

你可能想使用 Glib::spawn_command_line_async,而不是系统。 如果需要,还有其他类似的功能可以提供更多控制。

例如,您可能希望查看 glom 等应用程序的源代码。

非常感谢您的回答,gpoo 和 ergosys!最后我决定使用Gio::Appinfo,因为它看起来更像OOP。如果有人会遇到同样的问题 - 这就是我最终得到的:

Glib::RefPtr<Gio::AppInfo> editor = Gio::AppInfo::create_from_commandline("gimp", 
                                    "GIMP", Gio::APP_INFO_CREATE_SUPPORTS_URIS);
Glib::RefPtr<Gio::File> photo = Gio::File::create_for_path(
                                (*currentPhoto)->getPath().string());  
editor->launch(photo);

当然,选择带有Gtk::AppChooserDialog编辑器尚未实现。