⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gui-callbacks.c

📁 Glurp is a GTK+-2.x based graphical client for the Music Player Daemon !
💻 C
📖 第 1 页 / 共 3 页
字号:
  } else {    statusbar_print("Random On");    debug("Random On");    mpd_sendRandomCommand(glurp->conn, 1);    mpd_finishCommand(glurp->conn);    if( check_mpd_error() ) {      glurp_disconnect();      return FALSE;    }  }  return FALSE;}gboolean on_ui_add_row_expanded(GtkTreeView *tv, GtkTreeIter *iter, GtkTreePath *path, gpointer user_data) {  gui_add_fill_dir(iter, FALSE);  return FALSE;}gboolean on_ui_add_find_clicked( GtkWidget *widget, gpointer data) {	  if( !CONNECTED ) {    debug("Not connected, ignoring.");    statusbar_print("Not connected, cannot add");    return FALSE;  }  debug("Search started");    populate_gui_add_search_tree();    return TRUE;  }gboolean on_menu_add_file_activate(GtkWidget *widget, gpointer data) {  GtkWidget *window_add;  GtkComboBox* combo_type;  if( !CONNECTED ) {    debug("Not connected, ignoring.");    statusbar_print("Not connected, cannot add");    return FALSE;  }  if( addxml ) {    debug("'Add' window already shown, returning");    return FALSE;  }  debug("Add menu");  addxml = glade_xml_new(glade_path(), "glurp_window_add", NULL);  glade_xml_signal_autoconnect(addxml);  window_add = glade_xml_get_widget(addxml, "glurp_window_add");    combo_type = GTK_COMBO_BOX(glade_xml_get_widget(addxml, "combo_add_find_type"));  gtk_combo_box_set_active(combo_type, 0);    create_gui_add_tree();  debug("Populating 'add' treeview...");  populate_gui_add_tree();  title_print(window_add, "Add songs to playlist");  gtk_widget_grab_focus(GTK_WIDGET(glade_xml_get_widget(addxml, "entry_add_find_what")));  gtk_widget_show(window_add);  return FALSE;}gboolean on_menu_add_url_activate(GtkWidget *widget, gpointer data) {  GtkWidget *window_stream;  if( !CONNECTED ) return FALSE;  print_stream_history();  if( !STREAM_CAPABLE_MPD ) {    statusbar_print("Sorry, this MPD cannot playback streams");    debug("Sorry, this MPD cannot playback streams");    return FALSE;  }  if( streamxml ) {    debug("Stream window already shown, returning");    return FALSE;  }  streamxml = glade_xml_new(glade_path(), "glurp_window_stream", NULL);  glade_xml_signal_autoconnect(streamxml);  create_stream_liststore();  populate_stream_liststore();  window_stream = glade_xml_get_widget(streamxml, "glurp_window_stream");  title_print(window_stream, "Add a stream to playlist");  gtk_widget_show(window_stream);  return FALSE;}gboolean on_stream_destroy(GtkWidget *widget, gpointer user_data) {  stream_window_destroyed();  return FALSE;}gboolean on_ui_stream_close_clicked(GtkWidget *widget, gpointer user_data) {  GtkWidget *window_stream = glade_xml_get_widget(streamxml, "glurp_window_stream");    debug("Close pressed, destroying stream window...");  gtk_widget_destroy(window_stream);  return FALSE;}gboolean on_ui_stream_add_clicked(GtkWidget *widget, gpointer user_data) {  GtkWidget *window_stream = glade_xml_get_widget(streamxml, "glurp_window_stream");  gchar *url = get_selected_stream();  if( !url || !g_utf8_strlen(url, -1) ) {    debug("No stream URL to add, ignoring");    gtk_widget_destroy(window_stream);    statusbar_print("No URL to add");    return FALSE;  }  debug("Adding URL: '%s'", url);  mpd_sendAddCommand(glurp->conn, url);  mpd_finishCommand(glurp->conn);  if( !check_mpd_error() ) {    statusbar_print("URL '%s' added", url);    push_stream(url);  } else glurp_disconnect();  gtk_widget_destroy(window_stream);  return FALSE;}gboolean on_ui_playlist_drag_begin(GtkWidget *widget, GdkDragContext *cont, gpointer user_data) {  debug("DRAG BEGIN");  return FALSE;}gboolean on_ui_playlist_drag_drop(GtkTreeView *tree, GdkDragContext *con, gint x, gint y, guint time, gpointer data) {  GtkTreePath *path = NULL;  GtkTreeViewDropPosition pos;  GtkTreeModel *tm = GTK_TREE_MODEL(glurp->gui_playlist);  GtkTreeIter iter;  gint did, sid, dpos, spos;  gboolean pos_ok = FALSE, first_iter = FALSE;  GtkTreeSelection *sel;  GList *selected_rows;  debug("DRAG DROP");  if( !gtk_tree_view_get_dest_row_at_pos(tree, x, y, &path, &pos) ) {    debug("Can't determine destination");    return TRUE;  }  if( !gtk_tree_model_get_iter(tm, &iter, path) ) {    debug("Can't get iter");    return TRUE;  }  gtk_tree_model_get(tm, &iter, PL_ID, &did, -1);  if( pos == GTK_TREE_VIEW_DROP_AFTER ) {    debug("AFTER id:%d", did);    pos_ok = TRUE;  }  if( pos == GTK_TREE_VIEW_DROP_BEFORE ) debug("BEFORE id:%d", did);  if( pos == GTK_TREE_VIEW_DROP_INTO_OR_BEFORE ) debug("INTO OR BEFORE id:%d", did);  if( pos == GTK_TREE_VIEW_DROP_INTO_OR_AFTER ) debug("INTO OR AFTER id:%d", did);  if( !pos_ok ) {    if( !gtk_tree_path_prev(path) || !gtk_tree_model_get_iter(tm, &iter, path) ) {      debug("Can't get prev iter, we're at the first one already");      first_iter = TRUE;    }  }  if( first_iter ) dpos = 0;  else {    gtk_tree_model_get(tm, &iter, PL_ID, &did, -1);    dpos = get_song_pos(get_song_by_id(did));  }  sel = gtk_tree_view_get_selection(tree);  selected_rows = gtk_tree_selection_get_selected_rows(sel, &tm);  path = (GtkTreePath *)g_list_nth_data(selected_rows, 0);  gtk_tree_model_get_iter(tm, &iter, path);  gtk_tree_model_get(tm, &iter, PL_ID, &sid, -1);  spos = get_song_pos(get_song_by_id(sid));  if( spos > dpos ) dpos++;  mpd_sendMoveIdCommand(glurp->conn, sid, dpos);  mpd_finishCommand(glurp->conn);  if( !check_mpd_error() ) {    debug("Move succesful");    return FALSE;  } else glurp_disconnect();  debug("MPD refused song move");  return FALSE;}gboolean on_ui_playlist_button_press(GtkWidget *widget, GdkEventButton *event, gpointer data) {  GtkTreePath *path = NULL;  GtkTreeSelection *sel = NULL;  GtkTreeView *tv = GTK_TREE_VIEW(glade_xml_get_widget(guixml, "treeview_playlist"));  if( event->button != 3 ) return FALSE;  if( gtk_tree_view_get_path_at_pos(tv, (gint)event->x, (gint)event->y, &path, NULL, NULL, NULL) ) {    debug("[%d,%d]", (gint)event->x, (gint)event->y);    sel = gtk_tree_view_get_selection(tv);    if( !gtk_tree_selection_path_is_selected(sel, path) ) {      debug("User clicked on unselected row, selecting ");      gtk_tree_selection_unselect_all(sel);      gtk_tree_selection_select_path(sel, path);    }  }  debug("Displaying playlist popup menu");  gtk_menu_popup(GTK_MENU(glade_xml_get_widget(guixml, "glurp_menu_playlist")), NULL, NULL, NULL, NULL, event->button, event->time);  return TRUE;}gboolean on_pmenu_playlist_play(GtkWidget *widget, gpointer data) {  debug("POPUP: Playlist -> Play");  on_ui_player_play(glade_xml_get_widget(guixml, "button_play"), NULL);  return FALSE;}gboolean on_pmenu_playlist_remove_selected(GtkWidget *widget, gpointer data) {  debug("POPUP: Playlist -> Remove selected");  on_menu_pl_remove_selected_activate(glade_xml_get_widget(guixml, "button_play"), NULL);  return FALSE;}gboolean on_pmenu_playlist_remove_crop(GtkWidget *widget, gpointer data) {  debug("POPUP: Playlist -> Remove crop");  on_menu_pl_remove_crop_activate(glade_xml_get_widget(guixml, "button_play"), NULL);  return FALSE;}gboolean on_pmenu_playlist_remove_all(GtkWidget *widget, gpointer data) {  debug("POPUP: Playlist -> Remove all");  on_menu_pl_remove_all_activate(glade_xml_get_widget(guixml, "button_play"), NULL);  return FALSE;}gboolean on_ui_add_button_press(GtkWidget *widget, GdkEventButton *event, gpointer data) {  GtkTreePath *path = NULL;  GtkTreeSelection *sel = NULL;  GtkTreeView *tv = GTK_TREE_VIEW(glade_xml_get_widget(addxml, "treeview_add"));  if( event->button != 3 ) return FALSE;  if( gtk_tree_view_get_path_at_pos(tv, (gint)event->x, (gint)event->y, &path, NULL, NULL, NULL) ) {    debug("[%d,%d]", (gint)event->x, (gint)event->y);    sel = gtk_tree_view_get_selection(tv);    if( !gtk_tree_selection_path_is_selected(sel, path) ) {      debug("User clicked on unselected row, selecting ");      gtk_tree_selection_unselect_all(sel);      gtk_tree_selection_select_path(sel, path);    }  }  debug("Displaying add popup menu");  gtk_menu_popup(GTK_MENU(glade_xml_get_widget(guixml, "glurp_menu_db")), NULL, NULL, NULL, NULL, event->button, event->time);  return TRUE;}gboolean on_pmenu_db_update_selected(GtkWidget *widget, gpointer data) {  GtkTreeView *tv;  GtkTreeModel *tm;  GtkTreeSelection *ts;  GList *selected_rows;  GtkTreeIter iter;  gint i, num = 0;  gchar *path = NULL;  debug("POPUP: DB -> Update selected");  if(!CONNECTED) return FALSE;  tv = GTK_TREE_VIEW(glade_xml_get_widget(addxml, "treeview_add"));  tm = gtk_tree_view_get_model(tv);  if( !((ts = gtk_tree_view_get_selection(tv)) && (num = gtk_tree_selection_count_selected_rows(ts))) ) {    debug("No selection, ignoring");    return FALSE;  }  selected_rows = gtk_tree_selection_get_selected_rows(ts, NULL);  debug("Removing 'Add' treeview model");  gtk_tree_view_set_model(tv, NULL);  mpd_sendCommandListBegin(glurp->conn);  if( NONBLOCKING_UPDATE_CAPABLE_MPD ) {    gui_updating_disable_add_controls();    glurp->updating_db = TRUE;  }  for( i = 0; i < num; i++ ) {    gtk_tree_model_get_iter(tm, &iter, (GtkTreePath *)g_list_nth_data(selected_rows, i));    gtk_tree_model_get(tm, &iter, 1, &path, -1);    mpd_sendUpdateCommand(glurp->conn, path);    debug("**** Updating '%s'", path);    g_free(path);  }  mpd_sendCommandListEnd(glurp->conn);  mpd_finishCommand(glurp->conn);  if( !NONBLOCKING_UPDATE_CAPABLE_MPD ) {    statusbar_print("Database updated");    debug("MPD db updated");    debug("Setting 'Add' treeview model back");    gtk_tree_view_set_model(tv, GTK_TREE_MODEL(glurp->gui_addtree));    populate_gui_add_tree();  }  if( check_mpd_error() ) {    glurp_disconnect();    return FALSE;  }  return FALSE;}gboolean on_pmenu_db_add_selected(GtkWidget *widget, gpointer data) {  debug("POPUP: DB -> Add selected");  on_ui_add_add_clicked(glade_xml_get_widget(addxml, "button_add_add"), NULL);  return FALSE;}gboolean on_pmenu_db_info(GtkWidget *widget, gpointer data) {  debug("POPUP: DB -> Database information (STUB)");  return FALSE;}gboolean on_pmenu_playlist_shuffle_activate(GtkWidget *widget, gpointer data) {  if( !CONNECTED ) {    debug("Not connected");    return FALSE;  }  mpd_sendShuffleCommand(glurp->conn);  mpd_finishCommand(glurp->conn);  if( check_mpd_error() ) {    glurp_disconnect();    return FALSE;  }  statusbar_print("Playlist shuffled.");  return FALSE;}gboolean on_togglebutton_pl_add_toggled(GtkWidget *widget, gpointer data) {  if( !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)) ) return FALSE;  debug("Add button clicked");  gtk_menu_popup(GTK_MENU(glade_xml_get_widget(guixml, "glurp_menu_pl_add")), NULL, NULL, NULL, NULL, 1, gtk_get_current_event_time());  return FALSE;}gboolean on_menu_pl_add_deactivate(GtkWidget *widget, gpointer data) {  debug("Add menu hidden, deactivating togglebutton");  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(guixml, "togglebutton_pl_add")), FALSE);  return FALSE;}gboolean on_togglebutton_pl_remove_toggled(GtkWidget *widget, gpointer data) {  if( !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)) ) return FALSE;  debug("Remove button clicked");  gtk_menu_popup(GTK_MENU(glade_xml_get_widget(guixml, "glurp_menu_pl_remove")), NULL, NULL, NULL, NULL, 1, gtk_get_current_event_time());  return FALSE;}gboolean on_menu_pl_remove_deactivate(GtkWidget *widget, gpointer data) {  debug("Remove menu hidden, deactivating togglebutton");  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(guixml, "togglebutton_pl_remove")), FALSE);  return FALSE;}gboolean on_outputs_toggled(GtkWidget *widget, gpointer data) {  GtkMenu *menu = populate_outputs_menu();  if( !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)) ) return FALSE;  debug("Outputs button clicked");  if( !menu ) return FALSE;  gtk_menu_popup(populate_outputs_menu(), NULL, NULL, NULL, NULL, 1, gtk_get_current_event_time());  return FALSE;}gboolean on_menu_outputs_deactivate(GtkWidget *widget, gpointer data) {  debug("Outputs menu hidden, deactivating togglebutton");  gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(guixml, "togglebutton_outputs")), FALSE);  return FALSE;}gboolean on_menu_output_activate(GtkWidget *widget, gpointer data) {  gboolean enable = FALSE;  gint i, d = (gint)data;  if( d < 0 ) enable = TRUE;  i = abs(d) - 1;  debug("%s output %d", (enable ? "Enable" : "Disable"), i);  statusbar_print("%s output %d", (enable ? "Enabling" : "Disabling"), i);  if( enable ) mpd_sendEnableOutputCommand(glurp->conn, i);  else mpd_sendDisableOutputCommand(glurp->conn, i);  mpd_finishCommand(glurp->conn);  if( check_mpd_error() ) {    glurp_disconnect();    return FALSE;  }  return FALSE;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -