Example #1
0
/*
 * 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) ;
}
Example #2
0
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);
    }

}