void on_application_activate(GApplication *app, ... ) {
}
gint on_handle_local_options(GApplication *app, GVariantDict *options, ...) {
}
void on_application_open(GApplication *app, GFile **files, gint n_files, ...) {
}
int main(int argc, char **argv) {
application = gtk_application_new("...", G_APPLICATION_HANDLES_OPEN);
g_application_add_main_option_entries(G_APPLICATION(application), ... ); // p1 and p2
g_signal_connect(application, "activate", G_CALLBACK(on_application_activate), NULL);
g_signal_connect(application, "handle-local-options", G_CALLBACK(on_handle_local_options), NULL);
g_signal_connect(application, "open", G_CALLBACK(on_application_open), NULL);
g_application_run(G_APPLICATION(application), argc, argv);
...
}
Приложение с одним экземпляром на основе этого шаблона, запущенное с ./app --p1 --p2 file1 file2
, выдаст мне p1 + p2 в on_handle_local_options
и file1 + file2 в on_application_open
. Отлично подходит для первого экземпляра.
Когда я вызываю второй экземпляр, файлы переходят на on_application_open
в первом экземпляре (основной), в то время как параметры переходят в on_handle_local_options
во втором экземпляре (локальном) - этоопределяется следующим образом.
Но мне нужны параметры, влияющие на основной экземпляр - как я могу сделать что-то вроде on_handle_options в основном экземпляре? Или передать параметры другим способом и заставить основной экземпляр реагировать?