LINUX.ORG.RU

GTK: This application can not open files.

 ,


1

2

Пытаюсь написать мини-программу для определенной задачи, но нужно, чтоб программа принимала аргументы из терминала

После компиляции и запуска программы

./programm argument

выдает ошибку This application can not open files.

Сама программа работает, но аргументы не принимает, как фиксить?

#include <gtk/gtk.h>

void
createInterface(GtkApplication *app)
{
    GtkWidget *window = gtk_application_window_new(app);
    gtk_window_set_title(GTK_WINDOW(window), "Window");
    gtk_window_set_default_size(GTK_WINDOW(window), 200, 200);
    gtk_window_present(GTK_WINDOW(window));
}

int
main(int argc, char **argv)
{
    GtkApplication *app = gtk_application_new("org.gtk.example", G_APPLICATION_DEFAULT_FLAGS);
    g_signal_connect(app, "activate", G_CALLBACK(createInterface), NULL);
    g_application_run(G_APPLICATION(app), argc, argv);
    g_object_unref(app);

    return 0;
}


Последнее исправление: cherry (всего исправлений: 1)

РЕШЕНИЕ

Нужно было использовать флаг G_APPLICATION_HANDLES_OPEN и сигнал open для моей данной задачи, аргумент принимается, окно отрывается, а что дальше делать с аргументом - дело ваше :)

int
main(int argc, char **argv)
{
    GtkApplication *app = gtk_application_new("org.gtk.example", G_APPLICATION_HANDLES_OPEN);
    g_signal_connect(app, "open", G_CALLBACK(createInterface), NULL);
    g_application_run(G_APPLICATION(app), argc, argv);
    g_object_unref(app);

    return 0;
}
cherry
() автор топика

или более правильное решение

void
callback_function(void)
{
    // something
}

int
main(int argc, char **argv)
{
    GtkApplication *app = gtk_application_new("org.gtk.app", G_APPLICATION_HANDLES_COMMAND_LINE);
    g_signal_connect(app, "command-line", G_CALLBACK(callback_function), NULL);
    g_application_run(G_APPLICATION(app), argc, argv);
    g_object_unref(app);

    return 0;
}
cherry
() автор топика
Последнее исправление: cherry (всего исправлений: 1)