GTK пример (неоходима маленькая программка для примера)

Модератор: Модераторы разделов

Аватара пользователя
Nerr
Сообщения: 65

GTK пример

Сообщение Nerr »

Неоходима маленькая программка для примера использующая GtkFileSelection
Нашел кусок кода http://www.opennet.ru/docs/RUS/gtk-referen...eSelection.html но куда его воткнуть не знаю, чтоб получилась работающая программка.
подскажите.
программка должна быть минимальна, то есть кроме окна с меню выбора файла ничего не должно быть.
Спасибо сказали:
Аватара пользователя
Atragor
Сообщения: 681
Статус: ...

Re: GTK пример

Сообщение Atragor »

Вы не пробовали воспользоваться гуглом, чтобы узнать, куда прикручивать этот кусок кода?

Код:

#include <gtk/gtk.h> void create_file_selection(void); void store_filename (GtkWidget *widget, gpointer user_data); int main(int argc, char **argv) { gtk_init(&argc, &argv); create_file_selection(); gtk_main(); return 0; } void store_filename (GtkWidget *widget, gpointer user_data) { GtkWidget *file_selector = GTK_WIDGET (user_data); const gchar *selected_filename; selected_filename = gtk_file_selection_get_filename (GTK_FILE_SELECTION (file_selector)); g_print ("Selected filename: %s\n", selected_filename); } void create_file_selection (void) { GtkWidget *file_selector; /* Создаём селектор */ file_selector = gtk_file_selection_new ("Please select a file for editing."); g_signal_connect (GTK_FILE_SELECTION (file_selector)->ok_button, "clicked", G_CALLBACK (store_filename), file_selector); /* Убеждаемся в закрытие диалога после нажатия кнопки пользователем. */ g_signal_connect_swapped (GTK_FILE_SELECTION (file_selector)->ok_button, "clicked", G_CALLBACK (gtk_widget_destroy), file_selector); g_signal_connect_swapped (GTK_FILE_SELECTION (file_selector)->cancel_button, "clicked", G_CALLBACK (gtk_widget_destroy), file_selector); /* Отображаем диалог */ gtk_widget_show (file_selector); }
If you were MEANT to understand it, we wouldn't have called it 'code' © bash.org
Спасибо сказали:
Аватара пользователя
Nerr
Сообщения: 65

Re: GTK пример

Сообщение Nerr »

спасибо, теперь все ясно.
хотя это не тот диалог выбора файлов что я думал ._.
Спасибо сказали:
Аватара пользователя
Nerr
Сообщения: 65

Re: GTK пример

Сообщение Nerr »

На самом деле мне надо было видимо это http://www.opennet.ru/docs/RUS/gtk-referen...oserDialog.html
Я скопипастил оттуда кусок кода в простую программу, но оно не работает.

Код: Выделить всё

#include <stdlib.h>
#include <gtk/gtk.h>

static void helloWorld (GtkWidget *wid, GtkWidget *win)
{
  /*GtkWidget *dialog = NULL;

  dialog = gtk_message_dialog_new (GTK_WINDOW (win), GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE, "Hello World!");
  gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER);
  gtk_dialog_run (GTK_DIALOG (dialog));
  gtk_widget_destroy (dialog);*/
  GtkWidget *dialog;

 dialog = gtk_file_chooser_dialog_new ("Open File",
                                      win,
                                      GTK_FILE_CHOOSER_ACTION_OPEN,
                                      GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
                                      GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
                                      NULL);

if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
  {
    char *filename = NULL;

    filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
    open_file (filename);
    g_free (filename);
  }

gtk_widget_destroy (dialog);
}

int main (int argc, char *argv[])
{
  GtkWidget *button = NULL;
  GtkWidget *win = NULL;
  GtkWidget *vbox = NULL;

  /* Initialize GTK+ */
  g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING, (GLogFunc) gtk_false, NULL);
  gtk_init (&argc, &argv);
  g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING, g_log_default_handler, NULL);

  /* Create the main window */
  win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_container_set_border_width (GTK_CONTAINER (win), 8);
  gtk_window_set_title (GTK_WINDOW (win), "Hello World");
  gtk_window_set_position (GTK_WINDOW (win), GTK_WIN_POS_CENTER);
  gtk_widget_realize (win);
  g_signal_connect (win, "destroy", gtk_main_quit, NULL);

  /* Create a vertical box with buttons */
  vbox = gtk_vbox_new (TRUE, 6);
  gtk_container_add (GTK_CONTAINER (win), vbox);

  button = gtk_button_new_from_stock (GTK_STOCK_DIALOG_INFO);
  g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (helloWorld), (gpointer) win);
  gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, TRUE, 0);

  button = gtk_button_new_from_stock (GTK_STOCK_CLOSE);
  g_signal_connect (button, "clicked", gtk_main_quit, NULL);
  gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, TRUE, 0);


  /* Enter the main loop */
  gtk_widget_show_all (win);
  gtk_main ();
  return 0;
}
Спасибо сказали:
Аватара пользователя
Atragor
Сообщения: 681
Статус: ...

Re: GTK пример

Сообщение Atragor »

Код:

#include <stdlib.h> #include <gtk/gtk.h> static void helloWorld (GtkWidget *wid, GtkWindow *win) { /*GtkWidget *dialog = NULL; dialog = gtk_message_dialog_new (GTK_WINDOW (win), GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE, "Hello World!"); gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog);*/ GtkWidget *dialog; dialog = gtk_file_chooser_dialog_new ("Open File", win, GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) { char *filename = NULL; filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)); // open_file (filename); printf("Filename: %s\n", filename); g_free (filename); } gtk_widget_destroy (dialog); } int main (int argc, char *argv[]) { GtkWidget *button = NULL; GtkWidget *win = NULL; GtkWidget *vbox = NULL; /* Initialize GTK+ */ g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING, (GLogFunc) gtk_false, NULL); gtk_init (&argc, &argv); g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING, g_log_default_handler, NULL); /* Create the main window */ win = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_container_set_border_width (GTK_CONTAINER (win), 8); gtk_window_set_title (GTK_WINDOW (win), "Hello World"); gtk_window_set_position (GTK_WINDOW (win), GTK_WIN_POS_CENTER); gtk_widget_realize (win); g_signal_connect (win, "destroy", gtk_main_quit, NULL); /* Create a vertical box with buttons */ vbox = gtk_vbox_new (TRUE, 6); gtk_container_add (GTK_CONTAINER (win), vbox); button = gtk_button_new_from_stock (GTK_STOCK_DIALOG_INFO); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (helloWorld), (gpointer) win); gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, TRUE, 0); button = gtk_button_new_from_stock (GTK_STOCK_CLOSE); g_signal_connect (button, "clicked", gtk_main_quit, NULL); gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, TRUE, 0); /* Enter the main loop */ gtk_widget_show_all (win); gtk_main (); return 0; }
If you were MEANT to understand it, we wouldn't have called it 'code' © bash.org
Спасибо сказали:
d_n_k
Сообщения: 636
ОС: Gentoo GNU/Linux

Re: GTK пример

Сообщение d_n_k »

хотя это не тот диалог выбора файлов что я думал ._.

диалог не узнали?:)
все сказанное есть имхо...
Спасибо сказали:
Аватара пользователя
Nerr
Сообщения: 65

Re: GTK пример

Сообщение Nerr »

Да, есть такое.. Теперь то что надо.
Atragor, благодарю.
Спасибо сказали: