2009-07-03 18:23:51 +04:00
|
|
|
/*
|
|
|
|
* $Id$
|
|
|
|
*
|
|
|
|
* ede-bug-report, a tool to report bugs on EDE bugzilla instance
|
|
|
|
* Part of Equinox Desktop Environment (EDE).
|
|
|
|
* Copyright (c) 2009 EDE Authors.
|
|
|
|
*
|
|
|
|
* This program is licensed under terms of the
|
|
|
|
* GNU General Public License version 2 or newer.
|
|
|
|
* See COPYING for details.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include <FL/Fl_Double_Window.H>
|
|
|
|
#include <FL/Fl.H>
|
|
|
|
|
|
|
|
#include <stdio.h>
|
|
|
|
|
|
|
|
#include <FL/fl_draw.H>
|
|
|
|
#include "PulseProgress.h"
|
|
|
|
|
|
|
|
PulseProgress::PulseProgress(int x, int y, int w, int h, const char *l) :
|
|
|
|
Fl_Widget(x, y, w, h, l), cprogress(0), blen(40), slen(5)
|
|
|
|
{
|
|
|
|
box(FL_DOWN_BOX);
|
|
|
|
color(FL_BACKGROUND_COLOR, (Fl_Color)146);
|
|
|
|
/* show it at the beginning */
|
|
|
|
cprogress += blen;
|
|
|
|
}
|
|
|
|
|
|
|
|
void PulseProgress::draw(void) {
|
|
|
|
int bx, by, bw, bh;
|
|
|
|
int xoff, yoff, woff, hoff;
|
|
|
|
|
|
|
|
bx = Fl::box_dx(box());
|
|
|
|
by = Fl::box_dy(box());
|
|
|
|
bw = Fl::box_dw(box());
|
|
|
|
bh = Fl::box_dh(box());
|
|
|
|
|
|
|
|
xoff = x() + bx;
|
|
|
|
yoff = y() + by;
|
|
|
|
woff = w() - bw;
|
|
|
|
hoff = h() - bh;
|
|
|
|
|
|
|
|
draw_box(box(), x(), y(), w(), h(), color());
|
|
|
|
|
2012-11-07 16:49:43 +04:00
|
|
|
fl_push_clip(xoff, yoff, woff, hoff);
|
2009-07-03 18:23:51 +04:00
|
|
|
Fl_Color c = fl_color();
|
|
|
|
fl_color(color2());
|
|
|
|
|
|
|
|
if(cprogress >= woff) {
|
|
|
|
/* reverse it */
|
|
|
|
cprogress = -cprogress;
|
|
|
|
} else if(cprogress == -blen) {
|
|
|
|
/* start again after reverse */
|
|
|
|
cprogress = blen;
|
|
|
|
}
|
|
|
|
|
|
|
|
if(cprogress > 0)
|
|
|
|
fl_rectf(xoff - blen + cprogress, yoff, blen, hoff);
|
|
|
|
else
|
|
|
|
fl_rectf(xoff - blen - cprogress, yoff, blen, hoff);
|
|
|
|
|
|
|
|
fl_color(c);
|
|
|
|
fl_pop_clip();
|
|
|
|
|
2012-11-07 16:49:43 +04:00
|
|
|
labelcolor(fl_contrast(labelcolor(), color()));
|
2009-07-03 18:23:51 +04:00
|
|
|
draw_label(x() + bx, y() + by, w() - bw, h() - bh);
|
|
|
|
}
|
|
|
|
|
|
|
|
void PulseProgress::step(void) {
|
|
|
|
cprogress += slen;
|
|
|
|
redraw();
|
|
|
|
}
|
|
|
|
|
|
|
|
#if 0
|
|
|
|
static PulseProgress *pp;
|
|
|
|
|
|
|
|
void cb(void *) {
|
|
|
|
pp->step();
|
|
|
|
Fl::repeat_timeout(0.06, cb);
|
|
|
|
}
|
|
|
|
|
|
|
|
int main() {
|
|
|
|
Fl_Double_Window *win = new Fl_Double_Window(300, 300);
|
|
|
|
win->begin();
|
|
|
|
pp = new PulseProgress(10, 10, 200, 25, "Sending report...");
|
|
|
|
win->end();
|
|
|
|
|
|
|
|
win->show();
|
|
|
|
|
|
|
|
Fl::add_timeout(0.06, cb);
|
|
|
|
return Fl::run();
|
|
|
|
}
|
|
|
|
#endif
|