(gilbertt)
Ok. More config window stuff.
Fun fun. I had to create a new type, Epplet_window to hold some window info,
and a stack to push and pop contexts for adding gadgets to different new
windows. This stuff works real well, and I am chuffed with it :)
The extra windows now redraw themselves on exposes, and new gadgets can be
added to them successfully. W00p.
I had to implement some new stuff, so please check nothing is broke (I am
not finished, but I don't want to commit code that breaks stuff).
Here are some details on the new stuff :)
---------------
PUBLIC STUFF
typedef struct epplet_window
{
Window win;
int w;
int h;
Pixmap bg_pmap;
Pixmap bg_mask;
Pixmap bg_bg;
}EppWindow;
typedef EppWindow *Epplet_window;
Epplet_window Epplet_create_window(int w,int h,int x,int y,char *title);
void Epplet_window_show(Epplet_window win);
void Epplet_window_hide(Epplet_window win);
void Epplet_window_destroy(Epplet_window win);
void Epplet_window_push_context(Epplet_window newwin);
Epplet_window Epplet_window_pop_context(void);
---------------
PRIVATE STUFF
static Epplet_window context_win; /* Current context win */
static int window_stack_pos; /* For context changes */
static Epplet_window window_stack[20]; /* For context changes */
static Epplet_window mainwin; /* Always the main epplet window */
static int window_num = 0; /* For window list */
static Epplet_window *windows = NULL; /* List of windows to loop though */
/* For Keeping a list of windows owned by the epplet, to loop through and
* do stuff with. */
static void Epplet_register_window(Epplet_window win);
static void Epplet_unregister_window(Epplet_window win);
/* Redraw all epplet windows (excluding the main epplet window) */
static void Epplet_draw_windows(void);
/* Redraw window win */
static void Epplet_draw_window(Epplet_window win);
/* Refresh window backgrounds on theme change */
static void Epplet_refresh_backgrounds(void);
-------------
I also added an item to GadGeneral so that I can find what window a gadget
was created on:
typedef struct gad_general
{
GadType type;
char visible;
Epplet_window parent;
}
GadGeneral;
-------------
Not to mention the reworking of code which draws or handles windows.
I have more tinkering to do in the event handling, to catch delete_events,
and to filter out mouseovers etc for separate windows. Tomorrow :)
SVN revision: 1478
(KainX)
For one thing, I think I've fixed the seg fault in E-MoonClock. Here's
hoping.
I also added the background setting functionality to E-Slides, but this time
it was done *right*. :-) Take a look and see for yourself. If you look at
the code, it also demonstrates how to use E IPC to set backgrounds.
SVN revision: 1476
(gilbertt)
api changes.
Ok. I have added some functions to the api, they are not yet perfect, but
they compile cleanly and don't create any problems. Don't use them yet
though, the api may change.
Window Epplet_create_window(int w,int h,int x,int y,char *title);
void Epplet_window_show(Window win);
void Epplet_window_hide(Window win);
void Epplet_window_destroy(Window win);
void Epplet_window_switch_context(Window newwin);
void Epplet_window_reset_context(void);
All of these functions are in place and work. I have yet to add code to
handle delete_events. At the moment, if you close the dialog window, the
epplet exits. This is clearly not intended ;) I'll fix it tomorrow, its late
here now.
You can even switch context and add widgets to your new window with no
problems ;)
Other things to fix tomorrow is the event handling stuff which assumes only
one window will be around...
I am currently using E-ScreenSave as my test epplet for this code, as I know
only about 2 people use it ;) Try it to see the code working.
SVN revision: 1472
(KainX)
Applied and modified significantly a patch to support E-NetFlame on Solaris.
Thanks to Tomas Calvo Gomez <tcalvo@tid.es> and Mark Bowyer
<Moredhel@earthling.net> for supplying the Solaris-isms. :-)
SVN revision: 1458
(KainX)
Major restructuring and cleanup. I think the new standard should be pretty
self-explanatory, but let me know if you have any questions. CVS developers,
PLEASE read epplets/Makefile.am carefully to see how it all works now.
Icons are stored in epplets/icons/ and are installed into
$EROOT/epplet_icons/. All miscellaneous data files (including images) are
stored in epplets/<epplet name>-data/ and are installed into
$EROOT/epplet_data/<epplet name>/. Also note that, if you're going to use the
same old aircut3.ttf and bg.png in your help section, add your epplet's name
to NEED_BG and NEED_FONT in epplets/Makefile.am. Do NOT commit duplicates of
those two files.
SVN revision: 1394
around. I need to fix the way it figures out where to stop spitting out
chars since upper/lowercase chars are not all the same width. I'll look into
it unless someone has some insight on this.
SVN revision: 1264
(KainX)
Okay, I've fixed the API issue with Epplet_modify_config(), and I've fixed the
weird Epplet_reset_textbox() behavior. (For the record, there was never a
buffer overflow here. The textbox contents are dynamically allocated and
resized.)
I also tweaked some of Tom's changes both for style and more robustness. I
also fixed the OK dialog error the "right" way. The real problem was not
calling Esync() before exiting. :-)
Now if only I could talk Tom into putting a newline at the end of his
ChangeLog entries.... ;-)
SVN revision: 1254
(KainX)
E-Slides, a slideshow epplet. This is just the initial version; more features
coming soon. :-)
Also some API additions/bugfixes.
SVN revision: 1176
(Mandrake)
gave gilbertt access to put screenshoot in CVS. YOU NEED TO MODIFY THE
CHANGELOG THOUGH. fixed some warnings here and there. I don't like warnings
SVN revision: 1076