/***************************************************************************** FILE : $Source: /projects/higgs1/SNNS/CVS/SNNS/xgui/sources/ui_result.c,v $ SHORTNAME : result.c SNNS VERSION : 4.2 PURPOSE : creation and management of result file widget AUTHOR : Michael Vogt DATE : 20.5.1992 CHANGED BY : RCS VERSION : $Revision: 2.10 $ LAST CHANGE : $Date: 1998/03/03 14:10:41 $ Copyright (c) 1990-1995 SNNS Group, IPVR, Univ. Stuttgart, FRG Copyright (c) 1996-1998 SNNS Group, WSI, Univ. Tuebingen, FRG ******************************************************************************/ #include #include #include #include "ui.h" #include "krui_typ.h" #include #include #include #include #include #include #include #include "ui_xWidgets.h" #include "ui_confirmer.h" #include "ui_main.h" #include "ui_mainP.h" #include "ui_netUpdate.h" #include "ui_textP.h" #include "ui_fileP.h" #include "ui_utilP.h" #include "kr_ui.h" #include "ui_action.h" #include "ui_control.h" #include "ui_controlP.h" #include "ui_result.ph" /***************************************************************************** FUNCTION : ui_performRadioButtons PURPOSE : toggles the buttons in an array of toggle buttons RETURNS : void NOTES : UPDATE : 20.5.1992 *****************************************************************************/ static void ui_performRadioButtons (Widget array[], int size, int button) { int i; for (i=0; i krui_getNoOfPatterns() || ui_result_no_start_pat > ui_result_no_end_pat) { ui_confirmOk("No such pattern numbers"); return; } if (strlen(ui_filenameRES) == 0) { ui_confirmOk("No file specified!"); ui_popupDone(w, UI_POPUP_RESULT, call_data); return; } if (ui_filenameRES[0] == '/') sprintf(filename, "%s%s", ui_filenameRES, ui_getExtension(UI_FILE_RES)); else sprintf(filename, "%s/%s%s", ui_pathname, ui_filenameRES, ui_getExtension(UI_FILE_RES)); if (ui_fileExist(filename, 0) && ui_result_mode_state == UI_RESULT_MODE_CREATE) { sprintf(string,"%s already exist! Overwrite?", ui_filenameRES); performSave = ui_confirmYes(string); } if (performSave) { ui_printMessage("Saving result file ..."); ui_rem_getSubPatPanel(); ui_checkError(krui_DefTrainSubPat(subIPatSize,subOPatSize, subIPatStep,subOPatStep,&maxNpos)); /* to ensure that the subpattern fits the network, try one step */ ui_checkError(krui_DefShowSubPat(subIPatSize,subOPatSize, subIPatPos,subOPatPos)); ui_checkError(krui_showPattern(OUTPUT_NOTHING)); if (ui_kernelError == 0) ui_checkError(krui_saveResultParam(filename, ui_result_mode_state == UI_RESULT_MODE_CREATE, ui_result_no_start_pat, ui_result_no_end_pat, ui_result_input_state == UI_RESULT_INPUT_YES, ui_result_output_state == UI_RESULT_OUTPUT_YES, ui_updateParameters,UI_NO_UPDATE_PARAMS)); if (ui_kernelError < 0) { ui_confirmOk("Error during saving result file!"); ui_printMessage(""); } else { if (ui_result_mode_state == UI_RESULT_MODE_CREATE) sprintf(string, "Result saved to file:\n %s\n", filename); else sprintf(string, "Result appended to file:\n %s\n", filename); ui_tw_printMessage(string); ui_printMessage("Result file saved."); } ui_net_completeRefresh(NULL, UI_GLOBAL); } ui_popupDone(w, UI_POPUP_RESULT, call_data); } /***************************************************************************** FUNCTION : ui_resultCancel PURPOSE : callback for closing result file panel without doing anything RETURNS : void NOTES : UPDATE : 20.5.1992 ******************************************************************************/ static void ui_resultCancel (Widget w, int dummy, caddr_t call_data) { ui_result_no_start_pat = ui_xIntFromAsciiWidget(ui_resultStartPattern); ui_result_no_end_pat = ui_xIntFromAsciiWidget(ui_resultEndPattern); ui_popupDone(w, UI_POPUP_RESULT, call_data); } /***************************************************************************** FUNCTION : ui_xCreateResultPanel PURPOSE : creates a form widget for all result file elements RETURNS : the created widget NOTES : some constants are used (see below) to get a relativ positioning of the items. This is VERY useful after changings. UPDATE : 20.5.1992 *****************************************************************************/ static Widget ui_xCreateResultPanel (Widget parent) { Widget /* topLabel, */ startLabel, endLabel, inputLabel, outputLabel, createappendLabel, panel; int fontWidth = 8; int startWidth = 25 * fontWidth; int includeWidth = 25 * fontWidth; int numberWidth = 7 * fontWidth; panel = XtCreateManagedWidget("rPanel", formWidgetClass, parent, NULL, ZERO); /* topLabel = ui_xCreateLabelItem("specify result file format:", panel, titelWidth, NULL, NULL); */ startLabel = ui_xCreateLabelItem("start pattern :", panel, startWidth, NULL, NULL); ui_resultStartPattern = ui_xCreateDialogItem("startPattern", panel, " ", numberWidth, startLabel, NULL); endLabel = ui_xCreateLabelItem("end pattern :", panel, startWidth, NULL, ui_resultStartPattern); ui_resultEndPattern = ui_xCreateDialogItem("endPattern", panel, " ", numberWidth, endLabel, ui_resultStartPattern); createappendLabel = ui_xCreateLabelItem("result file mode :", panel, includeWidth, NULL, ui_resultEndPattern); ui_resultModeRButtons[UI_RESULT_MODE_CREATE] = ui_xCreateToggleItem("create", panel, NULL, createappendLabel, ui_resultEndPattern); XtAddCallback(ui_resultModeRButtons[UI_RESULT_MODE_CREATE], XtNcallback, (XtCallbackProc) ui_result_Setmode, (caddr_t) UI_RESULT_MODE_CREATE); ui_resultModeRButtons[UI_RESULT_MODE_APPEND] = ui_xCreateToggleItem("append", panel, NULL, ui_resultModeRButtons[UI_RESULT_MODE_CREATE], ui_resultEndPattern); XtAddCallback(ui_resultModeRButtons[UI_RESULT_MODE_APPEND], XtNcallback, (XtCallbackProc) ui_result_Setmode, (caddr_t) UI_RESULT_MODE_APPEND); inputLabel = ui_xCreateLabelItem("include input patterns :", panel, includeWidth, NULL, ui_resultModeRButtons[UI_RESULT_MODE_CREATE]); ui_resultInputRButtons[UI_RESULT_INPUT_YES] = ui_xCreateToggleItem("yes", panel, NULL, inputLabel, ui_resultModeRButtons[UI_RESULT_MODE_CREATE]); XtAddCallback(ui_resultInputRButtons[UI_RESULT_INPUT_YES], XtNcallback, (XtCallbackProc) ui_result_Setinput, (caddr_t) UI_RESULT_INPUT_YES); ui_resultInputRButtons[UI_RESULT_INPUT_NO] = ui_xCreateToggleItem("no", panel, NULL, ui_resultModeRButtons[UI_RESULT_MODE_CREATE], ui_resultModeRButtons[UI_RESULT_MODE_APPEND]); XtAddCallback(ui_resultInputRButtons[UI_RESULT_INPUT_NO], XtNcallback, (XtCallbackProc) ui_result_Setinput, (caddr_t) UI_RESULT_INPUT_NO); outputLabel = ui_xCreateLabelItem("include output patterns :", panel, includeWidth, NULL, ui_resultInputRButtons[UI_RESULT_INPUT_YES]); ui_resultOutputRButtons[UI_RESULT_OUTPUT_YES] = ui_xCreateToggleItem("yes", panel, NULL, outputLabel, ui_resultInputRButtons[UI_RESULT_INPUT_YES]); XtAddCallback(ui_resultOutputRButtons[UI_RESULT_OUTPUT_YES], XtNcallback, (XtCallbackProc) ui_result_Setoutput, (caddr_t) UI_RESULT_OUTPUT_YES); ui_resultOutputRButtons[UI_RESULT_OUTPUT_NO] = ui_xCreateToggleItem("no", panel, NULL, ui_resultModeRButtons[UI_RESULT_MODE_CREATE], ui_resultInputRButtons[UI_RESULT_INPUT_NO]); XtAddCallback(ui_resultOutputRButtons[UI_RESULT_OUTPUT_NO], XtNcallback, (XtCallbackProc) ui_result_Setoutput, (caddr_t) UI_RESULT_OUTPUT_NO); XawFormDoLayout(panel, TRUE); ui_ResultIsCreated = TRUE; return panel; } /***************************************************************************** FUNCTION : ui_popupResult PURPOSE : popup a result file panel RETURNS : void NOTES : UPDATE : 20.5.1992 ******************************************************************************/ void ui_popupResult (Widget button) { Widget doneButton, cancelButton, defaultButton; Widget ui_resultBox; Widget ui_resultPanel; Arg args[5]; Position x, y; Dimension width, height; Cardinal n; static Bool first_call = TRUE; /* Upper left corner will be in the center of the calling button */ if (NOT ui_ResultIsCreated) { n = 0; XtSetArg(args[0], XtNwidth, &width); n++; XtSetArg(args[1], XtNheight, &height); n++; XtGetValues(button, args, n); XtTranslateCoords(button, (Position) (width / 2), (Position) (height / 2), &x, &y); n = 0; XtSetArg(args[n], XtNx, x); n++; XtSetArg(args[n], XtNy, y); n++; /* Now create Popup */ ui_popResult = XtCreatePopupShell("result file format", transientShellWidgetClass, ui_toplevel, args, n); ui_resultBox = XtCreateManagedWidget("form", formWidgetClass, ui_popResult, NULL, ZERO); ui_resultPanel = ui_xCreateResultPanel(ui_resultBox); doneButton = ui_xCreateButtonItem("done", ui_resultBox, NULL, ui_resultPanel); XtAddCallback(doneButton, XtNcallback, (XtCallbackProc) ui_resultDone, (caddr_t) UI_POPUP_RESULT); cancelButton = ui_xCreateButtonItem("cancel", ui_resultBox, doneButton, ui_resultPanel); XtAddCallback(cancelButton, XtNcallback, (XtCallbackProc) ui_resultCancel, (caddr_t) UI_POPUP_RESULT); defaultButton = ui_xCreateButtonItem("default2", ui_resultBox, cancelButton, ui_resultPanel); XtAddCallback(defaultButton, XtNcallback, (XtCallbackProc) ui_result_default, NULL); ui_checkWindowPosition(ui_popResult); XtPopup(ui_popResult, XtGrabExclusive); ui_xDontResizeWidget(ui_popResult); if (first_call) { ui_result_default(NULL, (int) NULL, NULL); first_call = FALSE; } else { ui_result_lastcall(NULL, (int) NULL, NULL); } } }