RE: 3000 toggle buttons in a table?

2006-04-11 Thread Sailaxmi korada
Thanks Yeti, for all your advices. I could implement my 3168 toggle buttons
successfully, except that Editable cells don't serve the purpose. Anyways
thanks once again for all the support rendered by you.

Have a great day

Laxmi



___
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list


RE: 3000 toggle buttons in a table?

2006-04-10 Thread Sailaxmi korada
Hi,
  I've designed my application like this

Address(label)  1-16 radio buttons(represent the binary value) hex value

Data of 178 rows is filled in the above structure. But now when I'm
selecting a radio button, all the radio buttons in the same column of 178
rows are getting selected. Can anyone help me out

Laxmi

-Original Message-
From: David Necas (Yeti) [mailto:[EMAIL PROTECTED] 
Sent: Thursday, April 06, 2006 1:00 PM
To: Sailaxmi korada
Cc: gtk-app-devel-list@gnome.org
Subject: Re: 3000 toggle buttons in a table?

On Thu, Apr 06, 2006 at 12:24:18PM +0530, Sailaxmi korada  wrote:
   I was trying to fulfill my requirement of 3000 toggle buttons, with list
 store...that was just fantasticBut I'm held up with another
 requirement...it is like this...
 The 16 toggle buttons in a row represent a hex value(they are binary
 representations). So whenever I toggle the checkbox, the corresponding hex
 value shall be displayed in a text entry and vice versa. I mean if I'm
 entering a hex value in text entry then the corresponding toggles shall be
 selected/deselected. Is it possible to achieve this using list storeif
 yes, can you suggest me an efficient way of doing it...

The bit checkbuttons and the hex representation are
visualizations of the same single list store column, namely
the integer holding the value (if they are not, you tree
model is misdesigned and you should fix it), so if you
update the value in the list store both representations are
updated.

Yeti


--
That's enough.




___
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list


Re: 3000 toggle buttons in a table?

2006-04-10 Thread David Necas (Yeti)
On Mon, Apr 10, 2006 at 12:40:12PM +0530, Sailaxmi korada  wrote:
 
 Address(label)  1-16 radio buttons(represent the binary value) hex value
 
 Data of 178 rows is filled in the above structure. But now when I'm
 selecting a radio button, all the radio buttons in the same column of 178
 rows are getting selected. Can anyone help me out

Do you really want *radiobuttons* i.e. only one bit being
always set?  Anyway, this can be hardly answered without the
code (moreover your description is pretty unclear -- do you
describe the model, the view, or what?).

You have a complete working code sample which sets bits in
some integers using treeview checkbuttons, I sent it in my
first reply (it only misses the hex value representation
part), so compare it with your code.

Yeti


--
That's enough.
___
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list


RE: 3000 toggle buttons in a table?

2006-04-10 Thread Sailaxmi korada
--)
  {
renderer = gtk_cell_renderer_toggle_new();

column = gtk_tree_view_column_new();

g_object_set_data(G_OBJECT(renderer), id, GUINT_TO_POINTER(ctr));

int temp=GPOINTER_TO_UINT(g_object_get_data(G_OBJECT(renderer),
id));
   gtk_cell_renderer_toggle_set_radio(
GTK_CELL_RENDERER_TOGGLE(renderer),
TRUE);

 g_signal_connect(renderer, toggled,
 G_CALLBACK(toggle_cell), store);

 if(strnum[i] == '1')

 g_object_set(G_OBJECT(renderer), active, TRUE, NULL);
 
}//end of for i

 
column = gtk_tree_view_column_new();

text = gtk_cell_renderer_text_new();
 
gtk_list_store_set (store, iter,18,0, -1);

  }
  gtk_tree_view_append_column(treeView, column);

  selection = gtk_tree_view_get_selection(treeView);

  gtk_tree_selection_set_mode(selection, GTK_SELECTION_NONE);

  gtk_container_add (GTK_CONTAINER(scroll), treeWidget);

  gtk_widget_show_all(window);

  gtk_main();

  return 0;
}

Pl. note that I'm new to GTK programming, so if you find some blunders pl.
excuse me.

Regards
Laxmi

-Original Message-
From: David Necas (Yeti) [mailto:[EMAIL PROTECTED] 
Sent: Monday, April 10, 2006 12:49 PM
To: Sailaxmi korada
Cc: gtk-app-devel-list@gnome.org
Subject: Re: 3000 toggle buttons in a table?

On Mon, Apr 10, 2006 at 12:40:12PM +0530, Sailaxmi korada  wrote:
 
 Address(label)  1-16 radio buttons(represent the binary value) hex value
 
 Data of 178 rows is filled in the above structure. But now when I'm
 selecting a radio button, all the radio buttons in the same column of 178
 rows are getting selected. Can anyone help me out

Do you really want *radiobuttons* i.e. only one bit being
always set?  Anyway, this can be hardly answered without the
code (moreover your description is pretty unclear -- do you
describe the model, the view, or what?).

You have a complete working code sample which sets bits in
some integers using treeview checkbuttons, I sent it in my
first reply (it only misses the hex value representation
part), so compare it with your code.

Yeti


--
That's enough.




___
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list


Re: 3000 toggle buttons in a table?

2006-04-10 Thread David Necas (Yeti)

You do not set the renderer active property anywhere
except in the toggle_cell callback.  Therefore it always
renders *all* the cells in the last state (active or
inactive) some cell was toggled to.  You need either a cell
data func or to use gtk_tree_view_column_new_with_attributes()
to tell the renderer in which state it should render the
cells.  The active propery is not set in any automagic
way, *something* must set it before the cell is rendered.

It seems all my previous advices were vain too.  The tree
model should have exactly two columns: G_TYPE_STRING (the
label) and G_TYPE_UINT16 (the value), and you should use
a cell data function to set renderer properties to display
the guint16 value once as toggles, once as hex, in different
columns.

In fact, everything that the code sample I sent needs to add
to do *exactly* what you want is s/64/16/g, a hex-value
column (in the view, *not* in the model) + its cell data
function + its cell-edited callback.  Of course, I can
write the missing bits too -- it would be shorter than this
mail -- but that would not teach you fishing.

Please read the Gtk+ Tree View Tutorial to learn the
concepts first.

Yeti


--
That's enough.
___
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list


RE: 3000 toggle buttons in a table?

2006-04-10 Thread Sai Korada
Thanks for the suggession, and certainly by the end of this week I shall do it 
perfectly. Afterall its matter of some time to understand the depth of any new 
language or packageright???
 
thanks once again for the support
 
regards
laxmi
 
 
---
With your talent you may reach the top of the success, but it is your attitude 
that keeps you there



From: David Necas (Yeti) [mailto:[EMAIL PROTECTED]
Sent: Mon 4/10/2006 10:05 AM
To: Sailaxmi korada
Cc: gtk-app-devel-list@gnome.org
Subject: Re: 3000 toggle buttons in a table?




You do not set the renderer active property anywhere
except in the toggle_cell callback.  Therefore it always
renders *all* the cells in the last state (active or
inactive) some cell was toggled to.  You need either a cell
data func or to use gtk_tree_view_column_new_with_attributes()
to tell the renderer in which state it should render the
cells.  The active propery is not set in any automagic
way, *something* must set it before the cell is rendered.

It seems all my previous advices were vain too.  The tree
model should have exactly two columns: G_TYPE_STRING (the
label) and G_TYPE_UINT16 (the value), and you should use
a cell data function to set renderer properties to display
the guint16 value once as toggles, once as hex, in different
columns.

In fact, everything that the code sample I sent needs to add
to do *exactly* what you want is s/64/16/g, a hex-value
column (in the view, *not* in the model) + its cell data
function + its cell-edited callback.  Of course, I can
write the missing bits too -- it would be shorter than this
mail -- but that would not teach you fishing.

Please read the Gtk+ Tree View Tutorial to learn the
concepts first.

Yeti


--
That's enough.



___
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list


RE: 3000 toggle buttons in a table?

2006-04-06 Thread Sailaxmi korada
Hi,
  I was trying to fulfill my requirement of 3000 toggle buttons, with list
store...that was just fantasticBut I'm held up with another
requirement...it is like this...
The 16 toggle buttons in a row represent a hex value(they are binary
representations). So whenever I toggle the checkbox, the corresponding hex
value shall be displayed in a text entry and vice versa. I mean if I'm
entering a hex value in text entry then the corresponding toggles shall be
selected/deselected. Is it possible to achieve this using list storeif
yes, can you suggest me an efficient way of doing it...


Thanks and Regards
Laxmi


-Original Message-
From: David Necas (Yeti) [mailto:[EMAIL PROTECTED] 
Sent: Tuesday, April 04, 2006 2:10 PM
To: Sailaxmi korada
Cc: gtk-app-devel-list@gnome.org
Subject: Re: 3000 toggle buttons in a table?

On Tue, Apr 04, 2006 at 01:47:10PM +0530, Sailaxmi korada  wrote:
 Why I said Tree view doesn't fit my requirement was, in a row I've to
 display label, 15 toggle buttons, text entry...
 Like this I've to fill the widgets in 178 rows. Displaying label is fine
 with List store...
 But how can I manage with text entry??

What about an editable column?  If it has to look exactly
like a classic text entry, then this is a problem, but if
any editable text field will do, treeview can do that
easily.

Yeti


--
That's enough.




___
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list


Re: 3000 toggle buttons in a table?

2006-04-06 Thread David Necas (Yeti)
On Thu, Apr 06, 2006 at 12:24:18PM +0530, Sailaxmi korada  wrote:
   I was trying to fulfill my requirement of 3000 toggle buttons, with list
 store...that was just fantasticBut I'm held up with another
 requirement...it is like this...
 The 16 toggle buttons in a row represent a hex value(they are binary
 representations). So whenever I toggle the checkbox, the corresponding hex
 value shall be displayed in a text entry and vice versa. I mean if I'm
 entering a hex value in text entry then the corresponding toggles shall be
 selected/deselected. Is it possible to achieve this using list storeif
 yes, can you suggest me an efficient way of doing it...

The bit checkbuttons and the hex representation are
visualizations of the same single list store column, namely
the integer holding the value (if they are not, you tree
model is misdesigned and you should fix it), so if you
update the value in the list store both representations are
updated.

Yeti


--
That's enough.
___
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list


Re: 3000 toggle buttons in a table?

2006-04-04 Thread David Necas (Yeti)
On Tue, Apr 04, 2006 at 10:55:08AM +0530, Sailaxmi korada  wrote:
 
 Perhaps, my application requires 16 toggle buttons to be placed in each row,
 that represent a hex value. So I need not write 3000 callbacks for them,
 instead with one call back I can manage to calculate the hex value, based on
 the position of toggle button. Tree view doesn't fit my requirement.

The treeview example I sent does exactly that -- the toggle
buttons represents bits in some integers (64bit in that
case).  So why it does not fit?

Yeti


--
That's enough.
___
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list


RE: 3000 toggle buttons in a table?

2006-04-04 Thread Sailaxmi korada
That was great David, it was doing the task in fraction of seconds...
Why I said Tree view doesn't fit my requirement was, in a row I've to
display label, 15 toggle buttons, text entry...
Like this I've to fill the widgets in 178 rows. Displaying label is fine
with List store...
But how can I manage with text entry??

Thanks
Laxmi


-Original Message-
From: David Necas (Yeti) [mailto:[EMAIL PROTECTED] 
Sent: Tuesday, April 04, 2006 12:33 PM
To: Sailaxmi korada
Cc: gtk-app-devel-list@gnome.org
Subject: Re: 3000 toggle buttons in a table?

On Tue, Apr 04, 2006 at 10:55:08AM +0530, Sailaxmi korada  wrote:
 
 Perhaps, my application requires 16 toggle buttons to be placed in each
row,
 that represent a hex value. So I need not write 3000 callbacks for them,
 instead with one call back I can manage to calculate the hex value, based
on
 the position of toggle button. Tree view doesn't fit my requirement.

The treeview example I sent does exactly that -- the toggle
buttons represents bits in some integers (64bit in that
case).  So why it does not fit?

Yeti


--
That's enough.




___
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list


Re: 3000 toggle buttons in a table?

2006-04-04 Thread David Necas (Yeti)
On Tue, Apr 04, 2006 at 01:47:10PM +0530, Sailaxmi korada  wrote:
 Why I said Tree view doesn't fit my requirement was, in a row I've to
 display label, 15 toggle buttons, text entry...
 Like this I've to fill the widgets in 178 rows. Displaying label is fine
 with List store...
 But how can I manage with text entry??

What about an editable column?  If it has to look exactly
like a classic text entry, then this is a problem, but if
any editable text field will do, treeview can do that
easily.

Yeti


--
That's enough.
___
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list


3000 toggle buttons in a table? (was: Button Vs Toogle Button)

2006-04-03 Thread Gus Koppel
Sailaxmi korada  wrote:

   My application has to display around 3000 toggle buttons, in 178 rows of a
 table. It is taking almost 12 seconds to do so.
 
   Can you help me out in reducing this time.
   Here are the two steps that are consuming maximum time

   gtk_button_set_label (GTK_BUTTON(drpentry_binbutton), 1);
 
gtk_toggle_button_set_active
 (GTK_TOGGLE_BUTTON(drpentry_binbutton),FALSE);

I refrain from asking who might be supposed to toggle all 3000 buttons.
I rather suggest you to do without standard widgets at all when it comes
to such an exorbitant number of toggles.

It's right that GTK+ gets rather slow if several hundreds (or more)
widgets are to be built and displayed. This is because each widget has
quite some overhead, regarding its numerous memory structures, internal
procedures and handlers and, last but not least, the layout calculations
of the table.

I rather suggest you to do some more work on your own for this rather
special application. Don't use standard widgets like GtkToggleButtons
and a GtkTable. If I had to manage 3000 toggles on screen, I would
simply use a GtkDrawingArea and manage the display and input handling of
those toggles on my own.

Monitor the visible height of the drawing area, divide it by 178, then
you have the average height of each button. Do the same with the
width. Render the buttons on your own, that is, perhaps draw a frame,
draw inside labels (you may use clipping for this), and define two
different appearances for the two states of the toggles, i.e. two
different background colors or different frame appearances.

You wouldn't need to connect thousands of widgets to their appropriate
handlers either (which would take quite some processing time and memory
as well) but rather simply monitor button press and button release
events within the single drawing area and calculate the pressed button
number by the given mouse pointer coordinates. Maintain a simple bitmap
(or bytemap) of 3000 entries, one for each button, to store and change
its current state.

If keyboard navigation inside the buttons field is required, you would
have to built it as well. However, in such a button matrix you could
achieve an even more comfortable focus navigation if you not only
support [TAB] and [SHIFT]+[TAB] but also the cursor keys for vertical
navigation. The number of rows you mention suggest that this would be
appreciated by users.

This way your button matrix would of course not be fully
GTK+-theme-compliant but I guess this would be much less of a worry for
you. This way you can achieve a practically instantaneous buildup
(accelerated by factors of 10 to 20 compared to genuine widgets). GDK
provides a fine set of drawing primitives for you.

In fact, you might also consider to derive a new type of widget from
your work, like GtkToggleButtonMatrix (not to be derived from
GtkToggleButton), which not only you could benefit from, if it comes to
similar projects in the future, but others could as well, if you decide
to publish your work.

Btw, on this high numbers of widgets you can certainly expect your
performance problem to be the same (or even worse) on most other
toolkits like QT or (especially) Java Swing. FLTK might handle this
significantly faster with its builtin widgets, but doing it the way I
suggested would still be the fastest, by far.
___
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list


Re: 3000 toggle buttons in a table?

2006-04-03 Thread Tristan Van Berkom

Gus Koppel wrote:

Sailaxmi korada  wrote:



 My application has to display around 3000 toggle buttons, in 178 rows of a
table. It is taking almost 12 seconds to do so.

 Can you help me out in reducing this time.
 Here are the two steps that are consuming maximum time

 gtk_button_set_label (GTK_BUTTON(drpentry_binbutton), 1);

  gtk_toggle_button_set_active
(GTK_TOGGLE_BUTTON(drpentry_binbutton),FALSE);



I refrain from asking who might be supposed to toggle all 3000 buttons.
I rather suggest you to do without standard widgets at all when it comes
to such an exorbitant number of toggles.


Sorry if I'm jumping into a thread that I havent read... maybe
this comment was already made on this thread...

Why not use GtkCellRendererToggle w/ GtkTreeView  GtkListStore ?

Or use a GtkListStore to select your data item and some togglebuttons
and whatever other control widgets below your treeview (i.e. the single
toggle button applies only to the selected row) ?

(Sure; writing treeview code is a pain, but its perfect for these
large dataset situations).

Cheers,
-Tristan

___
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list


Re: 3000 toggle buttons in a table?

2006-04-03 Thread David Necas (Yeti)
On Mon, Apr 03, 2006 at 01:40:25PM -0400, Tristan Van Berkom wrote:
 
 Why not use GtkCellRendererToggle w/ GtkTreeView  GtkListStore ?
 
 Or use a GtkListStore to select your data item and some togglebuttons
 and whatever other control widgets below your treeview (i.e. the single
 toggle button applies only to the selected row) ?
 
 (Sure; writing treeview code is a pain, but its perfect for these
 large dataset situations).

It is not so much pain -- if your code actually does
something, the treeview bureaucracy is not substantial.
What bugs me more is the extra requested space at the right
side of the tree view when one goes mad and simply creates
a large grid of GtkCellRendererToggles.  Is it a bug?  Does
anyone observe it too?

Yeti


--
That's enough.



===
#include stdlib.h
#include gtk/gtk.h

/* Someone put this into GLib... */
static guint64
g_rand_int64(GRand *rand)
{
guint64 low, hi;

low = g_rand_int(rand);
hi = g_rand_int(rand);

return low | (hi  32);
}

static void
render_cell(G_GNUC_UNUSED GtkCellLayout *layout,
GtkCellRenderer *renderer,
GtkTreeModel *model,
GtkTreeIter *iter,
gpointer user_data)
{
guint i = GPOINTER_TO_UINT(user_data);
guint64 x;

gtk_tree_model_get(model, iter, 0, x, -1);
g_object_set(G_OBJECT(renderer), active, (gboolean)((x  i)  1), NULL);
}

static void
toggle_cell(GtkCellRendererToggle *renderer,
gchar *path,
GtkListStore *store)
{
GtkTreeModel *model;
GtkTreeIter iter;
guint64 x, bit = 1;

g_print(Setting (%u, %u) to %s\n,
GPOINTER_TO_UINT(g_object_get_data(G_OBJECT(renderer), id)),
atoi(path),
!gtk_cell_renderer_toggle_get_active(renderer) ? On : Off);

model = GTK_TREE_MODEL(store);
gtk_tree_model_iter_nth_child(model, iter, NULL, atoi(path));

gtk_tree_model_get(model, iter, 0, x, -1);
bit = bit  GPOINTER_TO_UINT(g_object_get_data(G_OBJECT(renderer), id));
if (gtk_cell_renderer_toggle_get_active(renderer))
x = ~bit;
else
x |= bit;
gtk_list_store_set(store, iter, 0, x, -1);
}

int
main(int argc, char *argv[])
{
GtkWidget *window, *treewidget;
GtkTreeView *treeview;
GtkListStore *store;
GtkCellRenderer *renderer;
GtkTreeViewColumn *column;
GtkCellLayout *layout;
GtkTreeSelection *selection;
GtkTreeIter iter;
GRand *rng;
guint i, nrows = 50;

gtk_init(argc, argv);

rng = g_rand_new();
store = gtk_list_store_new(1, G_TYPE_UINT64);
for (i = 0; i  nrows; i++) {
gtk_list_store_append(store, iter);
gtk_list_store_set(store, iter, 0, g_rand_int64(rng), -1);
}
g_rand_free(rng);

treewidget = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
treeview = GTK_TREE_VIEW(treewidget);
g_object_unref(store);

column = gtk_tree_view_column_new();
layout = GTK_CELL_LAYOUT(column);
for (i = 0; i  64; i++) {
renderer = gtk_cell_renderer_toggle_new();
g_object_set_data(G_OBJECT(renderer), id, GUINT_TO_POINTER(i));
gtk_cell_layout_pack_start(layout, renderer, FALSE);
gtk_cell_layout_set_cell_data_func(layout, renderer,
   render_cell, GUINT_TO_POINTER(i),
   NULL);
g_object_set(renderer, activatable, TRUE, NULL);
g_signal_connect(renderer, toggled, G_CALLBACK(toggle_cell), store);
}
gtk_tree_view_append_column(treeview, column);
gtk_tree_view_set_headers_visible(treeview, FALSE);

selection = gtk_tree_view_get_selection(treeview);
gtk_tree_selection_set_mode(selection, GTK_SELECTION_NONE);

window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_container_add(GTK_CONTAINER(window), treewidget);

g_signal_connect(window, destroy, G_CALLBACK(gtk_main_quit), NULL);
gtk_widget_show_all(window);
gtk_main();

return 0;
}


___
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list


Re: 3000 toggle buttons in a table?

2006-04-03 Thread Gus Koppel
Tristan Van Berkom wrote:

 Gus Koppel wrote:
  Sailaxmi korada  wrote:
  
   My application has to display around 3000 toggle buttons, in 178 rows of a
 table. It is taking almost 12 seconds to do so.
 
   Can you help me out in reducing this time.
   Here are the two steps that are consuming maximum time
 
   gtk_button_set_label (GTK_BUTTON(drpentry_binbutton), 1);
 
gtk_toggle_button_set_active
 (GTK_TOGGLE_BUTTON(drpentry_binbutton),FALSE);
  
  I refrain from asking who might be supposed to toggle all 3000 buttons.
  I rather suggest you to do without standard widgets at all when it comes
  to such an exorbitant number of toggles.
 
 Sorry if I'm jumping into a thread that I havent read... maybe
 this comment was already made on this thread...
 
 Why not use GtkCellRendererToggle w/ GtkTreeView  GtkListStore ?
 
 Or use a GtkListStore to select your data item and some togglebuttons
 and whatever other control widgets below your treeview (i.e. the single
 toggle button applies only to the selected row) ?
 
 (Sure; writing treeview code is a pain, but its perfect for these
 large dataset situations).

I suppose for Sailaxmi's application it is important to have all toggles
clearly arranged, likely for some sort of state matrix. Using a treeview
with togglebuttons below it for just the currently selected line would
be the more conventional approach to avoid huge numbers of widgets but
likely doesn't fit the demands.

On the other hand, filling the visible area of a treeview with 3000
toggles would still result in suboptimal display performance. For
(basically) maintaining the original layout while significantly
increasing its build speed, I think doing all the drawing on one's own,
without keeping any widget or field structures behind it, is the best
way. At least it's the fastest by far.

Perhaps it would be beneficial to be able to toggle multiple buttons
just as the mouse passes over them while the mouse button is being
pressed? This could be accomplished with a custom implementation as
well. Think of The Gimp with a 16 * 178 B/W bitmap. There's no way of
implementing such behaviour (one button press, multiple state changes)
with any standatrd means.
___
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list


Re: 3000 toggle buttons in a table?

2006-04-03 Thread David Necas (Yeti)
On Mon, Apr 03, 2006 at 11:23:51PM +0200, Gus Koppel wrote:
 
 On the other hand, filling the visible area of a treeview with 3000
 toggles would still result in suboptimal display performance.

Suboptimal maybe, OTOH if you try the example I attached to
my previous mail, you can see we are now in fractions of
a second -- at this point hacking together a new widget
makes sense only if it has other advantages (visual
presentation or behaviour hard to achieve with GtkTreeView,
perhaps with a more fitting API).

However the primary question is still what is this supposed
to be good for...

Yeti


--
That's enough.
___
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list


RE: 3000 toggle buttons in a table?

2006-04-03 Thread Sailaxmi korada

Perhaps, my application requires 16 toggle buttons to be placed in each row,
that represent a hex value. So I need not write 3000 callbacks for them,
instead with one call back I can manage to calculate the hex value, based on
the position of toggle button. Tree view doesn't fit my requirement. With
this clear picture any suggessions??

Laxmi


-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Gus Koppel
Sent: Tuesday, April 04, 2006 2:54 AM
To: gtk-app-devel-list@gnome.org
Subject: Re: 3000 toggle buttons in a table?

Tristan Van Berkom wrote:

 Gus Koppel wrote:
  Sailaxmi korada  wrote:
  
   My application has to display around 3000 toggle buttons, in 178 rows
of a
 table. It is taking almost 12 seconds to do so.
 
   Can you help me out in reducing this time.
   Here are the two steps that are consuming maximum time
 
   gtk_button_set_label (GTK_BUTTON(drpentry_binbutton), 1);
 
gtk_toggle_button_set_active
 (GTK_TOGGLE_BUTTON(drpentry_binbutton),FALSE);
  
  I refrain from asking who might be supposed to toggle all 3000 buttons.
  I rather suggest you to do without standard widgets at all when it comes
  to such an exorbitant number of toggles.
 
 Sorry if I'm jumping into a thread that I havent read... maybe
 this comment was already made on this thread...
 
 Why not use GtkCellRendererToggle w/ GtkTreeView  GtkListStore ?
 
 Or use a GtkListStore to select your data item and some togglebuttons
 and whatever other control widgets below your treeview (i.e. the single
 toggle button applies only to the selected row) ?
 
 (Sure; writing treeview code is a pain, but its perfect for these
 large dataset situations).

I suppose for Sailaxmi's application it is important to have all toggles
clearly arranged, likely for some sort of state matrix. Using a treeview
with togglebuttons below it for just the currently selected line would
be the more conventional approach to avoid huge numbers of widgets but
likely doesn't fit the demands.

On the other hand, filling the visible area of a treeview with 3000
toggles would still result in suboptimal display performance. For
(basically) maintaining the original layout while significantly
increasing its build speed, I think doing all the drawing on one's own,
without keeping any widget or field structures behind it, is the best
way. At least it's the fastest by far.

Perhaps it would be beneficial to be able to toggle multiple buttons
just as the mouse passes over them while the mouse button is being
pressed? This could be accomplished with a custom implementation as
well. Think of The Gimp with a 16 * 178 B/W bitmap. There's no way of
implementing such behaviour (one button press, multiple state changes)
with any standatrd means.
___
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list




___
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list