【问题标题】:How can I make a GUI frontend to a command line tool in OSX?如何在 OSX 中为命令行工具制作 GUI 前端?
【发布时间】:2011-02-05 06:07:31
【问题描述】:
我很想知道如何在 OSX 中为 ffmpeg 和 jhead 制作 GUI。我一直在寻找解决方案一段时间,并认为你,stackoverflow 的用户,可以帮助我。也许您知道一些我没有遇到过的文档,或者更好的是制作 GUI 的教程。
我喜欢这两个工具,但我喜欢拖放操作的简单性。
注意:我不需要他们的 GUI,我想做一个。
【问题讨论】:
标签:
cocoa
xcode
user-interface
command-line
frontend
【解决方案1】:
在 Cocoa Dev Central 站点上有一个使用 NSTask 封装命令行工具的教程:
现在已经有几年了,但应该可以帮助您入门。
【解决方案2】:
如果您问“如何在 Mac OS X 中创建与命令行工具交互的 GUI 应用程序”,答案是 NSTask。不过,如果命令行工具提供了编程 API,那么使用它会比调用命令行工具本身更可取。
如果您问“如何在 Mac OS X 中创建 GUI 应用程序”,答案是阅读有关它的书并查看 Apple 教程文档。 Mac OS X 上的 Cocoa 编程是我的起点。
【解决方案3】:
您可以将 Tcl、Python 或 Ruby 等脚本语言与 Tk 等工具包结合使用,该工具包在 mac 上使用本机小部件。
【解决方案4】:
首先使用所需的 GUI 创建一个模态对话框 NIB。
在 C 中调用时,创建一个 NSReleasePool,然后创建魔法酱。
[NSApplication sharedApplication]
ProcessSerialNumber psn;
GetCurrentProcess( &psn );
TransformProcessType(&psn,kProcessTransformToForegroundApplication);
SetFrontProcess( &psn );
稍后从 Bundle 加载 NIB 后,发出
[NSApp runModalForWindow:[controller window]];
[[controller window] close];
如果没有 TransfromProcessType(),终端应用程序将获得击键,而不是模态对话框。
【解决方案5】:
这可能不是最好的答案,但在“Xcode unleashed”一书中,有一章介绍了如何在 Cocoa 应用程序中嵌入命令行工具。也许你应该看看。还是不错的书。
【解决方案6】:
在您的 Leopard/Snow Leopard 磁盘上,您可以找到 XCode,但您也可以从 Apple 开发者社区下载它。 XCode 带有 Interface Builder,它允许您构建 GUI,并且您可以使用 Cocoa 框架来绑定您的命令。
【解决方案7】:
你太晚了,已经有一个名为ffmpegX的ffmpeg GUI前端,但无论如何,你会创建一个模型来包装或使用库或可执行文件....如果它使用你可以使用的可执行文件popen 调用可执行文件,写入其 STDIN,并从其 STDOUT 读取。视图和控制器基本上与您为任何其他 GUI 应用程序设计的相同。由于这是一篇 Cocoa 帖子,您可以使用 Objective-C 和 Cocoa 来制作 GUI,但它确实可以用任何语言实现。
【讨论】:
-
我知道,但 ffmpegX 并不是我喜欢的那种软件(拖放、转换、完成),太多的设置分布在一个充满控件的类似 Windows 的界面上。我想构建类似 EasyWMV 的东西:easywma.com/wmv