static void ami_file_set_type(const char *path, lwc_string *mime_type) { content_type type = content_factory_type_from_mime_type(mime_type); const char *default_type; switch(type) { case CONTENT_HTML: default_type = "html"; break; case CONTENT_CSS: default_type = "css"; break; default: default_type = NULL; break; } if (default_type != NULL) { struct DiskObject *dobj = NULL; dobj = GetIconTags(NULL,ICONGETA_GetDefaultName,default_type, ICONGETA_GetDefaultType,WBPROJECT, TAG_DONE); PutIconTags(path, dobj, ICONPUTA_NotifyWorkbench, TRUE, TAG_DONE); } }
nserror gui_window_save_link(struct gui_window *g, nsurl *url, const char *title) { char fname[1024]; STRPTR openurlstring,linkname; struct DiskObject *dobj = NULL; linkname = ASPrintf("Link_to_%s",FilePart(nsurl_access(url))); if(AslRequestTags(savereq, ASLFR_Window, g->shared->win, ASLFR_SleepWindow, TRUE, ASLFR_TitleText,messages_get("NetSurf"), ASLFR_Screen,scrn, ASLFR_InitialFile,linkname, TAG_DONE)) { strlcpy(fname, savereq->fr_Drawer, 1024); AddPart(fname,savereq->fr_File,1024); ami_set_pointer(g->shared, GUI_POINTER_WAIT, false); if(ami_download_check_overwrite(fname, g->shared->win, 0)) { BPTR fh; if((fh = FOpen(fname,MODE_NEWFILE,0))) { /* \todo Should be URLOpen on OS4.1 */ openurlstring = ASPrintf("openurl \"%s\"\n",nsurl_access(url)); FWrite(fh,openurlstring,1,strlen(openurlstring)); FClose(fh); FreeVec(openurlstring); SetComment(fname, nsurl_access(url)); dobj = GetIconTags(NULL,ICONGETA_GetDefaultName,"url", ICONGETA_GetDefaultType,WBPROJECT, TAG_DONE); dobj->do_DefaultTool = "IconX"; PutIconTags(fname,dobj, ICONPUTA_NotifyWorkbench,TRUE, TAG_DONE); FreeDiskObject(dobj); } FreeVec(linkname); } ami_reset_pointer(g->shared); } return NSERROR_OK; }
int main(int argc, char **argv) { STRPTR newToolTypes[] = { "AROS=RULES", "Tooltypes are actually free-form text", "Ain't that neat?", NULL }; struct DiskObject *icon = GetIconTags ( "writetooltypes", ICONGETA_FailIfUnavailable, FALSE, TAG_DONE ); if (icon != NULL) { STRPTR *oldToolTypes = icon->do_ToolTypes; icon->do_ToolTypes = newToolTypes; if (!PutIconTags("writetooltypes", icon, TAG_DONE)) { printf("ERROR: Failed to write icon.\n"); } icon->do_ToolTypes = oldToolTypes; FreeDiskObject(icon); } else { printf("ERROR: Failed to open icon for file\n"); return 20; } return 0; }
void amiga_icon_superimpose_favicon(char *path, struct hlcache_handle *icon, char *type) { struct DiskObject *dobj = NULL; struct BitMap *bm = NULL; ULONG *icondata1, *icondata2; ULONG width, height; long format = 0; int err = 0; ULONG trans1, pals1; ULONG trans2, pals2; struct ColorRegister *pal1; struct ColorRegister *pal2; if(icon == NULL) return; if(!type) { dobj = GetIconTags(NULL, ICONGETA_GetDefaultType, WBDRAWER, TAG_DONE); } else { dobj = GetIconTags(NULL, ICONGETA_GetDefaultName, type, ICONGETA_GetDefaultType, WBPROJECT, TAG_DONE); } if(dobj == NULL) return; err = IconControl(dobj, ICONCTRLA_GetImageDataFormat,&format, ICONCTRLA_GetImageData1,&icondata1, ICONCTRLA_GetImageData2,&icondata2, ICONCTRLA_GetWidth,&width, ICONCTRLA_GetHeight,&height, TAG_DONE); /* If we have a palette-mapped icon, convert it to a 32-bit one */ if(format == IDFMT_PALETTEMAPPED) { IconControl(dobj, ICONCTRLA_GetTransparentColor1, &trans1, ICONCTRLA_GetPalette1, &pal1, ICONCTRLA_GetPaletteSize1, &pals1, ICONCTRLA_GetTransparentColor2, &trans2, ICONCTRLA_GetPalette2, &pal2, ICONCTRLA_GetPaletteSize2, &pals2, TAG_DONE); icondata1 = amiga_icon_convertcolouricon32((UBYTE *)icondata1, width, height, trans1, pals1, pal1, 0xff); icondata2 = amiga_icon_convertcolouricon32((UBYTE *)icondata2, width, height, trans2, pals2, pal2, 0xff); err = IconControl(dobj, ICONCTRLA_SetImageDataFormat, IDFMT_DIRECTMAPPED, ICONCTRLA_SetImageData1, icondata1, ICONCTRLA_SetImageData2, icondata2, TAG_DONE); } if((format == IDFMT_DIRECTMAPPED) || (format == IDFMT_PALETTEMAPPED)) amiga_icon_superimpose_favicon_internal(icon, dobj); PutIconTags(path, dobj, ICONPUTA_NotifyWorkbench, TRUE, TAG_DONE); FreeDiskObject(dobj); if(format == IDFMT_PALETTEMAPPED) { /* Free the 32-bit data we created */ FreeVec(icondata1); FreeVec(icondata2); } }