/***************************************************************************** # Copyright (C) 1994-2008 by David Gordon. # All rights reserved. # # This software is part of a beta-test version of the Consed/Autofinish # package. It should not be redistributed or # used for any commercial purpose, including commercially funded # sequencing, without written permission from the author and the # University of Washington. # # This software is provided ``AS IS'' and any express or implied # warranties, including, but not limited to, the implied warranties of # merchantability and fitness for a particular purpose, are disclaimed. # In no event shall the authors or the University of Washington be # liable for any direct, indirect, incidental, special, exemplary, or # consequential damages (including, but not limited to, procurement of # substitute goods or services; loss of use, data, or profits; or # business interruption) however caused and on any theory of liability, # whether in contract, strict liability, or tort (including negligence # or otherwise) arising in any way out of the use of this software, even # if advised of the possibility of such damage. # # Building Consed from source is error prone and not simple which is # why I provide executables. Due to time limitations I cannot # provide any assistance in building Consed. Even if you do not # modify the source, you may introduce errors due to using a # different version of the compiler, a different version of motif, # different versions of other libraries than I used, etc. For this # reason, if you discover Consed bugs, I can only offer help with # those bugs if you first reproduce those bugs with an executable # provided by me--not an executable you have built. # # Modifying Consed is also difficult. Although Consed is modular, # some modules are used by many other modules. Thus making a change # in one place can have unforeseen effects on many other features. # It may takes months for you to notice these other side-effects # which may not seen connected at all. It is not feasable for me to # provide help with modifying Consed sources because of the # potentially huge amount of time involved. # #*****************************************************************************/ #include "guiEditResources.h" #include #include #include #include #include #include #include #include #include "bIsNumericMaybeWithWhitespace.h" #include "popupErrorMessage.h" #include "bIsNumericDouble.h" #include "consedResources.h" #include "guiapp.h" #include "handleWindowManagerDelete2.h" #include "hp_exception_kludge.h" #include "consedParameters.h" #include "guiapp.h" #include "assert.h" #include #include "please_wait.h" #include "textbox.h" #include #include #include "waitUntilDialogIsVisible.h" #include "popupInfoMessage.h" #include "guiTopWindow.h" #include #include "defaultResources.h" class helpCallbackInfo { public: RWCString soResource_; guiEditResources* pGuiEditResources_; }; #define makeWidgetTypeDouble( RESOURCE, PARAMETER_WITHOUT_PREFIX ) \ \ \ Widget wid ## PARAMETER_WITHOUT_PREFIX ## Form = XtVaCreateManagedWidget( \ "form1", \ xmFormWidgetClass, \ widRowCol, \ XmNshadowThickness, 0, /* otherwise black line segments*/ \ NULL ); \ \ Widget wid ## PARAMETER_WITHOUT_PREFIX ## Label = XtVaCreateManagedWidget( \ #RESOURCE , \ xmLabelWidgetClass, \ wid ## PARAMETER_WITHOUT_PREFIX ## Form, \ XmNleftAttachment, XmATTACH_FORM, \ XmNrightAttachment, XmATTACH_FORM, \ XmNtopAttachment, XmATTACH_FORM, \ XmNtopOffset, 20, \ XmNalignment, XmALIGNMENT_BEGINNING, \ NULL ); \ \ getColors( resources_.d ## PARAMETER_WITHOUT_PREFIX ## _ , \ CONDEF->d ## PARAMETER_WITHOUT_PREFIX ## _, \ pixForeground, \ pixBackground ); \ \ wid ## PARAMETER_WITHOUT_PREFIX ## _ = XtVaCreateManagedWidget( \ #RESOURCE "Input", \ xmTextFieldWidgetClass, \ wid ## PARAMETER_WITHOUT_PREFIX ## Form, \ XmNleftAttachment, XmATTACH_FORM, \ XmNtopAttachment, XmATTACH_WIDGET, \ XmNtopWidget, wid ## PARAMETER_WITHOUT_PREFIX ## Label , \ XmNbottomAttachment, XmATTACH_FORM, \ XmNvalue, RWCString( resources_.d ## PARAMETER_WITHOUT_PREFIX ## _ ).data(), \ XmNforeground, pixForeground, \ XmNbackground, pixBackground, \ NULL ); \ \ XtAddCallback( wid ## PARAMETER_WITHOUT_PREFIX ## _ , \ XmNlosingFocusCallback, \ cb ## PARAMETER_WITHOUT_PREFIX , \ this ); \ \ \ Widget wid ## PARAMETER_WITHOUT_PREFIX ## Default = XtVaCreateManagedWidget( \ #RESOURCE "Default", \ xmTextFieldWidgetClass, \ wid ## PARAMETER_WITHOUT_PREFIX ## Form, \ XmNleftAttachment, XmATTACH_POSITION, \ XmNleftPosition, 50, \ XmNtopAttachment, XmATTACH_WIDGET, \ XmNtopWidget, wid ## PARAMETER_WITHOUT_PREFIX ## Label , \ XmNbottomAttachment, XmATTACH_FORM, \ XmNvalue, RWCString( CONDEF->d ## PARAMETER_WITHOUT_PREFIX ## _ ).data(), \ XmNeditable, False, \ XmNcursorPositionVisible, False, \ XmNtraversalOn, False, \ NULL ); \ \ \ Widget wid ## PARAMETER_WITHOUT_PREFIX ## HelpButton = XtVaCreateManagedWidget( \ "?", \ xmPushButtonWidgetClass, \ wid ## PARAMETER_WITHOUT_PREFIX ## Form, \ XmNleftAttachment, XmATTACH_POSITION, \ XmNleftPosition, 46, \ XmNrightPosition, 49, \ XmNtopAttachment, XmATTACH_WIDGET, \ XmNtopWidget, wid ## PARAMETER_WITHOUT_PREFIX ## Label , \ XmNbottomAttachment, XmATTACH_FORM, \ XmNtraversalOn, False, \ NULL ); \ \ \ pHelp = new helpCallbackInfo();\ pHelp->soResource_ = #RESOURCE ;\ pHelp->pGuiEditResources_ = this;\ \ XtAddCallback( wid ## PARAMETER_WITHOUT_PREFIX ## HelpButton,\ XmNactivateCallback,\ cbUserPushedHelp,\ pHelp );\ // This will translate to this: // Widget widResourceForm = XtVaCreateManagedWidget( // "form", // xmFormWidgetClass, // widRowCol, // XmNshadowThickness, 0, // otherwise black line segments // NULL ); // Widget widLabel1 = XtVaCreateManagedWidget( // "consed.autoFinishMinNumberOfErrorsFixedByAnExp", // xmLabelWidgetClass, // widResourceForm1, // XmNleftAttachment, XmATTACH_FORM, // XmNrightAttachment, XmATTACH_FORM, // XmNtopAttachment, XmATTACH_FORM, // XmNtopOffset, 20, // XmNalignment, XmALIGNMENT_BEGINNING, // NULL ); // getColors( resources_.dAutoFinishMinNumberOfErrorsFixedByAnExp_, // CONDEF->dAutoFinishMinNumberOfErrorsFixedByAnExp_, // pixForeground, // pixBackground ); // widAutoFinishMinNumberOfErrorsFixedByAnExp_ = XtVaCreateManagedWidget( // "consed.autoFinishMinNumberOfErrorsFixedByAnExpInput", // xmTextFieldWidgetClass, // widResourceForm1, // XmNleftAttachment, XmATTACH_FORM, // XmNtopAttachment, XmATTACH_WIDGET, // XmNtopWidget, widLabel1, // XmNbottomAttachment, XmATTACH_FORM, // XmNvalue, RWCString( resources_dAutoFinishMinNumberOfErrorsFixedByAnExp_ ).data(), // XmNforeground, pixForeground, // XmNbackground, pixBackground, // NULL ); // XtAddCallback( widAutoFinishMinNumberOfErrorsFixedByAnExp_, // XmNlosingFocusCallback, // cbAutoFinishMinNumberOfErrorsFixedByAnExp, // this ); // Widget widDefault1 = XtVaCreateManagedWidget( // "consed.autoFinishMinNumberOfErrorsFixedByAnExpDefault", // xmTextFieldWidgetClass, // widResourceForm1, // XmNleftAttachment, XmATTACH_POSITION, // XmNleftPosition, 50, // XmNtopAttachment, XmATTACH_WIDGET, // XmNtopWidget, widLabel1, // XmNbottomAttachment, XmATTACH_FORM, // XmNvalue, RWCString( consedResources::pDefaultResources_->dAutoFinishMinNumberOfErrorsFixedByAnExp_ ).data(), // XmNeditable, False, // XmNcursorPositionVisible, False, // XmNtraversalOn, False, // NULL ); #define makeWidgetTypeInt( RESOURCE, PARAMETER_WITHOUT_PREFIX ) \ \ getColors( resources_.n ## PARAMETER_WITHOUT_PREFIX ## _ , \ CONDEF->n ## PARAMETER_WITHOUT_PREFIX ## _ , \ pixForeground, \ pixBackground ); \ \ \ \ Widget wid ## PARAMETER_WITHOUT_PREFIX ## Form = XtVaCreateManagedWidget( \ "form", \ xmFormWidgetClass, \ widRowCol, \ XmNshadowThickness, 0, /* otherwise black line segments*/ \ NULL ); \ \ Widget wid ## PARAMETER_WITHOUT_PREFIX ## Label = XtVaCreateManagedWidget( \ #RESOURCE , \ xmLabelWidgetClass, \ wid ## PARAMETER_WITHOUT_PREFIX ## Form, \ XmNleftAttachment, XmATTACH_FORM, \ XmNrightAttachment, XmATTACH_FORM, \ XmNtopAttachment, XmATTACH_FORM, \ XmNtopOffset, 20, \ XmNalignment, XmALIGNMENT_BEGINNING, \ NULL ); \ \ \ wid ## PARAMETER_WITHOUT_PREFIX ## _ = XtVaCreateManagedWidget( \ #RESOURCE "Input", \ xmTextFieldWidgetClass, \ wid ## PARAMETER_WITHOUT_PREFIX ## Form, \ XmNleftAttachment, XmATTACH_FORM, \ XmNtopAttachment, XmATTACH_WIDGET, \ XmNtopWidget, wid ## PARAMETER_WITHOUT_PREFIX ## Label, \ XmNbottomAttachment, XmATTACH_FORM, \ XmNvalue, RWCString( (long) resources_.n ## PARAMETER_WITHOUT_PREFIX ## _ ).data(), \ XmNforeground, pixForeground, \ XmNbackground, pixBackground, \ NULL ); \ \ \ XtAddCallback( wid ## PARAMETER_WITHOUT_PREFIX ## _, \ XmNlosingFocusCallback, \ cb ## PARAMETER_WITHOUT_PREFIX, \ this ); \ \ Widget wid ## PARAMETER_WITHOUT_PREFIX ## Default = XtVaCreateManagedWidget( \ #RESOURCE "Default", \ xmTextFieldWidgetClass, \ wid ## PARAMETER_WITHOUT_PREFIX ## Form, \ XmNleftAttachment, XmATTACH_POSITION, \ XmNleftPosition, 50, \ XmNtopAttachment, XmATTACH_WIDGET, \ XmNtopWidget, wid ## PARAMETER_WITHOUT_PREFIX ## Label, \ XmNbottomAttachment, XmATTACH_FORM, \ XmNvalue, RWCString( (long) CONDEF->n ## PARAMETER_WITHOUT_PREFIX ## _ ).data(), \ XmNeditable, False, \ XmNcursorPositionVisible, False, \ XmNtraversalOn, False, \ NULL ); \ \ \ Widget wid ## PARAMETER_WITHOUT_PREFIX ## HelpButton = XtVaCreateManagedWidget( \ "?", \ xmPushButtonWidgetClass, \ wid ## PARAMETER_WITHOUT_PREFIX ## Form, \ XmNleftAttachment, XmATTACH_POSITION, \ XmNleftPosition, 46, \ XmNrightPosition, 49, \ XmNtopAttachment, XmATTACH_WIDGET, \ XmNtopWidget, wid ## PARAMETER_WITHOUT_PREFIX ## Label , \ XmNbottomAttachment, XmATTACH_FORM, \ XmNtraversalOn, False, \ NULL ); \ \ \ pHelp = new helpCallbackInfo(); \ pHelp->soResource_ = #RESOURCE ; \ pHelp->pGuiEditResources_ = this; \ \ XtAddCallback( wid ## PARAMETER_WITHOUT_PREFIX ## HelpButton, \ XmNactivateCallback, \ cbUserPushedHelp, \ pHelp ); \ // will convert to this: // consed.autoFinishAverageInsertSize // int // getColors( resources_.nAutoFinishAverageInsertSize_, // CONDEF->nAutoFinishAverageInsertSize_, // pixForeground, // pixBackground ); // Widget widResourceForm2 = XtVaCreateManagedWidget( // "form2", // xmFormWidgetClass, // widRowCol, // XmNshadowThickness, 0, // otherwise black line segments // NULL ); // Widget widLabel2 = XtVaCreateManagedWidget( // "consed.autoFinishAverageInsertSize", // xmLabelWidgetClass, // widResourceForm2, // XmNleftAttachment, XmATTACH_FORM, // XmNrightAttachment, XmATTACH_FORM, // XmNtopAttachment, XmATTACH_FORM, // XmNtopOffset, 20, // XmNalignment, XmALIGNMENT_BEGINNING, // NULL ); // widAutoFinishAverageInsertSize_ = XtVaCreateManagedWidget( // "consed.autoFinishAverageInsertSizeInput", // xmTextFieldWidgetClass, // widResourceForm2, // XmNleftAttachment, XmATTACH_FORM, // XmNtopAttachment, XmATTACH_WIDGET, // XmNtopWidget, widLabel2, // XmNbottomAttachment, XmATTACH_FORM, // XmNvalue, RWCString( (long) resources_.nAutoFinishAverageInsertSize_ ).data(), // XmNforeground, pixForeground, // XmNbackground, pixBackground, // NULL ); // XtAddCallback( widAutoFinishAverageInsertSize_, // XmNlosingFocusCallback, // cbAutoFinishAverageInsertSize, // this ); // Widget widDefault2 = XtVaCreateManagedWidget( // "consed.autoFinishAverageInsertSizeInputDefault", // xmTextFieldWidgetClass, // widResourceForm2, // XmNleftAttachment, XmATTACH_POSITION, // XmNleftPosition, 50, // XmNtopAttachment, XmATTACH_WIDGET, // XmNtopWidget, widLabel2, // XmNbottomAttachment, XmATTACH_FORM, // XmNvalue, RWCString( (long) CONDEF->nAutoFinishAverageInsertSize_ ).data(), // XmNeditable, False, // XmNcursorPositionVisible, False, // XmNtraversalOn, False, // NULL ); // consed.primersPickTemplatesForPrimers: true // bool #define makeWidgetTypeBool( RESOURCE, PARAMETER_WITHOUT_PREFIX ) \ \ getColors( resources_.b ## PARAMETER_WITHOUT_PREFIX ## _, \ CONDEF->b ## PARAMETER_WITHOUT_PREFIX ## _, \ pixForeground, \ pixBackground ); \ \ \ Widget wid ## PARAMETER_WITHOUT_PREFIX ## Form = XtVaCreateManagedWidget( \ "form", \ xmFormWidgetClass, \ widRowCol, \ XmNshadowThickness, 0, /* otherwise black line segments */ \ NULL ); \ \ Widget wid ## PARAMETER_WITHOUT_PREFIX ## Label = XtVaCreateManagedWidget( \ #RESOURCE, \ xmLabelWidgetClass, \ wid ## PARAMETER_WITHOUT_PREFIX ## Form, \ XmNleftAttachment, XmATTACH_FORM, \ XmNrightAttachment, XmATTACH_FORM, \ XmNtopAttachment, XmATTACH_FORM, \ XmNtopOffset, 20, \ XmNalignment, XmALIGNMENT_BEGINNING, \ NULL ); \ \ wid ## PARAMETER_WITHOUT_PREFIX ## RadioBox_ = XmCreateRadioBox( \ wid ## PARAMETER_WITHOUT_PREFIX ## Form, \ "radio", \ NULL, \ 0 ); \ \ XtVaSetValues( wid ## PARAMETER_WITHOUT_PREFIX ## RadioBox_, \ XmNtraversalOn, True, \ XmNleftAttachment, XmATTACH_FORM, \ XmNtopAttachment, XmATTACH_WIDGET, \ XmNtopWidget, wid ## PARAMETER_WITHOUT_PREFIX ## Label, \ XmNbottomAttachment, XmATTACH_FORM, \ XmNorientation, XmHORIZONTAL, \ XmNforeground, pixForeground, \ XmNbackground, pixBackground, \ NULL ); \ \ wid ## PARAMETER_WITHOUT_PREFIX ## True_ = XtVaCreateManagedWidget( \ "True", \ xmToggleButtonWidgetClass, \ wid ## PARAMETER_WITHOUT_PREFIX ## RadioBox_, \ XmNset, ( resources_.b ## PARAMETER_WITHOUT_PREFIX ## _ ? True : False ), \ NULL ); \ \ XtAddCallback( wid ## PARAMETER_WITHOUT_PREFIX ## True_, \ XmNvalueChangedCallback, \ cb ## PARAMETER_WITHOUT_PREFIX , \ this ); \ \ \ Widget wid ## PARAMETER_WITHOUT_PREFIX ## FalseButton = XtVaCreateManagedWidget( \ "False", \ xmToggleButtonWidgetClass, \ wid ## PARAMETER_WITHOUT_PREFIX ## RadioBox_, \ XmNset, ( resources_.b ## PARAMETER_WITHOUT_PREFIX ## _ ? False : True ), \ NULL ); \ \ XtManageChild( wid ## PARAMETER_WITHOUT_PREFIX ## RadioBox_ ); \ \ \ Widget wid ## PARAMETER_WITHOUT_PREFIX ## Default = XtVaCreateManagedWidget( \ #RESOURCE , \ xmTextFieldWidgetClass, \ wid ## PARAMETER_WITHOUT_PREFIX ## Form, \ XmNleftAttachment, XmATTACH_POSITION, \ XmNleftPosition, 50, \ XmNtopAttachment, XmATTACH_WIDGET, \ XmNtopWidget, wid ## PARAMETER_WITHOUT_PREFIX ## Label, \ XmNbottomAttachment, XmATTACH_FORM, \ XmNvalue, ( CONDEF->b ## PARAMETER_WITHOUT_PREFIX ## _ ? "True" : "False" ), \ XmNeditable, False, \ XmNcursorPositionVisible, False, \ XmNtraversalOn, False, \ NULL ); \ \ \ Widget wid ## PARAMETER_WITHOUT_PREFIX ## HelpButton = XtVaCreateManagedWidget( \ "?", \ xmPushButtonWidgetClass, \ wid ## PARAMETER_WITHOUT_PREFIX ## Form, \ XmNleftAttachment, XmATTACH_POSITION, \ XmNleftPosition, 46, \ XmNrightPosition, 49, \ XmNtopAttachment, XmATTACH_WIDGET, \ XmNtopWidget, wid ## PARAMETER_WITHOUT_PREFIX ## Label , \ XmNbottomAttachment, XmATTACH_FORM, \ XmNtraversalOn, False, \ NULL ); \ \ \ pHelp = new helpCallbackInfo(); \ pHelp->soResource_ = #RESOURCE ; \ pHelp->pGuiEditResources_ = this; \ \ XtAddCallback( wid ## PARAMETER_WITHOUT_PREFIX ## HelpButton, \ XmNactivateCallback, \ cbUserPushedHelp, \ pHelp ); \ // this will translate to the following: // consed.primersPickTemplatesForPrimers: true // bool // getColors( resources_.bPrimersPickTemplatesForPrimers_, // CONDEF->bPrimersPickTemplatesForPrimers_, // pixForeground, // pixBackground ); // Widget widResourceForm3 = XtVaCreateManagedWidget( // "form3", // xmFormWidgetClass, // widRowCol, // XmNshadowThickness, 0, // otherwise black line segments // NULL ); // Widget widLabel3 = XtVaCreateManagedWidget( // "consed.primersPickTemplatesForPrimers", // xmLabelWidgetClass, // widResourceForm3, // XmNleftAttachment, XmATTACH_FORM, // XmNrightAttachment, XmATTACH_FORM, // XmNtopAttachment, XmATTACH_FORM, // XmNtopOffset, 20, // XmNalignment, XmALIGNMENT_BEGINNING, // NULL ); // widPrimersPickTemplatesForPrimersRadioBox_ = XmCreateRadioBox( // widResourceForm3, // "radio", // NULL, // 0 ); // XtVaSetValues( widPrimersPickTemplatesForPrimersRadioBox_, // XmNtraversalOn, True, // XmNleftAttachment, XmATTACH_FORM, // XmNtopAttachment, XmATTACH_WIDGET, // XmNtopWidget, widLabel3, // XmNbottomAttachment, XmATTACH_FORM, // XmNorientation, XmHORIZONTAL, // XmNforeground, pixForeground, // XmNbackground, pixBackground, // NULL ); // widPrimersPickTemplatesForPrimersTrue_ = XtVaCreateManagedWidget( // "True", // xmToggleButtonWidgetClass, // widPrimersPickTemplatesForPrimersRadioBox_, // XmNset, ( resources_.bPrimersPickTemplatesForPrimers_ ? True : False ), // NULL ); // XtAddCallback( widPrimersPickTemplatesForPrimersTrue_, // XmNvalueChangedCallback, // cbPrimersPickTemplatesForPrimers, // this ); // widFalseButton = XtVaCreateManagedWidget( // "False", // xmToggleButtonWidgetClass, // widPrimersPickTemplatesForPrimersRadioBox_, // XmNset, ( consedResources::pCurrentResources_->bPrimersPickTemplatesForPrimers_ ? False : True ), // NULL ); // XtManageChild( widPrimersPickTemplatesForPrimersRadioBox_ ); // Widget widDefault3 = XtVaCreateManagedWidget( // "consed.primersPickTemplatesForPrimers", // xmTextFieldWidgetClass, // widResourceForm3, // XmNleftAttachment, XmATTACH_POSITION, // XmNleftPosition, 50, // XmNtopAttachment, XmATTACH_WIDGET, // XmNtopWidget, widLabel3, // XmNbottomAttachment, XmATTACH_FORM, // XmNvalue, ( consedResources::pDefaultResources_->bPrimersPickTemplatesForPrimers_ ? "True" : "False" ), // XmNeditable, False, // XmNcursorPositionVisible, False, // XmNtraversalOn, False, // NULL ); #define makeWidgetTypeRWCString( RESOURCE, PARAMETER_WITHOUT_PREFIX ) \ \ getColors( resources_.so ## PARAMETER_WITHOUT_PREFIX ## _, \ CONDEF->so ## PARAMETER_WITHOUT_PREFIX ## _, \ pixForeground, \ pixBackground ); \ \ \ Widget wid ## PARAMETER_WITHOUT_PREFIX ## Form = XtVaCreateManagedWidget( \ "form", \ xmFormWidgetClass, \ widRowCol, \ XmNshadowThickness, 0, /* otherwise black line segments */ \ NULL ); \ \ Widget wid ## PARAMETER_WITHOUT_PREFIX ## Label = XtVaCreateManagedWidget( \ #RESOURCE, \ xmLabelWidgetClass, \ wid ## PARAMETER_WITHOUT_PREFIX ## Form, \ XmNleftAttachment, XmATTACH_FORM, \ XmNrightAttachment, XmATTACH_FORM, \ XmNtopAttachment, XmATTACH_FORM, \ XmNtopOffset, 20, \ XmNalignment, XmALIGNMENT_BEGINNING, \ NULL ); \ \ wid ## PARAMETER_WITHOUT_PREFIX ## _ = \ XtVaCreateManagedWidget( \ #RESOURCE "Input", \ xmTextFieldWidgetClass, \ wid ## PARAMETER_WITHOUT_PREFIX ## Form, \ XmNleftAttachment, XmATTACH_FORM, \ XmNrightAttachment, XmATTACH_POSITION, \ XmNrightPosition, 45, \ XmNtopAttachment, XmATTACH_WIDGET, \ XmNtopWidget, wid ## PARAMETER_WITHOUT_PREFIX ## Label, \ XmNbottomAttachment, XmATTACH_FORM, \ XmNvalue, resources_.so ## PARAMETER_WITHOUT_PREFIX ## _.data(), \ XmNforeground, pixForeground, \ XmNbackground, pixBackground, \ NULL ); \ \ \ XtAddCallback( wid ## PARAMETER_WITHOUT_PREFIX ## _, \ XmNlosingFocusCallback, \ cb ## PARAMETER_WITHOUT_PREFIX, \ this ); \ \ \ Widget wid ## PARAMETER_WITHOUT_PREFIX ## Default = XtVaCreateManagedWidget( \ #RESOURCE "Default", \ xmTextFieldWidgetClass, \ wid ## PARAMETER_WITHOUT_PREFIX ## Form, \ XmNleftAttachment, XmATTACH_POSITION, \ XmNleftPosition, 50, \ XmNrightAttachment, XmATTACH_FORM, \ XmNrightOffset, 10, \ XmNtopAttachment, XmATTACH_WIDGET, \ XmNtopWidget, wid ## PARAMETER_WITHOUT_PREFIX ## Label, \ XmNbottomAttachment, XmATTACH_FORM, \ XmNvalue, CONDEF->so ## PARAMETER_WITHOUT_PREFIX ## _.data(), \ XmNeditable, False, \ XmNcursorPositionVisible, False, \ XmNtraversalOn, False, \ NULL ); \ \ \ Widget wid ## PARAMETER_WITHOUT_PREFIX ## HelpButton = XtVaCreateManagedWidget( \ "?", \ xmPushButtonWidgetClass, \ wid ## PARAMETER_WITHOUT_PREFIX ## Form, \ XmNleftAttachment, XmATTACH_POSITION, \ XmNleftPosition, 46, \ XmNrightPosition, 49, \ XmNtopAttachment, XmATTACH_WIDGET, \ XmNtopWidget, wid ## PARAMETER_WITHOUT_PREFIX ## Label , \ XmNbottomAttachment, XmATTACH_FORM, \ XmNtraversalOn, False, \ NULL ); \ \ \ pHelp = new helpCallbackInfo(); \ pHelp->soResource_ = #RESOURCE ; \ pHelp->pGuiEditResources_ = this; \ \ XtAddCallback( wid ## PARAMETER_WITHOUT_PREFIX ## HelpButton, \ XmNactivateCallback, \ cbUserPushedHelp, \ pHelp ); \ // this translates to this: // consed.primersSubcloneFullPathnameOfFileOfSequencesForScreening // RWCString // getColors( resources_.soPrimersSubcloneFullPathnameOfFileOfSequencesForScreening_, // CONDEF->soPrimersSubcloneFullPathnameOfFileOfSequencesForScreening_, // pixForeground, // pixBackground ); // Widget widResourceForm4 = XtVaCreateManagedWidget( // "form4", // xmFormWidgetClass, // widRowCol, // XmNshadowThickness, 0, // otherwise black line segments // NULL ); // Widget widLabel4 = XtVaCreateManagedWidget( // "consed.primersSubcloneFullPathnameOfFileOfSequencesForScreening", // xmLabelWidgetClass, // widResourceForm4, // XmNleftAttachment, XmATTACH_FORM, // XmNrightAttachment, XmATTACH_FORM, // XmNtopAttachment, XmATTACH_FORM, // XmNtopOffset, 20, // XmNalignment, XmALIGNMENT_BEGINNING, // NULL ); // widPrimersSubcloneFullPathnameOfFileOfSequencesForScreening_ = // XtVaCreateManagedWidget( // "consed.primersSubcloneFullPathnameOfFileOfSequencesForScreeningInput", // xmTextFieldWidgetClass, // widResourceForm4, // XmNleftAttachment, XmATTACH_FORM, // XmNtopAttachment, XmATTACH_WIDGET, // XmNtopWidget, widLabel4, // XmNbottomAttachment, XmATTACH_FORM, // XmNvalue, resources_.soPrimersSubcloneFullPathnameOfFileOfSequencesForScreening_.data(), // XmNforeground, pixForeground, // XmNbackground, pixBackground, // NULL ); // XtAddCallback( widPrimersSubcloneFullPathnameOfFileOfSequencesForScreening_, // XmNlosingFocusCallback, // cbPrimersSubcloneFullPathnameOfFileOfSequencesForScreening, // this ); // Widget widDefault4 = XtVaCreateManagedWidget( // "consed.primersSubcloneFullPathnameOfFileOfSequencesForScreeningDefault", // xmTextFieldWidgetClass, // widResourceForm4, // XmNleftAttachment, XmATTACH_POSITION, // XmNleftPosition, 50, // XmNtopAttachment, XmATTACH_WIDGET, // XmNtopWidget, widLabel4, // XmNbottomAttachment, XmATTACH_FORM, // XmNvalue, CONDEF->soPrimersSubcloneFullPathnameOfFileOfSequencesForScreening_.data(), // XmNeditable, False, // XmNcursorPositionVisible, False, // XmNtraversalOn, False, // NULL ); // consed.primersBadLibrariesFile: badLibraries.txt // FileName #define makeWidgetTypeFileName( RESOURCE, PARAMETER_WITHOUT_PREFIX ) \ \ getColors( resources_.fil ## PARAMETER_WITHOUT_PREFIX ## _, \ CONDEF->fil ## PARAMETER_WITHOUT_PREFIX ## _, \ pixForeground, \ pixBackground ); \ \ \ Widget wid ## PARAMETER_WITHOUT_PREFIX ## Form = XtVaCreateManagedWidget( \ "form", \ xmFormWidgetClass, \ widRowCol, \ XmNshadowThickness, 0, /* otherwise black line segments */ \ NULL ); \ \ Widget wid ## PARAMETER_WITHOUT_PREFIX ## Label = XtVaCreateManagedWidget( \ #RESOURCE, \ xmLabelWidgetClass, \ wid ## PARAMETER_WITHOUT_PREFIX ## Form, \ XmNleftAttachment, XmATTACH_FORM, \ XmNrightAttachment, XmATTACH_FORM, \ XmNtopAttachment, XmATTACH_FORM, \ XmNtopOffset, 20, \ XmNalignment, XmALIGNMENT_BEGINNING, \ NULL ); \ \ wid ## PARAMETER_WITHOUT_PREFIX ## _ = \ XtVaCreateManagedWidget( \ #RESOURCE "Input", \ xmTextFieldWidgetClass, \ wid ## PARAMETER_WITHOUT_PREFIX ## Form, \ XmNleftAttachment, XmATTACH_FORM, \ XmNrightAttachment, XmATTACH_POSITION, \ XmNrightPosition, 45, \ XmNtopAttachment, XmATTACH_WIDGET, \ XmNtopWidget, wid ## PARAMETER_WITHOUT_PREFIX ## Label, \ XmNbottomAttachment, XmATTACH_FORM, \ XmNvalue, resources_.fil ## PARAMETER_WITHOUT_PREFIX ## _.data(), \ XmNforeground, pixForeground, \ XmNbackground, pixBackground, \ NULL ); \ \ \ XtAddCallback( wid ## PARAMETER_WITHOUT_PREFIX ## _, \ XmNlosingFocusCallback, \ cb ## PARAMETER_WITHOUT_PREFIX, \ this ); \ \ \ Widget wid ## PARAMETER_WITHOUT_PREFIX ## Default = XtVaCreateManagedWidget( \ #RESOURCE "Default", \ xmTextFieldWidgetClass, \ wid ## PARAMETER_WITHOUT_PREFIX ## Form, \ XmNleftAttachment, XmATTACH_POSITION, \ XmNleftPosition, 50, \ XmNrightAttachment, XmATTACH_FORM, \ XmNrightOffset, 10, \ XmNtopAttachment, XmATTACH_WIDGET, \ XmNtopWidget, wid ## PARAMETER_WITHOUT_PREFIX ## Label, \ XmNbottomAttachment, XmATTACH_FORM, \ XmNvalue, CONDEF->fil ## PARAMETER_WITHOUT_PREFIX ## _.data(), \ XmNeditable, False, \ XmNcursorPositionVisible, False, \ XmNtraversalOn, False, \ NULL ); \ \ \ Widget wid ## PARAMETER_WITHOUT_PREFIX ## HelpButton = XtVaCreateManagedWidget( \ "?", \ xmPushButtonWidgetClass, \ wid ## PARAMETER_WITHOUT_PREFIX ## Form, \ XmNleftAttachment, XmATTACH_POSITION, \ XmNleftPosition, 46, \ XmNrightPosition, 49, \ XmNtopAttachment, XmATTACH_WIDGET, \ XmNtopWidget, wid ## PARAMETER_WITHOUT_PREFIX ## Label , \ XmNbottomAttachment, XmATTACH_FORM, \ XmNtraversalOn, False, \ NULL ); \ \ \ pHelp = new helpCallbackInfo(); \ pHelp->soResource_ = #RESOURCE ; \ pHelp->pGuiEditResources_ = this; \ \ XtAddCallback( wid ## PARAMETER_WITHOUT_PREFIX ## HelpButton, \ XmNactivateCallback, \ cbUserPushedHelp, \ pHelp ); \ static void cbUserPushedHelp( Widget wid, XtPointer pClientData, XtPointer pCallData ) { helpCallbackInfo* pHelp = (helpCallbackInfo*) pClientData; TRY_CATCH_WRAPPER( pHelp->pGuiEditResources_->userPushedHelp( pHelp->soResource_ ); ); } static void cbResize( Widget wid, XtPointer pClientData, XtPointer pCallData ) { guiEditResources* pGuiEditResources = (guiEditResources*) pClientData; TRY_CATCH_WRAPPER( pGuiEditResources->userResizedWindow() ); } static void cbFindFirstButton( Widget wid, XtPointer pClientData, XtPointer pCallData ) { guiEditResources* pGuiEditResources = (guiEditResources*) pClientData; TRY_CATCH_WRAPPER( pGuiEditResources->userPushedFindButton( true ) ); } static void cbFindNextButton( Widget wid, XtPointer pClientData, XtPointer pCallData ) { guiEditResources* pGuiEditResources = (guiEditResources*) pClientData; TRY_CATCH_WRAPPER( pGuiEditResources->userPushedFindButton( false ) ); } static void cbCancelButton( Widget wid, XtPointer pClientData, XtPointer pCallData ) { guiEditResources* pGuiEditResources = (guiEditResources*) pClientData; TRY_CATCH_WRAPPER( delete pGuiEditResources ); } static void cbUserPushedSaveButton( Widget wid, XtPointer pClientData, XtPointer pCallData ) { guiEditResources* pGuiEditResources = (guiEditResources*) pClientData; pGuiEditResources->userPushedSave(); } static void cbFileSelectionOK( Widget wid, XtPointer pClientData, XtPointer pCallData ) { guiEditResources* pGER = (guiEditResources*) pClientData; TRY_CATCH_WRAPPER( pGER->userChoseFileAndPushedOK( wid, (XmFileSelectionBoxCallbackStruct*) pCallData ) ); } static void cbFileSelectionCancel( Widget wid, XtPointer pClientData, XtPointer pCallData ) { XtUnmanageChild( wid ); XtDestroyWidget( wid ); }