[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
Re: gEDA-user: Please test new grids for GTK PCB
> ... But as a
> starting point I have changed the string 'Yes' to these radio-buttons.
> It is done by the following changes in src/gui-config.c:
and
> 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...
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:
i can't write procedure to change anything in treeview.
the simplest way i try is place this piece of code
gtk_tree_model_foreach (gtk_tree_view_get_model (view),
refresh_gridcurrent,
path); - it work from this original place in patch
into my code:
void on_changed {
...
g_print("Row number %i selected.\n", i); - its work.
...
gtk_tree_model_foreach (...) - its not work from here.
}
When i try to turn it to work, in good case i get tons of GTK-CRITICALS,
and in worst case program shuts off silently.
I dont have enough skills to write procedure headers like this
void anything (GtkWidget *widget, gpointer treeview)
or
void anything (GtkWidget *widget, GtkCellRendererToggle *cell,
gchar *path_string,
GtkTreeView *view)
i can't imagine how to write this headers,
only i able is blind trial-and-errors, i do it now but still no success.
Sorry for this long text.
> BTW - selecting a grid that does have 0 spacing segfaults pcb.
Thank you! My regression. Fixed now:
diff -urw pcb.git.test/src/hid/gtk/gtkhid-gdk.c pcb/src/hid/gtk/gtkhid-gdk.c
--- pcb.git.test/src/hid/gtk/gtkhid-gdk.c 2011-02-28 13:38:50.000000000 +0300
+++ pcb/src/hid/gtk/gtkhid-gdk.c 2011-03-03 11:11:51.000000000 +0300
@@ -132,6 +132,8 @@
if (d==0) { // static grid without any check to min distance, zooming, etc,
// made by request
+ if (g==0)
+ return;
gridmode = 1;
pcbgrid = g;
} else {
> 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.
_______________________________________________
geda-user mailing list
geda-user@xxxxxxxxxxxxxx
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user