mirror of
https://github.com/edeproject/ede.git
synced 2023-08-10 21:13:03 +03:00
NotifyBox almost finished.
Atom initialization moved to one place. Added few ede specific atoms with implementation. Added sample test.
This commit is contained in:
70
eiconman/test/notify.cpp
Normal file
70
eiconman/test/notify.cpp
Normal file
@ -0,0 +1,70 @@
|
||||
#include <FL/Fl.H>
|
||||
#include <FL/Fl_Double_Window.H>
|
||||
#include <FL/Fl_Input.H>
|
||||
#include <FL/Fl_Button.H>
|
||||
#include <FL/Fl_Box.H>
|
||||
#include <FL/fl_show_colormap.h>
|
||||
#include <FL/x.h>
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
Fl_Button* color_button = 0;
|
||||
Fl_Input* txt = 0;
|
||||
|
||||
void color_cb(Fl_Widget*, void*) {
|
||||
Fl_Color c = fl_show_colormap(color_button->color());
|
||||
color_button->color(c);
|
||||
}
|
||||
|
||||
void send_cb(Fl_Widget*, void*) {
|
||||
printf("send: %s color: %i\n", txt->value(), color_button->color());
|
||||
|
||||
Atom _XA_EDE_DESKTOP_NOTIFY = XInternAtom(fl_display, "_EDE_DESKTOP_NOTIFY", False);
|
||||
Atom _XA_EDE_DESKTOP_NOTIFY_COLOR = XInternAtom(fl_display, "_EDE_DESKTOP_NOTIFY_COLOR", False);
|
||||
//Atom _XA_UTF8_STRING = XInternAtom(fl_display, "UTF8_STRING", false);
|
||||
|
||||
// max size
|
||||
unsigned char txt_send[8192];
|
||||
int i;
|
||||
const char* txt_val = txt->value() ? txt->value() : "(none)";
|
||||
int len = strlen(txt_val);
|
||||
|
||||
for(i = 0; i < 8192-2 && i < len; i++)
|
||||
txt_send[i] = txt_val[i];
|
||||
|
||||
txt_send[i] = '\0';
|
||||
|
||||
// send text
|
||||
XChangeProperty(fl_display, RootWindow(fl_display, fl_screen),
|
||||
_XA_EDE_DESKTOP_NOTIFY, XA_STRING, 8, PropModeReplace,
|
||||
txt_send, i + 1);
|
||||
|
||||
// send color
|
||||
int col = color_button->color();
|
||||
XChangeProperty(fl_display, RootWindow(fl_display, fl_screen),
|
||||
_XA_EDE_DESKTOP_NOTIFY_COLOR, XA_CARDINAL, 32, PropModeReplace,
|
||||
(unsigned char*)&col, sizeof(int));
|
||||
}
|
||||
|
||||
int main() {
|
||||
fl_open_display();
|
||||
|
||||
Fl_Double_Window* win = new Fl_Double_Window(295, 144, "Notify test");
|
||||
win->begin();
|
||||
txt = new Fl_Input(10, 15, 275, 25);
|
||||
txt->align(FL_ALIGN_TOP_LEFT);
|
||||
|
||||
color_button = new Fl_Button(260, 50, 25, 25, "Color");
|
||||
color_button->align(FL_ALIGN_LEFT);
|
||||
color_button->callback(color_cb);
|
||||
Fl_Box* bx = new Fl_Box(10, 50, 164, 85, "Type some text and choose color, then press Send. "
|
||||
"Desktop should get notified about this.");
|
||||
bx->align(FL_ALIGN_WRAP);
|
||||
|
||||
Fl_Button* send_button = new Fl_Button(195, 110, 90, 25, "&Send");
|
||||
send_button->callback(send_cb);
|
||||
win->end();
|
||||
win->show();
|
||||
return Fl::run();
|
||||
}
|
Reference in New Issue
Block a user