Puppy Linux Discussion Forum Forum Index Puppy Linux Discussion Forum
Puppy HOME page : puppylinux.com
"THE" alternative forum : puppylinux.info
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

The time now is Mon 01 Sep 2014, 07:55
All times are UTC - 4
 Forum index » Off-Topic Area » Programming
GtkDialog1-1.3
Post new topic   Reply to topic View previous topic :: View next topic
Page 3 of 14 [207 Posts]   Goto page: Previous 1, 2, 3, 4, 5, ..., 12, 13, 14 Next
Author Message
technosaurus


Joined: 18 May 2008
Posts: 4348

PostPosted: Fri 24 Feb 2012, 03:04    Post subject:  

I put this notebook example together from glade-0.6 (not all the stuff is necessary, but I tried to get the equivalent actions to gtkdialog)

Code:
#include <gtk/gtk.h>

int main (int argc, char *argv[]){
GtkWidget *window1, *notebook1, *frame1, *label4, *label1, *frame2, *label5, *label2;

gtk_set_locale ();
gtk_init (&argc, &argv);

window1 = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_widget_set_name (window1, "window1");
gtk_object_set_data (GTK_OBJECT (window1), "window1", window1);
gtk_window_set_title (GTK_WINDOW (window1), "window1");

notebook1 = gtk_notebook_new ();
gtk_widget_set_name (notebook1, "notebook1");
gtk_widget_ref (notebook1);
gtk_object_set_data_full (GTK_OBJECT (window1), "notebook1", notebook1,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (notebook1);
gtk_container_add (GTK_CONTAINER (window1), notebook1);

frame1 = gtk_frame_new ("frame1");
gtk_widget_set_name (frame1, "frame1");
gtk_widget_ref (frame1);
gtk_object_set_data_full (GTK_OBJECT (window1), "frame1", frame1,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (frame1);
gtk_container_add (GTK_CONTAINER (notebook1), frame1);

label4 = gtk_label_new ("label4");
gtk_widget_set_name (label4, "label4");
gtk_widget_ref (label4);
gtk_object_set_data_full (GTK_OBJECT (window1), "label4", label4,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (label4);
gtk_container_add (GTK_CONTAINER (frame1), label4);

label1 = gtk_label_new ("label1");
gtk_widget_set_name (label1, "label1");
gtk_widget_ref (label1);
gtk_object_set_data_full (GTK_OBJECT (window1), "label1", label1,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (label1);
gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 0), label1);

frame2 = gtk_frame_new (NULL);
gtk_widget_set_name (frame2, "frame2");
gtk_widget_ref (frame2);
gtk_object_set_data_full (GTK_OBJECT (window1), "frame2", frame2,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (frame2);
gtk_container_add (GTK_CONTAINER (notebook1), frame2);

label5 = gtk_label_new ("label5");
gtk_widget_set_name (label5, "label5");
gtk_widget_ref (label5);
gtk_object_set_data_full (GTK_OBJECT (window1), "label5", label5,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (label5);
gtk_container_add (GTK_CONTAINER (frame2), label5);

label2 = gtk_label_new ("label2");
gtk_widget_set_name (label2, "label2");
gtk_widget_ref (label2);
gtk_object_set_data_full (GTK_OBJECT (window1), "label2", label2,
(GtkDestroyNotify) gtk_widget_unref);
gtk_widget_show (label2);
gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 1), label2);
gtk_widget_show (window1);

gtk_main ();
return 0;
}

_________________
Web Programming - Pet Packaging 100 & 101
Back to top
View user's profile Send private message 
goingnuts

Joined: 07 Dec 2008
Posts: 780

PostPosted: Fri 24 Feb 2012, 12:51    Post subject:  

Thanks! The first problem is the parser part: notebook is first included in 59.2 but along with that some other changes to the syntax which I prefer to leave out if possible. I did try to use lexer, parser.c and parser.y from 59.2, got it to compile but notebook token was not recoqnized... Slightly reluctant to start learning lex and YACC just to get notebook on board...but maybe not too difficult in the end so lets see.
Back to top
View user's profile Send private message Visit poster's website 
technosaurus


Joined: 18 May 2008
Posts: 4348

PostPosted: Fri 24 Feb 2012, 17:39    Post subject:  

Yes, the parser was what tripped me up before, and why I decided to just do a quicky using c's built in parsing. I think I could even make it compatible with gtk3 & gtk2, but gtkdialog is a better choice just by the fact that so many apps already use it, but I want to do it anyways. However if you get stuck on anything specific, please post ... If nothing else when you lose steam, dump a (preferably detailed) todo list ... It's not always intuitive to find corresponding code blocks.
_________________
Web Programming - Pet Packaging 100 & 101
Back to top
View user's profile Send private message 
goingnuts

Joined: 07 Dec 2008
Posts: 780

PostPosted: Sat 25 Feb 2012, 11:10    Post subject:  

Haven't lost steam yet Smile. I finally got gdk-pixbuf working so now png/jpg/xpm can be used. Unfortunately it breaks my static build (builds ok but segfaults) so I wont post code or build before that is fixed. But below a preview...and I will try make a to-do list on my way...
snap0005.png
 Description   
 Filesize   42.77 KB
 Viewed   778 Time(s)

snap0005.png

Back to top
View user's profile Send private message Visit poster's website 
amigo

Joined: 02 Apr 2007
Posts: 2238

PostPosted: Sat 25 Feb 2012, 13:04    Post subject:  

Looking really good there -I'm still following this. About gdk-pixbuf, make sure you have the static version of the library present -many distros disable static libs as much as (what they think) is possible.
Back to top
View user's profile Send private message 
technosaurus


Joined: 18 May 2008
Posts: 4348

PostPosted: Sat 25 Feb 2012, 13:20    Post subject:  

It's been a while since I compiled gdkpixbuf, but I vaguely recall needing to specify builtin modules in gtk2 even though enable-static was supposed to have the same effect. I can't remember if 1.2 has a similar option, I'd have to grep for dlopen or dlsym to see what ifdefs envelop them.

Edit: you probably don't even want to compile gmodule for a static toolchain gdk-pixbuf-io.c has:
#ifdef USE_GMODULE
//bad stuff
#else
//good stuff
#endif

(it doesn't dlopen directly, it uses gmodule - another autotools failure I am sure)

_________________
Web Programming - Pet Packaging 100 & 101
Back to top
View user's profile Send private message 
goingnuts

Joined: 07 Dec 2008
Posts: 780

PostPosted: Sat 25 Feb 2012, 15:07    Post subject:  

amigo&technosaurous: Thanks for the hints. My gtk-pixbuf static libs are build upon ulibc/tinyX11/xpm/gdk/gtk/gif/jpeg/png/libz/tiff so there are basis for something not working just because of that. Found that png/tiff/gif/xpm loads (and scales) but not the jpg. The static gtkdlg1 segfaults when gtk-pixbuf tries to load the jpg-image. So not likely that it is the gtkdlg1 code but more my toolchain and as the dynamic build does not have the problem...I will post present source and the static build (with the inability to handle jpg) asap.
Edit: The segfault was caused by a call to "gdk_pixmap_unref(mask)" where mask was NULL. The dynamic build does not care but the static build segfaults. Source and static build uploaded. Started a small todo list ...
snap0007.png
 Description   
 Filesize   34.2 KB
 Viewed   706 Time(s)

snap0007.png

Back to top
View user's profile Send private message Visit poster's website 
amigo

Joined: 02 Apr 2007
Posts: 2238

PostPosted: Wed 29 Feb 2012, 14:00    Post subject:  

GN, just wanted to report that the 230212 version builds fine here on my system -only two warnings about the lexer. I've only just noticed that you have uploaded your latest revision so I'll be checking that too.
I tried several of the examples but they seem to be a little incomplete -or maybe I don't understand enough of how you might use the output in scripts. Some of the examples I will not try because they are too Puppy-specific and might be 'unhealthy' for another system.

I'd like to see some more simple examples (alog the lines of the originals or those of Xdialog), which demonstrate fairly simple use of selected widgets. One of the things that I fear about thunor's work is that gtkdialog will get way over-bloated. For your project I'd really like to see that not happen.

For example, the 'tree' widget -I can send you or recommend some sources which demonstrate the tree as used in gtk1. But, I think that once you get to a certain level of complexity, then script-driven dialogs are not really the right tool. and the tree widget is just such an example, maybe.

I'd be especially interested to see examples which can use identical syntax and features as their gtkdialog counter-parts. To me, that is the best way to use this tool -so that one could use the same scripts with either gtk1 or gtk2. I'm working on two desktop versions for gtk1 and gtk2 which should duplicate the same functionality with the least work possible.

I will get around to auto-toolifying the sources (I can see Technosaurus cringing here) as it would make the sources much easier to use anywhere. Unfortunately, you have made some really major changes there, so it makes it a bit harder to back-track.

Please do keep posting the latest sources and preferably leave the old ones up also -at least for a while before removing the attachment. I like the way you are able to focus on this!
Back to top
View user's profile Send private message 
goingnuts

Joined: 07 Dec 2008
Posts: 780

PostPosted: Thu 01 Mar 2012, 12:03    Post subject:  

amigo: Thanks for testing and reporting! I do follow your view-point almost all the way. When I started this "project" I did not realize the size or potential - I "messed" up the code (in relation to making single standalone patches) as I found the traditional coding style confusing. On the other hand the huge amount of additions in the middle of the original code that is necessary might justify my coding style. You could argue that the additions could be placed in a new codefile and reffered to though...and that could be done as the last thing when everything works as wanted.

I did try to start fresh taking gtkdialog-0.7.20 as starting point but found it to be too GTK2ish (for me).
I will try to make a separate example collection with offset in the 0.7.20 examples. That also might pinpoint missing opportunities in the exsisting code.

As long as I do not control the parser we might be stuck with the syntax from 0.58.11 (which I like more and more...). Later versions introduce a lot of "=" tags in the syntax which I think is a mistake (<action>closewindow:EDIT</action> becomes <action type="closewindow">EDIT</action>). Harder to code/harder to read. But apart from things not yet implemented in gtkdlg1 that is one of the main syntax difference to gtkdialog2.
If gtkdlg1 is able to build both as gtk1 and gtk2 at least the syntax will be the same although you wont get fully compatibility with the real gtkdialog2. Might just be a reasonable compromise as I see no need for tree-widget (I agree with your views there) although I still miss the notebook-widget then...
I will post new source in bulk of thread as well but keep updating to newest source in start of thread. If you need some of the older sources I still have them.
Back to top
View user's profile Send private message Visit poster's website 
amigo

Joined: 02 Apr 2007
Posts: 2238

PostPosted: Thu 01 Mar 2012, 15:42    Post subject:  

I see that you've basically re-written the thing. Have you studied much code which is written for either gtk1 or gtk2? Usually lots of ifdefs in there. It would be very handy if it would work for both toolkits, but making it compatible for last gtk2 versions would be ugly.

Uh, I spent a long time today trying to get your files to configure and work in a modified autools of the original sources. I finally got everything configuring and starting to make, but the parser.o build is messing up. Just what did you do to the parser files? And which ones did you alter? I mean parser.c parser.h parser, and the lexer.c and lexer.l files. I've nearly got it working but hanging a bit there.

It really would be great if you could go back over it and make the changes a little more orderly now that you've got it working. Instead of deleting chunks of the original it makes an easier-to-read-and-port-forward diff if you simply comment the lines. Then when you add small bits or change small bits it is easier to see them. It also will make it easier for you to backport fixes or changes from later original versions. I#m gonna work on this more tomorrow.
Back to top
View user's profile Send private message 
goingnuts

Joined: 07 Dec 2008
Posts: 780

PostPosted: Thu 01 Mar 2012, 16:40    Post subject:  

lexer.l is unmodified. parser.y has additional "int yylex(void);" replacing blank line 30.
parcer.c and parser.h is generated from make file replacing the original coming with the source. Try "make clean" after configure in original source but before running "make" - parser.c and parser.h gets deleted.

After building the gtk2 version I use the generated parser.c and parser.h in home brewed makefile. I might have added minor changes to parser.c and parser.h but cant remember...

I think "make" start with lexer.l and create lex.yy which is used to create the parser.c and parser.h, maybe using parser.y as well but I might be totally wrong here.

If I could get an idea of what the parser parses I would prefer to create a plain c-parser - the syntax and rules seems quite limited. This also would open for a more gtk2 compatible version...
ex.pseudocode:
Code:

if (<action>closewindow:EDIT</action>) || <action type="closewindow">EDIT</action>) {"do your things";}

Anyway THANKS for using time on this - hopefully you get it running.
Back to top
View user's profile Send private message Visit poster's website 
technosaurus


Joined: 18 May 2008
Posts: 4348

PostPosted: Thu 01 Mar 2012, 18:53    Post subject:  

I just finished a parser that converts a string read from stdin into argc, argv format (for the mcb project to start an app from a running copy) it is all written in c so I may be able to help if you know the output format.
_________________
Web Programming - Pet Packaging 100 & 101
Back to top
View user's profile Send private message 
amigo

Joined: 02 Apr 2007
Posts: 2238

PostPosted: Fri 02 Mar 2012, 01:10    Post subject:  

I took another tack late last night and simply worked on your existing Makefile to make it more portable -I figured I'd avoid technosaurus cringing that way by leaving autotools out of it.

I found some small bits to clean up here and there along the way. I'll post the patches a little later.

A couple of suggestions: dating your tarball versions using this format:
20120226 will let them sort themselves naturally. Otherwise, it is hard to see which is the latest. Also, how about calling the thing gtkdialog1. I've already fixed a couple of spots where gtkdialog was still being used, but on second though maybe you'd like gtkdialog1 okay as the name. Puppy has gtkdialog(1,2,?). Since the thing is based on the original gtkdialog, I guess it wouldn't matter to use gtkdialog1 -easier to relate its' functionality to recognized tools that way.

I'm looking at cleaning up the old info page also. Are all the functions available in the original now working here? Or, do I need to cut some sections from the info page?

I really like the way this is looking and working -and I especially like the startup time! I'll have a look and see how it compares to an early gtk version -have to find out which is the oldest that will still build with gtk+-2.24
Back to top
View user's profile Send private message 
technosaurus


Joined: 18 May 2008
Posts: 4348

PostPosted: Fri 02 Mar 2012, 03:04    Post subject:  

What about doing a sed script to convert from gtkdialog4 syntax to gtkdialog1?
_________________
Web Programming - Pet Packaging 100 & 101
Back to top
View user's profile Send private message 
goingnuts

Joined: 07 Dec 2008
Posts: 780

PostPosted: Fri 02 Mar 2012, 10:52    Post subject:  

technosaurus: I do not know the formate of the parser output...but the idea of making a gtkdialog4-3-2 pre-filter/translater sounds great! Could be a general useful utility also for the official gtkdialogs I think.

amigo: If gtkdialog1 is an option as name so be it! I am working on an overview of widgets/attributes/actions that works - and the syntax needed. I do not have the full overview myself yet...so please be patient and don't through too much work in it now...
I am also working on making gdk-pixmap an option at compile time as well as getting the present code to compile with gtk2.
I wont have too much time to work on it for the next days but haven't lost steam Smile
Back to top
View user's profile Send private message Visit poster's website 
Display posts from previous:   Sort by:   
Page 3 of 14 [207 Posts]   Goto page: Previous 1, 2, 3, 4, 5, ..., 12, 13, 14 Next
Post new topic   Reply to topic View previous topic :: View next topic
 Forum index » Off-Topic Area » Programming
Jump to:  

You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group
[ Time: 0.1009s ][ Queries: 13 (0.0069s) ][ GZIP on ]