static void glyr_finished_successfully (glyr_struct *glyr_info) { PraghaApplication *pragha; GtkWidget *window; gchar *title_header = NULL, *subtitle_header = NULL; pragha = pragha_songinfo_plugin_get_application (glyr_info->plugin); switch (glyr_info->head->type) { case GLYR_TYPE_LYRICS: window = pragha_application_get_window (pragha); title_header = g_strdup_printf(_("Lyrics thanks to %s"), glyr_info->head->prov); subtitle_header = g_markup_printf_escaped (_("%s <small><span weight=\"light\">by</span></small> %s"), glyr_info->query.title, glyr_info->query.artist); pragha_show_related_text_info_dialog (window, title_header, subtitle_header, glyr_info->head->data); break; case GLYR_TYPE_ARTIST_BIO: window = pragha_application_get_window (pragha); title_header = g_strdup_printf(_("Artist info")); subtitle_header = g_strdup_printf(_("%s <small><span weight=\"light\">thanks to</span></small> %s"), glyr_info->query.artist, glyr_info->head->prov); pragha_show_related_text_info_dialog (window, title_header, subtitle_header, glyr_info->head->data); break; case GLYR_TYPE_COVERART: default: break; } g_free(title_header); g_free(subtitle_header); glyr_free_list(glyr_info->head); }
static void pragha_system_titlebar_changed_cb (PraghaPreferences *preferences, GParamSpec *pspec, PraghaApplication *pragha) { PraghaToolbar *toolbar; GtkWidget *window, *parent, *menubar; GtkAction *action; window = pragha_application_get_window (pragha); toolbar = pragha_application_get_toolbar (pragha); menubar = pragha_application_get_menubar (pragha); g_object_ref(toolbar); parent = gtk_widget_get_parent (GTK_WIDGET(menubar)); if (pragha_preferences_get_system_titlebar (preferences)) { gtk_widget_hide(GTK_WIDGET(window)); action = pragha_application_get_menu_action (pragha, "/Menubar/ViewMenu/Fullscreen"); gtk_action_set_sensitive (GTK_ACTION (action), TRUE); action = pragha_application_get_menu_action (pragha, "/Menubar/ViewMenu/Playback controls below"); gtk_action_set_sensitive (GTK_ACTION (action), TRUE); gtk_window_set_titlebar (GTK_WINDOW (window), NULL); gtk_window_set_title (GTK_WINDOW(window), _("Pragha Music Player")); gtk_box_pack_start (GTK_BOX(parent), GTK_WIDGET(toolbar), FALSE, FALSE, 0); gtk_box_reorder_child(GTK_BOX(parent), GTK_WIDGET(toolbar), 1); pragha_toolbar_set_style(toolbar, TRUE); gtk_widget_show(GTK_WIDGET(window)); } else { gtk_widget_hide(GTK_WIDGET(window)); pragha_preferences_set_controls_below(preferences, FALSE); action = pragha_application_get_menu_action (pragha, "/Menubar/ViewMenu/Fullscreen"); gtk_action_set_sensitive (GTK_ACTION (action), FALSE); action = pragha_application_get_menu_action (pragha, "/Menubar/ViewMenu/Playback controls below"); gtk_action_set_sensitive (GTK_ACTION (action), FALSE); gtk_container_remove (GTK_CONTAINER(parent), GTK_WIDGET(toolbar)); gtk_window_set_titlebar (GTK_WINDOW (window), GTK_WIDGET(toolbar)); pragha_toolbar_set_style(toolbar, FALSE); gtk_widget_show(GTK_WIDGET(window)); } g_object_unref(toolbar); }
void pragha_application_append_entery_libary (PraghaApplication *pragha) { PraghaPlaylist *playlist; PraghaDatabase *cdbase; GList *list = NULL; PraghaMusicobject *mobj; /* Query and insert entries */ set_watch_cursor (pragha_application_get_window(pragha)); cdbase = pragha_application_get_database (pragha); const gchar *sql = "SELECT id FROM LOCATION"; PraghaPreparedStatement *statement = pragha_database_create_statement (cdbase, sql); while (pragha_prepared_statement_step (statement)) { gint location_id = pragha_prepared_statement_get_int (statement, 0); mobj = new_musicobject_from_db (cdbase, location_id); if (G_LIKELY(mobj)) list = g_list_prepend (list, mobj); else g_warning ("Unable to retrieve details for" " location_id : %d", location_id); pragha_process_gtk_events (); } pragha_prepared_statement_free (statement); remove_watch_cursor (pragha_application_get_window(pragha)); if (list) { list = g_list_reverse(list); playlist = pragha_application_get_playlist (pragha); pragha_playlist_append_mobj_list (playlist, list); g_list_free(list); } }
void pragha_init_session_support(PraghaApplication *pragha) { GtkWidget *window; gchar *role; window = pragha_application_get_window (pragha); /* set a unique role on each window (for session management) */ role = g_strdup_printf ("Pragha-%p-%d-%d", window, (gint) getpid (), (gint) time (NULL)); gtk_window_set_role (GTK_WINDOW (window), role); g_free (role); }
void gnome_media_keys_free(con_gnome_media_keys *gmk) { PraghaApplication *pragha = gmk->pragha; g_bus_unwatch_name(gmk->watch_id); if (gmk->handler_id != 0) g_signal_handler_disconnect(G_OBJECT(pragha_application_get_window(pragha)), gmk->handler_id); if (gmk->proxy != NULL) g_object_unref(gmk->proxy); g_slice_free(con_gnome_media_keys, gmk); }
void pragha_songinfo_plugin_get_info_to_dialog (PraghaSongInfoPlugin *plugin, GLYR_GET_TYPE type, const gchar *artist, const gchar *title) { PraghaApplication *pragha; GtkWidget *window; GlyrDatabase *cache_db; glyr_struct *glyr_info; glyr_info = g_slice_new0 (glyr_struct); glyr_query_init (&glyr_info->query); glyr_opt_type (&glyr_info->query, type); switch (type) { case GLYR_GET_ARTIST_BIO: glyr_opt_artist(&glyr_info->query, artist); glyr_opt_lang (&glyr_info->query, "auto"); glyr_opt_lang_aware_only (&glyr_info->query, TRUE); break; case GLYR_GET_LYRICS: glyr_opt_artist(&glyr_info->query, artist); glyr_opt_title(&glyr_info->query, title); break; default: break; } cache_db = pragha_songinfo_plugin_get_cache (plugin); glyr_opt_lookup_db (&glyr_info->query, cache_db); glyr_opt_db_autowrite (&glyr_info->query, TRUE); glyr_info->plugin = plugin; pragha = pragha_songinfo_plugin_get_application (plugin); window = pragha_application_get_window (pragha); set_watch_cursor (window); pragha_async_launch (get_related_info_idle_func, glyr_finished_thread_update, glyr_info); }
con_gnome_media_keys * init_gnome_media_keys (PraghaApplication *pragha) { con_gnome_media_keys *gmk = g_slice_new0(con_gnome_media_keys); gmk->pragha = pragha; gmk->watch_id = g_bus_watch_name(G_BUS_TYPE_SESSION, "org.gnome.SettingsDaemon", G_BUS_NAME_WATCHER_FLAGS_NONE, (GBusNameAppearedCallback) name_appeared_cb, (GBusNameVanishedCallback) name_vanished_cb, gmk, NULL); gmk->handler_id = g_signal_connect(G_OBJECT(pragha_application_get_window(pragha)), "focus-in-event", G_CALLBACK(on_window_focus_in_event), gmk); return gmk; }
static gboolean glyr_finished_thread_update (gpointer data) { PraghaApplication *pragha; GtkWidget *window; glyr_struct *glyr_info = data; pragha = pragha_songinfo_plugin_get_application (glyr_info->plugin); window = pragha_application_get_window (pragha); remove_watch_cursor (window); if(glyr_info->head != NULL) glyr_finished_successfully (glyr_info); else glyr_finished_incorrectly (glyr_info); glyr_query_destroy (&glyr_info->query); g_slice_free (glyr_struct, glyr_info); return FALSE; }
void pragha_application_about_dialog (PraghaApplication *pragha) { GtkWidget *mainwindow; mainwindow = pragha_application_get_window (pragha); const gchar *authors[] = { "sujith ( [email protected] )", "matias ( [email protected] )", NULL}; gtk_show_about_dialog(GTK_WINDOW(mainwindow), "logo-icon-name", "pragha", "authors", authors, "translator-credits", _("translator-credits"), "comments", "A lightweight GTK+ music player", "copyright", "(C) 2007-2009 Sujith\n(C) 2009-2015 Matias", "license-type", GTK_LICENSE_GPL_3_0, "name", PACKAGE_NAME, "version", PACKAGE_VERSION, NULL); }
void pragha_application_add_location (PraghaApplication *pragha) { PraghaPlaylist *playlist; PraghaDatabase *cdbase; PraghaMusicobject *mobj; GtkWidget *dialog, *table, *uri_entry, *label_name, *name_entry; const gchar *uri = NULL, *name = NULL; gchar *clipboard_location = NULL, *real_name = NULL; GSList *list = NULL, *i = NULL; GList *mlist = NULL; guint row = 0; gint result; /* Create dialog window */ table = pragha_hig_workarea_table_new (); pragha_hig_workarea_table_add_section_title(table, &row, _("Enter the URL of an internet radio stream")); uri_entry = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(uri_entry), 255); pragha_hig_workarea_table_add_wide_control (table, &row, uri_entry); label_name = gtk_label_new_with_mnemonic(_("Give it a name to save")); name_entry = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(name_entry), 255); pragha_hig_workarea_table_add_row (table, &row, label_name, name_entry); /* Get item from clipboard to fill GtkEntry */ clipboard_location = totem_open_location_set_from_clipboard (uri_entry); if (clipboard_location != NULL && strcmp (clipboard_location, "") != 0) { gtk_entry_set_text (GTK_ENTRY(uri_entry), clipboard_location); g_free (clipboard_location); } dialog = gtk_dialog_new_with_buttons (_("Add a location"), GTK_WINDOW(pragha_application_get_window(pragha)), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, _("_Cancel"), GTK_RESPONSE_CANCEL, _("_Ok"), GTK_RESPONSE_ACCEPT, NULL); gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT); gtk_container_add(GTK_CONTAINER(gtk_dialog_get_content_area(GTK_DIALOG(dialog))), table); gtk_window_set_default_size(GTK_WINDOW (dialog), 450, -1); gtk_entry_set_activates_default (GTK_ENTRY(uri_entry), TRUE); gtk_entry_set_activates_default (GTK_ENTRY(name_entry), TRUE); gtk_widget_show_all(dialog); result = gtk_dialog_run(GTK_DIALOG(dialog)); switch(result) { case GTK_RESPONSE_ACCEPT: if (gtk_entry_get_text_length (GTK_ENTRY(uri_entry))) uri = gtk_entry_get_text(GTK_ENTRY(uri_entry)); playlist = pragha_application_get_playlist (pragha); if (string_is_not_empty(uri)) { if (gtk_entry_get_text_length (GTK_ENTRY(name_entry))) name = gtk_entry_get_text(GTK_ENTRY(name_entry)); #ifdef HAVE_PLPARSER list = pragha_totem_pl_parser_parse_from_uri (uri); #else list = g_slist_append (list, g_strdup(uri)); #endif for (i = list; i != NULL; i = i->next) { if (string_is_not_empty(name)) real_name = new_radio (playlist, i->data, name); mobj = new_musicobject_from_location (i->data, real_name); mlist = g_list_append(mlist, mobj); if (real_name) { g_free (real_name); real_name = NULL; } g_free(i->data); } g_slist_free(list); /* Append playlist and save on database */ pragha_playlist_append_mobj_list (playlist, mlist); g_list_free(mlist); cdbase = pragha_application_get_database (pragha); pragha_database_change_playlists_done (cdbase); } break; case GTK_RESPONSE_CANCEL: break; default: break; } gtk_widget_destroy(dialog); return; }
void pragha_application_open_files (PraghaApplication *pragha) { PraghaPreferences *preferences; GtkWidget *window, *hbox, *vbox, *chooser, *bbox, *toggle, *close_button, *add_button; gpointer storage; gint i = 0; GtkFileFilter *media_filter, *playlist_filter, *all_filter; const gchar *last_folder = NULL; /* Create a file chooser dialog */ window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_type_hint (GTK_WINDOW (window), GDK_WINDOW_TYPE_HINT_DIALOG); gtk_window_set_title(GTK_WINDOW(window), (_("Select a file to play"))); gtk_window_set_default_size(GTK_WINDOW(window), 700, 450); gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); gtk_widget_set_name (GTK_WIDGET(window), "GtkFileChooserDialog"); gtk_container_set_border_width(GTK_CONTAINER(window), 0); vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_widget_set_name (GTK_WIDGET(vbox), "dialog-vbox1"); gtk_container_add(GTK_CONTAINER(window), vbox); chooser = gtk_file_chooser_widget_new(GTK_FILE_CHOOSER_ACTION_OPEN); /* Set various properties */ gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(chooser), TRUE); preferences = pragha_application_get_preferences (pragha); last_folder = pragha_preferences_get_last_folder (preferences); if (string_is_not_empty(last_folder)) gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(chooser), last_folder); hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); gtk_container_set_border_width(GTK_CONTAINER(hbox), 6); toggle = gtk_check_button_new_with_label(_("Add files recursively")); if(pragha_preferences_get_add_recursively (preferences)) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), TRUE); bbox = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL); gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END); gtk_box_set_spacing(GTK_BOX(bbox), 4); close_button = gtk_button_new_with_mnemonic (_("_Cancel")); add_button = gtk_button_new_with_mnemonic (_("_Add")); gtk_container_add(GTK_CONTAINER(bbox), close_button); gtk_container_add(GTK_CONTAINER(bbox), add_button); gtk_box_pack_start(GTK_BOX(hbox), toggle, TRUE, TRUE, 0); gtk_box_pack_end(GTK_BOX(hbox), bbox, FALSE, FALSE, 0); gtk_box_pack_end(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); gtk_box_pack_end(GTK_BOX(vbox), chooser, TRUE, TRUE, 0); /* Create file filters */ media_filter = gtk_file_filter_new(); gtk_file_filter_set_name(GTK_FILE_FILTER(media_filter), _("Supported media")); while (mime_wav[i]) gtk_file_filter_add_mime_type(GTK_FILE_FILTER(media_filter), mime_wav[i++]); i = 0; while (mime_mpeg[i]) gtk_file_filter_add_mime_type(GTK_FILE_FILTER(media_filter), mime_mpeg[i++]); i = 0; while (mime_flac[i]) gtk_file_filter_add_mime_type(GTK_FILE_FILTER(media_filter), mime_flac[i++]); i = 0; while (mime_ogg[i]) gtk_file_filter_add_mime_type(GTK_FILE_FILTER(media_filter), mime_ogg[i++]); i = 0; while (mime_asf[i]) gtk_file_filter_add_mime_type(GTK_FILE_FILTER(media_filter), mime_asf[i++]); i = 0; while (mime_mp4[i]) gtk_file_filter_add_mime_type(GTK_FILE_FILTER(media_filter), mime_mp4[i++]); i = 0; while (mime_ape[i]) gtk_file_filter_add_mime_type(GTK_FILE_FILTER(media_filter), mime_ape[i++]); i = 0; while (mime_tracker[i]) gtk_file_filter_add_mime_type(GTK_FILE_FILTER(media_filter), mime_tracker[i++]); #ifdef HAVE_PLPARSER i = 0; while (mime_playlist[i]) gtk_file_filter_add_mime_type(GTK_FILE_FILTER(media_filter), mime_playlist[i++]); i = 0; while (mime_dual[i]) gtk_file_filter_add_mime_type(GTK_FILE_FILTER(media_filter), mime_dual[i++]); #else gtk_file_filter_add_pattern(GTK_FILE_FILTER(media_filter), "*.m3u"); gtk_file_filter_add_pattern(GTK_FILE_FILTER(media_filter), "*.M3U"); gtk_file_filter_add_pattern(GTK_FILE_FILTER(media_filter), "*.pls"); gtk_file_filter_add_pattern(GTK_FILE_FILTER(media_filter), "*.PLS"); gtk_file_filter_add_pattern(GTK_FILE_FILTER(media_filter), "*.xspf"); gtk_file_filter_add_pattern(GTK_FILE_FILTER(media_filter), "*.XSPF"); gtk_file_filter_add_pattern(GTK_FILE_FILTER(media_filter), "*.wax"); gtk_file_filter_add_pattern(GTK_FILE_FILTER(media_filter), "*.WAX"); #endif playlist_filter = gtk_file_filter_new(); #ifdef HAVE_PLPARSER i = 0; while (mime_playlist[i]) gtk_file_filter_add_mime_type(GTK_FILE_FILTER(playlist_filter), mime_playlist[i++]); i = 0; while (mime_dual[i]) gtk_file_filter_add_mime_type(GTK_FILE_FILTER(playlist_filter), mime_dual[i++]); #else gtk_file_filter_add_pattern(GTK_FILE_FILTER(playlist_filter), "*.m3u"); gtk_file_filter_add_pattern(GTK_FILE_FILTER(playlist_filter), "*.M3U"); gtk_file_filter_add_pattern(GTK_FILE_FILTER(playlist_filter), "*.pls"); gtk_file_filter_add_pattern(GTK_FILE_FILTER(playlist_filter), "*.PLS"); gtk_file_filter_add_pattern(GTK_FILE_FILTER(playlist_filter), "*.xspf"); gtk_file_filter_add_pattern(GTK_FILE_FILTER(playlist_filter), "*.XSPF"); gtk_file_filter_add_pattern(GTK_FILE_FILTER(playlist_filter), "*.wax"); gtk_file_filter_add_pattern(GTK_FILE_FILTER(playlist_filter), "*.WAX"); #endif gtk_file_filter_set_name(GTK_FILE_FILTER(playlist_filter), _("Playlists")); all_filter = gtk_file_filter_new (); gtk_file_filter_set_name (GTK_FILE_FILTER(all_filter), _("All files")); gtk_file_filter_add_pattern (GTK_FILE_FILTER(all_filter), "*"); gtk_file_chooser_add_filter (GTK_FILE_CHOOSER(chooser), GTK_FILE_FILTER(media_filter)); gtk_file_chooser_add_filter (GTK_FILE_CHOOSER(chooser), GTK_FILE_FILTER(playlist_filter)); gtk_file_chooser_add_filter (GTK_FILE_CHOOSER(chooser), GTK_FILE_FILTER(all_filter)); gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(chooser), GTK_FILE_FILTER(media_filter)); storage = g_object_new(G_TYPE_OBJECT, NULL); g_object_set_data(storage, "window", window); g_object_set_data(storage, "chooser", chooser); g_object_set_data(storage, "toggle-button", toggle); g_object_set_data(storage, "pragha", pragha); g_signal_connect (add_button, "clicked", G_CALLBACK(pragha_open_files_dialog_add_button_cb), storage); g_signal_connect (chooser, "file-activated", G_CALLBACK(pragha_open_files_dialog_add_button_cb), storage); g_signal_connect (close_button, "clicked", G_CALLBACK(pragha_open_files_dialog_close_button_cb), window); g_signal_connect (window, "destroy", G_CALLBACK(gtk_widget_destroy), window); g_signal_connect (window, "key-press-event", G_CALLBACK(pragha_open_files_dialog_keypress), NULL); gtk_window_set_transient_for(GTK_WINDOW (window), GTK_WINDOW(pragha_application_get_window(pragha))); gtk_window_set_destroy_with_parent (GTK_WINDOW (window), TRUE); gtk_widget_show_all(window); }
void pragha_filter_dialog (PraghaApplication *pragha) { PraghaPlaylist *playlist; PraghaPreferences *preferences; GtkWidget *dialog, *scrollwin, *vbox, *search_entry; GtkWidget *filter_view = NULL; GtkListStore *filter_store; GtkTreeModel *filter_model; GtkCellRenderer *renderer; GtkTreeViewColumn *column; PraghaFilterDialog *fdialog; fdialog = g_slice_new0(PraghaFilterDialog); playlist = pragha_application_get_playlist (pragha); preferences = pragha_application_get_preferences (pragha); /* Crete the filter entry */ search_entry = pragha_search_entry_new(preferences); g_signal_connect (G_OBJECT(search_entry), "changed", G_CALLBACK(simple_filter_search_keyrelease_handler), fdialog); g_signal_connect (G_OBJECT(search_entry), "activate", G_CALLBACK(simple_filter_search_activate_handler), fdialog); /* Create the view */ filter_store = gtk_list_store_new (2, G_TYPE_UINT, G_TYPE_STRING); column = gtk_tree_view_column_new (); renderer = gtk_cell_renderer_text_new (); gtk_tree_view_column_pack_start (column, renderer, FALSE); gtk_tree_view_column_set_attributes (column, renderer, "text", 0, NULL); gtk_tree_view_column_set_spacing (column, 4); renderer = gtk_cell_renderer_text_new (); gtk_tree_view_column_pack_start (column, renderer, FALSE); gtk_tree_view_column_set_attributes (column, renderer, "markup", 1, NULL); gtk_tree_view_column_set_spacing (column, 4); /* Fill the filter tree view with current playlist */ pragha_filter_dialog_fill_model (filter_store, playlist); filter_model = gtk_tree_model_filter_new(GTK_TREE_MODEL(filter_store), NULL); g_object_unref(filter_store); gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(filter_model), (GtkTreeModelFilterVisibleFunc)filter_model_visible_func, fdialog, NULL); /* Create the tree view */ filter_view = gtk_tree_view_new_with_model(filter_model); gtk_tree_view_append_column (GTK_TREE_VIEW(filter_view), column); g_object_unref(G_OBJECT(filter_model)); gtk_tree_view_set_rules_hint (GTK_TREE_VIEW(filter_view), TRUE); gtk_tree_view_set_headers_visible (GTK_TREE_VIEW(filter_view), FALSE); gtk_tree_view_set_enable_search (GTK_TREE_VIEW(filter_view), FALSE); /* Store references */ fdialog->filter_view = filter_view; fdialog->filter_model = filter_model; fdialog->filter_string = NULL; fdialog->timeout_id = 0; fdialog->cplaylist = playlist; fdialog->preferences = pragha_preferences_get(); /* The search dialog */ dialog = gtk_dialog_new_with_buttons (_("Search in playlist"), GTK_WINDOW(pragha_application_get_window(pragha)), GTK_DIALOG_MODAL, GTK_STOCK_CLOSE, GTK_RESPONSE_CANCEL, NULL); gtk_dialog_add_button (GTK_DIALOG (dialog), _("Add to playback queue"), GTK_RESPONSE_ACCEPT); gtk_dialog_add_button (GTK_DIALOG (dialog), GTK_STOCK_JUMP_TO, GTK_RESPONSE_APPLY); gtk_window_set_default_size (GTK_WINDOW (dialog), 600, 500); /* Add to the dialog's main vbox */ vbox = gtk_dialog_get_content_area(GTK_DIALOG(dialog)); gtk_box_pack_start (GTK_BOX(vbox), search_entry, FALSE, FALSE, 3); scrollwin = gtk_scrolled_window_new (NULL, NULL); gtk_container_add (GTK_CONTAINER(scrollwin), filter_view); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(scrollwin), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(scrollwin), GTK_SHADOW_IN); gtk_box_pack_start (GTK_BOX(vbox), scrollwin, TRUE, TRUE, 0); /* Connect signals */ g_signal_connect (filter_view, "row-activated", G_CALLBACK(pragha_filter_dialog_activated_cb), dialog); g_signal_connect (filter_view, "key_press_event", G_CALLBACK (pragha_filter_dialog_key_press), fdialog); g_signal_connect(G_OBJECT(dialog), "response", G_CALLBACK(pragha_filter_dialog_response), fdialog); gtk_widget_show_all (dialog); }