Esempio n. 1
0
/*============================================================================*\
 Function:	ProUtilMenuIntValueSelect
 Purpose:       Create menu/Select int value/Close menu
 Return:	PRO_TK_NO_ERROR if value selected, or PRO_TK_GENERAL_ERROR 
\*============================================================================*/
ProError ProUtilMenuIntValueSelect(
    ProUtilMenuButtons *buttons_array, /* In : The menu button array */
    int *output_value)
{
    ProError err;
    int i, n_buttons, menu_id;
    wchar_t **w_menu_buttons;
    
    for (n_buttons = 0; buttons_array[n_buttons].button[0]!='\0'; n_buttons++);

    if (n_buttons <= 1)
	return PRO_TK_NO_ERROR;
	
    ProUtilMenuStringsAlloc(&w_menu_buttons);
    for (i=1; i<n_buttons; i++)
	ProUtilMenuStringsStrAdd(&w_menu_buttons, buttons_array[i].button);
    ProMenuFromStringsRegister ( buttons_array[0].button, NULL, w_menu_buttons,
	NULL, NULL, &menu_id);
    ProUtilMenuStringsFree(&w_menu_buttons);
    for (i=0; i<n_buttons; i++)
    {
	if (buttons_array[i].special_flag & 
	    (TEST_CALL_PRO_MENU_DELETE | TEST_CALL_PRO_MENU_HOLD))
	    ProMenubuttonActionSet(buttons_array[0].button, 
		buttons_array[i].button, (ProMenubuttonAction)
		(buttons_array[i].special_flag & TEST_CALL_PRO_MENU_DELETE ?
		ProMenuDelete : ProMenuHold), NULL, 0);
	else
	    ProMenubuttonActionSet(buttons_array[0].button, 
		buttons_array[i].button, (ProMenubuttonAction)
		ProUtilMenubuttonDeleteWithStatus, NULL, 
		buttons_array[i].value);
    }
    for (i=1; i<n_buttons; i++)
    {
	if (buttons_array[i].special_flag & TEST_CALL_PRO_MENUBUTTON_DELETE)
	    ProMenubuttonDelete(buttons_array[0].button, 
		buttons_array[i].button, &menu_id); 
    }
    err = ProMenuCreate( PROMENUTYPE_MAIN, buttons_array[0].button, &menu_id );
    for (i=1; i<n_buttons; i++)
    {
	if (buttons_array[i].special_flag &
	    (TEST_CALL_PRO_MENU_ACTIVATE | TEST_CALL_PRO_MENU_DEACTIVATE))
	    ProUtilMenubuttonActivate(buttons_array[0].button, 
		buttons_array[i].button, 
		buttons_array[i].special_flag & TEST_CALL_PRO_MENU_ACTIVATE);
	if (buttons_array[i].special_flag &
	    (TEST_CALL_PRO_MENU_HIGHLIGHT | TEST_CALL_PRO_MENU_UNHIGHLIGHT))
	    ProUtilMenubuttonActivate(buttons_array[0].button, 
		buttons_array[i].button, 
		buttons_array[i].special_flag & TEST_CALL_PRO_MENU_HIGHLIGHT);
    }
    err = ProMenuProcess(buttons_array[0].button, output_value);
    return (err);
}
Esempio n. 2
0
// 显示快捷菜单
void ShowShortCutMenu()
{
	/*if (!QuickCheckValidLicense(SMART_PROFESSIONAL))
		return;*/

	static char *compoundmenu[] = {"Smart3DCoating_ShortCut", "ShortCut_Create", "ShortCut_Edit", "ShortCut_Export", ""};
	int nMenuid;
	ProError status =ProCompoundmenuCreate(compoundmenu, &nMenuid);
	if (status == PRO_TK_NO_ERROR)
	{
		ProMenuProcess(compoundmenu[0], &nMenuid);
	}
}
Esempio n. 3
0
/*============================================================================*\
 Function:	ProUtilMenuStringManySelect
 Purpose:       Select many string from menu with submenu Select All/Unsell All
\*============================================================================*/
ProError ProUtilMenuStringManySelect(
    char    *menu_name,		   /* In : Menu name */
    wchar_t **w_menu_buttons,	   /* In : Menu buttons */
    int	    **output_array,	   /* Out: ProArray of numbers of selected 
					   strings, use ProArrayFree to free
					   memory */
    int *p_n_sel)		   /* Out: Number of selected components */
{
    int i, n_but, n_sel, menu_id, action;
    ProError err, ret_status = PRO_TK_USER_ABORT;
    int *toggle_array;
    MenuToggleInfo toggle_info;
    ProCharName name;
    wchar_t **w_menus;

    for(n_but=0; w_menu_buttons[n_but][0] != '\0'; n_but++);
    err = ProArrayAlloc(n_but, sizeof(int), 1, (ProArray*)&toggle_array);
    
    toggle_info.w_menu_buttons = w_menu_buttons;
    toggle_info.button_status = toggle_array;
    toggle_info.n_buttons = n_but;
    toggle_info.menu_name = menu_name;

    err = ProMenuFromStringsRegister ( menu_name, NULL, 
	w_menu_buttons, NULL, NULL, &menu_id);
    for (i=0; i<n_but; i++)
    {
	toggle_array[i] = 0;
	ProWstringToString(name, w_menu_buttons[i]);
	err = ProMenubuttonActionSet(menu_name, name,
	    (ProMenubuttonAction)ProUtilMenuToggleOne, &toggle_info, i);
    }   
    err = ProMenubuttonActionSet(menu_name, menu_name,
	(ProMenubuttonAction)ProMenuDelete, NULL, 0);
    err = ProMenuModeSet(menu_name, PROMENUMODE_DATA);
    err = ProMenuDatamodeSet(menu_name, PRO_B_TRUE );
    err = ProMenuCreate(PROMENUTYPE_MAIN, menu_name, &menu_id);

    err = ProUtilMenuStringsAlloc(&w_menus);
    err = ProUtilMenuStringsStrAdd(&w_menus, (char *)"Select All");
    err = ProUtilMenuStringsStrAdd(&w_menus, (char *)"Unsel All");
    err = ProUtilMenuStringsStrAdd(&w_menus, (char *)"Done Sel");
    err = ProUtilMenuStringsStrAdd(&w_menus, (char *)"Quit Sel");
    
    ProMenuFromStringsRegister ( (char *)"TkMenuUtilSelect", NULL, w_menus,
	NULL, NULL, &menu_id);
    err = ProMenubuttonActionSet((char *)"TkMenuUtilSelect", (char *)"Select All",
	(ProMenubuttonAction)ProUtilMenuToggleDone, &toggle_info, SELECT_ALL);
    err = ProMenubuttonActionSet((char *)"TkMenuUtilSelect", (char *)"Unsel All", 
	(ProMenubuttonAction)ProUtilMenuToggleDone, &toggle_info, UNSEL_ALL);
    err = ProMenubuttonActionSet((char *)"TkMenuUtilSelect", (char *)"Done Sel", 
	(ProMenubuttonAction)ProUtilMenuToggleDone, &toggle_info, DONE_SEL);
    err = ProMenubuttonActionSet((char *)"TkMenuUtilSelect", (char *)"Quit Sel",
	(ProMenubuttonAction)ProUtilMenuToggleDone, &toggle_info, QUIT_SEL);
    err = ProMenubuttonActionSet((char *)"TkMenuUtilSelect", (char *)"TkMenuUtilSelect", 
	(ProMenubuttonAction)ProUtilMenuToggleDone, &toggle_info, QUIT_SEL);

    err = ProMenuCreate(PROMENUTYPE_SUB, (char *)"TkMenuUtilSelect", &menu_id);
    err = ProMenuProcess((char *)"TkMenuUtilSelect", &action);
    if(err == PRO_TK_NO_ERROR && action == DONE_SEL)
    {
        err = ProArrayAlloc(0, sizeof(int), 1, (ProArray*)output_array);
	n_sel = 0;
	for (i=0; i<n_but; i++)
	    if (toggle_array[i])
	    {
		ProArrayObjectAdd((ProArray*)output_array, PRO_VALUE_UNUSED,
		    1, &i);
		n_sel++;
	    }
	if (n_sel>0)
	{
	    *p_n_sel = n_sel;
	    ret_status = PRO_TK_NO_ERROR;
	}
	else
	    err = ProArrayFree((ProArray*)output_array);
    }
    err = ProArrayFree((ProArray*)&toggle_array);
    return (ret_status);
}