static void ami_menu_item_arexx_execute(struct Hook *hook, APTR window, struct IntuiMessage *msg) { char *temp; struct gui_window_2 *gwin; GetAttr(WINDOW_UserData, (Object *)window, (ULONG *)&gwin); if(AslRequestTags(filereq, ASLFR_Window, gwin->win, ASLFR_SleepWindow, TRUE, ASLFR_TitleText, messages_get("NetSurf"), ASLFR_Screen, scrn, ASLFR_DoSaveMode, FALSE, ASLFR_InitialDrawer, nsoption_charp(arexx_dir), ASLFR_InitialPattern, "#?.nsrx", TAG_DONE)) { if(temp = AllocVecTagList(1024, NULL)) { strlcpy(temp, filereq->fr_Drawer, 1024); AddPart(temp, filereq->fr_File, 1024); ami_arexx_execute(temp); FreeVec(temp); } } }
void ami_menu_arexx_scan(struct gui_window_2 *gwin) { int item = AMI_MENU_AREXX; BPTR lock = 0; UBYTE *buffer; struct ExAllControl *ctrl; char matchpatt[16]; LONG cont; struct ExAllData *ead; char *menu_lab; if(lock = Lock(nsoption_charp(arexx_dir), SHARED_LOCK)) { if(buffer = AllocVecTagList(1024, NULL)) { if(ctrl = AllocDosObject(DOS_EXALLCONTROL,NULL)) { ctrl->eac_LastKey = 0; if(ParsePatternNoCase("#?.nsrx",(char *)&matchpatt,16) != -1) { ctrl->eac_MatchString = (char *)&matchpatt; } do { cont = ExAll(lock,(struct ExAllData *)buffer,1024,ED_COMMENT,ctrl); if((!cont) && (IoErr() != ERROR_NO_MORE_ENTRIES)) break; if(!ctrl->eac_Entries) continue; for(ead = (struct ExAllData *)buffer; ead; ead = ead->ed_Next) { if(item >= AMI_MENU_AREXX_MAX) continue; if(EAD_IS_FILE(ead)) { gwin->menu[item].nm_Type = NM_ITEM; if(ead->ed_Comment[0] != '\0') menu_lab = ead->ed_Comment; else menu_lab = ead->ed_Name; ami_menu_alloc_item(gwin, item, NM_ITEM, menu_lab, 0, NULL, ami_menu_item_arexx_entries, (void *)strdup(ead->ed_Name)); item++; } } }while(cont); FreeDosObject(DOS_EXALLCONTROL,ctrl); } FreeVec(buffer); } UnLock(lock); } gwin->menu[item].nm_Type = NM_END; gwin->menu[item].nm_Label = NULL; }
struct ami_font_cache_node *ami_font_cache_alloc_entry(const char *font) { struct ami_font_cache_node *nodedata; #ifdef __amigaos4__ uint32 hash = XXH32(font, strlen(font), 0); nodedata = (struct ami_font_cache_node *)InsertSkipNode(ami_font_cache_list, (APTR)hash, sizeof(struct ami_font_cache_node)); #else nodedata = AllocVecTagList(sizeof(struct ami_font_cache_node), NULL); #endif GetSysTime(&nodedata->lastused); return nodedata; }
ULONG *amiga_icon_convertcolouricon32(UBYTE *icondata, ULONG width, ULONG height, ULONG trans, ULONG pals1, struct ColorRegister *pal1, int alpha) { ULONG *argbicon; struct ColorRegister *colour; struct ColorMap *cmap; int i; ULONG a,r,g,b; if (alpha==0) alpha=0xff; argbicon = (ULONG *)AllocVecTagList(width*height*4, NULL); if (!argbicon) return(NULL); cmap=GetColorMap(pals1); if(!cmap) return(NULL); for(i=0;i<(width*height);i++) { colour = &pal1[icondata[i]]; if(icondata[i] == trans) { a=0x00; } else { a=alpha; } r = colour->red; g = colour->green; b = colour->blue; argbicon[i] = (a << 24) + (r << 16) + (g << 8) + (b); } return(argbicon); }
struct DiskObject *amiga_icon_from_bitmap(struct bitmap *bm) { struct DiskObject *dobj; struct BitMap *bitmap; if(bm) { bitmap = ami_bitmap_get_native(bm, THUMBNAIL_WIDTH, THUMBNAIL_HEIGHT, NULL); bm->icondata = AllocVecTagList(THUMBNAIL_WIDTH * 4 * THUMBNAIL_HEIGHT, NULL); BltBitMapTags(BLITA_Width, THUMBNAIL_WIDTH, BLITA_Height, THUMBNAIL_HEIGHT, BLITA_SrcType, BLITT_BITMAP, BLITA_Source, bitmap, BLITA_DestType, BLITT_ARGB32, BLITA_DestBytesPerRow, THUMBNAIL_WIDTH * 4, BLITA_Dest, bm->icondata, TAG_DONE); } dobj = GetIconTags(NULL, ICONGETA_GetDefaultType, WBPROJECT, ICONGETA_GetDefaultName, "iconify", TAG_DONE); if(bm) { IconControl(dobj, ICONCTRLA_SetImageDataFormat, IDFMT_DIRECTMAPPED, ICONCTRLA_SetWidth, THUMBNAIL_WIDTH, ICONCTRLA_SetHeight, THUMBNAIL_HEIGHT, ICONCTRLA_SetImageData1, bm->icondata, ICONCTRLA_SetImageData2, NULL, TAG_DONE); } dobj->do_Gadget.UserData = bm; LayoutIconA(dobj, (struct Screen *)~0UL, NULL); return dobj; }
HOOKF(void, ami_menu_item_arexx_entries, APTR, window, struct IntuiMessage *) { char *script = hook->h_Data; char *temp; struct gui_window_2 *gwin; GetAttr(WINDOW_UserData, (Object *)window, (ULONG *)&gwin); if(script) { if((temp = AllocVecTagList(1024, NULL))) { BPTR lock; if((lock = Lock(nsoption_charp(arexx_dir), SHARED_LOCK))) { DevNameFromLock(lock, temp, 1024, DN_FULLPATH); AddPart(temp, script, 1024); ami_arexx_execute(temp); FreeVec(temp); UnLock(lock); } } } }
void ami_file_open(struct gui_window_2 *gwin) { char *temp, *temp2; nsurl *url; if(AslRequestTags(filereq, ASLFR_TitleText, messages_get("NetSurf"), ASLFR_Window, gwin->win, ASLFR_SleepWindow, TRUE, ASLFR_Screen, scrn, ASLFR_DoSaveMode, FALSE, ASLFR_RejectIcons, TRUE, ASLFR_FilterFunc, &aslhookfunc, TAG_DONE)) { if(temp = AllocVecTagList(1024, NULL)) { strlcpy(temp, filereq->fr_Drawer, 1024); AddPart(temp, filereq->fr_File, 1024); temp2 = path_to_url(temp); if (nsurl_create(temp2, &url) != NSERROR_OK) { warn_user("NoMemory", 0); } else { browser_window_navigate(gwin->bw, url, NULL, BW_NAVIGATE_HISTORY, NULL, NULL, NULL); nsurl_unref(url); } free(temp2); FreeVec(temp); } } }
void ami_print_ui(struct hlcache_handle *c) { char filename[30]; int i; struct ami_print_window *pw = ami_misc_allocvec_clear(sizeof(struct ami_print_window), 0); pw->c = c; printers[0] = ami_misc_allocvec_clear(50, 0); ami_print_readunit("ENV:Sys/printer.prefs", printers[0], 50, 0); strcpy(filename,"ENV:Sys/printerN.prefs"); for (i = 1; i < 10; i++) { filename[15] = '0' + i; printers[i] = AllocVecTagList(50, NULL); if(!ami_print_readunit(filename, printers[i], 50, i)) { FreeVec(printers[i]); printers[i] = NULL; break; } } ami_print_ui_setup(); pw->objects[OID_MAIN] = WindowObj, WA_ScreenTitle, ami_gui_get_screen_title(), WA_Title, gadlab[PGID_PRINT], WA_Activate, TRUE, WA_DepthGadget, TRUE, WA_DragBar, TRUE, WA_CloseGadget, TRUE, WA_SizeGadget, FALSE, WA_PubScreen, scrn, WINDOW_SharedPort, sport, WINDOW_UserData, pw, WINDOW_IconifyGadget, FALSE, WINDOW_Position, WPOS_CENTERSCREEN, WINDOW_ParentGroup, pw->gadgets[PGID_MAIN] = LayoutVObj, LAYOUT_AddChild, ChooserObject, GA_ID, PGID_PRINTER, GA_RelVerify, TRUE, GA_TabCycle, TRUE, CHOOSER_LabelArray, printers, CHOOSER_Selected, nsoption_int(printer_unit), ChooserEnd, CHILD_Label, LabelObject, LABEL_Text, gadlab[PGID_PRINTER], LabelEnd, LAYOUT_AddChild, IntegerObject, GA_ID, PGID_COPIES, GA_RelVerify, TRUE, GA_TabCycle, TRUE, INTEGER_Number, 1, INTEGER_Minimum, 1, INTEGER_Maximum, 100, INTEGER_Arrows, TRUE, IntegerEnd, CHILD_Label, LabelObject, LABEL_Text, gadlab[PGID_COPIES], LabelEnd, LAYOUT_AddChild, HGroupObject, LAYOUT_LabelColumn, PLACETEXT_RIGHT, LAYOUT_AddChild, pw->gadgets[PGID_SCALE] = IntegerObj, GA_ID, PGID_SCALE, GA_RelVerify, TRUE, GA_TabCycle, TRUE, INTEGER_Number, nsoption_int(print_scale), INTEGER_Minimum, 0, INTEGER_Maximum, 100, INTEGER_Arrows, TRUE, IntegerEnd, CHILD_WeightedWidth, 0, CHILD_Label, LabelObject, LABEL_Text, "%", LabelEnd, LayoutEnd, CHILD_Label, LabelObject, LABEL_Text, gadlab[PGID_SCALE], LabelEnd, LAYOUT_AddChild, HGroupObject, LAYOUT_AddChild, pw->gadgets[PGID_PRINT] = ButtonObj, GA_ID, PGID_PRINT, GA_RelVerify,TRUE, GA_Text, gadlab[PGID_PRINT], GA_TabCycle,TRUE, ButtonEnd, CHILD_WeightedHeight,0, LAYOUT_AddChild, pw->gadgets[GID_CANCEL] = ButtonObj, GA_ID, PGID_CANCEL, GA_RelVerify, TRUE, GA_Text, gadlab[PGID_CANCEL], GA_TabCycle,TRUE, ButtonEnd, LayoutEnd, CHILD_WeightedHeight,0, EndGroup, EndWindow; pw->win = (struct Window *)RA_OpenWindow(pw->objects[OID_MAIN]); pw->node = AddObject(window_list, AMINS_PRINTWINDOW); pw->node->objstruct = pw; }