Guest User

Untitled

a guest
Sep 26th, 2018
243
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.18 KB | None | 0 0
  1. #include <gtk/gtk.h>
  2.  
  3. static gboolean print_cmd_arg(GApplication *app, GApplicationCommandLine *app_cmd, int *argc)
  4. {
  5.     g_application_activate(app);   
  6.     if (*argc > 1)
  7.     {
  8.         char **argv = g_application_command_line_get_arguments(app_cmd, argc);
  9. [nikola@leviathan tmp]$ cat test.c
  10. #include <gtk/gtk.h>
  11.  
  12. static gboolean print_cmd_arg(GApplication *app, GApplicationCommandLine *app_cmd, int *argc)
  13. {
  14.     g_application_activate(app);   
  15.     if (*argc > 1)
  16.     {
  17.         char **argv = g_application_command_line_get_arguments(app_cmd, argc);
  18.         GFile *file = g_file_new_for_commandline_arg(argv[1]);
  19.  
  20.         if (g_file_query_exists(file, NULL))
  21.         {
  22.             char *text;
  23.             g_file_load_contents(file, NULL, &text, NULL, NULL, NULL);
  24.             g_print("%s", text);
  25.             g_free(text);
  26.             g_object_unref(file);
  27.         }
  28.         else
  29.         {
  30.             g_print("File \'%s\' does not exist.\n", argv[1]);
  31.             g_object_unref(file);
  32.         }
  33.     }
  34. }
  35.  
  36. static void activation(GtkApplication *app, gpointer user_data)
  37. {
  38.     GtkWidget *window = gtk_application_window_new(app);
  39.     gtk_window_set_default_size(GTK_WINDOW(window), 200, 200);
  40.     gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER_ALWAYS);
  41.     gtk_window_set_title(GTK_WINDOW(window), "Test");
  42.     g_signal_connect(window, "delete-event", G_CALLBACK(gtk_widget_destroy), NULL);
  43.  
  44.     GtkWidget *button = gtk_button_new_with_label("Quit");
  45.     g_signal_connect_swapped(button, "clicked", G_CALLBACK(gtk_widget_destroy), window);
  46.  
  47.     gtk_container_set_border_width(GTK_CONTAINER(window), 10);
  48.     gtk_container_add(GTK_CONTAINER(window), button);
  49.  
  50.     gtk_widget_show_all(window);
  51. }
  52.  
  53. int main(int argc, char **argv)
  54. {
  55.     int status = 1234;
  56.     GtkApplication *test = gtk_application_new("this.is.only.a.test", G_APPLICATION_NON_UNIQUE | G_APPLICATION_HANDLES_COMMAND_LINE);
  57.     g_signal_connect(test, "activate", G_CALLBACK(activation), NULL);
  58.     g_signal_connect(G_APPLICATION(test), "command-line", G_CALLBACK(print_cmd_arg), &argc);
  59.     status = g_application_run(G_APPLICATION(test), argc, argv);
  60.     g_print("%d\n", status);
  61.     return status;
  62. }
Advertisement
Add Comment
Please, Sign In to add comment