#include #include #include #include #define WINWIDTH 1024 #define WINHEIGHT 800 typedef struct _videostruct { AVFormatContext *pFormatCtx; } VideoStruct; VideoStruct *vidst; typedef struct _guistruct { AG_Window *win; AG_Menu *mainmenu; AG_MenuItem *file; SDL_Surface *screen; } GUIStruct; GUIStruct *guist; void openRealFile(AG_Event *e) { // apparently you have to use *event to use the macros right char *filename = e->argv[1].s; // s for String if(av_open_input_file(&vidst->pFormatCtx, filename, NULL, 0, NULL)!=0) { printf("FAILURE\n"); exit(1); } } void openFile(AG_Event *event) { AG_FileDlg *filedlg; AG_Window *filewin; GUIStruct *gui=guist; filewin = AG_WindowNew(0); filedlg = AG_FileDlgNew(filewin, AG_FILEDLG_EXPAND); AG_FileDlgSetDirectory(filedlg, "/home/stdrange"); // BAD! BAD CODER! AG_SetEvent(filedlg, "file-chosen", openRealFile, NULL); AG_WindowShow(filewin); return; } void exitProgram(AG_Event *e) { // exit exit(0); } int main(int argc, char **argv) { VideoStruct *is; GUIStruct *gui; if(AG_InitCore("hello", 0) == -1 || AG_InitVideo(WINWIDTH,WINHEIGHT,32,AG_VIDEO_RESIZABLE) == -1) { return(1); } AG_InitInput(0); gui = av_mallocz(sizeof(GUIStruct)); // open our main window gui->win = AG_WindowNew(AG_WINDOW_NOMINIMIZE | AG_WINDOW_NOCLOSE); gui->mainmenu = AG_MenuNew(gui->win, AG_MENU_HFILL); gui->file = AG_MenuAddItem(gui->mainmenu, "File"); AG_MenuAction(gui->file, "Open...", -1, openFile, NULL); AG_MenuAction(gui->file, "Exit", -1, exitProgram, NULL); AG_WindowShow(gui->win); gui->screen = SDL_CreateRGBSurface(SDL_HWSURFACE, 300, 200, 32, 0, 0, 0, 0); AG_PixmapFromSurface(gui->win, 0, gui->screen); av_register_all(); is = av_mallocz(sizeof(VideoStruct)); vidst = is; guist = gui; AG_WindowSetGeometry(gui->win, 0, 0, WINWIDTH - 40, WINHEIGHT - 40); AG_WindowSetCaption(gui->win, "sublime test02"); AG_EventLoop(); }