方法
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
信号。在此点,应用程序可以检查给定的 GOptionEntrys
中 arg_data
指向的值。
与 GOptionContext
不同,GApplication
支持非回调 GOptionEntry
的 NULL
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_data
是 NULL
,则可以将 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
结尾。数据由方法的调用者拥有。