在GTKmm中启动外部编辑器

时间:2012-05-24 19:24:29

标签: c++ gtk gtkmm

我正在编写(使用C ++和GTKmm)GitHub上提供的简单照片浏览器:

https://github.com/jjkrol/ZPR

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

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

  • 最重要的问题 - 我正在考虑在命令行中启动带照片的应用程序的方法。我想到的唯一解决方案是使用system()调用来执行以下操作:system(“gimp /path/to/current/photo.jpg”); ,但这可能不是最好的方法。谁知道更好的方法?我想有一天将我的应用程序移植到Windows上,并且更便携的方式会很棒。

非常感谢你。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

非常感谢你的回答,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的编辑器尚未实施。