/* * Popup menu */ void psnd_int1d_popup(MBLOCK *mblk) { int i, ok; G_POPUP_CHILDINFO ci[20]; int id; char *label; POPUP_INFO *popinf = mblk->popinf + POP_INT1D; if (popinf->visible) return; popinf->visible = TRUE; if (!popinf->cont_id) { int cont_id; if (!mblk->int1dinf->left) { mblk->int1dinf->left = 1; mblk->int1dinf->right = DAT->isize; } mblk->int1dinf->left = max(mblk->int1dinf->left, 1); mblk->int1dinf->left = min(mblk->int1dinf->left, DAT->isize); mblk->int1dinf->right = max(mblk->int1dinf->right, 1); mblk->int1dinf->right = min(mblk->int1dinf->right, DAT->isize); cont_id = g_popup_container_open(mblk->info->win_id, "Integrate 1D", G_POPUP_KEEP|G_POPUP_SINGLEBUTTON); popinf->cont_id = cont_id; label = psnd_sprintf_temp("%d", mblk->int1dinf->left); id=0; g_popup_init_info(&(ci[id])); ci[id].type = G_CHILD_TEXTBOX; ci[id].id = INT1D_LEFT; ci[id].title = "Left "; ci[id].func = integrate1d_callback; ci[id].userdata = (void*) mblk; ci[id].item_count = 20; ci[id].items_visible = 10; ci[id].label = label; ci[id].horizontal = TRUE; g_popup_add_child(cont_id, &(ci[id])); label = psnd_sprintf_temp("%d", mblk->int1dinf->right); id++; g_popup_init_info(&(ci[id])); ci[id].type = G_CHILD_TEXTBOX; ci[id].id = INT1D_RIGHT; ci[id].title = "Right "; ci[id].func = integrate1d_callback; ci[id].userdata = (void*) mblk; ci[id].item_count = 20; ci[id].items_visible = 10; ci[id].label = label; ci[id].horizontal = TRUE; g_popup_add_child(cont_id, &(ci[id])); id++; g_popup_init_info(&(ci[id])); ci[id].type = G_CHILD_PUSHBUTTON; ci[id].id = INT1D_MOUSE; ci[id].label = "Grab Mouse Button 1"; ci[id].func = integrate1d_callback; ci[id].userdata = (void*) mblk; g_popup_add_child(cont_id, &(ci[id])); id++; g_popup_init_info(&(ci[id])); ci[id].type = G_CHILD_PUSHBUTTON; ci[id].id = INT1D_INTEGRAL; ci[id].label = "Calc Integral"; ci[id].func = integrate1d_callback; ci[id].userdata = (void*) mblk; g_popup_add_child(cont_id, &(ci[id])); /* id++; g_popup_init_info(&(ci[id])); ci[id].type = G_CHILD_PUSHBUTTON; ci[id].id = INT1D_NOISE; ci[id].label = "Calc Noise"; ci[id].func = integrate1d_callback; ci[id].userdata = (void*) mblk; g_popup_add_child(cont_id, &(ci[id])); */ id++; g_popup_init_info(&(ci[id])); ci[id].type = G_CHILD_PUSHBUTTON; ci[id].id = INT1D_PRINT; ci[id].label = "Print Integrals"; ci[id].func = integrate1d_callback; ci[id].userdata = (void*) mblk; g_popup_add_child(cont_id, &(ci[id])); id++; g_popup_init_info(&(ci[id])); ci[id].type = G_CHILD_PUSHBUTTON; ci[id].id = INT1D_WRITE; ci[id].label = "Write to disk"; ci[id].func = integrate1d_callback; ci[id].userdata = (void*) mblk; g_popup_add_child(cont_id, &(ci[id])); id++; g_popup_init_info(&(ci[id])); ci[id].type = G_CHILD_PUSHBUTTON; ci[id].id = INT1D_RESET; ci[id].label = "Clear list"; ci[id].func = integrate1d_callback; ci[id].userdata = (void*) mblk; g_popup_add_child(cont_id, &(ci[id])); id++; g_popup_init_info(&(ci[id])); ci[id].type = G_CHILD_OK; ci[id].func = integrate1d_callback; ci[id].userdata = (void*) mblk; g_popup_add_child(cont_id, &(ci[id])); id++; g_popup_init_info(&(ci[id])); ci[id].type = G_CHILD_CANCEL; ci[id].func = integrate1d_callback; ci[id].userdata = (void*) mblk; g_popup_add_child(cont_id, &(ci[id])); } mblk->int1dinf->left = max(mblk->int1dinf->left, 1); mblk->int1dinf->left = min(mblk->int1dinf->left, DAT->isize); mblk->int1dinf->right = max(mblk->int1dinf->right, 1); mblk->int1dinf->right = min(mblk->int1dinf->right, DAT->isize); g_popup_container_show(popinf->cont_id) ; }
static void select_block_and_item(MBLOCK *mblk) { static G_POPUP_CHILDINFO ci[10]; static int i,id, cont_id, ok; static char *data[MAX_BLOCK] = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12" }; int colornamecount; char **arraydata; assert(mblk->info->colorblock_id <= 12); arraydata = psnd_get_colornames(&colornamecount); cont_id = g_popup_container_open(mblk->info->colorwin_id, "Select array", G_POPUP_WAIT); id = 0; g_popup_init_info(&(ci[id])); ci[id].type = G_CHILD_PANEL; ci[id].item = 1; ci[id].title = "Select Item"; ci[id].horizontal = 0; ci[id].frame = TRUE; g_popup_add_child(cont_id, &(ci[id])); id++; g_popup_init_info(&(ci[id])); ci[id].type = G_CHILD_OPTIONMENU; ci[id].id = COL_BLOCK; ci[id].item_count = mblk->info->max_block; ci[id].label = "Block"; ci[id].data = data; ci[id].item = mblk->info->colorblock_id; ci[id].horizontal = TRUE; ci[id].frame = TRUE; g_popup_add_child(cont_id, &(ci[id])); id++; g_popup_init_info(&(ci[id])); ci[id].type = G_CHILD_OPTIONMENU; ci[id].id = COL_ARRAY; ci[id].item_count = colornamecount; ci[id].label = "item"; ci[id].data = arraydata; ci[id].item = mblk->info->colorarray_id; ci[id].horizontal = TRUE; ci[id].frame = TRUE; g_popup_add_child(cont_id, &(ci[id])); ok = g_popup_container_show(cont_id); if (ok) for (i=0;i<=id;i++) { int color; switch (ci[i].id) { case COL_BLOCK: mblk->info->colorblock_id = ci[i].item; break; case COL_ARRAY: mblk->info->colorarray_id = ci[i].item; break; } color = psnd_get_colorvalue(mblk,mblk->info->colorarray_id, mblk->info->colorblock_id); show_color(mblk, color); } }