Hallo!
Ich hab ein kleines Problem mit der Erstellung von UI Styler Dialogen. Dort, wo man mit KF verwoehnt wurde, wird es mit Ufunc richtig uebel sch... umstaendlich und mittlerweile hab ich keinen Ueberblick mehr.
Ich habe einen Dialog gebastelt mit dem ich Componenten auswaehlen kann und der Dialog mit den Tag zurueck gibt. Funktioniert auch. Aber nun will ich noch eine Single Selected List einbauen, in dem man dann sieht wie die Componente zB. heisst oder aehnliches. Genauer gesagt werden es 2 Listen, bin gerade ein Replacement Program am schreiben. In dem einen Fenster soll der alte Namen stehen, und in dem anderen der neue Name. Soweit so gut. Aber keine Ahnung wie ich den Tag des alten teils, geschweige denn den Tag des neuen Teils in den Dialog bekommen soll.
Was ich braeuchte ist ein weg von der Main Funktion in die Callback funktion reinzukommen, oer alles in der Callback funktion zu schreiben und dann die Werte in die Main funktion zu uebernehmen. Waere mir eigentlich noch egal. Aber keine Ahnung wie.
hier ist mal der Code den ich bis jetzt gebastelt hab, Tipps und Tricks sind natuerlich immer gern willkommen.
Torsten
#define TS_SINGLE_LIST_0 ("LIST_0")
static int get_comp(int n_sel, tag_p_t sel_objs, int n_dsel, tag_p_t dsel,
void *user_data, UF_UI_selection_p_t select)
{
tag_p_t
sel_comp;
sel_comp = (tag_p_t)user_data;
*sel_comp = sel_objs[0];
return UF_UI_CB_EXIT_DIALOG;
}
/*ARGSUSED*/
static int TS_SINGLE_sel_cb(int dialog_id, void *client_data,
UF_STYLER_item_value_type_p_t callback_data)
{
int
ii;
UF_STYLER_item_value_type_t
value;
char
test[3][133] = {"test1","test2","test3"};
UF_STYLER_item_value_type_t
sel_data;
UF_UI_mask_t
mask = { UF_component_type, 0, 0 };
sel_data.item_id = UF_STYLER_DIALOG_INDEX;
sel_data.item_attr = UF_STYLER_SELECTION;
UF_CALL(UF_STYLER_ask_value(dialog_id, &sel_data));
UF_CALL(UF_UI_set_sel_mask(sel_data.value.selection,
UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC, 1, &mask));
UF_CALL(UF_UI_set_sel_procs(sel_data.value.selection, NULL, get_comp,
client_data));
for (ii=0;ii<3;ii++)
{
value.item_attr = UF_STYLER_LIST_INSERT;
value.item_id = TS_SINGLE_LIST_0;
value.subitem_index = UF_STYLER_NO_SUB_INDEX;
value.indicator = UF_STYLER_STRING_VALUE;
value.count=3;
value.value.string = test[ii];
UF_CALL(UF_STYLER_set_value(dialog_id, &value));
}
return (UF_UI_CB_CONTINUE_DIALOG);
}
static void do_it(void)
{
int
resp;
tag_t
component = NULL_TAG;
char
msg[133];
UF_STYLER_callback_info_t
TS_SINGLE_cbs[3] = {
{UF_STYLER_DIALOG_INDEX, UF_STYLER_CONSTRUCTOR_CB , 0, TS_SINGLE_sel_cb},
{UF_STYLER_NULL_OBJECT, UF_STYLER_NO_CB, 0, 0 } };
while (!UF_CALL(UF_STYLER_create_dialog("ts_single", TS_SINGLE_cbs, 2, &component, &resp)) && (resp!=UF_UI_CANCEL))
{
sprintf(msg,"output %d\n", component);
WRITE(msg);
};
}
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP