#ifdef HAVE_CONFIG_H # include #endif #include #include #include #include #include "callbacks.h" #include "interface.h" #include "support.h" #include "imgcp.h" #include "tocedit.h" #include "tocdata.h" #include "globals.h" #include "widgets.h" #include "toceditpg.h" #include "tracktime.h" void on_new_file1_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_open1_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_save1_activate (GtkMenuItem *menuitem, gpointer user_data) { on_gdrdao_save_clicked(NULL,NULL); } void on_save_as1_activate (GtkMenuItem *menuitem, gpointer user_data) { savestuff->saved=FALSE; on_gdrdao_save_clicked(NULL,NULL); } void on_exit1_activate (GtkMenuItem *menuitem, gpointer user_data) { exit(0); } void on_cut1_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_copy1_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_paste1_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_clear1_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_properties1_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_preferences1_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_imgcp_copycd_clicked (GtkButton *button, gpointer user_data) { on_imgcp_readcd_clicked(button,user_data); on_imgcp_writecd_clicked(button,user_data); } gboolean on_GdrDAO_delete_event (GtkWidget *widget, GdkEvent *event, gpointer user_data) { gtk_main_quit(); return TRUE; } void on_imgcp_readcd_clicked (GtkButton *button, gpointer user_data) { struct gdrdao_imgcp_data *data; data=(struct gdrdao_imgcp_data*)malloc(sizeof(struct gdrdao_imgcp_data)); if(gdrdao_imgcp_getdata(GTK_WIDGET(user_data),data)!=0) { free(data); return; }; gdrdao_imgcp_readcd(data); free(data); } void on_about1_activate (GtkMenuItem *menuitem, gpointer user_data) { GtkWidget* about; about=create_gdrdao_about(); gtk_widget_show(about); } void on_imgcp_writecd_clicked (GtkButton *button, gpointer user_data) { struct gdrdao_imgcp_data *data; data=(struct gdrdao_imgcp_data*)malloc(sizeof(struct gdrdao_imgcp_data)); if(gdrdao_imgcp_getdata(GTK_WIDGET(user_data),data)!=0) { free(data); return; }; gdrdao_imgcp_writecd(data); free(data); } void on_tocedit_button_add_clicked (GtkButton *button, gpointer user_data) { struct gdrdao_trackentry *tmp; GtkAdjustment *adjustment; GtkWidget* wtmp; gint q; tmp=(struct gdrdao_trackentry*)g_malloc(sizeof( struct gdrdao_trackentry)); gdrdao_trackentry_init(tmp); if(gdrdao_tocedit_getdata(gdrdao_mainwindow,tocdata,tmp)!=0) return; if(gdrdao_tocedit_addtrack(tocdata,tocdata->tracks+1,tmp)!=0) return; wtmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_EDITOR); if(gdrdao_update_editor(GTK_CLIST(wtmp), tocdata->track)!=0) return; gdrdao_set_ttime_max(TOCEDIT_END_MINUTES, TOCEDIT_END_SECONDS, TOCEDIT_END_FRAMES, TOCEDIT_END_TOTAL,tmp->lmin, tmp->lsec,tmp->lfrm); wtmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TRACKSELECT); adjustment=gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(wtmp)); adjustment->lower=1; adjustment->upper=tocdata->tracks; gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(wtmp),adjustment); q=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(wtmp)); gtk_spin_button_set_value(GTK_SPIN_BUTTON(wtmp),q+1); } void on_tocedit_track_changed (GtkEditable *editable, gpointer user_data) { GtkWidget *tmp; gint no, w, e, r; struct gdrdao_trackentry *track; tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TRACKSELECT); track=gdrdao_tocedit_gettrack(tocdata, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(tmp))); gdrdao_tocedit_setdata(gdrdao_mainwindow,tocdata,track); /* select the corresponding row */ no=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(tmp)); if(no==0) return; /* apparently no tracks there */ tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_EDITOR); gtk_clist_select_row(GTK_CLIST(tmp),no-1,0); /* now update the pregap editor */ tmp=lookup_widget(gdrdao_mainwindow,TOCEDITPG_TRACKSELECT); gtk_spin_button_set_value(GTK_SPIN_BUTTON(tmp),no); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_END_MINUTES); w=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(tmp)); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_END_SECONDS); e=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(tmp)); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_END_MINUTES); r=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(tmp)); if(w==0&&e==0&&r==0) { gdrdao_set_ttime_max(TOCEDIT_START_MINUTES, TOCEDIT_START_SECONDS, TOCEDIT_START_FRAMES, TOCEDIT_START_TOTAL, GDRDAO_MAX_MINUTES, GDRDAO_MAX_SECONDS, GDRDAO_MAX_FRAMES); } else { gdrdao_set_ttime_max(TOCEDIT_START_MINUTES, TOCEDIT_START_SECONDS, TOCEDIT_START_FRAMES, TOCEDIT_START_TOTAL, w,e,r); }; tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_START_MINUTES); w=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(tmp)); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_START_SECONDS); e=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(tmp)); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_START_FRAMES); r=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(tmp)); gdrdao_set_ttime_min(TOCEDIT_START_MINUTES, TOCEDIT_START_SECONDS, TOCEDIT_START_FRAMES, TOCEDIT_START_TOTAL,w,e,r); /* if the track does have extended pregap, make the pregap * selection on the track options pad invalid et vice versa */ if(track->pregap->track==NULL) { tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_PREGAP_MINUTES); gtk_widget_set_sensitive(GTK_WIDGET(tmp),TRUE); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_PREGAP_SECONDS); gtk_widget_set_sensitive(GTK_WIDGET(tmp),TRUE); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_PREGAP_FRAMES); gtk_widget_set_sensitive(GTK_WIDGET(tmp),TRUE); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_PREGAP_TOTAL); gtk_widget_set_sensitive(GTK_WIDGET(tmp),TRUE); } else { tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_PREGAP_MINUTES); gtk_widget_set_sensitive(GTK_WIDGET(tmp),FALSE); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_PREGAP_SECONDS); gtk_widget_set_sensitive(GTK_WIDGET(tmp),FALSE); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_PREGAP_FRAMES); gtk_widget_set_sensitive(GTK_WIDGET(tmp),FALSE); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_PREGAP_TOTAL); gtk_widget_set_sensitive(GTK_WIDGET(tmp),FALSE); }; } void on_tocedit_button_remove_clicked (GtkButton *button, gpointer user_data) { GtkWidget* tmp; GList* selection; GtkAdjustment *adjustment; gint removed; tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_EDITOR); selection=GTK_CLIST(tmp)->selection; if(selection==NULL) return; removed=0; while(selection) { if(gdrdao_tocedit_deltrack(tocdata, (gint)selection->data+1)!=0) return; selection=selection->next; ++removed; }; gdrdao_update_editor(GTK_CLIST(lookup_widget(gdrdao_mainwindow, TOCEDIT_EDITOR)), tocdata->track); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TRACKSELECT); adjustment=gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(tmp)); adjustment->lower=1; adjustment->upper=tocdata->tracks; gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(tmp),adjustment); gtk_spin_button_set_value(GTK_SPIN_BUTTON(tmp), gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(tmp))-removed); } void on_tocedit_button_up_clicked (GtkButton *button, gpointer user_data) { GtkWidget* tmp; GList *selection; gint rt, q; tmp=lookup_widget(GTK_WIDGET(gdrdao_mainwindow),TOCEDIT_EDITOR); selection=GTK_CLIST(tmp)->selection; while(selection) { q=(gint)selection->data+1; rt=gdrdao_tocedit_trackup(tocdata,q); if(rt>0) abort; /* failure */ if(gdrdao_tocedit_sorttracks(tocdata)!=0) abort(); gdrdao_update_editor(GTK_CLIST(tmp),tocdata->track); gtk_clist_select_row(GTK_CLIST(tmp),q-2,0); selection=selection->next; }; return; } void on_tocedit_button_down_clicked (GtkButton *button, gpointer user_data) { GtkWidget* tmp; GList *selection; gint rt,q; tmp=lookup_widget(GTK_WIDGET(gdrdao_mainwindow),TOCEDIT_EDITOR); selection=GTK_CLIST(tmp)->selection; while(selection) { q=(gint)selection->data+1; rt=gdrdao_tocedit_trackdown(tocdata,q); if(rt>0) abort; /* failure */ selection=selection->next; if(gdrdao_tocedit_sorttracks(tocdata)!=0) abort(); gdrdao_update_editor(GTK_CLIST(tmp),tocdata->track); gtk_clist_select_row(GTK_CLIST(tmp),q,0); }; return; } void on_gdrdao_save_clicked (GtkButton *button, gpointer user_data) { GtkWidget* tmp; if(savestuff->saved==FALSE) { tmp=create_dlg_fileselect(); gtk_widget_show(tmp); gtk_grab_add(tmp); } else { if(gdrdao_tocedit_dumptodisk(tocdata, savestuff->filename)!=0) { savestuff->saved=FALSE; tmp=create_msg_err_filecreate(); gtk_widget_show(tmp); gtk_grab_add(tmp); }; savestuff->saved=TRUE; }; }; void on_tocedit_button_clear_clicked (GtkButton *button, gpointer user_data) { GtkWidget *tmp; GtkAdjustment *adjustment; tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_EDITOR); while(tocdata->tracks>0) gdrdao_tocedit_deltrack(tocdata,1); gdrdao_update_editor(GTK_CLIST(tmp),tocdata->track); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TRACKSELECT); adjustment=gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(tmp)); adjustment->lower=1; adjustment->upper=tocdata->tracks; gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(tmp),adjustment); gtk_spin_button_set_value(GTK_SPIN_BUTTON(tmp),1); } void on_tocedit_button_change_clicked (GtkButton *button, gpointer user_data) { GtkWidget *tmp; struct gdrdao_trackentry *etmp; gint no; tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TRACKSELECT); no=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(tmp)); etmp=gdrdao_tocedit_gettrack(tocdata,no); if(etmp==NULL) return; if(gdrdao_tocedit_getdata(gdrdao_mainwindow,tocdata,etmp)!=0) abort(); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_EDITOR); if(gdrdao_update_editor(GTK_CLIST(tmp),tocdata->track)!=0) abort(); } void on_tocedit_pregap_total_changed (GtkEditable *editable, gpointer user_data) { gdrdao_set_ttimemmssff(TOCEDIT_PREGAP_MINUTES, TOCEDIT_PREGAP_SECONDS, TOCEDIT_PREGAP_FRAMES, TOCEDIT_PREGAP_TOTAL, GTK_SIGNAL_FUNC(on_tocedit_pregap_mmssff_changed)); } void on_tocedit_silence_total_changed (GtkEditable *editable, gpointer user_data) { gdrdao_set_ttimemmssff(TOCEDIT_SILENCE_MINUTES, TOCEDIT_SILENCE_SECONDS, TOCEDIT_SILENCE_FRAMES, TOCEDIT_SILENCE_TOTAL, GTK_SIGNAL_FUNC(on_tocedit_silence_mmssff_changed)); } void on_tocedit_start_total_changed (GtkEditable *editable, gpointer user_data) { gdrdao_set_ttimemmssff(TOCEDIT_START_MINUTES, TOCEDIT_START_SECONDS, TOCEDIT_START_FRAMES, TOCEDIT_START_TOTAL, GTK_SIGNAL_FUNC(on_tocedit_start_mmssff_changed)); } void on_tocedit_end_total_changed (GtkEditable *editable, gpointer user_data) { gdrdao_set_ttimemmssff(TOCEDIT_END_MINUTES, TOCEDIT_END_SECONDS, TOCEDIT_END_FRAMES, TOCEDIT_END_TOTAL, GTK_SIGNAL_FUNC(on_tocedit_end_mmssff_changed)); } void on_ok_button2_clicked (GtkButton *button, gpointer user_data) { struct gdrdao_trackentry *tmp; GtkAdjustment *adjustment; GtkWidget* wtmp, *qtmp; gchar *q; q=gtk_file_selection_get_filename(user_data); if(strlen(q)<2) return; /* <2 because first character is always / */ if(q[strlen(q)-1]=='/') return; /* this is kind of a creepy * "verification" if a directory was selected or not * because a directory's last character is the good ol slash * --- should be replaced someday by a real verification */ wtmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_FILESELECT); qtmp=gnome_file_entry_gtk_entry(GNOME_FILE_ENTRY(wtmp)); gtk_entry_set_text(GTK_ENTRY(qtmp),q); tmp=(struct gdrdao_trackentry*)g_malloc(sizeof( struct gdrdao_trackentry)); gdrdao_trackentry_init(tmp); if(gdrdao_tocedit_getdata(gdrdao_mainwindow,tocdata,tmp)!=0) return; if(gdrdao_tocedit_addtrack(tocdata,tocdata->tracks+1,tmp)!=0) return; if(gdrdao_update_editor(GTK_CLIST(lookup_widget(gdrdao_mainwindow, TOCEDIT_EDITOR)), tocdata->track)!=0) return; wtmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TRACKSELECT); adjustment=gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(wtmp)); adjustment->lower=1; adjustment->upper=tocdata->tracks; gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(wtmp),adjustment); gdrdao_set_ttime_max(TOCEDIT_END_MINUTES, TOCEDIT_END_SECONDS, TOCEDIT_END_FRAMES, TOCEDIT_END_TOTAL, tmp->lmin, tmp->lsec, tmp->lfrm); } void on_cancel_button2_clicked (GtkButton *button, gpointer user_data) { gtk_widget_destroy(user_data); } void on_tocedit_button_directory_clicked (GtkButton *button, gpointer user_data) { GtkWidget* tmp; tmp=create_dlg_tocedit_addfile(); gtk_widget_show(tmp); } void on_tocedit_edit_select_row (GtkCList *clist, gint row, gint column, GdkEvent *event, gpointer user_data) { GtkWidget* tmp; struct gdrdao_trackentry* q; /* first update the trackeditor */ tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TRACKSELECT); gtk_spin_button_set_value(GTK_SPIN_BUTTON(tmp),row+1); /* and then the pregap editor */ tmp=lookup_widget(gdrdao_mainwindow,TOCEDITPG_TRACKSELECT); gtk_spin_button_set_value(GTK_SPIN_BUTTON(tmp),1); tmp=lookup_widget(gdrdao_mainwindow,TOCEDITPG_EDITOR); q=gdrdao_tocedit_gettrack(tocdata,row+1); gdrdao_update_editor_pg(GTK_CLIST(tmp),q->pregap->track); } void on_tocedit_pregap_mmssff_changed (GtkEditable *editable, gpointer user_data) { gdrdao_set_ttimetotal(TOCEDIT_PREGAP_MINUTES, TOCEDIT_PREGAP_SECONDS, TOCEDIT_PREGAP_FRAMES, TOCEDIT_PREGAP_TOTAL, GTK_SIGNAL_FUNC(on_tocedit_pregap_total_changed)); } void on_open2_activate (GtkMenuItem *menuitem, gpointer user_data) { } void on_tocedit_pg_start_total_changed (GtkEditable *editable, gpointer user_data) { gdrdao_set_ttimemmssff(TOCEDITPG_START_MINUTES, TOCEDITPG_START_SECONDS, TOCEDITPG_START_FRAMES, TOCEDITPG_START_TOTAL, GTK_SIGNAL_FUNC(on_toceditpg_start_mmssff_changed)); } void on_tocedit_pg_silence_total_changed (GtkEditable *editable, gpointer user_data) { gdrdao_set_ttimemmssff(TOCEDITPG_SILENCE_MINUTES, TOCEDITPG_SILENCE_SECONDS, TOCEDITPG_SILENCE_FRAMES, TOCEDITPG_SILENCE_TOTAL, GTK_SIGNAL_FUNC(on_toceditpg_silence_mmssff_changed)); } void on_tocedit_pg_end_total_changed (GtkEditable *editable, gpointer user_data) { gdrdao_set_ttimemmssff(TOCEDITPG_END_MINUTES, TOCEDITPG_END_SECONDS, TOCEDITPG_END_FRAMES, TOCEDITPG_END_TOTAL, GTK_SIGNAL_FUNC(on_toceditpg_end_mmssff_changed)); } void on_tocedit_pg_up_clicked (GtkButton *button, gpointer user_data) { GtkWidget* tmp; GList *selection; gint rt, q; struct gdrdao_trackentry *ttmp; gint track; tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TRACKSELECT); track=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(tmp)); ttmp=gdrdao_tocedit_gettrack(tocdata,track); tmp=lookup_widget(gdrdao_mainwindow,TOCEDITPG_TRACKSELECT); track=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(tmp)); tmp=lookup_widget(GTK_WIDGET(gdrdao_mainwindow),TOCEDITPG_EDITOR); selection=GTK_CLIST(tmp)->selection; while(selection) { q=(gint)selection->data+1; rt=gdrdao_tocedit_trackup(ttmp->pregap,q); if(rt>0) abort; /* failure */ if(gdrdao_tocedit_sorttracks(ttmp->pregap)!=0) abort(); gdrdao_update_editor_pg(GTK_CLIST(tmp),ttmp->pregap->track); gtk_clist_select_row(GTK_CLIST(tmp),q-2,0); selection=selection->next; }; return; } void on_tocedit_pg_down_clicked (GtkButton *button, gpointer user_data) { GtkWidget* tmp; GList *selection; gint rt,q; gint track; struct gdrdao_trackentry* ttmp; tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TRACKSELECT); track=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(tmp)); ttmp=gdrdao_tocedit_gettrack(tocdata,track); tmp=lookup_widget(GTK_WIDGET(gdrdao_mainwindow),TOCEDITPG_EDITOR); selection=GTK_CLIST(tmp)->selection; while(selection) { q=(gint)selection->data+1; rt=gdrdao_tocedit_trackdown(ttmp->pregap,q); if(rt>0) abort; /* failure */ selection=selection->next; if(gdrdao_tocedit_sorttracks(ttmp->pregap)!=0) abort(); gdrdao_update_editor_pg(GTK_CLIST(tmp),ttmp->pregap->track); gtk_clist_select_row(GTK_CLIST(tmp),q,0); }; return; } void on_tocedit_pg_add_clicked (GtkButton *button, gpointer user_data) { struct gdrdao_trackentry *tmp; GtkAdjustment *adjustment; GtkWidget* wtmp; gint track; struct gdrdao_trackentry* ttmp; gint mm,ss,ff; /* this is tricky: * we have to take the value from the Track options pad! because * that one shows which track of the actual track list is selected! */ wtmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TRACKSELECT); track=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(wtmp)); ttmp=gdrdao_tocedit_gettrack(tocdata,track); if(ttmp==NULL) return; tmp=(struct gdrdao_trackentry*)g_malloc(sizeof( struct gdrdao_trackentry)); gdrdao_trackentry_init(tmp); if(gdrdao_tocedit_getdata_pg(gdrdao_mainwindow,tmp)!=0) return; if(gdrdao_tocedit_addtrack(ttmp->pregap,ttmp->pregap->tracks+1,tmp)!=0) return; if(gdrdao_update_editor_pg(GTK_CLIST(lookup_widget(gdrdao_mainwindow, TOCEDITPG_EDITOR)), ttmp->pregap->track)!=0) return; wtmp=lookup_widget(gdrdao_mainwindow,TOCEDITPG_TRACKSELECT); adjustment=gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(wtmp)); adjustment->lower=1; adjustment->upper=ttmp->pregap->tracks; gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(wtmp),adjustment); gtk_spin_button_set_value(GTK_SPIN_BUTTON(wtmp), gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(wtmp))+1); gdrdao_set_ttime_max(TOCEDITPG_END_MINUTES, TOCEDITPG_END_SECONDS, TOCEDITPG_END_FRAMES, TOCEDITPG_END_TOTAL, tmp->lmin, tmp->lsec, tmp->lfrm); ttmp->premin=ttmp->pregap->lmin; ttmp->presec=ttmp->pregap->lsec; ttmp->prefrm=ttmp->pregap->lfrm; } void on_tocedit_pg_remove_clicked (GtkButton *button, gpointer user_data) { GtkWidget* tmp, *wtmp; GList* selection; GtkAdjustment *adjustment; gint removed, track; struct gdrdao_trackentry* ttmp; tmp=lookup_widget(gdrdao_mainwindow,TOCEDITPG_EDITOR); wtmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TRACKSELECT); track=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(wtmp)); ttmp=gdrdao_tocedit_gettrack(tocdata,track); selection=GTK_CLIST(tmp)->selection; if(selection==NULL) return; removed=0; while(selection) { if(gdrdao_tocedit_deltrack(ttmp->pregap, (gint)selection->data+1)!=0) return; selection=selection->next; ++removed; }; gdrdao_update_editor_pg(GTK_CLIST(lookup_widget(gdrdao_mainwindow, TOCEDITPG_EDITOR)), ttmp->pregap->track); tmp=lookup_widget(gdrdao_mainwindow,TOCEDITPG_TRACKSELECT); adjustment=gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(tmp)); adjustment->lower=1; adjustment->upper=ttmp->pregap->tracks; gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(tmp),adjustment); gtk_spin_button_set_value(GTK_SPIN_BUTTON(tmp), gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(tmp))-removed); }; void on_tocedit_pg_change_clicked (GtkButton *button, gpointer user_data) { GtkWidget* tmp; gint atrack, ptrack; struct gdrdao_trackentry* ttmp, *ytmp; tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TRACKSELECT); atrack=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(tmp)); tmp=lookup_widget(gdrdao_mainwindow,TOCEDITPG_TRACKSELECT); ptrack=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(tmp)); if(atrack==1 && tocdata->track==NULL) return; ttmp=gdrdao_tocedit_gettrack(tocdata,atrack); ytmp=gdrdao_tocedit_gettrack(ttmp->pregap,ptrack); if(gdrdao_tocedit_getdata_pg(gdrdao_mainwindow, ytmp)!=0) abort(); tmp=lookup_widget(gdrdao_mainwindow, TOCEDITPG_EDITOR); gdrdao_update_editor_pg(GTK_CLIST(tmp),ttmp->pregap->track); } void on_tocedit_pg_track_changed (GtkEditable *editable, gpointer user_data) { GtkWidget *tmp; gint no; struct gdrdao_trackentry *track, *ttmp; gint atrack, ptrack; tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TRACKSELECT); atrack=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(tmp)); tmp=lookup_widget(gdrdao_mainwindow,TOCEDITPG_TRACKSELECT); ptrack=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(tmp)); track=gdrdao_tocedit_gettrack(tocdata, atrack); ttmp=gdrdao_tocedit_gettrack(track->pregap,ptrack); gdrdao_tocedit_setdata_pg(gdrdao_mainwindow,ttmp); tmp=lookup_widget(gdrdao_mainwindow,TOCEDITPG_EDITOR); gdrdao_update_editor_pg(GTK_CLIST(tmp),track->pregap->track); /* select the corresponding row */ tmp=lookup_widget(gdrdao_mainwindow,TOCEDITPG_TRACKSELECT); no=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(tmp)); if(no==0) return; /* apparently no tracks there */ tmp=lookup_widget(gdrdao_mainwindow,TOCEDITPG_EDITOR); gtk_clist_select_row(GTK_CLIST(tmp),no-1,0); } void on_tocedit_pg_edit_select_row (GtkCList *clist, gint row, gint column, GdkEvent *event, gpointer user_data) { GtkWidget* tmp; tmp=lookup_widget(gdrdao_mainwindow,TOCEDITPG_TRACKSELECT); gtk_spin_button_set_value(GTK_SPIN_BUTTON(tmp),row+1); } void on_notebook1_switch_page (GtkNotebook *notebook, GtkNotebookPage *page, gint page_num, gpointer user_data) { GtkWidget *tmp; struct gdrdao_trackentry *track; char buf[64536]; tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TRACKSELECT); track=gdrdao_tocedit_gettrack(tocdata, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(tmp))); if(track==NULL) return; /* no track there */ /* if the track does have extended pregap, make the pregap * selection on the track options pad invalid et vice versa */ if(track->pregap->track==NULL) { tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_PREGAP_MINUTES); gtk_widget_set_sensitive(GTK_WIDGET(tmp),TRUE); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_PREGAP_SECONDS); gtk_widget_set_sensitive(GTK_WIDGET(tmp),TRUE); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_PREGAP_FRAMES); gtk_widget_set_sensitive(GTK_WIDGET(tmp),TRUE); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_PREGAP_TOTAL); gtk_widget_set_sensitive(GTK_WIDGET(tmp),TRUE); } else { tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_PREGAP_MINUTES); gtk_widget_set_sensitive(GTK_WIDGET(tmp),FALSE); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_PREGAP_SECONDS); gtk_widget_set_sensitive(GTK_WIDGET(tmp),FALSE); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_PREGAP_FRAMES); gtk_widget_set_sensitive(GTK_WIDGET(tmp),FALSE); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_PREGAP_TOTAL); gtk_widget_set_sensitive(GTK_WIDGET(tmp),FALSE); }; gdrdao_tocedit_dumptomem(tocdata,buf); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TOCFILE); gtk_text_freeze(GTK_TEXT(tmp)); gtk_editable_delete_text(GTK_EDITABLE(tmp),0,gtk_text_get_length(GTK_TEXT(tmp))); gtk_text_insert(GTK_TEXT(tmp),NULL,NULL,NULL,buf,strlen(buf)-1); gtk_text_thaw(GTK_TEXT(tmp)); } void on_dlg_fileselect_ok_button_clicked (GtkButton *button, gpointer user_data) { gchar* q; GtkWidget* tmp; tmp=lookup_widget(GTK_WIDGET(button),GDRDAO_DLG_FILESELECT); q=gtk_file_selection_get_filename(GTK_FILE_SELECTION(tmp)); if(gdrdao_tocedit_dumptodisk(tocdata, q)==0) { savestuff->saved=TRUE; strcpy(savestuff->filename,q); }; gtk_widget_destroy(tmp); } void on_dlg_fileselect_cancel_button_clicked (GtkButton *button, gpointer user_data) { GtkWidget *tmp; tmp=lookup_widget(GTK_WIDGET(button),GDRDAO_DLG_FILESELECT); gtk_widget_destroy(tmp); } void on_gdrdao_new_clicked (GtkButton *button, gpointer user_data) { GtkWidget *tmp; register long i=0; if(savestuff->saved==FALSE) { tmp=create_dlg_warn_tocnotsaved(); gtk_widget_show(tmp); gtk_grab_add(tmp); if(savestuff->tosave==TRUE) { savestuff->tosave=FALSE; return; }; }; for(i=1000;i>=0;--i) gdrdao_tocedit_deltrack(tocdata,i); gdrdao_tocedit_init_widget(gdrdao_mainwindow); } void on_tocedit_silence_mmssff_changed (GtkEditable *editable, gpointer user_data) { gdrdao_set_ttimetotal(TOCEDIT_SILENCE_MINUTES, TOCEDIT_SILENCE_SECONDS, TOCEDIT_SILENCE_FRAMES, TOCEDIT_SILENCE_TOTAL, GTK_SIGNAL_FUNC(on_tocedit_silence_total_changed)); } void on_tocedit_start_mmssff_changed (GtkEditable *editable, gpointer user_data) { GtkWidget* wtmp; gint w,e,r; gdrdao_set_ttimetotal(TOCEDIT_START_MINUTES, TOCEDIT_START_SECONDS, TOCEDIT_START_FRAMES, TOCEDIT_START_TOTAL, GTK_SIGNAL_FUNC(on_tocedit_start_total_changed)); wtmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_END_MINUTES); w=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(wtmp)); wtmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_END_SECONDS); e=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(wtmp)); wtmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_END_FRAMES); r=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(wtmp)); gdrdao_set_ttime_max(TOCEDIT_START_MINUTES,TOCEDIT_START_SECONDS, TOCEDIT_START_FRAMES,TOCEDIT_START_TOTAL,w,e,r); wtmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_START_MINUTES); w=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(wtmp)); wtmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_START_SECONDS); e=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(wtmp)); wtmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_START_FRAMES); r=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(wtmp)); gdrdao_set_ttime_min(TOCEDIT_END_MINUTES,TOCEDIT_END_SECONDS, TOCEDIT_END_FRAMES,TOCEDIT_END_TOTAL,w,e,r); } void on_tocedit_end_mmssff_changed (GtkEditable *editable, gpointer user_data) { GtkWidget *wtmp; struct gdrdao_trackentry* ttmp; gint w,e,r; wtmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TRACKSELECT); ttmp=gdrdao_tocedit_gettrack(tocdata,gtk_spin_button_get_value_as_int( GTK_SPIN_BUTTON(wtmp))); gdrdao_set_ttimetotal(TOCEDIT_END_MINUTES, TOCEDIT_END_SECONDS, TOCEDIT_END_FRAMES, TOCEDIT_END_TOTAL, GTK_SIGNAL_FUNC(on_tocedit_end_total_changed)); gdrdao_set_ttime_max(TOCEDIT_END_MINUTES,TOCEDIT_END_SECONDS, TOCEDIT_END_FRAMES,TOCEDIT_END_TOTAL, ttmp->flenmin,ttmp->flensec,ttmp->flenfrm); wtmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_END_MINUTES); w=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(wtmp)); wtmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_END_SECONDS); e=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(wtmp)); wtmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_END_FRAMES); r=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(wtmp)); gdrdao_set_ttime_max(TOCEDIT_START_MINUTES,TOCEDIT_START_SECONDS, TOCEDIT_START_FRAMES,TOCEDIT_START_TOTAL,w,e,r); gdrdao_set_ttime_min(TOCEDIT_START_MINUTES,TOCEDIT_START_SECONDS, TOCEDIT_START_FRAMES,TOCEDIT_START_TOTAL,0,0,0); wtmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_START_MINUTES); w=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(wtmp)); wtmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_START_SECONDS); e=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(wtmp)); wtmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_START_FRAMES); r=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(wtmp)); gdrdao_set_ttime_min(TOCEDIT_END_MINUTES, TOCEDIT_END_SECONDS, TOCEDIT_END_FRAMES, TOCEDIT_END_TOTAL,w+1,e+1,r+1); } void on_toceditpg_start_mmssff_changed (GtkEditable *editable, gpointer user_data) { GtkWidget *wtmp; struct gdrdao_trackentry* ttmp; gint w,e,r; wtmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TRACKSELECT); ttmp=gdrdao_tocedit_gettrack(tocdata,gtk_spin_button_get_value_as_int( GTK_SPIN_BUTTON(wtmp))); gdrdao_set_ttimetotal(TOCEDITPG_START_MINUTES, TOCEDITPG_START_SECONDS, TOCEDITPG_START_FRAMES, TOCEDITPG_START_TOTAL, GTK_SIGNAL_FUNC(on_tocedit_pg_start_total_changed)); if(ttmp->endmin==0&&ttmp->endsec==0&&ttmp->endfrm==0) { gdrdao_set_ttime_max(TOCEDIT_START_MINUTES, TOCEDIT_START_SECONDS, TOCEDIT_START_FRAMES, TOCEDIT_START_TOTAL, ttmp->flenmin,ttmp->flensec,ttmp->flenfrm); } else { wtmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_END_MINUTES); w=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(wtmp)); wtmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_END_SECONDS); e=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(wtmp)); wtmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_END_FRAMES); r=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(wtmp)); gdrdao_set_ttime_max(TOCEDIT_START_MINUTES, TOCEDIT_START_SECONDS, TOCEDIT_START_FRAMES, TOCEDIT_START_TOTAL, /*ttmp->endmin,ttmp->endsec,ttmp->endfrm */ w,e,r); }; } void on_toceditpg_silence_mmssff_changed (GtkEditable *editable, gpointer user_data) { gdrdao_set_ttimetotal(TOCEDITPG_SILENCE_MINUTES, TOCEDITPG_SILENCE_SECONDS, TOCEDITPG_SILENCE_FRAMES, TOCEDITPG_SILENCE_TOTAL, GTK_SIGNAL_FUNC(on_tocedit_pg_silence_total_changed)); }; void on_toceditpg_end_mmssff_changed (GtkEditable *editable, gpointer user_data) { /* gdrdao_set_ttimetotal(TOCEDITPG_END_MINUTES, TOCEDITPG_END_SECONDS, TOCEDITPG_END_FRAMES, TOCEDITPG_END_TOTAL, GTK_SIGNAL_FUNC(on_tocedit_pg_end_total_changed)); */ GtkWidget *wtmp; struct gdrdao_trackentry* ttmp, *qtmp; wtmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TRACKSELECT); qtmp=gdrdao_tocedit_gettrack(tocdata,gtk_spin_button_get_value_as_int( GTK_SPIN_BUTTON(wtmp))); wtmp=lookup_widget(gdrdao_mainwindow,TOCEDITPG_TRACKSELECT); ttmp=gdrdao_tocedit_gettrack(qtmp->pregap, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(wtmp))); gdrdao_set_ttimetotal(TOCEDITPG_END_MINUTES, TOCEDITPG_END_SECONDS, TOCEDITPG_END_FRAMES, TOCEDITPG_END_TOTAL, GTK_SIGNAL_FUNC(on_tocedit_pg_end_total_changed)); gdrdao_set_ttime_max(TOCEDITPG_END_MINUTES,TOCEDITPG_END_SECONDS, TOCEDITPG_END_FRAMES,TOCEDITPG_END_TOTAL, ttmp->flenmin,ttmp->flensec,ttmp->flenfrm); }; void on_tocedit_text_map_toggled (GtkToggleButton *togglebutton, gpointer user_data) { /* this one's called when the user toggles one of the * track-mapbuttons */ GtkWidget *tmp; struct gdrdao_trackentry *ttmp; tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TRACKSELECT); ttmp=gdrdao_tocedit_gettrack(tocdata, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(tmp))); gdrdao_tocedit_setdata_text(gdrdao_mainwindow,tocdata,ttmp); } void on_tocedit_text_field_changed (GtkEditable *editable, gpointer user_data) { /* this is kinda anti-elegant, but i can't help it... */ GtkWidget *tmp; struct gdrdao_trackentry *ttmp; tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TRACKSELECT); ttmp=gdrdao_tocedit_gettrack(tocdata, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(tmp))); gdrdao_tocedit_getdata_text(gdrdao_mainwindow,tocdata,ttmp); } void on_tocedit_textg_map_toggled (GtkToggleButton *togglebutton, gpointer user_data) { GtkWidget *tmp; struct gdrdao_trackentry *ttmp; tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TRACKSELECT); ttmp=gdrdao_tocedit_gettrack(tocdata, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(tmp))); gdrdao_tocedit_setdata_text(gdrdao_mainwindow,tocdata,ttmp); } void on_tocedit_textg_field_changed (GtkEditable *editable, gpointer user_data) { GtkWidget *tmp; struct gdrdao_trackentry *ttmp; tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TRACKSELECT); ttmp=gdrdao_tocedit_gettrack(tocdata, gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(tmp))); gdrdao_tocedit_getdata_text(gdrdao_mainwindow,tocdata,ttmp); gdrdao_update_editor(GTK_CLIST(lookup_widget(gdrdao_mainwindow, TOCEDIT_EDITOR)),tocdata->track); } void on_tocedit_textg_language_changed (GtkEditable *editable, gpointer user_data) { gint w; gchar l[256], s[8], q[512]; gint n; GtkWidget *tmp, *la[2]; tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXTG_LANGUAGE); n=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(tmp)); w=gdrdao_get_selected_gmap(); if(gdrdao_translate_lmap(n,l,s)!=0) { tocdata->lmap.map[w]=NA; }; if(w<0||w>7) return; /* can't be actually */ la[0]=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXT_STATS); la[1]=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXTG_STATS); sprintf(q,"%s (%s, %i)",l,s,n); gtk_label_set_text(GTK_LABEL(la[0]),q); gtk_label_set_text(GTK_LABEL(la[1]),q); }