mirror of
https://gitea.nishi.boats/pyrite-dev/milsko
synced 2026-01-28 12:03:06 +00:00
add progressbar
git-svn-id: http://svn2.nishi.boats/svn/milsko/trunk@525 b9cfdab3-6d41-4d17-bbe4-086880011989
This commit is contained in:
@@ -38,8 +38,8 @@ static void draw(MwWidget handle) {
|
||||
r.width = px->width * sh;
|
||||
r.height = px->height * sh;
|
||||
}
|
||||
r.width -= MwGetDefaultBorderWidth(handle) * 2;
|
||||
r.height -= MwGetDefaultBorderWidth(handle) * 2;
|
||||
r.width -= MwDefaultBorderWidth(handle) * 2;
|
||||
r.height -= MwDefaultBorderWidth(handle) * 2;
|
||||
|
||||
r.x += (double)(ow - r.width) / 2;
|
||||
r.y += (double)(oh - r.height) / 2;
|
||||
@@ -75,7 +75,7 @@ MwClassRec MwButtonClassRec = {
|
||||
MwForceRender2, /* mouse_up */
|
||||
MwForceRender2, /* mouse_down */
|
||||
NULL, /* key */
|
||||
NULL, /* custom */
|
||||
NULL, /* execute */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -47,7 +47,7 @@ MwClassRec MwCheckBoxClassRec = {
|
||||
MwForceRender2, /* mouse_up */
|
||||
MwForceRender2, /* mouse_down */
|
||||
NULL, /* key */
|
||||
NULL, /* custom */
|
||||
NULL, /* execute */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -133,7 +133,7 @@ MwClassRec MwEntryClassRec = {
|
||||
MwForceRender2, /* mouse_up */
|
||||
MwForceRender2, /* mouse_down */
|
||||
key, /* key */
|
||||
NULL, /* custom */
|
||||
NULL, /* execute */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -23,10 +23,10 @@ static void draw(MwWidget handle) {
|
||||
fr.height = MwGetInteger(handle, MwNheight);
|
||||
MwDrawFrame(handle, &fr, base, inverted);
|
||||
|
||||
rr.x = MwGetDefaultBorderWidth(handle);
|
||||
rr.y = MwGetDefaultBorderWidth(handle);
|
||||
rr.width = MwGetInteger(handle, MwNwidth) - (MwGetDefaultBorderWidth(handle) * 2);
|
||||
rr.height = MwGetInteger(handle, MwNheight) - (MwGetDefaultBorderWidth(handle) * 2);
|
||||
rr.x = MwDefaultBorderWidth(handle);
|
||||
rr.y = MwDefaultBorderWidth(handle);
|
||||
rr.width = MwGetInteger(handle, MwNwidth) - (MwDefaultBorderWidth(handle) * 2);
|
||||
rr.height = MwGetInteger(handle, MwNheight) - (MwDefaultBorderWidth(handle) * 2);
|
||||
} else {
|
||||
|
||||
rr.x = 0;
|
||||
@@ -51,7 +51,7 @@ MwClassRec MwFrameClassRec = {
|
||||
NULL, /* mouse_up */
|
||||
NULL, /* mouse_down */
|
||||
NULL, /* key */
|
||||
NULL, /* custom */
|
||||
NULL, /* execute */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -39,7 +39,7 @@ MwClassRec MwImageClassRec = {
|
||||
NULL, /* mouse_up */
|
||||
NULL, /* mouse_down */
|
||||
NULL, /* key */
|
||||
NULL, /* custom */
|
||||
NULL, /* execute */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -56,7 +56,7 @@ MwClassRec MwLabelClassRec = {
|
||||
NULL, /* mouse_up */
|
||||
NULL, /* mouse_down */
|
||||
NULL, /* key */
|
||||
NULL, /* custom */
|
||||
NULL, /* execute */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -124,11 +124,11 @@ static void frame_mouse_down(MwWidget handle, void* user, void* call) {
|
||||
if(m->button == MwLLMouseLeft) {
|
||||
int st = 0;
|
||||
int i;
|
||||
int y = MwGetDefaultBorderWidth(handle);
|
||||
int y = MwDefaultBorderWidth(handle);
|
||||
int h = MwGetInteger(handle, MwNheight);
|
||||
|
||||
st = get_first_entry(handle->parent, lb);
|
||||
for(i = 0; (st + i) < arrlen(lb->list) && i < (h - MwGetDefaultBorderWidth(handle) * 2) / MwTextHeight(handle, "M"); i++) {
|
||||
for(i = 0; (st + i) < arrlen(lb->list) && i < (h - MwDefaultBorderWidth(handle) * 2) / MwTextHeight(handle, "M"); i++) {
|
||||
if(y <= m->point.y && m->point.y <= (y + MwTextHeight(handle, "M"))) {
|
||||
unsigned long t;
|
||||
int old = lb->selected;
|
||||
@@ -169,11 +169,11 @@ static void frame_mouse_move(MwWidget handle, void* user, void* call) {
|
||||
if(lb->pressed) {
|
||||
int st = 0;
|
||||
int i;
|
||||
int y = MwGetDefaultBorderWidth(handle);
|
||||
int y = MwDefaultBorderWidth(handle);
|
||||
int h = MwGetInteger(handle, MwNheight);
|
||||
|
||||
st = get_first_entry(handle->parent, lb);
|
||||
for(i = 0; (st + i) < arrlen(lb->list) && i < (h - MwGetDefaultBorderWidth(handle) * 2) / MwTextHeight(handle, "M"); i++) {
|
||||
for(i = 0; (st + i) < arrlen(lb->list) && i < (h - MwDefaultBorderWidth(handle) * 2) / MwTextHeight(handle, "M"); i++) {
|
||||
if(y <= p->y && p->y <= (y + MwTextHeight(handle, "M"))) {
|
||||
lb->selected = st + i;
|
||||
}
|
||||
@@ -192,21 +192,21 @@ static void frame_draw(MwWidget handle) {
|
||||
int i;
|
||||
MwPoint p;
|
||||
int st = 0;
|
||||
int ent;
|
||||
int area;
|
||||
int ent;
|
||||
int area;
|
||||
|
||||
r.x = 0;
|
||||
r.y = 0;
|
||||
r.width = MwGetInteger(handle, MwNwidth);
|
||||
r.height = MwGetInteger(handle, MwNheight);
|
||||
|
||||
p.x = MwGetDefaultBorderWidth(handle);
|
||||
p.y = MwGetDefaultBorderWidth(handle);
|
||||
p.x = MwDefaultBorderWidth(handle);
|
||||
p.y = MwDefaultBorderWidth(handle);
|
||||
|
||||
st = get_first_entry(handle->parent, lb);
|
||||
|
||||
area = r.height - MwGetDefaultBorderWidth(handle) * 2;
|
||||
ent = area / MwTextHeight(handle, "M");
|
||||
area = r.height - MwDefaultBorderWidth(handle) * 2;
|
||||
ent = area / MwTextHeight(handle, "M");
|
||||
|
||||
for(i = st; i < arrlen(lb->list) && i < st + ent; i++) {
|
||||
int selected = lb->selected == i ? 1 : 0;
|
||||
@@ -224,7 +224,7 @@ static void frame_draw(MwWidget handle) {
|
||||
if(lb->list[i].pixmap != NULL) {
|
||||
MwRect r2;
|
||||
int h = (lb->list[i].pixmap->height > MwTextHeight(handle, "M")) ? MwTextHeight(handle, "M") : lb->list[i].pixmap->height;
|
||||
r2.x = MwGetDefaultBorderWidth(handle);
|
||||
r2.x = MwDefaultBorderWidth(handle);
|
||||
r2.y = p.y + (MwTextHeight(handle, "M") - h) / 2;
|
||||
r2.width = h * lb->list[i].pixmap->width / lb->list[i].pixmap->height;
|
||||
r2.height = h;
|
||||
@@ -237,9 +237,9 @@ static void frame_draw(MwWidget handle) {
|
||||
|
||||
if(t == NULL) t = "";
|
||||
|
||||
p.x += MwGetDefaultBorderWidth(handle);
|
||||
p.x += MwDefaultBorderWidth(handle);
|
||||
MwDrawText(handle, &p, t, 0, MwALIGNMENT_BEGINNING, selected ? base : text);
|
||||
p.x += get_col_width(lb, j) - MwGetDefaultBorderWidth(handle);
|
||||
p.x += get_col_width(lb, j) - MwDefaultBorderWidth(handle);
|
||||
|
||||
if(j == 0) p.x -= MwGetInteger(handle->parent, MwNleftPadding);
|
||||
}
|
||||
@@ -259,7 +259,7 @@ static void resize(MwWidget handle) {
|
||||
int h = MwGetInteger(handle, MwNheight);
|
||||
int ih, y;
|
||||
|
||||
y = MwGetInteger(handle, MwNhasHeading) ? (MwTextHeight(handle, "M") + MwGetDefaultBorderWidth(handle) * 2) : 0;
|
||||
y = MwGetInteger(handle, MwNhasHeading) ? (MwTextHeight(handle, "M") + MwDefaultBorderWidth(handle) * 2) : 0;
|
||||
|
||||
if(lb->vscroll == NULL) {
|
||||
lb->vscroll = MwVaCreateWidget(MwScrollBarClass, "vscroll", handle, w - 16, 0, 16, h, NULL);
|
||||
@@ -288,7 +288,7 @@ static void resize(MwWidget handle) {
|
||||
MwNheight, h,
|
||||
NULL);
|
||||
}
|
||||
h -= MwGetDefaultBorderWidth(handle) * 2;
|
||||
h -= MwDefaultBorderWidth(handle) * 2;
|
||||
|
||||
ih = arrlen(lb->list);
|
||||
if(ih == 0) ih = 1;
|
||||
@@ -350,16 +350,16 @@ static void draw(MwWidget handle) {
|
||||
r.x = x;
|
||||
r.y = 0;
|
||||
r.width = get_col_width(lb, i);
|
||||
r.height = MwGetDefaultBorderWidth(handle) * 2 + MwTextHeight(handle, "M");
|
||||
r.height = MwDefaultBorderWidth(handle) * 2 + MwTextHeight(handle, "M");
|
||||
MwDrawFrame(handle, &r, base, 0);
|
||||
|
||||
x += MwGetDefaultBorderWidth(handle);
|
||||
x += MwDefaultBorderWidth(handle);
|
||||
|
||||
p.x = x;
|
||||
p.y = r.y + r.height / 2;
|
||||
MwDrawText(handle, &p, lb->list[0].name[i], 0, MwALIGNMENT_BEGINNING, text);
|
||||
|
||||
x += r.width + MwGetDefaultBorderWidth(handle);
|
||||
x += r.width + MwDefaultBorderWidth(handle);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -516,7 +516,7 @@ MwClassRec MwListBoxClassRec = {
|
||||
NULL, /* mouse_up */
|
||||
NULL, /* mouse_down */
|
||||
NULL, /* key */
|
||||
func_handler, /* custom */
|
||||
func_handler, /* execute */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -208,7 +208,7 @@ MwClassRec MwMenuClassRec = {
|
||||
mouse_up, /* mouse_up */
|
||||
mouse_down, /* mouse_down */
|
||||
NULL, /* key */
|
||||
func_handler, /* custom */
|
||||
func_handler, /* execute */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -139,7 +139,7 @@ MwClassRec MwNumberEntryClassRec = {
|
||||
mouse_up, /* mouse_up */
|
||||
mouse_down, /* mouse_down */
|
||||
key, /* key */
|
||||
NULL, /* custom */
|
||||
NULL, /* execute */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -179,7 +179,7 @@ MwClassRec MwOpenGLClassRec = {
|
||||
NULL, /* mouse_up */
|
||||
NULL, /* mouse_down */
|
||||
NULL, /* key */
|
||||
func_handler, /* custom */
|
||||
func_handler, /* execute */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
63
src/widget/progressbar.c
Normal file
63
src/widget/progressbar.c
Normal file
@@ -0,0 +1,63 @@
|
||||
/* $Id$ */
|
||||
#include <Mw/Milsko.h>
|
||||
|
||||
static int create(MwWidget handle) {
|
||||
MwSetDefault(handle);
|
||||
MwVaApply(handle,
|
||||
MwNminValue, 0,
|
||||
MwNmaxValue, 100,
|
||||
MwNvalue, 0,
|
||||
NULL);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void draw(MwWidget handle) {
|
||||
MwRect r;
|
||||
MwLLColor base = MwParseColor(handle, MwGetText(handle, MwNbackground));
|
||||
MwLLColor fill = MwParseColor(handle, MwGetText(handle, MwNforeground));
|
||||
double w;
|
||||
|
||||
r.x = 0;
|
||||
r.y = 0;
|
||||
r.width = MwGetInteger(handle, MwNwidth);
|
||||
r.height = MwGetInteger(handle, MwNheight);
|
||||
|
||||
MwDrawFrame(handle, &r, base, 1);
|
||||
MwDrawRect(handle, &r, base);
|
||||
w = MwGetInteger(handle, MwNvalue) - MwGetInteger(handle, MwNminValue);
|
||||
w = w / (MwGetInteger(handle, MwNmaxValue) - MwGetInteger(handle, MwNminValue));
|
||||
|
||||
r.x += MwDefaultBorderWidth(handle);
|
||||
r.y += MwDefaultBorderWidth(handle);
|
||||
r.width -= MwDefaultBorderWidth(handle) * 2;
|
||||
r.height -= MwDefaultBorderWidth(handle) * 2;
|
||||
|
||||
r.width = r.width * w;
|
||||
MwDrawRect(handle, &r, fill);
|
||||
|
||||
MwLLFreeColor(fill);
|
||||
MwLLFreeColor(base);
|
||||
}
|
||||
|
||||
static void prop_change(MwWidget handle, const char* key) {
|
||||
if(strcmp(key, MwNminValue) == 0 || strcmp(key, MwNmaxValue) == 0 || strcmp(key, MwNvalue) == 0) MwForceRender(handle);
|
||||
}
|
||||
|
||||
MwClassRec MwProgressBarClassRec = {
|
||||
create, /* create */
|
||||
NULL, /* destroy */
|
||||
draw, /* draw */
|
||||
NULL, /* click */
|
||||
NULL, /* parent_resize */
|
||||
prop_change, /* prop_change */
|
||||
NULL, /* mouse_move */
|
||||
NULL, /* mouse_up */
|
||||
NULL, /* mouse_down */
|
||||
NULL, /* key */
|
||||
NULL, /* execute */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL};
|
||||
MwClass MwProgressBarClass = &MwProgressBarClassRec;
|
||||
@@ -194,13 +194,13 @@ static void mouse_down(MwWidget handle, void* ptr) {
|
||||
scr->point = handle->mouse_point;
|
||||
scr->drag = 0;
|
||||
if(or == MwVERTICAL) {
|
||||
int tri = (ww - MwGetDefaultBorderWidth(handle) * 2) + MwGetDefaultBorderWidth(handle);
|
||||
int tri = (ww - MwDefaultBorderWidth(handle) * 2) + MwDefaultBorderWidth(handle);
|
||||
if(tri <= scr->point.y && scr->point.y <= (wh - tri)) {
|
||||
scr->drag = 1;
|
||||
scr->pos = calc_positition(handle) - scr->point.y;
|
||||
}
|
||||
} else if(or == MwHORIZONTAL) {
|
||||
int tri = (wh - MwGetDefaultBorderWidth(handle) * 2) + MwGetDefaultBorderWidth(handle);
|
||||
int tri = (wh - MwDefaultBorderWidth(handle) * 2) + MwDefaultBorderWidth(handle);
|
||||
if(tri <= scr->point.x && scr->point.x <= (ww - tri)) {
|
||||
scr->drag = 1;
|
||||
scr->pos = calc_positition(handle) - scr->point.x;
|
||||
@@ -225,13 +225,13 @@ static int mwScrollBarGetVisibleLengthImpl(MwWidget handle) {
|
||||
int s = 0;
|
||||
|
||||
if(or == MwVERTICAL) {
|
||||
tri = (ww - MwGetDefaultBorderWidth(handle) * 2) * 2;
|
||||
tri = (ww - MwDefaultBorderWidth(handle) * 2) * 2;
|
||||
s = wh;
|
||||
} else if(or == MwHORIZONTAL) {
|
||||
tri = (wh - MwGetDefaultBorderWidth(handle) * 2) * 2;
|
||||
tri = (wh - MwDefaultBorderWidth(handle) * 2) * 2;
|
||||
s = ww;
|
||||
}
|
||||
return s - tri - MwGetDefaultBorderWidth(handle) * 2;
|
||||
return s - tri - MwDefaultBorderWidth(handle) * 2;
|
||||
}
|
||||
|
||||
static void func_handler(MwWidget handle, const char* name, void* out, va_list va) {
|
||||
@@ -253,7 +253,7 @@ MwClassRec MwScrollBarClassRec = {
|
||||
MwForceRender2, /* mouse_up */
|
||||
mouse_down, /* mouse_down */
|
||||
NULL, /* key */
|
||||
func_handler, /* custom */
|
||||
func_handler, /* execute */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -207,7 +207,7 @@ MwClassRec MwSubMenuClassRec = {
|
||||
MwForceRender2, /* mouse_up */
|
||||
MwForceRender2, /* mouse_down */
|
||||
NULL, /* key */
|
||||
func_handler, /* custom */
|
||||
func_handler, /* execute */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -157,7 +157,7 @@ MwClassRec MwViewportClassRec = {
|
||||
NULL, /* mouse_up */
|
||||
NULL, /* mouse_down */
|
||||
NULL, /* key */
|
||||
func_handler, /* custom */
|
||||
func_handler, /* execute */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -523,7 +523,7 @@ MwClassRec MwVulkanClassRec = {
|
||||
NULL, /* mouse_up */
|
||||
NULL, /* mouse_down */
|
||||
NULL, /* key */
|
||||
func_handler, /* custom */
|
||||
func_handler, /* execute */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -43,7 +43,7 @@ MwClassRec MwWindowClassRec = {
|
||||
NULL, /* mouse_up */
|
||||
NULL, /* mouse_down */
|
||||
NULL, /* key */
|
||||
func_handler, /* custom */
|
||||
func_handler, /* execute */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
Reference in New Issue
Block a user