Runtime environment for GTK+ application

2012-01-12 Thread Manuel Ferrero

I'm learning GTK developement on a Windows XP machine.
I was able to successfully build a simple hello world and I read about 
the need to include more than the plain exe file if I want to distribute 
my application to someone else.

I have two question somehow related.
First: I can't find a precoocked package or at least a best practice 
document on which files are needed to distribute with my application, 
can someone point me on the right direction, please?
Second ancd very similar to the first: I know my hello world is working 
because I copied the exe file in the bin directory of my GTK 
installation. I was expecting I can run it from any folder in my 
computer because I put the GTK installation base folder in my path 
though, but I get some dll error. Do I forgot something during the GTK 
installation?

TIA

Reer SpA
Tel.  +39 011 2482215
Fax. +39 011 859867

L'utilizzo non autorizzato del presente messaggio e' vietato e potrebbe 
costituire reato.
Se il presente messaggio non e' a Lei indirizzato, il suo contenuto non deve 
essere considerato
come trasmesso o autorizzato dalla Reer SpA; in tale caso Le saremmo grati se, 
via e-mail,
ce ne comunicasse l'errata ricezione.

The unauthorized use of this e-mail is prohibited and could constitute an 
offence.
If you are not the intended recipient of this message its contents shall be 
understood as neither
given nor endorsed by Reer SpA. Please notify Reer SpA by e-mail immediately in 
that case.

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


Re: Runtime environment for GTK+ application

2012-01-12 Thread Michael Cronenworth

Manuel Ferrero wrote:

First: I can't find a precoocked package or at least a best practice
document on which files are needed to distribute with my application,
can someone point me on the right direction, please?


You can either take Dov's approach and package the GTK DLLs in your 
installer, or you can use a pre-packaged installer:

http://downloads.sourceforge.net/gtk-win/gtk2-runtime-2.24.8-2011-12-03-ash.exe?download

I am assuming you are using GTK 2.24.8 (as you should on Windows).


Second ancd very similar to the first: I know my hello world is working
because I copied the exe file in the bin directory of my GTK
installation. I was expecting I can run it from any folder in my
computer because I put the GTK installation base folder in my path
though, but I get some dll error. Do I forgot something during the GTK
installation?


The bin folder of your GTK DLLs needs to be in the %PATH% of your 
Windows environment. The pre-packaged installer I linked to above will 
set that up for you, or you can do it manually.

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


Re: Runtime environment for GTK+ application

2012-01-12 Thread Emmanuel Thomas-Maurin
On 01/12/2012 04:38 PM, Manuel Ferrero wrote:
 I'm learning GTK developement on a Windows XP machine.
 I was able to successfully build a simple hello world and I read about
 the need to include more than the plain exe file if I want to distribute
 my application to someone else.
 I have two question somehow related.
 First: I can't find a precoocked package or at least a best practice
 document on which files are needed to distribute with my application,
 can someone point me on the right direction, please?
 Second ancd very similar to the first: I know my hello world is working
 because I copied the exe file in the bin directory of my GTK
 installation. I was expecting I can run it from any folder in my
 computer because I put the GTK installation base folder in my path
 though, but I get some dll error. Do I forgot something during the GTK
 installation?

Another link to some useful info: http://www.gtk.org/download/win32.php

You may also want to check/use this runtime (although it's GTK+ 2.22.0)
I use for several of my apps:
http://www.newsrssticker.com/src/gtk2-win32-runtime-bin.tar.gz
Extra info about building app/installer on win32 is available on the
site (http://www.newsrssticker.com/help.php#building_from_source_howto).

-- 
Emmanuel Thomas-Maurin manutm...@gmail.com
___
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list


gtkEntry, a virtual keyboard and overwriting problems

2012-01-12 Thread Matt Flax

Hi there,

I wanted to implement a virtual keyboard using individual letter buttons 
and have the string constructed displayed in the gtkEntry widget.

entry=gtk_entry_new(); // create the entry widget
GdkEvent new_event; // the gdkevent to put

I used the following approach  when a button was clicked :
  gtk_widget_grab_focus(entry);
  new_event.key.window = gtk_widget_get_parent_window(entry);
  new_event.key.keyval = c[0]; // take only the first letter
  gdk_event_put(new_event);

I found that every time I clicked a letter button, such as 'a', the 
letter 'a' would be displayed in the entry widget - great ! but 
If I try to add a second letter, such as 'b', the letter 'a' would be 
overwritten by 'b'. Not so good ! I need to construct strings in the 
GtkEntry widget ...


can anyone see what I am doing wrong ?

When I use the same approach with the GtkTextView widget it works OK :
entry=gtk_text_view_new (); // create the text view widget

The following works correctly - I can create strings:
  gtk_widget_grab_focus(entry);
  new_event.key.window = gtk_widget_get_parent_window(entry);
  new_event.key.keyval = c[0]; // take only the first letter
  gdk_event_put(new_event);


The problem with this approach is that it is overly complex, I only want 
the user to input a single line of text and it is harder to extract the 
string from the GtkTextView widget ...


any pointers ?
thanks
Matt
___
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list


Re: gtkEntry, a virtual keyboard and overwriting problems

2012-01-12 Thread Matt Flax

For those who are interested, here is the state of the event :
new_event.key.type = GDK_KEY_PRESS;
new_event.key.send_event = TRUE;
new_event.key.time = GDK_CURRENT_TIME;
new_event.key.state = 0; //GDK_KEY_PRESS_MASK;
new_event.key.length = 0;
new_event.key.string = 0;
new_event.key.hardware_keycode = 0;
new_event.key.group = 0;


On 13/01/12 10:55, Matt Flax wrote:

Hi there,

I wanted to implement a virtual keyboard using individual letter 
buttons and have the string constructed displayed in the gtkEntry widget.

entry=gtk_entry_new(); // create the entry widget
GdkEvent new_event; // the gdkevent to put

I used the following approach  when a button was clicked :
  gtk_widget_grab_focus(entry);
  new_event.key.window = gtk_widget_get_parent_window(entry);
  new_event.key.keyval = c[0]; // take only the first letter
  gdk_event_put(new_event);

I found that every time I clicked a letter button, such as 'a', the 
letter 'a' would be displayed in the entry widget - great ! but 
If I try to add a second letter, such as 'b', the letter 'a' would be 
overwritten by 'b'. Not so good ! I need to construct strings in the 
GtkEntry widget ...


can anyone see what I am doing wrong ?

When I use the same approach with the GtkTextView widget it works OK :
entry=gtk_text_view_new (); // create the text view widget

The following works correctly - I can create strings:
  gtk_widget_grab_focus(entry);
  new_event.key.window = gtk_widget_get_parent_window(entry);
  new_event.key.keyval = c[0]; // take only the first letter
  gdk_event_put(new_event);


The problem with this approach is that it is overly complex, I only 
want the user to input a single line of text and it is harder to 
extract the string from the GtkTextView widget ...


any pointers ?
thanks
Matt
___
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


Need control of filename entry area in gtkfilechooser

2012-01-12 Thread Ferdinand Ramirez
When I type in the filename into the filename entry area in gtkfilechooser 
dialog, I want to intercept the text that is entered, modify it and then 
display it in the filename area. How do I do this?

For a regular text buffer, I know how to do this: I can do a 
gtk_text_view_get_buffer and then have a callback for insert-text. I can then 
modify the text that is entered and then insert it into the buffer, all from 
inside the callback.

I want to be able to achieve the same thing for filename entry. Does anyone 
know how to do this?

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


Re: RFC: new features

2012-01-12 Thread Alexander Larsson
On Wed, 2012-01-11 at 20:38 -0800, Christian Hergert wrote:

 VALIDATION
 Many developers in the web world have become accustom to validating
 the contents of forms before submitting them. While we would often argue
 against allowing invalid input in the first place, that can often
 confuse users. In this case, allowing the input and providing an
 accurate reason why the input is invalid yields better results. I'm not
 sure what a good API here would look like, but it needs to be flexible
 enough to work with built-in and custom widgets.

There is some level of validation in the gtk+ printing dialog. The
printer configuration files (PPD files) can specify certain combination
of enabled features as incompatible (i.e. can't do full duplex while
stapling or whatnot). Whenever something is invalid we show a label
somewhere explaining the problem and then each problematic settings
widget gets a warning icon. 

This is imho a pretty nice way to handle validation. You're not unable
to input invalid input (which can be confusing), but you get instant
feedback on when and what is invalid.

 MENU BUTTON
 A GtkButton that shows a menu when clicked (and handles positioning,
 etc). Some would just use a combobox, but I find them pretty different.
 You'll find this sort of menu button in various VMware products on
 Linux. (I know the fullscreen toolbar used to have it at least).

Gnome-contacts has one of these (at least in Gnome 3.2). Its not hard to
do but would be nice to have in a single place. Also, it needs some help
from the theme to look good, like adwaita does here:
http://git.gnome.org/browse/gnome-themes-standard/commit/?id=90c4f48cf7720fb9b31e8388843a5fa6b8f3f705

 WIDGET STACK
 Like a notebook with no tabs or decoration. You push and pop widgets
 on and off the stack. This is the navigational structure often found on
 iOS. The reason I think abstracting it might make sense is more about
 animating between widgets once Gtk starts landing animation (post
 clutter integration obviously). It would be great if this nicely
 integrated with a navigation bar type widget. Here[3] is a video of
 some crappy animation code I wrote to do this.

Not only does it help with animation, but its also nice in terms of size
allocation. Often you want a set of widgets that can temporarily change
into another set (for instance during editing) without causing a UI
reflow. Having a widget stack like this helps with this size allocation
handling.


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


Re: RFC: new features

2012-01-12 Thread Nacho
Hey guys,

about the MENU_BUTTON:
we also have something like this in gedit see
http://git.gnome.org/browse/gedit/tree/gedit/gedit-status-combo-box.c
but it sucks because we can't search on it, it would be great having
something like this that also allows you to
search like a treeview, we were even thinking about using a popup with a
treeview inside.
So if this kind of widget with all use cases is pointed out in gtk+ would
be much appreciated.

Regards.

On Thu, Jan 12, 2012 at 11:23 AM, Alexander Larsson al...@redhat.comwrote:

 On Wed, 2012-01-11 at 20:38 -0800, Christian Hergert wrote:

  VALIDATION
  Many developers in the web world have become accustom to validating
  the contents of forms before submitting them. While we would often argue
  against allowing invalid input in the first place, that can often
  confuse users. In this case, allowing the input and providing an
  accurate reason why the input is invalid yields better results. I'm not
  sure what a good API here would look like, but it needs to be flexible
  enough to work with built-in and custom widgets.

 There is some level of validation in the gtk+ printing dialog. The
 printer configuration files (PPD files) can specify certain combination
 of enabled features as incompatible (i.e. can't do full duplex while
 stapling or whatnot). Whenever something is invalid we show a label
 somewhere explaining the problem and then each problematic settings
 widget gets a warning icon.

 This is imho a pretty nice way to handle validation. You're not unable
 to input invalid input (which can be confusing), but you get instant
 feedback on when and what is invalid.

  MENU BUTTON
  A GtkButton that shows a menu when clicked (and handles positioning,
  etc). Some would just use a combobox, but I find them pretty different.
  You'll find this sort of menu button in various VMware products on
  Linux. (I know the fullscreen toolbar used to have it at least).

 Gnome-contacts has one of these (at least in Gnome 3.2). Its not hard to
 do but would be nice to have in a single place. Also, it needs some help
 from the theme to look good, like adwaita does here:

 http://git.gnome.org/browse/gnome-themes-standard/commit/?id=90c4f48cf7720fb9b31e8388843a5fa6b8f3f705

  WIDGET STACK
  Like a notebook with no tabs or decoration. You push and pop widgets
  on and off the stack. This is the navigational structure often found on
  iOS. The reason I think abstracting it might make sense is more about
  animating between widgets once Gtk starts landing animation (post
  clutter integration obviously). It would be great if this nicely
  integrated with a navigation bar type widget. Here[3] is a video of
  some crappy animation code I wrote to do this.

 Not only does it help with animation, but its also nice in terms of size
 allocation. Often you want a set of widgets that can temporarily change
 into another set (for instance during editing) without causing a UI
 reflow. Having a widget stack like this helps with this size allocation
 handling.


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




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


Re: RFC: new features

2012-01-12 Thread Tristan Van Berkom
On Thu, Jan 12, 2012 at 7:23 PM, Alexander Larsson al...@redhat.com wrote:
 On Wed, 2012-01-11 at 20:38 -0800, Christian Hergert wrote:

 VALIDATION
 Many developers in the web world have become accustom to validating
 the contents of forms before submitting them. While we would often argue
 against allowing invalid input in the first place, that can often
 confuse users. In this case, allowing the input and providing an
 accurate reason why the input is invalid yields better results. I'm not
 sure what a good API here would look like, but it needs to be flexible
 enough to work with built-in and custom widgets.

 There is some level of validation in the gtk+ printing dialog. The
 printer configuration files (PPD files) can specify certain combination
 of enabled features as incompatible (i.e. can't do full duplex while
 stapling or whatnot). Whenever something is invalid we show a label
 somewhere explaining the problem and then each problematic settings
 widget gets a warning icon.

 This is imho a pretty nice way to handle validation. You're not unable
 to input invalid input (which can be confusing), but you get instant
 feedback on when and what is invalid.

This is a very good point, it would be great to incorporate some basic
validation mechanisms in GTK+, in many cases form style validation
is possible, i.e. one can fire up a dialog and hit the Apply or Commit
button at which time entry validation can take place, but in some cases
that's just really annoying (i.e. who needs to waste time with the extra
step of firing up a dialog and hitting a Commit button). While configuration
dialogs definitely fall into the first category, many editor applications
such as user interface designers or image manipulation programs have
property editors available at all times. In these cases validation should
always happen synchronously.

I think the warning icon with tooltip is a good idea, I've also considered
changing an entry's background color to be red while invalid input is
entered (of course this requires that the theme define what is a proper
error color...)

One classical error we should keep in mind is that entry validation
at focus-out time is just not stable, in many cases for instance you
get a situation where:
  a.) User selects object
  b.) As a consequence, current values are set in the editor widget
  c.) User enters invalid input
  d.) User selects another object
  e.) New values are entered into the editor frame
  f.) Finally, after old input is potentially lost, the focus-out event is
  finally delivered and validation is no longer possible or logical

This is a common problem in multiple platforms and toolkits, it would
be great IMO to have some backing support from the toolkit to help
developers to get it right the first time.

Cheers,
   -Tristan


 MENU BUTTON
 A GtkButton that shows a menu when clicked (and handles positioning,
 etc). Some would just use a combobox, but I find them pretty different.
 You'll find this sort of menu button in various VMware products on
 Linux. (I know the fullscreen toolbar used to have it at least).

 Gnome-contacts has one of these (at least in Gnome 3.2). Its not hard to
 do but would be nice to have in a single place. Also, it needs some help
 from the theme to look good, like adwaita does here:
 http://git.gnome.org/browse/gnome-themes-standard/commit/?id=90c4f48cf7720fb9b31e8388843a5fa6b8f3f705

 WIDGET STACK
 Like a notebook with no tabs or decoration. You push and pop widgets
 on and off the stack. This is the navigational structure often found on
 iOS. The reason I think abstracting it might make sense is more about
 animating between widgets once Gtk starts landing animation (post
 clutter integration obviously). It would be great if this nicely
 integrated with a navigation bar type widget. Here[3] is a video of
 some crappy animation code I wrote to do this.

 Not only does it help with animation, but its also nice in terms of size
 allocation. Often you want a set of widgets that can temporarily change
 into another set (for instance during editing) without causing a UI
 reflow. Having a widget stack like this helps with this size allocation
 handling.


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


Re: gobject-introspection and GBoxed

2012-01-12 Thread Tomeu Vizoso
On Wed, Jan 11, 2012 at 14:47,  jcup...@gmail.com wrote:
 Hi all,

 I'm adding gobject-introspection support to my library. It's working
 well for the GObject classes, but I just can't get it to work for
 GBoxed objects. I'm sure I'm missing something obvious. Do I need to
 write an override to make a class for the type myself?

 I've spent some time googling and grepping around and not found a
 simple example. Again, I'm probably being stupid.

 I'm doing something like this in a header:

 /**
  * VIPS_TYPE_BLOB:
  *
  * The %GType for a #VipsBlob.
  */
 #define VIPS_TYPE_BLOB (vips_blob_get_type())
 GType vips_blob_get_type( void );
 typedef ... VipsBlob;
 VipsBlob *vips_blob_new( int n );

 and this in the .c file:

 GType
 vips_blob_get_type( void )
 {
        static GType type = 0;

        if( !type )
                type = g_boxed_type_register_static( VipsBlob,
                        (GBoxedCopyFunc) ...,
                        (GBoxedFreeFunc) ... );

        return( type );
 }

 /**
  * vips_blob_new:
  * @n:
  *
  * Returns: (transfer full): the new #VipsBlob.
  */
 VipsBlob *
 vips_blob_new( int n )
 {
        return (...a new VipsBlob);
 }

 Now when I start up Python I get this:

 from gi.repository import Vips
 Vips.blob_new
 function blob_new at 0x77e31de8
 Vips.blob_new(12)

 Program received signal SIGSEGV, Segmentation fault.
 _args_cache_generate (callable_cache=0x9b04c0, callable_info=0xa6d280)
    at /build/buildd/pygobject-3.0.0/gi/pygi-cache.c:1282

 This is on current Ubuntu, so:

 $ pkg-config gobject-introspection-1.0 --modversion
 1.30.0

Looks like a bug in pygobject, could you file a bug with a backtrace?

It may be worth trying out with the latest release to scope better the problem.

Thanks,

Tomeu

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


Re: RFC: new features

2012-01-12 Thread Paolo Borelli
Benjamin Otte otte at gnome.org writes:

 
 One thing I've been wondering about is what features GTK is missing.
 This is mostly about developer-visible APIs, ie new widgets, and not
 about internal changes. I have some ideas from IRC discussions, mails
 and applications, but of course there might be big things I'm missing.

UNDO
A full undo/redo stack may belong in glib, but I'd be happy enough if TextView
and TextEntry supported it

SPELL CHECKING
Once again, a full spell checking api may belong in glib, but I'd be happy
enough to have it in gtk and easily enabled for TextView and TextEntry

Ciao

Paolo





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


Re: RFC: new features

2012-01-12 Thread Paul Davis
On Thu, Jan 12, 2012 at 6:32 AM, Paolo Borelli pbore...@katamail.com wrote:

 UNDO
 A full undo/redo stack may belong in glib,

to me, this is highly unrealistic. undo/redo is incredibly application
(and scale) specific. even inside one application, it can make sense
to find two entirely different approaches to handling undo/redo (e.g.
one based on save/restore of the full state of objects and other based
on storing differences in state).
___
gtk-devel-list mailing list
gtk-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-devel-list


Re: RFC: new features

2012-01-12 Thread Ross Burton
On 12 January 2012 12:17, Paul Davis p...@linuxaudiosystems.com wrote:
 to me, this is highly unrealistic. undo/redo is incredibly application
 (and scale) specific. even inside one application, it can make sense
 to find two entirely different approaches to handling undo/redo (e.g.
 one based on save/restore of the full state of objects and other based
 on storing differences in state).

Tasks has a undo manager/undoable implementation and that's
implemented by function pointers that do the right thing, so you can
probably implement both methods with that.

(http://git.gnome.org/browse/tasks/tree/libkoto)

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


Re: RFC: new features

2012-01-12 Thread Paul Davis
On Thu, Jan 12, 2012 at 7:31 AM, Ross Burton r...@burtonini.com wrote:

 Tasks has a undo manager/undoable implementation and that's
 implemented by function pointers that do the right thing, so you can
 probably implement both methods with that.

well, sure. i guess i was assuming that much. maybe i'm just thinking
too much about how you actually implement undo/redo, not what the API
for undo the last change or redo the last undone thing looks like.
___
gtk-devel-list mailing list
gtk-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-devel-list


Re: RFC: new features

2012-01-12 Thread Sébastien Wilmet
On Wed, Jan 11, 2012 at 09:16:10PM -0800, Matthew Brush wrote:
 SIMPLE TREE and LIST
 It would be great to have simple GtkTree and GtkList widget sitting 
 ontop of the extremely powerful GtkTreeView API for those many cases 
 where you just need a basic tree or list box. The new widgets would not 
 require a book[1] to explain how to use it. I saw a GtkTree in the API 
 docs but it's deprecated, presumably because it doesn't sit ontop of the 
 better tree view API.

I agree. Most of the time, only basic features of GtkTreeModel and 
GtkTreeView are needed.

But conversely, more advanced features are missing in GtkTreeStore, and 
are present in GNode. For example, unlink a subtree and relink it at 
another place. With GtkTreeModel, we have to delete the rows and then 
reinsert them one by one.

The access to the data of the tree is also easier with a GNode, if we 
want to traverse the tree to find the right place where to insert a new 
node for instance.

It's not difficult to implement a custom GtkTreeModel that uses 
internally a GNode, but it would be nice to have a GNode-like for 
GtkTreeView. But I don't know if a lot of applications need this and 
currently use a custom GtkTreeModel.

I've read some discussions (probably on this list) about moving the 
model of the TreeView in GLib/GIO. But in this case, will the new model 
be as flexible as the GNode?


pgpRUWCV9DQWc.pgp
Description: PGP signature
___
gtk-devel-list mailing list
gtk-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-devel-list


Re: RFC: new features

2012-01-12 Thread jcupitt
My 2p:

DATA GRID
I'd like to be able to display a grid of numbers with rectangular
selection, a little like a spreadsheet. Unfortunately this is not
possible with treeview. At the moment I use a fork of the ancient and
broken GtkSheet widget, which is unfortunate.

PLOTS
As Jean said, goffice has a nice set of plotting widgets. I use them
in my app and they work well and are easy to program. I've not tried
doing an animated scrolling graph with them though.

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


Re: RFC: new features

2012-01-12 Thread Tristan Van Berkom
On Thu, Jan 12, 2012 at 9:37 PM, Paul Davis p...@linuxaudiosystems.com wrote:
 On Thu, Jan 12, 2012 at 7:31 AM, Ross Burton r...@burtonini.com wrote:

 Tasks has a undo manager/undoable implementation and that's
 implemented by function pointers that do the right thing, so you can
 probably implement both methods with that.

 well, sure. i guess i was assuming that much. maybe i'm just thinking
 too much about how you actually implement undo/redo, not what the API
 for undo the last change or redo the last undone thing looks like.

Actually, my latest attempt at undo/redo, after analyzing the
difficulties which cropped up in Glade I've recently taken a
wildly different approach.

Hint, validation of whether a newly created command is a key
point in a data-model centric undo/redo system, there is much
pain involved when trying to mount an api layer on top of
an undo/redo system which interacts with the data model.

In this light I've decided to make my data models themselves
implement an executable interface, depending on object state
and of course, object type in a complex hierarchical model,
an executable object can simply refuse to create a command which
operates on the model.

I've found this greatly reduces complexity in policing command
validity (for instance if I were to apply this to Glade,
then a derived widget adaptor for say, a GtkBin widget could
simply refuse to create a command which adds a second child
to the widget... in the process it could even pop-up a dialog
informing the user why his request was impossible... Glade
is a good example here because there can be many specific
cases where a command would fail... centralizing that check
work on the widget adaptors make's a lot of sense).

Possibly it makes sense for GtkTextView to implement it's own
undo/redo system internally, if it can be assumed that the
text view (or text buffer more likely) is really only modifying
text.

However it would be good to be able to disable that feature,
consider for instance an elaborate implementation of GtkSourceView:
perhaps in that case there are many portions of text, but also
perhaps the underlying buffer implementation should be implemented
with symbol objects, possibly making reference to objects
constructed/introspected from a loaded gir file... in that case
implementing undo/redo on a code structure data model that
is displayed in a derived GtkTextView should be done separately
from the base only text implementation.

Anyway, some food for thought...

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


Re: RFC: new features

2012-01-12 Thread John Ralls

On Jan 12, 2012, at 3:32 AM, Paolo Borelli wrote:

 Benjamin Otte otte at gnome.org writes:
 
 
 One thing I've been wondering about is what features GTK is missing.
 This is mostly about developer-visible APIs, ie new widgets, and not
 about internal changes. I have some ideas from IRC discussions, mails
 and applications, but of course there might be big things I'm missing.
 
 UNDO
 A full undo/redo stack may belong in glib, but I'd be happy enough if TextView
 and TextEntry supported it
 
 SPELL CHECKING
 Once again, a full spell checking api may belong in glib, but I'd be happy
 enough to have it in gtk and easily enabled for TextView and TextEntry

It already exists as an add-on package: http://gtkspell.sourceforge.net
It works quite well, and has recently been revived under a new maintainer after 
languishing for a couple of years.

Regards,
John Ralls

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


Re: RFC: new features

2012-01-12 Thread Matthew Barnes
On Thu, 2012-01-12 at 09:24 -0800, John Ralls wrote: 
 On Jan 12, 2012, at 3:32 AM, Paolo Borelli wrote:
  SPELL CHECKING
  Once again, a full spell checking api may belong in glib, but I'd be happy
  enough to have it in gtk and easily enabled for TextView and TextEntry
 
 It already exists as an add-on package: http://gtkspell.sourceforge.net
 It works quite well, and has recently been revived under a new maintainer 
 after languishing for a couple of years.

There's an old bug with patches still open for adding spell checking
support to GTK+ -- although GIO would be a better fit these days.

https://bugzilla.gnome.org/show_bug.cgi?id=383706

The discussion got bogged down in some tangent about word-splitting, but
several years ago I took Marco's GSpell patches and adapted them for
GtkHtml and they've been working splendidly for Evolution ever since.

The API uses iso-codes to extract language names and enchant for the
actual spell-checking.

http://git.gnome.org/browse/gtkhtml/tree/components/editor
(toward the bottom -- gtkhtml-spell-*)

Matthew Barnes

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


Re: RFC: new features

2012-01-12 Thread John Stowers
On Wed, 2012-01-11 at 20:38 -0800, Christian Hergert wrote:
 On Thu, 2012-01-12 at 03:59 +0100, Benjamin Otte wrote:
 
  PLOTS
  This is my personal pet peeve. I often have something I'd like to
  quickly plot in GTK, but it always ends up being more complicated then
  I thought, so I either stare at text or use Gnumeric to get my plots.
  And all the other applications (like virt-manager or
  gnome-system-monitor) that do plotting look rather crappy and their
  plots don't provide a lot of features (no zooms, no tooltips with
  actual values, no ability to expand or collapse certain parts).
  However, is a plotting widget a useful addition to GTK? If it works
  well, it would surely enable people to show lots of useful statistics
  that we'd all be thankful for - collecting them is not hard after all,
  but making their output useful is. I'm sure a lot of people would like
  bandwidth graphs in NetworkManager, page load performance graphs in
  Epiphany or an interactive bootchart. Even if it's just the
  developers using it to improve the rest of the world.
  That said, such a widget would need a simple interface - both in API
  and UI, and I'm not seeing anybody working on that. But I'd be very
  interested.
 
 The part I found frustrating while working on scrolling[1] graphs was
 coming up with a good model for storing data points. Especially when you
 consider being able to graph different scales or modes of graphs. Say
 heatmap, 2d plot, 3d plot, etc. Linear or logarithmic scales, etc. And
 then also abstracting the look of the plot and the renderers.

Another +1 for plots, in particular a scrolling plot widget. 

I maintain a bit of scientific software for University and they all use
real-time scrolling line charts. The basic requirements are
 * good performance (Christians was the best performing of those I
tried)
 * multiple traces
 * autoscale
 * independently (of incoming data) adjustable scrolling speed
 * introspectable / usable from python[1]

 MENU BUTTON
 A GtkButton that shows a menu when clicked (and handles positioning,
 etc). Some would just use a combobox, but I find them pretty different.
 You'll find this sort of menu button in various VMware products on
 Linux. (I know the fullscreen toolbar used to have it at least).

And this too (if you are describing the wrench menu on chrome for
example).

John

[1] Access from python because they get used in association with numpy,
which is used for the static plots. In the end I chose to maintain a
fork of the old rtgraph pygtk package https://github.com/nzjrs/rtgraph


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


Re: RFC: new features

2012-01-12 Thread Stefan Sauer
On 01/12/2012 03:59 AM, Benjamin Otte wrote:
 One thing I've been wondering about is what features GTK is missing.
 This is mostly about developer-visible APIs, ie new widgets, and not
 about internal changes. I have some ideas from IRC discussions, mails
 and applications, but of course there might be big things I'm missing.


TIP-DIALOG
I've seen several implementations in aps (e.g. gimp has one). I did one
for buzztard. It shows a random message from the tips list. The 'random'
part remembers which one has been shown already and selects random
messages from the not yet shown tips. In the dialog one can ask for
another tip or dismiss it. One more thing I planned is to have a link to
the help or a link to some online resource optionally associated with
each tip. I was also thinking of optionally having a picture shown next
to the tip (like saying machine icons have context menus and showing
an image with a opened context menu next to a machine icon.).

SCALE widget with defined fill-start
I brought that up when fill was added to range widgets, but my comment
was ignored. Imagine a panorama scale widget - range is [left (-100) -
middle (0) - right (100)] - t would be awesome if I could tell that
fill-start is at 0.0 and the fill is drawn towards left or right
depending on the value.

for developers - find a way to make gtk-parasite work with modal dialogs
(and maybe include it with gtk or advertise it more - a tools section on
http://www.gtk.org/ having gtkparasite, glade, devhelp ... ?)

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

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