0

好吧,好吧,我真的在挑战鞋子的用途,所以我不期待任何奇迹:有没有办法在没有gui 的情况下选择性地运行鞋子应用程序?

我想这样做的原因是我正在创建一个供“非计算机人员”以及“计算机人员”使用的工具,他们宁愿将程序作为命令行工具运行,甚至可能在系统上运行没有安装 X/gtk。(我是一名多学科研究人员,鞋子非常适合专注于工具而不是整天摆弄 gui 设计。)

这是一些示例代码:

if(ARGV[1] == "nogui")
  puts "running computation on #{ARGV[2]}";
  exit();
end

Shoes.app(:width => 200, :height => 100) do
  @button = button("Quit").click() {
    exit();
    }
end

除了我得到一个

Gtk-CRITICAL **: gtk_main_quit: assertion `main_loops != NULL' failed

错误。

4

1 回答 1

1

我还没有尝试过,但我不知道Shoes 是否会在没有X 的系统上愉快地启动。您最好创建一个shell 脚本来选择要启动的版本。像这样的东西:

#!/usr/bin/sh
NOGUI=0
if [ $# -gt 0 ]; then
  NOGUI=$1
fi
if [ $NOGUI = nogui ]; then
    shift
    echo "Running in command-line mode..."
    ruby command-line.rb "$@"
else
    echo "Starting Shoes..."
    shoes shoes.rb "$@"
fi

如果第一个参数是nogui,则其余参数将发送到 Ruby 版本,否则所有参数(包括第一个参数)都将发送到 Shoes。

现在您只需将实际的性能逻辑分离出来,以便可以将其导入到两个版本中。

于 2009-06-23T18:13:18.970 回答