summary refs log tree commit diff stats
path: root/src/fe-gtk/gtkutil.h
blob: 65b5c079965a77641d8a6e07b413dd8c7a7e2e87 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <gtk/gtktreeview.h>
#include <gtk/gtktreemodel.h>

typedef void (*filereqcallback) (void *, char *file);

#define FRF_WRITE 1
#define FRF_MULTIPLE 2
#define FRF_ADDFOLDER 4
#define FRF_CHOOSEFOLDER 8
#define FRF_FILTERISINITIAL 16
#define FRF_NOASKOVERWRITE 32

void gtkutil_file_req (const char *title, void *callback, void *userdata, char *filter, char *extensions, int flags);
void gtkutil_destroy (GtkWidget * igad, GtkWidget * dgad);
GtkWidget *gtkutil_button (GtkWidget *box, char *stock, char *tip, void *callback,
				 void *userdata, char *labeltext);
void gtkutil_label_new (char *text, GtkWidget * box);
GtkWidget *gtkutil_entry_new (int max, GtkWidget * box, void *callback,
										gpointer userdata);
GtkWidget *gtkutil_clist_new (int columns, char *titles[], GtkWidget * box,
										int policy, void *select_callback,
										gpointer select_userdata,
										void *unselect_callback,
										gpointer unselect_userdata, int selection_mode);
int gtkutil_clist_selection (GtkWidget * clist);
int gtkutil_clist_multiple_selection (GtkWidget * clist,
													int ** rows, const int max_rows);
void add_tip (GtkWidget * wid, char *text);
void show_and_unfocus (GtkWidget * wid);
void gtkutil_set_icon (GtkWidget *win);
GtkWidget *gtkutil_window_new (char *title, char *role, int width, int height, int flags);
void gtkutil_copy_to_clipboard (GtkWidget *widget, GdkAtom selection,
                                const gchar *str);
GtkWidget *gtkutil_treeview_new (GtkWidget *box, GtkTreeModel *model,
                                 GtkTreeCellDataFunc mapper, ...);
gboolean gtkutil_treemodel_string_to_iter (GtkTreeModel *model, gchar *pathstr, GtkTreeIter *iter_ret);
gboolean gtkutil_treeview_get_selected_iter (GtkTreeView *view, GtkTreeIter *iter_ret);
gboolean gtkutil_treeview_get_selected (GtkTreeView *view, GtkTreeIter *iter_ret, ...);
n class="n">ret[strlen(text)]=0; for (i=0;i<strlen(text);i++) ret[i]=toupper(text[i]); //printf("Result: %s\n",ret); return ret; } struct tagInfo getOggHeader(char *file){ //if (DEBUG==1) putlog("reading ogg header"); char header[4096]; int i, c; int h1pos, h3pos, maxBr, nomBr, minBr, pos, count, tagLen; char *sub; char *name; char *val; char *HEADLOC1, *HEADLOC3, *HEADLOC5; FILE *f; struct tagInfo info; info.artist=NULL; f = fopen(file,"rb"); if (f==NULL){ hexchat_print(ph,"file not found while trying to read ogg header"); //if (DEBUG==1) putlog("file not found while trying to read ogg header"); return info; } for (i=0;i<4095;i++) {c=fgetc(f);header[i]=(char)c;} fclose(f); HEADLOC1="_vorbis"; HEADLOC1[0]=1; HEADLOC3="_vorbis"; HEADLOC3[0]=3; HEADLOC5="_vorbis"; HEADLOC5[0]=5; h1pos=inStr(header,4096,HEADLOC1); h3pos=inStr(header,4096,HEADLOC3); //int h5pos=inStr(header,4096,HEADLOC5); //not needed //printf("loc1: %i\n",h1pos);printf("loc3: %i\n",h3pos);printf("loc5: %i\n",h5pos); maxBr=getOggInt(header,h1pos+7+9,4); nomBr=getOggInt(header,h1pos+7+13,4); minBr=getOggInt(header,h1pos+7+17,4); info.freq=getOggInt(header,h1pos+7+5,4); info.mode=header[h1pos+7+4]; info.bitrate=nomBr; if (((maxBr==nomBr)&&(nomBr=minBr))||((minBr==0)&&(maxBr==0))||((minBr=-1)&&(maxBr=-1)) )info.cbr=1;else info.cbr=0; printf("bitrates: %i|%i|%i\n",maxBr,nomBr,minBr); printf("freq: %i\n",info.freq); pos=h3pos+7; pos+=getOggInt(header,pos,4)+4; count=getOggInt(header,pos,4); //printf("tags: %i\n",count); pos+=4; info.artist=NULL;info.title=NULL;info.album=NULL;info.comment=NULL;info.genre=NULL; for (i=0;i<count;i++){ tagLen=getOggInt(header,pos,4); //printf("taglength: %i\n",tagLen); sub=substring(header,pos+4,tagLen); name=upperStr(substring(sub,0,inStr(sub,tagLen,"="))); val=substring(sub,inStr(sub,tagLen,"=")+1,tagLen-inStr(sub,tagLen,"=")-1); //printf("Tag: %s\n",sub); //printf("Name: %s\n",name); //printf("value: %s\n",val); if (strcmp(name,"ARTIST")==0) info.artist=val; if (strcmp(name,"TITLE")==0) info.title=val; if (strcmp(name,"ALBUM")==0) info.album=val; if (strcmp(name,"GENRE")==0) info.genre=val; if (strcmp(name,"COMMENT")==0) info.comment=val; pos+=4+tagLen; } if (info.artist==NULL) info.artist=""; if (info.album==NULL) info.album =""; if (info.title==NULL) info.title=""; if (info.genre==NULL) info.genre=""; if (info.comment==NULL) info.comment=""; printf("Artist: %s\nTitle: %s\nAlbum: %s\n",info.artist,info.title, info.album); printf("Genre: %s\nComment: %s\nMode: %i\nCBR: %i\n",info.genre,info.comment,info.mode,info.cbr); //if (DEBUG==1) putlog("ogg header readed"); return info; } /* void printOggInfo(char *file){ printf("Scanning Ogg-File for Informations: %s\n",file); printf("size:\t%10d byte\n",getSize(file)); struct tagInfo info = getOggHeader(file); } */