#include #include #include #include #include #include "tocedit.h" #include "tocdata.h" #include "support.h" #include "interface.h" #include "widgets.h" #include "tracktime.h" #include "callbacks.h" #include "globals.h" /* the format depends on the GUI! * col[0] track number * col[1] track type * col[2] ISRC * col[3] pregap * col[4] filename * col[5] length * col[6] silence * col[7] start * col[8] end * col[9] cdtext? * col[10] PreEmph * col[11] Copy */ /* the gchar** parameter has to be at least char[12][256] in size */ gint gdrdao_trackentry_mkclist(struct gdrdao_toceditor* _toc, struct gdrdao_trackentry* _use, gchar** _text) { if(_use==NULL||_text==NULL) return 1; //if(_use->trackfile==NULL) return 1; /* no file */ sprintf(_text[0],"%i",_use->number); if(_use->type==CDDA) strcpy(_text[1],"Audio"); if(strcmp(_use->isrc,"CCOOOYYSSSSS")!=0) { strcpy(_text[2],_use->isrc); } else { strcpy(_text[2]," "); }; if(_use->premin==0&&_use->presec==0&&_use->prefrm==0) { sprintf(_text[3]," "); } else { sprintf(_text[3],"%02i:%02i:%02i",_use->premin,_use->presec,_use->prefrm); }; sprintf(_text[4],"(%02i:%02i:%02i) %s",_use->flenmin,_use->flensec, _use->flenfrm,_use->trackfile); sprintf(_text[5],"%02i:%02i:%02i",_use->lmin,_use->lsec,_use->lfrm); if(_use->silmin==0&&_use->silsec==0&&_use->silfrm==0) { sprintf(_text[6]," "); } else { sprintf(_text[6],"%02i:%02i:%02i",_use->silmin,_use->silsec,_use->silfrm); }; if(_use->strmin==0&&_use->strsec==0&&_use->strfrm==0) { sprintf(_text[7]," "); } else { sprintf(_text[7],"%02i:%02i:%02i",_use->strmin,_use->strsec,_use->strfrm); }; if(_use->endmin==0&&_use->endsec==0&&_use->endfrm==0) { sprintf(_text[8]," "); } else { sprintf(_text[8],"%02i:%02i:%02i",_use->endmin,_use->endsec,_use->endfrm); }; if(_toc->lmap.map[0]!=NA||_toc->lmap.map[1]!=NA|| _toc->lmap.map[2]!=NA||_toc->lmap.map[3]!=NA|| _toc->lmap.map[4]!=NA||_toc->lmap.map[5]!=NA|| _toc->lmap.map[6]!=NA||_toc->lmap.map[7]!=NA) { strcpy(_text[9],"X"); } else { strcpy(_text[9],""); }; if(_use->preemph==TRUE) { strcpy(_text[10],"X"); } else { strcpy(_text[10],""); }; if(_use->copy==TRUE) { strcpy(_text[11],"X"); } else { strcpy(_text[11],""); }; return 0; }; gint gdrdao_tocedit_getdata(GtkWidget* _widget, struct gdrdao_toceditor* _toc, struct gdrdao_trackentry* _use) { GtkWidget* tmp; char* q; long w; if(_widget==NULL||_use==NULL) return 1; tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_DISKOPT_CATALOG); q=gtk_entry_get_text(GTK_ENTRY(tmp)); strcpy(_toc->catalog,q); _toc->disktype=CDDA; /* always for now */ tmp=lookup_widget(_widget,TOCEDIT_TRACKSELECT); _use->number=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(tmp)); tmp=lookup_widget(_widget,TOCEDIT_FILESELECT); q=(char*)gnome_file_entry_get_full_path(GNOME_FILE_ENTRY(tmp),FALSE); if(q==NULL) { tmp=create_msg_err_selectfile(); gtk_widget_show(tmp); gtk_grab_add(tmp); return 1; }; _use->trackfile=(char*)malloc(sizeof(char)*strlen(q)+1); strcpy(_use->trackfile,q); tmp=lookup_widget(_widget,TOCEDIT_TRACKTYPE); _use->type=CDDA; /* pregap */ tmp=lookup_widget(_widget,TOCEDIT_PREGAP_MINUTES); _use->premin=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(tmp)); tmp=lookup_widget(_widget,TOCEDIT_PREGAP_SECONDS); _use->presec=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(tmp)); tmp=lookup_widget(_widget,TOCEDIT_PREGAP_FRAMES); _use->prefrm=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(tmp)); /* silence */ tmp=lookup_widget(_widget,TOCEDIT_SILENCE_MINUTES); _use->silmin=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(tmp)); tmp=lookup_widget(_widget,TOCEDIT_SILENCE_SECONDS); _use->silsec=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(tmp)); tmp=lookup_widget(_widget,TOCEDIT_SILENCE_FRAMES); _use->silfrm=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(tmp)); /* start */ tmp=lookup_widget(_widget,TOCEDIT_START_MINUTES); _use->strmin=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(tmp)); tmp=lookup_widget(_widget,TOCEDIT_START_SECONDS); _use->strsec=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(tmp)); tmp=lookup_widget(_widget,TOCEDIT_START_FRAMES); _use->strfrm=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(tmp)); /* end */ tmp=lookup_widget(_widget,TOCEDIT_END_MINUTES); _use->endmin=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(tmp)); tmp=lookup_widget(_widget,TOCEDIT_END_SECONDS); _use->endsec=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(tmp)); tmp=lookup_widget(_widget,TOCEDIT_END_FRAMES); _use->endfrm=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(tmp)); /* copy and preemph */ tmp=lookup_widget(_widget,TOCEDIT_PREEMPH); if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(tmp))==TRUE) { _use->preemph=TRUE; } else { _use->preemph=FALSE; }; tmp=lookup_widget(_widget,TOCEDIT_COPY); if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(tmp))==TRUE) { _use->copy=TRUE; } else { _use->copy=FALSE; }; /* isrc */ tmp=lookup_widget(_widget,TOCEDIT_ISRC); q=gtk_entry_get_text(GTK_ENTRY(tmp)); strcpy(_use->isrc,q); /* comment */ tmp=lookup_widget(_widget,TOCEDIT_COMMENT); q=gtk_entry_get_text(GTK_ENTRY(tmp)); strcpy(_use->comment,q); /* cdtext */ gdrdao_tocedit_getdata_text(_widget,_toc,_use); /* calculate track length */ if(gdrdao_get_track_length_high(_use)!=0) return 1; return 0; }; gint gdrdao_tocedit_setdata(GtkWidget* _widget, struct gdrdao_toceditor* _toc, struct gdrdao_trackentry* _use) { GtkWidget *tmp, *etmp, *qtmp[3]; register long i; long w; if(_use==NULL||_widget==NULL) return 1; tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_DISKOPT_CATALOG); gtk_entry_set_text(GTK_ENTRY(tmp),_toc->catalog); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_DISKOPT_CDDA); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(tmp),TRUE); /* for now */ tmp=lookup_widget(_widget,TOCEDIT_TRACKSELECT); gtk_spin_button_set_value(GTK_SPIN_BUTTON(tmp),_use->number); tmp=lookup_widget(_widget,TOCEDIT_FILESELECT); etmp=gnome_file_entry_gtk_entry(GNOME_FILE_ENTRY(tmp)); gtk_entry_set_text(GTK_ENTRY(etmp),_use->trackfile); /* pregap */ tmp=lookup_widget(_widget,TOCEDIT_PREGAP_MINUTES); gtk_spin_button_set_value(GTK_SPIN_BUTTON(tmp),_use->premin); tmp=lookup_widget(_widget,TOCEDIT_PREGAP_SECONDS); gtk_spin_button_set_value(GTK_SPIN_BUTTON(tmp),_use->presec); tmp=lookup_widget(_widget,TOCEDIT_PREGAP_FRAMES); gtk_spin_button_set_value(GTK_SPIN_BUTTON(tmp),_use->prefrm); tmp=lookup_widget(_widget,TOCEDIT_PREGAP_TOTAL); gtk_spin_button_set_value(GTK_SPIN_BUTTON(tmp), (float)_use->premin*60+(float)_use->presec+ ((float)(_use->prefrm*4)/3)); /* silence */ tmp=lookup_widget(_widget,TOCEDIT_SILENCE_MINUTES); gtk_spin_button_set_value(GTK_SPIN_BUTTON(tmp),_use->silmin); tmp=lookup_widget(_widget,TOCEDIT_SILENCE_SECONDS); gtk_spin_button_set_value(GTK_SPIN_BUTTON(tmp),_use->silsec); tmp=lookup_widget(_widget,TOCEDIT_SILENCE_FRAMES); gtk_spin_button_set_value(GTK_SPIN_BUTTON(tmp),_use->silfrm); tmp=lookup_widget(_widget,TOCEDIT_SILENCE_TOTAL); gtk_spin_button_set_value(GTK_SPIN_BUTTON(tmp), (float)_use->silmin*60+(float)_use->silsec+ ((float)(_use->silfrm*4)/3)); /* start */ tmp=lookup_widget(_widget,TOCEDIT_START_MINUTES); gtk_spin_button_set_value(GTK_SPIN_BUTTON(tmp),_use->strmin); tmp=lookup_widget(_widget,TOCEDIT_START_SECONDS); gtk_spin_button_set_value(GTK_SPIN_BUTTON(tmp),_use->strsec); tmp=lookup_widget(_widget,TOCEDIT_START_FRAMES); gtk_spin_button_set_value(GTK_SPIN_BUTTON(tmp),_use->strfrm); tmp=lookup_widget(_widget,TOCEDIT_START_TOTAL); gtk_spin_button_set_value(GTK_SPIN_BUTTON(tmp), (float)_use->strmin*60+(float)_use->strsec+ ((float)(_use->strfrm*4)/3)); /* end */ tmp=lookup_widget(_widget,TOCEDIT_END_MINUTES); gtk_spin_button_set_value(GTK_SPIN_BUTTON(tmp),_use->endmin); tmp=lookup_widget(_widget,TOCEDIT_END_SECONDS); gtk_spin_button_set_value(GTK_SPIN_BUTTON(tmp),_use->endsec); tmp=lookup_widget(_widget,TOCEDIT_END_FRAMES); gtk_spin_button_set_value(GTK_SPIN_BUTTON(tmp),_use->endfrm); tmp=lookup_widget(_widget,TOCEDIT_END_TOTAL); gtk_spin_button_set_value(GTK_SPIN_BUTTON(tmp), (float)_use->endmin*60+(float)_use->endsec+ ((float)(_use->endfrm*4)/3)); /* copy and preemph */ tmp=lookup_widget(_widget,TOCEDIT_PREEMPH); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(tmp),_use->preemph); tmp=lookup_widget(_widget,TOCEDIT_COPY); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(tmp),_use->copy); /* isrc */ tmp=lookup_widget(_widget,TOCEDIT_ISRC); gtk_entry_set_text(GTK_ENTRY(tmp),_use->isrc); /* comment */ tmp=lookup_widget(_widget,TOCEDIT_COMMENT); gtk_entry_set_text(GTK_ENTRY(tmp),_use->comment); /* cdtext */ gdrdao_tocedit_setdata_text(_widget,_toc,_use); /* update the end-fields */ qtmp[0]=lookup_widget(_widget,TOCEDIT_END_MINUTES); qtmp[1]=lookup_widget(_widget,TOCEDIT_END_SECONDS); for(i=0;i<3;++i) gtk_signal_handler_block_by_func(GTK_OBJECT(qtmp[0]),GTK_SIGNAL_FUNC( on_tocedit_end_mmssff_changed),NULL); gdrdao_set_ttime_max(TOCEDIT_END_MINUTES, TOCEDIT_END_SECONDS, TOCEDIT_END_FRAMES, TOCEDIT_END_TOTAL, _use->lmin, _use->lsec, _use->lfrm); gdrdao_set_ttime_min(TOCEDIT_END_MINUTES, TOCEDIT_END_SECONDS, TOCEDIT_END_FRAMES, TOCEDIT_END_TOTAL, _use->strmin, _use->strsec, _use->strfrm); for(i=0;i<3;++i) gtk_signal_handler_unblock_by_func(GTK_OBJECT(qtmp[0]),GTK_SIGNAL_FUNC( on_tocedit_end_mmssff_changed),NULL); return 0; }; gint gdrdao_update_editor(GtkCList* _use, struct gdrdao_trackentry* _src) { struct gdrdao_trackentry* tmp; gint tracks; register long i,ii; gchar*** buf; if(_use==NULL) return 1; tmp=_src; tracks=0; do { if(tmp!=NULL) {++tracks; tmp=tmp->next; continue;}; break; } while(1); if(tracks==0) { gtk_clist_freeze(_use); gtk_clist_clear(_use); gtk_clist_thaw(_use); }; buf=(gchar***)g_malloc(sizeof(gchar**)*(tracks+2)); for(i=0;inext; }; /* append the status row */ /* for(i=0;i<12;++i) buf[tracks][i]="----------------------------------------------------------------------------------------------------"; strcpy(buf[tracks+1][0]," "); strcpy(buf[tracks+1][1]," "); strcpy(buf[tracks+1][2]," "); sprintf(buf[tracks+1][3],"%02i:%02i:%02i",0,0,0); sprintf(buf[tracks+1][4],"%02i:%02i:%02i",tocdata->lmin,tocdata->lsec, tocdata->lfrm); strcpy(buf[tracks+1][5]," "); strcpy(buf[tracks+1][6]," "); strcpy(buf[tracks+1][7]," "); strcpy(buf[tracks+1][8]," "); strcpy(buf[tracks+1][9]," "); strcpy(buf[tracks+1][10]," "); strcpy(buf[tracks+1][11]," "); */ if(_use->selection==NULL) { ii=-1; } else { ii=(gint)GTK_CLIST(_use)->selection->data; }; gtk_clist_freeze(_use); gtk_clist_clear(_use); for(i=0;itrack; /* toc file header goes here */ fprintf(o,"//\n// This file was created with GdrDAO.\n//\n\n"); if(_use->disktype==CDDA) fprintf(o,"CD_DA\n"); if(_use->disktype==CDROM) fprintf(o,"CD_ROM\n"); if(_use->disktype==CDROMXA) fprintf(o,"CD_ROM_XA\n"); if(strcmp(_use->catalog,"0000000000000")!=0) fprintf(o,"CATALOG \"%s\"\n\n",_use->catalog); if(_use->lmap.map[0]!=NA||_use->lmap.map[1]!=NA|| _use->lmap.map[2]!=NA||_use->lmap.map[3]!=NA|| _use->lmap.map[4]!=NA||_use->lmap.map[5]!=NA|| _use->lmap.map[6]!=NA||_use->lmap.map[7]!=NA) { /* ok, there's at least one valid language map, so we can * go on using cdtext */ fprintf(o,"CD_TEXT {\n"); fprintf(o," LANGUAGE_MAP {\n"); for(i=0;i<8;++i) { if(_use->lmap.map[i]==NA) continue; fprintf(o," %i : %i\n",(int)i,_use->lmap.map[i]); }; fprintf(o," }\n"); for(i=0;i<8;++i) { if(_use->lmap.map[i]==NA) continue; fprintf(o," LANGUAGE %i {\n",(int)i); if(strcmp(_use->cdtext[i].title,"")!=0) fprintf(o," TITLE \"%s\"\n", _use->cdtext[i].title); if(strcmp(_use->cdtext[i].performer,"")!=0) fprintf(o," PERFORMER \"%s\"\n", _use->cdtext[i].performer); if(strcmp(_use->cdtext[i].songwriter,"")!=0) fprintf(o," SONGWRITER \"%s\"\n", _use->cdtext[i].songwriter); if(strcmp(_use->cdtext[i].composer,"")!=0) fprintf(o," COMPOSER \"%s\"\n", _use->cdtext[i].composer); if(strcmp(_use->cdtext[i].arranger,"")!=0) fprintf(o," ARRANGER \"%s\"\n", _use->cdtext[i].arranger); if(strcmp(_use->cdtext[i].isrc,"")!=0) fprintf(o," ISRC \"%s\"\n", _use->cdtext[i].isrc); if(strcmp(_use->cdtext[i].message,"")!=0) fprintf(o," MESSAGE \"%s\"\n", _use->cdtext[i].message); fprintf(o," }\n"); }; fprintf(o,"}\n\n"); }; /* toc file recursive part (track entries) go here */ for(i=0;i<_use->tracks;++i) { fprintf(o,"// Track %i\n",(int)i+1); if(strlen(t->comment)>0) fprintf(o,"// %s\n",t->comment); fprintf(o,"TRACK AUDIO\n"); if(t->copy==FALSE) { fprintf(o,"NO COPY\n"); } else { fprintf(o,"COPY\n"); }; if(t->preemph==FALSE) { fprintf(o,"NO PRE_EMPHASIS\n"); } else { fprintf(o,"PRE_EMPHASIS\n"); }; if(strcmp(t->isrc,"CCOOOYYSSSSS")!=0) fprintf(o,"ISRC \"%s\"\n",t->isrc); /* only if the user changed the isrc! */ fprintf(o,"TWO_CHANNEL_AUDIO\n"); if(t->pregap->track==NULL) { if(t->presec>0&&t->premin>0&&t->prefrm>0) { fprintf(o,"PREGAP %02i:%02i:%02i\n",t->premin, t->presec,t->prefrm); } else { fprintf(o,"START\n"); }; } else { y=t->pregap->track; while(y) { fprintf(o,"FILE \"%s\" ", y->trackfile); fprintf(o,"%02i:%02i:%02i ",y->strmin, y->strsec,y->strfrm); if(y->endmin==0&&y->endsec==0&&y->endfrm==0) { fprintf(o,"\n"); } else { fprintf(o,"%02i:%02i:%02i\n",y->lmin, y->lsec,y->lfrm); }; if(y->silmin==0&&y->silsec==0&&y->silfrm==0) { /* do nothing */ } else { fprintf(o,"SILENCE %02i:%02i:%02i\n", y->silmin,y->silsec,y->silfrm); }; y=y->next; }; fprintf(o,"START\n"); }; fprintf(o,"FILE \"%s\" %02i:%02i:%02i ", t->trackfile, t->strmin,t->strsec,t->strfrm); if(t->endmin==0&&t->endsec==0&&t->endfrm==0) { fprintf(o,"\n"); } else { fprintf(o,"%02i:%02i:%02i\n",t->lmin,t->lsec, t->lfrm); }; /* don't know if this silence thing works, but i give it a * try */ if(t->silmin==0&&t->silsec==0&&t->silfrm==0) { /* do nothing */ } else { fprintf(o,"%02i:%02i:%02i\n",t->silmin,t->silsec, t->silfrm); }; /* add the cdtext stuff at the end */ if(_use->lmap.map[0]!=NA||_use->lmap.map[1]!=NA|| _use->lmap.map[2]!=NA||_use->lmap.map[3]!=NA|| _use->lmap.map[4]!=NA||_use->lmap.map[5]!=NA|| _use->lmap.map[6]!=NA||_use->lmap.map[7]!=NA) { fprintf(o,"CD_TEXT {\n"); for(ii=0;ii<8;++ii) { if(_use->lmap.map[ii]==NA) continue; fprintf(o," LANGUAGE %i {\n",(int)ii); if(strcmp(t->cdtext[ii].title,"")!=0) fprintf(o," TITLE \"%s\"\n", t->cdtext[ii].title); if(strcmp(t->cdtext[ii].performer,"")!=0) fprintf(o," PERFORMER \"%s\"\n", t->cdtext[ii].performer); if(strcmp(t->cdtext[ii].songwriter,"")!=0) fprintf(o," SONGWRITER \"%s\"\n", t->cdtext[ii].songwriter); if(strcmp(t->cdtext[ii].composer,"")!=0) fprintf(o," COMPOSER \"%s\"\n", t->cdtext[ii].composer); if(strcmp(t->cdtext[ii].arranger,"")!=0) fprintf(o," ARRANGER \"%s\"\n", t->cdtext[ii].arranger); if(strcmp(t->cdtext[ii].isrc,"")!=0) fprintf(o," ISRC \"%s\"\n", t->cdtext[ii].isrc); if(strcmp(t->cdtext[ii].message,"")!=0) fprintf(o," MESSAGE \"%s\"\n", t->cdtext[ii].message); fprintf(o," }\n"); }; fprintf(o,"}\n"); }; fprintf(o,"\n"); /* just to look better */ t=t->next; }; fclose(o); return 0; }; float gdrdao_conv_mmssff(gint _mm, gint _ss, gint _ff) { float q; /* in seconds */ if(_mm<0||_ss<0||_ff<0) return 0; q=0; q+=(float)_mm*60; q+=(float)_ss; q+=(float)(((float)_ff*4)/300); return q; }; gint gdrdao_tocedit_init_widget(GtkWidget* _use) { return 0; }; gint gdrdao_update_editor_stats(struct gdrdao_toceditor* _use) { GtkWidget *tmp; gchar buf[8192]; gint mm, ss, ff, pmm, pss, pff; if(_use==NULL) return 1; tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_STATS); gdrdao_get_dtime(_use,&mm,&ss,&ff); pmm=mm; pss=ss; pff=ff; gdrdao_sub_ttime(&pmm,&pss,&pff,_use->lmin,_use->lsec,_use->lfrm); sprintf(buf,"%i Track(s), total length: %02i:%02i:%02i Total pregap length(s): %02i:%02i:%02i Disk total length: %02i:%02i:%02i", (int)_use->tracks, _use->lmin, _use->lsec, _use->lfrm, pmm, pss, pff, mm, ss, ff); gtk_label_set_text(GTK_LABEL(tmp),buf); return 0; }; gint gdrdao_tocedit_dumptomem(struct gdrdao_toceditor* _toc, gchar* _buf) { FILE* tmp; time_t q; char tbuf[1024], c; register long i; if(_buf==NULL||_toc==NULL) return 1; q=time(NULL); sprintf(tbuf,".%i",(int)q); gdrdao_tocedit_dumptodisk(_toc,tbuf); tmp=fopen(tbuf,"rw"); i=0; do { c=getc(tmp); _buf[i++]=c; } while(_buf[i-1]!=EOF); fclose(tmp); unlink(tbuf); return 0; }; gint gdrdao_get_selected_gmap() { GtkWidget *tmp[8]; register long i; tmp[0]=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXTG_MAP1); tmp[1]=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXTG_MAP2); tmp[2]=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXTG_MAP3); tmp[3]=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXTG_MAP4); tmp[4]=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXTG_MAP5); tmp[5]=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXTG_MAP6); tmp[6]=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXTG_MAP7); tmp[7]=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXTG_MAP8); for(i=0;i<8;++i) if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(tmp[i]))==TRUE) return i; return -1; /* can't be reached actually */ }; gint gdrdao_get_selected_map() { GtkWidget *tmp[8]; register long i; tmp[0]=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXT_MAP1); tmp[1]=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXT_MAP2); tmp[2]=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXT_MAP3); tmp[3]=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXT_MAP4); tmp[4]=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXT_MAP5); tmp[5]=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXT_MAP6); tmp[6]=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXT_MAP7); tmp[7]=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXT_MAP8); for(i=0;i<8;++i) if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(tmp[i]))==TRUE) return i; return -1; /* can't be reached actually */ }; gint gdrdao_tocedit_updatedata(GtkWidget* _widget, struct gdrdao_toceditor* _toc) { /* GtkWidget *tmp; struct gdrdao_trackentry* ttmp; gint t; tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TRACKSELECT); t=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(tmp)); ttmp=gdrdao_tocedit_gettrack(tocdata,t); */ return 0; }; gint gdrdao_tocedit_getdata_text(GtkWidget* _widget, struct gdrdao_toceditor* _toc, struct gdrdao_trackentry* _use) { GtkWidget* tmp; gchar *q; gint w; if(_widget==NULL||_toc==NULL||_use==NULL) return 1; w=gdrdao_get_selected_gmap(); /* global first */ if(w<0||w>7) abort(); /* can't be */ tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXTG_LANGUAGE); _toc->lmap.map[w]=gtk_spin_button_get_value_as_int( GTK_SPIN_BUTTON(tmp)); if(_toc->lmap.map[w]!=EN/*insert others here! */) _toc->lmap.map[w]=NA; tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXTG_TITLE); q=gtk_entry_get_text(GTK_ENTRY(tmp)); strcpy(_toc->cdtext[w].title,q); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXTG_ISRC); q=gtk_entry_get_text(GTK_ENTRY(tmp)); strcpy(_toc->cdtext[w].isrc,q); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXTG_PERFORMER); q=gtk_entry_get_text(GTK_ENTRY(tmp)); strcpy(_toc->cdtext[w].performer,q); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXTG_MESSAGE); q=gtk_entry_get_text(GTK_ENTRY(tmp)); strcpy(_toc->cdtext[w].message,q); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXTG_SONGWRITER); q=gtk_entry_get_text(GTK_ENTRY(tmp)); strcpy(_toc->cdtext[w].songwriter,q); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXTG_ARRANGER); q=gtk_entry_get_text(GTK_ENTRY(tmp)); strcpy(_toc->cdtext[w].arranger,q); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXTG_COMPOSER); q=gtk_entry_get_text(GTK_ENTRY(tmp)); strcpy(_toc->cdtext[w].composer,q); w=gdrdao_get_selected_map(); /* and mow the individual */ if(w>7||w<0) abort(); /* impossible */ tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXT_TITLE); q=gtk_entry_get_text(GTK_ENTRY(tmp)); strcpy(_use->cdtext[w].title,q); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXT_ISRC); q=gtk_entry_get_text(GTK_ENTRY(tmp)); strcpy(_use->cdtext[w].isrc,q); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXT_PERFORMER); q=gtk_entry_get_text(GTK_ENTRY(tmp)); strcpy(_use->cdtext[w].performer,q); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXT_MESSAGE); q=gtk_entry_get_text(GTK_ENTRY(tmp)); strcpy(_use->cdtext[w].message,q); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXT_SONGWRITER); q=gtk_entry_get_text(GTK_ENTRY(tmp)); strcpy(_use->cdtext[w].songwriter,q); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXT_ARRANGER); q=gtk_entry_get_text(GTK_ENTRY(tmp)); strcpy(_use->cdtext[w].arranger,q); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXT_COMPOSER); q=gtk_entry_get_text(GTK_ENTRY(tmp)); strcpy(_use->cdtext[w].composer,q); return 0; }; gint gdrdao_tocedit_setdata_text(GtkWidget* _widget, struct gdrdao_toceditor* _toc, struct gdrdao_trackentry* _use) { GtkWidget *tmp; gint w; if(_widget==NULL||_toc==NULL||_use==NULL) return 1; tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXT_TITLE); gtk_signal_handler_block_by_func(GTK_OBJECT(tmp),GTK_SIGNAL_FUNC( on_tocedit_text_field_changed),NULL); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXT_PERFORMER); gtk_signal_handler_block_by_func(GTK_OBJECT(tmp),GTK_SIGNAL_FUNC( on_tocedit_text_field_changed),NULL); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXT_MESSAGE); gtk_signal_handler_block_by_func(GTK_OBJECT(tmp),GTK_SIGNAL_FUNC( on_tocedit_text_field_changed),NULL); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXT_ISRC); gtk_signal_handler_block_by_func(GTK_OBJECT(tmp),GTK_SIGNAL_FUNC( on_tocedit_text_field_changed),NULL); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXT_SONGWRITER); gtk_signal_handler_block_by_func(GTK_OBJECT(tmp),GTK_SIGNAL_FUNC( on_tocedit_text_field_changed),NULL); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXT_ARRANGER); gtk_signal_handler_block_by_func(GTK_OBJECT(tmp),GTK_SIGNAL_FUNC( on_tocedit_text_field_changed),NULL); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXT_COMPOSER); gtk_signal_handler_block_by_func(GTK_OBJECT(tmp),GTK_SIGNAL_FUNC( on_tocedit_text_field_changed),NULL); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXTG_TITLE); gtk_signal_handler_block_by_func(GTK_OBJECT(tmp),GTK_SIGNAL_FUNC( on_tocedit_textg_field_changed),NULL); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXTG_PERFORMER); gtk_signal_handler_block_by_func(GTK_OBJECT(tmp),GTK_SIGNAL_FUNC( on_tocedit_textg_field_changed),NULL); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXTG_MESSAGE); gtk_signal_handler_block_by_func(GTK_OBJECT(tmp),GTK_SIGNAL_FUNC( on_tocedit_textg_field_changed),NULL); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXTG_ISRC); gtk_signal_handler_block_by_func(GTK_OBJECT(tmp),GTK_SIGNAL_FUNC( on_tocedit_textg_field_changed),NULL); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXTG_SONGWRITER); gtk_signal_handler_block_by_func(GTK_OBJECT(tmp),GTK_SIGNAL_FUNC( on_tocedit_textg_field_changed),NULL); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXTG_ARRANGER); gtk_signal_handler_block_by_func(GTK_OBJECT(tmp),GTK_SIGNAL_FUNC( on_tocedit_textg_field_changed),NULL); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXTG_COMPOSER); gtk_signal_handler_block_by_func(GTK_OBJECT(tmp),GTK_SIGNAL_FUNC( on_tocedit_textg_field_changed),NULL); w=gdrdao_get_selected_gmap(); /* global first */ if(w<0||w>7) abort(); /* can't be */ tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXTG_LANGUAGE); gtk_spin_button_set_value(GTK_SPIN_BUTTON(tmp),_toc->lmap.map[w]); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXTG_TITLE); gtk_entry_set_text(GTK_ENTRY(tmp),_toc->cdtext[w].title); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXTG_ISRC); gtk_entry_set_text(GTK_ENTRY(tmp),_toc->cdtext[w].isrc); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXTG_PERFORMER); gtk_entry_set_text(GTK_ENTRY(tmp),_toc->cdtext[w].performer); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXTG_MESSAGE); gtk_entry_set_text(GTK_ENTRY(tmp),_toc->cdtext[w].message); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXTG_SONGWRITER); gtk_entry_set_text(GTK_ENTRY(tmp),_toc->cdtext[w].songwriter); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXTG_ARRANGER); gtk_entry_set_text(GTK_ENTRY(tmp),_toc->cdtext[w].arranger); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXTG_COMPOSER); gtk_entry_set_text(GTK_ENTRY(tmp),_toc->cdtext[w].composer); w=gdrdao_get_selected_map(); /* and mow the individual */ if(w>7||w<0) abort(); /* impossible */ tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXT_TITLE); gtk_entry_set_text(GTK_ENTRY(tmp),_use->cdtext[w].title); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXT_ISRC); gtk_entry_set_text(GTK_ENTRY(tmp),_use->cdtext[w].isrc); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXT_PERFORMER); gtk_entry_set_text(GTK_ENTRY(tmp),_use->cdtext[w].performer); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXT_MESSAGE); gtk_entry_set_text(GTK_ENTRY(tmp),_use->cdtext[w].message); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXT_SONGWRITER); gtk_entry_set_text(GTK_ENTRY(tmp),_use->cdtext[w].songwriter); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXT_ARRANGER); gtk_entry_set_text(GTK_ENTRY(tmp),_use->cdtext[w].arranger); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXT_COMPOSER); gtk_entry_set_text(GTK_ENTRY(tmp),_use->cdtext[w].composer); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXT_TITLE); gtk_signal_handler_unblock_by_func(GTK_OBJECT(tmp),GTK_SIGNAL_FUNC( on_tocedit_text_field_changed),NULL); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXT_PERFORMER); gtk_signal_handler_unblock_by_func(GTK_OBJECT(tmp),GTK_SIGNAL_FUNC( on_tocedit_text_field_changed),NULL); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXT_MESSAGE); gtk_signal_handler_unblock_by_func(GTK_OBJECT(tmp),GTK_SIGNAL_FUNC( on_tocedit_text_field_changed),NULL); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXT_ISRC); gtk_signal_handler_unblock_by_func(GTK_OBJECT(tmp),GTK_SIGNAL_FUNC( on_tocedit_text_field_changed),NULL); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXT_SONGWRITER); gtk_signal_handler_unblock_by_func(GTK_OBJECT(tmp),GTK_SIGNAL_FUNC( on_tocedit_text_field_changed),NULL); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXT_ARRANGER); gtk_signal_handler_unblock_by_func(GTK_OBJECT(tmp),GTK_SIGNAL_FUNC( on_tocedit_text_field_changed),NULL); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXT_COMPOSER); gtk_signal_handler_unblock_by_func(GTK_OBJECT(tmp),GTK_SIGNAL_FUNC( on_tocedit_text_field_changed),NULL); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXTG_TITLE); gtk_signal_handler_unblock_by_func(GTK_OBJECT(tmp),GTK_SIGNAL_FUNC( on_tocedit_textg_field_changed),NULL); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXTG_PERFORMER); gtk_signal_handler_unblock_by_func(GTK_OBJECT(tmp),GTK_SIGNAL_FUNC( on_tocedit_textg_field_changed),NULL); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXTG_MESSAGE); gtk_signal_handler_unblock_by_func(GTK_OBJECT(tmp),GTK_SIGNAL_FUNC( on_tocedit_textg_field_changed),NULL); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXTG_ISRC); gtk_signal_handler_unblock_by_func(GTK_OBJECT(tmp),GTK_SIGNAL_FUNC( on_tocedit_textg_field_changed),NULL); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXTG_SONGWRITER); gtk_signal_handler_unblock_by_func(GTK_OBJECT(tmp),GTK_SIGNAL_FUNC( on_tocedit_textg_field_changed),NULL); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXTG_ARRANGER); gtk_signal_handler_unblock_by_func(GTK_OBJECT(tmp),GTK_SIGNAL_FUNC( on_tocedit_textg_field_changed),NULL); tmp=lookup_widget(gdrdao_mainwindow,TOCEDIT_TEXTG_COMPOSER); gtk_signal_handler_unblock_by_func(GTK_OBJECT(tmp),GTK_SIGNAL_FUNC( on_tocedit_textg_field_changed),NULL); return 0; }; gint gdrdao_translate_lmap(gint _no, gchar* _long, gchar* _short) { if(_long==NULL||_short==NULL) return 1; if(_no==9) { strcpy(_long,"English"); strcpy(_short,"EN"); return 0; }; /* default here */ strcpy(_long,"[Unknown]"); strcpy(_short,"NA"); return 1; };