Приложение GTK3, которое обрабатывает опции в первичном экземпляре - PullRequest
0 голосов
/ 03 октября 2019
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 в основном экземпляре? Или передать параметры другим способом и заставить основной экземпляр реагировать?

...