方法

GiApplicationadd_main_option_entries

自:2.40

声明 [源]

void
g_application_add_main_option_entries (
  GApplication* application,
  const GOptionEntry* entries
)

描述 [源]

为应用程序添加要处理的主选项条目。

此函数类似于 g_option_context_add_main_entries()。

在解析命令行参数后,将发出 GApplication::handle-local-options 信号。在此点,应用程序可以检查给定的 GOptionEntrysarg_data 指向的值。

GOptionContext 不同,GApplication 支持非回调 GOptionEntryNULL arg_data。这会将相关参数打包成 GVariantDict,并将其传递给 GApplication::handle-local-options,在那里可以检查和修改。如果设置了 G_APPLICATION_HANDLES_COMMAND_LINE,则结果字典将发送到主实例,其中 g_application_command_line_get_options_dict() 将返回它。由于此时已传递到进程外部,因此在使用之前必须检查选项字典中所有值的类型。这种“打包”根据参数类型进行 - 对于正常标志是布尔值,对于字符串是字符串,对于文件名是字节字符串等。只有在标志提供的情况下才会进行打包(即,在标志缺失的情况下,我们不会打包“false” GVariant)。

通常建议所有命令行参数都应本地解析。然后应使用选项字典来将解析结果传输到主实例,其中可以使用 g_variant_dict_lookup()。对于本地选项,可以像往常一样使用 arg_data,或者查询(并可能删除)选项字典中的选项。

此函数首次出现在 GLib 2.40 版本中。在此之前,唯一的真实选择是将所有命令行参数(包括选项)发送给主实例进行处理。GApplication 在本地端完全忽略它们。调用此函数意味着“将选项传给(opts in)新行为”,特别是,未识别的选项将被视为错误。当 G_APPLICATION_HANDLES_COMMAND_LINE 没有设置时,未识别的选项从未被忽略。

如果 GApplication::handle-local-options 需要查看文件名列表,则建议使用 G_OPTION_REMAINING。如果 arg_dataNULL,则可以将 G_OPTION_REMAINING 用作选项字典中的键。如果使用 G_OPTION_REMAINING,则需要自己处理这些参数,因为一旦消耗了它们,它们就不再对默认处理(将其视为要打开的文件名)可见。

在检索选项时,使用正确的 GVariant 格式非常重要:G_OPTION_ARG_NONE 使用 b - G_OPTION_ARG_STRING 使用 &s - G_OPTION_ARG_INT 使用 i - G_OPTION_ARG_INT64 使用 x - G_OPTION_ARG_DOUBLE 使用 d - G_OPTION_ARG_FILENAME 使用 ^&ay - G_OPTION_ARG_STRING_ARRAY 使用 ^a&s - G_OPTION_ARG_FILENAME_ARRAY 使用 ^a&ay

自 2.40 版本起可用。

参数:

条目

类型: 一个 GOptionEntry 数组

应用程序的主选项。

数组必须以 NULL 结尾。
数据由方法的调用者拥有。