void Text_File::Close() { //make sure no old data is left if (open) { printlog(2, "Text_File: closing file"); fclose (fp); Clear_List(); } }
bool Text_File::Read_Line () { //remove the old words Clear_List(); //the following actions goes false if end of file if (!Seek_First()) return false; if (!Line_To_Buffer()) return false; if (!Buffer_To_List()) return false; //ok return true; }
void Delete_VM_Files_Window::on_RB_Show_HDD_toggled( bool checked ) { static bool old = false; if( old == checked ) return; else old = checked; Clear_List(); for( int ix = 0; ix < File_List_Items.count(); ix++ ) { if( checked ) { if( File_List_Items[ix].Hard_Drive ) Add_To_Files_List( File_List_Items[ix] ); } else { Add_To_Files_List( File_List_Items[ix] ); } } }
void Delete_VM_Files_Window::Set_VM( Virtual_Machine *vm ) { if( vm == NULL ) { AQError( "void Delete_VM_Files_Window::Set_VM( Virtual_Machine *vm )", "vm == NULL" ); return; } // Clear List Clear_List(); VM_Name = vm->Get_Machine_Name(); File_List_Item tmp; // VM File VM_Path = vm->Get_VM_XML_File_Path(); // Screenshot if( Path_Valid(vm->Get_Screenshot_Path()) ) { tmp.Hard_Drive = false; tmp.Name = tr( "Screenshot" ); tmp.Path = vm->Get_Screenshot_Path(); File_List_Items << tmp; Add_To_Files_List( tmp ); } // FD0 if( Path_Valid(vm->Get_FD0().Get_File_Name()) ) { tmp.Hard_Drive = false; tmp.Name = tr( "Floppy A" ); tmp.Path = vm->Get_FD0().Get_File_Name(); File_List_Items << tmp; Add_To_Files_List( tmp ); } // FD1 if( Path_Valid(vm->Get_FD1().Get_File_Name()) ) { tmp.Hard_Drive = false; tmp.Name = tr( "Floppy B" ); tmp.Path = vm->Get_FD1().Get_File_Name(); File_List_Items << tmp; Add_To_Files_List( tmp ); } // CD-ROM if( Path_Valid(vm->Get_CD_ROM().Get_File_Name()) ) { tmp.Hard_Drive = false; tmp.Name = tr( "CD-ROM" ); tmp.Path = vm->Get_CD_ROM().Get_File_Name(); File_List_Items << tmp; Add_To_Files_List( tmp ); } // HDA if( Path_Valid(vm->Get_HDA().Get_File_Name()) ) { tmp.Hard_Drive = true; tmp.Name = tr( "HDA (Primary Master)" ); tmp.Path = vm->Get_HDA().Get_File_Name(); File_List_Items << tmp; Add_To_Files_List( tmp ); } // HDB if( Path_Valid(vm->Get_HDB().Get_File_Name()) ) { tmp.Hard_Drive = true; tmp.Name = tr( "HDB (Primary Slave)" ); tmp.Path = vm->Get_HDB().Get_File_Name(); File_List_Items << tmp; Add_To_Files_List( tmp ); } // HDC if( Path_Valid(vm->Get_HDC().Get_File_Name()) ) { tmp.Hard_Drive = true; tmp.Name = tr( "HDC (Secondary Master)" ); tmp.Path = vm->Get_HDC().Get_File_Name(); File_List_Items << tmp; Add_To_Files_List( tmp ); } // HDD if( Path_Valid(vm->Get_HDD().Get_File_Name()) ) { tmp.Hard_Drive = true; tmp.Name = tr( "HDD (Secondary Slave)" ); tmp.Path = vm->Get_HDD().Get_File_Name(); File_List_Items << tmp; Add_To_Files_List( tmp ); } // ROM File if( Path_Valid(vm->Get_ROM_File()) ) { tmp.Hard_Drive = false; tmp.Name = tr( "ROM File" ); tmp.Path = vm->Get_ROM_File(); File_List_Items << tmp; Add_To_Files_List( tmp ); } // MTDBlock File if( Path_Valid(vm->Get_MTDBlock_File()) ) { tmp.Hard_Drive = false; tmp.Name = tr( "MTDBlock File" ); tmp.Path = vm->Get_MTDBlock_File(); File_List_Items << tmp; Add_To_Files_List( tmp ); } // SD Card File if( Path_Valid(vm->Get_SecureDigital_File()) ) { tmp.Hard_Drive = false; tmp.Name = tr( "SD Card File" ); tmp.Path = vm->Get_SecureDigital_File(); File_List_Items << tmp; Add_To_Files_List( tmp ); } // PFlash File if( Path_Valid(vm->Get_PFlash_File()) ) { tmp.Hard_Drive = false; tmp.Name = tr( "PFlash File" ); tmp.Path = vm->Get_PFlash_File(); File_List_Items << tmp; Add_To_Files_List( tmp ); } // bzImage if( Path_Valid(vm->Get_bzImage_Path()) ) { tmp.Hard_Drive = false; tmp.Name = tr( "Kernel bzImage" ); tmp.Path = vm->Get_bzImage_Path(); File_List_Items << tmp; Add_To_Files_List( tmp ); } // Initrd if( Path_Valid(vm->Get_Initrd_Path()) ) { tmp.Hard_Drive = false; tmp.Name = tr( "Kernel Initrd" ); tmp.Path = vm->Get_Initrd_Path(); File_List_Items << tmp; Add_To_Files_List( tmp ); } // Serial Ports if( vm->Get_Serial_Ports().count() > 0 ) { QList<VM_Port> tmp_port = vm->Get_Serial_Ports(); for( int ix = 0; ix < tmp_port.count(); ix++ ) { if( tmp_port[ix].Get_Port_Redirection() == VM::PR_file ) { if( Path_Valid(tmp_port[ix].Get_Parametrs_Line()) ) { tmp.Hard_Drive = false; tmp.Name = tr( "Serial Port Redirection" ); tmp.Path = tmp_port[ix].Get_Parametrs_Line(); File_List_Items << tmp; Add_To_Files_List( tmp ); } } } } // Parallel Ports if( vm->Get_Parallel_Ports().count() > 0 ) { QList<VM_Port> tmp_port = vm->Get_Parallel_Ports(); for( int ix = 0; ix < tmp_port.count(); ix++ ) { if( tmp_port[ix].Get_Port_Redirection() == VM::PR_file ) { if( Path_Valid(tmp_port[ix].Get_Parametrs_Line()) ) { tmp.Hard_Drive = false; tmp.Name = tr( "Parallel Port Redirection" ); tmp.Path = tmp_port[ix].Get_Parametrs_Line(); File_List_Items << tmp; Add_To_Files_List( tmp ); } } } } // Storage Devices if( vm->Get_Storage_Devices_List().count() > 0 ) { QList<VM_Nativ_Storage_Device> tmp_dev = vm->Get_Storage_Devices_List(); for( int ix = 0; ix < tmp_dev.count(); ix++ ) { if( Path_Valid(tmp_dev[ix].Get_File_Path()) ) { if( tmp_dev[ix].Get_Media() == VM::DM_Disk ) tmp.Hard_Drive = true; else tmp.Hard_Drive = false; tmp.Name = tr( "Storage Device" ); tmp.Path = tmp_dev[ix].Get_File_Path(); File_List_Items << tmp; Add_To_Files_List( tmp ); } } } }
int AddListEntry(MENU *m, char *line, int pos) { int i,found=0,pfound=0; PLISTENTRY entr; char *ptr1,*ptr2,*ptr3,*ptr4, *wstr; if(!strlen(line)) { return 1; } //printf("AddListEntry: %s\n",line); wstr=strdup(line); if(m->num_entrys>=m->max_entrys) { if((m->list=realloc(m->list,(m->max_entrys+LIST_STEP)*sizeof(PLISTENTRY)))==NULL) { printf(NOMEM); Clear_List(m,0); free(wstr); return 0; } for(i=m->num_entrys; i<m->num_entrys+LIST_STEP; i++) { if((entr=calloc(1,sizeof(LISTENTRY)))==NULL) { printf(NOMEM); Clear_List(m,0); free(wstr); return -1; } m->list[i]=entr; } m->max_entrys+=LIST_STEP; } entr=m->list[m->num_entrys]; entr->underline=entr->stay=entr->showalways=0; for(i=TYP_MENU; !found && i<=TYP_SHELLRESOFF; i++) { ptr4=NULL; if((ptr1=strstr(wstr,TYPESTR[i]))==wstr) { ptr1=strchr(wstr,'='); ptr1++; ptr2=ptr1; while(*ptr2 && ((*ptr2=='*') || (*ptr2=='&') || (*ptr2==0302) || (*ptr2==0247) || (*ptr2=='+') || (*ptr2=='-') || (*ptr2=='!') || (*ptr2=='_'))) { switch(*ptr2) { case '*': entr->underline=1; break; case '!': entr->underline=2; break; case '+': entr->showalways=1; break; case '-': entr->showalways=2; break; case '&': entr->stay=1; break; case 0302: if (*(ptr2 + 1) != 0247) break; // UTF-8 value of paragraph symbol ptr2++; case 0247: entr->stay=2; break; } while(*(++ptr2)) { *(ptr2-1)=*ptr2; } *(ptr2-1)=0; ptr2=ptr1; } switch (i) { case TYP_EXECUTE: case TYP_MENUDON: case TYP_MENUDOFF: case TYP_MENUFON: case TYP_MENUFOFF: if((ptr2=strxchr(ptr1,','))!=NULL) { if((ptr4=strstr(ptr1,",ICON="))!=NULL) { *ptr4=0; } if((ptr4=strxchr(ptr2+1,','))!=NULL) { *ptr4=0; entr->message=strdup(ptr4+1); } } break; case TYP_MENU: if((ptr2=strstr(ptr1,",ICON="))!=NULL) { *ptr2=0; } if((ptr2=strxchr(ptr1,','))!=NULL) { *ptr2=0; entr->message=strdup(ptr2+1); } break; } switch (i) { case TYP_EXECUTE: case TYP_MENU: case TYP_COMMENT: entr->type=i; entr->entry=strdup(ptr1); entr->headerpos=pos; m->num_entrys++; found=1; break; case TYP_DEPENDON: case TYP_DEPENDOFF: case TYP_MENUDON: case TYP_MENUDOFF: case TYP_FILCONTON: case TYP_FILCONTOFF: case TYP_MENUFON: case TYP_MENUFOFF: if((ptr2=strstr(ptr1,",ICON="))!=NULL) { *ptr2=0; } if((ptr2=strxchr(ptr1,','))!=NULL) { if(i<TYP_EXECUTE) { ptr3=ptr2; } else { ptr2++; ptr3=strxchr(ptr2,','); ptr4=strxchr(ptr3+1,','); } if(ptr3!=NULL) { *ptr3=0; ptr3++; found=1; if(ptr4) { *ptr4=0; } if((i==TYP_FILCONTON) || (i==TYP_FILCONTOFF) || (i==TYP_MENUFON) || (i==TYP_MENUFOFF)) { pfound=FileContainText(ptr3); } else { pfound=ExistFile(ptr3); } if((((i==TYP_DEPENDON)||(i==TYP_MENUDON)||(i==TYP_FILCONTON)||(i==TYP_MENUFON)) && pfound) || (((i==TYP_DEPENDOFF)||(i==TYP_MENUDOFF)||(i==TYP_FILCONTOFF)||(i==TYP_MENUFOFF)) && !pfound)) { entr->type=(i<TYP_EXECUTE)?TYP_MENU:((strlen(ptr2))?TYP_EXECUTE:TYP_INACTIVE); entr->entry=strdup(ptr1); if(ptr4) { entr->message=strdup(ptr4+1); } entr->headerpos=pos; m->num_entrys++; } else { if(entr->showalways) { entr->type=TYP_INACTIVE; entr->entry=strdup(ptr1); entr->headerpos=pos; m->num_entrys++; } } } } break; case TYP_SHELLRESON: case TYP_SHELLRESOFF: case TYP_MENUSON: case TYP_MENUSOFF: if((ptr2=strstr(ptr1,",ICON="))!=NULL) { *ptr2=0; } if((ptr2=strxchr(ptr1,','))!=NULL) { if(i<TYP_EXECUTE) { ptr3=ptr2; } else { ptr2++; ptr3=strxchr(ptr2,','); ptr4=strxchr(ptr3+1,','); } if(ptr3!=NULL) { *ptr3=0; ptr3++; found=1; if(ptr4) { *ptr4=0; } pfound=system(ptr3); if((((i==TYP_SHELLRESON)||(i==TYP_MENUSON)) && !pfound) || (((i==TYP_SHELLRESOFF)||(i==TYP_MENUSOFF)) && pfound)) { entr->type=(i<TYP_EXECUTE)?TYP_MENU:((strlen(ptr2))?TYP_EXECUTE:TYP_INACTIVE); entr->entry=strdup(ptr1); if(ptr4) { entr->message=strdup(ptr4+1); } entr->headerpos=pos; m->num_entrys++; } else { if(entr->showalways) { entr->type=TYP_INACTIVE; entr->entry=strdup(ptr1); entr->headerpos=pos; m->num_entrys++; } } } } break; } if(found && (i != TYP_COMMENT) && (i != TYP_INACTIVE)) { m->num_active++; } } } free(wstr); return !found; }
int Clear_List(MENU *m, int mode) { int i; PLISTENTRY entr; if(m->menact) { free(m->menact); m->menact=NULL; } if(m->menactdep) { free(m->menactdep); m->menactdep=NULL; } if(m->max_entrys) { for(i=0; i<m->num_entrys; i++) { if(m->list[i]->entry) free(m->list[i]->entry); if(m->list[i]->message) free(m->list[i]->message); free(m->list[i]); } m->num_entrys=0; m->max_entrys=0; m->num_active=0; m->list=NULL; } switch(mode) { case 0: return 0; case 1: if((m->list=calloc(LIST_STEP,sizeof(PLISTENTRY)))==NULL) { printf(NOMEM); return -1; } for(i=0; i<LIST_STEP; i++) { if((entr=calloc(1,sizeof(LISTENTRY)))==NULL) { printf(NOMEM); Clear_List(m,0); return -1; } m->list[i]=entr; } m->max_entrys=LIST_STEP; break; case -1: if(m->num_headers && m->headertxt) { for(i=0; i<m->num_headers; i++) { free(m->headertxt[i]); } m->num_headers=0; m->list=NULL; } if(m->headertxt) { free(m->headertxt); m->headertxt=NULL; } break; } return 0; }
int Check_Config(void) { int rv=-1, level=0; char *pt1,*pt2; FSTRUCT fstr; if((fstr.fh[0]=fopen(CFG_FILE,"r"))!=NULL) { fstr.fnum=0; while(GetLine(line_buffer, BUFSIZE, &fstr)) { if(IsMenu(line_buffer)) { if(menu.num_headers>=menu.max_header) { if((menu.headertxt=realloc(menu.headertxt,(menu.max_header+LIST_STEP)*sizeof(char*)))==NULL) { printf(NOMEM); Clear_List(&menu,0); return rv; } memset(&menu.headertxt[menu.max_header],0,LIST_STEP*sizeof(char*)); if((menu.icon=realloc(menu.icon,(menu.max_header+LIST_STEP)*sizeof(char*)))==NULL) { printf(NOMEM); Clear_List(&menu,0); return rv; } memset(&menu.icon[menu.max_header],0,LIST_STEP*sizeof(char*)); if((menu.headerlevels=realloc(menu.headerlevels,(menu.max_header+LIST_STEP)*sizeof(int)))==NULL) { printf(NOMEM); Clear_List(&menu,0); return rv; } memset(&menu.headerlevels[menu.max_header],0,LIST_STEP*sizeof(int)); if((menu.headerwait=realloc(menu.headerwait,(menu.max_header+LIST_STEP)*sizeof(int)))==NULL) { printf(NOMEM); Clear_List(&menu,0); return rv; } memset(&menu.headerwait[menu.max_header],0,LIST_STEP*sizeof(int)); if((menu.headermed=realloc(menu.headermed,(menu.max_header+LIST_STEP)*sizeof(int)))==NULL) { printf(NOMEM); Clear_List(&menu,0); return rv; } memset(&menu.headermed[menu.max_header],0,LIST_STEP*sizeof(int)); if((menu.lastheaderentrys=realloc(menu.lastheaderentrys,(menu.max_header+LIST_STEP)*sizeof(int)))==NULL) { printf(NOMEM); Clear_List(&menu,0); return rv; } memset(&menu.lastheaderentrys[menu.max_header],0,LIST_STEP*sizeof(int)); menu.max_header+=LIST_STEP; } pt1=strchr(line_buffer,'='); if(!pt1) { pt1=line_buffer; } else { ++pt1; } pt2=pt1; while(*pt2 && ((*pt2=='*') || (*pt2=='&') || (*pt2==0302) || (*pt2==0247) || (*pt2=='+') || (*pt2=='-') || (*pt2=='!') || (*pt2=='_'))) { if(*pt2=='_') { menu.headermed[menu.num_headers]=1; } while(*(++pt2)) { *(pt2-1)=*pt2; } *(pt2-1)=0; pt2=pt1; } if(menu.icon[menu.num_headers]) { free(menu.icon[menu.num_headers]); menu.icon[menu.num_headers]=NULL; } if((pt2=strstr(pt1,",ICON="))!=NULL) { *pt2=0; menu.icon[menu.num_headers]=strdup(pt2+6); } if(menu.headertxt[menu.num_headers]) { free(menu.headertxt[menu.num_headers]); } menu.headerlevels[menu.num_headers]=level++; if((pt2=strxchr(pt1,','))!=NULL) { *pt2=0; } menu.headertxt[menu.num_headers++]=strdup(pt1); } else { if(strstr(line_buffer,TYPESTR[TYP_ENDMENU])==line_buffer) { --level; } else { int neutrinofont = Read_Neutrino_Cfg("font_file="); if(neutrinofont!=1 && strstr(line_buffer,"FONT=")==line_buffer) { strcpy(FONT,strchr(line_buffer,'=')+1); } if(strstr(line_buffer,"VFD=")==line_buffer) { strcpy(VFD,strchr(line_buffer,'=')+1); if(access(VFD,1)!=-1) vfd=1; } if(strstr(line_buffer,"FONTSIZE=")==line_buffer) { sscanf(strchr(line_buffer,'=')+1,"%d",&FSIZE_MED); } if(strstr(line_buffer,"MENUTIMEOUT=")==line_buffer) { sscanf(strchr(line_buffer,'=')+1,"%d",&mtmo); } if(strstr(line_buffer,"PAGING=")==line_buffer) { sscanf(strchr(line_buffer,'=')+1,"%d",&paging); } if(strstr(line_buffer,"LINESPP=")==line_buffer) { sscanf(strchr(line_buffer,'=')+1,"%d",&MAX_FUNCS); } if(strstr(line_buffer,"WIDTH=")==line_buffer) { sscanf(strchr(line_buffer,'=')+1,"%d",&ixw); } if(strstr(line_buffer,"HEIGHT=")==line_buffer) { sscanf(strchr(line_buffer,'=')+1,"%d",&iyw); } if(strstr(line_buffer,"HIGHT=")==line_buffer) { sscanf(strchr(line_buffer,'=')+1,"%d",&iyw); printf("shellexec::Check_Config: please use HEIGHT instead of HIGHT\n"); } if(strstr(line_buffer,"TIMESERVICE=")==line_buffer) { strcpy(url,strchr(line_buffer,'=')+1); if(strstr(url,"NONE") || strlen(url)<4) { *url=0; } } } } //printf("Check_Config: Level: %d -> %s\n",level,line_buffer); } rv=0; fclose(fstr.fh[fstr.fnum]); } FSIZE_BIG=(FSIZE_MED*5)/4; FSIZE_SMALL=(FSIZE_MED*4)/5; TABULATOR=2*FSIZE_MED; ixw=scale2res(ixw); iyw=scale2res(iyw); ixw=(ixw>(ex-sx))?(ex-sx):((ixw<scale2res(400))?scale2res(400):ixw); iyw=(iyw>(ey-sy))?(ey-sy):((iyw<scale2res(380))?scale2res(380):iyw); return rv; }
int main (int argc, char **argv) { int index=0,cindex=0,mainloop=1,dloop=1,tv, spr, resolution; char tstr[BUFSIZE]={0}, *rptr; PLISTENTRY pl; printf("%s Version %.2f\n", __plugin__, SH_VERSION); for(tv=1; tv<argc; tv++) { if(*argv[tv]=='/') { strcpy(CFG_FILE,argv[tv]); } } //init framebuffer before 1st scale2res fb = open(FB_DEVICE, O_RDWR); #ifdef MARTII if (fb < 0) fb = open(FB_DEVICE_FALLBACK, O_RDWR); #endif if(fb == -1) { perror(__plugin__ " <open framebuffer device>"); exit(1); } if(ioctl(fb, FBIOGET_FSCREENINFO, &fix_screeninfo) == -1) { perror(__plugin__ " <FBIOGET_FSCREENINFO>\n"); return -1; } if(ioctl(fb, FBIOGET_VSCREENINFO, &var_screeninfo) == -1) { perror(__plugin__ " <FBIOGET_VSCREENINFO>\n"); return -1; } #if defined(HAVE_SPARK_HARDWARE) || defined(HAVE_DUCKBOX_HARDWARE) var_screeninfo.xres = DEFAULT_XRES; var_screeninfo.yres = DEFAULT_YRES; #endif if(!(lfb = (uint32_t*)mmap(0, fix_screeninfo.smem_len, PROT_WRITE|PROT_READ, MAP_SHARED, fb, 0))) { perror(__plugin__ " <mapping of Framebuffer>\n"); return -1; } // read config ixw=scale2res(600), iyw=scale2res(680), xoffs=scale2res(13); if((line_buffer=calloc(BUFSIZE+1, sizeof(char)))==NULL) { printf(NOMEM); return -1; } if((trstr=calloc(BUFSIZE+1, sizeof(char)))==NULL) { printf(NOMEM); return -1; } spr=Read_Neutrino_Cfg("screen_preset")+1; resolution=Read_Neutrino_Cfg("osd_resolution"); if (resolution == -1) sprintf(trstr,"screen_StartX_%s", spres[spr]); else sprintf(trstr,"screen_StartX_%s_%d", spres[spr], resolution); if((sx=Read_Neutrino_Cfg(trstr))<0) sx=scale2res(100); if (resolution == -1) sprintf(trstr,"screen_EndX_%s", spres[spr]); else sprintf(trstr,"screen_EndX_%s_%d", spres[spr], resolution); if((ex=Read_Neutrino_Cfg(trstr))<0) ex=scale2res(1180); if (resolution == -1) sprintf(trstr,"screen_StartY_%s", spres[spr]); else sprintf(trstr,"screen_StartY_%s_%d", spres[spr], resolution); if((sy=Read_Neutrino_Cfg(trstr))<0) sy=scale2res(100); if (resolution == -1) sprintf(trstr,"screen_EndY_%s", spres[spr]); else sprintf(trstr,"screen_EndY_%s_%d", spres[spr], resolution); if((ey=Read_Neutrino_Cfg(trstr))<0) ey=scale2res(620); for(index=CMCST; index<=CMH; index++) { sprintf(trstr,"menu_%s_alpha",menucoltxt[index]); if((tv=Read_Neutrino_Cfg(trstr))>=0) tr[index]=255-(float)tv*2.55; sprintf(trstr,"menu_%s_blue",menucoltxt[index]); if((tv=Read_Neutrino_Cfg(trstr))>=0) bl[index]=(float)tv*2.55; sprintf(trstr,"menu_%s_green",menucoltxt[index]); if((tv=Read_Neutrino_Cfg(trstr))>=0) gn[index]=(float)tv*2.55; sprintf(trstr,"menu_%s_red",menucoltxt[index]); if((tv=Read_Neutrino_Cfg(trstr))>=0) rd[index]=(float)tv*2.55; } if(Read_Neutrino_Cfg("rounded_corners")>0) { radius = scale2res(11); radius_small = scale2res(5); } else radius = radius_small = 0; mtmo = Read_Neutrino_Cfg("timing.menu"); if (mtmo < 0) mtmo = 0; cindex=CMC; for(index=COL_MENUCONTENT_PLUS_0; index<=COL_MENUCONTENT_PLUS_3; index++) { rd[index]=rd[cindex]+25; gn[index]=gn[cindex]+25; bl[index]=bl[cindex]+25; tr[index]=tr[cindex]; cindex=index; } sprintf(trstr,"infobar_alpha"); if((tv=Read_Neutrino_Cfg(trstr))>=0) tr[COL_SHADOW_PLUS_0]=255-(float)tv*2.55; sprintf(trstr,"infobar_blue"); if((tv=Read_Neutrino_Cfg(trstr))>=0) bl[COL_SHADOW_PLUS_0]=(float)tv*2.55*0.4; sprintf(trstr,"infobar_green"); if((tv=Read_Neutrino_Cfg(trstr))>=0) gn[COL_SHADOW_PLUS_0]=(float)tv*2.55*0.4; sprintf(trstr,"infobar_red"); if((tv=Read_Neutrino_Cfg(trstr))>=0) rd[COL_SHADOW_PLUS_0]=(float)tv*2.55*0.4; for (index = 0; index <= COL_SHADOW_PLUS_0; index++) bgra[index] = (tr[index] << 24) | (rd[index] << 16) | (gn[index] << 8) | bl[index]; InitRC(); //InitVFD(); //init fontlibrary if((error = FT_Init_FreeType(&library))) { printf("%s <FT_Init_FreeType failed with Errorcode 0x%.2X>", __plugin__, error); munmap(lfb, fix_screeninfo.smem_len); return -1; } if((error = FTC_Manager_New(library, 1, 2, 0, &MyFaceRequester, NULL, &manager))) { printf("%s <FTC_Manager_New failed with Errorcode 0x%.2X>\n", __plugin__, error); FT_Done_FreeType(library); munmap(lfb, fix_screeninfo.smem_len); return -1; } if((error = FTC_SBitCache_New(manager, &cache))) { printf("%s <FTC_SBitCache_New failed with Errorcode 0x%.2X>\n", __plugin__, error); FTC_Manager_Done(manager); FT_Done_FreeType(library); munmap(lfb, fix_screeninfo.smem_len); return -1; } memset(&menu,0,sizeof(MENU)); if(Check_Config()) { printf("%s <Check_Config> Unable to read Config %s\n", __plugin__, CFG_FILE); FTC_Manager_Done(manager); FT_Done_FreeType(library); munmap(lfb, fix_screeninfo.smem_len); Clear_List(&menu,-1); free(line_buffer); return -1; } if((error = FTC_Manager_LookupFace(manager, FONT, &face))) { printf("%s <FTC_Manager_LookupFace failed with Errorcode 0x%.2X, trying default font>\n", __plugin__, error); if((error = FTC_Manager_LookupFace(manager, FONT2, &face))) { printf("%s <FTC_Manager_LookupFace failed with Errorcode 0x%.2X>\n", __plugin__, error); FTC_Manager_Done(manager); FT_Done_FreeType(library); munmap(lfb, fix_screeninfo.smem_len); return 2; } else desc.face_id = FONT2; } else desc.face_id = FONT; printf("%s <FTC_Manager_LookupFace Font \"%s\" loaded>\n", __plugin__, desc.face_id); use_kerning = FT_HAS_KERNING(face); desc.flags = FT_LOAD_RENDER | FT_LOAD_FORCE_AUTOHINT; //init backbuffer #if defined(HAVE_SPARK_HARDWARE) || defined(HAVE_DUCKBOX_HARDWARE) lbb = lfb + 1920 * 1080; fix_screeninfo.line_length = DEFAULT_XRES * sizeof(uint32_t); stride = DEFAULT_XRES; #else stride = fix_screeninfo.line_length/sizeof(uint32_t); if(stride == 7680 && var_screeninfo.xres == 1280) { var_screeninfo.yres = 1080; } if(!(lbb = malloc(var_screeninfo.xres*var_screeninfo.yres*sizeof(uint32_t)))) { printf("%s <allocating of Backbuffer failed>\n", __plugin__); FTC_Manager_Done(manager); FT_Done_FreeType(library); munmap(lfb, fix_screeninfo.smem_len); return -1; } #endif //lbb=lfb; #if defined(HAVE_SPARK_HARDWARE) || defined(HAVE_DUCKBOX_HARDWARE) FillRect(0, 0, DEFAULT_XRES, DEFAULT_YRES, 0); blit(); #else memset(lbb, TRANSP, var_screeninfo.xres*var_screeninfo.yres*sizeof(uint32_t)); memcpy(lfb, lbb, var_screeninfo.xres*var_screeninfo.yres*sizeof(uint32_t)); //blit(); #endif startx = sx; starty = sy; /* scale to resolution */ FSIZE_BIG = scale2res(FSIZE_BIG); FSIZE_MED = scale2res(FSIZE_MED); FSIZE_SMALL = scale2res(FSIZE_SMALL); TABULATOR = scale2res(TABULATOR); OFFSET_MED = scale2res(OFFSET_MED); OFFSET_SMALL = scale2res(OFFSET_SMALL); OFFSET_MIN = scale2res(OFFSET_MIN); /* Set up signal handlers. */ signal(SIGINT, quit_signal); signal(SIGTERM, quit_signal); signal(SIGQUIT, quit_signal); signal(SIGSEGV, quit_signal); index=0; if(vfd) { sprintf(tstr,"%s -c", VFD); system(tstr); } ShowInfo(&menu, 1); //main loop menu.act_entry=0; if(Get_Menu(1)) { printf("%s <unable to create menu>\n", __plugin__); FTC_Manager_Done(manager); FT_Done_FreeType(library); munmap(lfb, fix_screeninfo.smem_len); return -1; } cindex=0; put_instance(instance=get_instance()+1); while(mainloop) { cindex=Get_Selection(&menu); dloop=1; switch(cindex) { case -1: mainloop=0; break; case 0: mainloop=Menu_Up(&menu); break; case 1: pl=menu.list[menu.act_entry]; switch (pl->type) { case TYP_MENU: menu.act_header=pl->headerpos; menu.lastheaderentrys[menu.act_header]=menu.act_entry; menu.headerwait[menu.act_header]=pl->message!=NULL; if(menu.headerwait[menu.act_header]) { strcpy(tstr,pl->entry); if((rptr=strxchr(tstr,','))!=NULL) { *rptr=0; } ShowMessage(tstr, pl->message, 0); } Get_Menu(0); menu.act_entry=0; break; case TYP_EXECUTE: if((rptr=strxchr(pl->entry,','))!=NULL) { strcpy(tstr,pl->entry); rptr=strxchr(tstr,','); *rptr=0; rptr=strxchr(pl->entry,','); rptr++; if(pl->stay) { if(pl->stay==1) { if(pl->message) { if(strlen(pl->message)) { ShowMessage(tstr, pl->message, 0); } } else { ShowMessage(tstr, "Bitte warten", 0); } } else { #if defined(HAVE_SPARK_HARDWARE) || defined(HAVE_DUCKBOX_HARDWARE) FillRect(0, 0, DEFAULT_XRES, DEFAULT_YRES, 0); blit(); #else memset(lbb, TRANSP, var_screeninfo.xres*var_screeninfo.yres*sizeof(uint32_t)); memcpy(lfb, lbb, var_screeninfo.xres*var_screeninfo.yres*sizeof(uint32_t)); //blit(); #endif } if(*(rptr+strlen(rptr)-1)=='&') { *(rptr+strlen(rptr)-1)=0; } } else { if(*(rptr+strlen(rptr)-1)!='&') { sprintf(tstr,"%s &",rptr); rptr=tstr; } } CloseRC(); system(rptr); InitRC(); mainloop= pl->stay==1; if(pl->stay==1) { Get_Menu(1); } } break; } } } //cleanup Clear_List(&menu,-1); FTC_Manager_Done(manager); FT_Done_FreeType(library); #if 0 if(strlen(url)) { sprintf(line_buffer,"/sbin/rdate -s %s > /dev/null &",url); system(line_buffer); } #endif CloseRC(); //CloseVFD(); free(line_buffer); free(trstr); // clear Display #if defined(HAVE_SPARK_HARDWARE) || defined(HAVE_DUCKBOX_HARDWARE) FillRect(0, 0, DEFAULT_XRES, DEFAULT_YRES, 0); blit(); #else memset(lbb, TRANSP, var_screeninfo.xres*var_screeninfo.yres*sizeof(uint32_t)); memcpy(lfb, lbb, var_screeninfo.xres*var_screeninfo.yres*sizeof(uint32_t)); //blit(); #endif munmap(lfb, fix_screeninfo.smem_len); close(fb); #if !defined(MARTII) && !defined(HAVE_SPARK_HARDWARE) && !defined(HAVE_DUCKBOX_HARDWARE) free(lbb); #endif put_instance(get_instance()-1); return 0; }
int Get_Menu(int showwait) { int rv=-1, loop=1, mlevel=0, clevel=0, pos=0; char *pt1,*pt2; FSTRUCT fstr; if(showwait && menu.headerwait[menu.act_header] && menu.headertxt[menu.act_header]) { ShowMessage(menu.headertxt[menu.act_header],"Bitte warten ...",0); } Clear_List(&menu,1); if((fstr.fh[0]=fopen(CFG_FILE,"r"))!=NULL) { loop=1; menu.num_active=0; fstr.fnum=0; while((loop==1) && GetLine(line_buffer, BUFSIZE, &fstr)) { if(IsMenu(line_buffer)) { if(pos==menu.act_header) { clevel=menu.headerlevels[pos]; loop=0; } mlevel++; pos++; } else { pt1=strstr(line_buffer,TYPESTR[TYP_ENDMENU]); if(pt1 && (pt1==line_buffer)) { mlevel--; } } //printf("Get_Menu: loop: %d, mlevel: %d, pos: %d -> %s\n",loop,mlevel,pos,line_buffer); } if(loop) { return rv; } --pos; --mlevel; loop=1; while((loop==1) && GetLine(line_buffer, BUFSIZE, &fstr)) { if(IsMenu(line_buffer)) { pos++; if(mlevel==clevel) { AddListEntry(&menu, line_buffer, pos); rv=0; } mlevel++; } pt1=strstr(line_buffer,TYPESTR[TYP_ENDMENU]); if(pt1 && (pt1==line_buffer)) { if(mlevel==clevel) { if((pt1=strchr(line_buffer,'='))!=NULL) { pt1++; if((pt2=strxchr(pt1,','))!=NULL) { *(pt2++)=0; menu.menactdep=strdup(pt2); } menu.menact=strdup(pt1); } } mlevel--; } else { if(mlevel==clevel) { AddListEntry(&menu, line_buffer, pos); rv=0; } } if(mlevel<clevel) { loop=0; } } fclose(fstr.fh[fstr.fnum]); } return rv; }
CTLinkedList<T>::~CTLinkedList() { Clear_List(); }