void ami_search_set_hourglass(bool active, void *p) { if(active) ami_update_pointer(fwin->win, GUI_POINTER_WAIT); else ami_update_pointer(fwin->win, GUI_POINTER_DEFAULT); }
void ami_drag_icon_show(struct Window *win, const char *type) { struct DiskObject *dobj = NULL; ULONG *icondata1; ULONG width, height; long format = 0; int err = 0; int deftype = WBPROJECT; drag_in_progress = TRUE; if(nsoption_bool(drag_save_icons) == false) { ami_update_pointer(win, AMI_GUI_POINTER_DRAG); return; } else { ami_update_pointer(win, GUI_POINTER_DEFAULT); } if(!strcmp(type, "drawer")) deftype = WBDRAWER; dobj = GetIconTags(NULL, ICONGETA_GetDefaultName, type, ICONGETA_GetDefaultType, deftype, TAG_DONE); err = IconControl(dobj, ICONCTRLA_GetWidth,&width, ICONCTRLA_GetHeight,&height, TAG_DONE); drag_icon_width = width; drag_icon_height = height; drag_icon = OpenWindowTags(NULL, WA_Left, scrn->MouseX - (width/2), WA_Top, scrn->MouseY - (height/2), WA_Width, width, WA_Height, height, WA_PubScreen, scrn, WA_Borderless, TRUE, WA_ToolBox, TRUE, WA_StayTop, TRUE, WA_Opaqueness, 128, WA_OverrideOpaqueness, TRUE, TAG_DONE); /* probably need layouticon and drawinfo stuff too */ DrawIconState(drag_icon->RPort, dobj, NULL, 0, 0, IDS_NORMAL, ICONDRAWA_Frameless, TRUE, ICONDRAWA_Borderless, TRUE, TAG_DONE); }
void ami_drag_icon_close(struct Window *win) { if(drag_icon) CloseWindow(drag_icon); if(win) ami_update_pointer(win, GUI_POINTER_DEFAULT); drag_icon = NULL; drag_in_progress = FALSE; }
/* menu hook functions */ HOOKF(void, ami_history_global_menu_item_project_export, APTR, window, struct IntuiMessage *) { char fname[1024]; struct ami_corewindow *ami_cw; GetAttr(WINDOW_UserData, (Object *)window, (ULONG *)&ami_cw); if(AslRequestTags(savereq, ASLFR_Window, ami_cw->win, ASLFR_SleepWindow, TRUE, ASLFR_TitleText, messages_get("NetSurf"), ASLFR_Screen, scrn, ASLFR_InitialFile, "history.html", TAG_DONE)) { strlcpy(fname, savereq->fr_Drawer, 1024); AddPart(fname, savereq->fr_File, 1024); ami_update_pointer(ami_cw->win, GUI_POINTER_WAIT); global_history_export(fname, NULL); ami_update_pointer(ami_cw->win, GUI_POINTER_DEFAULT); } }
void ami_drag_save(struct Window *win) { ULONG which = WBO_NONE, type; char path[1025], dpath[1025]; ULONG source_size; ami_drag_icon_close(NULL); ami_autoscroll = FALSE; if(nsoption_charp(pubscreen_name) && (strcmp(nsoption_charp(pubscreen_name),"Workbench") == 0)) { which = WhichWorkbenchObject(NULL,scrn->MouseX,scrn->MouseY, WBOBJA_Type,&type, WBOBJA_FullPath,&path, WBOBJA_FullPathSize,1024, WBOBJA_DrawerPath,&dpath, WBOBJA_DrawerPathSize,1024, TAG_DONE); } if((which == WBO_DRAWER) || ((which == WBO_ICON) && (type > WBDRAWER))) { strcpy(path,dpath); } else if(which == WBO_NONE) { if(drag_save == GUI_SAVE_TEXT_SELECTION) ami_drag_selection((struct gui_window *)drag_save_data); else DisplayBeep(scrn); drag_save = 0; drag_save_data = NULL; return; } if(path[0] == '\0') { DisplayBeep(scrn); drag_save = 0; drag_save_data = NULL; return; } ami_update_pointer(win, GUI_POINTER_WAIT); switch(drag_save) { case GUI_SAVE_OBJECT_ORIG: // object case GUI_SAVE_SOURCE: { struct hlcache_handle *c = drag_save_data; BPTR fh = 0; AddPart(path, content_get_title(c), 1024); ami_file_save(AMINS_SAVE_SOURCE, path, win, c, NULL, NULL); } break; case GUI_SAVE_TEXT_SELECTION: // selection AddPart(path,"netsurf_text_selection",1024); struct gui_window *g = (struct gui_window *) drag_save_data; ami_file_save(AMINS_SAVE_SELECTION, path, win, NULL, NULL, g->shared->bw); break; case GUI_SAVE_COMPLETE: { struct hlcache_handle *c = drag_save_data; BPTR lock = 0; AddPart(path, content_get_title(c), 1024); ami_file_save(AMINS_SAVE_COMPLETE, path, win, c, drag_save_gui->favicon, NULL); } break; case GUI_SAVE_OBJECT_NATIVE: { hlcache_handle *c = drag_save_data; AddPart(path, content_get_title(c), 1024); ami_file_save(AMINS_SAVE_IFF, path, win, c, NULL, NULL); } break; default: LOG(("Unsupported drag save operation %ld",drag_save)); break; } drag_save = 0; drag_save_data = NULL; ami_update_pointer(win, GUI_POINTER_DEFAULT); }
void ami_file_save(int type, char *fname, struct Window *win, struct hlcache_handle *object, struct hlcache_handle *favicon, struct browser_window *bw) { BPTR lock, fh; const char *source_data; ULONG source_size; struct bitmap *bm; ami_update_pointer(win, GUI_POINTER_WAIT); if(ami_download_check_overwrite(fname, win, 0)) { switch(type) { case AMINS_SAVE_SOURCE: if((source_data = content_get_source_data(object, &source_size))) { BPTR fh; if(fh = FOpen(fname, MODE_NEWFILE,0)) { FWrite(fh, source_data, 1, source_size); FClose(fh); } } break; case AMINS_SAVE_TEXT: save_as_text(object, fname); break; case AMINS_SAVE_COMPLETE: if(lock = CreateDir(fname)) { UnLock(lock); save_complete(object, fname, ami_file_set_type); amiga_icon_superimpose_favicon(fname, favicon, NULL); } break; case AMINS_SAVE_PDF: #ifdef WITH_PDF_EXPORT if(save_as_pdf(object, fname)) amiga_icon_superimpose_favicon(fname, favicon, "pdf"); #endif break; case AMINS_SAVE_IFF: if((bm = content_get_bitmap(object))) { bm->url = (char *)nsurl_access(hlcache_handle_get_url(object)); bm->title = (char *)content_get_title(object); bitmap_save(bm, fname, 0); } #ifdef WITH_NS_SVG else if(ami_mime_compare(object, "svg") == true) { ami_save_svg(object, fname); } #endif break; case AMINS_SAVE_SELECTION: if(source_data = browser_window_get_selection(bw)) { if(fh = FOpen(fname, MODE_NEWFILE,0)) { FWrite(fh, source_data, 1, strlen(source_data)); FClose(fh); } free((void *)source_data); } break; } if(object) SetComment(fname, nsurl_access(hlcache_handle_get_url(object))); } ami_update_pointer(win, GUI_POINTER_DEFAULT); }
/* reset the mouse pointer back to what NetSurf last set it as */ void ami_reset_pointer(struct gui_window_2 *gwin) { ami_update_pointer(gwin->win, gwin->mouse_pointer); }
void ami_set_pointer(struct gui_window_2 *gwin, gui_pointer_shape shape, bool update) { if(gwin->mouse_pointer == shape) return; ami_update_pointer(gwin->win, shape); if(update == true) gwin->mouse_pointer = shape; }