void ami_print_progress(void) { ami_print_info.objects[OID_MAIN] = WindowObj, WA_ScreenTitle, ami_gui_get_screen_title(), WA_Title, messages_get("Printing"), WA_Activate, TRUE, WA_DepthGadget, TRUE, WA_DragBar, TRUE, WA_CloseGadget, FALSE, WA_SizeGadget, TRUE, WA_PubScreen,scrn, //WINDOW_SharedPort,sport, WINDOW_UserData, &ami_print_info, WINDOW_IconifyGadget, FALSE, WINDOW_LockHeight,TRUE, WINDOW_Position, WPOS_CENTERSCREEN, WINDOW_ParentGroup, ami_print_info.gadgets[GID_MAIN] = LayoutVObj, LAYOUT_AddChild, ami_print_info.gadgets[GID_STATUS] = FuelGaugeObj, GA_ID,GID_STATUS, FUELGAUGE_Min,0, FUELGAUGE_Max,ami_print_info.pages, FUELGAUGE_Level,0, FUELGAUGE_Ticks,11, FUELGAUGE_ShortTicks,TRUE, FUELGAUGE_Percent,TRUE, FUELGAUGE_Justification,FGJ_CENTER, FuelGaugeEnd, CHILD_NominalSize,TRUE, CHILD_WeightedHeight,0, /* LAYOUT_AddChild, ami_print_info.gadgets[GID_CANCEL] = ButtonObj, GA_ID,GID_CANCEL, GA_Disabled,TRUE, GA_RelVerify,TRUE, GA_Text,messages_get("Abort"), GA_TabCycle,TRUE, ButtonEnd, */ EndGroup, EndWindow; ami_print_info.win = (struct Window *)RA_OpenWindow(ami_print_info.objects[OID_MAIN]); }
static struct gui_download_window *gui_download_window_create(download_context *ctx, struct gui_window *gui) { const char *url = nsurl_access(download_context_get_url(ctx)); unsigned long total_size = download_context_get_total_length(ctx); struct gui_download_window *dw; char *dl_filename = ami_utf8_easy(download_context_get_filename(ctx)); APTR va[3]; dw = ami_misc_allocvec_clear(sizeof(struct gui_download_window), 0); if(gui && (!IsListEmpty(&gui->dllist)) && (dw->dln = (struct dlnode *)FindName(&gui->dllist,url))) { strcpy(dw->fname, dw->dln->filename); free(dw->dln->node.ln_Name); dw->dln->node.ln_Name = NULL; } else { if(AslRequestTags(savereq, ASLFR_Window, gui->shared->win, ASLFR_SleepWindow, TRUE, ASLFR_TitleText, messages_get("NetSurf"), ASLFR_Screen, scrn, ASLFR_InitialFile, dl_filename, TAG_DONE)) { strlcpy(dw->fname, savereq->fr_Drawer, 1024); AddPart((STRPTR)&dw->fname,savereq->fr_File,1024); if(!ami_download_check_overwrite(dw->fname, gui->shared->win, total_size)) { FreeVec(dw); return NULL; } } else { FreeVec(dw); return NULL; } } if(dl_filename) ami_utf8_free(dl_filename); dw->size = total_size; dw->downloaded = 0; if(gui) dw->bw = gui->bw; dw->url = url; va[0] = (APTR)dw->downloaded; va[1] = (APTR)dw->size; va[2] = 0; if(!(dw->fh = FOpen((STRPTR)&dw->fname,MODE_NEWFILE,0))) { FreeVec(dw); return NULL; } dw->objects[OID_MAIN] = WindowObj, WA_ScreenTitle, ami_gui_get_screen_title(), WA_Title, dw->url, WA_Activate, TRUE, WA_DepthGadget, TRUE, WA_DragBar, TRUE, WA_CloseGadget, FALSE, WA_SizeGadget, TRUE, WA_PubScreen,scrn, WINDOW_SharedPort,sport, WINDOW_UserData,dw, WINDOW_IconifyGadget, FALSE, WINDOW_LockHeight,TRUE, WINDOW_Position, WPOS_CENTERSCREEN, WINDOW_ParentGroup, dw->objects[GID_MAIN] = LayoutVObj, LAYOUT_AddChild, dw->objects[GID_STATUS] = FuelGaugeObj, GA_ID,GID_STATUS, GA_Text,messages_get("amiDownload"), FUELGAUGE_Min,0, FUELGAUGE_Max,total_size, FUELGAUGE_Level,0, FUELGAUGE_Ticks,11, FUELGAUGE_ShortTicks,TRUE, FUELGAUGE_VarArgs,va, FUELGAUGE_Percent,FALSE, FUELGAUGE_Justification,FGJ_CENTER, FuelGaugeEnd, CHILD_NominalSize,TRUE, CHILD_WeightedHeight,0, LAYOUT_AddChild, dw->objects[GID_CANCEL] = ButtonObj, GA_ID,GID_CANCEL, GA_RelVerify,TRUE, GA_Text,messages_get("Abort"), GA_TabCycle,TRUE, ButtonEnd, EndGroup, EndWindow; dw->win = (struct Window *)RA_OpenWindow(dw->objects[OID_MAIN]); dw->ctx = ctx; dw->node = AddObject(window_list,AMINS_DLWINDOW); dw->node->objstruct = dw; downloads_in_progress++; return dw; }
/** * Change the displayed search status. * * \param gwin gui window to open search for. */ void ami_search_open(struct gui_window *gwin) { search_insert = true; if(fwin) { browser_window_search_clear(fwin->gwin->bw); fwin->gwin->shared->searchwin = NULL; fwin->gwin = gwin; gwin->shared->searchwin = fwin; WindowToFront(fwin->win); ActivateWindow(fwin->win); return; } fwin = ami_misc_allocvec_clear(sizeof(struct find_window), 0); fwin->objects[OID_MAIN] = WindowObj, WA_ScreenTitle, ami_gui_get_screen_title(), WA_Title,messages_get("FindTextNS"), WA_Activate, TRUE, WA_DepthGadget, TRUE, WA_DragBar, TRUE, WA_CloseGadget, TRUE, WA_SizeGadget, TRUE, WA_PubScreen,scrn, WINDOW_SharedPort,sport, WINDOW_UserData,fwin, WINDOW_IconifyGadget, FALSE, WINDOW_LockHeight,TRUE, WINDOW_Position, WPOS_CENTERSCREEN, WINDOW_ParentGroup, fwin->objects[GID_MAIN] = LayoutVObj, LAYOUT_AddChild, fwin->objects[GID_SEARCHSTRING] = StringObj, GA_ID,GID_SEARCHSTRING, GA_TabCycle,TRUE, GA_RelVerify,TRUE, StringEnd, CHILD_WeightedHeight,0, LAYOUT_AddChild, fwin->objects[GID_CASE] = CheckBoxObj, GA_ID,GID_CASE, GA_Text,messages_get("CaseSens"), GA_Selected,FALSE, GA_TabCycle,TRUE, GA_RelVerify,TRUE, CheckBoxEnd, LAYOUT_AddChild, fwin->objects[GID_SHOWALL] = CheckBoxObj, GA_ID,GID_SHOWALL, GA_Text,messages_get("ShowAll"), GA_Selected,FALSE, GA_TabCycle,TRUE, GA_RelVerify,TRUE, CheckBoxEnd, LAYOUT_AddChild, LayoutHObj, LAYOUT_AddChild, fwin->objects[GID_PREV] = ButtonObj, GA_ID,GID_PREV, GA_RelVerify,TRUE, GA_Text,messages_get("Prev"), GA_TabCycle,TRUE, GA_Disabled,TRUE, ButtonEnd, CHILD_WeightedHeight,0, LAYOUT_AddChild, fwin->objects[GID_NEXT] = ButtonObj, GA_ID,GID_NEXT, GA_RelVerify,TRUE, GA_Text,messages_get("Next"), GA_TabCycle,TRUE, GA_Disabled,TRUE, ButtonEnd, LayoutEnd, CHILD_WeightedHeight,0, EndGroup, EndWindow; fwin->win = (struct Window *)RA_OpenWindow(fwin->objects[OID_MAIN]); fwin->gwin = gwin; fwin->node = AddObject(window_list,AMINS_FINDWINDOW); fwin->node->objstruct = fwin; gwin->shared->searchwin = fwin; ActivateLayoutGadget((struct Gadget *)fwin->objects[GID_MAIN], fwin->win, NULL, (ULONG)fwin->objects[GID_SEARCHSTRING]); }
void main_open_window() { main_freemem_hook = freemem_alloc_hook(); char *initdir = getenv("DB101_LASTDIR"); if(initdir) strcpy(lastdir, initdir); variables_init(); console_init(); stacktrace_init(); source_init(); disassembler_init(); sourcelist_init(); pipe_init(); AppPort = IExec->AllocSysObjectTags(ASOT_PORT, TAG_DONE); /* Create the window object. */ if(( MainWinObj = WindowObject, WA_ScreenTitle, "Debug 101", WA_Title, "Debug 101 v1.1.0 BETA - secret edition ;)", WA_Width, 1024, WA_Height, 768, WA_DepthGadget, TRUE, WA_SizeGadget, TRUE, WA_DragBar, TRUE, WA_CloseGadget, TRUE, WA_Activate, TRUE, WINDOW_NewMenu, mynewmenu, WINDOW_MenuUserData, WGUD_IGNORE, WINDOW_IconifyGadget, TRUE, WINDOW_IconTitle, "Debug 101", WINDOW_AppPort, AppPort, WINDOW_Position, WPOS_CENTERSCREEN, /* there is no HintInfo array set up here, instead we define the ** strings directly when each gadget is created (OM_NEW) */ WINDOW_GadgetHelp, TRUE, WINDOW_ParentGroup, MainObj[GAD_TOPLAYOUT] = VLayoutObject, LAYOUT_AddChild, HLayoutObject, LAYOUT_AddChild, MainObj[GAD_SELECT_BUTTON] = ButtonObject, GA_ID, GAD_SELECT_BUTTON, GA_Text, "Select file", GA_RelVerify, TRUE, GA_HintInfo, "Push to select file", ButtonEnd, CHILD_WeightedWidth, 0, LAYOUT_AddChild, MainObj[GAD_RELOAD_BUTTON] = ButtonObject, GA_ID, GAD_RELOAD_BUTTON, GA_Text, "Reload", GA_RelVerify, TRUE, GA_Disabled, TRUE, GA_HintInfo, "Push to reload previously executed file", ButtonEnd, CHILD_WeightedWidth, 0, LAYOUT_AddChild, MainObj[GAD_FILENAME_STRING] = StringObject, GA_ID, GAD_FILENAME_STRING, GA_RelVerify, TRUE, GA_HintInfo, "Filename", GA_Disabled, TRUE, GA_ReadOnly, TRUE, STRINGA_MinVisible, 10, STRINGA_TextVal, "Select File", StringEnd, LAYOUT_AddChild, MainObj[GAD_ATTACH_BUTTON] = ButtonObject, GA_ID, GAD_ATTACH_BUTTON, GA_Text, "Attach", GA_RelVerify, TRUE, GA_HintInfo, "Push to attach to process", ButtonEnd, CHILD_WeightedWidth, 0, LAYOUT_AddChild, SpaceObject, SPACE_MinWidth, 24, SpaceEnd, LAYOUT_AddChild, MainObj[GAD_START_BUTTON] = ButtonObject, GA_ID, GAD_START_BUTTON, GA_RelVerify, TRUE, GA_Text, "Continue", GA_Disabled, TRUE, ButtonEnd, CHILD_WeightedHeight, 0, LAYOUT_AddChild, MainObj[GAD_PAUSE_BUTTON] = ButtonObject, GA_ID, GAD_PAUSE_BUTTON, GA_RelVerify, TRUE, GA_Text, "Pause", GA_Disabled, TRUE, ButtonEnd, CHILD_WeightedHeight, 0, LAYOUT_AddChild, MainObj[GAD_KILL_BUTTON] = ButtonObject, GA_ID, GAD_KILL_BUTTON, GA_RelVerify, TRUE, GA_Text, "Kill", GA_Disabled, TRUE, ButtonEnd, CHILD_WeightedHeight, 0, #if 0 LAYOUT_AddChild, CrashButtonObj = ButtonObject, GA_ID, GAD_CRASH_BUTTON, GA_RelVerify, TRUE, GA_Text, "Crash", GA_Disabled, TRUE, ButtonEnd, CHILD_WeightedHeight, 0, #endif LAYOUT_AddChild, MainObj[GAD_STEPOVER_BUTTON] = ButtonObject, GA_ID, GAD_STEPOVER_BUTTON, GA_RelVerify, TRUE, GA_Text, "Step Over", GA_Disabled, TRUE, ButtonEnd, CHILD_WeightedHeight, 0, LAYOUT_AddChild, MainObj[GAD_STEPINTO_BUTTON] = ButtonObject, GA_ID, GAD_STEPINTO_BUTTON, GA_RelVerify, TRUE, GA_Text, "Step Into", GA_Disabled, TRUE, ButtonEnd, CHILD_WeightedHeight, 0, LAYOUT_AddChild, MainObj[GAD_STEPOUT_BUTTON] = ButtonObject, GA_ID, GAD_STEPOUT_BUTTON, GA_RelVerify, TRUE, GA_Text, "Step Out", GA_Disabled, TRUE, ButtonEnd, CHILD_WeightedHeight, 0, LAYOUT_AddChild, SpaceObject, SPACE_MinWidth, 24, SpaceEnd, LAYOUT_AddChild, MainObj[GAD_SETBREAK_BUTTON] = ButtonObject, GA_ID, GAD_SETBREAK_BUTTON, GA_RelVerify, TRUE, GA_Text, "Breaks", GA_Disabled, TRUE, ButtonEnd, CHILD_WeightedHeight, 0, LAYOUT_AddChild, MainObj[GAD_HEX_BUTTON] = ButtonObject, GA_ID, GAD_HEX_BUTTON, GA_RelVerify, TRUE, GA_Text, "Hex", GA_Disabled, TRUE, ButtonEnd, CHILD_WeightedHeight, 0, EndMember, CHILD_WeightedHeight, 0, LAYOUT_AddChild, HLayoutObject, LAYOUT_AddChild, MainObj[GAD_STACKTRACE_LISTBROWSER] = ListBrowserObject, GA_ID, GAD_STACKTRACE_LISTBROWSER, GA_RelVerify, TRUE, GA_TabCycle, TRUE, LISTBROWSER_AutoFit, TRUE, LISTBROWSER_Labels, &stacktrace_list, // LISTBROWSER_ColumnInfo, columninfo, LISTBROWSER_ColumnTitles, FALSE, LISTBROWSER_ShowSelected, FALSE, LISTBROWSER_Striping, LBS_ROWS, ListBrowserEnd, LAYOUT_AddChild, MainObj[GAD_VARIABLES_LISTBROWSER] = ListBrowserObject, GA_ID, GAD_VARIABLES_LISTBROWSER, GA_RelVerify, TRUE, GA_TabCycle, TRUE, LISTBROWSER_Hierarchical, TRUE, //LISTBROWSER_AutoFit, TRUE, LISTBROWSER_Labels, &variable_list, LISTBROWSER_ColumnInfo, variablescolumninfo, LISTBROWSER_ColumnTitles, TRUE, //LISTBROWSER_ShowSelected, TRUE, /* not really needed yet */ LISTBROWSER_Striping, LBS_ROWS, LISTBROWSER_SortColumn, 0, LISTBROWSER_TitleClickable, TRUE, ListBrowserEnd, EndMember, LAYOUT_AddChild, HLayoutObject, LAYOUT_AddChild, MainObj[GAD_CLICKTAB] = ClickTabObject, GA_Text, PageLabels_1, CLICKTAB_Current, 0, CLICKTAB_PageGroup, PageObject, PAGE_Add, VLayoutObject, //LAYOUT_SpaceOuter, TRUE, //LAYOUT_DeferLayout, TRUE, LAYOUT_AddChild, MainObj[GAD_SOURCE_LISTBROWSER] = ListBrowserObject, GA_ID, GAD_SOURCE_LISTBROWSER, GA_RelVerify, TRUE, GA_TabCycle, TRUE, LISTBROWSER_AutoFit, TRUE, LISTBROWSER_Labels, &source_list, LISTBROWSER_ColumnInfo, sourcecolumninfo, LISTBROWSER_ColumnTitles, TRUE, LISTBROWSER_ShowSelected, TRUE, //LISTBROWSER_Striping, LBS_ROWS, ListBrowserEnd, EndMember, PAGE_Add, VLayoutObject, LAYOUT_AddChild, MainObj[GAD_DISASSEMBLER_LISTBROWSER] = ListBrowserObject, GA_ID, GAD_DISASSEMBLER_LISTBROWSER, GA_RelVerify, TRUE, GA_TabCycle, TRUE, //GA_TextAttr, &courier_font, LISTBROWSER_AutoFit, TRUE, LISTBROWSER_Labels, &disassembly_list, LISTBROWSER_ShowSelected, TRUE, LISTBROWSER_Striping, LBS_ROWS, ListBrowserEnd, LAYOUT_AddChild, HLayoutObject, LAYOUT_AddChild, MainObj[GAD_DISASSEMBLER_STEP_BUTTON] = ButtonObject, GA_ID, GAD_DISASSEMBLER_STEP_BUTTON, GA_RelVerify, TRUE, GA_Text, "Step", ButtonEnd, CHILD_WeightedHeight, 0, LAYOUT_AddChild, MainObj[GAD_DISASSEMBLER_SKIP_BUTTON] = ButtonObject, GA_ID, GAD_DISASSEMBLER_SKIP_BUTTON, GA_RelVerify, TRUE, GA_Text, "Skip", ButtonEnd, CHILD_WeightedHeight, 0, EndMember, CHILD_WeightedHeight, 0, EndMember, PageEnd, EndMember, LAYOUT_WeightBar, TRUE, LAYOUT_AddChild, VLayoutObject, LAYOUT_AddChild, MainObj[GAD_SOURCELIST_LISTBROWSER] = ListBrowserObject, GA_ID, GAD_SOURCELIST_LISTBROWSER, GA_RelVerify, TRUE, GA_TabCycle, TRUE, LISTBROWSER_AutoFit, TRUE, LISTBROWSER_Labels, &sourcelist_list, LISTBROWSER_ShowSelected, TRUE, LISTBROWSER_Striping, LBS_ROWS, ListBrowserEnd, LAYOUT_AddChild, MainObj[GAD_IMPORT_BUTTON] = ButtonObject, GA_ID, GAD_IMPORT_BUTTON, GA_RelVerify, TRUE, GA_Text, "Import externals", ButtonEnd, CHILD_WeightedHeight, 0, EndMember, CHILD_WeightedWidth, 20, EndMember, LAYOUT_AddChild, HLayoutObject, LAYOUT_AddChild, MainObj[GAD_CONSOLE_LISTBROWSER] = ListBrowserObject, GA_ID, GAD_CONSOLE_LISTBROWSER, GA_RelVerify, TRUE, GA_TabCycle, TRUE, LISTBROWSER_AutoFit, TRUE, LISTBROWSER_Labels, &console_list, ListBrowserEnd, EndMember, LAYOUT_AddChild, HLayoutObject, LAYOUT_AddChild, MainObj[GAD_AREXX_STRING] = StringObject, GA_ID, GAD_AREXX_STRING, GA_RelVerify, TRUE, GA_Disabled, FALSE, GA_ReadOnly, FALSE, STRINGA_TextVal, "", StringEnd, LAYOUT_AddChild, MainObj[GAD_AREXX_BUTTON] = ButtonObject, GA_ID, GAD_AREXX_BUTTON, GA_RelVerify, TRUE, GA_Text, "Send", GA_Disabled, FALSE, ButtonEnd, CHILD_WeightedHeight, 0, CHILD_WeightedWidth, 0, LAYOUT_AddChild, MainObj[GAD_SIGNAL_BUTTON] = ButtonObject, GA_ID, GAD_SIGNAL_BUTTON, GA_RelVerify, TRUE, GA_Text, "Signal", GA_Disabled, FALSE, ButtonEnd, CHILD_WeightedHeight, 0, CHILD_WeightedWidth, 0, LAYOUT_AddChild, MainObj[GAD_X_BUTTON] = ButtonObject, GA_ID, GAD_X_BUTTON, GA_RelVerify, TRUE, GA_Text, "X", GA_Disabled, FALSE, ButtonEnd, CHILD_WeightedHeight, 0, CHILD_WeightedWidth, 0, EndMember, CHILD_WeightedHeight, 0, EndMember, EndWindow)) { /* Open the window. */ if( mainwin = (struct Window *) RA_OpenWindow(MainWinObj) ) { main_window_is_open = TRUE; button_set_start(); } } return; }
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; }
/// HandleInput_Main_Win BOOL HandleInput_Main_Win(void) { uint32 result = 0; uint16 code = 0; BOOL done = FALSE; while ((result = RA_HandleInput(win, &code))) { switch(result & WMHI_CLASSMASK) { case WMHI_CLOSEWINDOW: done = TRUE; break; case WMHI_GADGETUP: switch (result & WMHI_GADGETMASK) { case OBJ_LBROWSER_BROW: { uint32 retval = iget(OBJ(OBJ_LBROWSER_BROW), LISTBROWSER_RelEvent); switch(retval) { case LBRE_CHECKED: case LBRE_UNCHECKED: { struct URL_BrowserNode *bn; bn = (struct URL_BrowserNode *)iget(OBJ(OBJ_LBROWSER_BROW), LISTBROWSER_SelectedNode); if (retval == LBRE_UNCHECKED) SET_FLAG(bn->ubn_Flags,UNF_DISABLED); else CLEAR_FLAG(bn->ubn_Flags,UNF_DISABLED); } } if (retval != LBRE_DOUBLECLICK)break; // we deliberately go on executing following case OBJ_EDIT_BROW // because a double click mean the same as clicking edit button } case OBJ_EDIT_BROW: { struct URL_BrowserNode *bn; bn = (struct URL_BrowserNode *)iget(OBJ(OBJ_LBROWSER_BROW), LISTBROWSER_SelectedNode); updateBrowserWindow(bn); edit_brow_window = RA_OpenWindow(edit_brow_win); break; } case OBJ_LBROWSER_MAIL: { uint32 retval = iget(OBJ(OBJ_LBROWSER_MAIL), LISTBROWSER_RelEvent); switch(retval) { case LBRE_CHECKED: case LBRE_UNCHECKED: { struct URL_MailerNode *mn; mn = (struct URL_MailerNode *)iget(OBJ(OBJ_LBROWSER_MAIL), LISTBROWSER_SelectedNode); if (retval == LBRE_UNCHECKED) SET_FLAG(mn->umn_Flags,UNF_DISABLED); else CLEAR_FLAG(mn->umn_Flags,UNF_DISABLED); } } if (retval != LBRE_DOUBLECLICK) break; // we deliberately go on executing following case OBJ_EDIT_MAIL // because a double click mean the same as clicking edit button } case OBJ_EDIT_MAIL: { struct URL_MailerNode *mn; mn = (struct URL_MailerNode *)iget(OBJ(OBJ_LBROWSER_MAIL), LISTBROWSER_SelectedNode); updateMailerWindow(mn); edit_mail_window = RA_OpenWindow(edit_mail_win); break; } case OBJ_LBROWSER_FTP: { uint32 retval = iget(OBJ(OBJ_LBROWSER_FTP), LISTBROWSER_RelEvent); switch(retval) { case LBRE_CHECKED: case LBRE_UNCHECKED: { struct URL_FTPNode *fn; fn = (struct URL_FTPNode *)iget(OBJ(OBJ_LBROWSER_FTP), LISTBROWSER_SelectedNode); if (retval == LBRE_UNCHECKED) SET_FLAG(fn->ufn_Flags,UNF_DISABLED); else CLEAR_FLAG(fn->ufn_Flags,UNF_DISABLED); } } if (retval != LBRE_DOUBLECLICK) break; // we deliberately go on executing following case OBJ_EDIT_FTP // because a double click mean the same as clicking edit button } case OBJ_EDIT_FTP: { struct URL_FTPNode *fn; fn = (struct URL_FTPNode *)iget(OBJ(OBJ_LBROWSER_FTP), LISTBROWSER_SelectedNode); updateFTPWindow(fn); edit_ftp_window = RA_OpenWindow(edit_ftp_win); break; } case OBJ_USE: case OBJ_SAVE: case OBJ_APPLY: storePrefs((result & WMHI_GADGETMASK)==OBJ_SAVE); if((result & WMHI_GADGETMASK)!=OBJ_APPLY) done=TRUE; break; case OBJ_CANCEL: done=TRUE; break; } break; case WMHI_ICONIFY: if (RA_Iconify(win)) { window = NULL; if (edit_brow_window) { RA_CloseWindow(edit_brow_win); edit_brow_window = NULL; } if (edit_mail_window) { RA_CloseWindow(edit_mail_win); edit_mail_window = NULL; } if (edit_ftp_window) { RA_CloseWindow(edit_ftp_win); edit_ftp_window = NULL; } } break; case WMHI_UNICONIFY: window = RA_OpenWindow(win); break; } } return (done); }
int main() { initStrings(); localizeStrings(PageLabels); localizeNewMenu(menu); if(!(OpenURLBase = IExec->OpenLibrary(OPENURLNAME, OPENURLVER))) return -1; if(!(IOpenURL = (struct OpenURLIFace*)IExec->GetInterface(OpenURLBase, "main", 1L, NULL))) return -1; RA_SetUpHook(idcmphook, IDCMPFunc, NULL); if((AppPort = IExec->AllocSysObjectTags(ASOT_PORT, TAG_DONE)) != NULL) { IExec->NewList(&list_Brow); IExec->NewList(&list_Mail); IExec->NewList(&list_FTPs); win = make_window(); edit_brow_win = make_edit_brow_win(); edit_mail_win = make_edit_mail_win(); edit_ftp_win = make_edit_ftp_win(); loadPrefs(URL_GetPrefs_Mode_InUse); // Set up inter-group label alignment iset(OBJ(OBJ_FTP_ALIGN1), LAYOUT_AlignLabels, OBJ(OBJ_FTP_ALIGN2)); iset(OBJ(OBJ_MAIL_ALIGN1), LAYOUT_AlignLabels, OBJ(OBJ_MAIL_ALIGN2)); iset(OBJ(OBJ_LBROWSER_BROW), ICA_TARGET, OBJ(OBJ_EDIT_BROW), ICA_MAP, lst2btn); if((window = RA_OpenWindow(win)) != NULL) { uint32 sigmask; BOOL done = FALSE; sigmask = iget(win, WINDOW_SigMask); while (!done) { uint32 siggot; siggot = IExec->Wait(sigmask); if (siggot & sigmask) { done = HandleInput_Main_Win(); HandleInput_Edit_Brow_Win(); HandleInput_Edit_Mail_Win(); HandleInput_Edit_FTP_Win(); } } } IIntuition->DisposeObject(edit_ftp_win); IIntuition->DisposeObject(edit_mail_win); IIntuition->DisposeObject(edit_brow_win); IIntuition->DisposeObject(win); // The hidden chooser isn't attached to anything, // so we must dispose of it ourselves... IIntuition->DisposeObject(OBJ(OBJ_HIDDEN_CHOOSER)); IListBrowser->FreeListBrowserList(&list_FTPs); IListBrowser->FreeListBrowserList(&list_Mail); IListBrowser->FreeListBrowserList(&list_Brow); IExec->FreeSysObject(ASOT_PORT, AppPort); } IExec->DropInterface((struct Interface*)IOpenURL); IExec->CloseLibrary(OpenURLBase); uninitStrings(); return 0; }
void modules_open_window() { if(modwin) return; IExec->NewList(&mod_listbrowser_list); if(ModObj[MOD_WINDOW] = WindowObject, WA_ScreenTitle, "Debug 101", WA_Title, "Modules", WA_Width, 600, WA_Height, 400, WA_DepthGadget, TRUE, WA_SizeGadget, TRUE, WA_DragBar, TRUE, WA_CloseGadget, TRUE, WA_Activate, TRUE, WINDOW_Position, WPOS_CENTERSCREEN, WINDOW_GadgetHelp, TRUE, WINDOW_ParentGroup, VLayoutObject, LAYOUT_SpaceOuter, TRUE, LAYOUT_DeferLayout, TRUE, LAYOUT_AddChild, HLayoutObject, LAYOUT_AddChild, ModObj[MOD_MODULES_LISTBROWSER] = ListBrowserObject, GA_ID, MOD_MODULES_LISTBROWSER, GA_RelVerify, TRUE, GA_TabCycle, TRUE, LISTBROWSER_AutoFit, TRUE, LISTBROWSER_ColumnInfo, mod_colinfo, LISTBROWSER_ColumnTitles, TRUE, LISTBROWSER_Labels, &mod_listbrowser_list, LISTBROWSER_ShowSelected, TRUE, ListBrowserEnd, LAYOUT_AddChild, VLayoutObject, LAYOUT_AddChild, ModObj[MOD_PATH_STRING] = StringObject, GA_ID, MOD_PATH_STRING, GA_RelVerify, TRUE, STRINGA_Buffer, mod_string_buffer, STRINGA_TextVal, "", STRINGA_MinVisible, 10, STRINGA_MaxChars, 1024, StringEnd, CHILD_WeightedHeight, 0, LAYOUT_AddChild, ModObj[MOD_PATH_BUTTON] = ButtonObject, GA_ID, MOD_PATH_BUTTON, GA_RelVerify, TRUE, GA_Text, "Select path", ButtonEnd, CHILD_WeightedHeight, 0, SPACE, EndMember, EndMember, LAYOUT_AddChild, HLayoutObject, LAYOUT_AddChild, ModObj[MOD_FLUSH_BUTTON] = ButtonObject, GA_ID, MOD_FLUSH_BUTTON, GA_RelVerify, TRUE, GA_Text, "Flush", ButtonEnd, LAYOUT_AddChild, ModObj[MOD_DELETE_BUTTON] = ButtonObject, GA_ID, MOD_DELETE_BUTTON, GA_RelVerify, TRUE, GA_Text, "Delete", ButtonEnd, LAYOUT_AddChild, ModObj[MOD_NEW_STRING] = StringObject, GA_ID, MOD_NEW_STRING, STRINGA_TextVal, "", STRINGA_MinVisible, 10, STRINGA_MaxChars, 1024, StringEnd, CHILD_WeightedWidth, 40, LAYOUT_AddChild, ModObj[MOD_NEW_BUTTON] = ButtonObject, GA_ID, MOD_NEW_BUTTON, GA_RelVerify, TRUE, GA_Text, "New", ButtonEnd, EndMember, CHILD_WeightedHeight, 0, LAYOUT_AddChild, HLayoutObject, LAYOUT_AddChild, ModObj[MOD_SAVE_BUTTON] = ButtonObject, GA_ID, MOD_SAVE_BUTTON, GA_RelVerify, TRUE, GA_Text, "Save", ButtonEnd, LAYOUT_AddChild, ModObj[MOD_USE_BUTTON] = ButtonObject, GA_ID, MOD_USE_BUTTON, GA_RelVerify, TRUE, GA_Text, "Use", ButtonEnd, EndMember, CHILD_WeightedHeight, 0, EndGroup, EndWindow) { if(modwin = (struct Window *) RA_OpenWindow(ModObj[MOD_WINDOW])) { IIntuition->SetWindowAttr(mainwin, WA_BusyPointer, (APTR)TRUE, 0L); modules_update_window(); modules_event_loop(); modules_close_window(); IIntuition->SetWindowAttr(mainwin, WA_BusyPointer, (APTR)FALSE, 0L); } } }
static void ami_history_redraw(struct history_window *hw) { struct IBox *bbox; ULONG xs,ys; struct redraw_context ctx = { .interactive = true, .background_images = true, .plot = &amiplot }; GetAttr(SCROLLER_Top,hw->objects[OID_HSCROLL],(ULONG *)&xs); GetAttr(SCROLLER_Top,hw->objects[OID_VSCROLL],(ULONG *)&ys); if(ami_gui_get_space_box(hw->objects[GID_BROWSER], &bbox) != NSERROR_OK) { amiga_warn_user("NoMemory", ""); return; } glob = hw->gg; SetRPAttrs(glob->rp, RPTAG_APenColor, 0xffffffff, TAG_DONE); RectFill(glob->rp, 0, 0, bbox->Width - 1, bbox->Height - 1); browser_window_history_redraw_rectangle(hw->gw->bw, xs, ys, bbox->Width + xs, bbox->Height + ys, 0, 0, &ctx); ami_gui_set_default_gg(); ami_clearclipreg(hw->gg); ami_history_update_extent(hw); BltBitMapRastPort(hw->gg->bm, 0, 0, hw->win->RPort, bbox->Left, bbox->Top, bbox->Width, bbox->Height, 0x0C0); ami_gui_free_space_box(bbox); } /* exported interface documented in amiga/history_local.h */ void ami_history_open(struct gui_window *gw) { struct history *history; int width, height; if (gw->bw == NULL) return; history = browser_window_get_history(gw->bw); if (history == NULL) return; if(!gw->hw) { gw->hw = ami_misc_allocvec_clear(sizeof(struct history_window), 0); gw->hw->gg = ami_misc_allocvec_clear(sizeof(struct gui_globals), 0); ami_init_layers(gw->hw->gg, scrn->Width, scrn->Height, false); gw->hw->gw = gw; browser_window_history_size(gw->bw, &width, &height); gw->hw->scrollerhook.h_Entry = (void *)ami_history_scroller_hook; gw->hw->scrollerhook.h_Data = gw->hw; gw->hw->objects[OID_MAIN] = WindowObj, WA_ScreenTitle, ami_gui_get_screen_title(), WA_Title, messages_get("History"), WA_Activate, TRUE, WA_DepthGadget, TRUE, WA_DragBar, TRUE, WA_CloseGadget, TRUE, WA_SizeGadget, TRUE, WA_PubScreen,scrn, WA_InnerWidth,width, WA_InnerHeight,height + 10, WINDOW_SharedPort,sport, WINDOW_UserData,gw->hw, WINDOW_IconifyGadget, FALSE, WINDOW_GadgetHelp, TRUE, WINDOW_Position, WPOS_CENTERSCREEN, WINDOW_HorizProp,1, WINDOW_VertProp,1, WINDOW_IDCMPHook,&gw->hw->scrollerhook, WINDOW_IDCMPHookBits,IDCMP_IDCMPUPDATE, // WA_ReportMouse,TRUE, WA_IDCMP,IDCMP_MOUSEBUTTONS | IDCMP_NEWSIZE, // | IDCMP_MOUSEMOVE, WINDOW_ParentGroup, gw->hw->objects[GID_MAIN] = LayoutVObj, LAYOUT_AddChild, gw->hw->objects[GID_BROWSER] = SpaceObj, GA_ID,GID_BROWSER, // SPACE_MinWidth,width, // SPACE_MinHeight,height, SpaceEnd, EndGroup, EndWindow; gw->hw->win = (struct Window *)RA_OpenWindow(gw->hw->objects[OID_MAIN]); gw->hw->node = AddObject(window_list,AMINS_HISTORYWINDOW); gw->hw->node->objstruct = gw->hw; GetAttr(WINDOW_HorizObject,gw->hw->objects[OID_MAIN],(ULONG *)&gw->hw->objects[OID_HSCROLL]); GetAttr(WINDOW_VertObject,gw->hw->objects[OID_MAIN],(ULONG *)&gw->hw->objects[OID_VSCROLL]); RefreshSetGadgetAttrs((APTR)gw->hw->objects[OID_VSCROLL],gw->hw->win,NULL, GA_ID,OID_VSCROLL, SCROLLER_Top,0, ICA_TARGET,ICTARGET_IDCMP, TAG_DONE); RefreshSetGadgetAttrs((APTR)gw->hw->objects[OID_HSCROLL],gw->hw->win,NULL, GA_ID,OID_HSCROLL, SCROLLER_Top,0, ICA_TARGET,ICTARGET_IDCMP, TAG_DONE); } ami_history_redraw(gw->hw); } /** * Handle mouse clicks in the history window. * * \return true if the event was handled, false to pass it on */ static bool ami_history_click(struct history_window *hw, uint16 code) { int x, y; struct IBox *bbox; ULONG xs, ys; if(ami_gui_get_space_box(hw->objects[GID_BROWSER], &bbox) != NSERROR_OK) { amiga_warn_user("NoMemory", ""); return false; } GetAttr(SCROLLER_Top,hw->objects[OID_HSCROLL],(ULONG *)&xs); x = hw->win->MouseX - bbox->Left +xs; GetAttr(SCROLLER_Top,hw->objects[OID_VSCROLL],(ULONG *)&ys); y = hw->win->MouseY - bbox->Top + ys; ami_gui_free_space_box(bbox); switch(code) { case SELECTUP: browser_window_history_click(hw->gw->bw, x, y, false); ami_history_redraw(hw); ami_schedule_redraw(hw->gw->shared, true); break; case MIDDLEUP: browser_window_history_click(hw->gw->bw, x, y, true); ami_history_redraw(hw); break; } return true; }
void ami_history_open(struct browser_window *bw, struct history *history) { int width, height; struct IBox *bbox; assert(history); history_current = history; if(!hwindow) { hwindow = AllocVec(sizeof(struct history_window),MEMF_CLEAR | MEMF_PRIVATE); ami_init_layers(&hwindow->gg, scrn->Width, scrn->Height); hwindow->bw = bw; history_size(history, &width, &height); hwindow->scrollerhook.h_Entry = (void *)ami_history_scroller_hook; hwindow->scrollerhook.h_Data = hwindow; hwindow->objects[OID_MAIN] = WindowObject, WA_ScreenTitle,nsscreentitle, WA_Title,messages_get("History"), WA_Activate, TRUE, WA_DepthGadget, TRUE, WA_DragBar, TRUE, WA_CloseGadget, TRUE, WA_SizeGadget, TRUE, WA_CustomScreen,scrn, WA_InnerWidth,width, WA_InnerHeight,height + 10, WINDOW_SharedPort,sport, WINDOW_UserData,hwindow, WINDOW_IconifyGadget, FALSE, WINDOW_GadgetHelp, TRUE, WINDOW_Position, WPOS_CENTERSCREEN, WINDOW_HorizProp,1, WINDOW_VertProp,1, WINDOW_IDCMPHook,&hwindow->scrollerhook, WINDOW_IDCMPHookBits,IDCMP_IDCMPUPDATE, // WA_ReportMouse,TRUE, WA_IDCMP,IDCMP_MOUSEBUTTONS | IDCMP_NEWSIZE, // | IDCMP_MOUSEMOVE, WINDOW_ParentGroup, hwindow->objects[GID_MAIN] = VGroupObject, LAYOUT_AddChild, hwindow->objects[GID_BROWSER] = SpaceObject, GA_ID,GID_BROWSER, // SPACE_MinWidth,width, // SPACE_MinHeight,height, SpaceEnd, EndGroup, EndWindow; hwindow->win = (struct Window *)RA_OpenWindow(hwindow->objects[OID_MAIN]); // hwindow->bw->window = hwindow; hwindow->node = AddObject(window_list,AMINS_HISTORYWINDOW); hwindow->node->objstruct = hwindow; GetAttr(WINDOW_HorizObject,hwindow->objects[OID_MAIN],(ULONG *)&hwindow->objects[OID_HSCROLL]); GetAttr(WINDOW_VertObject,hwindow->objects[OID_MAIN],(ULONG *)&hwindow->objects[OID_VSCROLL]); RefreshSetGadgetAttrs((APTR)hwindow->objects[OID_VSCROLL],hwindow->win,NULL, GA_ID,OID_VSCROLL, SCROLLER_Top,0, ICA_TARGET,ICTARGET_IDCMP, TAG_DONE); RefreshSetGadgetAttrs((APTR)hwindow->objects[OID_HSCROLL],hwindow->win,NULL, GA_ID,OID_HSCROLL, SCROLLER_Top,0, ICA_TARGET,ICTARGET_IDCMP, TAG_DONE); } hwindow->bw = bw; bw->window->hw = hwindow; ami_history_redraw(hwindow); }
void ami_open_tree(struct tree *tree,int type) { struct treeview_window *twin; BOOL msel = TRUE,nothl = TRUE,launchdisable=FALSE; static WORD gen=0; char *wintitle; char folderclosed[100],folderopen[100],item[100]; if(tree->handle) { twin = (struct treeview_window *)tree->handle; WindowToFront(twin->win); ActivateWindow(twin->win); return; } twin = AllocVec(sizeof(struct treeview_window),MEMF_PRIVATE | MEMF_CLEAR); twin->listbrowser_list = AllocVec(sizeof(struct List),MEMF_PRIVATE | MEMF_CLEAR); static struct ColumnInfo columninfo[] = { { 80,"Name", CIF_DRAGGABLE | CIF_SORTABLE}, { 20,"URL", CIF_DRAGGABLE }, // { 5,"Visits", CIF_DRAGGABLE }, { -1, (STRPTR)~0, -1 } }; if(tree->single_selection) msel = FALSE; ami_get_theme_filename(&folderclosed,"theme_list_folder_closed"); ami_get_theme_filename(&folderopen,"theme_list_folder_open"); switch(type) { case AMI_TREE_HOTLIST: nothl = FALSE; wintitle = (char *)messages_get("Hotlist"); ami_get_theme_filename(&item,"theme_list_bookmark"); break; case AMI_TREE_COOKIES: nothl = TRUE; launchdisable=TRUE; wintitle = (char *)messages_get("Cookies"); ami_get_theme_filename(&item,"theme_list_cookie"); break; case AMI_TREE_HISTORY: nothl = TRUE; wintitle = (char *)messages_get("GlobalHistory"); ami_get_theme_filename(&item,"theme_list_history"); break; case AMI_TREE_SSLCERT: nothl = TRUE; wintitle = (char *)messages_get("SSLCerts"); ami_get_theme_filename(&item,"theme_list_sslcert"); break; } NewList(twin->listbrowser_list); tree->handle = (void *)twin; twin->tree = tree; ami_add_elements(twin,twin->tree->root,&gen); twin->objects[OID_MAIN] = WindowObject, WA_ScreenTitle,nsscreentitle, WA_Title,wintitle, WA_Activate, TRUE, WA_DepthGadget, TRUE, WA_DragBar, TRUE, WA_CloseGadget, TRUE, WA_SizeGadget, TRUE, WA_CustomScreen,scrn, WINDOW_SharedPort,sport, WINDOW_UserData,twin, WINDOW_IconifyGadget, TRUE, WINDOW_Position, WPOS_CENTERSCREEN, WINDOW_ParentGroup, twin->gadgets[GID_MAIN] = VGroupObject, LAYOUT_AddChild, twin->gadgets[GID_TREEBROWSER] = ListBrowserObject, GA_ID, GID_TREEBROWSER, GA_RelVerify, TRUE, GA_ReadOnly,FALSE, LISTBROWSER_ColumnInfo, &columninfo, // LISTBROWSER_ColumnTitles, TRUE, LISTBROWSER_Hierarchical,TRUE, LISTBROWSER_Editable,TRUE, // LISTBROWSER_TitleClickable,TRUE, LISTBROWSER_AutoFit, TRUE, LISTBROWSER_HorizontalProp, TRUE, LISTBROWSER_Labels, twin->listbrowser_list, // LISTBROWSER_MultiSelect,msel, LISTBROWSER_ShowSelected,TRUE, LISTBROWSER_ShowImage,BitMapObject, BITMAP_SourceFile,folderclosed, BITMAP_Screen,scrn, BITMAP_Masking,TRUE, BitMapEnd, LISTBROWSER_HideImage,BitMapObject, BITMAP_SourceFile,folderopen, BITMAP_Screen,scrn, BITMAP_Masking,TRUE, BitMapEnd, LISTBROWSER_LeafImage,BitMapObject, BITMAP_SourceFile,item, BITMAP_Screen,scrn, BITMAP_Masking,TRUE, BitMapEnd, ListBrowserEnd, CHILD_NominalSize,TRUE, LAYOUT_AddChild, HGroupObject, LAYOUT_AddChild, twin->gadgets[GID_OPEN] = ButtonObject, GA_ID,GID_OPEN, GA_Text,messages_get("TreeLaunch"), GA_RelVerify,TRUE, GA_Disabled,launchdisable, ButtonEnd, LAYOUT_AddChild, twin->gadgets[GID_NEWF] = ButtonObject, GA_ID,GID_NEWF, BUTTON_AutoButton,BAG_POPDRAWER, GA_RelVerify,TRUE, GA_Disabled,nothl, ButtonEnd, LAYOUT_AddChild, twin->gadgets[GID_NEWB] = ButtonObject, GA_ID,GID_NEWB, BUTTON_AutoButton,BAG_POPFILE, GA_RelVerify,TRUE, GA_Disabled,nothl, ButtonEnd, LAYOUT_AddChild, twin->gadgets[GID_LEFT] = ButtonObject, GA_ID,GID_LEFT, BUTTON_AutoButton,BAG_LFARROW, GA_RelVerify,TRUE, GA_Disabled,nothl, //(!tree->movable), ButtonEnd, LAYOUT_AddChild, twin->gadgets[GID_UP] = ButtonObject, GA_ID,GID_UP, BUTTON_AutoButton,BAG_UPARROW, GA_RelVerify,TRUE, GA_Disabled,nothl, //(!tree->movable), ButtonEnd, LAYOUT_AddChild, twin->gadgets[GID_DOWN] = ButtonObject, GA_ID,GID_DOWN, BUTTON_AutoButton,BAG_DNARROW, GA_RelVerify,TRUE, GA_Disabled,nothl, //(!tree->movable), ButtonEnd, LAYOUT_AddChild, twin->gadgets[GID_DEL] = ButtonObject, GA_ID,GID_DEL, GA_Text,messages_get("TreeDelete"), GA_RelVerify,TRUE, ButtonEnd, EndGroup, CHILD_WeightedHeight,0, EndGroup, EndWindow; twin->win = (struct Window *)RA_OpenWindow(twin->objects[OID_MAIN]); twin->node = AddObject(window_list,AMINS_TVWINDOW); twin->node->objstruct = twin; }
struct Process *attach_select_process() { struct Process * ret = NULL; Object *WinObj, *ButtonObj, *ListBrowserObj; struct Window *win; get_process_list(); struct List attachlist; struct Node *node; IExec->NewList (&attachlist); int i; for (i = 0; i < noprocesses; i++) { if (node = IListBrowser->AllocListBrowserNode(2, LBNA_Column, 0, LBNCA_Text, processnamelist[i], TAG_DONE)) { IExec->AddTail(&attachlist, node); } } /* Create the window object. */ if(( WinObj = WindowObject, WA_ScreenTitle, "Debug 101", WA_Title, "Attach to process", WA_Width, 400, WA_Height, 400, WA_DepthGadget, TRUE, WA_SizeGadget, TRUE, WA_DragBar, TRUE, WA_CloseGadget, TRUE, WA_Activate, TRUE, WINDOW_Position, WPOS_CENTERSCREEN, /* there is no HintInfo array set up here, instead we define the ** strings directly when each gadget is created (OM_NEW) */ WINDOW_GadgetHelp, TRUE, WINDOW_ParentGroup, VLayoutObject, LAYOUT_SpaceOuter, TRUE, LAYOUT_DeferLayout, TRUE, LAYOUT_AddChild, ListBrowserObj = ListBrowserObject, GA_ID, ATTACH_LISTBROWSER, GA_RelVerify, TRUE, GA_TabCycle, TRUE, LISTBROWSER_AutoFit, TRUE, LISTBROWSER_Labels, &attachlist, // LISTBROWSER_ColumnInfo, columninfo, LISTBROWSER_ColumnTitles, TRUE, LISTBROWSER_ShowSelected, TRUE, LISTBROWSER_Striping, LBS_ROWS, ListBrowserEnd, LAYOUT_AddChild, ButtonObj = ButtonObject, GA_ID, ATTACH_BUTTON, GA_RelVerify, TRUE, GA_Text, "Select", ButtonEnd, CHILD_WeightedHeight, 0, EndMember, EndWindow)) { /* Open the window. */ if( win = (struct Window *) RA_OpenWindow(WinObj) ) { ULONG wait, signal, result, done = FALSE; WORD Code; CONST_STRPTR hintinfo; uint32 selected; /* Obtain the window wait signal mask. */ IIntuition->GetAttr( WINDOW_SigMask, WinObj, &signal ); /* Input Event Loop */ while( !done ) { wait = IExec->Wait(signal|SIGBREAKF_CTRL_C); if (wait & SIGBREAKF_CTRL_C) done = TRUE; else while ((result = RA_HandleInput(WinObj, &Code)) != WMHI_LASTMSG) { switch (result & WMHI_CLASSMASK) { case WMHI_CLOSEWINDOW: done = TRUE; break; case WMHI_GADGETUP: switch(result & WMHI_GADGETMASK) { case ATTACH_BUTTON: /* if the user has entered a new text for the buttons ** help text, get it, and set it */ IIntuition->GetAttrs( ListBrowserObj, LISTBROWSER_Selected, &selected, TAG_DONE ); //printf("selected = 0x%x\n", selected); if (selected != 0xffffffff) { ret = processstructlist[selected]; console_printf(OUTPUT_SYSTEM, "attaching to process with name %s\n", processnamelist[selected]); } done = TRUE; break; } break; } } } } /* Disposing of the window object will * also close the window if it is * already opened and it will dispose of * all objects attached to it. */ IIntuition->DisposeObject( WinObj ); IListBrowser->FreeListBrowserList(&attachlist); } //free_process_list(); return ret; }