mirror of
https://github.com/edeproject/ede.git
synced 2023-08-10 21:13:03 +03:00
94 lines
1.8 KiB
C++
94 lines
1.8 KiB
C++
|
/*
|
||
|
* $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());
|
||
|
|
||
|
fl_clip(xoff, yoff, woff, hoff);
|
||
|
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();
|
||
|
|
||
|
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
|