2011/3/3 jpka <jo...@kvidex.ru>: >> There's no need to write a callback; default one will refresh the >> GtkTreeView widget to include your changes to the model. >> Please have a look at the attached patch. > > Thanks for help! > Both codes work well in case of initial drawing radiobuttons instead of > string, and result looks good. > But in case of user input, when i apply this patch, i fall into several > problems. > 1. If i use patch 'as is', editing of grid values not work: > my 'cb_edited_mm_or_mil' assumes PCB->CurrentGrid already changed to > current before call: > it uses PCB->Grid[PCB->CurrentGrid] = ..... > , but when i use patch, editing value in table not switch PCB- >>CurrentGrid: it was tied to treeview row selection before and was done > before editing (it was when i place cursor on needed row), but now it's > not true: when i select row but not touch toggle button, PCB->CurrentGrid > not updates. > And anyway i prefer use radiobuttons here only for display but not for > callback. > BUT...
Okay, I missed that part :) I would decouple changing the grid from editing the grid settings. The editing callbacks can query the path in the model and update PCB->Grid directly. The ultimate (but also most time consuming) would be to provide a custom implementation of GtkTreeModel that would map operations on the PCB->Grid and vice-versa. > 2. If i try to restore my previous state when PCB->CurrentGrid updates > not here > g_signal_connect(renderer, "toggled", (GCallback) cb_toggled_active, > treeview); > but here > g_signal_connect(select, "changed", G_CALLBACK(on_changed), select); > (i.e. even work using cursor keys in treeview to select row) > then i again and again fall into same hair-tearing problem as before this > patch: > ... > Sorry for this long text. Each signal handler has its required signature. This can be found in the GTK docs. Same for the function passed to gtk_tree_view_foreach() etc. >> BTW2 - >> why do you store grid mm and mil spacings as strings?? > > Sorry i don't precisely understand you. The only place for strings in my > code is in display/editing routines. Spacing is > double PCB->Grid[PCB->CurrentGrid]; > int PCB->GridStep[PCB->CurrentGrid]; > regardless of mil or mm mode. I was asking why in the model you keep strings and not ints/floats? -- Krzysztof Kościuszkiewicz "Simplicity is the ultimate sophistication" -- Leonardo da Vinci _______________________________________________ geda-user mailing list geda-user@moria.seul.org http://www.seul.org/cgi-bin/mailman/listinfo/geda-user