GTextInfo *GetEncodingTypes(void) { GTextInfo *ti; int i, cnt; Encoding *item; EncodingInit(); cnt = 0; for ( item=enclist; item!=NULL ; item=item->next ) if ( !item->hidden ) ++cnt; i = cnt + sizeof(encodingtypes)/sizeof(encodingtypes[0]); ti = gcalloc(i+1,sizeof(GTextInfo)); memcpy(ti,encodingtypes,sizeof(encodingtypes)-sizeof(encodingtypes[0])); for ( i=0; i<sizeof(encodingtypes)/sizeof(encodingtypes[0])-1; ++i ) { ti[i].text = (unichar_t *) copy((char *) ti[i].text); } if ( cnt!=0 ) { ti[i++].line = true; for ( item=enclist; item!=NULL ; item=item->next ) if ( !item->hidden ) { ti[i].text = uc_copy(item->enc_name); ti[i++].userdata = (void *) item->enc_name; } } return( ti ); }
unichar_t *u_GFileGetHomeDocumentsDir(void) { unichar_t* dir = NULL; char* tmp = GFileGetHomeDocumentsDir(); if(tmp) { dir = uc_copy(tmp); } return dir; }
static int WithinList(struct gfc_data *d,GEvent *event) { GRect size; GGadget *list; int32 pos; unichar_t *ufile; char *file, **fontnames; int cnt, len; unichar_t *msg; if ( event->type!=et_mousemove ) return( false ); GFileChooserGetChildren(d->gfc,NULL, &list, NULL); if ( list==NULL ) return( false ); if ( !GGadgetWithin(list,event->u.mouse.x,event->u.mouse.y) ) return( false ); pos = GListIndexFromY(list,event->u.mouse.y); if ( pos == d->filename_popup_pos ) return( pos!=-1 ); if ( pos==-1 || GFileChooserPosIsDir(d->gfc,pos)) { d->filename_popup_pos = -1; return( pos!=-1 ); } ufile = GFileChooserFileNameOfPos(d->gfc,pos); if ( ufile==NULL ) return( true ); file = u2def_copy(ufile); free(ufile); fontnames = GetFontNames(file, 0); if ( fontnames==NULL || fontnames[0]==NULL ) msg = uc_copy( "???" ); else { len = 0; for ( cnt=0; fontnames[cnt]!=NULL; ++cnt ) len += strlen(fontnames[cnt])+1; msg = malloc((len+2)*sizeof(unichar_t)); len = 0; for ( cnt=0; fontnames[cnt]!=NULL; ++cnt ) { uc_strcpy(msg+len,fontnames[cnt]); len += strlen(fontnames[cnt]); msg[len++] = '\n'; } msg[len-1] = '\0'; } GGadgetPreparePopup(GGadgetGetWindow(d->gfc),msg); if ( fontnames!=NULL ) { for ( cnt=0; fontnames[cnt]!=NULL; ++cnt ) { free(fontnames[cnt]); } free(fontnames); } free(file); free(d->lastpopupfontname); d->lastpopupfontname = msg; return( true ); }
static void AnchorD_SetDevTabs(AnchorDlg *a) { char buffer[20]; unichar_t ubuf[20]; int min, max; GGadgetClearList(GWidgetGetControl(a->gw,CID_DisplaySize)); min = 1; max = 0; if ( a->xadjust.corrections!=NULL ) { min = a->xadjust.first_pixel_size; max = a->xadjust.last_pixel_size; } if ( a->yadjust.corrections!=NULL ) { if ( a->yadjust.first_pixel_size<min ) min = a->yadjust.first_pixel_size; if ( a->yadjust.last_pixel_size>max ) max = a->yadjust.last_pixel_size; } if ( max>min ) { int i; int len = max-min+1; char buffer[20]; GTextInfo **ti = malloc((len+1)*sizeof(GTextInfo *)); for ( i=0; i<len; ++i ) { ti[i] = calloc(1,sizeof(GTextInfo)); sprintf( buffer, "%d", i+min ); ti[i]->text = uc_copy(buffer); ti[i]->fg = ti[i]->bg = COLOR_DEFAULT; } ti[i] = calloc(1,sizeof(GTextInfo)); GGadgetSetList(GWidgetGetControl(a->gw,CID_DisplaySize),ti,false); } ubuf[0] = '0'; ubuf[1] = '\0'; if ( a->xadjust.corrections!=NULL && a->pixelsize>=a->xadjust.first_pixel_size && a->pixelsize<=a->xadjust.last_pixel_size ) { sprintf( buffer, "%d", a->xadjust.corrections[ a->pixelsize-a->xadjust.first_pixel_size]); uc_strcpy(ubuf,buffer); } GGadgetSetTitle(GWidgetGetControl(a->gw,CID_XCor),ubuf); ubuf[0] = '0'; ubuf[1] = '\0'; if ( a->yadjust.corrections!=NULL && a->pixelsize>=a->yadjust.first_pixel_size && a->pixelsize<=a->yadjust.last_pixel_size ) { sprintf( buffer, "%d", a->yadjust.corrections[ a->pixelsize-a->yadjust.first_pixel_size]); uc_strcpy(ubuf,buffer); } GGadgetSetTitle(GWidgetGetControl(a->gw,CID_YCor),ubuf); }
static GTextInfo *EncodingList(void) { GTextInfo *ti; int i; Encoding *item; i = 0; for ( item=enclist; item!=NULL ; item=item->next ) if ( !item->builtin ) ++i; ti = gcalloc(i+1,sizeof(GTextInfo)); i = 0; for ( item=enclist; item!=NULL ; item=item->next ) if ( !item->builtin ) ti[i++].text = uc_copy(item->enc_name); if ( i!=0 ) ti[0].selected = true; return( ti ); }
static void _gio_file_statfile(GIOControl *gc,char *path) { GDirEntry *cur; struct stat statb; if ( stat(path,&statb)==-1 ) { _GIO_reporterror(gc,errno); } else { cur = (GDirEntry *) gcalloc(1,sizeof(GDirEntry)); cur->name = uc_copy(GFileNameTail(path)); cur->hasdir = cur->hasexe = cur->hasmode = cur->hassize = cur->hastime = true; cur->size = statb.st_size; cur->mode = statb.st_mode; cur->modtime = statb.st_mtime; cur->isdir = S_ISDIR(cur->mode); cur->isexe = !cur->isdir && (cur->mode & 0100); gc->iodata = cur; gc->direntrydata = true; gc->return_code = 200; gc->done = true; (gc->receivedata)(gc); } }
static void _gio_file_dir(GIOControl *gc,char *path) { DIR *dir; struct dirent *ent; GDirEntry *head=NULL, *last=NULL, *cur; char *buffer, *ept, *temp; struct stat statb; dir = opendir(path); if ( dir==NULL ) { _GIO_reporterror(gc,errno); return; } buffer = (char *) malloc(strlen(path)+FILENAME_MAX+3); strcpy(buffer,path); ept = buffer+strlen(buffer); if ( ept[-1]!='/' ) *ept++ = '/'; while (( ent = readdir(dir))!=NULL ) { cur = (GDirEntry *) calloc(1,sizeof(GDirEntry)); cur->name = def2u_copy(ent->d_name); strcpy(ept,ent->d_name); stat(buffer,&statb); cur->hasdir = cur->hasexe = cur->hasmode = cur->hassize = cur->hastime = true; cur->size = statb.st_size; cur->mode = statb.st_mode; cur->modtime = statb.st_mtime; cur->isdir = S_ISDIR(cur->mode); cur->isexe = !cur->isdir && (cur->mode & 0100); temp = NULL; // Things go badly if we open a pipe or a device. So we don't. #ifdef __MINGW32__ //Symlinks behave differently on Windows and are transparent, so no S_ISLNK. if (S_ISREG(statb.st_mode) || S_ISDIR(statb.st_mode)) { #else if (S_ISREG(statb.st_mode) || S_ISDIR(statb.st_mode) || S_ISLNK(statb.st_mode)) { #endif // We look at the file and try to determine a MIME type. if ( (temp=GIOguessMimeType(buffer)) || (temp=GIOGetMimeType(buffer)) ) { cur->mimetype = u_copy(c_to_u(temp)); free(temp); } } if ( last==NULL ) head = last = cur; else { last->next = cur; last = cur; } } #if __CygWin /* Under cygwin we should give the user access to /cygdrive, even though */ /* a diropen("/") will not find it */ if ( strcmp(path,"/")==0 ) { cur = (GDirEntry *) calloc(1,sizeof(GDirEntry)); cur->name = def2u_copy("cygdrive"); strcpy(ept,"cygdrive"); stat(buffer,&statb); cur->hasdir = cur->hasexe = cur->hasmode = cur->hassize = cur->hastime = true; cur->size = statb.st_size; cur->mode = statb.st_mode; cur->modtime = statb.st_mtime; cur->isdir = S_ISDIR(cur->mode); cur->isexe = !cur->isdir && (cur->mode & 0100); if ( last==NULL ) head = last = cur; else { last->next = cur; last = cur; } } #endif closedir(dir); free(buffer); gc->iodata = head; gc->direntrydata = true; gc->return_code = 200; gc->done = true; (gc->receivedata)(gc); } static void _gio_file_statfile(GIOControl *gc,char *path) { GDirEntry *cur; struct stat statb; if ( stat(path,&statb)==-1 ) { _GIO_reporterror(gc,errno); } else { cur = (GDirEntry *) calloc(1,sizeof(GDirEntry)); cur->name = uc_copy(GFileNameTail(path)); cur->hasdir = cur->hasexe = cur->hasmode = cur->hassize = cur->hastime = true; cur->size = statb.st_size; cur->mode = statb.st_mode; cur->modtime = statb.st_mtime; cur->isdir = S_ISDIR(cur->mode); cur->isexe = !cur->isdir && (cur->mode & 0100); gc->iodata = cur; gc->direntrydata = true; gc->return_code = 200; gc->done = true; (gc->receivedata)(gc); } }
static void FVCreateWidth( void *_fv,SplineChar* _sc,void (*doit)(CreateWidthData *), enum widthtype wtype, char *def) { GRect pos; GWindowAttrs wattrs; GGadgetCreateData gcd[11], boxes[2], topbox[2], *hvs[17], *varray[8], *buttons[6]; GTextInfo label[11]; static CreateWidthDlg cwd; static GWindow winds[5]; static char *title[] = { N_("Set Width..."), N_("Set LBearing..."), N_("Set RBearing..."), N_("Set Both Side Bearings..."), N_("Set Vertical Advance...") }; cwd.wd.done = false; cwd.wd._fv = _fv; cwd.wd._sc = _sc; cwd.wd.wtype = wtype; cwd.wd.doit = doit; cwd.gw = winds[wtype]; if ( cwd.gw==NULL ) { memset(&wattrs,0,sizeof(wattrs)); wattrs.mask = wam_events|wam_cursor|wam_utf8_wtitle|wam_undercursor|wam_isdlg|wam_restrict; wattrs.event_masks = ~(1<<et_charup); wattrs.restrict_input_to_me = 1; wattrs.undercursor = 1; wattrs.cursor = ct_pointer; wattrs.utf8_window_title = _(title[wtype]); wattrs.is_dlg = true; pos.x = pos.y = 0; pos.width = GGadgetScale(GDrawPointsToPixels(NULL,180)); pos.height = GDrawPointsToPixels(NULL,100); cwd.gw = winds[wtype] = GDrawCreateTopWindow(NULL,&pos,cwd_e_h,&cwd,&wattrs); memset(&label,0,sizeof(label)); memset(&gcd,0,sizeof(gcd)); label[0].text = (unichar_t *) _(rb1[wtype]); label[0].text_is_1byte = true; gcd[0].gd.label = &label[0]; gcd[0].gd.flags = gg_enabled|gg_visible|gg_cb_on; gcd[0].gd.cid = CID_Set; gcd[0].gd.handle_controlevent = CW_RadioChange; gcd[0].data = (void *) CID_SetVal; gcd[0].creator = GRadioCreate; label[1].text = (unichar_t *) _(rb2[wtype]); label[1].text_is_1byte = true; gcd[1].gd.label = &label[1]; gcd[1].gd.flags = gg_enabled|gg_visible|gg_rad_continueold ; gcd[1].gd.cid = CID_Incr; gcd[1].gd.handle_controlevent = CW_RadioChange; gcd[1].data = (void *) CID_IncrVal; gcd[1].creator = GRadioCreate; label[2].text = (unichar_t *) _(rb3[wtype]); label[2].text_is_1byte = true; gcd[2].gd.label = &label[2]; gcd[2].gd.flags = gg_enabled|gg_visible|gg_rad_continueold ; gcd[2].gd.cid = CID_Scale; gcd[2].gd.handle_controlevent = CW_RadioChange; gcd[2].data = (void *) CID_ScaleVal; gcd[2].creator = GRadioCreate; label[3].text = (unichar_t *) def; label[3].text_is_1byte = true; gcd[3].gd.label = &label[3]; gcd[3].gd.pos.width = 60; gcd[3].gd.flags = gg_enabled|gg_visible; gcd[3].gd.cid = CID_SetVal; gcd[3].gd.handle_controlevent = CW_FocusChange; gcd[3].data = (void *) CID_Set; gcd[3].creator = GTextFieldCreate; label[4].text = (unichar_t *) "0"; label[4].text_is_1byte = true; gcd[4].gd.label = &label[4]; gcd[4].gd.pos.width = 60; gcd[4].gd.flags = gg_enabled|gg_visible; gcd[4].gd.cid = CID_IncrVal; gcd[4].gd.handle_controlevent = CW_FocusChange; gcd[4].data = (void *) CID_Incr; gcd[4].creator = GTextFieldCreate; label[5].text = (unichar_t *) "100"; label[5].text_is_1byte = true; gcd[5].gd.label = &label[5]; gcd[5].gd.pos.width = 60; gcd[5].gd.flags = gg_enabled|gg_visible; gcd[5].gd.cid = CID_ScaleVal; gcd[5].gd.handle_controlevent = CW_FocusChange; gcd[5].data = (void *) CID_Scale; gcd[5].creator = GTextFieldCreate; gcd[6].gd.flags = gg_visible | gg_enabled | gg_but_default; label[6].text = (unichar_t *) _("_OK"); label[6].text_is_1byte = true; label[6].text_in_resource = true; gcd[6].gd.mnemonic = 'O'; gcd[6].gd.label = &label[6]; gcd[6].gd.handle_controlevent = CW_OK; gcd[6].creator = GButtonCreate; gcd[7].gd.flags = gg_visible | gg_enabled | gg_but_cancel; label[7].text = (unichar_t *) _("_Cancel"); label[7].text_is_1byte = true; label[7].text_in_resource = true; gcd[7].gd.label = &label[7]; gcd[7].gd.mnemonic = 'C'; gcd[7].gd.handle_controlevent = CW_Cancel; gcd[7].creator = GButtonCreate; label[8].text = (unichar_t *) S_(info[wtype]); label[8].text_is_1byte = true; gcd[8].gd.label = &label[8]; gcd[8].gd.pos.x = 5; gcd[8].gd.pos.y = 59; gcd[8].gd.flags = gg_enabled|gg_visible ; gcd[8].creator = GLabelCreate; label[9].text = (unichar_t *) "%"; label[9].text_is_1byte = true; gcd[9].gd.label = &label[9]; gcd[9].gd.flags = gg_enabled|gg_visible; gcd[9].creator = GLabelCreate; hvs[0] = &gcd[0]; hvs[1] = &gcd[3]; hvs[2] = GCD_Glue; hvs[3] = NULL; hvs[4] = &gcd[1]; hvs[5] = &gcd[4]; hvs[6] = GCD_Glue; hvs[7] = NULL; hvs[8] = &gcd[2]; hvs[9] = &gcd[5]; hvs[10] = &gcd[9]; hvs[11] = NULL; hvs[12] = &gcd[8]; hvs[13] = GCD_ColSpan; hvs[14] = GCD_Glue; hvs[15] = NULL; hvs[16] = NULL; buttons[0] = buttons[2] = buttons[4] = GCD_Glue; buttons[5] = NULL; buttons[1] = &gcd[6]; buttons[3] = &gcd[7]; varray[0] = &boxes[1]; varray[1] = NULL; varray[2] = GCD_Glue; varray[3] = NULL; varray[4] = &boxes[0]; varray[5] = NULL; varray[6] = NULL; memset(boxes,0,sizeof(boxes)); boxes[0].gd.flags = gg_enabled|gg_visible; boxes[0].gd.u.boxelements = buttons; boxes[0].creator = GHBoxCreate; boxes[1].gd.flags = gg_enabled|gg_visible; boxes[1].gd.u.boxelements = hvs; boxes[1].creator = GHVBoxCreate; memset(topbox,0,sizeof(topbox)); topbox[0].gd.pos.x = topbox[0].gd.pos.y = 2; topbox[0].gd.pos.width = pos.width-4; topbox[0].gd.pos.height = pos.height-4; topbox[0].gd.flags = gg_enabled|gg_visible; topbox[0].gd.u.boxelements = varray; topbox[0].creator = GHVGroupCreate; GGadgetsCreate(cwd.gw,topbox); GHVBoxSetExpandableRow(topbox[0].ret,1); GHVBoxSetExpandableCol(boxes[0].ret,gb_expandgluesame); GHVBoxSetExpandableCol(boxes[1].ret,1); GWidgetIndicateFocusGadget(GWidgetGetControl(cwd.gw,CID_SetVal)); GTextFieldSelect(GWidgetGetControl(cwd.gw,CID_SetVal),0,-1); GHVBoxFitWindow(topbox[0].ret); } else { unichar_t *temp = uc_copy(def); GGadgetSetTitle(GWidgetGetControl(cwd.gw,CID_SetVal),temp); } GWidgetHidePalettes(); GDrawSetVisible(cwd.gw,true); while ( !cwd.wd.done ) GDrawProcessOneEvent(NULL); GDrawSetVisible(cwd.gw,false); }