void acopt_ondraw(void * x){ ACONTROLP ctl= (ACONTROLP) x; ACOPTDP d = (ACOPTDP) ctl->d; CANVAS * pc = &ctl->win->c; acopt_redraw(ctl); if (d->invalidDrawItem!=-1){ d->touchedItem = d->invalidDrawItem; acopt_redrawitem(ctl,d->invalidDrawItem); d->invalidDrawItem=-1; } //-- Init Device Pixel Size int minpadding = 2; int agdp3 = (agdp()*minpadding); int agdp6 = (agdp()*(minpadding*2)); int agdpX = agdp6; ag_draw(pc,&d->control,ctl->x,ctl->y); // ag_draw_ex(pc,&d->client,ctl->x+agdp3,ctl->y+1,0,d->scrollY+1,ctl->w-agdp6,ctl->h-2); ag_draw_ex(pc,&d->client,ctl->x+agdp(),ctl->y+1,0,d->scrollY+1,ctl->w-(agdp()*2),ctl->h-2); if (d->maxScrollY>0){ //-- Glow int i; byte isST=(d->scrollY>0)?1:0; byte isSB=(d->scrollY<d->maxScrollY)?1:0; int add_t_y = 1; for (i=0;i<agdpX;i++){ byte alph = 255-round((((float) (i+1))/ ((float) agdpX))*230); if (isST) ag_rectopa(pc,ctl->x,ctl->y+i+add_t_y,ctl->w,1,acfg()->textbg,alph); if (isSB) ag_rectopa(pc,ctl->x,((ctl->y+ctl->h)-(add_t_y))-(i+1),ctl->w,1,acfg()->textbg,alph); } //-- Scrollbar int newh = ctl->h - agdp6; float scrdif = ((float) newh) / ((float) d->client.h); int scrollbarH = round(scrdif * newh); int scrollbarY = round(scrdif * d->scrollY) + agdp3; if (d->scrollY<0){ scrollbarY = agdp3; int alp = (1.0 - (((float) abs(d->scrollY)) / (((float) ctl->h)/4))) * 255; if (alp<0) alp = 0; ag_rectopa(pc,(ctl->w-agdp()-2)+ctl->x,scrollbarY+ctl->y,agdp(),scrollbarH,acfg()->scrollbar, alp); } else if (d->scrollY>d->maxScrollY){ scrollbarY = round(scrdif * d->maxScrollY) + agdp3; int alp = (1.0 - (((float) abs(d->scrollY-d->maxScrollY)) / (((float) ctl->h)/4))) * 255; if (alp<0) alp = 0; ag_rectopa(pc,(ctl->w-agdp()-2)+ctl->x,scrollbarY+ctl->y,agdp(),scrollbarH,acfg()->scrollbar, alp); } else{ ag_rect(pc,(ctl->w-agdp()-2)+ctl->x,scrollbarY+ctl->y,agdp(),scrollbarH,acfg()->scrollbar); } } }
void aw_textdialog(AWINDOWP parent,char * title,char * text,char * ok_text){ CANVAS * tmpc = aw_muteparent(parent); on_dialog_window = 1; ag_rectopa(agc(),0,0,agw(),agh(),0x0000,180); ag_sync(); int elmP = agdp()*4; int winP = agdp()*4; int winW = agw() - (winP*2); int winH = (agh() / 2) + (winP*4); int winX = winP; int winY = (agh() / 2) - (winH/2); int titW = ag_txtwidth(title,1); int capH = ag_fontheight(1) + (elmP*2); int btnH = agdp()*20; int txtH = winH - (btnH + capH + (elmP*3)); int txtY = winY + capH + elmP; int btnY = txtY + txtH + elmP; int btnW = (winW/2) - elmP; int btnX = winX + ((winW/2) - (btnW/2)); int txtX = winX + elmP; int txtW = winW - (elmP*2); CANVAS alertbg; ag_canvas(&alertbg,agw(),agh()); ag_draw(&alertbg,agc(),0,0); ag_roundgrad(&alertbg,winX,winY,winW,winH,acfg_var.border,acfg_var.border_g,acfg_var.roundsz*agdp()); ag_roundgrad(&alertbg,winX+1,winY+1,winW-2,winH-2,acfg_var.winbg,acfg_var.winbg_g,(acfg_var.roundsz*agdp())-1); ag_roundgrad_ex(&alertbg,winX+1,winY+1,winW-2,capH-1,acfg_var.titlebg,acfg_var.titlebg_g,(acfg_var.roundsz*agdp())-1,1,1,0,0); ag_textf(&alertbg,titW,((agw()/2)-(titW/2))+1,winY+elmP+1,title,acfg_var.titlebg_g,1); ag_text(&alertbg,titW,(agw()/2)-(titW/2),winY+elmP,title,acfg_var.titlefg,1); AWINDOWP hWin = aw(&alertbg); actext(hWin,txtX,txtY,txtW,txtH,text,0); acbutton(hWin,btnX,btnY,btnW,btnH,(ok_text==NULL?acfg_var.text_ok:ok_text),0,5); aw_show(hWin); byte ondispatch = 1; while(ondispatch){ dword msg=aw_dispatch(hWin); switch (aw_gm(msg)){ case 5: ondispatch = 0; break; } } aw_destroy(hWin); ag_ccanvas(&alertbg); on_dialog_window = 0; aw_unmuteparent(parent,tmpc); }
char *auifav(AWINDOWP parent, char *path) { //-- Mute Parent CANVAS *tmpc = aw_muteparent(parent); aw_set_on_dialog(2); ag_rectopa(agc(), 0, 0, agw(), agh(), 0x0000, 180); ag_sync(); //-- Initializing Canvas CANVAS favbg; ag_canvas(&favbg, agw(), agh()); ag_draw(&favbg, agc(), 0, 0); //-- Init Sizes int winY = agh() - round(agh() / 1.618); int winH = agh() - winY; int titH = agdp() * 24; // (agdp()*6) + ag_fontheight(1); int boxY = winY + titH; int boxH = winH - titH; //-- Draw Title ag_roundgrad_ex(&favbg, 0, winY, agw(), titH, acfg()->navbg, acfg()->navbg_g, 0, 0, 0, 0, 0); //-- Draw Main Window ag_roundgrad_ex(&favbg, 0, boxY, agw(), boxH, acfg()->navbg, acfg()->navbg_g, 0, 0, 0, 0, 0); byte first = 1; char *out_char = NULL; while (auifav_win (&favbg, path, &out_char, winY, titH, boxY, boxH, first)) { first = 0; } //-- Cleanup Canvas ag_ccanvas(&favbg); //-- Unmute Parent aw_set_on_dialog(0); aw_unmuteparent(parent, tmpc); return out_char; }
byte aw_confirm(AWINDOWP parent, char * titlev,char * textv,char * img,char * yes_text,char * no_text){ CANVAS * tmpc = aw_muteparent(parent); //-- Set Mask on_dialog_window = 1; ag_rectopa(agc(),0,0,agw(),agh(),0x0000,180); ag_sync(); char title[64]; char text[512]; snprintf(title,64,"%s",titlev); snprintf(text,512,"%s",textv); int pad = agdp()*4; int winW = agw()-(pad*2); int txtW = winW-(pad*2); int txtX = pad*2; int btnH = agdp()*20; int titW = ag_txtwidth(title,1); int titH = ag_fontheight(1) + (pad*2); PNGCANVASP winp = atheme("img.dialog"); PNGCANVASP titp = atheme("img.dialog.titlebar"); APNG9 winv; APNG9 titv; int vtitY = -1; int vpadB = -1; int vimgX = pad*2; if (titp!=NULL){ if (apng9_calc(titp,&titv,1)){ int tmptitH = titH - (pad*2); titH = tmptitH + (titv.t+titv.b); vtitY = titv.t; } } if (winp!=NULL){ if (apng9_calc(winp,&winv,1)){ txtW = winW - (winv.l+winv.r); txtX = pad + (winv.l); vimgX= pad + (winv.l); vpadB= winv.b; } } //-- Load Icon PNGCANVAS ap; byte imgE = 0; int imgW = 0; int imgH = 0; if (apng_load(&ap,img)){ imgE = 1; imgW = min(ap.w,agdp()*30); imgH = min(ap.h,agdp()*30); int imgA = pad + imgW; txtX += imgA; txtW -= imgA; } int txtH = ag_txtheight(txtW,text,0); int infH = ((imgE)&&(txtH<imgH))?imgH:txtH; //-- Calculate Window Size & Position int winH = titH + infH + btnH + (pad*3); if (vpadB!=-1){ winH = titH + infH + btnH + (pad*2) + vpadB; } int winX = pad; int winY = (agh()/2) - (winH/2); //-- Calculate Title Size & Position int titX = (agw()/2) - (titW/2); int titY = winY + pad; if (vtitY!=-1) titY = winY+vtitY; //-- Calculate Text Size & Position int infY = winY + titH + pad; int txtY = infY + ((infH - txtH) / 2); int imgY = infY; //-- Calculate Button Size & Position int btnW = (txtW / 2) - (pad/2); int btnY = infY+infH+pad; int btnX = txtX; int btnX2 = txtX+(txtW/2)+(pad/2); //-- Initializing Canvas CANVAS alertbg; ag_canvas(&alertbg,agw(),agh()); ag_draw(&alertbg,agc(),0,0); //-- Draw Window if (!atheme_draw("img.dialog", &alertbg, winX-1,winY-1,winW+2,winH+2)){ ag_roundgrad(&alertbg,winX-1,winY-1,winW+2,winH+2,acfg_var.border,acfg_var.border_g,(acfg_var.roundsz*agdp())+1); ag_roundgrad(&alertbg,winX,winY,winW,winH,acfg_var.dialogbg,acfg_var.dialogbg_g,acfg_var.roundsz*agdp()); } //-- Draw Title if (!atheme_draw("img.dialog.titlebar", &alertbg, winX,winY,winW,titH)){ ag_roundgrad_ex(&alertbg,winX,winY,winW,titH,acfg_var.dlgtitlebg,acfg_var.dlgtitlebg_g,acfg_var.roundsz*agdp(),1,1,0,0); } ag_textf(&alertbg,titW,titX+1,titY+1,title,acfg_var.dlgtitlebg_g,1); ag_text(&alertbg,titW,titX,titY,title,acfg_var.dlgtitlefg,1); //-- Draw Image if (imgE){ apng_draw_ex(&alertbg,&ap,vimgX,imgY,0,0,imgW,imgH); apng_close(&ap); } //-- Draw Text ag_textf(&alertbg,txtW,txtX+1,txtY+1,text,acfg_var.dialogbg,0); ag_text(&alertbg,txtW,txtX,txtY,text,acfg_var.dialogfg,0); AWINDOWP hWin = aw(&alertbg); acbutton(hWin,btnX,btnY,btnW,btnH,(yes_text==NULL?acfg_var.text_yes:yes_text),0,6); acbutton(hWin,btnX2,btnY,btnW,btnH,(no_text==NULL?acfg_var.text_no:no_text),0,5); aw_show(hWin); byte ondispatch = 1; byte res = 0; while(ondispatch){ dword msg=aw_dispatch(hWin); switch (aw_gm(msg)){ case 6: res=1; ondispatch = 0; break; case 5: ondispatch = 0; break; } } aw_destroy(hWin); ag_ccanvas(&alertbg); on_dialog_window = 0; aw_unmuteparent(parent,tmpc); return res; }
void aw_textdialog(AWINDOWP parent,char * titlev,char * text,char * ok_text){ // actext(hWin,txtX,txtY,txtW,txtH,text,0); CANVAS * tmpc = aw_muteparent(parent); //-- Set Mask on_dialog_window = 1; ag_rectopa(agc(),0,0,agw(),agh(),0x0000,180); ag_sync(); char title[64]; snprintf(title,64,"%s",titlev); int pad = agdp()*4; int winW = agw()-(pad*2); int txtW = winW-(pad*2); int txtX = pad*2; int btnH = agdp()*20; int titW = ag_txtwidth(title,1); int titH = ag_fontheight(1) + (pad*2); PNGCANVASP winp = atheme("img.dialog"); PNGCANVASP titp = atheme("img.dialog.titlebar"); APNG9 winv; APNG9 titv; int vtitY = -1; int vpadB = pad; int vimgX = pad*2; if (titp!=NULL){ if (apng9_calc(titp,&titv,1)){ int tmptitH = titH - (pad*2); titH = tmptitH + (titv.t+titv.b); vtitY = titv.t; } } if (winp!=NULL){ if (apng9_calc(winp,&winv,1)){ txtW = winW - (winv.l+winv.r); txtX = pad + (winv.l); vimgX= pad + (winv.l); vpadB= winv.b; } } byte imgE = 0; int imgW = 0; int imgH = 0; int txtH = agh()/2; int infH = txtH; //-- Calculate Window Size & Position int winH = titH + infH + btnH + (pad*2) + vpadB; int winX = pad; int winY = (agh()/2) - (winH/2); //-- Calculate Title Size & Position int titX = (agw()/2) - (titW/2); int titY = winY + pad; if (vtitY!=-1) titY = winY+vtitY; //-- Calculate Text Size & Position int infY = winY + titH + pad; int txtY = infY; //-- Calculate Button Size & Position int btnW = winW / 2; int btnY = infY+infH+pad; int btnX = (agw()/2) - (btnW/2); //-- Initializing Canvas CANVAS alertbg; ag_canvas(&alertbg,agw(),agh()); ag_draw(&alertbg,agc(),0,0); //-- Draw Window if (!atheme_draw("img.dialog", &alertbg, winX,winY,winW,winH)){ ag_roundgrad(&alertbg,winX-1,winY-1,winW+2,winH+2,acfg_var.border,acfg_var.border_g,(acfg_var.roundsz*agdp())+1); ag_roundgrad(&alertbg,winX,winY,winW,winH,acfg_var.dialogbg,acfg_var.dialogbg_g,acfg_var.roundsz*agdp()); } //-- Draw Title if (!atheme_draw("img.dialog.titlebar", &alertbg, winX,winY,winW,titH)){ ag_roundgrad_ex(&alertbg,winX,winY,winW,titH,acfg_var.dlgtitlebg,acfg_var.dlgtitlebg_g,acfg_var.roundsz*agdp(),1,1,0,0); } ag_textf(&alertbg,titW,titX+1,titY+1,title,acfg_var.dlgtitlebg_g,1); ag_text(&alertbg,titW,titX,titY,title,acfg_var.dlgtitlefg,1); AWINDOWP hWin = aw(&alertbg); actext(hWin,txtX,txtY,txtW,txtH,text,0); ACONTROLP okbtn=acbutton(hWin,btnX,btnY,btnW,btnH,(ok_text==NULL?acfg_var.text_ok:ok_text),0,5); aw_show(hWin); aw_setfocus(hWin,okbtn); byte ondispatch = 1; while(ondispatch){ dword msg=aw_dispatch(hWin); switch (aw_gm(msg)){ case 5: ondispatch = 0; break; } } aw_destroy(hWin); ag_ccanvas(&alertbg); on_dialog_window = 0; aw_unmuteparent(parent,tmpc); }
void actext_ondraw(void * x){ ACONTROLP ctl= (ACONTROLP) x; ACTEXTDP d = (ACTEXTDP) ctl->d; CANVAS * pc = &ctl->win->c; //-- Init Device Pixel Size int minpadding = max(acfg()->roundsz,4); int agdp3 = (agdp()*minpadding); int agdp6 = (agdp()*(minpadding*2)); int agdpX = agdp6; if ((d->focused)&&(!d->isFixedText)){ ag_draw(pc,&d->control_focused,ctl->x,ctl->y); ag_draw_ex(pc,&d->client,ctl->x+agdp3,ctl->y+agdp(),0,d->scrollY+agdp(),ctl->w-agdp6,ctl->h-(agdp()*2)); } else{ ag_draw(pc,&d->control,ctl->x,ctl->y); ag_draw_ex(pc,&d->client,ctl->x+agdp3,ctl->y+1,0,d->scrollY+1,ctl->w-agdp6,ctl->h-2); } if ((d->maxScrollY>0)||(d->forceGlowTop)){ //-- Glow int i; byte isST=(d->scrollY>=agdp3)?1:0; byte isSB=(d->scrollY<=d->maxScrollY-agdp3)?1:0; if (d->forceGlowTop) isST=1; int add_t_y = 1; if (d->focused) add_t_y = agdp(); for (i=0;i<agdpX;i++){ byte alph = 255-round((((float) (i+1))/ ((float) agdpX))*230); if (isST) ag_rectopa(pc,ctl->x+agdp3,ctl->y+i+add_t_y,ctl->w-agdpX,1,acfg()->textbg,alph); if (isSB) ag_rectopa(pc,ctl->x+agdp3,(ctl->y+ctl->h)-(i+1)-add_t_y,ctl->w-agdpX,1,acfg()->textbg,alph); } if (d->maxScrollY>0){ //-- Scrollbar int newh = ctl->h - agdp6; float scrdif = ((float) newh) / ((float) d->client.h); int scrollbarH = round(scrdif * newh); int scrollbarY = round(scrdif * d->scrollY) + agdp3; if (d->scrollY<0){ scrollbarY = agdp3; int alp = (1.0 - (((float) abs(d->scrollY)) / (((float) ctl->h)/4))) * 255; if (alp<0) alp = 0; ag_rectopa(pc,(ctl->w-agdp()-2)+ctl->x,scrollbarY+ctl->y,agdp(),scrollbarH,acfg()->scrollbar, alp); } else if (d->scrollY>d->maxScrollY){ scrollbarY = round(scrdif * d->maxScrollY) + agdp3; int alp = (1.0 - (((float) abs(d->scrollY-d->maxScrollY)) / (((float) ctl->h)/4))) * 255; if (alp<0) alp = 0; ag_rectopa(pc,(ctl->w-agdp()-2)+ctl->x,scrollbarY+ctl->y,agdp(),scrollbarH,acfg()->scrollbar, alp); } else{ ag_rect(pc,(ctl->w-agdp()-2)+ctl->x,scrollbarY+ctl->y,agdp(),scrollbarH,acfg()->scrollbar); } } } }
/* * Descriptions: * ------------- * AROMA File Manager : Permission File * */ byte auido_setperm(AWINDOWP parent,char * path, char * fn) { struct stat fst; byte buf[12]; memset(buf,0,12); if (!stat(path, &fst)) { buf[11] = (fst.st_mode & S_IXOTH) ? 1 : 0; buf[10] = (fst.st_mode & S_IWOTH) ? 1 : 0; buf[9] = (fst.st_mode & S_IROTH) ? 1 : 0; buf[8] = (fst.st_mode & S_IXGRP) ? 1 : 0; buf[7] = (fst.st_mode & S_IWGRP) ? 1 : 0; buf[6] = (fst.st_mode & S_IRGRP) ? 1 : 0; buf[5] = (fst.st_mode & S_IXUSR) ? 1 : 0; buf[4] = (fst.st_mode & S_IWUSR) ? 1 : 0; buf[3] = (fst.st_mode & S_IRUSR) ? 1 : 0; buf[2] = (fst.st_mode & S_ISVTX) ? 1 : 0; buf[1] = (fst.st_mode & S_ISGID) ? 1 : 0; buf[0] = (fst.st_mode & S_ISUID) ? 1 : 0; } //-- Init Dialog Window CANVAS *tmpc = aw_muteparent(parent); aw_set_on_dialog(2); ag_rectopa(agc(), 0, 0, agw(), agh(), 0x0000, 180); ag_sync(); //-- Initializing Canvas CANVAS bg; ag_canvas(&bg, agw(), agh()); ag_draw(&bg, agc(), 0, 0); //-- Size & Position /* MainTitle SubTitle [PAD] user group others [x] r [x] w [x] x [x] r [x] w [x] x [x] r [x] w [x] x [x] s [x] g [x] t [PAD] [ BUTTONS ] */ int pad = agdp() * 4; int padB = pad; int padT = pad; int padL = pad; int padR = pad; PNGCANVASP winp = atheme("img.dialog"); APNG9 winv; if (winp != NULL) { if (apng9_calc(winp, &winv, 1)) { padL = winv.l; padR = winv.r; padB = winv.b; padT = winv.t; } } int hpad = agdp() * 2; int winW = agw() - (pad * 2); //-- Window int winX = pad; int cliW = winW - (padL + padR + (hpad*2)); //-- Window Client int cliX = pad + padL + hpad; int titH = ag_fontheight(1) + (agdp() * 2); //-- Title Height int chkH = agdp()*20; int txtH = ag_fontheight(0) + agdp(); //-- Text Interface Height int btnH = agdp() * 24; int cliH = titH + txtH + (chkH * 4) + btnH + (pad); int winH = cliH + padT + padB; int winY = (agh() / 2) - (winH / 2); int cliY = winY + padT; int _Y = cliY; //-- Draw Canvas if (!atheme_draw("img.dialog", &bg, winX, winY, winW, winH)) { ag_roundgrad(&bg, winX - 1, winY - 1, winW + 2, winH + 2, acfg()->border, acfg()->border_g, (acfg()->roundsz * agdp()) + 1); ag_roundgrad(&bg, winX, winY, winW, winH, acfg()->dialogbg, acfg()->dialogbg_g, acfg()->roundsz * agdp()); } //-- Init Window & Controls AWINDOWP hWin = aw(&bg); ACONTROLP txtTitle = aclabel(hWin, cliX, _Y, cliW, titH, alang_get("tools.chmod"), 1, 1, 2, acfg()->winfg); _Y+=titH; ACONTROLP txtFilename = aclabel(hWin, cliX, _Y, cliW, txtH, fn, 0, 1, 2, acfg()->winfg); _Y+=txtH+pad; int colW = cliW / 4; int col1 = cliX; int col2 = col1 + colW; int col3 = col2 + colW; int col4 = col3 + colW; aclabel(hWin, col1, _Y, colW, chkH, alang_get("tools.chmod.user"), 0, 1, 1, acfg()->winfg); ACONTROLP cbR1 = accb(hWin,col2,_Y,colW,chkH,alang_get("tools.chmod.read"),buf[3]); ACONTROLP cbW1 = accb(hWin,col3,_Y,colW,chkH,alang_get("tools.chmod.write"),buf[4]); ACONTROLP cbX1 = accb(hWin,col4,_Y,colW,chkH,alang_get("tools.chmod.exec"),buf[5]); _Y+=chkH; aclabel(hWin, col1, _Y, colW, chkH, alang_get("tools.chmod.group"), 0, 1, 1, acfg()->winfg); ACONTROLP cbR2 = accb(hWin,col2,_Y,colW,chkH,alang_get("tools.chmod.read"),buf[6]); ACONTROLP cbW2 = accb(hWin,col3,_Y,colW,chkH,alang_get("tools.chmod.write"),buf[7]); ACONTROLP cbX2 = accb(hWin,col4,_Y,colW,chkH,alang_get("tools.chmod.exec"),buf[8]); _Y+=chkH; aclabel(hWin, col1, _Y, colW, chkH, alang_get("tools.chmod.others"), 0, 1, 1, acfg()->winfg); ACONTROLP cbR3 = accb(hWin,col2,_Y,colW,chkH,alang_get("tools.chmod.read"),buf[9]); ACONTROLP cbW3 = accb(hWin,col3,_Y,colW,chkH,alang_get("tools.chmod.write"),buf[10]); ACONTROLP cbX3 = accb(hWin,col4,_Y,colW,chkH,alang_get("tools.chmod.exec"),buf[11]); _Y+=chkH; ACONTROLP cbZ1 = accb(hWin,col2,_Y,colW,chkH,alang_get("tools.chmod.setuid"),buf[0]); ACONTROLP cbZ2 = accb(hWin,col3,_Y,colW,chkH,alang_get("tools.chmod.setgid"),buf[1]); ACONTROLP cbZ3 = accb(hWin,col4,_Y,colW,chkH,alang_get("tools.chmod.sticky"),buf[2]); _Y+=chkH; int btnW = cliW / 2; int btn1 = cliX; int btn2 = btn1 + btnW; ACONTROLP okBtn = imgbtn(hWin, btn1, _Y, btnW-(pad/2), btnH, aui_icons(33), alang_get("ok"), 3, 6); ACONTROLP cancelBtn = imgbtn(hWin, btn2+(pad/2), _Y, btnW-(pad/2), btnH, aui_icons(0), alang_get("cancel"), 3, 5); //-- Show Window aw_show_ex(hWin, 0, 0, okBtn); byte ondispatch = 1; byte retval = 1; //-- Dispatch do { dword msg = aw_dispatch(hWin); switch (aw_gm(msg)) { case 5: { ondispatch = 0; } break; case 6: { // ondispatch = 0; buf[0]=accb_ischecked(cbZ1); buf[1]=accb_ischecked(cbZ2); buf[2]=accb_ischecked(cbZ3); buf[3]=accb_ischecked(cbR1); buf[4]=accb_ischecked(cbW1); buf[5]=accb_ischecked(cbX1); buf[6]=accb_ischecked(cbR2); buf[7]=accb_ischecked(cbW2); buf[8]=accb_ischecked(cbX2); buf[9]=accb_ischecked(cbR3); buf[10]=accb_ischecked(cbW3); buf[11]=accb_ischecked(cbX3); mode_t newmod = 0; if (buf[0]) newmod |= S_ISUID; if (buf[1]) newmod |= S_ISGID; if (buf[2]) newmod |= S_ISVTX; if (buf[3]) newmod |= S_IRUSR; if (buf[4]) newmod |= S_IWUSR; if (buf[5]) newmod |= S_IXUSR; if (buf[6]) newmod |= S_IRGRP; if (buf[7]) newmod |= S_IWGRP; if (buf[8]) newmod |= S_IXGRP; if (buf[9]) newmod |= S_IROTH; if (buf[10]) newmod |= S_IWOTH; if (buf[11]) newmod |= S_IXOTH; printf("CHMOD %o - %s\n",newmod,path); chmod(path,newmod); ondispatch = 0; retval = 0; } break; } } while (ondispatch); //-- Release Resources aw_destroy(hWin); ag_ccanvas(&bg); aw_set_on_dialog(0); aw_unmuteparent(parent, tmpc); return retval; }
byte aw_showmenu(AWINDOWP parent){ CANVAS * tmpc = aw_muteparent(parent); //-- Set Mask on_dialog_window = 2; ag_rectopa(agc(),0,0,agw(),agh(),0x0000,180); ag_sync(); int btnH = agdp()*20; int pad = agdp()*4; int vpad = agdp()*2; int winH = ((btnH+vpad) * 3) + pad; int winW = agw()-(pad*2); int winX = pad; int winY = agh()-winH; int btnY = winY + pad; int btnX = winX + pad; int btnW = winW - (pad*2); //-- Initializing Canvas CANVAS alertbg; ag_canvas(&alertbg,agw(),agh()); ag_draw(&alertbg,agc(),0,0); //-- Draw Window Background ag_roundgrad_ex(&alertbg,winX-1,winY-1,winW+2,winH+2,acfg_var.border,acfg_var.border_g,(acfg_var.roundsz*agdp())+1,1,1,0,0); ag_roundgrad_ex(&alertbg,winX,winY,winW,winH,acfg_var.navbg,acfg_var.navbg_g,acfg_var.roundsz*agdp(),1,1,0,0); //-- Create Window AWINDOWP hWin = aw(&alertbg); acbutton(hWin,btnX,btnY,btnW,btnH,acfg_var.text_about,0,11); //acbutton(hWin,btnX,btnY+((btnH+vpad)*1),btnW,btnH,"Help",0,12); acbutton(hWin,btnX,btnY+((btnH+vpad)*1),btnW,btnH,acfg_var.text_calibrating,0,13); acbutton(hWin,btnX,btnY+((btnH+vpad)*2),btnW,btnH,acfg_var.text_quit,0,14); aw_show(hWin); byte ondispatch = 1; byte res = 0; while(ondispatch){ dword msg=aw_dispatch(hWin); switch (aw_gm(msg)){ case 5: ondispatch = 0; break; case 11: res=1; ondispatch = 0; break; case 12: res=2; ondispatch = 0; break; case 13: res=3; ondispatch = 0; break; case 14: res=4; ondispatch = 0; break; } } aw_destroy(hWin); ag_ccanvas(&alertbg); on_dialog_window = 0; aw_unmuteparent(parent,tmpc); if (res==1){ aw_about_dialog(parent); } else if (res==2){ aw_help_dialog(parent); } else if (res==3){ aw_calibtools(parent); } else if (res==4){ byte res = aw_confirm(parent, AROMA_NAME " " AROMA_VERSION, acfg_var.text_quit_msg,"@alert",NULL,NULL); if (res) return 2; } return 0; }
void aw_calibtools(AWINDOWP parent){ int USE_HACK = aw_confirm( parent, "Use alternative touch", "Do you want to use alternative touch?\n Only use if the default method does not work.\n\nPress the volume keys to select Yes or No.", "@alert", acfg_var.text_no, acfg_var.text_yes ); byte current_hack = atouch_gethack(); if (!USE_HACK){ atouch_sethack(1); } else{ atouch_sethack(0); } //-- Set Mask CANVAS * tmpc = aw_muteparent(parent); on_dialog_window = 1; ag_rectopa(agc(),0,0,agw(),agh(),0x0000,220); ag_sync(); byte isvalid = 0; //-- Initializing Canvas CANVAS ccv; ag_canvas(&ccv,agw(),agh()); ag_blur(&ccv,agc(),agdp()*2); int xpos[5] = { agdp()*10, agw()-(agdp()*10), agdp()*10, agw()-(agdp()*10), agw()/2 }; int ypos[5] = { agdp()*10, agdp()*10, agh() - (agdp()*10), agh()-(agdp()*10), agh()/2 }; int xtch[5] = { 0,0,0,0,0 }; int ytch[5] = { 0,0,0,0,0 }; atouch_plaincalibrate(); char datx[256]; if (!aw_calibdraw(&ccv,0,xpos,ypos,xtch,ytch)) goto doneit; if (!aw_calibdraw(&ccv,1,xpos,ypos,xtch,ytch)) goto doneit; if (!aw_calibdraw(&ccv,2,xpos,ypos,xtch,ytch)) goto doneit; if (!aw_calibdraw(&ccv,3,xpos,ypos,xtch,ytch)) goto doneit; if (!aw_calibdraw(&ccv,4,xpos,ypos,xtch,ytch)) goto doneit; float padsz = agdp()*5; float leftx = ((xtch[0]+xtch[2])/2); float rightx = ((xtch[1]+xtch[3])/2); float topy = ((ytch[0]+ytch[1])/2); float bottomy = ((ytch[2]+ytch[3])/2); float centerx = xtch[4]; float centery = ytch[4]; float halfx = (agw()/2)-padsz; float halfy = (agh()/2)-padsz; float fullx = agw()-padsz; float fully = agh()-padsz; byte data_is_valid = 0; float cal_x = 0; float cal_y = 0; int add_x = 0; int add_y = 0; if ((halfx>0)&&(fullx>0)&&(halfy>0)&&(fully>0)){ cal_x = ((((centerx-leftx)/halfx) + ((rightx-leftx)/fullx))/2); cal_y = ((((centery-topy)/halfy) + ((bottomy-topy)/fully))/2); if ((cal_x>0)&&(cal_y>0)){ add_x = round((leftx / cal_x) - padsz); add_y = round((topy / cal_y) - padsz); data_is_valid = 1; } } if (data_is_valid){ atouch_set_calibrate(cal_x,add_x,cal_y,add_y); if (!USE_HACK){ snprintf(datx,255, "Use/Replace this command in <#009>aroma-config</#>:\n\n" "<#060>calibrate(\n \"%01.4f\",\"%i\",\"%01.4f\",\"%i\",\"yes\"\n);</#>\n\n", cal_x,add_x,cal_y,add_y); } else{ snprintf(datx,255, "Use/Replace this command in <#009>aroma-config</#>:\n\n" "<#060>calibrate(\n \"%01.4f\",\"%i\",\"%01.4f\",\"%i\"\n);</#>\n\n", cal_x,add_x,cal_y,add_y); } aw_calibdraw(&ccv,-1,xpos,ypos,xtch,ytch); isvalid = 1; } else{ aw_alert(parent, "Calibrated Data", "Calibrated data not valid, please try again...", "@info", NULL); } doneit: ag_ccanvas(&ccv); on_dialog_window = 0; aw_unmuteparent(parent,tmpc); byte dont_restore_caldata = 0; if (isvalid){ aw_alert(parent, "Calibrated Data", datx, "@info", NULL); dont_restore_caldata = aw_confirm( parent, "Set Calibrated Data", "Do you want to use the current calibrated data in the current process?\n\n<#080>NOTE:</#> It will revert back when you restart the AROMA Installer...", "@alert", NULL, NULL ); } if (!dont_restore_caldata){ atouch_sethack(current_hack); atouch_restorecalibrate(); } }
//* //* SHOW TIPS //* void aui_showtips(AUI_VARSP v) { if (aui_is_show_tips) { aui_is_show_tips = 0; CANVAS * tmpc = aw_muteparent(v->hWin); aw_set_on_dialog(2); ag_rectopa(agc(), 0, 0, agw(), agh(), 0x0000, 180); ag_sync(); CANVAS alertbg; ag_canvas(&alertbg, agw(), agh()); ag_draw(&alertbg, agc(), 0, 0); //-- Load Tips Font ag_loadbigfont("fonts/HTC Hand/HTCHand.otf", 18, AROMA_DIR "/"); PNGCANVAS ap; int imS = agdp() * 12; int bHH = v->btnH / 2; int w75 = round(agw() * 0.6); if (apng_load(&ap, "common/tips1")) { apng_stretch(&alertbg, &ap, v->pad + v->btnH, v->boxY - bHH, imS, imS, 0, 0, ap.w, ap.h); apng_close(&ap); } ag_text(&alertbg, w75, v->pad + v->btnH + imS, v->boxY - bHH, "Here is the path of the current working directory", 0xffff, 1); if (apng_load(&ap, "common/tips2")) { apng_stretch(&alertbg, &ap, agw() - (v->btnH + imS), v->boxY + (v->btnH * 4.5), imS, imS, 0, 0, ap.w, ap.h); apng_close(&ap); } ag_text(&alertbg, w75, agw() - (v->btnH + imS + w75), v->boxY + (v->btnH * 4.5), "<@right>Tap the checkbox to select multiple files</@>", 0xffff, 1); if (apng_load(&ap, "common/tips3")) { apng_stretch(&alertbg, &ap, agw() - (v->btnH + imS * 3), v->btnY - (v->pad + v->btnFH + imS), imS, imS, 0, 0, ap.w, ap.h); apng_close(&ap); } ag_text(&alertbg, w75, agw() - (v->btnH + imS * 3 + w75), v->btnY - (v->pad + v->btnFH + (imS * 2)), "<@right>All functions you need is on this toolbar</@>", 0xffff, 1); //-- Revert Font aui_cfg_reloadfonts(); //-- Create Window AWINDOWP hWin = aw(&alertbg); aw_show(hWin); byte ondispatch = 1; while (ondispatch) { dword msg = aw_dispatch_ex(hWin, agh()); byte msgm = aw_gm(msg); if (msgm == 5) { ondispatch = 0; } } aw_destroy(hWin); ag_ccanvas(&alertbg); aw_set_on_dialog(0); aw_unmuteparent(v->hWin, tmpc); } }
void aw_calibtools(AWINDOWP parent){ //-- Set Mask CANVAS * tmpc = aw_muteparent(parent); on_dialog_window = 1; ag_rectopa(agc(),0,0,agw(),agh(),0x0000,220); ag_sync(); byte isvalid = 0; //-- Initializing Canvas CANVAS ccv; ag_canvas(&ccv,agw(),agh()); ag_blur(&ccv,agc(),agdp()*2); int xpos[5] = { agdp()*10, agw()-(agdp()*10), agdp()*10, agw()-(agdp()*10), agw()/2 }; int ypos[5] = { agdp()*10, agdp()*10, agh() - (agdp()*10), agh()-(agdp()*10), agh()/2 }; int xtch[5] = { 0,0,0,0,0 }; int ytch[5] = { 0,0,0,0,0 }; atouch_plaincalibrate(); char datx[256]; if (!aw_calibdraw(&ccv,0,xpos,ypos,xtch,ytch)) goto doneit; if (!aw_calibdraw(&ccv,1,xpos,ypos,xtch,ytch)) goto doneit; if (!aw_calibdraw(&ccv,2,xpos,ypos,xtch,ytch)) goto doneit; if (!aw_calibdraw(&ccv,3,xpos,ypos,xtch,ytch)) goto doneit; if (!aw_calibdraw(&ccv,4,xpos,ypos,xtch,ytch)) goto doneit; float padsz = agdp()*5; float leftx = ((xtch[0]+xtch[2])/2); float rightx = ((xtch[1]+xtch[3])/2); float topy = ((ytch[0]+ytch[1])/2); float bottomy = ((ytch[2]+ytch[3])/2); float centerx = xtch[4]; float centery = ytch[4]; float halfx = (agw()/2)-padsz; float halfy = (agh()/2)-padsz; float fullx = agw()-padsz; float fully = agh()-padsz; byte data_is_valid = 0; float cal_x = 0; float cal_y = 0; int add_x = 0; int add_y = 0; if ((halfx>0)&&(fullx>0)&&(halfy>0)&&(fully>0)){ cal_x = ((((centerx-leftx)/halfx) + ((rightx-leftx)/fullx))/2); cal_y = ((((centery-topy)/halfy) + ((bottomy-topy)/fully))/2); if ((cal_x>0)&&(cal_y>0)){ add_x = round((leftx / cal_x) - padsz); add_y = round((topy / cal_y) - padsz); data_is_valid = 1; } } if (data_is_valid){ atouch_set_calibrate(cal_x,add_x,cal_y,add_y); snprintf(datx,255, "Use/Replace this command in top of <#009>aroma-config</#>:\n\n" "<#060>calibrate(\"%01.4f\",\"%i\",\"%01.4f\",\"%i\");</#>\n\n", cal_x,add_x,cal_y,add_y); aw_calibdraw(&ccv,-1,xpos,ypos,xtch,ytch); isvalid = 1; } else{ aw_alert(parent, "Calibrated Data", "Calibrated Data not Valid, Please Try Again...", "icons/info", NULL); } doneit: ag_ccanvas(&ccv); on_dialog_window = 0; aw_unmuteparent(parent,tmpc); byte dont_restore_caldata = 0; if (isvalid){ aw_alert(parent, "Calibrated Data", datx, "icons/info", NULL); dont_restore_caldata = aw_confirm( parent, "Set Calibrated Data", "Do You Want to Use Current Calibrated Data in Current Process?\n\n<#080>NOTE:</#> It Will revert back when you restart the AROMA Installer...", "icons/alert", NULL, NULL ); } if (!dont_restore_caldata){ atouch_restorecalibrate(); } }
byte aw_confirm(AWINDOWP parent, char * titlev,char * textv,char * img,char * yes_text,char * no_text){ CANVAS * tmpc = aw_muteparent(parent); //-- Set Mask on_dialog_window = 1; ag_rectopa(agc(),0,0,agw(),agh(),0x0000,180); ag_sync(); char title[32]; char text[513]; snprintf(title,31,"%s",titlev); snprintf(text,512,"%s",textv); int pad = agdp()*4; int winW = agw()-(pad*2); int txtW = winW-(pad*2); int txtX = pad*2; int btnH = agdp()*20; int titW = ag_txtwidth(title,1); int titH = ag_fontheight(1) + (pad*2); //-- Load Icon PNGCANVAS ap; byte imgE = 0; int imgW = 0; int imgH = 0; if (apng_load(&ap,img)){ imgE = 1; imgW = min(ap.w,agdp()*30); imgH = min(ap.h,agdp()*30); int imgA = pad + imgW; txtX += imgA; txtW -= imgA; } int txtH = ag_txtheight(txtW,text,0); int infH = ((imgE)&&(txtH<imgH))?imgH:txtH; //-- Calculate Window Size & Position int winH = titH + infH + btnH + (pad*3); int winX = pad; int winY = (agh()/2) - (winH/2); //-- Calculate Title Size & Position int titX = (agw()/2) - (titW/2); int titY = winY + pad; //-- Calculate Text Size & Position int infY = winY + titH + pad; int txtY = infY + ((infH - txtH) / 2); int imgY = infY; //-- Calculate Button Size & Position int btnW = (txtW / 2) - (pad/2); int btnY = infY+infH+pad; int btnX = txtX; int btnX2 = txtX+(txtW/2)+(pad/2); //-- Initializing Canvas CANVAS alertbg; ag_canvas(&alertbg,agw(),agh()); ag_draw(&alertbg,agc(),0,0); //-- Draw Window ag_roundgrad(&alertbg,winX-1,winY-1,winW+2,winH+2,acfg_var.border,acfg_var.border_g,(acfg_var.roundsz*agdp())+1); ag_roundgrad(&alertbg,winX,winY,winW,winH,acfg_var.winbg,acfg_var.winbg_g,acfg_var.roundsz*agdp()); //-- Draw Title ag_roundgrad_ex(&alertbg,winX,winY,winW,titH,acfg_var.titlebg,acfg_var.titlebg_g,acfg_var.roundsz*agdp(),1,1,0,0); ag_textf(&alertbg,titW,titX+1,titY+1,title,acfg_var.titlebg_g,1); ag_text(&alertbg,titW,titX,titY,title,acfg_var.titlefg,1); //-- Draw Image if (imgE){ apng_draw_ex(&alertbg,&ap,pad*2,imgY,0,0,imgW,imgH); apng_close(&ap); } //-- Draw Text ag_textf(&alertbg,txtW,txtX+1,txtY+1,text,acfg_var.textbg,0); ag_text(&alertbg,txtW,txtX,txtY,text,acfg_var.textfg,0); AWINDOWP hWin = aw(&alertbg); acbutton(hWin,btnX,btnY,btnW,btnH,(yes_text==NULL?"Yes":yes_text),0,6); acbutton(hWin,btnX2,btnY,btnW,btnH,(no_text==NULL?"No":no_text),0,5); aw_show(hWin); byte ondispatch = 1; byte res = 0; while(ondispatch){ dword msg=aw_dispatch(hWin); switch (aw_gm(msg)){ case 6: res=1; ondispatch = 0; break; case 5: ondispatch = 0; break; } } aw_destroy(hWin); ag_ccanvas(&alertbg); on_dialog_window = 0; aw_unmuteparent(parent,tmpc); return res; }
void afbox_ondraw(void * x){ ACONTROLP ctl= (ACONTROLP) x; AFBOXDP d = (AFBOXDP) ctl->d; CANVAS * pc = &ctl->win->c; afbox_redraw(ctl); if (d->invalidDrawItem!=-1){ d->touchedItem = d->invalidDrawItem; afbox_redrawitem_ex(ctl,d->invalidDrawItem); d->invalidDrawItem=-1; d->lasttouch=alib_tick(); if (((d->boxtype==0)&&(d->check_n==0))||(d->boxtype==2)) afbox_reghold(ctl,&d->lasttouch); } //-- Init Device Pixel Size int minpadding = 2; int agdp3 = (agdp()* minpadding); int agdp6 = (agdp()*(minpadding*2)); int agdpX = agdp6; //-- Realtime redraw int dr_top=d->scrollY; int dr_bottom=dr_top+ctl->h; int i; for (i=0;i<d->itemn;i++){ AFBOXIP p = d->items[i]; if (p->y+p->h<dr_top) continue; else if (p->y>dr_bottom) break; else if (!p->drawed){ afbox_redrawitem_ex(ctl,i); p->drawed=1; } } ag_draw(pc,&d->control,ctl->x,ctl->y); ag_draw_ex(pc,&d->client,ctl->x+agdp(),ctl->y+1,0,d->scrollY+1,ctl->w-(agdp()*2),ctl->h-2); if (d->maxScrollY>0){ //-- Glow // int i; byte isST=(d->scrollY>0)?1:0; byte isSB=(d->scrollY<d->maxScrollY)?1:0; int add_t_y = 1; for (i=0;i<agdpX;i++){ byte alph = 255-round((((float) (i+1))/ ((float) agdpX))*230); if (isST) ag_rectopa(pc,ctl->x,ctl->y+i+add_t_y,ctl->w,1,acfg()->textbg,alph); if (isSB) ag_rectopa(pc,ctl->x,((ctl->y+ctl->h)-(add_t_y))-(i+1),ctl->w,1,acfg()->textbg,alph); } //-- Scrollbar int newh = ctl->h - agdp6; float scrdif = ((float) newh) / ((float) d->client.h); int scrollbarH = round(scrdif * newh); int scrollbarY = round(scrdif * d->scrollY) + agdp3; if (d->scrollY<0){ scrollbarY = agdp3; int alp = (1.0 - (((float) abs(d->scrollY)) / (((float) ctl->h)/4))) * 255; if (alp<0) alp = 0; ag_rectopa(pc,(ctl->w-agdp()-2)+ctl->x,scrollbarY+ctl->y,agdp(),scrollbarH,acfg()->scrollbar, alp); } else if (d->scrollY>d->maxScrollY){ scrollbarY = round(scrdif * d->maxScrollY) + agdp3; int alp = (1.0 - (((float) abs(d->scrollY-d->maxScrollY)) / (((float) ctl->h)/4))) * 255; if (alp<0) alp = 0; ag_rectopa(pc,(ctl->w-agdp()-2)+ctl->x,scrollbarY+ctl->y,agdp(),scrollbarH,acfg()->scrollbar, alp); } else{ ag_rect(pc,(ctl->w-agdp()-2)+ctl->x,scrollbarY+ctl->y,agdp(),scrollbarH,acfg()->scrollbar); } } }