Doxygen Source Code Documentation
afni_plugin.c File Reference
#include "afni.h"#include "mri_render.h"#include "mcw_graf.h"#include "parser.h"#include <time.h>#include <stdarg.h>#include <ctype.h>#include "vol2surf.h"#include "cox_render.h"Go to the source code of this file.
Data Structures | |
| struct | mytimeout |
Defines | |
| #define | EMPTY_STRING "\0" |
| #define | COLSIZE AV_colsize() |
| #define | AFNI_DATE __DATE__ |
| #define | PLUG_quit_label "Quit" |
| #define | PLUG_run_label "Run+Keep" |
| #define | PLUG_doit_label "Run+Close" |
| #define | PLUG_help_label "Help" |
| #define | PLUG_quit_help "Press to close\nthis panel without\nrunning program." |
| #define | PLUG_run_help "Press to run\nthe program\nand keep panel open." |
| #define | PLUG_doit_help "Press to run\nthe program\nand close this panel." |
| #define | PLUG_help_help "Press to get\nthe help for\nthis program." |
| #define | NUM_PLUG_ACT 4 |
| #define | LPAD 0 |
| #define | OPC_MAX 8 |
| #define | OPC_MAXMAX 10 |
| #define | LUCK 5 |
| #define | BUFIT(s) do{ strcpy(buf,s); blanktrim(buf); } while(0) |
| #define | MENU_BUT(pl) |
| #define | NBIRN 10 |
| #define | NKLING 5 |
| #define | NUM_NASH (sizeof(nash)/sizeof(char *)) ; |
| #define | STGOOD(s) ( (s) != NULL && (s)[0] != '\0' ) |
| #define | DSQ 0.001 |
Functions | |
| AFNI_plugin_array * | PLUG_get_all_plugins (char *dname) |
| AFNI_plugin * | PLUG_read_plugin (char *fname) |
| AFNI_plugin_array * | PLUG_get_many_plugins (char *pname) |
| PLUGIN_interface * | new_PLUGIN_interface (char *label, char *description, char *help, int call_type, cptr_func *call_func) |
| PLUGIN_interface * | new_PLUGIN_interface_1999 (char *label, char *description, char *help, int call_type, cptr_func *call_func, char *compile_date) |
| void | PLUTO_set_runlabels (PLUGIN_interface *plint, char *rlab, char *dlab) |
| void | PLUTO_set_sequence (PLUGIN_interface *plint, char *sq) |
| void | PLUTO_set_butcolor (PLUGIN_interface *plint, char *sq) |
| void | add_option_to_PLUGIN_interface (PLUGIN_interface *plint, char *label, char *tag, int mandatory) |
| void | PLUTO_add_hint (PLUGIN_interface *plint, char *hh) |
| void | add_number_to_PLUGIN_interface (PLUGIN_interface *plint, char *label, int bot, int top, int decim, int defval, int editable) |
| void | add_string_to_PLUGIN_interface (PLUGIN_interface *plint, char *label, int num_str, char **strlist, int defval) |
| void | add_dataset_to_PLUGIN_interface (PLUGIN_interface *plint, char *label, int anat_mask, int func_mask, int ctrl_mask) |
| void | add_dataset_list_to_PLUGIN_interface (PLUGIN_interface *plint, char *label, int anat_mask, int func_mask, int ctrl_mask) |
| void | add_timeseries_to_PLUGIN_interface (PLUGIN_interface *plint, char *label) |
| void | add_overlaycolor_to_PLUGIN_interface (PLUGIN_interface *plint, char *label) |
| int | PLUG_nonblank_len (char *str) |
| int | PLUTO_prefix_ok (char *str) |
| void | PLUG_setup_widgets (PLUGIN_interface *plint, MCW_DC *dc) |
| void | PLUTO_turnoff_options (PLUGIN_interface *plint) |
| void | PLUG_action_CB (Widget w, XtPointer cd, XtPointer cbs) |
| void | PLUG_delete_window_CB (Widget w, XtPointer cd, XtPointer cbs) |
| void | PLUG_optional_toggle_CB (Widget w, XtPointer cd, XtPointer cbs) |
| void | PLUG_fillin_values (PLUGIN_interface *plint) |
| void | PLUG_freeup_values (PLUGIN_interface *plint) |
| char * | get_label_from_PLUGIN_interface (PLUGIN_interface *plint) |
| char * | get_description_from_PLUGIN_interface (PLUGIN_interface *plint) |
| char * | get_optiontag_from_PLUGIN_interface (PLUGIN_interface *plint) |
| void | blanktrim (char *ch) |
| char * | PLUTO_commandstring (PLUGIN_interface *plint) |
| char * | peek_optiontag_from_PLUGIN_interface (PLUGIN_interface *plint) |
| int | peek_callvalue_type_from_PLUGIN_interface (PLUGIN_interface *plint) |
| void * | get_callvalue_from_PLUGIN_interface (PLUGIN_interface *plint, int type) |
| MRI_IMAGE * | get_timeseries_from_PLUGIN_interface (PLUGIN_interface *plint) |
| float | get_number_from_PLUGIN_interface (PLUGIN_interface *plint) |
| int | get_overlaycolor_from_PLUGIN_interface (PLUGIN_interface *plint) |
| char * | get_string_from_PLUGIN_interface (PLUGIN_interface *plint) |
| MCW_idcode * | get_idcode_from_PLUGIN_interface (PLUGIN_interface *plint) |
| MCW_idclist * | get_idclist_from_PLUGIN_interface (PLUGIN_interface *plint) |
| void | PLUG_choose_dataset_CB (Widget w, XtPointer cd, XtPointer cbs) |
| void | PLUG_finalize_dataset_CB (Widget w, XtPointer fd, MCW_choose_cbs *cbs) |
| void | make_PLUGIN_dataset_link (THD_3dim_dataset *dset, PLUGIN_dataset_link *dsl) |
| int | PLUTO_dset_check (int anat_mask, int func_mask, int ctrl_mask, THD_3dim_dataset *dset) |
| int | PLUGIN_dset_check (int type_mask, int ctrl_mask, THD_3dim_dataset *dset) |
| void | patch_PLUGIN_dataset_links (int ndsl, PLUGIN_dataset_link *dsl) |
| void | PLUTO_popup_dset_chooser (Widget w, int vv, int multi, int_func *chk_func, void_func *cb_func, void *cd) |
| void | PLUG_finalize_user_dset_CB (Widget w, XtPointer fd, MCW_choose_cbs *cbs) |
| void | PLUG_choose_timeseries_CB (Widget w, XtPointer cd, XtPointer cbs) |
| void | PLUG_finalize_timeseries_CB (Widget w, XtPointer fd, MCW_choose_cbs *cbs) |
| void | AFNI_plugin_button (Three_D_View *im3d) |
| void | PLUG_startup_plugin_CB (Widget w, XtPointer cd, XtPointer cbd) |
| int | PLUTO_add_dset (PLUGIN_interface *plint, THD_3dim_dataset *dset, int action_flag) |
| THD_3dim_dataset * | PLUTO_copy_dset (THD_3dim_dataset *dset, char *new_prefix) |
| void | PLUTO_dset_redisplay (THD_3dim_dataset *dset) |
| void | PLUTO_dset_redisplay_mode (THD_3dim_dataset *dset, int mode) |
| void | PLUTO_fixup_names (void) |
| void | PLUTO_popup_worker (PLUGIN_interface *plint, char *mesg, int flag) |
| void | PLUTO_beep (void) |
| int | PLUTO_strncmp (char *aa, char *bb, int nn) |
| int | PLUTO_string_index (char *target, int num, char *source[]) |
| void | PLUTO_set_topshell (PLUGIN_interface *plint, Widget ts) |
| void | PLUTO_popup_meter (PLUGIN_interface *plint) |
| void | PLUTO_popdown_meter (PLUGIN_interface *plint) |
| void | PLUTO_set_meter (PLUGIN_interface *plint, int percent) |
| void * | PLUTO_popup_image (void *handle, MRI_IMAGE *im) |
| XtPointer | PLUGIN_imseq_getim (int n, int type, XtPointer handle) |
| void | PLUGIN_seq_send_CB (MCW_imseq *seq, XtPointer handle, ISQ_cbs *cbs) |
| void * | PLUTO_imseq_popim (MRI_IMAGE *im, generic_func *kfunc, void *kdata) |
| void * | PLUTO_imseq_popup (MRI_IMARR *imar, generic_func *kfunc, void *kdata) |
| void | PLUTO_imseq_retitle (void *handle, char *title) |
| void | PLUTO_imseq_rekill (void *handle, generic_func *kfunc, void *kdata) |
| void | PLUTO_imseq_addto (void *handle, MRI_IMAGE *im) |
| void | PLUTO_imseq_setim (void *handle, int n) |
| void | PLUTO_imseq_destroy (void *handle) |
| XtPointer | PLUTO_imseq_getim (int n, int type, XtPointer handle) |
| void | PLUTO_imseq_send_CB (MCW_imseq *seq, XtPointer handle, ISQ_cbs *cbs) |
| THD_3dim_dataset * | PLUTO_4D_to_typed_fim (THD_3dim_dataset *old_dset, char *new_prefix, int new_datum, int ignore, int detrend, generic_func *user_func, void *user_data) |
| THD_3dim_dataset * | PLUTO_4D_to_typed_fith (THD_3dim_dataset *old_dset, char *new_prefix, int new_datum, int ignore, int detrend, generic_func *user_func, void *user_data) |
| THD_3dim_dataset * | PLUTO_4D_to_typed_fbuc (THD_3dim_dataset *old_dset, char *new_prefix, int new_datum, int ignore, int detrend, int nbrik, generic_func *user_func, void *user_data) |
| void | PLUTO_report (PLUGIN_interface *plint, char *str) |
| PLUGIN_strval * | new_PLUGIN_strval (Widget wpar, char *str) |
| void | destroy_PLUGIN_strval (PLUGIN_strval *av) |
| void | alter_PLUGIN_strval_width (PLUGIN_strval *av, int nchar) |
| void | set_PLUGIN_strval (PLUGIN_strval *av, char *str) |
| char * | get_PLUGIN_strval (PLUGIN_strval *av) |
| int | PLUTO_set_v2s_addrs (void **vopt, char ***maps, char **hist) |
| vptr_func * | MCW_onen_i_estel_edain (void *n) |
| void | PLUTO_register_timeseries (char *cname, MRI_IMAGE *tsim) |
| THD_3dim_dataset * | PLUTO_find_dset_idc (char *idc) |
| THD_3dim_dataset * | PLUTO_find_dset (MCW_idcode *idcode) |
| THD_slist_find | PLUTO_dset_finder (char *idc) |
| void | PLUTO_histoplot (int nbin, float bot, float top, int *hist, char *xlab, char *ylab, char *tlab, int njist, int **jist) |
| float | p10 (float x) |
| void | PLUTO_scatterplot (int npt, float *x, float *y, char *xlab, char *ylab, char *tlab, float a, float b) |
| void | PLUTO_force_redisplay (void) |
| void | PLUTO_force_rebar (void) |
| void | PLUTO_register_workproc (XtWorkProc func, XtPointer data) |
| void | PLUTO_remove_workproc (XtWorkProc func) |
| Boolean | PLUG_workprocess (XtPointer fred) |
| void | PLUG_dotimeout_CB (XtPointer cd, XtIntervalId *id) |
| void | PLUTO_register_timeout (int msec, generic_func *func, XtPointer cd) |
| double | PLUTO_elapsed_time (void) |
| double | PLUTO_cpu_time (void) |
Variables | |
| MCW_action_item | PLUG_act [] |
| int | num_user_dset = 0 |
| PLUGIN_dataset_link * | user_dset_link = NULL |
| char ** | user_dset_strlist = NULL |
| int | user_dset_numds = 0 |
| THD_3dim_dataset ** | user_dset_dslist = NULL |
| void_func * | user_dset_cb_func = NULL |
| void * | user_dset_cb_data = NULL |
| vptr_func * | forced_loads [] |
| int | num_workp = 0 |
| XtWorkProc * | workp = NULL |
| XtPointer * | datap = NULL |
| XtWorkProcId | wpid |
Define Documentation
|
|
|
|
|
Definition at line 2425 of file afni_plugin.c. Referenced by PLUTO_commandstring(). |
|
|
Definition at line 21 of file afni_plugin.c. Referenced by AFNI_plugin_button(), and PLUG_setup_widgets(). |
|
|
|
|
|
|
|
|
|
|
|
|
Value: do{ \ xstr = XmStringCreateLtoR( (pl)->label , XmFONTLIST_DEFAULT_TAG ) ; \ pbut = XtVaCreateManagedWidget( \ "dialog" , xmPushButtonWidgetClass , menu , \ XmNlabelString , xstr , \ XmNmarginHeight , 0 , \ XmNuserData , (XtPointer) im3d , \ XmNtraversalOn , False , \ XmNinitialResourcesPersistent , False , \ NULL ) ; \ im3d->vwid->plugbut[npbut] = pbut ; \ im3d->vwid->plugint[npbut] = (pl) ; \ im3d->vwid->pluglab[npbut] = XtNewString((pl)->label) ; \ XtAddCallback( pbut , XmNactivateCallback , \ PLUG_startup_plugin_CB , (XtPointer)(pl) ) ; \ XmStringFree(xstr) ; \ if( (pl)->hint != NULL ) MCW_register_hint( pbut , (pl)->hint ) ; \ if( (pl)->butcolor[0] != '\0' ) \ MCW_set_widget_bg( pbut , (pl)->butcolor , 0 ) ; \ } while(0) |
|
|
|
|
|
|
|
|
|
|
|
Definition at line 1212 of file afni_plugin.c. Referenced by PLUG_setup_widgets(). |
|
|
|
|
|
|
|
|
Definition at line 1209 of file afni_plugin.c. |
|
|
Definition at line 1204 of file afni_plugin.c. Referenced by PLUG_setup_widgets(). |
|
|
Definition at line 1210 of file afni_plugin.c. |
|
|
Definition at line 1205 of file afni_plugin.c. Referenced by PLUG_action_CB(). |
|
|
Definition at line 1207 of file afni_plugin.c. |
|
|
Definition at line 1202 of file afni_plugin.c. Referenced by PLUG_action_CB(). |
|
|
Definition at line 1208 of file afni_plugin.c. |
|
|
Definition at line 1203 of file afni_plugin.c. Referenced by PLUG_setup_widgets(). |
|
|
Definition at line 4898 of file afni_plugin.c. |
Function Documentation
|
||||||||||||||||||||||||
|
Definition at line 1020 of file afni_plugin.c. References EMPTY_STRING, and ENTRY.
01023 {
01024 int nopt , nsv , ii ;
01025 PLUGIN_option * opt ;
01026 PLUGIN_subvalue * sv ;
01027
01028 ENTRY("add_dataset_list_to_PLUGIN_interface") ;
01029
01030 /*-- sanity checks --*/
01031
01032 if( plint == NULL || plint->option_count == 0 ) EXRETURN ;
01033 if( anat_mask == 0 && func_mask == 0 ) EXRETURN ;
01034
01035 if( label == NULL ) label = EMPTY_STRING ;
01036
01037 if( (ctrl_mask & BRICK_ALLTYPE_MASK)==0 ||
01038 (ctrl_mask & DIMEN_ALL_MASK) ==0 ) EXRETURN ;
01039
01040 nopt = plint->option_count - 1 ;
01041 opt = plint->option[nopt] ;
01042
01043 nsv = opt->subvalue_count ;
01044 if( nsv == PLUGIN_MAX_SUBVALUES ){
01045 fprintf(stderr,"*** Warning: maximum plugin subvalue count exceeded!\n");
01046 EXRETURN ;
01047 }
01048
01049 /*-- load values into next subvalue --*/
01050
01051 sv = &(opt->subvalue[nsv]) ;
01052
01053 sv->data_type = PLUGIN_DATASET_LIST_TYPE ;
01054 PLUGIN_LABEL_strcpy( sv->label , label ) ;
01055
01056 sv->dset_anat_mask = anat_mask ;
01057 sv->dset_func_mask = func_mask ;
01058 sv->dset_ctrl_mask = ctrl_mask ;
01059
01060 (opt->subvalue_count)++ ;
01061 EXRETURN ;
01062 }
|
|
||||||||||||||||||||||||
|
Definition at line 976 of file afni_plugin.c. References EMPTY_STRING, and ENTRY.
00979 {
00980 int nopt , nsv , ii ;
00981 PLUGIN_option * opt ;
00982 PLUGIN_subvalue * sv ;
00983
00984 ENTRY("add_dataset_to_PLUGIN_interface") ;
00985
00986 /*-- sanity checks --*/
00987
00988 if( plint == NULL || plint->option_count == 0 ) EXRETURN ;
00989 if( anat_mask == 0 && func_mask == 0 ) EXRETURN ;
00990
00991 if( label == NULL ) label = EMPTY_STRING ;
00992
00993 if( (ctrl_mask & BRICK_ALLTYPE_MASK)==0 ||
00994 (ctrl_mask & DIMEN_ALL_MASK) ==0 ) EXRETURN ;
00995
00996 nopt = plint->option_count - 1 ;
00997 opt = plint->option[nopt] ;
00998
00999 nsv = opt->subvalue_count ;
01000 if( nsv == PLUGIN_MAX_SUBVALUES ){
01001 fprintf(stderr,"*** Warning: maximum plugin subvalue count exceeded!\n");
01002 EXRETURN ;
01003 }
01004
01005 /*-- load values into next subvalue --*/
01006
01007 sv = &(opt->subvalue[nsv]) ;
01008
01009 sv->data_type = PLUGIN_DATASET_TYPE ;
01010 PLUGIN_LABEL_strcpy( sv->label , label ) ;
01011
01012 sv->dset_anat_mask = anat_mask ;
01013 sv->dset_func_mask = func_mask ;
01014 sv->dset_ctrl_mask = ctrl_mask ;
01015
01016 (opt->subvalue_count)++ ;
01017 EXRETURN ;
01018 }
|
|
||||||||||||||||||||||||||||||||
|
Definition at line 793 of file afni_plugin.c. References EMPTY_STRING, ENTRY, and top.
00797 {
00798 int nopt , nsv ;
00799 PLUGIN_option * opt ;
00800 PLUGIN_subvalue * sv ;
00801
00802 /*-- sanity check --*/
00803
00804 ENTRY("add_number_to_PLUGIN_interface") ;
00805
00806 if( plint == NULL || plint->option_count == 0 ) EXRETURN ;
00807
00808 if( label == NULL ) label = EMPTY_STRING ;
00809
00810 nopt = plint->option_count - 1 ;
00811 opt = plint->option[nopt] ;
00812
00813 nsv = opt->subvalue_count ;
00814 if( nsv == PLUGIN_MAX_SUBVALUES ){
00815 fprintf(stderr,"*** Warning: maximum plugin subvalue count exceeded!\n");
00816 EXRETURN ;
00817 }
00818
00819 /*-- load values into next subvalue --*/
00820
00821 sv = &(opt->subvalue[nsv]) ;
00822
00823 sv->data_type = PLUGIN_NUMBER_TYPE ;
00824 PLUGIN_LABEL_strcpy( sv->label , label ) ;
00825
00826 sv->int_range_bot = bot ;
00827 sv->int_range_top = top ;
00828 sv->int_range_decim = decim ;
00829 sv->value_default = defval ;
00830 sv->editable = editable ;
00831
00832 (opt->subvalue_count)++ ;
00833 EXRETURN ;
00834 }
|
|
||||||||||||||||||||
|
Definition at line 673 of file afni_plugin.c. References EMPTY_STRING, ENTRY, MCW_strncpy, XtMalloc, and XtRealloc.
00675 {
00676 int nopt , isv ;
00677 PLUGIN_option * opt ;
00678
00679 ENTRY("add_option_to_PLUGIN_interface") ;
00680
00681 /*-- sanity check --*/
00682
00683 if( plint == NULL ) EXRETURN ;
00684 if( plint->call_method == PLUGIN_CALL_IMMEDIATELY ) EXRETURN ;
00685
00686 if( label == NULL ) label = EMPTY_STRING ;
00687 if( tag == NULL ) tag = EMPTY_STRING ;
00688
00689 /*-- create space for new option --*/
00690
00691 nopt = plint->option_count ;
00692 plint->option = (PLUGIN_option **)
00693 XtRealloc( (char *) plint->option ,
00694 sizeof(PLUGIN_option *) * (nopt+1) ) ;
00695
00696 plint->option[nopt] = opt = (PLUGIN_option *) XtMalloc( sizeof(PLUGIN_option) ) ;
00697
00698 /*-- put values in new option --*/
00699
00700 PLUGIN_LABEL_strcpy( opt->label , label ) ;
00701 MCW_strncpy( opt->tag , tag , PLUGIN_STRING_SIZE ) ;
00702
00703 opt->mandatory = mandatory ;
00704 opt->subvalue_count = 0 ;
00705
00706 opt->hint = NULL ;
00707 for( isv=0 ; isv < PLUGIN_MAX_SUBVALUES ; isv++ )
00708 opt->subvalue[isv].hint = NULL ;
00709
00710 (plint->option_count)++ ; /* one more option */
00711
00712 #if 0
00713 {int qq; fprintf(stderr,"Option tags thus far:\n");
00714 for(qq=0;qq<plint->option_count;qq++)
00715 fprintf(stderr," %s",plint->option[qq]->tag) ;
00716 fprintf(stderr,"\n"); }
00717 #endif
00718
00719 EXRETURN ;
00720 }
|
|
||||||||||||
|
Definition at line 1114 of file afni_plugin.c. References EMPTY_STRING, and ENTRY.
01115 {
01116 int nopt , nsv , ii ;
01117 PLUGIN_option * opt ;
01118 PLUGIN_subvalue * sv ;
01119
01120 ENTRY("add_overlaycolor_to_PLUGIN_interface") ;
01121
01122 /*-- sanity checks --*/
01123
01124 if( plint == NULL || plint->option_count == 0 ) EXRETURN ;
01125
01126 if( label == NULL ) label = EMPTY_STRING ;
01127
01128 nopt = plint->option_count - 1 ;
01129 opt = plint->option[nopt] ;
01130
01131 nsv = opt->subvalue_count ;
01132 if( nsv == PLUGIN_MAX_SUBVALUES ){
01133 fprintf(stderr,"*** Warning: maximum plugin subvalue count exceeded!\n");
01134 EXRETURN ;
01135 }
01136
01137 /*-- load values into next subvalue --*/
01138
01139 sv = &(opt->subvalue[nsv]) ;
01140
01141 sv->data_type = PLUGIN_OVERLAY_COLOR_TYPE ;
01142 PLUGIN_LABEL_strcpy( sv->label , label ) ;
01143
01144 (opt->subvalue_count)++ ;
01145 EXRETURN ;
01146 }
|
|
||||||||||||||||||||||||
|
Definition at line 857 of file afni_plugin.c. References EMPTY_STRING, ENTRY, MCW_strncpy, and XtMalloc.
00861 {
00862 int nopt , nsv , ii ;
00863 PLUGIN_option * opt ;
00864 PLUGIN_subvalue * sv ;
00865
00866 ENTRY("add_string_to_PLUGIN_interface") ;
00867
00868 if( plint == NULL || plint->option_count == 0 ) EXRETURN ;
00869
00870 if( label == NULL ) label = EMPTY_STRING ;
00871
00872 nopt = plint->option_count - 1 ;
00873 opt = plint->option[nopt] ;
00874
00875 nsv = opt->subvalue_count ;
00876 if( nsv == PLUGIN_MAX_SUBVALUES ){
00877 fprintf(stderr,"*** Warning: maximum plugin subvalue count exceeded!\n");
00878 EXRETURN ;
00879 }
00880
00881 /*-- load values into next subvalue --*/
00882
00883 sv = &(opt->subvalue[nsv]) ;
00884
00885 sv->data_type = PLUGIN_STRING_TYPE ;
00886 PLUGIN_LABEL_strcpy( sv->label , label ) ;
00887
00888 if( num_str > 0 ){
00889 sv->string_range_count = num_str ;
00890 for( ii=0 ; ii < num_str ; ii++ ){
00891 sv->string_range[ii] = (char*)XtMalloc( PLUGIN_STRING_SIZE ) ;
00892 MCW_strncpy( sv->string_range[ii] , strlist[ii] , PLUGIN_STRING_SIZE ) ;
00893 }
00894 sv->value_default = defval ;
00895 sv->editable = FALSE ;
00896 } else {
00897 sv->string_range_count = 0 ;
00898 sv->editable = TRUE ;
00899 sv->value_default = defval ;
00900
00901 if( strlist != NULL && strlist[0] != NULL ){ /* 19 Jun 2000 */
00902 sv->string_range_count = -1 ;
00903 sv->string_range[0] = (char*)XtMalloc( PLUGIN_STRING_SIZE ) ;
00904 MCW_strncpy( sv->string_range[0], strlist[0], PLUGIN_STRING_SIZE ) ;
00905 }
00906 }
00907
00908 (opt->subvalue_count)++ ;
00909 EXRETURN ;
00910 }
|
|
||||||||||||
|
Definition at line 1072 of file afni_plugin.c. References EMPTY_STRING, and ENTRY.
01073 {
01074 int nopt , nsv , ii ;
01075 PLUGIN_option * opt ;
01076 PLUGIN_subvalue * sv ;
01077
01078 ENTRY("add_timeseries_to_PLUGIN_interface") ;
01079
01080 /*-- sanity checks --*/
01081
01082 if( plint == NULL || plint->option_count == 0 ) EXRETURN ;
01083
01084 if( label == NULL ) label = EMPTY_STRING ;
01085
01086 nopt = plint->option_count - 1 ;
01087 opt = plint->option[nopt] ;
01088
01089 nsv = opt->subvalue_count ;
01090 if( nsv == PLUGIN_MAX_SUBVALUES ){
01091 fprintf(stderr,"*** Warning: maximum plugin subvalue count exceeded!\n");
01092 EXRETURN ;
01093 }
01094
01095 /*-- load values into next subvalue --*/
01096
01097 sv = &(opt->subvalue[nsv]) ;
01098
01099 sv->data_type = PLUGIN_TIMESERIES_TYPE ;
01100 PLUGIN_LABEL_strcpy( sv->label , label ) ;
01101
01102 (opt->subvalue_count)++ ;
01103 EXRETURN ;
01104 }
|
|
|
store the choice, and change the widget label * Definition at line 3361 of file afni_plugin.c. References AFNI_3DDATA_VIEW, AFNI_noenv(), COLSIZE, Three_D_View::dc, AFNI_widget_set::dmode, ENTRY, free, GLOBAL_library, IM3D_VALID, malloc, AFNI_datamode_widgets::mbar_rowcol, MCW_register_help(), MCW_register_hint(), ncol, AFNI_widget_set::nplugbut, MCW_DC::ovc, MCW_DCOV::pixov_brightest, AFNI_widget_set::plugbut, AFNI_library_type::plugins, AFNI_widget_set::plugint, AFNI_widget_set::pluglab, Three_D_View::type, VISIBILIZE_WHEN_MAPPED, and Three_D_View::vwid. Referenced by AFNI_make_widgets(), and MAIN_workprocess().
03362 {
03363 AFNI_plugin_array * exten = GLOBAL_library.plugins ;
03364 AFNI_plugin * plug ;
03365 int pp , ipl , nbut , npbut , kpl ;
03366 Widget rc , mbar , menu , cbut , pbut , wpar , sep ;
03367 XmString xstr ;
03368 PLUGIN_interface ** plintar ; /* 28 Nov 2000 */
03369
03370 ENTRY("AFNI_plugin_button") ;
03371
03372 /*-- check inputs for legality --*/
03373
03374 if( exten == NULL ||
03375 ! IM3D_VALID(im3d) || im3d->type != AFNI_3DDATA_VIEW ) EXRETURN ;
03376
03377 /*-- 23 Sep 2000: count number of buttons that will be made --*/
03378
03379 npbut = 0 ;
03380 for( pp=0 ; pp < exten->num ; pp++ ){
03381 plug = exten->plar[pp] ;
03382 for( ipl=0 ; ipl < plug->interface_count ; ipl++ ){
03383 npbut++ ;
03384 }
03385 }
03386
03387 /*-- make arrays to hold the plugin buttons (etc.),
03388 so that plugins can be started from layouts (in afni_splash.c) --*/
03389
03390 im3d->vwid->nplugbut = npbut ;
03391 im3d->vwid->plugbut = (Widget *) malloc(sizeof(Widget) *npbut) ;
03392 im3d->vwid->pluglab = (char **) malloc(sizeof(char *) *npbut) ;
03393 im3d->vwid->plugint = (PLUGIN_interface **) malloc(sizeof(PLUGIN_interface *)*npbut) ;
03394
03395 /*-- create menu bar --*/
03396
03397 wpar = im3d->vwid->dmode->mbar_rowcol ;
03398
03399 rc = XtVaCreateWidget(
03400 "dialog" , xmRowColumnWidgetClass , wpar ,
03401 XmNorientation , XmHORIZONTAL ,
03402 XmNpacking , XmPACK_TIGHT ,
03403 XmNtraversalOn , False ,
03404 XmNinitialResourcesPersistent , False ,
03405 NULL ) ;
03406
03407 mbar = XmCreateMenuBar( rc , "dialog" , NULL,0 ) ;
03408 XtVaSetValues( mbar ,
03409 XmNmarginWidth , 0 ,
03410 XmNmarginHeight , 0 ,
03411 XmNspacing , 3 ,
03412 XmNborderWidth , 0 ,
03413 XmNborderColor , 0 ,
03414 XmNtraversalOn , False ,
03415 XmNbackground , im3d->dc->ovc->pixov_brightest ,
03416 NULL ) ;
03417 XtManageChild( mbar ) ;
03418
03419 menu = XmCreatePulldownMenu( mbar , "menu" , NULL,0 ) ;
03420
03421 VISIBILIZE_WHEN_MAPPED(menu) ;
03422
03423 xstr = XmStringCreateLtoR( "Plugins" , XmFONTLIST_DEFAULT_TAG ) ;
03424 cbut = XtVaCreateManagedWidget(
03425 "dialog" , xmCascadeButtonWidgetClass , mbar ,
03426 XmNlabelString , xstr ,
03427 XmNsubMenuId , menu ,
03428 XmNmarginWidth , 0 ,
03429 XmNmarginHeight , 0 ,
03430 XmNmarginBottom , 0 ,
03431 XmNmarginTop , 0 ,
03432 XmNmarginRight , 0 ,
03433 XmNmarginLeft , 0 ,
03434 XmNtraversalOn , False ,
03435 XmNinitialResourcesPersistent , False ,
03436 NULL ) ;
03437 XmStringFree( xstr ) ;
03438
03439 MCW_register_help( cbut , "Pressing this drops down\n"
03440 "the menu of the plugin\n"
03441 "programs loaded when\n"
03442 "AFNI started."
03443 ) ;
03444 MCW_register_hint( cbut , "Plugins menu" ) ;
03445
03446 /* macro to create a new menu button */
03447
03448 #define MENU_BUT(pl) \
03449 do{ \
03450 xstr = XmStringCreateLtoR( (pl)->label , XmFONTLIST_DEFAULT_TAG ) ; \
03451 pbut = XtVaCreateManagedWidget( \
03452 "dialog" , xmPushButtonWidgetClass , menu , \
03453 XmNlabelString , xstr , \
03454 XmNmarginHeight , 0 , \
03455 XmNuserData , (XtPointer) im3d , \
03456 XmNtraversalOn , False , \
03457 XmNinitialResourcesPersistent , False , \
03458 NULL ) ; \
03459 im3d->vwid->plugbut[npbut] = pbut ; /* 23 Sep 2000 */ \
03460 im3d->vwid->plugint[npbut] = (pl) ; \
03461 im3d->vwid->pluglab[npbut] = XtNewString((pl)->label) ; \
03462 XtAddCallback( pbut , XmNactivateCallback , \
03463 PLUG_startup_plugin_CB , (XtPointer)(pl) ) ; \
03464 XmStringFree(xstr) ; \
03465 if( (pl)->hint != NULL ) MCW_register_hint( pbut , (pl)->hint ) ; \
03466 if( (pl)->butcolor[0] != '\0' ) \
03467 MCW_set_widget_bg( pbut , (pl)->butcolor , 0 ) ; \
03468 } while(0)
03469
03470 /*** top of menu = a label to click on that does nothing at all ***/
03471
03472 xstr = XmStringCreateLtoR( "-- Cancel --" , XmFONTLIST_DEFAULT_TAG ) ;
03473 (void) XtVaCreateManagedWidget(
03474 "dialog" , xmLabelWidgetClass , menu ,
03475 XmNlabelString , xstr ,
03476 XmNrecomputeSize , False ,
03477 XmNinitialResourcesPersistent , False ,
03478 NULL ) ;
03479 XmStringFree(xstr) ;
03480
03481 sep = XtVaCreateManagedWidget(
03482 "dialog" , xmSeparatorWidgetClass , menu ,
03483 XmNseparatorType , XmSINGLE_LINE ,
03484 NULL ) ;
03485
03486 /*-- 28 Nov 2000: allow user to specify that
03487 button should be alphabetized --*/
03488
03489 /* make single array of all plugin interfaces */
03490
03491 plintar = (PLUGIN_interface **) malloc(sizeof(PLUGIN_interface *)*npbut) ;
03492 for( kpl=pp=0 ; pp < exten->num ; pp++ ){
03493 plug = exten->plar[pp] ;
03494 for( ipl=0 ; ipl < plug->interface_count ; ipl++ ){
03495 plintar[kpl++] = plug->interface[ipl] ;
03496 }
03497 }
03498
03499 /* sort this array, if desired */
03500
03501 if( !AFNI_noenv("AFNI_PLUGINS_ALPHABETIZE") ){
03502 int qq , ss ;
03503 PLUGIN_interface * tpl ;
03504
03505 do{ /* bubble sort */
03506 for( ss=qq=0 ; qq < npbut-1 ; qq++ ){
03507 if( strcasecmp(plintar[qq]->label,plintar[qq+1]->label) > 0 ){
03508 tpl = plintar[qq+1] ;
03509 plintar[qq+1] = plintar[qq] ;
03510 plintar[qq] = tpl ;
03511 ss++ ;
03512 }
03513 }
03514 } while( ss ) ;
03515 }
03516
03517 /*-- prepare to make the actual buttons --*/
03518
03519 nbut = 2 ; /* allow for the Cancel label and separator */
03520 npbut = 0 ; /* actual number of buttons */
03521
03522 /*** make buttons for each interface ***/
03523
03524 for( kpl=pp=0 ; pp < exten->num ; pp++ ){
03525 plug = exten->plar[pp] ;
03526 for( ipl=0 ; ipl < plug->interface_count ; ipl++ ){
03527 MENU_BUT( plintar[kpl] ) ; /* uses npbut */
03528 nbut++ ; npbut++ ; kpl++ ;
03529 }
03530 }
03531
03532 free(plintar) ; /* don't need no more */
03533
03534 if( nbut > COLSIZE ){
03535 int ncol = (nbut-2)/COLSIZE + 1 ;
03536 XtDestroyWidget(sep) ;
03537 XtVaSetValues( menu ,
03538 XmNpacking , XmPACK_COLUMN ,
03539 XmNnumColumns , ncol ,
03540 NULL ) ;
03541 }
03542
03543 XtManageChild( rc ) ;
03544 EXRETURN ;
03545 }
|
|
||||||||||||
|
Definition at line 4666 of file afni_plugin.c. Referenced by TAG_make_widgets().
04667 {
04668 if( av != NULL && nchar > 0 )
04669 XtVaSetValues( av->textf , XmNcolumns , nchar , NULL ) ;
04670 return ;
04671 }
|
|
|
Definition at line 2414 of file afni_plugin.c.
02415 {
02416 int ii , ll ;
02417 if( ch == NULL ) return ;
02418 ll = strlen(ch) ; if( ll < 2 ) return ;
02419 for( ii=ll-1 ; ii > 0 ; ii-- )
02420 if( isspace(ch[ii]) ) ch[ii] = '\0' ; else break ;
02421 return ;
02422 }
|
|
|
Definition at line 4657 of file afni_plugin.c. References myXtFree.
04658 {
04659 if( av != NULL ){
04660 XtDestroyWidget( av->rowcol ) ;
04661 myXtFree(av) ;
04662 }
04663 return ;
04664 }
|
|
||||||||||||
|
Definition at line 2600 of file afni_plugin.c. Referenced by get_idclist_from_PLUGIN_interface(), get_idcode_from_PLUGIN_interface(), get_number_from_PLUGIN_interface(), get_overlaycolor_from_PLUGIN_interface(), get_string_from_PLUGIN_interface(), and get_timeseries_from_PLUGIN_interface().
02601 {
02602 int isv ;
02603 PLUGIN_option * opt ;
02604
02605 ENTRY("get_callvalue_from_PLUGIN_interface") ;
02606
02607 if( plint == NULL ) RETURN( NULL );
02608
02609 opt = plint->option[ plint->opnum ] ;
02610 if( opt == NULL ) RETURN( NULL );
02611
02612 isv = plint->svnum ;
02613 if( isv >= opt->subvalue_count ) RETURN( NULL );
02614
02615 if( opt->subvalue[isv].data_type != type ) RETURN( NULL );
02616
02617 plint->svnum ++ ;
02618 RETURN( opt->callvalue[isv] );
02619 }
|
|
|
Definition at line 2367 of file afni_plugin.c.
|
|
|
Definition at line 2678 of file afni_plugin.c. References ENTRY, get_callvalue_from_PLUGIN_interface(), and RETURN.
02679 {
02680 MCW_idclist ** llist ;
02681
02682 ENTRY("get_idclist_from_PLUGIN_interface") ;
02683
02684 llist = (MCW_idclist **)
02685 get_callvalue_from_PLUGIN_interface(plint,PLUGIN_DATASET_LIST_TYPE) ;
02686
02687 if( llist != NULL ) RETURN(*llist) ;
02688 RETURN(NULL) ;
02689 }
|
|
|
Definition at line 2669 of file afni_plugin.c. References ENTRY, get_callvalue_from_PLUGIN_interface(), and RETURN.
02670 {
02671 ENTRY("get_idcode_from_PLUGIN_interface") ;
02672 RETURN(
02673 (MCW_idcode *)get_callvalue_from_PLUGIN_interface(plint,PLUGIN_DATASET_TYPE) );
02674 }
|
|
|
Definition at line 2360 of file afni_plugin.c.
|
|
|
Definition at line 2638 of file afni_plugin.c. References ENTRY, get_callvalue_from_PLUGIN_interface(), and RETURN.
02639 {
02640 float * fp ;
02641 ENTRY("get_number_from_PLUGIN_interface") ;
02642 fp = (float *)get_callvalue_from_PLUGIN_interface(plint,PLUGIN_NUMBER_TYPE) ;
02643 if( fp == NULL ) RETURN(BAD_NUMBER) ;
02644 RETURN(*fp) ;
02645 }
|
|
|
Definition at line 2379 of file afni_plugin.c.
02380 {
02381 int iopt ;
02382 PLUGIN_option * opt ;
02383
02384 ENTRY("get_optiontag_from_PLUGIN_interface") ;
02385
02386 if( plint == NULL ) RETURN(NULL) ;
02387
02388 iopt = plint->opnum + 1 ;
02389 while( iopt < plint->option_count ){
02390
02391 opt = plint->option[iopt++] ;
02392 if( opt == NULL ) continue ; /* bad? */
02393 if( ! opt->chosen ) continue ; /* not used this time */
02394
02395 plint->opnum = iopt-1 ; /* keep track of which option */
02396 plint->svnum = 0 ; /* start at 1st subvalue */
02397 RETURN(opt->tag) ;
02398 }
02399
02400 plint->opnum = plint->option_count ;
02401 RETURN(NULL) ;
02402 }
|
|
|
Definition at line 2649 of file afni_plugin.c. References ENTRY, get_callvalue_from_PLUGIN_interface(), and RETURN.
02650 {
02651 int * ip ;
02652 ENTRY("get_overlaycolor_from_PLUGIN_interface") ;
02653 ip = (int *)get_callvalue_from_PLUGIN_interface(plint,PLUGIN_OVERLAY_COLOR_TYPE) ;
02654 if( ip == NULL ) RETURN(-1) ;
02655 RETURN(*ip) ;
02656 }
|
|
|
Definition at line 4680 of file afni_plugin.c. Referenced by TAG_read_CB(), TAG_relabel_CB(), and TAG_write_CB().
04681 {
04682 if( av == NULL ) return NULL ;
04683 return XmTextFieldGetString( av->textf ) ;
04684 }
|
|
|
Definition at line 2660 of file afni_plugin.c. References ENTRY, get_callvalue_from_PLUGIN_interface(), and RETURN.
02661 {
02662 ENTRY("get_string_from_PLUGIN_interface") ;
02663 RETURN(
02664 (char *) get_callvalue_from_PLUGIN_interface(plint,PLUGIN_STRING_TYPE) );
02665 }
|
|
|
Definition at line 2623 of file afni_plugin.c. References ENTRY, get_callvalue_from_PLUGIN_interface(), and RETURN.
|
|
||||||||||||
|
find the stuff that is associated with this button * Definition at line 2960 of file afni_plugin.c. References THD_3dim_dataset::dblk, THD_diskptr::directory_name, THD_datablock::diskptr, ENTRY, THD_diskptr::filecode, THD_3dim_dataset::idcode, ISVALID_3DIM_DATASET, MCW_strncpy, SESSTRAIL, THD_MAX_NAME, THD_trailname(), and ZERO_IDCODE. Referenced by DRAW_choose_CB(), NOTES_choose_CB(), NUD_choose_CB(), PLUG_choose_dataset_CB(), PLUTO_popup_dset_chooser(), RCREND_load_dsl(), RCREND_state_to_widgets(), REND_load_dsl(), and REND_state_to_widgets().
02962 {
02963 char nam[THD_MAX_NAME] ;
02964 char * tnam ;
02965
02966 ENTRY("make_PLUGIN_dataset_link") ;
02967
02968 /*-- sanity checks --*/
02969
02970 if( dsl == NULL ) EXRETURN ;
02971
02972 if( ! ISVALID_3DIM_DATASET(dset) ){
02973 strcpy( dsl->title , "* garbage *" ) ;
02974 ZERO_IDCODE( dsl->idcode ) ;
02975 EXRETURN ;
02976 }
02977
02978 /*-- make title (cf. AFNI_set_window_titles) --*/
02979
02980 strcpy( nam , dset->dblk->diskptr->directory_name ) ;
02981 strcat( nam , dset->dblk->diskptr->filecode ) ;
02982 tnam = THD_trailname(nam,SESSTRAIL+1) ;
02983 MCW_strncpy( dsl->title , tnam , PLUGIN_STRING_SIZE ) ;
02984
02985 /*-- copy idcode --*/
02986
02987 dsl->idcode = dset->idcode ;
02988
02989 EXRETURN ;
02990 }
|
|
|
Definition at line 4743 of file afni_plugin.c. References THD_3dim_dataset::dblk, forced_loads, THD_datablock::total_bytes, and vptr_func.
04743 {
04744 THD_3dim_dataset *ds = (THD_3dim_dataset *)n ;
04745 double x = (double)(ds->dblk->total_bytes) ;
04746 return forced_loads[(int)x] ;
04747 }
|
|
||||||||||||||||||||||||
|
if defined(DARWIN) && !defined(c_plusplus) && !defined(__cplusplus) Definition at line 511 of file afni_plugin.c. References cptr_func, ENTRY, new_PLUGIN_interface_1999(), and RETURN.
00514 {
00515 PLUGIN_interface * plint ;
00516
00517 ENTRY("new_PLUGIN_interface") ;
00518
00519 plint = new_PLUGIN_interface_1999( label , description , help ,
00520 call_type , call_func , NULL ) ;
00521 RETURN(plint) ;
00522 }
|
|
||||||||||||||||||||||||||||
|
Definition at line 528 of file afni_plugin.c. References cptr_func, ENTRY, MCW_strncpy, RETURN, STATUS, and XtMalloc. Referenced by new_PLUGIN_interface().
00532 {
00533 PLUGIN_interface * plint ;
00534 static int num_date_err = 0 ;
00535
00536 /*-- sanity check --*/
00537
00538 ENTRY("new_PLUGIN_interface_1999") ;
00539
00540 if( label == NULL || strlen(label) == 0 ) RETURN(NULL) ;
00541
00542 if( !( (call_type == PLUGIN_CALL_IMMEDIATELY) ||
00543 (call_type == PLUGIN_CALL_VIA_MENU )
00544 ) ) RETURN(NULL) ;
00545
00546 if( call_func == (cptr_func *) NULL ) RETURN(NULL) ;
00547
00548 /*-- create new interface --*/
00549
00550 plint = (PLUGIN_interface *) XtMalloc(sizeof(PLUGIN_interface)) ;
00551 if( plint == NULL ) RETURN(NULL) ;
00552
00553 plint->flags = 0 ; /* 29 Mar 2002 */
00554
00555 MCW_strncpy( plint->label , label , PLUGIN_LABEL_SIZE ) ;
00556
00557 if( description != NULL )
00558 MCW_strncpy( plint->description , description , PLUGIN_STRING_SIZE ) ;
00559 else
00560 MCW_strncpy( plint->description , label , PLUGIN_STRING_SIZE ) ;
00561
00562 plint->call_method = call_type ;
00563 plint->call_func = call_func ;
00564 plint->option_count = 0 ;
00565 plint->option = NULL ;
00566 plint->wid = NULL ;
00567 plint->im3d = NULL ;
00568 plint->hint = NULL ;
00569
00570 if( help == NULL || strlen(help) == 0 )
00571 plint->helpstring = NULL ;
00572 else
00573 plint->helpstring = XtNewString( help ) ;
00574
00575 strcpy( plint->seqcode , "zzzzzzz" ) ; /* 06 Aug 1999 */
00576 strcpy( plint->butcolor, "\0" ) ; /* 01 Nov 1999 */
00577
00578 /** 15 Jun 1999 stuff for date checking **/
00579
00580 #ifndef DONT_USE_STRPTIME
00581 if( compile_date == NULL ){
00582
00583 if( num_date_err == 0 ) fprintf(stderr,"\n") ;
00584 fprintf(stderr,
00585 "*** Warning: Plugin %-15s was compiled with an earlier version of AFNI\n",
00586 label ) ;
00587 num_date_err++ ;
00588
00589 #if 0
00590 # define AFNI_DATE "Jun 17 1999" /* for testing purposes */
00591 #else
00592 # define AFNI_DATE __DATE__
00593 #endif
00594
00595 } else {
00596 struct tm compile_tm ={0} , date_tm={0} ;
00597 time_t compile_time , date_time ;
00598 double date_minus_compile ;
00599
00600 strptime( compile_date , "%b %d %Y" , &compile_tm ) ; compile_time = mktime( &compile_tm ) ;
00601 strptime( AFNI_DATE , "%b %d %Y" , &date_tm ) ; date_time = mktime( &date_tm ) ;
00602 date_minus_compile = difftime( date_time , compile_time ) ;
00603
00604 if( date_minus_compile > 3600.0 ){
00605 if( num_date_err == 0 ) fprintf(stderr,"\n") ;
00606 fprintf(stderr,
00607 "\n*** Warning: Plugin %-15s compile date=%s predates AFNI=%s",
00608 label , compile_date , AFNI_DATE ) ;
00609 num_date_err++ ;
00610 } else if( PRINT_TRACING ){
00611 char str[256] ;
00612 sprintf(str,"Plugin %-15s compile date=%s AFNI date=%s difftime=%g\n",
00613 label , compile_date , AFNI_DATE , date_minus_compile ) ;
00614 STATUS(str) ;
00615 }
00616 }
00617 #endif
00618
00619 plint->run_label[0] = '\0' ; /* 04 Nov 2003 */
00620 plint->doit_label[0] = '\0' ;
00621
00622 RETURN(plint) ;
00623 }
|
|
||||||||||||
|
Definition at line 4607 of file afni_plugin.c. References ENTRY, myXtNew, and RETURN. Referenced by TAG_make_widgets().
04608 {
04609 PLUGIN_strval * av ;
04610 XmString xstr ;
04611
04612 ENTRY("new_PLUGIN_strval") ;
04613
04614 if( wpar == (Widget) NULL ) RETURN(NULL) ;
04615
04616 av = myXtNew(PLUGIN_strval) ;
04617
04618 av->rowcol = XtVaCreateWidget(
04619 "AFNI" , xmRowColumnWidgetClass , wpar ,
04620 XmNpacking , XmPACK_TIGHT ,
04621 XmNorientation , XmHORIZONTAL ,
04622 XmNmarginHeight, 0 ,
04623 XmNmarginWidth , 0 ,
04624 XmNspacing , 0 ,
04625 XmNtraversalOn , False ,
04626 XmNinitialResourcesPersistent , False ,
04627 NULL ) ;
04628
04629 xstr = XmStringCreateLtoR( str , XmFONTLIST_DEFAULT_TAG ) ;
04630 av->label = XtVaCreateManagedWidget(
04631 "AFNI" , xmLabelWidgetClass , av->rowcol ,
04632 XmNlabelString , xstr ,
04633 XmNmarginWidth , 0 ,
04634 XmNinitialResourcesPersistent , False ,
04635 NULL ) ;
04636 XmStringFree( xstr ) ;
04637
04638 av->textf = XtVaCreateManagedWidget(
04639 "AFNI" , xmTextFieldWidgetClass , av->rowcol ,
04640 XmNcolumns , 9 ,
04641 XmNeditable , True ,
04642 XmNmaxLength , PLUGIN_STRING_SIZE ,
04643 XmNresizeWidth , False ,
04644 XmNmarginHeight , 1 ,
04645 XmNmarginWidth , 1 ,
04646 XmNcursorPositionVisible , True ,
04647 XmNblinkRate , 0 ,
04648 XmNautoShowCursorPosition , True ,
04649 XmNtraversalOn , False ,
04650 XmNinitialResourcesPersistent , False ,
04651 NULL ) ;
04652
04653 XtManageChild( av->rowcol ) ;
04654 RETURN(av) ;
04655 }
|
|
|
Definition at line 4889 of file afni_plugin.c.
04890 {
04891 double y ;
04892 if( x == 0.0 ) return 0.0 ;
04893 if( x < 0.0 ) x = -x ;
04894 y = floor(log10(x)+0.000001) ; y = pow( 10.0 , y ) ;
04895 return (float) y ;
04896 }
|
|
||||||||||||
|
Definition at line 3043 of file afni_plugin.c. References DSET_COMPRESSED, DSET_NUM_TIMES, DSET_NVALS, ENTRY, THD_3dim_dataset::func_type, ISANAT, ISANATBUCKET, ISFUNCBUCKET, ISVALID_3DIM_DATASET, MAX, PLUTO_find_dset(), and THD_MAX_NAME. Referenced by PLUTO_popup_dset_chooser().
03044 {
03045 int id , ltop , llen ;
03046 char qnam[THD_MAX_NAME] ;
03047 THD_3dim_dataset * dset ;
03048
03049 ENTRY("patch_PLUGIN_dataset_links") ;
03050
03051 if( ndsl < 1 || dsl == NULL ) EXRETURN ;
03052
03053 ltop = 4 ;
03054 for( id=0 ; id < ndsl ; id++ ){ /* find longest string */
03055 llen = strlen(dsl[id].title) ;
03056 ltop = MAX(ltop,llen) ;
03057 }
03058
03059 /* patch each title string */
03060
03061 for( id=0 ; id < ndsl ; id++ ){
03062 dset = PLUTO_find_dset( &(dsl[id].idcode) ) ; /* get the dataset */
03063 if( ! ISVALID_3DIM_DATASET(dset) ) continue ; /* bad news for Bozo */
03064
03065 if( ISANAT(dset) ){
03066 if( ISANATBUCKET(dset) ) /* 30 Nov 1997 */
03067 sprintf(qnam,"%-*s [%s:%d]" ,
03068 ltop,dsl[id].title ,
03069 ANAT_prefixstr[dset->func_type] , DSET_NVALS(dset) ) ;
03070
03071 else if( DSET_NUM_TIMES(dset) == 1 )
03072 sprintf(qnam,"%-*s [%s]" ,
03073 ltop,dsl[id].title ,
03074 ANAT_prefixstr[dset->func_type] ) ;
03075
03076 else
03077 sprintf(qnam,"%-*s [%s:3D+t:%d]" ,
03078 ltop,dsl[id].title ,
03079 ANAT_prefixstr[dset->func_type] , DSET_NUM_TIMES(dset) ) ;
03080
03081 } else {
03082 if( ISFUNCBUCKET(dset) ) /* 30 Nov 1997 */
03083 sprintf(qnam,"%-*s [%s:%d]" ,
03084 ltop,dsl[id].title ,
03085 FUNC_prefixstr[dset->func_type] , DSET_NVALS(dset) ) ;
03086
03087 else if( DSET_NUM_TIMES(dset) == 1 )
03088 sprintf(qnam,"%-*s [%s]" ,
03089 ltop,dsl[id].title ,
03090 FUNC_prefixstr[dset->func_type] ) ;
03091
03092 else
03093 sprintf(qnam,"%-*s [%s:3D+t:%d]" ,
03094 ltop,dsl[id].title ,
03095 FUNC_prefixstr[dset->func_type] , DSET_NVALS(dset) ) ;
03096 }
03097
03098 if( DSET_COMPRESSED(dset) ) strcat(qnam,"z") ;
03099
03100 strcpy( dsl[id].title , qnam ) ;
03101 }
03102
03103 EXRETURN ;
03104 }
|
|
|
Definition at line 2564 of file afni_plugin.c.
02565 {
02566 int isv ;
02567 PLUGIN_option * opt ;
02568
02569 ENTRY("peek_callvalue_type_from_PLUGIN_interface") ;
02570
02571 if( plint == NULL ) RETURN(ILLEGAL_TYPE) ;
02572 if( plint->opnum >= plint->option_count ) RETURN(ILLEGAL_TYPE) ;
02573
02574 opt = plint->option[ plint->opnum ] ;
02575 if( opt == NULL ) RETURN(ILLEGAL_TYPE) ;
02576
02577 isv = plint->svnum ;
02578 if( isv >= opt->subvalue_count ) RETURN(ILLEGAL_TYPE) ;
02579
02580 RETURN(opt->subvalue[isv].data_type) ;
02581 }
|
|
|
Definition at line 2539 of file afni_plugin.c.
02540 {
02541 int iopt ;
02542 PLUGIN_option * opt ;
02543
02544 ENTRY("peek_optiontag_from_PLUGIN_interface") ;
02545
02546 if( plint == NULL ) RETURN(NULL) ;
02547
02548 iopt = plint->opnum + 1 ;
02549 while( iopt < plint->option_count ){
02550 opt = plint->option[iopt++] ;
02551 if( opt == NULL ) continue ; /* bad? */
02552 if( opt->chosen ) RETURN(opt->tag) ;
02553 }
02554 RETURN(NULL) ;
02555 }
|
|
||||||||||||||||
|
Definition at line 2057 of file afni_plugin.c. References AFNI_CALL_VALU_1ARG, close(), ENTRY, MCW_popup_message(), MCW_USER_KILL, new_MCW_textwin(), PLUG_delete_window_CB(), PLUG_fillin_values(), PLUG_help_label, PLUG_quit_label, PLUTO_popdown_meter(), SHOW_AFNI_PAUSE, SHOW_AFNI_READY, TEXT_READONLY, and THD_linecount().
02058 {
02059 PLUGIN_interface * plint = (PLUGIN_interface *) cd ;
02060 char * wname = XtName(w) ;
02061 char * mesg ;
02062 int close , run , badrun=0 , help ;
02063
02064 ENTRY("PLUG_action_CB") ;
02065
02066 run = (strcmp(wname,plint->doit_label)==0) || (strcmp(wname,plint->run_label)==0);
02067 close = (strcmp(wname,plint->doit_label)==0) || (strcmp(wname,PLUG_quit_label) ==0);
02068 help = (strcmp(wname,PLUG_help_label)==0) ;
02069
02070 if( run ){
02071 PLUG_fillin_values( plint ) ; /* load callvalues */
02072 plint->opnum = plint->svnum = -1 ; /* initialize get_ */
02073
02074 /***** CALL THE PLUGIN !!!! *****/
02075
02076 MPROBE ;
02077
02078 SHOW_AFNI_PAUSE ;
02079 #if 0
02080 mesg = plint->call_func( plint ) ;
02081 #else
02082 AFNI_CALL_VALU_1ARG( plint->call_func ,
02083 char *,mesg , PLUGIN_interface *,plint ) ;
02084 #endif
02085 SHOW_AFNI_READY ;
02086
02087 PLUTO_popdown_meter( plint ) ; /* if the user forgets */
02088
02089 MPROBE ;
02090
02091 /********************************/
02092
02093 badrun = (mesg != NULL) ;
02094 if( badrun ){
02095 if( w != NULL ){
02096 (void) MCW_popup_message( w , mesg , MCW_USER_KILL ) ;
02097 XBell( XtDisplay(w) , 100 ) ;
02098 } else {
02099 fprintf(stderr,"\n%s\a\n",mesg) ;
02100 }
02101 }
02102 }
02103
02104 if( close && !badrun ) PLUG_delete_window_CB( w , cd , cbs ) ;
02105
02106 /* 28 Dec 1997: use a scrolling text window if help too big */
02107
02108 if( help ){
02109 int nl = THD_linecount( plint->helpstring ) ;
02110 if( nl < 10 ) MCW_popup_message( plint->wid->label ,
02111 plint->helpstring , MCW_USER_KILL ) ;
02112 else new_MCW_textwin ( plint->wid->label ,
02113 plint->helpstring , TEXT_READONLY ) ;
02114 }
02115
02116 EXRETURN ;
02117 }
|
|
||||||||||||||||
|
Definition at line 2702 of file afni_plugin.c. References DSET_COMPRESSED, DSET_NUM_TIMES, DSET_NVALS, THD_session::dsset, ENTRY, EQUIV_IDCODES, THD_3dim_dataset::func_type, GLOBAL_library, IM3D_VALID, ISANAT, ISANATBUCKET, ISFUNC, ISFUNCBUCKET, ISVALID_3DIM_DATASET, ISZERO_IDCODE, make_PLUGIN_dataset_link(), MAX, MCW_choose_multi_strlist(), MCW_choose_strlist(), mcwCT_multi_mode, myXtFree, THD_session::num_dsset, THD_sessionlist::num_sess, PLUG_finalize_dataset_CB(), PLUGIN_dset_check(), PLUTO_find_dset(), POPDOWN_strlist_chooser, AFNI_view_info::sess_num, THD_sessionlist::ssar, AFNI_library_type::sslist, THD_MAX_NAME, VIEW_ORIGINAL_TYPE, AFNI_view_info::view_type, Three_D_View::vinfo, XtRealloc, and ZERO_IDCODE. Referenced by PLUG_setup_widgets().
02703 {
02704 PLUGIN_interface * plint = (PLUGIN_interface *) cd ;
02705 PLUGIN_dsetval * av = NULL ;
02706 PLUGIN_subvalue * sv = NULL ;
02707 Three_D_View * im3d ;
02708
02709 THD_session * ss ;
02710 THD_3dim_dataset * dset ;
02711 int iss_bot , iss_top , iss , vv ;
02712 int id , num_dset , qd ;
02713 MCW_idcode old_idcode ;
02714 static char ** strlist = NULL ;
02715 char label[64] ;
02716 int llen , ltop ;
02717 char qnam[THD_MAX_NAME] ;
02718
02719 int num_old = 0 , qold ; /* multi-choice stuff */
02720 MCW_idcode * old_chosen = NULL ;
02721 int * indold = NULL ;
02722
02723 ENTRY("PLUG_choose_dataset_CB") ;
02724
02725 /** find the stuff that is associated with this button **/
02726
02727 XtVaGetValues( w , XmNuserData , &av , NULL ) ;
02728
02729 if( plint == NULL || av == NULL ) EXRETURN ;
02730 sv = av->sv ;
02731 if( sv == NULL ) EXRETURN ;
02732 im3d = plint->im3d ;
02733
02734 /** Select the datasets **/
02735
02736 if( ! IM3D_VALID(im3d) || (sv->dset_ctrl_mask & SESSION_ALL_MASK) != 0 ){
02737 iss_bot = 0 ;
02738 iss_top = GLOBAL_library.sslist->num_sess - 1 ;
02739 } else {
02740 iss_bot = iss_top = im3d->vinfo->sess_num ;
02741 }
02742
02743 if( im3d != NULL ) vv = im3d->vinfo->view_type ; /* select view type */
02744 else vv = VIEW_ORIGINAL_TYPE ;
02745
02746 /** Save the current selection, if any **/
02747
02748 if( ! av->multi ){
02749 if( av->dset_choice >= 0 && av->dset_choice < av->dset_count )
02750 old_idcode = av->dset_link[av->dset_choice].idcode ;
02751 else
02752 ZERO_IDCODE(old_idcode) ;
02753 } else {
02754 for( id=0 ; id < av->nchosen ; id++ ){
02755 if( av->chosen[id] >= 0 && av->chosen[id] < av->dset_count ){
02756 num_old++ ;
02757 old_chosen = (MCW_idcode *) XtRealloc((char *)old_chosen,
02758 sizeof(MCW_idcode)*num_old) ;
02759 old_chosen[num_old-1] = av->dset_link[av->chosen[id]].idcode ;
02760 }
02761 }
02762 }
02763
02764 /** Scan sessions **/
02765
02766 num_dset = 0 ;
02767 for( iss=iss_bot ; iss <= iss_top ; iss++ ){
02768 ss = GLOBAL_library.sslist->ssar[iss] ;
02769
02770 /* check datasets in this session */
02771
02772 for( id=0 ; id < ss->num_dsset ; id++ ){
02773 dset = ss->dsset[id][vv] ; if( dset == NULL ) continue ;
02774
02775 if( sv->dset_anat_mask != 0 && ISANAT(dset) )
02776 if( ! PLUGIN_dset_check( sv->dset_anat_mask ,
02777 sv->dset_ctrl_mask , dset ) ) continue ;
02778
02779 if( sv->dset_func_mask != 0 && ISFUNC(dset) )
02780 if( ! PLUGIN_dset_check( sv->dset_func_mask ,
02781 sv->dset_ctrl_mask , dset ) ) continue ;
02782
02783 /* if we get here, then this dataset is OK to choose! */
02784
02785 num_dset++ ;
02786 av->dset_link = (PLUGIN_dataset_link *)
02787 XtRealloc( (char *) av->dset_link ,
02788 sizeof(PLUGIN_dataset_link)*num_dset ) ;
02789
02790 make_PLUGIN_dataset_link( dset , av->dset_link + (num_dset-1) ) ;
02791 }
02792
02793 } /* end of loop over sessions */
02794
02795 /*--- if nothing was found that fits, then nothing further can happen ---*/
02796
02797 if( num_dset == 0 ){
02798 av->dset_count = 0 ;
02799 av->dset_choice = -1 ;
02800 myXtFree(old_chosen) ;
02801 XBell( XtDisplay(w) , 100 ) ;
02802 EXRETURN ;
02803 }
02804
02805 /*--- 23 Nov 1996: loop over dataset links and patch their titles
02806 to include an indicator of the dataset type ---*/
02807
02808 ltop = 4 ;
02809 for( id=0 ; id < num_dset ; id++ ){
02810 llen = strlen(av->dset_link[id].title) ;
02811 ltop = MAX(ltop,llen) ;
02812 }
02813
02814 for( id=0 ; id < num_dset ; id++ ){
02815 dset = PLUTO_find_dset( &(av->dset_link[id].idcode) ) ;
02816 if( ! ISVALID_3DIM_DATASET(dset) ) continue ;
02817 if( ISANAT(dset) ){
02818 if( ISANATBUCKET(dset) ) /* 30 Nov 1997 */
02819 sprintf(qnam,"%-*s [%s:%d]" ,
02820 ltop,av->dset_link[id].title ,
02821 ANAT_prefixstr[dset->func_type] , DSET_NVALS(dset) ) ;
02822
02823 else if( DSET_NUM_TIMES(dset) == 1 )
02824 sprintf(qnam,"%-*s [%s]" ,
02825 ltop,av->dset_link[id].title ,
02826 ANAT_prefixstr[dset->func_type] ) ;
02827
02828 else
02829 sprintf(qnam,"%-*s [%s:3D+t:%d]" ,
02830 ltop,av->dset_link[id].title ,
02831 ANAT_prefixstr[dset->func_type] , DSET_NUM_TIMES(dset) ) ;
02832
02833 } else {
02834 if( ISFUNCBUCKET(dset) ) /* 30 Nov 1997 */
02835 sprintf(qnam,"%-*s [%s:%d]" ,
02836 ltop,av->dset_link[id].title ,
02837 FUNC_prefixstr[dset->func_type] , DSET_NVALS(dset) ) ;
02838
02839 else if( DSET_NUM_TIMES(dset) == 1 )
02840 sprintf(qnam,"%-*s [%s]" ,
02841 ltop,av->dset_link[id].title ,
02842 FUNC_prefixstr[dset->func_type] ) ;
02843
02844 else
02845 sprintf(qnam,"%-*s [%s:3D+t:%d]" ,
02846 ltop,av->dset_link[id].title ,
02847 FUNC_prefixstr[dset->func_type] , DSET_NVALS(dset) ) ;
02848 }
02849
02850 if( DSET_COMPRESSED(dset) ) strcat(qnam,"z") ;
02851
02852 strcpy( av->dset_link[id].title , qnam ) ;
02853 }
02854
02855 /*--- find the old choice in the current list, if any ---*/
02856
02857 av->dset_count = num_dset ;
02858
02859 if( ! av->multi ){
02860 if( !ISZERO_IDCODE(old_idcode) ){
02861 for( id=0 ; id < num_dset ; id++ )
02862 if( EQUIV_IDCODES(old_idcode,av->dset_link[id].idcode) ) break ;
02863
02864 if( id < num_dset ) av->dset_choice = id ;
02865 else av->dset_choice = -1 ;
02866 }
02867 } else {
02868 qold = 0 ;
02869 for( qd=0 ; qd < num_old ; qd++ ){
02870 if( !ISZERO_IDCODE(old_chosen[qd]) ){
02871 for( id=0 ; id < num_dset ; id++ )
02872 if( EQUIV_IDCODES(old_chosen[qd],av->dset_link[id].idcode) ) break ;
02873
02874 if( id < num_dset ){
02875 qold++ ;
02876 indold = (int *) XtRealloc((char *)indold , sizeof(int)*qold) ;
02877 indold[qold-1] = id ;
02878 av->chosen[qold-1] = id ;
02879 }
02880 }
02881 }
02882 av->nchosen = qold ;
02883 if( qold > 0 ){
02884 qold++ ;
02885 indold = (int *) XtRealloc((char *)indold , sizeof(int)*qold) ;
02886 indold[qold-1] = -666 ;
02887 }
02888 }
02889
02890 /*--- make a popup chooser for the user to browse ---*/
02891
02892 POPDOWN_strlist_chooser ;
02893
02894 strlist = (char **) XtRealloc( (char *)strlist , sizeof(char *)*num_dset ) ;
02895 for( id=0 ; id < num_dset ; id++ ) strlist[id] = av->dset_link[id].title ;
02896
02897 sprintf( label , "AFNI Dataset from\nthe %s" , VIEW_typestr[vv] ) ;
02898
02899 if( av->multi ){
02900 MCW_choose_multi_strlist( w , label , mcwCT_multi_mode ,
02901 num_dset , indold , strlist ,
02902 PLUG_finalize_dataset_CB , (XtPointer) plint ) ;
02903 } else {
02904 MCW_choose_strlist( w , label ,
02905 num_dset , av->dset_choice , strlist ,
02906 PLUG_finalize_dataset_CB , (XtPointer) plint ) ;
02907 }
02908
02909 myXtFree(indold) ; myXtFree(old_chosen) ;
02910 EXRETURN ;
02911 }
|
|
||||||||||||||||
|
Definition at line 3285 of file afni_plugin.c. References AFNI_ts_in_library(), ENTRY, GLOBAL_library, IMARR_COUNT, MCW_choose_timeseries(), PLUG_finalize_timeseries_CB(), and AFNI_library_type::timeseries. Referenced by PLUG_setup_widgets().
03286 {
03287 PLUGIN_interface * plint = (PLUGIN_interface *) cd ;
03288 PLUGIN_tsval * av = NULL ;
03289 PLUGIN_subvalue * sv = NULL ;
03290 Three_D_View * im3d ;
03291 int init_ts ;
03292
03293 ENTRY("PLUG_choose_timeseries_CB") ;
03294
03295 /** find the stuff that is associated with this button **/
03296
03297 XtVaGetValues( w , XmNuserData , &av , NULL ) ;
03298
03299 if( plint == NULL || av == NULL ) EXRETURN ;
03300 sv = av->sv ;
03301 if( sv == NULL ) EXRETURN ;
03302 im3d = plint->im3d ;
03303
03304 av->tsimar = GLOBAL_library.timeseries ; /* to choose amongst */
03305 if( av->tsimar==NULL || IMARR_COUNT(av->tsimar)==0 ){
03306 av->ts_choice = -1 ;
03307 av->tsim = NULL ;
03308 XBell( XtDisplay(w) , 100 ) ;
03309 EXRETURN ;
03310 }
03311
03312 init_ts = AFNI_ts_in_library( av->tsim ) ;
03313
03314 MCW_choose_timeseries( w , "Choose Timeseries" ,
03315 av->tsimar , init_ts ,
03316 PLUG_finalize_timeseries_CB , (XtPointer) plint ) ;
03317
03318 EXRETURN ;
03319 }
|
|
||||||||||||||||
|
Definition at line 2124 of file afni_plugin.c. References ENTRY. Referenced by PLUG_action_CB(), and PLUG_setup_widgets().
02125 {
02126 PLUGIN_interface * plint = (PLUGIN_interface *) cd ;
02127
02128 ENTRY("PLUG_delete_window_CB") ;
02129
02130 if( plint != NULL && plint->wid != NULL ){
02131 XtUnmapWidget(plint->wid->shell) ;
02132 XmUpdateDisplay(plint->wid->shell) ;
02133 }
02134 EXRETURN ;
02135 }
|
|
||||||||||||
|
Definition at line 5217 of file afni_plugin.c. References AFNI_CALL_VOID_1ARG, mytimeout::cd, ENTRY, mytimeout::func, myXtFree, and STATUS. Referenced by PLUTO_register_timeout().
05218 {
05219 mytimeout * myt = (mytimeout *) cd ;
05220
05221 ENTRY("PLUTO_dotimeout_CB") ;
05222
05223 if( myt == NULL ) EXRETURN ; /* bad news */
05224
05225 STATUS("calling user timeout function") ;
05226
05227 #if 0
05228 myt->func( myt->cd ) ;
05229 #else
05230 AFNI_CALL_VOID_1ARG( myt->func , XtPointer,myt->cd ) ;
05231 #endif
05232
05233 myXtFree(myt) ; EXRETURN ;
05234 }
|
|
|
invert label widget, and switch sensitivity of subvalue widgets * Definition at line 2172 of file afni_plugin.c. References ENTRY, MCW_arrowval::fval, iptr, MCW_arrowval::ival, myXtFree, myXtNew, MCW_arrowval::sval, XtMalloc, XtRealloc, and ZERO_IDCODE. Referenced by PLUG_action_CB().
02173 {
02174 int iopt , ib ;
02175 PLUGIN_option_widgets ** opwid , * ow ;
02176 PLUGIN_option * opt ;
02177 PLUGIN_subvalue * sv ;
02178
02179 ENTRY("PLUG_fillin_values") ;
02180
02181 /*--- check if there is anything to do ---*/
02182
02183 if( plint == NULL || plint->option_count == 0 ) EXRETURN ;
02184
02185 /*--- scan thru options ---*/
02186
02187 opwid = plint->wid->opwid ;
02188
02189 for( iopt=0 ; iopt < plint->option_count ; iopt++){
02190
02191 opt = plint->option[iopt] ; /* option to deal with */
02192 if( opt == NULL ) continue ; /* bad? */
02193
02194 ow = opwid[iopt] ; /* row of widgets to deal with */
02195
02196 /*-- find if this option is chosen by the user --*/
02197
02198 opt->chosen = (int) XmToggleButtonGetState( ow->toggle ) ;
02199
02200 /*-- scan thru subvalues, and load callvalue.
02201 note that we do this even for unchosen options. --*/
02202
02203 for( ib=0 ; ib < opt->subvalue_count ; ib++ ){
02204
02205 myXtFree( opt->callvalue[ib] ) ; /* free any old value here */
02206 sv = &(opt->subvalue[ib]) ; /* subvalue to deal with */
02207
02208 /*-- deal with each type of subvalue --*/
02209
02210 switch( sv->data_type ){
02211
02212 /** some type I don't know, so just put NULL in **/
02213
02214 default:
02215 opt->callvalue[ib] = NULL ;
02216 break ;
02217
02218 /** 11 Jul 2001: overlay color type; send in the color index **/
02219
02220 case PLUGIN_OVERLAY_COLOR_TYPE:{
02221 MCW_arrowval * av = (MCW_arrowval *) ow->chooser[ib] ;
02222 int * iptr ;
02223
02224 iptr = (int *) XtMalloc( sizeof(int) ) ;
02225 *iptr = av->ival ;
02226 opt->callvalue[ib] = (void *) iptr ;
02227 }
02228 break ;
02229
02230 /** number type: uses arrowval interface;
02231 send in the float value **/
02232
02233 case PLUGIN_NUMBER_TYPE:{
02234 MCW_arrowval * av = (MCW_arrowval *) ow->chooser[ib] ;
02235 float * fptr ;
02236
02237 fptr = (float *) XtMalloc( sizeof(float) ) ;
02238 *fptr = av->fval ;
02239 opt->callvalue[ib] = (void *) fptr ;
02240 }
02241 break ;
02242
02243 /** string type: may be an arrowval or a strval **/
02244
02245 case PLUGIN_STRING_TYPE:{
02246 if( sv->string_range_count > 0 ){
02247 MCW_arrowval * av = (MCW_arrowval *) ow->chooser[ib] ;
02248 char * cptr ;
02249
02250 cptr = XtNewString( av->sval ) ;
02251 opt->callvalue[ib] = (void *) cptr ;
02252 } else {
02253 PLUGIN_strval * av = (PLUGIN_strval *) ow->chooser[ib] ;
02254 char * cptr ;
02255
02256 cptr = XmTextFieldGetString( av->textf ) ;
02257 opt->callvalue[ib] = (void *) cptr ;
02258 }
02259 }
02260 break ;
02261
02262 /** dataset type **/
02263
02264 case PLUGIN_DATASET_TYPE:{
02265 PLUGIN_dsetval * av = (PLUGIN_dsetval *) ow->chooser[ib] ;
02266 MCW_idcode * idc ;
02267
02268 idc = myXtNew( MCW_idcode ) ;
02269 if( av->dset_choice < 0 )
02270 ZERO_IDCODE(*idc) ;
02271 else
02272 *idc = av->dset_link[av->dset_choice].idcode ;
02273
02274 opt->callvalue[ib] = (void *) idc ;
02275 }
02276 break ;
02277
02278 /** 25 Nov 1996: list of datasets **/
02279
02280 case PLUGIN_DATASET_LIST_TYPE:{
02281 PLUGIN_dsetval * av = (PLUGIN_dsetval *) ow->chooser[ib] ;
02282 MCW_idclist ** llist ;
02283 int id ;
02284
02285 llist = myXtNew(MCW_idclist *) ; *llist = av ;
02286
02287 av->current = 0 ;
02288 if( av->nchosen <= 0 ){
02289 myXtFree(av->idclist) ;
02290 } else {
02291 av->idclist = (MCW_idcode *)
02292 XtRealloc( (char *) av->idclist ,
02293 sizeof(MCW_idcode) * av->nchosen ) ;
02294 for( id=0 ; id < av->nchosen ; id++ )
02295 av->idclist[id] = av->dset_link[av->chosen[id]].idcode ;
02296 }
02297
02298 opt->callvalue[ib] = (void *) llist ;
02299 }
02300 break ;
02301 /** timeseries type **/
02302
02303 case PLUGIN_TIMESERIES_TYPE:{
02304 PLUGIN_tsval * av = (PLUGIN_tsval *) ow->chooser[ib] ;
02305 MRI_IMAGE ** imp ;
02306
02307 imp = myXtNew(MRI_IMAGE *) ;
02308 *imp = av->tsim ;
02309
02310 opt->callvalue[ib] = (void *) imp ;
02311 }
02312 break ;
02313
02314 } /* end of switch over subvalue type */
02315 } /* end of scan thru subvalues */
02316 } /* end of scan thru options */
02317
02318 EXRETURN ;
02319 }
|
|
||||||||||||||||
|
Scan sessions * Definition at line 2919 of file afni_plugin.c. References ENTRY, fd, MCW_choose_cbs::ilist, MCW_choose_cbs::ival, MCW_choose_cbs::nilist, THD_MAX_NAME, and XtRealloc. Referenced by PLUG_choose_dataset_CB().
02920 {
02921 PLUGIN_interface * plint = (PLUGIN_interface *) fd ;
02922 PLUGIN_dsetval * av = NULL ;
02923 XmString xstr ;
02924 int id ;
02925 char str[THD_MAX_NAME] ;
02926
02927 ENTRY("PLUG_finalize_dataset_CB") ;
02928
02929 /** find the stuff that is associated with this button **/
02930
02931 XtVaGetValues( w , XmNuserData , &av , NULL ) ;
02932 if( plint == NULL || av == NULL ) EXRETURN ;
02933
02934 if( ! av->multi ){
02935 xstr = XmStringCreateLtoR( av->dset_link[cbs->ival].title ,
02936 XmFONTLIST_DEFAULT_TAG ) ;
02937 } else {
02938 sprintf( str , "[%d]%s" , cbs->nilist , av->dset_link[cbs->ival].title ) ;
02939 xstr = XmStringCreateLtoR( str , XmFONTLIST_DEFAULT_TAG ) ;
02940 }
02941 XtVaSetValues( w , XmNlabelString , xstr , NULL ) ;
02942 XmStringFree( xstr ) ;
02943
02944 if( ! av->multi ){
02945 av->dset_choice = cbs->ival ;
02946 } else {
02947 av->nchosen = cbs->nilist ;
02948 av->chosen = (int *) XtRealloc( (char *) av->chosen ,
02949 sizeof(int) * av->nchosen ) ;
02950 for( id=0 ; id < av->nchosen ; id++ ) av->chosen[id] = cbs->ilist[id] ;
02951 }
02952
02953 EXRETURN ;
02954 }
|
|
||||||||||||||||
|
find the stuff that is associated with this button * Definition at line 3327 of file afni_plugin.c. References ENTRY, fd, IMARR_COUNT, IMARR_SUBIMAGE, MCW_choose_cbs::ival, mcwCR_timeseries, and MCW_choose_cbs::reason. Referenced by PLUG_choose_timeseries_CB().
03328 {
03329 PLUGIN_interface * plint = (PLUGIN_interface *) fd ;
03330 PLUGIN_tsval * av = NULL ;
03331 XmString xstr ;
03332 int its ;
03333
03334 ENTRY("PLUG_finalize_timeseries_CB") ;
03335
03336 /** find the stuff that is associated with this button **/
03337
03338 XtVaGetValues( w , XmNuserData , &av , NULL ) ;
03339 if( plint == NULL || av == NULL || av->tsimar == NULL ) EXRETURN ;
03340 if( cbs->reason != mcwCR_timeseries ) EXRETURN ; /* error */
03341
03342 /** store the choice, and change the widget label **/
03343
03344 its = cbs->ival ;
03345 if( its >= 0 && its < IMARR_COUNT(av->tsimar) ){
03346 av->tsim = IMARR_SUBIMAGE(av->tsimar,its) ;
03347 av->ts_choice = its ;
03348
03349 xstr = XmStringCreateLtoR( av->tsim->name , XmFONTLIST_DEFAULT_TAG ) ;
03350 XtVaSetValues( w , XmNlabelString , xstr , NULL ) ;
03351 XmStringFree( xstr ) ;
03352 }
03353
03354 EXRETURN ;
03355 }
|
|
||||||||||||||||
|
Scan sessions * Definition at line 3250 of file afni_plugin.c. References AFNI_CALL_VOID_3ARG, ENTRY, fd, MCW_choose_cbs::ilist, MCW_choose_cbs::nilist, PLUTO_find_dset(), user_dset_cb_data, user_dset_cb_func, user_dset_link, user_dset_numds, and XtRealloc. Referenced by PLUTO_popup_dset_chooser().
03251 {
03252 int id , jd , num ;
03253
03254 ENTRY("PLUG_finalize_user_dset_CB") ;
03255
03256 if( cbs == NULL || cbs->nilist < 1 ) EXRETURN ;
03257
03258 user_dset_numds = num = cbs->nilist ;
03259
03260 user_dset_dslist = (THD_3dim_dataset **)
03261 XtRealloc( (char *) user_dset_dslist ,
03262 sizeof(THD_3dim_dataset *) * num ) ;
03263
03264 for( id=0 ; id < num ; id++ ){
03265 jd = cbs->ilist[id] ;
03266 user_dset_dslist[id] = PLUTO_find_dset( &(user_dset_link[jd].idcode) ) ;
03267 }
03268
03269 #if 0
03270 user_dset_cb_func( num , user_dset_dslist , user_dset_cb_data ) ;
03271 #else
03272 AFNI_CALL_VOID_3ARG( user_dset_cb_func ,
03273 int,num , THD_3dim_dataset **,user_dset_dslist ,
03274 void *,user_dset_cb_data ) ;
03275 #endif
03276
03277 EXRETURN ;
03278 }
|
|
|
timeseries type * Definition at line 2325 of file afni_plugin.c.
02326 {
02327 int iopt , ib ;
02328 PLUGIN_option * opt ;
02329
02330 ENTRY("PLUG_freeup_values") ;
02331
02332 /*--- check if there is anything to do ---*/
02333
02334 if( plint == NULL || plint->option_count == 0 ) EXRETURN ;
02335
02336 /*--- scan thru options ---*/
02337
02338 for( iopt=0 ; iopt < plint->option_count ; iopt++){
02339
02340 opt = plint->option[iopt] ; /* option to deal with */
02341 if( opt == NULL ) continue ; /* bad? */
02342
02343 /*-- scan thru subvalues, and free all callvalues --*/
02344
02345 for( ib=0 ; ib < opt->subvalue_count ; ib++ ){
02346 XtFree( opt->callvalue[ib] ) ; /* free any old value here */
02347 opt->callvalue[ib] = NULL ;
02348 }
02349
02350 } /* end of scan thru options */
02351
02352 EXRETURN ;
02353 }
|
|
|
Definition at line 37 of file afni_plugin.c. References THD_string_array::ar, DESTROY_SARR, DYNAMIC_suffix, ENTRY, THD_string_array::num, PLUG_read_plugin(), RETURN, STATUS, THD_extract_regular_files(), THD_get_all_filenames(), and THD_is_directory(). Referenced by PLUG_get_many_plugins().
00038 {
00039 THD_string_array * flist , * rlist ;
00040 int ir , ii ;
00041 char * fname , * suff ;
00042 AFNI_plugin_array * outar ;
00043 AFNI_plugin * plin ;
00044
00045 /*----- sanity check and initialize -----*/
00046
00047 ENTRY("PLUG_get_all_plugins") ;
00048
00049 if( dname == NULL || strlen(dname) == 0 ) RETURN(NULL) ;
00050 if( ! THD_is_directory(dname) ) RETURN(NULL) ;
00051
00052 INIT_PLUGIN_ARRAY( outar ) ;
00053
00054 if(PRINT_TRACING)
00055 { char str[256] ; sprintf(str,"scanning directory %s",dname) ; STATUS(str) ; }
00056
00057 /*----- find all filenames -----*/
00058
00059 flist = THD_get_all_filenames( dname ) ;
00060 if( flist == NULL || flist->num <= 0 ){
00061 DESTROY_SARR(flist) ;
00062 DESTROY_PLUGIN_ARRAY(outar) ;
00063 RETURN(NULL) ;
00064 }
00065
00066 rlist = THD_extract_regular_files( flist ) ;
00067 DESTROY_SARR(flist) ;
00068 if( rlist == NULL || rlist->num <= 0 ){
00069 DESTROY_SARR(rlist) ;
00070 DESTROY_PLUGIN_ARRAY(outar) ;
00071 RETURN(NULL) ;
00072 }
00073
00074 if(PRINT_TRACING)
00075 { char str[256] ; sprintf(str,"%d files to scan",rlist->num) ; STATUS(str) ; }
00076
00077 /*----- scan thru and find all filenames ending in DYNAMIC_suffix -----*/
00078
00079 for( ir=0 ; ir < rlist->num ; ir++ ){
00080 fname = rlist->ar[ir] ; if( fname == NULL ) continue ;
00081 if( strstr(fname,"plug") == NULL ) continue ;
00082
00083 suff = strstr(fname,DYNAMIC_suffix) ;
00084 if( suff != NULL && strlen(suff) == strlen(DYNAMIC_suffix) ){
00085 plin = PLUG_read_plugin( fname ) ;
00086 if( plin != NULL ) ADDTO_PLUGIN_ARRAY( outar , plin ) ;
00087 }
00088 }
00089
00090 if(PRINT_TRACING)
00091 { char str[256] ;
00092 sprintf(str,"directory %s has %d plugins",dname,outar->num) ; STATUS(str) ; }
00093
00094 DESTROY_SARR(rlist) ;
00095 if( outar->num == 0 ) DESTROY_PLUGIN_ARRAY(outar) ;
00096
00097 /* 06 Aug 1999: sort array by seqcodes */
00098
00099 if( outar != NULL && outar->num > 1 ){
00100 int iid , qq ; AFNI_plugin * plin ;
00101 do{ qq = 0 ;
00102 for( iid=1 ; iid < outar->num ; iid++ )
00103 if( strcmp(outar->plar[iid-1]->seqcode,
00104 outar->plar[iid ]->seqcode ) > 0 ){
00105
00106 plin = outar->plar[iid-1] ;
00107 outar->plar[iid-1] = outar->plar[iid] ;
00108 outar->plar[iid] = plin ;
00109 qq++ ;
00110 }
00111 } while( qq > 0 ) ;
00112 }
00113
00114 RETURN(outar) ;
00115 }
|
|
|
Definition at line 266 of file afni_plugin.c. References ADDTO_SARR, THD_string_array::ar, DESTROY_SARR, ENTRY, ep, free, getenv(), INIT_SARR, myXtFree, THD_string_array::num, PLUG_get_all_plugins(), RETURN, STATUS, THD_equiv_files(), THD_is_directory(), THD_MAX_NAME, THD_trailname(), and XtMalloc. Referenced by MAIN_workprocess().
00267 {
00268 char * epath , * elocal , * eee ;
00269 char ename[THD_MAX_NAME] ;
00270 AFNI_plugin_array * outar , * tmpar ;
00271 int epos , ll , ii , id ;
00272 THD_string_array *qlist ; /* 02 Feb 2002 */
00273
00274 /*----- sanity checks -----*/
00275
00276 ENTRY("PLUG_get_many_plugins") ;
00277
00278 /**
00279 #if defined(DARWIN) && !defined(c_plusplus) && !defined(__cplusplus)
00280 **/
00281 #ifdef DARWIN
00282 if( _dyld_present() == 0 ) RETURN(NULL) ; /* 05 Sep 2001: Mac OSX */
00283 #endif
00284
00285 epath = getenv("AFNI_PLUGINPATH") ; /* get the path list to read from */
00286
00287 if( epath == NULL )
00288 epath = getenv("AFNI_PLUGIN_PATH") ; /* try another name? */
00289
00290 if( epath == NULL ){
00291 epath = getenv("PATH") ; /* try yet another name? */
00292 #if 0
00293 if( epath != NULL )
00294 fprintf(stderr,
00295 "\n++ WARNING: AFNI_PLUGINPATH not set; searching PATH\n") ;
00296 #endif
00297 }
00298
00299 if( epath == NULL && pname != NULL && strchr(pname,'/') != NULL ){ /* 29 Mar 2001 */
00300 char *ep = strdup(pname) ; /* get path */
00301 char *tp = THD_trailname(ep,0) ; /* to program */
00302 *tp = '\0' ;
00303 if( strlen(ep) > 0 ) epath = ep ; /* got some path */
00304 else free(ep) ; /* got zipperoni */
00305 }
00306
00307 if( epath == NULL ) /* put in a fake path instead? */
00308 epath = "./ /usr/local/bin /sw/bin /opt/local/bin /Applications/AFNI" ;
00309
00310 INIT_SARR(qlist) ; /* 02 Feb 2002: list of checked directories */
00311
00312 /*----- copy path list into local memory -----*/
00313
00314 ll = strlen(epath) ;
00315 elocal = (char *) XtMalloc( sizeof(char) * (ll+2) ) ;
00316
00317 /*----- put a blank at the end -----*/
00318
00319 strcpy( elocal , epath ) ; elocal[ll] = ' ' ; elocal[ll+1] = '\0' ;
00320
00321 /*----- replace colons with blanks -----*/
00322
00323 for( ii=0 ; ii < ll ; ii++ )
00324 if( elocal[ii] == ':' ) elocal[ii] = ' ' ;
00325
00326 if(PRINT_TRACING)
00327 { STATUS("paths to be searched for plugins follows:") ;
00328 printf("%s\n",elocal) ; fflush(stdout) ; }
00329
00330 /*----- extract blank delimited strings;
00331 use as directory names to get libraries -----*/
00332
00333 INIT_PLUGIN_ARRAY( outar ) ;
00334 epos = 0 ;
00335
00336 do{
00337 ii = sscanf( elocal+epos , "%s%n" , ename , &id ) ; /* next substring */
00338 if( ii < 1 || id < 1 ) break ; /* none --> end of work */
00339 epos += id ; /* char after last scanned */
00340
00341 if( !THD_is_directory(ename) ) continue ; /* 21 May 2002 -rcr */
00342
00343 /* 02 Feb 2002: did we check this one already? */
00344
00345 for( ii=0 ; ii < qlist->num ; ii++ )
00346 if( THD_equiv_files(qlist->ar[ii],ename) ) break ;
00347 if( ii < qlist->num ) continue ;
00348 ADDTO_SARR(qlist,ename) ;
00349
00350 ii = strlen(ename) ; /* make sure name has */
00351 if( ename[ii-1] != '/' ){ /* a trailing '/' on it */
00352 ename[ii] = '/' ; ename[ii+1] = '\0' ;
00353 }
00354
00355 tmpar = PLUG_get_all_plugins( ename ) ; /* read this directory */
00356 if( tmpar != NULL ){
00357 for( ii=0 ; ii < tmpar->num ; ii++ ) /* move results to output */
00358 ADDTO_PLUGIN_ARRAY( outar , tmpar->plar[ii] ) ;
00359
00360 FREE_PLUGIN_ARRAY(tmpar) ; /* toss temp array */
00361 }
00362 } while( epos < ll ) ; /* scan until 'epos' is after end of epath */
00363
00364 myXtFree(elocal) ;
00365
00366 if(PRINT_TRACING)
00367 { char str[256] ; sprintf(str,"found %d plugins",outar->num) ; STATUS(str) ; }
00368
00369 if( outar->num == 0 ) DESTROY_PLUGIN_ARRAY(outar) ;
00370 DESTROY_SARR(qlist) ; /* 02 Feb 2002 */
00371 RETURN(outar) ;
00372 }
|
|
|
Definition at line 1150 of file afni_plugin.c. Referenced by PLUG_setup_widgets().
01151 {
01152 int ii , ll ;
01153
01154 if( str == NULL ) return 0 ;
01155 ll = strlen(str) ; if( ll == 0 ) return 0 ;
01156
01157 for( ii=ll-1 ; ii >= 0 ; ii-- ) if( str[ii] != ' ' ) break ;
01158
01159 return (ii+1) ;
01160 }
|
|
||||||||||||||||
|
Definition at line 2141 of file afni_plugin.c. References ENTRY, and MCW_invert_widget(). Referenced by PLUG_setup_widgets().
02142 {
02143 PLUGIN_option_widgets * ow = (PLUGIN_option_widgets *) cd ;
02144 int ib , zlen ;
02145 XtPointer xptr ;
02146
02147 ENTRY("PLUG_optional_toggle_CB") ;
02148
02149 /** invert label widget, and switch sensitivity of subvalue widgets **/
02150
02151 if( ow != NULL ){
02152 #if 0
02153 if( ow->label != NULL ){
02154 XtVaGetValues( ow->label , XmNuserData , &xptr , NULL ) ;
02155 zlen = (int) xptr ;
02156 if( !zlen ) MCW_invert_widget( ow->label ) ;
02157 }
02158 #endif
02159
02160 for( ib=0 ; ib < PLUGIN_MAX_SUBVALUES ; ib++ )
02161 if( ow->chtop[ib] != NULL )
02162 XtSetSensitive( ow->chtop[ib] , !XtIsSensitive(ow->chtop[ib]) ) ;
02163 }
02164 EXRETURN ;
02165 }
|
|
|
Definition at line 121 of file afni_plugin.c. References AFNI_CALL_VALU_1ARG, bcol, DYNAMIC_CLOSE, DYNAMIC_ERROR_STRING, DYNAMIC_OPEN, DYNAMIC_suffix, DYNAMIC_SYMBOL, ENTRY, ISVALID_DYNAMIC_handle, MCW_strncpy, my_getenv(), myXtFree, PLUTO_set_butcolor(), RETURN, STATUS, THD_is_file(), THD_trailname(), vptr_func, XtMalloc, and XtRealloc. Referenced by PLUG_get_all_plugins().
00122 {
00123 AFNI_plugin * plin ;
00124 PLUGIN_interface * plint ;
00125 int nin ;
00126 static int firsterr=1 ;
00127
00128 /*----- sanity checks -----*/
00129
00130 ENTRY("PLUG_read_plugin") ;
00131
00132 if( fname == NULL || strlen(fname) == 0 ) RETURN(NULL) ;
00133 if( ! THD_is_file(fname) ) RETURN(NULL) ;
00134
00135 /*----- make space for new plugin -----*/
00136
00137 plin = (AFNI_plugin *) XtMalloc( sizeof(AFNI_plugin) ) ;
00138 plin->type = AFNI_PLUGIN_TYPE ;
00139
00140 /*----- copy name into plin structure -----*/
00141
00142 MCW_strncpy( plin->libname , fname , MAX_PLUGIN_NAME ) ;
00143
00144 /*----- open the library (we hope) -----*/
00145
00146 if(PRINT_TRACING)
00147 { char str[256] ;
00148 sprintf(str,"opening plugin %s" , fname ) ; STATUS(str) ; }
00149
00150 DYNAMIC_OPEN( fname , plin->libhandle ) ;
00151
00152 STATUS("returned from DYNAMIC_OPEN()") ;
00153
00154 if( ! ISVALID_DYNAMIC_handle( plin->libhandle ) ){ /* open failed */
00155
00156 /* 24 May 2001: always print if there is an error */
00157
00158 char *er ;
00159 if( firsterr ){fprintf(stderr,"\n"); firsterr=0; }
00160 fprintf(stderr,"Failed to open plugin %s",fname) ;
00161 er = (char *)DYNAMIC_ERROR_STRING ;
00162 if( er != NULL ) fprintf(stderr," -- %s\n",er) ;
00163 else fprintf(stderr,"\n") ;
00164
00165 myXtFree(plin) ; RETURN(NULL) ;
00166 }
00167
00168 /* open was good */
00169
00170 if(PRINT_TRACING)
00171 { char str[256] ;
00172 sprintf(str,"opened library %s with handle %p" , fname,plin->libhandle ) ;
00173 STATUS(str) ; }
00174
00175 /*----- find the required symbol -----*/
00176 /*..... 13 Sep 2001: add _ for stupid Darwin .....*/
00177 /*..... 30 Oct 2003: remove for OS X 10.3 .....*/
00178
00179 #ifndef NEED_UNDERSCORE
00180 DYNAMIC_SYMBOL(plin->libhandle, "PLUGIN_init" , plin->libinit_func );
00181 #else
00182 DYNAMIC_SYMBOL(plin->libhandle,"_PLUGIN_init" , plin->libinit_func );
00183 #endif
00184
00185 /*----- if symbol not found, complain and kill this plugin -----*/
00186
00187 if( plin->libinit_func == (vptr_func *) NULL ){
00188 char *er = (char *)DYNAMIC_ERROR_STRING ;
00189 if( firsterr ){fprintf(stderr,"\n"); firsterr=0; }
00190 fprintf(stderr,"plugin %s lacks PLUGIN_init() function\n",fname) ;
00191 if( er != NULL ) fprintf(stderr," -- %s\n",er) ;
00192 DYNAMIC_CLOSE( plin->libhandle ) ;
00193 myXtFree(plin) ;
00194 RETURN(NULL) ;
00195 }
00196
00197 /*----- create interface(s) by calling initialization function -----*/
00198
00199 plin->interface_count = nin = 0 ;
00200 plin->interface = NULL ;
00201
00202 #ifdef AFNI_DEBUG
00203 MCHECK ;
00204 #else
00205 MPROBE ;
00206 #endif
00207
00208 do {
00209 #if 0
00210 plint = (PLUGIN_interface *) plin->libinit_func( nin ) ;
00211 #else
00212 AFNI_CALL_VALU_1ARG(plin->libinit_func ,
00213 PLUGIN_interface *,plint , int,nin ) ;
00214 #endif
00215 if( plint == NULL ) break ;
00216
00217 plin->interface = (PLUGIN_interface **)
00218 XtRealloc( (char *) plin->interface ,
00219 sizeof(PLUGIN_interface *) * (nin+1) ) ;
00220
00221 plin->interface[nin] = plint ;
00222 if( nin == 0 ) strcpy( plin->seqcode , plint->seqcode ) ; /* 06 Aug 1999 */
00223 nin++ ;
00224 } while( plint != NULL ) ;
00225
00226 plin->interface_count = nin ;
00227
00228 #if 1
00229 if( nin > 0 ){ /* 01 Nov 1999 */
00230 char * bcol , benv[256] ;
00231 int ii = strlen(DYNAMIC_suffix) , jj ;
00232
00233 strcpy(benv,"AFNI_") ; strcat(benv,THD_trailname(fname,0)) ; /* make */
00234 jj = strlen(benv) ; benv[jj-ii] = '\0' ; /* name */
00235 strcat(benv,"_butcolor") ;
00236 bcol = my_getenv(benv) ; /* find name */
00237 if( bcol != NULL ){ /* if have name: */
00238 for( ii=0 ; ii < nin ; ii++ ){
00239 plint = plin->interface[ii] ;
00240 if( plint->butcolor[0] == '\0' ) /* set color if */
00241 PLUTO_set_butcolor( plint , bcol ) ; /* not defined */
00242 }
00243 }
00244 }
00245 #endif
00246
00247 if(PRINT_TRACING)
00248 { char str[256] ;
00249 sprintf(str,"library %s created %d interfaces",fname,nin) ; STATUS(str) ; }
00250
00251 /*----- done -----*/
00252
00253 RETURN(plin) ;
00254 }
|
|
||||||||||||
|
Definition at line 1221 of file afni_plugin.c. References abs, MCW_arrowval::allow_wrap, AVOPT_columnize, COLSIZE, MCW_action_item::data, DC_yokify(), MCW_DC::display, ENTRY, GLOBAL_library, MCW_action_item::label, MAX, MCW_action_area(), MCW_AV_downup, MCW_AV_editext, MCW_AV_optmenu, MCW_AV_readtext, MCW_invert_widget(), MCW_isitmwm, MCW_reghint_children(), MCW_register_help(), MCW_register_hint(), MCW_widget_geom(), myXtNew, MCW_DCOV::ncol_ov, new_MCW_arrowval(), new_MCW_colormenu(), NUM_PLUG_ACT, MCW_DC::ovc, PLUG_choose_dataset_CB(), PLUG_choose_timeseries_CB(), PLUG_delete_window_CB(), PLUG_doit_label, PLUG_nonblank_len(), PLUG_optional_toggle_CB(), PLUG_run_label, AFNI_library_type::timeseries, MCW_arrowval::wrowcol, MCW_arrowval::wtext, and XtMalloc. Referenced by AFNI_misc_CB(), and PLUG_startup_plugin_CB().
01222 {
01223 int iopt , ib , max_nsv , ww,hh , shh , toff , zlen ;
01224 XmString xstr ;
01225 char str[256] ;
01226 PLUGIN_widgets * wid ;
01227 PLUGIN_option_widgets ** opwid ;
01228 PLUGIN_option_widgets * ow ;
01229 PLUGIN_option * opt ;
01230 PLUGIN_subvalue * sv ;
01231 Widget actar , wframe , separator = NULL ;
01232 int opt_lwid , sv_lwid[PLUGIN_MAX_SUBVALUES] ;
01233 Widget widest_chooser[PLUGIN_MAX_SUBVALUES] ;
01234 int widest_width[PLUGIN_MAX_SUBVALUES] ;
01235 Pixel fg_pix ;
01236
01237 ENTRY("PLUG_setup_widgets") ;
01238
01239 /**** sanity checks ****/
01240
01241 if( plint == NULL || plint->wid != NULL ||
01242 plint->call_method == PLUGIN_CALL_IMMEDIATELY ) EXRETURN ;
01243
01244 /**** create widgets structure ****/
01245
01246 plint->wid = wid = myXtNew(PLUGIN_widgets) ;
01247
01248 /**** create Shell that can be opened up later ****/
01249
01250 wid->shell =
01251 XtVaAppCreateShell(
01252 "AFNI" , "AFNI" , topLevelShellWidgetClass , dc->display ,
01253
01254 XmNtitle , plint->label , /* top of window */
01255 XmNiconName , plint->label , /* label on icon */
01256 XmNmappedWhenManaged , False , /* must map it manually */
01257 XmNdeleteResponse , XmDO_NOTHING , /* deletion handled below */
01258 XmNallowShellResize , False , /* let code resize shell? */
01259 XmNinitialResourcesPersistent , False ,
01260 NULL ) ;
01261
01262 DC_yokify( wid->shell , dc ) ; /* 14 Sep 1998 */
01263
01264 if( afni48_good )
01265 XtVaSetValues( wid->shell ,
01266 XmNiconPixmap , afni48_pixmap ,
01267 NULL ) ;
01268
01269 if( MCW_isitmwm(wid->shell) )
01270 XtVaSetValues( wid->shell ,
01271 XmNmwmDecorations , MWM_DECOR_ALL | MWM_DECOR_MAXIMIZE ,
01272 NULL ) ;
01273
01274 XmAddWMProtocolCallback( /* make "Close" window menu work */
01275 wid->shell ,
01276 XmInternAtom( dc->display , "WM_DELETE_WINDOW" , False ) ,
01277 PLUG_delete_window_CB , (XtPointer) plint ) ;
01278
01279 /**** create RowColumn to hold all widgets ****/
01280
01281 wid->form = XtVaCreateWidget(
01282 "AFNI" , xmFormWidgetClass , wid->shell ,
01283 XmNborderWidth , 0 ,
01284 XmNborderColor , 0 ,
01285 XmNtraversalOn , False ,
01286 XmNinitialResourcesPersistent , False ,
01287 NULL ) ;
01288
01289 /**** create Label at top to hold description of this program ****/
01290
01291 sprintf( str , "AFNI Plugin: %s" , plint->description ) ;
01292 xstr = XmStringCreateLtoR( str , XmFONTLIST_DEFAULT_TAG ) ;
01293 wid->label =
01294 XtVaCreateManagedWidget(
01295 "AFNI" , xmLabelWidgetClass , wid->form ,
01296 XmNlabelString , xstr ,
01297 XmNalignment , XmALIGNMENT_CENTER ,
01298
01299 XmNleftAttachment , XmATTACH_FORM ,
01300 XmNrightAttachment, XmATTACH_FORM ,
01301 XmNtopAttachment , XmATTACH_FORM ,
01302 XmNtopOffset , 5 ,
01303 XmNinitialResourcesPersistent , False ,
01304 NULL ) ;
01305 XmStringFree( xstr ) ;
01306
01307 /* now that we have the label,
01308 find its sizes and make sure the shell doesn't get too small */
01309
01310 MCW_widget_geom( wid->label , &ww , &hh , NULL , NULL ) ;
01311 XtVaSetValues( wid->shell ,
01312 XmNminWidth , ww+3*hh ,
01313 XmNminHeight , (plint->option_count == 0) ? 5*hh : 7*hh ,
01314 NULL ) ;
01315
01316 /**** create an action area beneath to hold user control buttons ****/
01317
01318 for( ib=0 ; ib < NUM_PLUG_ACT ; ib++ )
01319 PLUG_act[ib].data = (XtPointer) plint ;
01320
01321 /* 04 Nov 2003: allow for change of Run+Close and Run+Keep labels */
01322
01323 if( plint->run_label[0] == '\0' ) strcpy(plint->run_label ,PLUG_run_label );
01324 if( plint->doit_label[0] == '\0' ) strcpy(plint->doit_label,PLUG_doit_label);
01325 PLUG_act[1].label = plint->run_label ;
01326 PLUG_act[2].label = plint->doit_label;
01327
01328 actar = MCW_action_area( wid->form , PLUG_act ,
01329 (plint->helpstring!=NULL) ? NUM_PLUG_ACT
01330 : NUM_PLUG_ACT-1 ) ;
01331
01332 XtVaSetValues( actar ,
01333 XmNleftAttachment , XmATTACH_FORM ,
01334 XmNrightAttachment, XmATTACH_FORM ,
01335 XmNtopAttachment , XmATTACH_WIDGET ,
01336 XmNtopWidget , wid->label ,
01337 XmNtopOffset , 7 ,
01338 NULL ) ;
01339
01340 /**** create a Scrolled Window and Form to hold
01341 the user input option widgets, if they will be needed ****/
01342
01343 if( plint->option_count > 0 ){
01344 wid->scrollw =
01345 XtVaCreateWidget(
01346 "AFNI" , xmScrolledWindowWidgetClass , wid->form ,
01347 XmNscrollingPolicy , XmAUTOMATIC ,
01348 XmNwidth , ww+2*hh ,
01349 XmNheight , 3*hh ,
01350 XmNleftAttachment , XmATTACH_FORM ,
01351 XmNrightAttachment , XmATTACH_FORM ,
01352 XmNtopAttachment , XmATTACH_WIDGET ,
01353 XmNbottomAttachment, XmATTACH_FORM ,
01354 XmNtopWidget , actar ,
01355 XmNtopOffset , 7 ,
01356 XmNtraversalOn , False ,
01357 XmNinitialResourcesPersistent , False ,
01358 NULL ) ;
01359
01360 wframe =
01361 XtVaCreateWidget(
01362 "AFNI" , xmFrameWidgetClass , wid->scrollw ,
01363 XmNshadowType , XmSHADOW_ETCHED_IN ,
01364 XmNshadowThickness , 5 ,
01365 XmNtraversalOn , False ,
01366 XmNinitialResourcesPersistent , False ,
01367 NULL ) ;
01368
01369 wid->workwin =
01370 XtVaCreateWidget(
01371 "AFNI" , xmFormWidgetClass , wframe ,
01372 XmNborderWidth , 0 ,
01373 XmNborderColor , 0 ,
01374 XmNtraversalOn , False ,
01375 XmNinitialResourcesPersistent , False ,
01376 NULL ) ;
01377
01378 wid->opwid = opwid =
01379 (PLUGIN_option_widgets **)
01380 XtMalloc(sizeof(PLUGIN_option_widgets *) * plint->option_count) ;
01381
01382 /** setup widest widgets for each column of the Form **/
01383
01384 for( ib=0 ; ib < PLUGIN_MAX_SUBVALUES ; ib++ ){
01385 widest_chooser[ib] = NULL ;
01386 widest_width[ib] = 0 ;
01387 }
01388
01389 XtVaGetValues( wframe , XmNforeground , &fg_pix , NULL ) ;
01390
01391 } else {
01392 wframe = wid->scrollw = wid->workwin = NULL ;
01393 opwid = NULL ;
01394 }
01395
01396 /**** for each column within each option, find the max string width ****/
01397
01398 opt_lwid = 1 ;
01399 for( ib=0 ; ib < PLUGIN_MAX_SUBVALUES ; ib++ ) sv_lwid[ib] = 1 ;
01400
01401 for( iopt=0 ; iopt < plint->option_count ; iopt++ ){
01402 opt = plint->option[iopt] ;
01403 if( opt == NULL ) continue ; /* bad? */
01404
01405 opt_lwid = MAX( opt_lwid , PLUG_nonblank_len(opt->label) ) ;
01406 for( ib=0 ; ib < opt->subvalue_count ; ib++ ){
01407 sv = &(opt->subvalue[ib]) ;
01408 sv_lwid[ib] = MAX( sv_lwid[ib] , PLUG_nonblank_len(sv->label) ) ;
01409 }
01410 }
01411
01412 /**** now clip each label string to its column's width ****/
01413
01414 for( iopt=0 ; iopt < plint->option_count ; iopt++ ){
01415 opt = plint->option[iopt] ;
01416 if( opt == NULL ) continue ; /* bad? */
01417
01418 #define LPAD 0 /* 29 Mar 2002: used to be 1 */
01419
01420 opt->label[ opt_lwid + LPAD ] = '\0' ;
01421 for( ib=0 ; ib < opt->subvalue_count ; ib++ ){
01422 sv = &(opt->subvalue[ib]) ;
01423 sv->label[ sv_lwid[ib] + LPAD ] = '\0' ;
01424 }
01425 }
01426
01427 /**** create a row of Widgets for each option ****/
01428
01429 for( iopt=0 ; iopt < plint->option_count ; iopt++ ){
01430 opt = plint->option[iopt] ;
01431 if( opt == NULL ) continue ; /* bad? */
01432
01433 ow = opwid[iopt] = myXtNew(PLUGIN_option_widgets) ;
01434
01435 for( ib=0 ; ib < PLUGIN_MAX_SUBVALUES ; ib++ ){ /* initialize */
01436 ow->chooser[ib] = NULL ; /* all subvalue */
01437 ow->chtop[ib] = NULL ; /* stuff */
01438 ow->chooser_type[ib] = OP_CHOOSER_NONE ;
01439 opt->callvalue[ib] = NULL ;
01440 }
01441
01442 /** create ToggleButton to indicate whether this is used **/
01443
01444 ow->toggle =
01445 XtVaCreateManagedWidget(
01446 "AFNI" , xmToggleButtonWidgetClass , wid->workwin ,
01447 XmNleftAttachment , XmATTACH_FORM ,
01448 XmNtopAttachment , (iopt==0) ? XmATTACH_FORM /* first row */
01449 : XmATTACH_WIDGET , /* 2nd+ row */
01450 XmNtopOffset , 1 ,
01451 XmNleftOffset , 1 ,
01452 XmNtopWidget , separator , /* 2nd+ row */
01453
01454 XmNlabelType , XmPIXMAP , /* No label attached */
01455 XmNlabelPixmap , XmUNSPECIFIED_PIXMAP , /* Just the toggle! */
01456
01457 XmNset , (opt->mandatory) ? True : False ,
01458 XmNsensitive , (opt->mandatory) ? False : True ,
01459
01460 XmNindicatorSize , hh-1 ,
01461 XmNmarginHeight , 0 ,
01462 XmNmarginWidth , 0 ,
01463 XmNselectColor , fg_pix , /* fill with foreground when set */
01464
01465 XmNtraversalOn , False ,
01466 XmNinitialResourcesPersistent , False ,
01467 NULL ) ;
01468
01469 MCW_register_help( ow->toggle ,
01470 "When pressed in and filled,\n"
01471 "this button denotes that this\n"
01472 "line of input will be passed\n"
01473 "to the plugin. If the plugin\n"
01474 "has specified that this line\n"
01475 "is required, then you cannot\n"
01476 "toggle this button off."
01477 ) ;
01478
01479 if( opt->mandatory )
01480 MCW_register_hint( ow->toggle ,
01481 "This input line is mandatory" ) ;
01482 else
01483 MCW_register_hint( ow->toggle ,
01484 "IN: this input line sent to plugin" ) ;
01485
01486 /* this callback will change the appearance of the
01487 option's row of widgets when the toggle button is pressed */
01488
01489 if( ! opt->mandatory )
01490 XtAddCallback( ow->toggle , XmNvalueChangedCallback ,
01491 PLUG_optional_toggle_CB , (XtPointer) ow ) ;
01492
01493 /** create Label to describe this option **/
01494
01495 #if 0
01496 fprintf(stderr,"Option setup %s\n",opt->label) ;
01497 #endif
01498
01499 zlen = (PLUG_nonblank_len(opt->label) == 0) ;
01500 xstr = XmStringCreateLtoR( opt->label , XmFONTLIST_DEFAULT_TAG ) ;
01501 ow->label =
01502 XtVaCreateManagedWidget(
01503 "AFNI" , xmLabelWidgetClass , wid->workwin ,
01504 XmNleftAttachment , XmATTACH_WIDGET ,
01505 XmNtopAttachment , (iopt==0) ? XmATTACH_FORM /* 1st row */
01506 : XmATTACH_WIDGET , /* 2nd+ row */
01507 XmNtopOffset , 6 ,
01508 XmNleftOffset , 0 ,
01509 XmNleftWidget , ow->toggle ,
01510 XmNtopWidget , separator , /* 2nd+ row */
01511
01512 XmNmarginHeight , 0 ,
01513 XmNmarginWidth , 0 ,
01514
01515 XmNlabelString , xstr ,
01516 XmNuserData , (XtPointer) zlen ,
01517 XmNinitialResourcesPersistent , False ,
01518 NULL ) ;
01519 XmStringFree( xstr ) ;
01520 if( opt->mandatory && !zlen ){
01521 MCW_invert_widget( ow->label ) ;
01522 MCW_register_help( ow->label ,
01523 "This label is inverted as a\n"
01524 "signal that this line of inputs\n"
01525 "is required by the plugin, and\n"
01526 "can't be toggled off."
01527 ) ;
01528 }
01529 if( opt->hint != NULL )
01530 MCW_register_hint( ow->label , opt->hint ) ;
01531
01532 /** for each subvalue, create a chooser to select it **/
01533
01534 for( ib=0 ; ib < opt->subvalue_count ; ib++ ){
01535 sv = &(opt->subvalue[ib]) ;
01536 toff = 4 ; /* default top offset */
01537
01538 switch( sv->data_type ){
01539
01540 /** type I can't handle yet, so just put some label there **/
01541
01542 default:
01543 xstr = XmStringCreateLtoR( "** N/A **" , XmFONTLIST_DEFAULT_TAG ) ;
01544 ow->chtop[ib] =
01545 XtVaCreateManagedWidget(
01546 "AFNI" , xmLabelWidgetClass , wid->workwin ,
01547 XmNlabelString , xstr ,
01548 XmNinitialResourcesPersistent , False ,
01549 NULL ) ;
01550 XmStringFree( xstr ) ;
01551 ow->chooser_type[ib] = OP_CHOOSER_NONE ;
01552 ow->chooser[ib] = NULL ;
01553 break ;
01554
01555 /** overlay color type -- 11 Jul 2001 **/
01556
01557 case PLUGIN_OVERLAY_COLOR_TYPE:{
01558 MCW_arrowval * av ;
01559 #if 0
01560 fprintf(stderr,"colormenu setup %s; opt->tag=%s.\n",sv->label,opt->tag) ;
01561 #endif
01562
01563 av = new_MCW_colormenu(
01564 wid->workwin , /* parent */
01565 sv->label , /* label */
01566 dc , /* display context */
01567 1 , /* first color */
01568 dc->ovc->ncol_ov - 1 , /* last color */
01569 1 , /* initial color */
01570 NULL,NULL /* callback func,data */
01571 ) ;
01572
01573 ow->chooser[ib] = (void *) av ;
01574 ow->chtop[ib] = av->wrowcol ; /* get the top widget */
01575
01576 ow->chooser_type[ib] = OP_CHOOSER_COLORMENU ;
01577 }
01578 break ;
01579
01580 /** number type: make an arrowval or an option menu **/
01581
01582 case PLUGIN_NUMBER_TYPE:{
01583 int num_choice , use_optmenu ;
01584 MCW_arrowval * av ;
01585
01586 num_choice = abs(sv->int_range_top - sv->int_range_bot) + 1 ;
01587 use_optmenu = (num_choice < OP_OPTMENU_LIMIT) && !sv->editable ;
01588
01589 av = new_MCW_arrowval(
01590 wid->workwin , /* parent */
01591 sv->label , /* label */
01592 (use_optmenu) ? MCW_AV_optmenu /* type */
01593 : MCW_AV_downup ,
01594 sv->int_range_bot , /* min */
01595 sv->int_range_top , /* max */
01596 sv->value_default , /* initial */
01597 (sv->editable) ? MCW_AV_editext /* type */
01598 : MCW_AV_readtext ,
01599 sv->int_range_decim , /* decimals? */
01600 NULL , NULL , NULL , NULL
01601 ) ;
01602
01603 if( use_optmenu && num_choice > COLSIZE )
01604 AVOPT_columnize(av, 1+(num_choice-1)/COLSIZE) ;
01605
01606 ow->chooser[ib] = (void *) av ;
01607 ow->chtop[ib] = av->wrowcol ; /* get the top widget */
01608
01609 ow->chooser_type[ib] = (use_optmenu) ? OP_CHOOSER_OPTMENU
01610 : OP_CHOOSER_NUMBER ;
01611
01612 if( !use_optmenu ) av->allow_wrap = 1 ;
01613 if( use_optmenu ) toff-- ;
01614
01615 if( !use_optmenu && (plint->flags & SHORT_NUMBER_FLAG) )
01616 XtVaSetValues( av->wtext , XmNcolumns , 6 , NULL ) ;
01617 }
01618 break ;
01619
01620 /** string type:
01621 make an arrowval if a finite number of choices,
01622 or a label+textfield if the user can type in anything **/
01623
01624 case PLUGIN_STRING_TYPE:{
01625 if( sv->string_range_count > 0 ){ /* finite number of choices */
01626 int num_choice , use_optmenu ;
01627 MCW_arrowval * av ;
01628
01629 num_choice = sv->string_range_count ;
01630 use_optmenu = (num_choice < OP_OPTMENU_LIMIT) ;
01631
01632 av = new_MCW_arrowval(
01633 wid->workwin , /* parent */
01634 sv->label , /* label */
01635 (use_optmenu) ? MCW_AV_optmenu /* type */
01636 : MCW_AV_downup ,
01637 0 , /* min */
01638 num_choice-1 , /* max */
01639 sv->value_default , /* initial */
01640 MCW_AV_readtext , /* type */
01641 0 , /* decimals? */
01642 NULL , NULL , /* callbacks */
01643 MCW_av_substring_CB , /* text routine */
01644 sv->string_range /* text data */
01645 ) ;
01646
01647 if( !use_optmenu ){ /* 11 Jul 2001 */
01648 int ss , ll , mm=9 ; /* increase */
01649 for( ss=0 ; ss < num_choice ; ss++ ){ /* width of */
01650 if( sv->string_range[ss] != NULL ){ /* widget, */
01651 ll = strlen(sv->string_range[ss]); /* if needed */
01652 if( ll > mm ) mm = ll ;
01653 }
01654 }
01655 if( mm > 9 )
01656 XtVaSetValues( av->wtext ,
01657 XmNmaxLength,mm , XmNcolumns,mm ,
01658 NULL ) ;
01659 }
01660
01661 if( use_optmenu && num_choice > COLSIZE )
01662 AVOPT_columnize(av, 1+(num_choice-1)/COLSIZE) ;
01663
01664 ow->chooser[ib] = (void *) av ;
01665 ow->chtop[ib] = av->wrowcol ; /* get the top widget */
01666
01667 ow->chooser_type[ib] = (use_optmenu) ? OP_CHOOSER_OPTMENU
01668 : OP_CHOOSER_STRING ;
01669
01670 if( !use_optmenu ) av->allow_wrap = 1 ;
01671 if( use_optmenu ) toff-- ;
01672
01673 } else { /* arbitrary string input allowed */
01674
01675 PLUGIN_strval * av = myXtNew(PLUGIN_strval) ;
01676
01677 av->rowcol =
01678 XtVaCreateWidget(
01679 "AFNI" , xmRowColumnWidgetClass , wid->workwin ,
01680 XmNpacking , XmPACK_TIGHT ,
01681 XmNorientation , XmHORIZONTAL ,
01682 XmNmarginHeight, 0 ,
01683 XmNmarginWidth , 0 ,
01684 XmNspacing , 0 ,
01685 XmNtraversalOn , False ,
01686 XmNinitialResourcesPersistent , False ,
01687 NULL ) ;
01688
01689 xstr = XmStringCreateLtoR( sv->label , XmFONTLIST_DEFAULT_TAG ) ;
01690 av->label =
01691 XtVaCreateManagedWidget(
01692 "AFNI" , xmLabelWidgetClass , av->rowcol ,
01693 XmNlabelString , xstr ,
01694 XmNmarginWidth , 0 ,
01695 XmNinitialResourcesPersistent , False ,
01696 NULL ) ;
01697 XmStringFree( xstr ) ;
01698
01699 av->textf =
01700 XtVaCreateManagedWidget(
01701 "AFNI" , xmTextFieldWidgetClass , av->rowcol ,
01702 XmNcolumns , (sv->value_default > 1)
01703 ? sv->value_default : 9 ,
01704 XmNeditable , True ,
01705 XmNmaxLength , PLUGIN_STRING_SIZE ,
01706 XmNresizeWidth , False ,
01707 XmNmarginHeight , 1 ,
01708 XmNmarginWidth , 1 ,
01709 XmNcursorPositionVisible , True ,
01710 XmNblinkRate , 0 ,
01711 XmNautoShowCursorPosition , True ,
01712 XmNtraversalOn , False ,
01713 XmNinitialResourcesPersistent , False ,
01714 NULL ) ;
01715
01716 if( sv->string_range_count == -1 )
01717 XmTextFieldSetString( av->textf , sv->string_range[0] ) ;
01718
01719 XtManageChild( av->rowcol ) ;
01720
01721 ow->chooser[ib] = (void *) av ;
01722 ow->chtop[ib] = av->rowcol ; /* get the top widget */
01723
01724 ow->chooser_type[ib] = OP_CHOOSER_STRING ;
01725 }
01726 }
01727 break ;
01728
01729 /** single dataset type: make a pushbutton to popup a chooser **/
01730 /** 24 Nov 1996: adapt to include dataset list type as well **/
01731
01732 case PLUGIN_DATASET_LIST_TYPE:
01733 case PLUGIN_DATASET_TYPE:{
01734 PLUGIN_dsetval * av = myXtNew(PLUGIN_dsetval) ;
01735
01736 av->sv = sv ; /* what this is linked to */
01737
01738 av->dset_count = 0 ; /* will be array of datasets */
01739 av->dset_link = NULL ; /* we can choose amongst */
01740
01741 av->dset_choice = -1 ; /* will be index of our choice */
01742
01743 /* 24 Nov 1996 */
01744
01745 av->multi = (sv->data_type == PLUGIN_DATASET_LIST_TYPE) ;
01746 av->nchosen = 0 ;
01747 av->chosen = NULL ;
01748 av->current = 0 ;
01749 av->idclist = NULL ;
01750
01751 av->rowcol =
01752 XtVaCreateWidget(
01753 "AFNI" , xmRowColumnWidgetClass , wid->workwin ,
01754 XmNpacking , XmPACK_TIGHT ,
01755 XmNorientation , XmHORIZONTAL ,
01756 XmNmarginHeight, 0 ,
01757 XmNmarginWidth , 0 ,
01758 XmNspacing , 0 ,
01759 XmNtraversalOn , False ,
01760 XmNinitialResourcesPersistent , False ,
01761 NULL ) ;
01762
01763 xstr = XmStringCreateLtoR( sv->label , XmFONTLIST_DEFAULT_TAG ) ;
01764 av->label =
01765 XtVaCreateManagedWidget(
01766 "AFNI" , xmLabelWidgetClass , av->rowcol ,
01767 XmNlabelString , xstr ,
01768 XmNmarginWidth , 0 ,
01769 XmNinitialResourcesPersistent , False ,
01770 NULL ) ;
01771 XmStringFree( xstr ) ;
01772
01773 if( plint->flags & SHORT_CHOOSE_FLAG )
01774 xstr = XmStringCreateLtoR(
01775 (av->multi) ? "* Datasets *"
01776 : "- Dataset -" ,
01777 XmFONTLIST_DEFAULT_TAG ) ;
01778 else
01779 xstr = XmStringCreateLtoR(
01780 (av->multi) ? "** Choose Datasets *"
01781 : "-- Choose Dataset --" ,
01782 XmFONTLIST_DEFAULT_TAG ) ;
01783
01784 av->pb = XtVaCreateManagedWidget(
01785 "AFNI" , xmPushButtonWidgetClass , av->rowcol ,
01786 XmNlabelString , xstr ,
01787 XmNmarginHeight , 0 ,
01788 XmNmarginWidth , 0 ,
01789 XmNrecomputeSize , False ,
01790 XmNtraversalOn , False ,
01791 XmNuserData , (XtPointer) av ,
01792 XmNinitialResourcesPersistent , False ,
01793 NULL ) ;
01794
01795 XtAddCallback( av->pb , XmNactivateCallback ,
01796 PLUG_choose_dataset_CB , (XtPointer) plint ) ;
01797
01798 XtManageChild( av->rowcol ) ;
01799
01800 ow->chooser[ib] = (void *) av ;
01801 ow->chtop[ib] = av->rowcol ; /* get the top widget */
01802
01803 ow->chooser_type[ib] = OP_CHOOSER_DSET ;
01804 toff-- ;
01805 }
01806 break ;
01807
01808 /** single timeseries type (similiar to dataset above) **/
01809
01810 case PLUGIN_TIMESERIES_TYPE:{
01811 PLUGIN_tsval * av = myXtNew(PLUGIN_tsval) ;
01812
01813 av->sv = sv ; /* a friend in need */
01814 av->tsimar = GLOBAL_library.timeseries ; /* to choose amongst */
01815 av->ts_choice = -1 ; /* no initial choice */
01816 av->tsim = NULL ;
01817
01818 av->rowcol =
01819 XtVaCreateWidget(
01820 "AFNI" , xmRowColumnWidgetClass , wid->workwin ,
01821 XmNpacking , XmPACK_TIGHT ,
01822 XmNorientation , XmHORIZONTAL ,
01823 XmNmarginHeight, 0 ,
01824 XmNmarginWidth , 0 ,
01825 XmNspacing , 0 ,
01826 XmNtraversalOn , False ,
01827 XmNinitialResourcesPersistent , False ,
01828 NULL ) ;
01829
01830 xstr = XmStringCreateLtoR( sv->label , XmFONTLIST_DEFAULT_TAG ) ;
01831 av->label =
01832 XtVaCreateManagedWidget(
01833 "AFNI" , xmLabelWidgetClass , av->rowcol ,
01834 XmNlabelString , xstr ,
01835 XmNmarginWidth , 0 ,
01836 XmNinitialResourcesPersistent , False ,
01837 NULL ) ;
01838 XmStringFree( xstr ) ;
01839
01840 if( plint->flags & SHORT_CHOOSE_FLAG )
01841 xstr = XmStringCreateLtoR( "-Timeseries-",XmFONTLIST_DEFAULT_TAG ) ;
01842 else
01843 xstr = XmStringCreateLtoR( "-Choose Timeseries- ",XmFONTLIST_DEFAULT_TAG ) ;
01844
01845 av->pb = XtVaCreateManagedWidget(
01846 "AFNI" , xmPushButtonWidgetClass , av->rowcol ,
01847 XmNlabelString , xstr ,
01848 XmNmarginHeight , 0 ,
01849 XmNmarginWidth , 0 ,
01850 XmNrecomputeSize , False ,
01851 XmNtraversalOn , False ,
01852 XmNuserData , (XtPointer) av ,
01853 XmNinitialResourcesPersistent , False ,
01854 NULL ) ;
01855
01856 XtAddCallback( av->pb , XmNactivateCallback ,
01857 PLUG_choose_timeseries_CB , (XtPointer) plint ) ;
01858
01859 XtManageChild( av->rowcol ) ;
01860
01861 ow->chooser[ib] = (void *) av ;
01862 ow->chtop[ib] = av->rowcol ; /* get the top widget */
01863
01864 ow->chooser_type[ib] = OP_CHOOSER_TIMESERIES ;
01865 toff-- ;
01866 }
01867 break ;
01868
01869 } /* end of switch on subvalue type */
01870
01871 /** set initial attachments for the topmost chooser widget **/
01872
01873 XtVaSetValues(
01874 ow->chtop[ib] ,
01875 XmNleftAttachment , (ib==0) ? XmATTACH_WIDGET /* First column */
01876 : XmATTACH_NONE , /* of widgets */
01877 XmNleftOffset , (ib==0) ? 6 /* is attached */
01878 : 0 , /* to the label. */
01879 XmNleftWidget , (ib==0) ? ow->label /* Later columns */
01880 : NULL , /* fixed below. */
01881
01882 XmNtopAttachment , (iopt==0) ? XmATTACH_FORM /* 1st row */
01883 : XmATTACH_WIDGET , /* 2nd+ row */
01884 XmNtopOffset , toff ,
01885 XmNtopWidget , separator ,
01886 NULL ) ;
01887
01888 if( !opt->mandatory ) XtSetSensitive( ow->chtop[ib] , False ) ;
01889
01890 if( sv->hint != NULL )
01891 MCW_reghint_children( ow->chtop[ib] , sv->hint ) ;
01892
01893 /** find out if this is the widest one in its column so far **/
01894
01895 MCW_widget_geom( ow->chtop[ib] , &ww , NULL,NULL,NULL ) ;
01896
01897 if( ww > widest_width[ib] ){
01898 widest_width[ib] = ww ;
01899 widest_chooser[ib] = ow->chtop[ib] ;
01900 }
01901
01902 } /* end of loop over subvalues */
01903
01904 /** separator between option rows **/
01905
01906 separator = XtVaCreateManagedWidget(
01907 "AFNI" , xmSeparatorWidgetClass , wid->workwin ,
01908 XmNseparatorType , XmSHADOW_ETCHED_OUT ,
01909 XmNshadowThickness, 5 ,
01910 XmNleftAttachment , XmATTACH_FORM ,
01911 XmNrightAttachment, XmATTACH_FORM ,
01912 XmNtopAttachment , XmATTACH_WIDGET ,
01913 XmNtopWidget , ow->toggle ,
01914 XmNtopOffset , 7 ,
01915 NULL ) ;
01916
01917 } /* end of loop over options */
01918
01919 #if 0
01920 fprintf(stderr,"Widget attachments\n") ;
01921 #endif
01922
01923 /**** Now that we've created all the rows,
01924 and have found all the widest widgets in each column,
01925 go back and attach each column to the widest one to its left. ****/
01926
01927 for( iopt=0 ; iopt < plint->option_count ; iopt++ ){
01928 opt = plint->option[iopt] ;
01929 if( opt == NULL ) continue ; /* bad? */
01930
01931 ow = opwid[iopt] ;
01932 for( ib=1 ; ib < opt->subvalue_count ; ib++ ){
01933 XtVaSetValues( ow->chtop[ib] ,
01934 XmNleftAttachment , XmATTACH_WIDGET ,
01935 XmNleftWidget , widest_chooser[ib-1] ,
01936 XmNleftOffset , 6 ,
01937 NULL ) ;
01938 }
01939 }
01940
01941 #if 0
01942 fprintf(stderr,"Widget separators\n") ;
01943 #endif
01944
01945 /**** Create a vertical separator to the left of each column ****/
01946
01947 if( plint->option_count > 0 ){
01948 for( ib=0 ; ib < PLUGIN_MAX_SUBVALUES && widest_width[ib] > 0 ; ib++ ){
01949 separator = XtVaCreateManagedWidget(
01950 "AFNI" , xmSeparatorWidgetClass , wid->workwin ,
01951 XmNseparatorType , XmSHADOW_ETCHED_OUT ,
01952 XmNorientation , XmVERTICAL ,
01953 XmNtopAttachment , XmATTACH_FORM ,
01954 XmNbottomAttachment, XmATTACH_FORM ,
01955 XmNrightAttachment , XmATTACH_WIDGET ,
01956 XmNrightWidget , widest_chooser[ib] ,
01957 XmNrightOffset , 2 ,
01958 NULL ) ;
01959
01960 }
01961 }
01962
01963 #if 0
01964 fprintf(stderr,"Widget management\n") ;
01965 #endif
01966
01967 /**** Manage the managers, and go home ****/
01968
01969 if( plint->option_count > 0 ){
01970 XtManageChild( wid->workwin ) ;
01971 XtManageChild( wframe ) ;
01972 XtManageChild( wid->scrollw ) ;
01973 }
01974 XtManageChild( wid->form ) ;
01975
01976 #if 0
01977 fprintf(stderr,"Widget realization\n") ;
01978 #endif
01979
01980 XtRealizeWidget( wid->shell ) ; /* will not be mapped */
01981
01982 /** set its width after it is mapped **/
01983
01984 #define OPC_MAX 8
01985 #define OPC_MAXMAX 10
01986 #define LUCK 5
01987
01988 if( wframe != NULL ){
01989 Widget bar ;
01990 int fww , fhh , fyy , bww ;
01991
01992 #if 0
01993 fprintf(stderr,"Widget geometrization\n") ;
01994 #endif
01995
01996 MCW_widget_geom( wid->label , &ww , &hh , NULL, NULL ) ; /* get dimensions */
01997 MCW_widget_geom( wframe , &fww, &fhh, NULL, NULL ) ; /* of various */
01998 MCW_widget_geom( wid->scrollw , NULL, NULL, NULL, &fyy ) ; /* pieces-parts */
01999
02000 fww = MAX( fww+LUCK , ww ) ; /* extra pixels for luck */
02001
02002 ib = plint->option_count ; /* too many options --> will use vertical scrollbar */
02003 if( ib > OPC_MAXMAX ){
02004 fhh = (OPC_MAX * fhh) / ib ; /* set height to allow for OPC_MAX options visible */
02005
02006 if( fww > ww ){ /* set width to allow for vertical scrollbar */
02007 XtVaGetValues( wid->scrollw , XmNverticalScrollBar , &bar , NULL ) ;
02008 MCW_widget_geom( bar , &bww , NULL,NULL,NULL ) ;
02009 fww += bww+LUCK+LUCK ; /* need more luck here, I guess */
02010 }
02011 }
02012 fhh += fyy+LUCK ; /* set height to allow for stuff above options */
02013
02014 XtVaSetValues( wid->shell , XmNwidth , fww , XmNheight , fhh , NULL ) ;
02015 }
02016
02017 /** set the popup meter to be nothing at all right now **/
02018
02019 wid->meter = NULL ;
02020
02021 #if 0
02022 fprintf(stderr,"Widgets done!\n") ;
02023 #endif
02024
02025 EXRETURN ;
02026 }
|
|
||||||||||||||||
|
Definition at line 3552 of file afni_plugin.c. References AFNI_CALL_VALU_1ARG, AFNI_controller_label(), AFNI_find_open_controller(), AFNI_library_type::dc, ENTRY, GLOBAL_library, MCW_popup_message(), MCW_USER_KILL, MCW_widget_geom(), PLUG_setup_widgets(), PLUTO_cursorize, RWC_visibilize_widget(), SHOW_AFNI_PAUSE, SHOW_AFNI_READY, STATUS, and Three_D_View::type. Referenced by AFNI_drive_open_plugin(), AFNI_startup_layout_CB(), DSET2_func_init(), DSETN_func_init(), and EXP0D_func_init().
03553 {
03554 PLUGIN_interface * plint = (PLUGIN_interface *) cd ;
03555 XmAnyCallbackStruct * cbs = (XmAnyCallbackStruct *) cbd ;
03556 char * mesg ;
03557 Widget wpop ;
03558 Three_D_View * im3d = NULL ;
03559
03560 ENTRY("PLUG_startup_plugin_CB") ;
03561
03562 if( plint == NULL ) EXRETURN ; /* error? */
03563
03564 if( w != NULL ){
03565 XtVaGetValues( w , XmNuserData , &im3d , NULL ) ; /* set controller from */
03566 plint->im3d = im3d ; /* data on menu button */
03567 } else if( cbs != NULL ){ /* 21 Jul 2003 */
03568 plint->im3d = (Three_D_View *) cbs ;
03569 cbs = NULL ;
03570 }
03571 if( plint->im3d == NULL ) plint->im3d = AFNI_find_open_controller() ;
03572
03573 /*-- if no interface is needed, just call it --*/
03574
03575 if( plint->call_method == PLUGIN_CALL_IMMEDIATELY ){
03576
03577 STATUS("calling plugin") ;
03578
03579 MPROBE ;
03580
03581 SHOW_AFNI_PAUSE ;
03582 #if 0
03583 mesg = plint->call_func( plint ) ;
03584 #else
03585 AFNI_CALL_VALU_1ARG( plint->call_func ,
03586 char *,mesg , PLUGIN_interface *,plint ) ;
03587 #endif
03588 SHOW_AFNI_READY ;
03589
03590 MPROBE ;
03591
03592 if( mesg != NULL ){
03593 if( w != NULL ){
03594 (void) MCW_popup_message( w , mesg , MCW_USER_KILL ) ;
03595 XBell( XtDisplay(w) , 100 ) ;
03596 } else {
03597 fprintf(stderr,"\n%s\a\n",mesg) ;
03598 }
03599 }
03600 EXRETURN ;
03601 }
03602
03603 /*-- if widgets not created yet, create them now --*/
03604
03605 if( plint->wid == NULL )
03606 PLUG_setup_widgets( plint , GLOBAL_library.dc ) ;
03607
03608 /*-- set labels to go on shell widget and icon;
03609 include the [] controller window index, if possible --*/
03610
03611 { char ttl[PLUGIN_STRING_SIZE] ;
03612
03613 sprintf(ttl , "%s%s" , AFNI_controller_label(plint->im3d) , plint->label ) ;
03614
03615 XtVaSetValues( plint->wid->shell ,
03616 XmNtitle , ttl , /* top of window */
03617 XmNiconName , ttl , /* label on icon */
03618 NULL ) ;
03619 }
03620
03621 /*-- if possible, find where this popup should go --*/
03622
03623 wpop = plint->wid->shell ;
03624
03625 if( cbs != NULL && cbs->event != NULL
03626 && cbs->event->type == ButtonRelease ){
03627
03628 XButtonEvent * xev = (XButtonEvent *) cbs->event ;
03629 int xx = (int)xev->x_root , yy = (int)xev->y_root ;
03630 int ww,hh , sw,sh ;
03631
03632 STATUS("trying to position popup") ;
03633
03634 MCW_widget_geom( wpop , &ww,&hh , NULL,NULL ) ; /* widget width and height */
03635 sw = WidthOfScreen (XtScreen(wpop)) ; /* screen width and height */
03636 sh = HeightOfScreen(XtScreen(wpop)) ;
03637
03638 if( xx+ww+3 >= sw && ww <= sw ) xx = sw-ww ; /* make sure is on screen */
03639 if( yy+hh+3 >= sh && hh <= sh ) yy = sh-hh ;
03640
03641 XtVaSetValues( wpop , XmNx , xx , XmNy , yy , NULL ) ;
03642 }
03643
03644 /*-- popup the widgets that control this plugin --*/
03645
03646 STATUS("popping up interface") ;
03647
03648 XtMapWidget( wpop ) ;
03649 RWC_visibilize_widget( wpop ) ; /* 27 Sep 2000 */
03650 PLUTO_cursorize( plint->wid->shell ) ;
03651 EXRETURN ;
03652 }
|
|
|
Definition at line 5178 of file afni_plugin.c. References datap, free, num_workp, and workp. Referenced by PLUTO_register_workproc().
05179 {
05180 int ii , ngood ;
05181 Boolean done ;
05182
05183 #ifdef WPDEBUG
05184 { static int ncall=0 ;
05185 if( (ncall++) % 1000 == 0 )
05186 fprintf(stderr,"PLUG_workprocess: entry %d\n",ncall) ; }
05187 #endif
05188
05189 if( num_workp == 0 ) return True ;
05190
05191 for( ii=0,ngood=0 ; ii < num_workp ; ii++ ){
05192 if( workp[ii] != NULL ){
05193 done = workp[ii]( datap[ii] ) ;
05194 if( done == True ) workp[ii] = NULL ;
05195 else ngood++ ;
05196 }
05197 }
05198
05199 if( ngood == 0 ){
05200 #ifdef WPDEBUG
05201 fprintf(stderr,"Found no workprocs left\n") ;
05202 #endif
05203 free(workp) ; workp = NULL ; free(datap) ; datap = NULL ;
05204 num_workp = 0 ;
05205 return True ;
05206 }
05207 return False ;
05208 }
|
|
||||||||||||||||
|
Definition at line 3010 of file afni_plugin.c. References DSET_BRICK_TYPE, DSET_INMEMORY, DSET_NUM_TIMES, DSET_PRINCIPAL_VALUE, ENTRY, THD_3dim_dataset::func_type, ISVALID_3DIM_DATASET, itmp, and RETURN. Referenced by PLUG_choose_dataset_CB(), and PLUTO_dset_check().
03011 {
03012 int itmp ;
03013
03014 ENTRY("PLUGIN_dset_check") ;
03015
03016 if( ! ISVALID_3DIM_DATASET(dset) ) RETURN(0) ;
03017
03018 if( ((1 << dset->func_type) & type_mask) == 0 ) RETURN(0) ;
03019
03020 itmp = (DSET_NUM_TIMES(dset) > 1) ? DIMEN_4D_MASK : DIMEN_3D_MASK ;
03021 if( (itmp & ctrl_mask) == 0 ) RETURN(0) ;
03022
03023 if( !DSET_INMEMORY(dset) && (ctrl_mask & WARP_ON_DEMAND_MASK) == 0 ) RETURN(0) ;
03024
03025 itmp = DSET_PRINCIPAL_VALUE(dset) ; /* get the type of */
03026 itmp = DSET_BRICK_TYPE(dset,itmp) ; /* the "principal" brick */
03027
03028 if( itmp == MRI_byte && (ctrl_mask & BRICK_BYTE_MASK) == 0 ) RETURN(0) ;
03029 if( itmp == MRI_short && (ctrl_mask & BRICK_SHORT_MASK) == 0 ) RETURN(0) ;
03030 if( itmp == MRI_float && (ctrl_mask & BRICK_FLOAT_MASK) == 0 ) RETURN(0) ;
03031 if( itmp == MRI_complex && (ctrl_mask & BRICK_COMPLEX_MASK) == 0 ) RETURN(0) ;
03032 if( itmp == MRI_rgb && (ctrl_mask & BRICK_RGB_MASK) == 0 ) RETURN(0) ;
03033
03034 RETURN(1) ;
03035 }
|
|
||||||||||||||||
|
Definition at line 4017 of file afni_plugin.c. References MCW_imseq_status::aux, ENTRY, GLOBAL_library, PLUGIN_impopper::im, isqCR_getimage, isqCR_getoverlay, isqCR_getqimage, isqCR_getstatus, mri_copy(), myXtNew, MCW_imseq_status::num_series, MCW_imseq_status::num_total, MCW_imseq_status::parent, PLUGIN_seq_send_CB(), AFNI_library_type::registered_0D, AFNI_library_type::registered_2D, RETURN, MCW_imseq_status::send_CB, MCW_imseq_status::slice_proj, MCW_imseq_status::transforms0D, and MCW_imseq_status::transforms2D. Referenced by PLUTO_popup_image().
04018 {
04019 PLUGIN_impopper * imp = (PLUGIN_impopper *) handle ;
04020
04021 ENTRY("PLUGIN_imseq_getim") ;
04022
04023 if( imp == NULL ) RETURN(NULL) ;
04024
04025 /*--- control info ---*/
04026
04027 if( type == isqCR_getstatus ){
04028 MCW_imseq_status * stat = myXtNew( MCW_imseq_status ) ;
04029 stat->num_total = 1 ;
04030 stat->num_series = 1 ;
04031 stat->send_CB = PLUGIN_seq_send_CB ;
04032 stat->parent = (XtPointer) imp ;
04033 stat->aux = NULL ;
04034
04035 stat->transforms0D = & (GLOBAL_library.registered_0D) ;
04036 stat->transforms2D = & (GLOBAL_library.registered_2D) ;
04037 stat->slice_proj = NULL ;
04038
04039 RETURN((XtPointer) stat) ;
04040 }
04041
04042 /*--- no overlay ---*/
04043
04044 if( type == isqCR_getoverlay ) RETURN(NULL) ;
04045
04046 /*--- return a copy of the image
04047 (since the imseq will delete it when it is done) ---*/
04048
04049 if( type == isqCR_getimage || type == isqCR_getqimage ){
04050 MRI_IMAGE * im = NULL ;
04051 if( imp->im != NULL ) im = mri_copy( imp->im ) ;
04052 RETURN((XtPointer) im) ;
04053 }
04054
04055 RETURN(NULL) ; /* should not occur, but who knows? */
04056 }
|
|
||||||||||||||||
|
Definition at line 4064 of file afni_plugin.c. References AFNI_speak(), ENTRY, ISQ_cbs::event, PLUGIN_impopper::im, isqCR_buttonpress, isqCR_destroy, isqCR_keypress, MCW_popup_message(), MCW_USER_KILL, mri_free(), NO_frivolities, PLUTO_beep(), ISQ_cbs::reason, PLUGIN_impopper::seq, MCW_imseq::status, MCW_imseq::wimage, and XtFree. Referenced by PLUGIN_imseq_getim().
04065 {
04066 PLUGIN_impopper * imp = (PLUGIN_impopper *) handle ;
04067
04068 ENTRY("PLUGIN_seq_send_CB") ;
04069
04070 if( imp == NULL ) EXRETURN ;
04071
04072 switch( cbs->reason ){
04073
04074 case isqCR_destroy:{
04075 XtFree((char*)imp->seq->status) ;
04076 XtFree((char*)imp->seq) ; imp->seq = NULL ;
04077 mri_free( imp->im ) ; imp->im = NULL ;
04078 }
04079 break ;
04080
04081 #ifndef NO_FRIVOLITIES
04082 case isqCR_buttonpress:{
04083 XButtonEvent *xev = (XButtonEvent *) cbs->event ;
04084 #define NBIRN 10
04085 static int nold=0 ;
04086 static char * birn[NBIRN] = { " \n** Don't DO That! **\n " ,
04087 " \n** Stop it, Rasmus! **\n " ,
04088 " \n** Do NOT read this message! **\n " ,
04089 " \n** Having fun yet? **\n " ,
04090 " \n** What do you want NOW? **\n " ,
04091 " \n** Too much time on your hands? **\n " ,
04092 " \n** Why are you bothering me? **\n " ,
04093 " \n** Danger! Danger, Will Robinson! **\n " ,
04094 " \n** WARNING: Planetary meltdown imminent! **\n " ,
04095
04096 " \n"
04097 " God of our fathers, known of old,\n"
04098 " Lord of our far-flung battle-line,\n"
04099 " Beneath whose awful hand we hold\n"
04100 " Dominion over palm and pine -\n"
04101 " Lord God of Hosts, be with us yet,\n"
04102 " Lest we forget - lest we forget!\n"
04103 " \n"
04104 " The tumult and the shouting dies;\n"
04105 " The captains and the kings depart:\n"
04106 " Still stands Thine ancient sacrifice,\n"
04107 " An humble and a contrite heart.\n"
04108 " Lord God of Hosts, be with us yet,\n"
04109 " Lest we forget - lest we forget!\n"
04110 " \n"
04111 " Far-called, our navies melt away;\n"
04112 " On dune and headland sinks the fire:\n"
04113 " Lo, all our pomp of yesterday\n"
04114 " Is one with Nineveh and Tyre!\n"
04115 " Judge of the Nations, spare us yet.\n"
04116 " Lest we forget - lest we forget!\n"
04117 " \n"
04118 " If, drunk with sight of power, we loose\n"
04119 " Wild tongues that have not Thee in awe,\n"
04120 " Such boastings as the Gentiles use,\n"
04121 " Or lesser breeds without the Law -\n"
04122 " Lord God of Hosts, be with us yet,\n"
04123 " Lest we forget - lest we forget!\n"
04124 " \n"
04125 " For heathen heart that puts her trust\n"
04126 " In reeking tube and iron shard,\n"
04127 " All valiant dust that builds on dust,\n"
04128 " And, guarding, calls not Thee to guard,\n"
04129 " For frantic boast and foolish word -\n"
04130 " The Mercy on Thy People, Lord!\n"
04131 } ;
04132
04133 #define NKLING 5
04134 static int nkl=0 ;
04135 static char *kling[NKLING] = {
04136 " \n What is this talk of 'release'?\n"
04137 " Klingons do not make software 'releases'.\n"
04138 " Our software 'escapes', leaving a bloody trail of\n"
04139 " designers and 'Quality Assurance' people in its wake.\n" ,
04140
04141 " \n Debugging? Klingons do not debug.\n"
04142 " Our software does not coddle the weak.\n" ,
04143
04144 " \n Klingon software does NOT have BUGS.\n"
04145 " It has FEATURES, and those features are too\n"
04146 " sophisticated for a Romulan pig like you to understand.\n" ,
04147
04148 " \n Our users will know fear and cower before our software!\n"
04149 " Ship it! Ship it and let them flee like the dogs they are!\n" ,
04150
04151 " \n You question the worthiness of my code?\n"
04152 " I should kill you where you stand!\n"
04153 } ;
04154
04155 if( xev == NULL || xev->button == Button1 ){
04156 if( !NO_frivolities && nold < NBIRN ){
04157 if( strstr(birn[nold],"Rasmus") != NULL )
04158 AFNI_speak("Stop it, Rasmus", 0 ) ;
04159 MCW_popup_message( seq->wimage , birn[nold++] , MCW_USER_KILL ) ;
04160 } else {
04161 PLUTO_beep() ;
04162 if( nold == NBIRN ){ AFNI_speak("Stop it",0); nold++; }
04163 }
04164 } else if( xev->button == Button3 ){
04165 if( !NO_frivolities && nkl < NKLING ){
04166 MCW_popup_message( seq->wimage , kling[nkl++] , MCW_USER_KILL ) ;
04167 } else {
04168 PLUTO_beep() ;
04169 if( nkl == NKLING ){ AFNI_speak("Deesist at once",0); nkl++; }
04170 }
04171 }
04172 }
04173 break ;
04174
04175 /*--------------------------------------*/
04176
04177 case isqCR_keypress:{ /* 12 Sep 2002 */
04178 static char *nash[] = {
04179 " \n"
04180 "The ant has made himself illustrious\n"
04181 "Through constant industry industrious.\n"
04182 "So what?\n"
04183 "Would you be calm and placid\n"
04184 "If you were full of formic acid?\n"
04185 ,
04186 " \n"
04187 "Celery, raw\n"
04188 "Develops the jaw,\n"
04189 "But celery, stewed,\n"
04190 "Is more quietly chewed.\n"
04191 ,
04192 " \n"
04193 "I objurgate the centipede,\n"
04194 "A bug we do not really need.\n"
04195 "At sleepy-time he beats a path\n"
04196 "Straight to the bedroom or the bath.\n"
04197 "You always wallop where he's not,\n"
04198 "Or, if he is, he makes a spot. \n"
04199 ,
04200 " \n"
04201 "The cow is of the bovine ilk;\n"
04202 "One end is moo, the other, milk.\n"
04203 ,
04204 " \n"
04205 "This is my dream,\n"
04206 "It is my own dream,\n"
04207 "I dreamt it.\n"
04208 "I dreamt that my hair was kempt.\n"
04209 "Then I dreamt that my true love unkempt it.\n"
04210 ,
04211 " \n"
04212 "I find it very difficult to enthuse\n"
04213 "Over the current news.\n"
04214 "Just when you think that at least the outlook\n"
04215 " is so black that it can grow no blacker, it worsens,\n"
04216 "And that is why I do not like the news, because there\n"
04217 " has never been an era when so many things were going\n"
04218 " so right for so many of the wrong persons. \n"
04219 ,
04220 " \n"
04221 "I test my bath before I sit,\n"
04222 "And I'm always moved to wonderment\n"
04223 "That what chills the finger not a bit\n"
04224 "Is so frigid upon the fundament.\n"
04225 ,
04226 " \n"
04227 "The turtle lives 'twixt plated decks\n"
04228 "Which practically conceal its sex.\n"
04229 "I think it clever of the turtle\n"
04230 "In such a fix to be so fertile.\n"
04231 ,
04232 " \n"
04233 "Candy\n"
04234 "Is Dandy\n"
04235 "But liquor\n"
04236 "Is quicker.\n"
04237 ,
04238 " \n"
04239 "I've never seen an abominable snowman,\n"
04240 "I'm hoping not to see one,\n"
04241 "I'm also hoping, if I do,\n"
04242 "That it will be a wee one. \n"
04243 ,
04244 " \n"
04245 "Children aren't happy without\n"
04246 "something to ignore, and that's\n"
04247 "what parents were created for. \n"
04248 ,
04249 " \n"
04250 "Middle age is when you've met so\n"
04251 "many people that every new person\n"
04252 "you meet reminds you of someone else.\n"
04253 } ;
04254 #define NUM_NASH (sizeof(nash)/sizeof(char *)) ;
04255
04256 static int iold=-1 ; int ii ;
04257 do{ ii=lrand48()%NUM_NASH; } while( ii==iold ) ; iold = ii ;
04258 MCW_popup_message( seq->wimage , nash[ii] , MCW_USER_KILL ) ;
04259 }
04260 break ;
04261 #endif /* NO_FRIVOLITIES */
04262
04263 }
04264 EXRETURN ;
04265 }
|
|
||||||||||||||||||||||||||||||||||||
|
Definition at line 4577 of file afni_plugin.c. References ENTRY, generic_func, MAKER_4D_to_typed_fbuc(), PLUTO_prefix_ok(), RETURN, and user_data.
04583 {
04584 THD_3dim_dataset * new_dset ; /* output dataset */
04585
04586 ENTRY("PLUTO_4D_to_typed_fbuc") ;
04587
04588 if( ! PLUTO_prefix_ok(new_prefix) ) RETURN(NULL) ;
04589
04590 new_dset = MAKER_4D_to_typed_fbuc( old_dset , new_prefix , new_datum ,
04591 ignore , detrend , nbrik , user_func , user_data ) ;
04592
04593 RETURN(new_dset) ;
04594 }
|
|
||||||||||||||||||||||||||||||||
|
Definition at line 4537 of file afni_plugin.c. References ENTRY, generic_func, MAKER_4D_to_typed_fim(), PLUTO_prefix_ok(), RETURN, and user_data. Referenced by EXTRACT_main().
04542 {
04543 THD_3dim_dataset * new_dset ; /* output dataset */
04544
04545 ENTRY("PLUTO_4D_to_typed_fim") ;
04546
04547 if( ! PLUTO_prefix_ok(new_prefix) ) RETURN(NULL) ;
04548
04549 new_dset = MAKER_4D_to_typed_fim( old_dset , new_prefix , new_datum ,
04550 ignore , detrend , user_func , user_data ) ;
04551
04552 RETURN(new_dset) ;
04553 }
|
|
||||||||||||||||||||||||||||||||
|
Definition at line 4557 of file afni_plugin.c. References ENTRY, generic_func, MAKER_4D_to_typed_fith(), PLUTO_prefix_ok(), RETURN, and user_data.
04562 {
04563 THD_3dim_dataset * new_dset ; /* output dataset */
04564
04565 ENTRY("PLUTO_4D_to_typed_fith") ;
04566
04567 if( ! PLUTO_prefix_ok(new_prefix) ) RETURN(NULL) ;
04568
04569 new_dset = MAKER_4D_to_typed_fith( old_dset , new_prefix , new_datum ,
04570 ignore , detrend , user_func , user_data ) ;
04571
04572 RETURN(new_dset) ;
04573 }
|
|
||||||||||||||||
|
Definition at line 3662 of file afni_plugin.c. References AFNI_force_adoption(), AFNI_initialize_view(), AFNI_make_descendants(), Three_D_View::anat_now, AFNI_view_info::anat_num, THD_3dim_dataset::anat_parent, DATABLOCK_MEM_ANY, THD_3dim_dataset::dblk, THD_session::dsset, ENTRY, AFNI_view_info::func_num, GLOBAL_argopt, GLOBAL_library, IM3D_VALID, ISANAT, ISVALID_3DIM_DATASET, THD_session::num_dsset, POPDOWN_strlist_chooser, RETURN, AFNI_view_info::sess_num, THD_sessionlist::ssar, AFNI_library_type::sslist, THD_force_malloc_type(), THD_load_statistics(), THD_MAX_SESSION_SIZE, THD_write_3dim_dataset(), THD_3dim_dataset::view_type, Three_D_View::vinfo, and AF_options::warp_4D. Referenced by CLUST_main(), COPY_main(), DELAY_main(), DRAW_finalize_dset_CB(), DRAW_saveas_finalize_CB(), DUP_main(), EDIT_main(), EXTRACT_main(), Fourier_Filter_Driver(), HEMISUB_main(), IMREG_main(), PERMTEST_main(), POWER_main(), PRIC_main(), REORDER_main(), STATS_main(), STAVG_main(), THRESH_main(), VOLREG_main(), write_results(), and ZPAD_main().
03664 {
03665 Three_D_View *im3d ;
03666 THD_session *sess ;
03667 int iss , vv , id ;
03668 int make_current = (action_flag & DSET_ACTION_MAKE_CURRENT) ;
03669
03670 ENTRY("PLUTO_add_dset") ;
03671
03672 /** sanity check **/
03673
03674 if( plint == NULL || ! ISVALID_3DIM_DATASET(dset) ) RETURN(1) ;
03675
03676 /** find some indices **/
03677
03678 im3d = plint->im3d ;
03679 iss = IM3D_VALID(im3d) ? im3d->vinfo->sess_num : 0 ;
03680 sess = GLOBAL_library.sslist->ssar[iss] ;
03681 vv = dset->view_type ;
03682
03683 /** add the dataset to the session **/
03684
03685 id = sess->num_dsset ;
03686 if( id >= THD_MAX_SESSION_SIZE ){
03687 fprintf(stderr,"*** Overflow session dataset limit ***\n") ;
03688 RETURN(1) ;
03689 }
03690 sess->dsset[id][vv] = dset ;
03691 sess->num_dsset ++ ;
03692
03693 /** make sure the dataset is properly fit into the situation **/
03694
03695 POPDOWN_strlist_chooser ; /* added dataset --> old choosers are invalid */
03696
03697 THD_load_statistics( dset ) ;
03698 THD_write_3dim_dataset( NULL,NULL , dset , True ) ;
03699
03700 if( dset->anat_parent == NULL ) /* if() added 14 Dec 1999 */
03701 AFNI_force_adoption( sess , GLOBAL_argopt.warp_4D ) ;
03702
03703 AFNI_make_descendants( GLOBAL_library.sslist ) ;
03704
03705 /** if desired, jump to this puppy in the viewer **/
03706
03707 if( make_current && IM3D_VALID(im3d) ){
03708 if( ISANAT(dset) )
03709 im3d->vinfo->anat_num = sess->num_dsset - 1 ;
03710 else
03711 im3d->vinfo->func_num = sess->num_dsset - 1 ;
03712
03713 AFNI_initialize_view( im3d->anat_now , im3d ) ;
03714 }
03715
03716 THD_force_malloc_type( dset->dblk , DATABLOCK_MEM_ANY ) ;
03717 RETURN(0) ;
03718 }
|
|
||||||||||||
|
Definition at line 726 of file afni_plugin.c. References ENTRY, myXtFree, and STATUS. Referenced by CORREL_init(), ENV_init(), F1D_init(), F2D_init(), PLUGIN_init(), and TSGEN_init().
00727 {
00728 int nopt , nsv ;
00729 PLUGIN_option * opt ;
00730 PLUGIN_subvalue * sv ;
00731
00732 ENTRY("PLUTO_add_hint") ;
00733
00734 if( plint == NULL || hh == NULL ) EXRETURN ;
00735
00736 nopt = plint->option_count - 1 ;
00737 if( nopt < 0 ){ /* no options yet, so hint is global */
00738 myXtFree(plint->hint) ;
00739 plint->hint = XtNewString(hh) ;
00740 EXRETURN ;
00741 }
00742
00743 opt = plint->option[nopt] ; /* latest option line */
00744 nsv = opt->subvalue_count ; /* number of subvalues on it */
00745
00746 if( nsv == 0 ){ /* no subvalues yet */
00747 myXtFree(opt->hint) ; /* so put hint on the option line */
00748 opt->hint = XtNewString(hh) ;
00749 } else { /* add hint to last subvalue */
00750 sv = &(opt->subvalue[nsv-1]) ;
00751 myXtFree(sv->hint) ;
00752 sv->hint = XtNewString(hh) ;
00753
00754 #if 0
00755 if(PRINT_TRACING)
00756 { char str[256] ; sprintf(str,"%s: %s hint=%s",
00757 plint->label,sv->label,sv->hint) ; STATUS(str) ; }
00758 #endif
00759
00760 }
00761
00762 EXRETURN ;
00763 }
|
|
|
Definition at line 3847 of file afni_plugin.c. References AFNI_library_type::dc, MCW_DC::display, and GLOBAL_library. Referenced by DRAW_label_CB(), DRAW_label_finalize(), DRAW_label_getfile(), PLUGIN_seq_send_CB(), RCREND_read_exec_CB(), RCREND_read_this_CB(), RCREND_read_this_finalize_CB(), RCREND_save_many_CB(), RCREND_save_this_CB(), RCREND_script_CB(), RCREND_state_to_widgets(), REND_read_exec_CB(), REND_read_this_CB(), REND_read_this_finalize_CB(), REND_save_many_CB(), REND_save_this_CB(), REND_script_CB(), REND_state_to_widgets(), RT_tell_afni(), RT_worker(), TTRR_load_CB(), and TTRR_save_CB().
03848 {
03849 XBell( GLOBAL_library.dc->display , 100 ) ;
03850 return ;
03851 }
|
|
|
Definition at line 2427 of file afni_plugin.c. References BUFIT, DSET_HEADNAME, ENTRY, MCW_DCOV::label_ov, MRI_IMAGE::name, MCW_DC::ovc, PLUTO_find_dset(), RETURN, SESSTRAIL, THD_trailname(), and THD_zzprintf(). Referenced by COPY_main(), EDIT_main(), POWER_main(), PRIC_main(), REORDER_main(), STAVG_main(), VOLREG_main(), and write_results().
02428 {
02429 char * outbuf = NULL ;
02430 PLUGIN_option * opt ;
02431 PLUGIN_subvalue * sv ;
02432 int iopt , jsv ;
02433 char buf[256] ;
02434
02435 ENTRY("PLUTO_commandstring") ;
02436
02437 if( plint == NULL ) RETURN(outbuf) ;
02438
02439 BUFIT(plint->label) ;
02440 outbuf = THD_zzprintf( outbuf , "%s " , buf ) ; /* start with name */
02441
02442 if( plint->call_method != PLUGIN_CALL_VIA_MENU ||
02443 plint->option_count == 0 ||
02444 plint->option == NULL ) RETURN(outbuf) ;
02445
02446 /* loop over each option for the plugin */
02447
02448 for( iopt=0 ; iopt < plint->option_count ; iopt++ ){
02449 opt = plint->option[iopt] ;
02450 if( opt == NULL ) continue ; /* bad? */
02451 if( ! opt->chosen ) continue ; /* not used this time */
02452
02453 BUFIT(opt->label) ;
02454 outbuf = THD_zzprintf( outbuf , "{%s: " , buf ) ;
02455
02456 /* if this option is used, put a list of its subvalues in the string */
02457
02458 for( jsv=0 ; jsv < opt->subvalue_count ; jsv++ ){
02459 sv = &(opt->subvalue[jsv]) ;
02460 BUFIT(sv->label) ;
02461 outbuf = THD_zzprintf( outbuf , "%s=" , buf ) ;
02462 switch( sv->data_type ){
02463
02464 default:
02465 outbuf = THD_zzprintf( outbuf,"?" ) ; break ;
02466
02467 case PLUGIN_OVERLAY_COLOR_TYPE:{
02468 int * val = (int *) opt->callvalue[jsv] ;
02469 MCW_DC * dc = plint->im3d->dc ;
02470 if( val != NULL && *val >= 0 )
02471 outbuf = THD_zzprintf( outbuf,"%s",dc->ovc->label_ov[*val] );
02472 else
02473 outbuf = THD_zzprintf( outbuf,"?" ) ;
02474 }
02475 break ;
02476
02477 case PLUGIN_NUMBER_TYPE:{
02478 float * val = (float *) opt->callvalue[jsv] ;
02479 if( val != NULL ) outbuf = THD_zzprintf( outbuf,"%g",*val) ;
02480 else outbuf = THD_zzprintf( outbuf,"?" ) ;
02481 }
02482 break ;
02483
02484 case PLUGIN_STRING_TYPE:{
02485 char * val = (char *) opt->callvalue[jsv] ;
02486 if( val != NULL ){ BUFIT(val); outbuf = THD_zzprintf( outbuf,"%s",buf); }
02487 else outbuf = THD_zzprintf( outbuf,"?" ) ;
02488 }
02489 break ;
02490
02491 case PLUGIN_DATASET_LIST_TYPE:{
02492 MCW_idclist ** llist = (MCW_idclist **) opt->callvalue[jsv] ;
02493 int nd = PLUTO_idclist_count(*llist) ;
02494 outbuf = THD_zzprintf( outbuf , "[%d dsets]" , nd ) ;
02495 }
02496 break ;
02497
02498 case PLUGIN_DATASET_TYPE:{
02499 MCW_idcode * idc = (MCW_idcode *) opt->callvalue[jsv] ;
02500 THD_3dim_dataset * dset ;
02501
02502 dset = PLUTO_find_dset( idc ) ;
02503 if( dset != NULL ){
02504 char * qb = THD_trailname(DSET_HEADNAME(dset),SESSTRAIL+1) ;
02505 outbuf = THD_zzprintf( outbuf,"%s",qb) ;
02506 } else
02507 outbuf = THD_zzprintf( outbuf,"?" ) ;
02508 }
02509 break ;
02510
02511 case PLUGIN_TIMESERIES_TYPE:{
02512 MRI_IMAGE ** imp = (MRI_IMAGE **) opt->callvalue[jsv] ;
02513
02514 if( imp != NULL && *imp != NULL && (*imp)->name != NULL )
02515 outbuf = THD_zzprintf( outbuf,"%s",(*imp)->name ) ;
02516 else
02517 outbuf = THD_zzprintf( outbuf,"?" ) ;
02518 }
02519 break ;
02520
02521 } /* end of switch on subvalue type */
02522
02523 if( jsv < opt->subvalue_count - 1 )
02524 outbuf = THD_zzprintf( outbuf,"; ") ;
02525
02526 } /* end of loop on subvalues */
02527
02528 outbuf = THD_zzprintf( outbuf , "} " ) ; /* end of this option */
02529
02530 } /* end of loop on options */
02531
02532 RETURN(outbuf) ;
02533 }
|
|
||||||||||||
|
if desired, jump to this puppy in the viewer * Definition at line 3725 of file afni_plugin.c. References EDIT_full_copy(), ENTRY, and RETURN. Referenced by CLUST_main(), COPY_main(), DRAW_copy_dset(), EDIT_main(), HEMISUB_main(), IMREG_main(), and PRIC_main().
03726 {
03727 THD_3dim_dataset * new_dset ;
03728 int ival , ityp , nbytes , nvals ;
03729 void * new_brick , * old_brick ;
03730
03731 ENTRY("PLUTO_copy_dset") ;
03732
03733 new_dset = EDIT_full_copy( dset , new_prefix ) ;
03734 RETURN(new_dset) ;
03735 }
|
|
|
Definition at line 5285 of file afni_plugin.c. Referenced by new_RT_input().
05286 {
05287 #ifdef CLK_TCK
05288 struct tms ttt ;
05289
05290 (void) times( &ttt ) ;
05291 return ( (double) (ttt.tms_utime
05292 /* + ttt.tms_stime */
05293 )
05294 / (double) CLK_TCK ) ;
05295 #else
05296 return 0.0l ;
05297 #endif
05298 }
|
|
||||||||||||||||||||
|
Definition at line 2997 of file afni_plugin.c. References ISANAT, ISFUNC, and PLUGIN_dset_check().
02999 {
03000 int iv=0 ;
03001
03002 if( ISANAT(dset) )
03003 iv = PLUGIN_dset_check( anat_mask , ctrl_mask , dset ) ;
03004 else if( ISFUNC(dset) )
03005 iv = PLUGIN_dset_check( func_mask , ctrl_mask , dset ) ;
03006
03007 return iv ;
03008 }
|
|
|
Definition at line 4807 of file afni_plugin.c. References BADFIND, FIND_IDCODE, GLOBAL_library, MCW_IDSIZE, MCW_strncpy, AFNI_library_type::sslist, MCW_idcode::str, and THD_dset_in_sessionlist(). Referenced by process_NIML_AFNI_dataset(), process_NIML_AFNI_volumedata(), process_NIML_Node_ROI(), process_NIML_SUMA_ijk(), process_NIML_SUMA_ixyz(), and process_NIML_SUMA_node_normals().
04808 {
04809 MCW_idcode idcode ;
04810 THD_slist_find find ;
04811
04812 BADFIND(find) ;
04813 if( idc == NULL ) return find ;
04814 MCW_strncpy( idcode.str , idc , MCW_IDSIZE ) ;
04815 find = THD_dset_in_sessionlist( FIND_IDCODE , &idcode ,
04816 GLOBAL_library.sslist , -1 ) ;
04817 return find ;
04818 }
|
|
|
Definition at line 3742 of file afni_plugin.c. References PLUTO_dset_redisplay_mode(), and REDISPLAY_OPTIONAL. Referenced by DRAW_fillin_CB(), DRAW_into_dataset(), DRAW_quit_CB(), DRAW_receiver(), DRAW_ttatlas_CB(), NUD_doall_CB(), NUD_quit_CB(), NUD_update_base(), process_NIML_Node_ROI(), process_NIML_SUMA_ijk(), process_NIML_SUMA_ixyz(), process_NIML_SUMA_node_normals(), r_any_cb_apply(), r_any_cb_undo(), r_any_cb_unfill(), r_gr_cb_fill(), r_HL_cb_fill(), r_INT_cb_fill(), and r_wt_cb_fill().
03743 {
03744 PLUTO_dset_redisplay_mode( dset , REDISPLAY_OPTIONAL ) ;
03745 }
|
|
||||||||||||
|
Definition at line 3749 of file afni_plugin.c. References AFNI_imseq_clearstat(), AFNI_redisplay_func(), AFNI_reset_func_range(), AFNI_set_viewpoint(), Three_D_View::anat_now, Three_D_View::anat_voxwarp, AFNI_library_type::controllers, ENTRY, Three_D_View::fim_now, Three_D_View::fim_voxwarp, GLOBAL_library, IM3D_OPEN, ISVALID_DSET, MAX_CONTROLLERS, REDISPLAY_ALL, REDISPLAY_OPTIONAL, REDISPLAY_OVERLAY, and THD_warp::type. Referenced by PLUTO_dset_redisplay(), TAG_quit_CB(), and TAG_redraw().
03750 {
03751 Three_D_View * im3d ;
03752 int ii , amode , fmode ;
03753
03754 ENTRY("PLUTO_dset_redisplay_mode") ;
03755
03756 if( mode == REDISPLAY_OPTIONAL ){
03757 amode = REDISPLAY_ALL ;
03758 fmode = REDISPLAY_OVERLAY ;
03759 } else {
03760 amode = fmode = mode ;
03761 }
03762
03763 for( ii=0 ; ii < MAX_CONTROLLERS ; ii++ ){
03764 im3d = GLOBAL_library.controllers[ii] ;
03765 if( ! IM3D_OPEN(im3d) ) continue ;
03766
03767 if( ! ISVALID_DSET(dset) ){
03768 im3d->anat_voxwarp->type = ILLEGAL_TYPE ;
03769 im3d->fim_voxwarp->type = ILLEGAL_TYPE ;
03770 AFNI_reset_func_range( im3d ) ;
03771 AFNI_set_viewpoint( im3d , -1,-1,-1 , REDISPLAY_ALL ) ;
03772 } else if( im3d->anat_now == dset ){
03773 im3d->anat_voxwarp->type = ILLEGAL_TYPE ;
03774 AFNI_reset_func_range( im3d ) ;
03775 AFNI_imseq_clearstat( im3d ) ;
03776 AFNI_set_viewpoint( im3d , -1,-1,-1 , amode ) ;
03777 } else if( im3d->fim_now == dset ){
03778 im3d->fim_voxwarp->type = ILLEGAL_TYPE ;
03779 AFNI_reset_func_range( im3d ) ;
03780 AFNI_imseq_clearstat( im3d ) ;
03781 AFNI_redisplay_func( im3d ) ;
03782 }
03783 }
03784 EXRETURN ;
03785 }
|
|
|
Definition at line 5261 of file afni_plugin.c. Referenced by new_RT_input(), RT_start_child(), and RT_worker().
05262 {
05263 struct timeval new_tval ;
05264 struct timezone tzone ;
05265 static struct timeval old_tval ;
05266 static int first = 1 ;
05267
05268 gettimeofday( &new_tval , &tzone ) ;
05269
05270 if( first ){
05271 old_tval = new_tval ;
05272 first = 0 ;
05273 return 0.0 ;
05274 }
05275
05276 if( old_tval.tv_usec > new_tval.tv_usec ){
05277 new_tval.tv_usec += 1000000 ;
05278 new_tval.tv_sec -- ;
05279 }
05280
05281 return (double)( (new_tval.tv_sec - old_tval.tv_sec )
05282 +(new_tval.tv_usec - old_tval.tv_usec)*1.0e-6 ) ;
05283 }
|
|
|
|
Definition at line 4778 of file afni_plugin.c. References MCW_IDSIZE, MCW_strncpy, PLUTO_find_dset(), and MCW_idcode::str.
04779 {
04780 MCW_idcode idcode ;
04781 if( idc == NULL ) return NULL ;
04782 MCW_strncpy( idcode.str , idc , MCW_IDSIZE ) ;
04783 return PLUTO_find_dset( &idcode ) ;
04784 }
|
|
|
Definition at line 3792 of file afni_plugin.c. References AFNI_set_window_titles(), AFNI_library_type::controllers, ENTRY, GLOBAL_library, IM3D_OPEN, MAX_CONTROLLERS, and POPDOWN_strlist_chooser. Referenced by RENAME_main().
03793 {
03794 Three_D_View * im3d ;
03795 int ii ;
03796
03797 ENTRY("PLUTO_fixup_names") ;
03798
03799 POPDOWN_strlist_chooser ; /* get rid of any dataset chooser that is open */
03800
03801 for( ii=0 ; ii < MAX_CONTROLLERS ; ii++ ){
03802 im3d = GLOBAL_library.controllers[ii] ;
03803 if( IM3D_OPEN(im3d) )
03804 AFNI_set_window_titles( im3d ) ;
03805 }
03806 EXRETURN ;
03807 }
|
|
|
Definition at line 5086 of file afni_plugin.c. References AFNI_library_type::controllers, drive_MCW_imseq(), ENTRY, GLOBAL_library, IM3D_OPEN, isqDR_rebar, MAX_CONTROLLERS, Three_D_View::s123, Three_D_View::s231, and Three_D_View::s312. Referenced by AFNI_seq_send_CB().
05087 {
05088 Three_D_View * im3d ;
05089 int ii ;
05090
05091 ENTRY("PLUTO_force_rebar") ;
05092
05093 for( ii=0 ; ii < MAX_CONTROLLERS ; ii++ ){
05094 im3d = GLOBAL_library.controllers[ii] ;
05095 if( IM3D_OPEN(im3d) ){
05096 drive_MCW_imseq( im3d->s123 , isqDR_rebar , NULL ) ;
05097 drive_MCW_imseq( im3d->s231 , isqDR_rebar , NULL ) ;
05098 drive_MCW_imseq( im3d->s312 , isqDR_rebar , NULL ) ;
05099 }
05100 }
05101 EXRETURN ;
05102 }
|
|
|
Definition at line 5063 of file afni_plugin.c. References AFNI_set_viewpoint(), Three_D_View::anat_voxwarp, AFNI_library_type::controllers, ENTRY, Three_D_View::fim_voxwarp, GLOBAL_library, IM3D_OPEN, MAX_CONTROLLERS, REDISPLAY_ALL, and THD_warp::type. Referenced by AFNI_seq_send_CB(), CLUST_main(), CORD_main(), DSETN_main(), ENV_coorder(), and ENV_redisplay().
05064 {
05065 Three_D_View * im3d ;
05066 int ii ;
05067
05068 ENTRY("PLUTO_force_redisplay") ;
05069
05070 for( ii=0 ; ii < MAX_CONTROLLERS ; ii++ ){
05071 im3d = GLOBAL_library.controllers[ii] ;
05072 if( IM3D_OPEN(im3d) ){
05073 im3d->anat_voxwarp->type = /* 11 Jul 1997 */
05074 im3d->fim_voxwarp->type = ILLEGAL_TYPE ;
05075 AFNI_set_viewpoint( im3d , -1,-1,-1 , REDISPLAY_ALL ) ;
05076 }
05077 }
05078 EXRETURN ;
05079 }
|
|
||||||||||||||||||||||||||||||||||||||||
|
Definition at line 4836 of file afni_plugin.c. References AFNI_library_type::dc, MCW_DC::display, ENTRY, free, GLOBAL_library, malloc, plot_ts_lab(), and top. Referenced by BFIT_main(), CORREL_main(), and HISTO_main().
04839 {
04840 int ii , nx , ny,jj ;
04841 float * xar , * yar , * zar=NULL , ** yzar ;
04842 float dx ;
04843
04844 ENTRY("PLUTO_histoplot") ;
04845
04846 if( nbin < 2 || hist == NULL ) EXRETURN ;
04847 if( bot >= top ){ bot = 0.0 ; top = nbin ; }
04848
04849 nx = 2*(nbin+1) ;
04850 dx = (top-bot)/nbin ;
04851 xar = (float *) malloc(sizeof(float)*nx) ;
04852 yar = (float *) malloc(sizeof(float)*nx) ;
04853
04854 if( jist == NULL || njist < 0 ) njist = 0 ;
04855 ny = njist + 1 ;
04856
04857 yzar = (float **) malloc(sizeof(float *)*ny) ;
04858 yzar[0] = yar ;
04859 for( jj=0 ; jj < njist ; jj++ )
04860 yzar[jj+1] = (float *) malloc(sizeof(float)*nx) ;
04861
04862 xar[0] = bot ; yar[0] = 0.0 ;
04863 for( ii=0 ; ii < nbin ; ii++ ){
04864 xar[2*ii+1] = bot+ii*dx ; yar[2*ii+1] = (float) hist[ii] ;
04865 xar[2*ii+2] = bot+(ii+1)*dx ; yar[2*ii+2] = (float) hist[ii] ;
04866
04867 for( jj=0 ; jj < njist ; jj++ )
04868 yzar[jj+1][2*ii+1] = yzar[jj+1][2*ii+2] = (float) jist[jj][ii] ;
04869 }
04870 xar[2*nbin+1] = top ; yar[2*nbin+1] = 0.0 ;
04871 for( jj=0 ; jj < njist ; jj++ )
04872 yzar[jj+1][0] = yzar[jj+1][2*nbin+1] = 0.0 ;
04873
04874 plot_ts_lab( GLOBAL_library.dc->display ,
04875 nx , xar , ny , yzar ,
04876 xlab,ylab,tlab , NULL , NULL ) ;
04877
04878 for( jj=0 ; jj < njist ; jj++ ) free(yzar[jj+1]) ;
04879 free(yzar) ; free(xar) ; free(yar) ;
04880 EXRETURN ;
04881 }
|
|
||||||||||||
|
Definition at line 4395 of file afni_plugin.c. References ADDTO_IMARR, drive_MCW_imseq(), IMARR_COUNT, isqDR_newseq, isqDR_offwid, isqDR_onoffwid, isqDR_onwid, isqDR_opacitybut, isqDR_reimage, isqDR_zoombut, MRI_IMAGE::kind, and mri_copy(). Referenced by AFNI_faceup(), and RT_process_image().
04396 {
04397 PLUGIN_imseq * psq = (PLUGIN_imseq *) handle ;
04398 int ntot , ii ;
04399 MRI_IMAGE * cim ;
04400
04401 if( psq == NULL || psq->seq == NULL || im == NULL ) return ;
04402
04403 ntot = IMARR_COUNT(psq->imar) ;
04404 cim = mri_copy(im) ;
04405 if( cim->kind == MRI_rgb ) psq->rgb_count++ ;
04406 ADDTO_IMARR(psq->imar,cim) ;
04407
04408 drive_MCW_imseq( psq->seq , isqDR_newseq , psq ) ;
04409
04410 if( ntot == 1 )
04411 drive_MCW_imseq( psq->seq , isqDR_onoffwid , (XtPointer) isqDR_offwid ) ;
04412 else {
04413 drive_MCW_imseq( psq->seq , isqDR_onoffwid , (XtPointer) isqDR_onwid ) ;
04414 drive_MCW_imseq( psq->seq , isqDR_opacitybut , (XtPointer) 0 ) ; /* 07 Mar 2001 */
04415 drive_MCW_imseq( psq->seq , isqDR_zoombut , (XtPointer) 0 ) ; /* 12 Mar 2002 */
04416 }
04417
04418 drive_MCW_imseq( psq->seq , isqDR_reimage , (XtPointer)(ntot) ) ;
04419
04420 return ;
04421 }
|
|
|
Definition at line 4438 of file afni_plugin.c. References drive_MCW_imseq(), and isqDR_destroy.
04439 {
04440 PLUGIN_imseq * psq = (PLUGIN_imseq *) handle ;
04441
04442 if( psq == NULL ) return ;
04443 drive_MCW_imseq( psq->seq , isqDR_destroy , NULL ) ;
04444 return ;
04445 }
|
|
||||||||||||||||
|
Definition at line 4452 of file afni_plugin.c. References MCW_imseq_status::aux, GLOBAL_library, IMARR_COUNT, IMARR_SUBIMAGE, isqCR_getimage, isqCR_getoverlay, isqCR_getqimage, isqCR_getstatus, mri_copy(), mri_to_rgb(), myXtNew, MCW_imseq_status::num_series, MCW_imseq_status::num_total, MCW_imseq_status::parent, PLUTO_imseq_send_CB(), AFNI_library_type::registered_0D, AFNI_library_type::registered_2D, MCW_imseq_status::send_CB, MCW_imseq_status::slice_proj, MCW_imseq_status::transforms0D, and MCW_imseq_status::transforms2D. Referenced by PLUTO_imseq_popup().
04453 {
04454 PLUGIN_imseq * psq = (PLUGIN_imseq *) handle ;
04455
04456 int ntot = 0 ;
04457
04458 if( psq->imar != NULL ) ntot = IMARR_COUNT(psq->imar) ;
04459 if( ntot < 1 ) ntot = 1 ;
04460
04461 /*--- send control info ---*/
04462
04463 if( type == isqCR_getstatus ){
04464 MCW_imseq_status * stat = myXtNew( MCW_imseq_status ) ; /* will be free-d */
04465 /* when imseq is */
04466 /* destroyed */
04467 stat->num_total = ntot ;
04468 stat->num_series = ntot ;
04469 stat->send_CB = PLUTO_imseq_send_CB ;
04470 stat->parent = NULL ;
04471 stat->aux = NULL ;
04472
04473 stat->transforms0D = &(GLOBAL_library.registered_0D) ;
04474 stat->transforms2D = &(GLOBAL_library.registered_2D) ;
04475 stat->slice_proj = NULL ;
04476
04477 return (XtPointer) stat ;
04478 }
04479
04480 /*--- no overlay, never ---*/
04481
04482 if( type == isqCR_getoverlay ) return NULL ;
04483
04484 /*--- return a copy of an image
04485 (since the imseq will delete it when it is done) ---*/
04486
04487 if( type == isqCR_getimage || type == isqCR_getqimage ){
04488 MRI_IMAGE * im = NULL , * rim ;
04489
04490 if( psq->imar != NULL ){
04491 if( n < 0 ) n = 0 ; else if( n >= ntot ) n = ntot-1 ;
04492 rim = IMARR_SUBIMAGE(psq->imar,n) ;
04493 if( psq->rgb_count > 0 )
04494 im = mri_to_rgb( rim ) ;
04495 else
04496 im = mri_copy( rim ) ;
04497 }
04498 return (XtPointer) im ;
04499 }
04500
04501 return NULL ; /* should not occur, but who knows? */
04502 }
|
|
||||||||||||||||
|
Definition at line 4296 of file afni_plugin.c. References ADDTO_IMARR, FREE_IMARR, generic_func, INIT_IMARR, and PLUTO_imseq_popup(). Referenced by AFNI_faceup(), and RT_process_image().
04297 {
04298 MRI_IMARR * imar ;
04299 void * handle ;
04300
04301 if( im == NULL ) return NULL ;
04302 INIT_IMARR(imar) ;
04303 ADDTO_IMARR(imar,im) ;
04304 handle = PLUTO_imseq_popup( imar,kfunc,kdata ) ;
04305 FREE_IMARR(imar) ; /* not DESTROY_IMARR: we don't 'own' im */
04306 return handle ;
04307 }
|
|
||||||||||||||||
|
Definition at line 4309 of file afni_plugin.c. References ADDTO_IMARR, calloc, AFNI_library_type::dc, DESTROY_IMARR, drive_MCW_imseq(), free, generic_func, GLOBAL_library, IMARR_COUNT, IMARR_SUBIMAGE, INIT_IMARR, ISQ_DEFAULT_OPT, isqDR_clearstat, isqDR_offwid, isqDR_onoffwid, isqDR_onwid, isqDR_opacitybut, isqDR_options, isqDR_penbbox, isqDR_periodicmont, isqDR_realize, isqDR_title, isqDR_zoombut, MRI_IMAGE::kind, mri_copy(), open_MCW_imseq(), PLUTO_imseq_getim(), ISQ_options::save_one, and ISQ_options::save_pnm. Referenced by PLUTO_imseq_popim().
04310 {
04311 int ntot , ii ;
04312 MRI_IMAGE * im , * cim ;
04313 PLUGIN_imseq * psq ;
04314
04315 if( imar == NULL || IMARR_COUNT(imar) == 0 ) return NULL ;
04316
04317 ntot = IMARR_COUNT(imar) ;
04318
04319 psq = (PLUGIN_imseq *) calloc(1,sizeof(PLUGIN_imseq)) ;
04320 if( psq == NULL ) return NULL ;
04321
04322 INIT_IMARR(psq->imar) ;
04323 psq->kill_func = kfunc ;
04324 psq->kill_data = kdata ;
04325 psq->rgb_count = 0 ;
04326
04327 for( ii=0 ; ii < ntot ; ii++ ){
04328 im = IMARR_SUBIMAGE(imar,ii) ;
04329 if( im != NULL ){
04330 cim = mri_copy( im ) ;
04331 ADDTO_IMARR(psq->imar,cim) ;
04332 if( cim->kind == MRI_rgb ) psq->rgb_count++ ;
04333 }
04334 }
04335 ntot = IMARR_COUNT(psq->imar) ;
04336 if( ntot == 0 ){
04337 DESTROY_IMARR(psq->imar) ; free(psq) ; return NULL ;
04338 }
04339
04340 psq->seq = open_MCW_imseq( GLOBAL_library.dc , PLUTO_imseq_getim , psq ) ;
04341
04342 drive_MCW_imseq( psq->seq , isqDR_clearstat , NULL ) ;
04343
04344 { ISQ_options opt ; /* change some options from the defaults */
04345
04346 ISQ_DEFAULT_OPT(opt) ;
04347 opt.save_one = False ; /* change to Save:bkg */
04348 opt.save_pnm = False ;
04349 drive_MCW_imseq( psq->seq , isqDR_options , (XtPointer) &opt ) ;
04350 drive_MCW_imseq( psq->seq , isqDR_periodicmont , (XtPointer) 0 ) ;
04351 }
04352
04353 /* make it popup */
04354
04355 drive_MCW_imseq( psq->seq , isqDR_realize, NULL ) ;
04356 drive_MCW_imseq( psq->seq , isqDR_title, "Images" ) ;
04357
04358 if( ntot == 1 )
04359 drive_MCW_imseq( psq->seq , isqDR_onoffwid , (XtPointer) isqDR_offwid ) ;
04360 else {
04361 drive_MCW_imseq( psq->seq , isqDR_onoffwid , (XtPointer) isqDR_onwid ) ;
04362 drive_MCW_imseq( psq->seq , isqDR_opacitybut , (XtPointer) 0 ) ; /* 07 Mar 2001 */
04363 drive_MCW_imseq( psq->seq , isqDR_zoombut , (XtPointer) 0 ) ; /* 12 Mar 2002 */
04364 drive_MCW_imseq( psq->seq , isqDR_penbbox , (XtPointer) 0 ) ; /* 18 Jul 2003 */
04365 }
04366
04367 return (void *) psq ;
04368 }
|
|
||||||||||||||||
|
Definition at line 4383 of file afni_plugin.c. References generic_func. Referenced by cleanup_rtinp().
04384 {
04385 PLUGIN_imseq * psq = (PLUGIN_imseq *) handle ;
04386
04387 if( psq == NULL ) return ;
04388 psq->kill_func = kfunc ;
04389 psq->kill_data = kdata ;
04390 return ;
04391 }
|
|
||||||||||||
|
Definition at line 4372 of file afni_plugin.c. References drive_MCW_imseq(), and isqDR_title. Referenced by AFNI_faceup(), and RT_process_image().
04373 {
04374 PLUGIN_imseq * psq = (PLUGIN_imseq *) handle ;
04375
04376 if( psq == NULL || psq->seq == NULL || title == NULL ) return ;
04377 drive_MCW_imseq( psq->seq , isqDR_title, title ) ;
04378 return ;
04379 }
|
|
||||||||||||||||
|
Definition at line 4510 of file afni_plugin.c. References AFNI_CALL_VOID_1ARG, DESTROY_IMARR, free, isqCR_destroy, myXtFree, and ISQ_cbs::reason. Referenced by PLUTO_imseq_getim().
04511 {
04512 PLUGIN_imseq * psq = (PLUGIN_imseq *) handle ;
04513
04514 switch( cbs->reason ){
04515 case isqCR_destroy:{
04516 myXtFree(psq->seq) ;
04517 DESTROY_IMARR( psq->imar ) ;
04518
04519 if( psq->kill_func != NULL )
04520 #if 0
04521 psq->kill_func( psq->kill_data ) ;
04522 #else
04523 AFNI_CALL_VOID_1ARG( psq->kill_func , void *,psq->kill_data ) ;
04524 #endif
04525
04526 free(psq) ;
04527 }
04528 break ;
04529 }
04530 return ;
04531 }
|
|
||||||||||||
|
Definition at line 4425 of file afni_plugin.c. References drive_MCW_imseq(), IMARR_COUNT, and isqDR_reimage. Referenced by AFNI_faceup().
04426 {
04427 PLUGIN_imseq *psq = (PLUGIN_imseq *)handle ;
04428
04429 if( psq == NULL || psq->seq == NULL ||
04430 n < 0 || n >= IMARR_COUNT(psq->imar) ) return ;
04431
04432 drive_MCW_imseq( psq->seq , isqDR_reimage , (XtPointer)(n) ) ;
04433 return ;
04434 }
|
|
|
Definition at line 3923 of file afni_plugin.c. References ENTRY, and MCW_popdown_meter(). Referenced by Fourier_Filter_Driver(), and PLUG_action_CB().
03924 {
03925 ENTRY("PLUTO_popdown_meter") ;
03926
03927 if( plint == NULL || plint->wid == NULL ||
03928 plint->wid->shell == NULL || plint->wid->meter == NULL ) EXRETURN ;
03929
03930 MCW_popdown_meter( plint->wid->meter ) ;
03931 plint->wid->meter = NULL ;
03932 EXRETURN ;
03933 }
|
|
||||||||||||||||||||||||||||
|
Definition at line 3148 of file afni_plugin.c. References AFNI_CALL_VALU_2ARG, BEEPIT, THD_session::dsset, ENTRY, GLOBAL_library, int_func, LAST_VIEW_TYPE, make_PLUGIN_dataset_link(), MCW_choose_multi_strlist(), MCW_choose_strlist(), MCW_popup_message(), MCW_TIMER_KILL, MCW_USER_KILL, mcwCT_multi_mode, myXtFree, THD_session::num_dsset, THD_sessionlist::num_sess, num_user_dset, patch_PLUGIN_dataset_links(), PLUG_finalize_user_dset_CB(), POPDOWN_strlist_chooser, THD_sessionlist::ssar, AFNI_library_type::sslist, user_dset_cb_data, user_dset_cb_func, user_dset_link, user_dset_strlist, and XtRealloc. Referenced by TAG_copy_CB(), and TAG_dset_CB().
03151 {
03152 THD_session * ss ;
03153 THD_3dim_dataset * dset ;
03154 int iss_bot , iss_top , iss ;
03155 int id ;
03156 char label[64] ;
03157
03158 ENTRY("PLUTO_popup_dset_chooser") ;
03159
03160 if( w == NULL || cb_func == NULL ||
03161 vv < FIRST_VIEW_TYPE || vv > LAST_VIEW_TYPE ) EXRETURN ;
03162
03163 /** Scan sessions **/
03164
03165 iss_bot = 0 ;
03166 iss_top = GLOBAL_library.sslist->num_sess - 1 ;
03167 num_user_dset = 0 ;
03168
03169 for( iss=iss_bot ; iss <= iss_top ; iss++ ){
03170 ss = GLOBAL_library.sslist->ssar[iss] ;
03171
03172 /* check datasets from this session */
03173
03174 for( id=0 ; id < ss->num_dsset ; id++ ){
03175 dset = ss->dsset[id][vv] ; if( dset == NULL ) continue ;
03176 #if 0
03177 if( chk_func != NULL && chk_func(dset,cd) == 0 ) continue ; /* skip */
03178 #else
03179 { int cval=1 ;
03180 AFNI_CALL_VALU_2ARG( chk_func ,
03181 int,cval , THD_3dim_dataset *,dset, void *,cd ) ;
03182 if( cval == 0 ) continue ;
03183 }
03184 #endif
03185
03186 num_user_dset++ ;
03187 user_dset_link = (PLUGIN_dataset_link *)
03188 XtRealloc( (char *) user_dset_link ,
03189 sizeof(PLUGIN_dataset_link)*num_user_dset ) ;
03190
03191 make_PLUGIN_dataset_link( dset , user_dset_link + (num_user_dset-1) ) ;
03192
03193 } /* end of loop over datasets */
03194
03195 } /* end of loop over sessions */
03196
03197 /*--- if nothing was found that fits, then nothing further can happen ---*/
03198
03199 if( num_user_dset == 0 ){
03200 myXtFree(user_dset_link) ; BEEPIT ;
03201 MCW_popup_message( w ,
03202 "No datasets that meet this\ncriterion are available!" ,
03203 MCW_USER_KILL|MCW_TIMER_KILL ) ;
03204 EXRETURN ;
03205 }
03206
03207 /*--- make a popup chooser for the user to browse ---*/
03208
03209 POPDOWN_strlist_chooser ; /* death to the old regime */
03210
03211 /* fix the dataset titles to be more fun */
03212
03213 patch_PLUGIN_dataset_links( num_user_dset , user_dset_link ) ;
03214
03215 /* make an array of pointers to all the titles */
03216
03217 user_dset_strlist = (char **) XtRealloc( (char *) user_dset_strlist ,
03218 sizeof(char *) * num_user_dset ) ;
03219 for( id=0 ; id < num_user_dset ; id++ )
03220 user_dset_strlist[id] = user_dset_link[id].title ;
03221
03222 /* label for the top of the chooser */
03223
03224 sprintf( label , "AFNI Dataset from\nthe %s" , VIEW_typestr[vv] ) ;
03225
03226 /* and take it away, Goldie */
03227
03228 user_dset_cb_func = cb_func ;
03229 user_dset_cb_data = cd ;
03230
03231 if( multi ){
03232 MCW_choose_multi_strlist( w , label , mcwCT_multi_mode ,
03233 num_user_dset , NULL , user_dset_strlist ,
03234 PLUG_finalize_user_dset_CB , NULL ) ;
03235 } else {
03236 MCW_choose_strlist( w , label ,
03237 num_user_dset , -1 , user_dset_strlist ,
03238 PLUG_finalize_user_dset_CB , NULL ) ;
03239 }
03240
03241 EXRETURN ;
03242 }
|
|
||||||||||||
|
Definition at line 3960 of file afni_plugin.c. References AFNI_library_type::dc, drive_MCW_imseq(), ENTRY, GLOBAL_library, PLUGIN_impopper::im, isqDR_clearstat, isqDR_destroy, isqDR_offwid, isqDR_onoffwid, isqDR_opacitybut, isqDR_penbbox, isqDR_realize, isqDR_reimage, isqDR_title, isqDR_zoombut, mri_copy(), mri_free(), myXtNew, MRI_IMAGE::name, open_MCW_imseq(), PLUGIN_imseq_getim(), RETURN, and PLUGIN_impopper::seq. Referenced by AFNI_broutim_CB(), IM_main(), and TTget_recv().
03961 {
03962 PLUGIN_impopper * imp = (PLUGIN_impopper *) handle ;
03963
03964 ENTRY("PLUTO_popup_image") ;
03965
03966 /*-- input image is NULL ==> popdown, if applicable --*/
03967
03968 if( im == NULL ){
03969 if( imp != NULL )
03970 drive_MCW_imseq( imp->seq , isqDR_destroy , NULL ) ;
03971
03972 RETURN((void *) imp) ;
03973 }
03974
03975 /*-- input = no popper handle ==> create one --*/
03976
03977 if( imp == NULL ){
03978 imp = myXtNew(PLUGIN_impopper) ;
03979 imp->seq = NULL ; imp->im = NULL ;
03980 }
03981
03982 /*-- input = non-null image ==> replace image --*/
03983
03984 mri_free( imp->im ) ; /* toss old copy */
03985 imp->im = mri_copy( im ) ; /* make new copy */
03986
03987 /*-- input = inactive popper handle ==> activate it --*/
03988
03989 if( imp->seq == NULL ){
03990 imp->seq = open_MCW_imseq( GLOBAL_library.dc ,
03991 PLUGIN_imseq_getim , (XtPointer) imp ) ;
03992
03993 drive_MCW_imseq( imp->seq , isqDR_realize, NULL ) ;
03994 drive_MCW_imseq( imp->seq , isqDR_onoffwid , (XtPointer) isqDR_offwid ) ;
03995
03996 drive_MCW_imseq( imp->seq , isqDR_opacitybut , (XtPointer) 0 ) ; /* 07 Mar 2001 */
03997 drive_MCW_imseq( imp->seq , isqDR_zoombut , (XtPointer) 0 ) ; /* 12 Mar 2002 */
03998 drive_MCW_imseq( imp->seq , isqDR_penbbox , (XtPointer) 0 ) ; /* 18 Jul 2003 */
03999 }
04000
04001 /*-- display image at last --*/
04002
04003 if( im->name != NULL && strlen(im->name) > 0 )
04004 drive_MCW_imseq( imp->seq , isqDR_title, im->name ) ;
04005
04006 drive_MCW_imseq( imp->seq , isqDR_clearstat , NULL ) ;
04007 drive_MCW_imseq( imp->seq , isqDR_reimage , (XtPointer) 0 ) ;
04008
04009 RETURN((void *) imp) ;
04010 }
|
|
|
Definition at line 3912 of file afni_plugin.c. References ENTRY, MCW_popup_meter(), and METER_TOP_WIDE. Referenced by avg_epochs(), DELAY_tsfuncV2(), EXTRACT_tsfunc(), Fourier_Filter_Driver(), IMREG_main(), PERMTEST_compute(), POWER_main(), PRIC_main(), REORDER_main(), STATS_tsfunc(), STAVG_main(), and VOLREG_main().
03913 {
03914 ENTRY("PLUTO_popup_meter") ;
03915
03916 if( plint == NULL || plint->wid == NULL ||
03917 plint->wid->shell == NULL || plint->wid->meter != NULL ) EXRETURN ;
03918
03919 plint->wid->meter = MCW_popup_meter( plint->wid->shell , METER_TOP_WIDE ) ;
03920 EXRETURN ;
03921 }
|
|
||||||||||||||||
|
Definition at line 3813 of file afni_plugin.c. References AFNI_find_open_controller(), ENTRY, IM3D_OPEN, MCW_popup_message(), new_MCW_textwin(), TEXT_READONLY, AFNI_widget_set::top_shell, and Three_D_View::vwid. Referenced by DSET2_dset_recv(), and DSETN_dset_recv().
03814 {
03815 Widget w = NULL ;
03816 Three_D_View * im3d ;
03817 int ii ;
03818
03819 ENTRY("PLUTO_popup_worker") ;
03820
03821 if( mesg == NULL || strlen(mesg) == 0 ) EXRETURN ;
03822
03823 /* find a widget to popup next to */
03824
03825 if( plint->wid != NULL && plint->wid->label != NULL ){
03826 w = plint->wid->label ;
03827 } else {
03828 im3d = plint->im3d ;
03829 if( !IM3D_OPEN(im3d) ) im3d = AFNI_find_open_controller() ;
03830 w = im3d->vwid->top_shell ;
03831 }
03832
03833 if( w != NULL ){
03834 if( flag >= 0 )
03835 (void) MCW_popup_message( w , mesg , flag ) ;
03836 else
03837 (void) new_MCW_textwin( w , mesg , TEXT_READONLY ) ;
03838 } else {
03839 fprintf(stderr,"\n%s\a\n",mesg) ;
03840 }
03841
03842 EXRETURN ;
03843 }
|
|
|
Definition at line 1167 of file afni_plugin.c. References THD_slist_find::dset, ENTRY, FIND_PREFIX, GLOBAL_library, RETURN, AFNI_library_type::sslist, and THD_dset_in_sessionlist(). Referenced by CLUST_main(), COPY_main(), DELAY_main(), DRAW_saveas_finalize_CB(), DUP_main(), EDIT_opts(), EXTRACT_main(), Fourier_Main(), HEMISUB_main(), IMREG_main(), MASKAVE_main(), PERMTEST_main(), PLUTO_4D_to_typed_fbuc(), PLUTO_4D_to_typed_fim(), PLUTO_4D_to_typed_fith(), POWER_main(), PRIC_main(), process_args(), RENAME_main(), REORDER_main(), RT_fim_recurse(), RT_start_dataset(), STATS_main(), STAVG_main(), THRESH_main(), VOLREG_main(), and ZPAD_main().
01168 {
01169 int ll , ii ;
01170 THD_slist_find find ;
01171
01172 ENTRY("PLUTO_prefix_ok") ;
01173
01174 /*--- check the string itself for OK-osity ---*/
01175
01176 if( str == NULL ) RETURN(0) ;
01177 ll = strlen( str ) ; if( ll == 0 ) RETURN(0) ;
01178
01179 for( ii=0 ; ii < ll ; ii++ )
01180 if( iscntrl(str[ii]) || isspace(str[ii]) ||
01181 str[ii] == '/' || str[ii] == ';' ||
01182 str[ii] == '*' || str[ii] == '?' ||
01183 str[ii] == '&' || str[ii] == '|' ||
01184 str[ii] == '"' || str[ii] == '>' ||
01185 str[ii] == '<' || str[ii] == '\'' ||
01186 str[ii] == '[' || str[ii] == ']' ) RETURN(0) ;
01187
01188 /*--- now see if the prefix already exists in AFNI ---*/
01189
01190 find = THD_dset_in_sessionlist( FIND_PREFIX , str ,
01191 GLOBAL_library.sslist , -1 ) ;
01192
01193 RETURN(find.dset == NULL) ;
01194 }
|
|
||||||||||||||||
|
Definition at line 5236 of file afni_plugin.c. References mytimeout::cd, ENTRY, mytimeout::func, generic_func, myXtNew, PLUG_dotimeout_CB(), and PLUTO_Xt_appcontext. Referenced by PLUGIN_init().
05237 {
05238 mytimeout * myt ;
05239
05240 ENTRY("PLUTO_register_timeout") ;
05241
05242 if( func == NULL ){
05243 fprintf(stderr,"PLUTO_register_timeout: func=NULL on entry!\n") ;
05244 EXRETURN ;
05245 }
05246
05247 if( msec < 0 ) msec = 0 ;
05248
05249 myt = myXtNew(mytimeout) ;
05250 myt->func = func ;
05251 myt->cd = cd ;
05252
05253 (void) XtAppAddTimeOut( PLUTO_Xt_appcontext , msec ,
05254 PLUG_dotimeout_CB , (XtPointer) myt ) ;
05255
05256 EXRETURN ;
05257 }
|
|
||||||||||||
|
Definition at line 4760 of file afni_plugin.c. References AFNI_add_timeseries(), ENTRY, mri_add_name(), and mri_to_float(). Referenced by AFNI_finalize_read_1D_CB(), GRA_refstore_choose_CB(), MASKAVE_main(), PRIC_main(), TSGEN_main(), and VOLREG_main().
04761 {
04762 MRI_IMAGE * qim ;
04763
04764 ENTRY("PLUTO_register_timeseries") ;
04765
04766 if( tsim != NULL ){
04767 qim = mri_to_float( tsim ) ; /* a copy */
04768 mri_add_name( cname , qim ) ; /* the name */
04769 AFNI_add_timeseries( qim ) ; /* give it to AFNI */
04770 }
04771 EXRETURN ;
04772 }
|
|
||||||||||||
|
Definition at line 5112 of file afni_plugin.c. References datap, ENTRY, malloc, num_workp, PLUG_workprocess(), PLUTO_Xt_appcontext, realloc, workp, and wpid. Referenced by AFNI_init_niml(), AFNI_init_plugouts(), main(), PLUGIN_init(), and RT_startup().
05113 {
05114 ENTRY("PLUTO_register_workproc") ;
05115
05116 if( func == NULL ){
05117 fprintf(stderr,"PLUTO_register_workproc: func=NULL on entry!\n") ;
05118 EXRETURN ;
05119 }
05120
05121 if( num_workp == 0 ){
05122 workp = (XtWorkProc *) malloc( sizeof(XtWorkProc) ) ;
05123 datap = (XtPointer *) malloc( sizeof(XtPointer) ) ;
05124 wpid = XtAppAddWorkProc( PLUTO_Xt_appcontext, PLUG_workprocess, NULL ) ;
05125 #ifdef WPDEBUG
05126 fprintf(stderr,"PLUTO_register_workproc: wpid = %x\n",(int)wpid) ;
05127 #endif
05128 } else {
05129 workp = (XtWorkProc *) realloc( workp, sizeof(XtWorkProc)*(num_workp+1) ) ;
05130 datap = (XtPointer*) realloc( datap, sizeof(XtPointer) *(num_workp+1) ) ;
05131 }
05132
05133 workp[num_workp] = func ;
05134 datap[num_workp] = data ;
05135 num_workp++ ;
05136
05137 #ifdef WPDEBUG
05138 fprintf(stderr,"PLUTO_register_workproc: have %d workprocs\n",num_workp) ;
05139 #endif
05140
05141 EXRETURN ;
05142 }
|
|
|
Definition at line 5144 of file afni_plugin.c. References datap, ENTRY, free, num_workp, workp, and wpid.
05145 {
05146 int ii , ngood ;
05147
05148 ENTRY("PLUTO_remove_workproc") ;
05149
05150 if( func == NULL || num_workp == 0 ){
05151 fprintf(stderr,"*** PLUTO_remove_workproc: illegal parameters!\n") ;
05152 EXRETURN ;
05153 }
05154
05155 for( ii=0 ; ii < num_workp ; ii++ ){
05156 if( func == workp[ii] ) workp[ii] = NULL ;
05157 }
05158
05159 for( ii=0,ngood=0 ; ii < num_workp ; ii++ )
05160 if( workp[ii] != NULL ) ngood++ ;
05161
05162 if( ngood == 0 ){
05163 #ifdef WPDEBUG
05164 fprintf(stderr,"PLUTO_remove_workproc: No workprocs left\n") ;
05165 #endif
05166 XtRemoveWorkProc( wpid ) ;
05167 free(workp) ; workp = NULL ; free(datap) ; datap = NULL ;
05168 num_workp = 0 ;
05169 } else {
05170 #ifdef WPDEBUG
05171 fprintf(stderr,"PLUTO_remove_workproc: %d workprocs left\n",ngood) ;
05172 #endif
05173 }
05174
05175 EXRETURN ;
05176 }
|
|
||||||||||||
|
Definition at line 4596 of file afni_plugin.c. References AFNI_VERBOSE. Referenced by PLUGIN_init().
04597 {
04598 if( plint == NULL || str == NULL || !AFNI_VERBOSE ) return ;
04599 printf("\n%15.15s= %s" , plint->label , str ) ; fflush(stdout) ;
04600 return ;
04601 }
|
|
||||||||||||||||||||||||||||||||||||
|
Definition at line 4912 of file afni_plugin.c. References a, AFNI_numenv(), create_memplot_surely(), AFNI_library_type::dc, MCW_DC::display, ENTRY, get_active_memplot(), GLOBAL_library, memplot_to_topshell(), mp, p10(), plotpak_line(), plotpak_periml(), plotpak_pwritf(), plotpak_set(), set_color_memplot(), set_thick_memplot(), and STGOOD. Referenced by SCAT_main().
04915 {
04916 int ii , np , nnax,mmax , nnay,mmay ;
04917 float xbot,xtop , ybot,ytop , pbot,ptop ,
04918 xobot,xotop,yobot,yotop , xa,xb,ya,yb , dx,dy ;
04919 float *xar , *yar , *zar=NULL , **yzar ;
04920 float dsq , rx,ry ;
04921 char str[32] ;
04922 MEM_plotdata * mp ;
04923
04924 ENTRY("PLUTO_scatterplot") ;
04925
04926 if( npt < 2 || x == NULL || y == NULL ) EXRETURN ;
04927
04928 /* find range of data */
04929
04930 xbot = xtop = x[0] ; ybot = ytop = y[0] ;
04931 for( ii=1 ; ii < npt ; ii++ ){
04932 if( x[ii] < xbot ) xbot = x[ii] ;
04933 else if( x[ii] > xtop ) xtop = x[ii] ;
04934
04935 if( y[ii] < ybot ) ybot = y[ii] ;
04936 else if( y[ii] > ytop ) ytop = y[ii] ;
04937 }
04938 if( xbot >= xtop || ybot >= ytop ){
04939 fprintf(stderr,"*** Data has no range in PLUTO_scatterplot!\n\a");
04940 EXRETURN ;
04941 }
04942
04943 /*-- push range of x outwards --*/
04944
04945 pbot = p10(xbot) ; ptop = p10(xtop) ; if( ptop < pbot ) ptop = pbot ;
04946 if( ptop != 0.0 ){
04947 np = (xtop-xbot) / ptop + 0.5 ;
04948 switch( np ){
04949 case 1: ptop *= 0.1 ; break ;
04950 case 2: ptop *= 0.2 ; break ;
04951 case 3: ptop *= 0.25 ; break ;
04952 case 4:
04953 case 5: ptop *= 0.5 ; break ;
04954 }
04955 xbot = floor( xbot/ptop ) * ptop ;
04956 xtop = ceil( xtop/ptop ) * ptop ;
04957 nnax = floor( (xtop-xbot) / ptop + 0.5 ) ;
04958 mmax = (nnax < 3) ? 10
04959 : (nnax < 6) ? 5 : 2 ;
04960 } else {
04961 nnax = 1 ; mmax = 10 ;
04962 }
04963
04964 /*-- push range of y outwards --*/
04965
04966 pbot = p10(ybot) ; ptop = p10(ytop) ; if( ptop < pbot ) ptop = pbot ;
04967 if( ptop != 0.0 ){
04968 np = (ytop-ybot) / ptop + 0.5 ;
04969 switch( np ){
04970 case 1: ptop *= 0.1 ; break ;
04971 case 2: ptop *= 0.2 ; break ;
04972 case 3: ptop *= 0.25 ; break ;
04973 case 4:
04974 case 5: ptop *= 0.5 ; break ;
04975 }
04976 ybot = floor( ybot/ptop ) * ptop ;
04977 ytop = ceil( ytop/ptop ) * ptop ;
04978 nnay = floor( (ytop-ybot) / ptop + 0.5 ) ;
04979 mmay = (nnay < 3) ? 10
04980 : (nnay < 6) ? 5 : 2 ;
04981 } else {
04982 nnay = 1 ; mmay = 10 ;
04983 }
04984
04985 /*-- setup to plot --*/
04986
04987 create_memplot_surely( "ScatPlot" , 1.3 ) ;
04988 set_thick_memplot( 0.0 ) ;
04989
04990 /*-- plot labels, if any --*/
04991
04992 xobot = 0.15 ; xotop = 1.27 ; /* set objective size of plot */
04993 yobot = 0.1 ; yotop = 0.95 ;
04994
04995 if( STGOOD(tlab) ){ yotop -= 0.02 ; yobot -= 0.01 ; }
04996
04997 /* x-axis label? */
04998
04999 set_color_memplot( 0.0 , 0.0 , 0.0 ) ;
05000 if( STGOOD(xlab) )
05001 plotpak_pwritf( 0.5*(xobot+xotop) , yobot-0.06 , xlab , 16 , 0 , 0 ) ;
05002
05003 /* y-axis label? */
05004
05005 set_color_memplot( 0.0 , 0.0 , 0.0 ) ;
05006 if( STGOOD(ylab) )
05007 plotpak_pwritf( xobot-0.12 , 0.5*(yobot+yotop) , ylab , 16 , 90 , 0 ) ;
05008
05009 /* label at top? */
05010
05011 set_color_memplot( 0.0 , 0.0 , 0.0 ) ;
05012 if( STGOOD(tlab) )
05013 plotpak_pwritf( xobot+0.01 , yotop+0.01 , tlab , 18 , 0 , -2 ) ;
05014
05015 /* plot axes */
05016
05017 set_color_memplot( 0.0 , 0.0 , 0.0 ) ;
05018 plotpak_set( xobot,xotop , yobot,yotop , xbot,xtop , ybot,ytop , 1 ) ;
05019 plotpak_periml( nnax,mmax , nnay,mmay ) ;
05020
05021 /* plot data */
05022
05023 #define DSQ 0.001
05024
05025 dsq = AFNI_numenv( "AFNI_SCATPLOT_FRAC" ) ; /* 15 Feb 2005 */
05026 if( dsq <= 0.0 || dsq >= 0.01 ) dsq = DSQ ;
05027
05028 dx = dsq*(xtop-xbot) ;
05029 dy = dsq*(ytop-ybot) * (xotop-xobot)/(yotop-yobot) ;
05030 for( ii=0 ; ii < npt ; ii++ ){
05031
05032 #if 0
05033 rx = (drand48()-0.5)*dx ;
05034 ry = (drand48()-0.5)*dy ;
05035 #else
05036 rx = ry = 0.0 ;
05037 #endif
05038 xa = x[ii]+rx - dx ; xb = x[ii]+rx + dx ;
05039 ya = y[ii]+ry - dy ; yb = y[ii]+ry + dy ;
05040
05041 plotpak_line( xa,ya , xa,yb ) ;
05042 plotpak_line( xa,yb , xb,yb ) ;
05043 plotpak_line( xb,yb , xb,ya ) ;
05044 plotpak_line( xb,ya , xa,ya ) ;
05045 }
05046
05047 if( a != 0.0f || b != 0.0f ){ /* 02 May 2005 */
05048 set_color_memplot( 0.8 , 0.0 , 0.0 ) ;
05049 plotpak_line( xbot,a*xbot+b , xtop,a*xtop+b ) ;
05050 }
05051
05052 mp = get_active_memplot() ;
05053
05054 (void) memplot_to_topshell( GLOBAL_library.dc->display , mp , NULL ) ;
05055
05056 EXRETURN ;
05057 }
|
|
||||||||||||
|
Definition at line 654 of file afni_plugin.c. References ENTRY, MCW_hotcolor(), and MCW_strncpy. Referenced by PLUG_read_plugin(), and PLUGIN_init().
00655 {
00656 ENTRY("PLUTO_set_butcolor") ;
00657 if( plint == NULL || sq == NULL || sq[0] == '\0' ) EXRETURN ;
00658 if( strncmp(sq,"hot",3) == 0 ) sq = MCW_hotcolor(NULL) ;
00659 MCW_strncpy( plint->butcolor , sq , PLUGIN_STRING_SIZE ) ;
00660 EXRETURN ;
00661 }
|
|
||||||||||||
|
Definition at line 3935 of file afni_plugin.c. References ENTRY, and MCW_set_meter(). Referenced by avg_epochs(), DELAY_tsfuncV2(), EXTRACT_tsfunc(), Fourier_Filter_Driver(), IMREG_main(), PERMTEST_compute(), POWER_main(), PRIC_main(), REORDER_main(), STATS_tsfunc(), STAVG_main(), and VOLREG_main().
03936 {
03937 ENTRY("PLUTO_set_meter") ;
03938
03939 if( plint == NULL || plint->wid == NULL ||
03940 plint->wid->shell == NULL || plint->wid->meter == NULL ) EXRETURN ;
03941
03942 MCW_set_meter( plint->wid->meter , percent ) ;
03943 EXRETURN ;
03944 }
|
|
||||||||||||||||
|
Set the "Run+Keep" and "Run+Close" labels for a plugin. [04 Nov 2003] Definition at line 629 of file afni_plugin.c. References MCW_strncpy. Referenced by ENV_init(), F1D_init(), F2D_init(), and PLUGIN_init().
00630 {
00631 if( plint == NULL ) return ;
00632 if( rlab != NULL ) MCW_strncpy( plint->run_label , rlab, PLUGIN_LABEL_SIZE );
00633 if( dlab != NULL ) MCW_strncpy( plint->doit_label, dlab, PLUGIN_LABEL_SIZE );
00634 return ;
00635 }
|
|
||||||||||||
|
Definition at line 642 of file afni_plugin.c. References ENTRY, and MCW_strncpy. Referenced by CORREL_init(), and PLUGIN_init().
00643 {
00644 ENTRY("PLUTO_set_sequence") ;
00645 if( plint == NULL || sq == NULL || sq[0] == '\0' ) EXRETURN ;
00646 MCW_strncpy( plint->seqcode , sq , PLUGIN_STRING_SIZE ) ;
00647 EXRETURN ;
00648 }
|
|
||||||||||||
|
Definition at line 3893 of file afni_plugin.c. References ENTRY, and myXtNew. Referenced by DRAW_main(), NOTES_main(), NUD_main(), RCREND_main(), REND_main(), and TAG_main().
03894 {
03895 ENTRY("PLUTO_set_topshell") ;
03896
03897 if( plint == NULL ||
03898 plint->wid != NULL ||
03899 ts == (Widget) 0 ||
03900 plint->call_method != PLUGIN_CALL_IMMEDIATELY ) EXRETURN ;
03901
03902 plint->wid = myXtNew(PLUGIN_widgets) ;
03903 plint->wid->shell = ts ;
03904 plint->wid->meter = NULL ;
03905 EXRETURN ;
03906 }
|
|
||||||||||||||||
|
Definition at line 4691 of file afni_plugin.c. Referenced by PLUGIN_init().
04692 {
04693 if ( !vopt || !maps || !hist ) return -1;
04694
04695 *vopt = (void *)&gv2s_plug_opts;
04696 *maps = gv2s_map_names;
04697 *hist = gv2s_history;
04698
04699 return 0;
04700 }
|
|
||||||||||||||||
|
Definition at line 3876 of file afni_plugin.c. References PLUTO_strncmp(). Referenced by BFIT_main(), COMP_main(), COPY_main(), DC_main(), DELAY_main(), ENV_compressor(), ENV_init(), ENV_main(), EXP0D_main(), EXTRACT_main(), F1D_main(), F2D_main(), HEMISUB_main(), L1F_main(), LSQ_main(), PLUGIN_init(), POWER_main(), process_args(), PV2S_process_args(), REORDER_main(), RT_main(), STATS_main(), STAVG_main(), TTget_main(), VOLREG_main(), WA_main(), and ZPAD_main().
03877 {
03878 int ii ;
03879
03880 if( num <= 0 || source == NULL || target == NULL ) return -1 ;
03881
03882 for( ii=0 ; ii < num ; ii++ )
03883 if( PLUTO_strncmp(target,source[ii],PLUGIN_STRING_SIZE) == 0 ) return ii ;
03884
03885 return -1 ;
03886 }
|
|
||||||||||||||||
|
Definition at line 3857 of file afni_plugin.c. Referenced by PLUTO_string_index().
03858 {
03859 int ii ;
03860
03861 if( aa == bb ) return 0 ; /* special cases */
03862 if( aa == NULL || bb == NULL ) return 1 ;
03863
03864 for( ii=0 ; ii < nn ; ii++,aa++,bb++ ){
03865 if( *aa == '\0' && *bb == '\0' ) return 0 ; /* got to end all same! */
03866 if( *aa == '\0' || *bb == '\0' ) return 1 ; /* premature end of one */
03867 if( isspace(*aa) || isspace(*bb) ) continue ; /* don't compare blanks */
03868 if( toupper(*aa) != toupper(*bb) ) return 1 ; /* case insensitive */
03869 }
03870
03871 return 0 ; /* finished max # chars */
03872 }
|
|
|
set the popup meter to be nothing at all right now * Definition at line 2032 of file afni_plugin.c. References ENTRY. Referenced by RT_main().
02033 {
02034 int kk ;
02035
02036 ENTRY("PLUTO_turnoff_options") ;
02037
02038 /**** sanity checks ****/
02039
02040 if( plint == NULL || plint->wid == NULL ||
02041 plint->call_method == PLUGIN_CALL_IMMEDIATELY ) EXRETURN ;
02042
02043 /**** loop over options */
02044
02045 for( kk=0 ; kk < plint->option_count ; kk++ ){
02046 if( !plint->option[kk]->mandatory )
02047 XmToggleButtonSetState( plint->wid->opwid[kk]->toggle, False,True ) ;
02048 }
02049
02050 EXRETURN ;
02051 }
|
|
||||||||||||
|
Definition at line 4673 of file afni_plugin.c.
04674 {
04675 if( av != NULL && str != NULL )
04676 XmTextFieldSetString( av->textf , str ) ;
04677 return ;
04678 }
|
Variable Documentation
|
|
Definition at line 5107 of file afni_plugin.c. Referenced by PLUG_workprocess(), PLUTO_register_workproc(), and PLUTO_remove_workproc(). |
|
|
put library routines here that must be loaded * Definition at line 4710 of file afni_plugin.c. Referenced by MCW_onen_i_estel_edain(). |
|
|
Definition at line 3140 of file afni_plugin.c. Referenced by PLUTO_popup_dset_chooser(). |
|
|
Definition at line 5105 of file afni_plugin.c. Referenced by PLUG_workprocess(), PLUTO_register_workproc(), and PLUTO_remove_workproc(). |
|
|
Initial value: {
{ PLUG_quit_label, PLUG_action_CB, NULL, PLUG_quit_help,"Close window" , 0 },
{ PLUG_run_label , PLUG_action_CB, NULL, PLUG_run_help ,"Run plugin and keep window" , 0 },
{ PLUG_doit_label, PLUG_action_CB, NULL, PLUG_doit_help,"Run plugin and close window", 1 },
{ PLUG_help_label, PLUG_action_CB, NULL, PLUG_help_help,"Get help for plugin" , 0 }
}Definition at line 1214 of file afni_plugin.c. |
|
|
Definition at line 3146 of file afni_plugin.c. Referenced by PLUG_finalize_user_dset_CB(), and PLUTO_popup_dset_chooser(). |
|
|
Definition at line 3145 of file afni_plugin.c. Referenced by PLUG_finalize_user_dset_CB(), and PLUTO_popup_dset_chooser(). |
|
|
Definition at line 3144 of file afni_plugin.c. |
|
|
Definition at line 3141 of file afni_plugin.c. Referenced by PLUG_finalize_user_dset_CB(), and PLUTO_popup_dset_chooser(). |
|
|
Definition at line 3143 of file afni_plugin.c. Referenced by PLUG_finalize_user_dset_CB(). |
|
|
Definition at line 3142 of file afni_plugin.c. Referenced by PLUTO_popup_dset_chooser(). |
|
|
Definition at line 5106 of file afni_plugin.c. Referenced by PLUG_workprocess(), PLUTO_register_workproc(), and PLUTO_remove_workproc(). |
|
|
Definition at line 5108 of file afni_plugin.c. Referenced by PLUTO_register_workproc(), and PLUTO_remove_workproc(). |