Commit Graph

67 Commits

Author SHA1 Message Date
Kim Woelders 83e1e71bee Introduce Epplet_adjust_priority()
Avoiding some code duplication.
2021-08-31 07:11:23 +02:00
Kim Woelders a128ce65ce Drop snprintf source
Nobody hasn't got that these days.

Also drop some unused autofoo stuff.
2021-08-31 07:11:23 +02:00
Kim Woelders 901f4af699 Eliminate obsolete AC_HEADER_TIME 2021-03-26 16:33:08 +01:00
Kim Woelders 2e970c84f8 Fix build with -fvisibility=hidden
Just using EAPI from Imlib2.h.
2019-03-13 18:52:38 +01:00
Kim Woelders 49aafdaf62 Change Epplet_dialog_ok() to printf() style
.. avoiding some format-truncation warnings.
2018-08-13 13:22:08 +02:00
Kim Woelders 919dc4c069 Warning cleanups - api. 2016-08-19 09:31:09 +02:00
Lucas De Marchi 2d992bb760 Spell: rememebr => remember
SVN revision: 50686
2010-07-30 11:34:08 +00:00
Kim Woelders 67b96eca0f GLU is not used.
SVN revision: 32746
2007-11-17 16:22:59 +00:00
Kim Woelders 57ec0d1a09 Use libc snprintf if available.
SVN revision: 28803
2007-03-18 22:29:36 +00:00
Kim Woelders d83d1aaf7b Cleanups.
SVN revision: 28793
2007-03-18 04:49:48 +00:00
Mike Frysinger 69bae81b7f include more headers to kill off implicit declaration of function warnings
SVN revision: 22138
2006-04-15 19:39:32 +00:00
Kim Woelders e26a45d2dd Pass data install path by function call in stead of by EROOT in epplet.h.
Look up images in epplet data dir.


SVN revision: 22086
2006-04-13 08:26:31 +00:00
Kim Woelders 9d209516ba Add functions to get epplet data and e16 user directories.
SVN revision: 22068
2006-04-12 19:22:45 +00:00
Kim Woelders 81fc998f0c Eliminate EBIN.
SVN revision: 22066
2006-04-12 18:20:45 +00:00
Kim Woelders baee7c2162 Remove unused obsolete macro.
SVN revision: 22064
2006-04-12 16:57:49 +00:00
Kim Woelders 528b750a2c Move to Imlib2. Build for e16.8.
- This is a quick and dirty port to imlib2. It's posible to clean/speed up
  things considerably here and there.
- It's not unlikely that I missed some spots that require fixups.


SVN revision: 21639
2006-03-31 22:56:17 +00:00
Horms 320c97df7d * Added Epplet_change_popbutton_label
* Added gatghet type checking to Epplet_draw_popupbutton and
  Epplet_draw_label.


SVN revision: 2895
2000-06-29 23:54:24 +00:00
Michael Jennings 74bcebe339 Don't use this. It still has issues. I'll have to fix them later or
tomorrow.


SVN revision: 2584
2000-04-30 23:19:22 +00:00
Michael Jennings 59569ccb87 Thu Apr 27 21:29:17 PDT 2000
(KainX)

A configuration dialog for E-Toolbox.  Not that it actually alters anything
yet, but we're getting there. :-)


SVN revision: 2571
2000-04-28 04:22:02 +00:00
Michael Jennings 23ccc9c365 Wed Apr 26 20:06:43 PDT 2000
(KainX)

First off, I altered the API library so that images would be properly scaled
before being drawn, rather than just assuming that the image size was okay.  I
also added a function, Epplet_add_sized_popup_entry(), to allow for image
buttons with scaled images in a popup.  Added popup support to E-Toolbox as
well.  You can now have buttons that popup other buttons, and those other
buttons can have images or labels.  So can the popup button itself, and the
popup button can be a "standard" button too.  (The only caviat is that the
popup button must come before any of the buttons in the menu that it pops up;
no biggie.)

I've included a sample config file to demonstrate this.  popup-sample.cfg
shows a single 1x1 up-arrow button which pops up several other buttons.  Nice
and small; stays out of your way until you need it. :-)

I had to fix several issues with the epplet library to make some of this stuff
work, but nothing that violates the spirit of epplets.  For example,
Epplet_gadget_show() now delays the actual drawing of the epplet gadgets until
the epplet itself is unhidden.  And the image button sizing bug with the popup
stuff is fixed.  Stuff like that. =)

I'm going to try to add a GUI configuration interface, as well as come up with
some more sophisticated sample configs.  Just give me time.

Also, if you have a toolbox icon (preferably rendered) or can make one, please
let me know.  E-Toolbox needs an icon. :-)


SVN revision: 2558
2000-04-27 05:25:45 +00:00
Wayde Milas 7e40e68d81 Added Epplet_default_bind_GL, a quick and dirty default binding for people
to use if the new Epplet_bind_double_GL confuses the hell out of em and they
dont need Epplet_bind_double_GL various buffer settings.


SVN revision: 1975
2000-01-25 21:51:46 +00:00
Wayde Milas f467bc0d4a Altered the api so that you can define ALL the nitty gritty GLX stuf like
accumulation buffers for red, green, blue, alpha channels, depth buffers,
stencil buffers, ect. I'll Add default easier to use calls next.


SVN revision: 1973
2000-01-25 21:07:05 +00:00
Wayde Milas b8b567d918 Added the beginnings of single and double buffer abstraction.
SVN revision: 1928
2000-01-15 03:07:11 +00:00
Michael Jennings 5eb1a92d91 Somebody has some really screwy indenting going on here.
SVN revision: 1926
2000-01-15 02:30:43 +00:00
Wayde Milas 8d31da375f Cleaned up some ifdefs that fubared non glx machines, added the single
front buffer poto.


SVN revision: 1925
2000-01-15 02:13:09 +00:00
Wayde Milas a7d077c7e4 Added GLX routines to epplet.c and epplet.h. Added OpenGL lib checking
and header checking (I hope) to configure.in and acconfig.h


SVN revision: 1920
2000-01-15 00:42:59 +00:00
Michael Jennings e4cf75a03e Wed Jan 5 20:11:40 PST 2000
(KainX)

New version number and copyright dates that include 2000.


SVN revision: 1859
2000-01-05 16:24:01 +00:00
Christian Kreibich d0c758d6c7 Added a destructor for RGB_buf's. From epplet.h:
/* free an RGB buffer */
void            Epplet_free_rgb_buf(RGB_buf buf);

I think the user shouldn't have to think about the internals of an RGB_buf
in order to free it.


SVN revision: 1695
1999-12-20 15:41:23 +00:00
Michael Jennings 69f99ab980 Thu Dec 16 19:56:24 PST 1999
(KainX)

API changes here, all in order to make E-Disk and E-MemWatch be able to toggle
between the old arrangement and the new.  So basically, you can now move
gadgets to new locations.


SVN revision: 1647
1999-12-16 21:17:27 +00:00
Christian Kreibich 91bac7739a Added querying for multiple configs. If you have a group of configuration
settings that you want to refer to under the same key (e.g. the apps that
a launcher starts up etc), use

void Epplet_modify_multi_config(char *key, char **values, int num);

And if you want to query for a group of settings, use this:

char **Epplet_query_multi_config(char *key, int *num);

Note that you have to free() the returned array here. The key is internally
encoded into __key__1 for the first string, __key__2 for the second etc.

I put some testing code for this into ConfigTestEpplet.c The epplet will
remember all the command line parameters you give on startup and dump
them.

Also extended E-Mountbox so that the users can now define the patterns
in the device or mountpoint and corresponding icons themselves. Currently
still via the config file, but the dialog is there. Not functional yet,
though.


SVN revision: 1612
1999-12-13 17:38:52 +00:00
Tom Gilbert c598b0c3ce Just some comments to explain stuff better.
SVN revision: 1597
1999-12-12 16:01:50 +00:00
Tom Gilbert ad8c5fe782 Thu Dec 09 20:49:42 GMT 1999
(gilbertt)

Hrm. If nobody minds... I've added:

Window Epplet_create_window_borderless(int w,int h,char *title, char vertical);

In case anyone fancies a borderless window. Or two. For displaying things. In
windows. Without borders. For whatever reason. Erm. I'll stop now.


SVN revision: 1564
1999-12-09 15:40:08 +00:00
Michael Jennings 9cbe26bb39 Mon Dec 6 20:18:45 PST 1999
(KainX)

E-Slides now has a full-featured working config dialog.  Damn good work, Tom.


SVN revision: 1523
1999-12-06 23:29:54 +00:00
Tom Gilbert da9f7b42f2 Sat Dec 04 23:02:13 GMT 1999
(gilbertt)

By popular demand:

/* A cut down version for image-only buttons */
Epplet_gadget   Epplet_create_image_button(char *image, int x, int y,
                                     int w, int h,
                                     void (*func) (void *data), void *data);

That's the last of them! No more =P


SVN revision: 1499
1999-12-04 18:33:47 +00:00
Tom Gilbert d769f660e9 Sat Dec 04 22:59:21 GMT 1999
(gilbertt)

Oops. Make that:

/* A cut down version for text-only buttons */
Epplet_gadget   Epplet_create_text_button(char *label, int x, int y,
                                     int w, int h,
                                     void (*func) (void *data), void *data);

/* A cut down version for stdimage-only buttons */
Epplet_gadget   Epplet_create_std_button(char *std, int x, int y,
                                     void (*func) (void *data), void *data);

STD images do not need w or h parameters.

=P


SVN revision: 1498
1999-12-04 18:23:52 +00:00
Tom Gilbert 59e7b0ab11 Sat Dec 04 22:46:57 GMT 1999
(gilbertt)

Added some less complex button functions, left the old one in place, so as
not to break anyone's lovely epplets :)

Here's what you got:

/* A cut down version for text-only buttons */
Epplet_gadget   Epplet_create_text_button(char *label, int x, int y,
                                     int w, int h,
                                     void (*func) (void *data), void *data);
/* A cut down version for stdimage-only buttons */
Epplet_gadget   Epplet_create_std_button(char *std, int x, int y,
                                     int w, int h,
                                     void (*func) (void *data), void *data);

Those window things in the original one should really be buried in the api,
and not public, but I won't break anyone's code. There ya go :)


SVN revision: 1497
1999-12-04 18:19:04 +00:00
Tom Gilbert eb5b17c67f Sat Dec 04 01:05:38 GMT 1999
(gilbertt)

So, say hello to Epplet_create_window_config.

It rules ;)

Here's the definition:

Window Epplet_create_window_config(int w,int h,char *title,
         void (*ok_func) (void *data),void *ok_data,
         void (*apply_func) (void *data),void *apply_data,
         void (*cancel_func) (void *data),void *cancel_data);

You can picture what it does, and check it out in E-ScreenSave. (Press the
"Lock" button).

The cool thing is that if you supply NULL for any of the callbacks, that
button won't be added to the dialog. So, for an Ok, Cancel dialog, just
supply NULL for apply_func.

I have added explanation to the epplet.h file, and would like people to bang
at this now? I will set my epplets up to use the new functions fully over
the weekend. This will help me find any problems, as I haven't tested adding
every type of gadget to config windows yet, there may still be redraw issues
I missed.

Its pretty nice now though, and I have checked for memory leaks and bad
handling, please point out anything dubious you see. The api will become
more rich over the next few days, then it should stabilise.

Any feature suggestions, send 'em now :)


SVN revision: 1493
1999-12-03 20:56:49 +00:00
Tom Gilbert 48ce42038e Fri Dec 03 23:47:45 GMT 1999
(gilbertt)

Okay. Lots has changed. It was pretty inconsistant to have loads of
functions returning or requiring a "Window win" paramater, and mine dealing
with "Epplet_window" parameters. I had to lose one, so I lost the one which
caused no breakage. Mine :)

I still use Epplet_window internally to encapsulate data on a per-window
basis. However, all public functions deal with "Window win" again. Now
things are consistant. The Epplet_window type is now private and hidden.

To do this, I have implemented a little lookup function to relate
Epplet_windows to Windows, which should be more than adequate for our needs.

You can now declare a delete event handler for your whole epplet, although I
may change to per-window delete event handlers if people request it.

If you return 1 from the delete event handler, or don't supply one, or
supply NULL, the window will be destroyed for you, if you return 0, the
delete event will be ignored. Use this to do things like saying "hrm, those
two settings cannot coexist" or "that file does not exist" etc.

I'm nearly finished with the window functions now, and will next add
convenience wrappers such as Epplet_create_window_config(...) to add ok,
apply and save buttons and setup callbacks for you, and some other stuff
too.

I'd appreciate it if people would poke around and see what they think, I'm
new at this Xlib stuf...


SVN revision: 1490
1999-12-03 19:34:55 +00:00
Tom Gilbert 34f7e90373 Fri Dec 03 20:22:56 GMT 1999
(gilbertt)

Removed the int x, and int y properties for Epplet_create_window, as they
were pretty pointless, and I hate it when windows decide where they should
go ;)


SVN revision: 1487
1999-12-03 16:05:33 +00:00
Tom Gilbert aad5f10990 Fri Dec 03 20:11:23 GMT 1999
(gilbertt)

Right. You can now specify a "vertical" property for your new window. Works
the same as the vertical parameter in Epplet_init. Uses the same
imageclasses too.

I had a big headache debugging this, it just didn't seem to work, I knew
BrushedMetal (the theme I use) had a different (green) vertical pixmap, but
the windows always came up grey. Just when I was about to go mental, I found
this in epplet.cfg:

__ICLASS __BGN
  __NAME EPPLET_BACKGROUND_HORIZONTAL
  __NORMAL "epplets/images/bg.png"
  __EDGE_SCALING   2 2 2 2
__END

__ICLASS __BGN
  __NAME EPPLET_BACKGROUND_VERTICAL
  __NORMAL "epplets/images/bg.png"
  __EDGE_SCALING   2 2 2 2
__END

Gah. No wonder the images weren't changing!

Is there a reason for this? If not, could it be changed to:

__ICLASS __BGN
  __NAME EPPLET_BACKGROUND_HORIZONTAL
  __NORMAL "epplets/images/bg.png"
  __EDGE_SCALING   2 2 2 2
__END

__ICLASS __BGN
  __NAME EPPLET_BACKGROUND_VERTICAL
  __NORMAL "epplets/images/bg_v.png"
  __EDGE_SCALING   2 2 2 2
__END

Please?

Anyway, the vertical stuff works now, and probably did an hour ago, before I
went off chasing nonexistant bugs :)

I also tidied up some other stuff, and killed another global :)

See E-ScreenSave in cvs for an example, press the "lock" button to see it in
action :)


SVN revision: 1486
1999-12-03 15:59:17 +00:00
Tom Gilbert ded180a361 Thu Dec 02 23:07:45 GMT 1999
(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
1999-12-02 19:08:48 +00:00
Tom Gilbert 4d1ca43a00 Wed Dec 01 23:05:13 GMT 1999
(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
1999-12-01 19:12:33 +00:00
Michael Jennings 8ab0c9d1cf Mon Nov 29 19:03:00 PST 1999
(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
1999-11-29 23:21:26 +00:00
Richard Barnes 7194de932b Textbox bugfixes (I hope), thanks for bitching, guys *ducks*
SVN revision: 1418
1999-11-27 17:58:33 +00:00
Michael Jennings 2238745548 Fri Nov 12 12:35:49 PST 1999
(KainX)

Cleaning up the epplets is becoming a morning routine for me.... =P


SVN revision: 1279
1999-11-12 20:13:03 +00:00
Michael Jennings db5f7faf82 Feh.
SVN revision: 1276
1999-11-12 19:52:16 +00:00
Richard Barnes bf855d9279 Ok. E-Exec now does command history of up to 15 items. Added
Epplet_change_textbox. Not thoroughly tested, but isn't that what users
are for? *runs*


SVN revision: 1261
1999-11-12 03:46:39 +00:00
Richard Barnes f7bb9a97d5 uh...uhuhuhuuhuh...this is gonna be cool...
SVN revision: 1250
1999-11-11 03:02:47 +00:00
Christian Kreibich 811247cb78 Esnprintf is in the house now :)
SVN revision: 1242
1999-11-10 23:37:53 +00:00
Richard Barnes a72703c512 added headers for the textbox functions and brief descriptions
SVN revision: 1227
1999-11-09 18:25:10 +00:00