【问题标题】:Launching external editor in GTKmm在 GTKmm 中启动外部编辑器
【发布时间】:2012-05-27 05:35:59
【问题描述】:

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

https://github.com/jjkrol/ZPR

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

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

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

非常感谢您。

【问题讨论】:

  • 认为 Gio::AppInfo 可能是您应该查看#2 的内容。

标签: c++ gtk gtkmm


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    非常感谢 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 选择编辑器还没有实现。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-06
      相关资源
      最近更新 更多