merge conflict

This commit is contained in:
IoIxD 2025-12-17 19:08:06 -07:00
commit c6c2028646
51 changed files with 1958 additions and 1592 deletions

5
BorMakefile generated
View file

@ -51,6 +51,7 @@ clean:
del /f /q src\string.obj del /f /q src\string.obj
del /f /q src\text.obj del /f /q src\text.obj
del /f /q src\unicode.obj del /f /q src\unicode.obj
del /f /q src\widget\box.obj
del /f /q src\widget\button.obj del /f /q src\widget\button.obj
del /f /q src\widget\checkbox.obj del /f /q src\widget\checkbox.obj
del /f /q src\widget\combobox.obj del /f /q src\widget\combobox.obj
@ -73,8 +74,8 @@ clean:
del /f /q src\Mw.dll del /f /q src\Mw.dll
del /f /q src\Mw.lib del /f /q src\Mw.lib
src\Mw.dll: external\stb_ds.obj external\stb_image.obj external\stb_truetype.obj src\abstract\directory.obj src\abstract\dynamic.obj src\abstract\time.obj src\backend\gdi.obj src\color.obj src\core.obj src\cursor\arrow.obj src\cursor\cross.obj src\cursor\default.obj src\cursor\hidden.obj src\cursor\text.obj src\default.obj src\dialog\colorpicker.obj src\dialog\directorychooser.obj src\dialog\filechooser.obj src\dialog\messagebox.obj src\draw.obj src\error.obj src\font\boldfont.obj src\font\boldttf.obj src\font\font.obj src\font\ttf.obj src\icon\back.obj src\icon\clock.obj src\icon\computer.obj src\icon\directory.obj src\icon\down.obj src\icon\error.obj src\icon\file.obj src\icon\forward.obj src\icon\info.obj src\icon\left.obj src\icon\news.obj src\icon\note.obj src\icon\right.obj src\icon\search.obj src\icon\up.obj src\icon\warning.obj src\lowlevel.obj src\string.obj src\text.obj src\unicode.obj src\widget\button.obj src\widget\checkbox.obj src\widget\combobox.obj src\widget\entry.obj src\widget\frame.obj src\widget\image.obj src\widget\label.obj src\widget\listbox.obj src\widget\menu.obj src\widget\numberentry.obj src\widget\opengl.obj src\widget\progressbar.obj src\widget\radiobox.obj src\widget\scrollbar.obj src\widget\separator.obj src\widget\submenu.obj src\widget\treeview.obj src\widget\viewport.obj src\widget\window.obj src\Mw.dll: external\stb_ds.obj external\stb_image.obj external\stb_truetype.obj src\abstract\directory.obj src\abstract\dynamic.obj src\abstract\time.obj src\backend\gdi.obj src\color.obj src\core.obj src\cursor\arrow.obj src\cursor\cross.obj src\cursor\default.obj src\cursor\hidden.obj src\cursor\text.obj src\default.obj src\dialog\colorpicker.obj src\dialog\directorychooser.obj src\dialog\filechooser.obj src\dialog\messagebox.obj src\draw.obj src\error.obj src\font\boldfont.obj src\font\boldttf.obj src\font\font.obj src\font\ttf.obj src\icon\back.obj src\icon\clock.obj src\icon\computer.obj src\icon\directory.obj src\icon\down.obj src\icon\error.obj src\icon\file.obj src\icon\forward.obj src\icon\info.obj src\icon\left.obj src\icon\news.obj src\icon\note.obj src\icon\right.obj src\icon\search.obj src\icon\up.obj src\icon\warning.obj src\lowlevel.obj src\string.obj src\text.obj src\unicode.obj src\widget\box.obj src\widget\button.obj src\widget\checkbox.obj src\widget\combobox.obj src\widget\entry.obj src\widget\frame.obj src\widget\image.obj src\widget\label.obj src\widget\listbox.obj src\widget\menu.obj src\widget\numberentry.obj src\widget\opengl.obj src\widget\progressbar.obj src\widget\radiobox.obj src\widget\scrollbar.obj src\widget\separator.obj src\widget\submenu.obj src\widget\treeview.obj src\widget\viewport.obj src\widget\window.obj
$(LD) $(LDFLAGS) -e$@ external\stb_ds.obj external\stb_image.obj external\stb_truetype.obj src\abstract\directory.obj src\abstract\dynamic.obj src\abstract\time.obj src\backend\gdi.obj src\color.obj src\core.obj src\cursor\arrow.obj src\cursor\cross.obj src\cursor\default.obj src\cursor\hidden.obj src\cursor\text.obj src\default.obj src\dialog\colorpicker.obj src\dialog\directorychooser.obj src\dialog\filechooser.obj src\dialog\messagebox.obj src\draw.obj src\error.obj src\font\boldfont.obj src\font\boldttf.obj src\font\font.obj src\font\ttf.obj src\icon\back.obj src\icon\clock.obj src\icon\computer.obj src\icon\directory.obj src\icon\down.obj src\icon\error.obj src\icon\file.obj src\icon\forward.obj src\icon\info.obj src\icon\left.obj src\icon\news.obj src\icon\note.obj src\icon\right.obj src\icon\search.obj src\icon\up.obj src\icon\warning.obj src\lowlevel.obj src\string.obj src\text.obj src\unicode.obj src\widget\button.obj src\widget\checkbox.obj src\widget\combobox.obj src\widget\entry.obj src\widget\frame.obj src\widget\image.obj src\widget\label.obj src\widget\listbox.obj src\widget\menu.obj src\widget\numberentry.obj src\widget\opengl.obj src\widget\progressbar.obj src\widget\radiobox.obj src\widget\scrollbar.obj src\widget\separator.obj src\widget\submenu.obj src\widget\treeview.obj src\widget\viewport.obj src\widget\window.obj -lopengl32.lib -lgdi32.lib -luser32.lib $(LD) $(LDFLAGS) -e$@ external\stb_ds.obj external\stb_image.obj external\stb_truetype.obj src\abstract\directory.obj src\abstract\dynamic.obj src\abstract\time.obj src\backend\gdi.obj src\color.obj src\core.obj src\cursor\arrow.obj src\cursor\cross.obj src\cursor\default.obj src\cursor\hidden.obj src\cursor\text.obj src\default.obj src\dialog\colorpicker.obj src\dialog\directorychooser.obj src\dialog\filechooser.obj src\dialog\messagebox.obj src\draw.obj src\error.obj src\font\boldfont.obj src\font\boldttf.obj src\font\font.obj src\font\ttf.obj src\icon\back.obj src\icon\clock.obj src\icon\computer.obj src\icon\directory.obj src\icon\down.obj src\icon\error.obj src\icon\file.obj src\icon\forward.obj src\icon\info.obj src\icon\left.obj src\icon\news.obj src\icon\note.obj src\icon\right.obj src\icon\search.obj src\icon\up.obj src\icon\warning.obj src\lowlevel.obj src\string.obj src\text.obj src\unicode.obj src\widget\box.obj src\widget\button.obj src\widget\checkbox.obj src\widget\combobox.obj src\widget\entry.obj src\widget\frame.obj src\widget\image.obj src\widget\label.obj src\widget\listbox.obj src\widget\menu.obj src\widget\numberentry.obj src\widget\opengl.obj src\widget\progressbar.obj src\widget\radiobox.obj src\widget\scrollbar.obj src\widget\separator.obj src\widget\submenu.obj src\widget\treeview.obj src\widget\viewport.obj src\widget\window.obj -lopengl32.lib -lgdi32.lib -luser32.lib
implib src\Mw.lib src\Mw.dll implib src\Mw.lib src\Mw.dll
.c.obj: .c.obj:

View file

@ -183,7 +183,7 @@ print(OUT " cp -rf include \$(DESTDIR)\$(PREFIX)/\n");
print(OUT "\n"); print(OUT "\n");
print(OUT "format:\n"); print(OUT "format:\n");
print(OUT print(OUT
" clang-format --verbose -i `find src include -name \"*.c\" -or -name \"*.h\"`\n" " clang-format --verbose -i `find src include examples -name \"*.c\" -or -name \"*.h\"`\n"
); );
print(OUT print(OUT
" perltidy -b -bext=\"/\" --paren-tightness=2 `find tools pl Makefile.pl -name \"*.pl\"`\n" " perltidy -b -bext=\"/\" --paren-tightness=2 `find tools pl Makefile.pl -name \"*.pl\"`\n"

5
NTMakefile generated
View file

@ -51,6 +51,7 @@ clean:
del /f /q src\string.obj del /f /q src\string.obj
del /f /q src\text.obj del /f /q src\text.obj
del /f /q src\unicode.obj del /f /q src\unicode.obj
del /f /q src\widget\box.obj
del /f /q src\widget\button.obj del /f /q src\widget\button.obj
del /f /q src\widget\checkbox.obj del /f /q src\widget\checkbox.obj
del /f /q src\widget\combobox.obj del /f /q src\widget\combobox.obj
@ -73,8 +74,8 @@ clean:
del /f /q src\Mw.dll del /f /q src\Mw.dll
del /f /q src\Mw.lib del /f /q src\Mw.lib
src\Mw.dll: external\stb_ds.obj external\stb_image.obj external\stb_truetype.obj src\abstract\directory.obj src\abstract\dynamic.obj src\abstract\time.obj src\backend\gdi.obj src\color.obj src\core.obj src\cursor\arrow.obj src\cursor\cross.obj src\cursor\default.obj src\cursor\hidden.obj src\cursor\text.obj src\default.obj src\dialog\colorpicker.obj src\dialog\directorychooser.obj src\dialog\filechooser.obj src\dialog\messagebox.obj src\draw.obj src\error.obj src\font\boldfont.obj src\font\boldttf.obj src\font\font.obj src\font\ttf.obj src\icon\back.obj src\icon\clock.obj src\icon\computer.obj src\icon\directory.obj src\icon\down.obj src\icon\error.obj src\icon\file.obj src\icon\forward.obj src\icon\info.obj src\icon\left.obj src\icon\news.obj src\icon\note.obj src\icon\right.obj src\icon\search.obj src\icon\up.obj src\icon\warning.obj src\lowlevel.obj src\string.obj src\text.obj src\unicode.obj src\widget\button.obj src\widget\checkbox.obj src\widget\combobox.obj src\widget\entry.obj src\widget\frame.obj src\widget\image.obj src\widget\label.obj src\widget\listbox.obj src\widget\menu.obj src\widget\numberentry.obj src\widget\opengl.obj src\widget\progressbar.obj src\widget\radiobox.obj src\widget\scrollbar.obj src\widget\separator.obj src\widget\submenu.obj src\widget\treeview.obj src\widget\viewport.obj src\widget\window.obj src\Mw.dll: external\stb_ds.obj external\stb_image.obj external\stb_truetype.obj src\abstract\directory.obj src\abstract\dynamic.obj src\abstract\time.obj src\backend\gdi.obj src\color.obj src\core.obj src\cursor\arrow.obj src\cursor\cross.obj src\cursor\default.obj src\cursor\hidden.obj src\cursor\text.obj src\default.obj src\dialog\colorpicker.obj src\dialog\directorychooser.obj src\dialog\filechooser.obj src\dialog\messagebox.obj src\draw.obj src\error.obj src\font\boldfont.obj src\font\boldttf.obj src\font\font.obj src\font\ttf.obj src\icon\back.obj src\icon\clock.obj src\icon\computer.obj src\icon\directory.obj src\icon\down.obj src\icon\error.obj src\icon\file.obj src\icon\forward.obj src\icon\info.obj src\icon\left.obj src\icon\news.obj src\icon\note.obj src\icon\right.obj src\icon\search.obj src\icon\up.obj src\icon\warning.obj src\lowlevel.obj src\string.obj src\text.obj src\unicode.obj src\widget\box.obj src\widget\button.obj src\widget\checkbox.obj src\widget\combobox.obj src\widget\entry.obj src\widget\frame.obj src\widget\image.obj src\widget\label.obj src\widget\listbox.obj src\widget\menu.obj src\widget\numberentry.obj src\widget\opengl.obj src\widget\progressbar.obj src\widget\radiobox.obj src\widget\scrollbar.obj src\widget\separator.obj src\widget\submenu.obj src\widget\treeview.obj src\widget\viewport.obj src\widget\window.obj
$(LD) $(LDFLAGS) /OUT:$@ external\stb_ds.obj external\stb_image.obj external\stb_truetype.obj src\abstract\directory.obj src\abstract\dynamic.obj src\abstract\time.obj src\backend\gdi.obj src\color.obj src\core.obj src\cursor\arrow.obj src\cursor\cross.obj src\cursor\default.obj src\cursor\hidden.obj src\cursor\text.obj src\default.obj src\dialog\colorpicker.obj src\dialog\directorychooser.obj src\dialog\filechooser.obj src\dialog\messagebox.obj src\draw.obj src\error.obj src\font\boldfont.obj src\font\boldttf.obj src\font\font.obj src\font\ttf.obj src\icon\back.obj src\icon\clock.obj src\icon\computer.obj src\icon\directory.obj src\icon\down.obj src\icon\error.obj src\icon\file.obj src\icon\forward.obj src\icon\info.obj src\icon\left.obj src\icon\news.obj src\icon\note.obj src\icon\right.obj src\icon\search.obj src\icon\up.obj src\icon\warning.obj src\lowlevel.obj src\string.obj src\text.obj src\unicode.obj src\widget\button.obj src\widget\checkbox.obj src\widget\combobox.obj src\widget\entry.obj src\widget\frame.obj src\widget\image.obj src\widget\label.obj src\widget\listbox.obj src\widget\menu.obj src\widget\numberentry.obj src\widget\opengl.obj src\widget\progressbar.obj src\widget\radiobox.obj src\widget\scrollbar.obj src\widget\separator.obj src\widget\submenu.obj src\widget\treeview.obj src\widget\viewport.obj src\widget\window.obj opengl32.lib gdi32.lib user32.lib $(LD) $(LDFLAGS) /OUT:$@ external\stb_ds.obj external\stb_image.obj external\stb_truetype.obj src\abstract\directory.obj src\abstract\dynamic.obj src\abstract\time.obj src\backend\gdi.obj src\color.obj src\core.obj src\cursor\arrow.obj src\cursor\cross.obj src\cursor\default.obj src\cursor\hidden.obj src\cursor\text.obj src\default.obj src\dialog\colorpicker.obj src\dialog\directorychooser.obj src\dialog\filechooser.obj src\dialog\messagebox.obj src\draw.obj src\error.obj src\font\boldfont.obj src\font\boldttf.obj src\font\font.obj src\font\ttf.obj src\icon\back.obj src\icon\clock.obj src\icon\computer.obj src\icon\directory.obj src\icon\down.obj src\icon\error.obj src\icon\file.obj src\icon\forward.obj src\icon\info.obj src\icon\left.obj src\icon\news.obj src\icon\note.obj src\icon\right.obj src\icon\search.obj src\icon\up.obj src\icon\warning.obj src\lowlevel.obj src\string.obj src\text.obj src\unicode.obj src\widget\box.obj src\widget\button.obj src\widget\checkbox.obj src\widget\combobox.obj src\widget\entry.obj src\widget\frame.obj src\widget\image.obj src\widget\label.obj src\widget\listbox.obj src\widget\menu.obj src\widget\numberentry.obj src\widget\opengl.obj src\widget\progressbar.obj src\widget\radiobox.obj src\widget\scrollbar.obj src\widget\separator.obj src\widget\submenu.obj src\widget\treeview.obj src\widget\viewport.obj src\widget\window.obj opengl32.lib gdi32.lib user32.lib
.c.obj: .c.obj:

7
WatMakefile generated
View file

@ -50,6 +50,7 @@ clean: .SYMBOLIC
%erase src/string.obj %erase src/string.obj
%erase src/text.obj %erase src/text.obj
%erase src/unicode.obj %erase src/unicode.obj
%erase src/widget/box.obj
%erase src/widget/button.obj %erase src/widget/button.obj
%erase src/widget/checkbox.obj %erase src/widget/checkbox.obj
%erase src/widget/combobox.obj %erase src/widget/combobox.obj
@ -72,8 +73,8 @@ clean: .SYMBOLIC
%erase src/Mw.dll %erase src/Mw.dll
%erase src/Mw.lib %erase src/Mw.lib
src/Mw.dll: external/stb_ds.obj external/stb_image.obj external/stb_truetype.obj src/abstract/directory.obj src/abstract/dynamic.obj src/abstract/time.obj src/backend/gdi.obj src/color.obj src/core.obj src/cursor/arrow.obj src/cursor/cross.obj src/cursor/default.obj src/cursor/hidden.obj src/cursor/text.obj src/default.obj src/dialog/colorpicker.obj src/dialog/directorychooser.obj src/dialog/filechooser.obj src/dialog/messagebox.obj src/draw.obj src/error.obj src/font/boldfont.obj src/font/boldttf.obj src/font/font.obj src/font/ttf.obj src/icon/back.obj src/icon/clock.obj src/icon/computer.obj src/icon/directory.obj src/icon/down.obj src/icon/error.obj src/icon/file.obj src/icon/forward.obj src/icon/info.obj src/icon/left.obj src/icon/news.obj src/icon/note.obj src/icon/right.obj src/icon/search.obj src/icon/up.obj src/icon/warning.obj src/lowlevel.obj src/string.obj src/text.obj src/unicode.obj src/widget/button.obj src/widget/checkbox.obj src/widget/combobox.obj src/widget/entry.obj src/widget/frame.obj src/widget/image.obj src/widget/label.obj src/widget/listbox.obj src/widget/menu.obj src/widget/numberentry.obj src/widget/opengl.obj src/widget/progressbar.obj src/widget/radiobox.obj src/widget/scrollbar.obj src/widget/separator.obj src/widget/submenu.obj src/widget/treeview.obj src/widget/viewport.obj src/widget/window.obj src/Mw.dll: external/stb_ds.obj external/stb_image.obj external/stb_truetype.obj src/abstract/directory.obj src/abstract/dynamic.obj src/abstract/time.obj src/backend/gdi.obj src/color.obj src/core.obj src/cursor/arrow.obj src/cursor/cross.obj src/cursor/default.obj src/cursor/hidden.obj src/cursor/text.obj src/default.obj src/dialog/colorpicker.obj src/dialog/directorychooser.obj src/dialog/filechooser.obj src/dialog/messagebox.obj src/draw.obj src/error.obj src/font/boldfont.obj src/font/boldttf.obj src/font/font.obj src/font/ttf.obj src/icon/back.obj src/icon/clock.obj src/icon/computer.obj src/icon/directory.obj src/icon/down.obj src/icon/error.obj src/icon/file.obj src/icon/forward.obj src/icon/info.obj src/icon/left.obj src/icon/news.obj src/icon/note.obj src/icon/right.obj src/icon/search.obj src/icon/up.obj src/icon/warning.obj src/lowlevel.obj src/string.obj src/text.obj src/unicode.obj src/widget/box.obj src/widget/button.obj src/widget/checkbox.obj src/widget/combobox.obj src/widget/entry.obj src/widget/frame.obj src/widget/image.obj src/widget/label.obj src/widget/listbox.obj src/widget/menu.obj src/widget/numberentry.obj src/widget/opengl.obj src/widget/progressbar.obj src/widget/radiobox.obj src/widget/scrollbar.obj src/widget/separator.obj src/widget/submenu.obj src/widget/treeview.obj src/widget/viewport.obj src/widget/window.obj
$(LD) $(LDFLAGS) option implib=src/Mw.lib name $@ file external/stb_ds.obj file external/stb_image.obj file external/stb_truetype.obj file src/abstract/directory.obj file src/abstract/dynamic.obj file src/abstract/time.obj file src/backend/gdi.obj file src/color.obj file src/core.obj file src/cursor/arrow.obj file src/cursor/cross.obj file src/cursor/default.obj file src/cursor/hidden.obj file src/cursor/text.obj file src/default.obj file src/dialog/colorpicker.obj file src/dialog/directorychooser.obj file src/dialog/filechooser.obj file src/dialog/messagebox.obj file src/draw.obj file src/error.obj file src/font/boldfont.obj file src/font/boldttf.obj file src/font/font.obj file src/font/ttf.obj file src/icon/back.obj file src/icon/clock.obj file src/icon/computer.obj file src/icon/directory.obj file src/icon/down.obj file src/icon/error.obj file src/icon/file.obj file src/icon/forward.obj file src/icon/info.obj file src/icon/left.obj file src/icon/news.obj file src/icon/note.obj file src/icon/right.obj file src/icon/search.obj file src/icon/up.obj file src/icon/warning.obj file src/lowlevel.obj file src/string.obj file src/text.obj file src/unicode.obj file src/widget/button.obj file src/widget/checkbox.obj file src/widget/combobox.obj file src/widget/entry.obj file src/widget/frame.obj file src/widget/image.obj file src/widget/label.obj file src/widget/listbox.obj file src/widget/menu.obj file src/widget/numberentry.obj file src/widget/opengl.obj file src/widget/progressbar.obj file src/widget/radiobox.obj file src/widget/scrollbar.obj file src/widget/separator.obj file src/widget/submenu.obj file src/widget/treeview.obj file src/widget/viewport.obj file src/widget/window.obj library clib3r.lib library opengl32.lib library gdi32.lib library user32.lib $(LD) $(LDFLAGS) option implib=src/Mw.lib name $@ file external/stb_ds.obj file external/stb_image.obj file external/stb_truetype.obj file src/abstract/directory.obj file src/abstract/dynamic.obj file src/abstract/time.obj file src/backend/gdi.obj file src/color.obj file src/core.obj file src/cursor/arrow.obj file src/cursor/cross.obj file src/cursor/default.obj file src/cursor/hidden.obj file src/cursor/text.obj file src/default.obj file src/dialog/colorpicker.obj file src/dialog/directorychooser.obj file src/dialog/filechooser.obj file src/dialog/messagebox.obj file src/draw.obj file src/error.obj file src/font/boldfont.obj file src/font/boldttf.obj file src/font/font.obj file src/font/ttf.obj file src/icon/back.obj file src/icon/clock.obj file src/icon/computer.obj file src/icon/directory.obj file src/icon/down.obj file src/icon/error.obj file src/icon/file.obj file src/icon/forward.obj file src/icon/info.obj file src/icon/left.obj file src/icon/news.obj file src/icon/note.obj file src/icon/right.obj file src/icon/search.obj file src/icon/up.obj file src/icon/warning.obj file src/lowlevel.obj file src/string.obj file src/text.obj file src/unicode.obj file src/widget/box.obj file src/widget/button.obj file src/widget/checkbox.obj file src/widget/combobox.obj file src/widget/entry.obj file src/widget/frame.obj file src/widget/image.obj file src/widget/label.obj file src/widget/listbox.obj file src/widget/menu.obj file src/widget/numberentry.obj file src/widget/opengl.obj file src/widget/progressbar.obj file src/widget/radiobox.obj file src/widget/scrollbar.obj file src/widget/separator.obj file src/widget/submenu.obj file src/widget/treeview.obj file src/widget/viewport.obj file src/widget/window.obj library clib3r.lib library opengl32.lib library gdi32.lib library user32.lib
@ -167,6 +168,8 @@ src/text.obj: src/text.c
$(CC) $(CFLAGS) -fo=$@ $< $(CC) $(CFLAGS) -fo=$@ $<
src/unicode.obj: src/unicode.c src/unicode.obj: src/unicode.c
$(CC) $(CFLAGS) -fo=$@ $< $(CC) $(CFLAGS) -fo=$@ $<
src/widget/box.obj: src/widget/box.c
$(CC) $(CFLAGS) -fo=$@ $<
src/widget/button.obj: src/widget/button.c src/widget/button.obj: src/widget/button.c
$(CC) $(CFLAGS) -fo=$@ $< $(CC) $(CFLAGS) -fo=$@ $<
src/widget/checkbox.obj: src/widget/checkbox.c src/widget/checkbox.obj: src/widget/checkbox.c

74
examples/basic/box.c Normal file
View file

@ -0,0 +1,74 @@
#include <Mw/Milsko.h>
MwWidget window, box;
void resize(MwWidget handle, void* user, void* client) {
int ww = MwGetInteger(handle, MwNwidth);
int wh = MwGetInteger(handle, MwNheight);
(void)user;
(void)client;
MwVaApply(box,
MwNwidth, ww,
MwNheight, wh,
NULL);
}
int main() {
MwWidget box2, box3, box4;
MwLibraryInit();
window = MwVaCreateWidget(MwWindowClass, "main", NULL, MwDEFAULT, MwDEFAULT, 600, 200,
MwNtitle, "box",
NULL);
box = MwVaCreateWidget(MwBoxClass, "box", window, 0, 0, 0, 0,
MwNpadding, 10,
MwNmargin, 10,
NULL);
box2 = MwVaCreateWidget(MwBoxClass, "box2", box, 0, 0, 0, 0,
MwNmargin, 10,
MwNorientation, MwVERTICAL,
NULL);
box3 = MwVaCreateWidget(MwBoxClass, "box3", box, 0, 0, 0, 0,
MwNmargin, 10,
MwNorientation, MwVERTICAL,
NULL);
box4 = MwVaCreateWidget(MwBoxClass, "box4", box, 0, 0, 0, 0,
MwNmargin, 10,
MwNorientation, MwVERTICAL,
MwNfixedSize, 40,
NULL);
MwVaCreateWidget(MwButtonClass, "btn1", box2, 0, 0, 0, 0,
MwNbackground, "#a00",
NULL);
MwVaCreateWidget(MwButtonClass, "btn2", box2, 0, 0, 0, 0,
MwNbackground, "#0a0",
MwNratio, 2,
NULL);
MwVaCreateWidget(MwButtonClass, "btn3", box2, 0, 0, 0, 0,
MwNbackground, "#00a",
NULL);
MwVaCreateWidget(MwButtonClass, "btn4", box3, 0, 0, 0, 0,
MwNbackground, "#a0a",
NULL);
MwVaCreateWidget(MwButtonClass, "btn5", box4, 0, 0, 0, 0,
MwNbackground, "#0aa",
NULL);
MwAddUserHandler(window, MwNresizeHandler, resize, NULL);
resize(window, NULL, NULL);
MwLoop(window);
}

View file

@ -6,8 +6,8 @@ int main() {
MwLibraryInit(); MwLibraryInit();
window = MwVaCreateWidget(MwWindowClass, "test", NULL, MwDEFAULT, MwDEFAULT, 8 + 16 + 8 + 16 * 10 + 8, 8 + 16 + 8 + 16 + 8, window = MwVaCreateWidget(MwWindowClass, "test", NULL, MwDEFAULT, MwDEFAULT, 8 + 16 + 8 + 16 * 10 + 8, 8 + 16 + 8 + 16 + 8,
MwNtitle, "checkbox", MwNtitle, "checkbox",
NULL); NULL);
MwVaCreateWidget(MwCheckBoxClass, "cb1", window, 8, 8, 16, 16, MwVaCreateWidget(MwCheckBoxClass, "cb1", window, 8, 8, 16, 16,
NULL); NULL);

View file

@ -1,13 +1,13 @@
#include <Mw/Milsko.h> #include <Mw/Milsko.h>
int main(){ int main() {
MwWidget w, cb; MwWidget w, cb;
MwLibraryInit(); MwLibraryInit();
w = MwVaCreateWidget(MwWindowClass, "main", NULL, MwDEFAULT, MwDEFAULT, 5 + 320 + 5, 5 + 24 + 5, w = MwVaCreateWidget(MwWindowClass, "main", NULL, MwDEFAULT, MwDEFAULT, 5 + 320 + 5, 5 + 24 + 5,
MwNtitle, "combobox", MwNtitle, "combobox",
NULL); NULL);
cb = MwCreateWidget(MwComboBoxClass, "combobox", w, 5, 5, 320, 24); cb = MwCreateWidget(MwComboBoxClass, "combobox", w, 5, 5, 320, 24);

View file

@ -1,20 +1,20 @@
#include <Mw/Milsko.h> #include <Mw/Milsko.h>
int main() { int main() {
MwWidget window, image, image2, image3; MwWidget window, image, image2, image3;
MwLLPixmap px, px2, px3; MwLLPixmap px, px2, px3;
MwLibraryInit(); MwLibraryInit();
window = MwVaCreateWidget(MwWindowClass, "window", NULL, MwDEFAULT, MwDEFAULT, 500, 500, window = MwVaCreateWidget(MwWindowClass, "window", NULL, MwDEFAULT, MwDEFAULT, 500, 500,
MwNtitle, "image image", MwNtitle, "image image",
NULL); NULL);
image = MwCreateWidget(MwImageClass, "image", window, 50, 50, 200, 400); image = MwCreateWidget(MwImageClass, "image", window, 50, 50, 200, 400);
image2 = MwCreateWidget(MwImageClass, "image", window, 250, 50, 200, 200); image2 = MwCreateWidget(MwImageClass, "image", window, 250, 50, 200, 200);
image3 = MwCreateWidget(MwImageClass, "image", window, 250, 250, 200, 200); image3 = MwCreateWidget(MwImageClass, "image", window, 250, 250, 200, 200);
px = MwLoadImage(window, "examples/picture.png"); px = MwLoadImage(window, "examples/picture.png");
px2 = MwLoadImage(window, "examples/picture.jpg"); px2 = MwLoadImage(window, "examples/picture.jpg");
px3 = MwLoadImage(window, "resource/logo/logo.png"); px3 = MwLoadImage(window, "resource/logo/logo.png");
if(px == NULL) px = MwLoadImage(window, "../examples/picture.png"); if(px == NULL) px = MwLoadImage(window, "../examples/picture.png");
if(px2 == NULL) px2 = MwLoadImage(window, "../examples/picture.jpg"); if(px2 == NULL) px2 = MwLoadImage(window, "../examples/picture.jpg");

View file

@ -28,7 +28,7 @@ int main() {
int i; int i;
MwListBoxPacket* packet; MwListBoxPacket* packet;
int index; int index;
MwLLPixmap px; MwLLPixmap px;
MwLibraryInit(); MwLibraryInit();

View file

@ -41,10 +41,10 @@ int main() {
MwLibraryInit(); MwLibraryInit();
msg = MwVaCreateWidget(MwWindowClass, "test", NULL, MwDEFAULT, MwDEFAULT, 300, 100, MwNtitle, "test", NULL); msg = MwVaCreateWidget(MwWindowClass, "test", NULL, MwDEFAULT, MwDEFAULT, 300, 100, MwNtitle, "test", NULL);
btn = MwVaCreateWidget(MwButtonClass, "button", msg, 8, 8, 300 - 16, (100 - 16) / 2, MwNtext, "press me!", NULL); btn = MwVaCreateWidget(MwButtonClass, "button", msg, 8, 8, 300 - 16, (100 - 16) / 2, MwNtext, "press me!", NULL);
btn2 = MwVaCreateWidget(MwButtonClass, "button", msg, 8, 8 + (100 - 16) / 2, (300 - 16) / 2, (100 - 16) / 2, MwNtext, "press me!", NULL); btn2 = MwVaCreateWidget(MwButtonClass, "button", msg, 8, 8 + (100 - 16) / 2, (300 - 16) / 2, (100 - 16) / 2, MwNtext, "press me!", NULL);
btn3 = MwVaCreateWidget(MwButtonClass, "button", msg, 8 + (300 - 16) / 2, 8 + (100 - 16) / 2, (300 - 16) / 2, (100 - 16) / 2, MwNtext, "press me!", NULL); btn3 = MwVaCreateWidget(MwButtonClass, "button", msg, 8 + (300 - 16) / 2, 8 + (100 - 16) / 2, (300 - 16) / 2, (100 - 16) / 2, MwNtext, "press me!", NULL);
MwAddUserHandler(btn, MwNactivateHandler, spawn, msg); MwAddUserHandler(btn, MwNactivateHandler, spawn, msg);
MwAddUserHandler(btn2, MwNactivateHandler, spawn2, msg); MwAddUserHandler(btn2, MwNactivateHandler, spawn2, msg);

View file

@ -5,12 +5,12 @@ int main() {
MwLibraryInit(); MwLibraryInit();
w = MwVaCreateWidget(MwWindowClass, "main", NULL, MwDEFAULT, MwDEFAULT, 5 + 640 + 5, 5 + 32 + 5, w = MwVaCreateWidget(MwWindowClass, "main", NULL, MwDEFAULT, MwDEFAULT, 5 + 640 + 5, 5 + 32 + 5,
MwNtitle, "progress bar", MwNtitle, "progress bar",
NULL); NULL);
p = MwVaCreateWidget(MwProgressBarClass, "progress", w, 5, 5, 640, 32, p = MwVaCreateWidget(MwProgressBarClass, "progress", w, 5, 5, 640, 32,
MwNvalue, 25, MwNvalue, 25,
NULL); NULL);
(void)p; (void)p;

View file

@ -6,8 +6,8 @@ int main() {
MwLibraryInit(); MwLibraryInit();
window = MwVaCreateWidget(MwWindowClass, "test", NULL, MwDEFAULT, MwDEFAULT, 8 + 16 + 8 + 16 * 10 + 8, 8 + 16 + 8 + 16 + 8, window = MwVaCreateWidget(MwWindowClass, "test", NULL, MwDEFAULT, MwDEFAULT, 8 + 16 + 8 + 16 * 10 + 8, 8 + 16 + 8 + 16 + 8,
MwNtitle, "radiobox", MwNtitle, "radiobox",
NULL); NULL);
MwVaCreateWidget(MwRadioBoxClass, "cb1", window, 8, 8, 16, 16, MwVaCreateWidget(MwRadioBoxClass, "cb1", window, 8, 8, 16, 16,
NULL); NULL);

View file

@ -55,13 +55,13 @@ void resize(MwWidget w, void* user, void* client) {
int main() { int main() {
MwWidget window; MwWidget window;
int i; int i;
MwLibraryInit(); MwLibraryInit();
window = MwVaCreateWidget(MwWindowClass, "window", NULL, MwDEFAULT, MwDEFAULT, (ww = 500), (wh = 500), window = MwVaCreateWidget(MwWindowClass, "window", NULL, MwDEFAULT, MwDEFAULT, (ww = 500), (wh = 500),
MwNtitle, "rotate", MwNtitle, "rotate",
NULL); NULL);
for(i = 0; i < (int)(sizeof(buttons) / sizeof(buttons[0])); i++) { for(i = 0; i < (int)(sizeof(buttons) / sizeof(buttons[0])); i++) {
const char* color = ""; const char* color = "";

View file

@ -3,13 +3,13 @@
int main() { int main() {
MwWidget window; MwWidget window;
int i; int i;
MwLibraryInit(); MwLibraryInit();
window = MwVaCreateWidget(MwWindowClass, "main", NULL, MwDEFAULT, MwDEFAULT, 500, 500, window = MwVaCreateWidget(MwWindowClass, "main", NULL, MwDEFAULT, MwDEFAULT, 500, 500,
MwNtitle, "main", MwNtitle, "main",
NULL); NULL);
for(i = 0; i < 500 / 16; i++) { for(i = 0; i < 500 / 16; i++) {
MwVaCreateWidget(MwScrollBarClass, "scroll", window, 16 * i, 0, 16, 500, MwVaCreateWidget(MwScrollBarClass, "scroll", window, 16 * i, 0, 16, 500,

View file

@ -20,16 +20,16 @@ void activate(MwWidget handle, void* user, void* call) {
MwAddUserHandler(MwMessageBoxGetChild(msgbox, MwMB_BUTTONOK), MwNactivateHandler, destroy, msgbox); MwAddUserHandler(MwMessageBoxGetChild(msgbox, MwMB_BUTTONOK), MwNactivateHandler, destroy, msgbox);
} }
int main(){ int main() {
MwWidget tv; MwWidget tv;
MwLLPixmap px; MwLLPixmap px;
int i; int i;
void* p = NULL, *r; void * p = NULL, *r;
MwLibraryInit(); MwLibraryInit();
wmain = MwCreateWidget(MwWindowClass, "main", NULL, MwDEFAULT, MwDEFAULT, 5 + 640 + 5, 5 + 480 + 5); wmain = MwCreateWidget(MwWindowClass, "main", NULL, MwDEFAULT, MwDEFAULT, 5 + 640 + 5, 5 + 480 + 5);
tv = MwCreateWidget(MwTreeViewClass, "tree", wmain, 5, 5, 640, 480); tv = MwCreateWidget(MwTreeViewClass, "tree", wmain, 5, 5, 640, 480);
px = MwLoadIcon(tv, MwIconInfo); px = MwLoadIcon(tv, MwIconInfo);
@ -37,7 +37,7 @@ int main(){
MwAddUserHandler(tv, MwNactivateHandler, activate, NULL); MwAddUserHandler(tv, MwNactivateHandler, activate, NULL);
for(i = 0; i < 10; i++){ for(i = 0; i < 10; i++) {
void* old = p; void* old = p;
MwTreeViewAdd(tv, old, px, "World"); MwTreeViewAdd(tv, old, px, "World");

View file

@ -108,14 +108,14 @@ static void mouse_move(MwWidget handle, void* user, void* call) {
int main() { int main() {
MwSizeHints hints; MwSizeHints hints;
MwWidget window, viewport; MwWidget window, viewport;
MwLibraryInit(); MwLibraryInit();
window = MwVaCreateWidget(MwWindowClass, "main", NULL, MwDEFAULT, MwDEFAULT, 640, 480, window = MwVaCreateWidget(MwWindowClass, "main", NULL, MwDEFAULT, MwDEFAULT, 640, 480,
MwNtitle, "tripaint", MwNtitle, "tripaint",
NULL); NULL);
viewport = MwCreateWidget(MwViewportClass, "viewport", window, 5, 5, 630, 470 - 16 - 5); viewport = MwCreateWidget(MwViewportClass, "viewport", window, 5, 5, 630, 470 - 16 - 5);
hints.min_width = hints.max_width = 640; hints.min_width = hints.max_width = 640;
hints.min_height = hints.max_height = 480; hints.min_height = hints.max_height = 480;

File diff suppressed because it is too large Load diff

View file

@ -37,6 +37,17 @@
#define MwDispatch3(x, y, z) \ #define MwDispatch3(x, y, z) \
if(!x->destroyed && x->widget_class != NULL && x->widget_class->y != NULL) x->widget_class->y(x, z) if(!x->destroyed && x->widget_class != NULL && x->widget_class->y != NULL) x->widget_class->y(x, z)
/*!
* @warning Used internally
* @brief Dispatches the handler of widget class
* @param x Widget
* @param y Handler name
* @param z Argument
* @param w Argument
*/
#define MwDispatch4(x, y, z, w) \
if(!x->destroyed && x->widget_class != NULL && x->widget_class->y != NULL) x->widget_class->y(x, z, w)
#define MwWaitMS 30 #define MwWaitMS 30
#define MwDoubleClickTimeout 250 #define MwDoubleClickTimeout 250

View file

@ -50,5 +50,6 @@
#include <Mw/Widget/Separator.h> #include <Mw/Widget/Separator.h>
#include <Mw/Widget/ComboBox.h> #include <Mw/Widget/ComboBox.h>
#include <Mw/Widget/TreeView.h> #include <Mw/Widget/TreeView.h>
#include <Mw/Widget/Box.h>
#endif #endif

View file

@ -32,6 +32,9 @@
#define MwNpadding "Ipadding" #define MwNpadding "Ipadding"
#define MwNborderWidth "IborderWidth" #define MwNborderWidth "IborderWidth"
#define MwNfillArea "IfillArea" #define MwNfillArea "IfillArea"
#define MwNratio "Iratio"
#define MwNfixedSize "IfixedSize"
#define MwNmargin "Imargin"
#define MwNtitle "Stitle" #define MwNtitle "Stitle"
#define MwNtext "Stext" #define MwNtext "Stext"

View file

@ -32,11 +32,13 @@ typedef void* MwWidget;
typedef void (*MwHandler)(MwWidget handle); typedef void (*MwHandler)(MwWidget handle);
typedef int (*MwHandlerWithStatus)(MwWidget handle); typedef int (*MwHandlerWithStatus)(MwWidget handle);
typedef void (*MwHandlerProp)(MwWidget handle, const char* key); typedef void (*MwHandlerProp)(MwWidget handle, const char* key);
typedef void (*MwHandlerChildrenProp)(MwWidget handle, MwWidget child, const char* key);
typedef void (*MwHandlerKey)(MwWidget handle, int key); typedef void (*MwHandlerKey)(MwWidget handle, int key);
typedef void (*MwHandlerMouse)(MwWidget handle, void* ptr); typedef void (*MwHandlerMouse)(MwWidget handle, void* ptr);
typedef void (*MwHandlerExecute)(MwWidget handle, const char* name, void* out, va_list args);
typedef void (*MwUserHandler)(MwWidget handle, void* user_data, void* call_data); typedef void (*MwUserHandler)(MwWidget handle, void* user_data, void* call_data);
typedef void (*MwErrorHandler)(int code, const char* message, void* user_data); typedef void (*MwErrorHandler)(int code, const char* message, void* user_data);
typedef void (*MwHandlerExecute)(MwWidget handle, const char* name, void* out, va_list args);
struct _MwTextKeyValue { struct _MwTextKeyValue {
char* key; char* key;
@ -175,21 +177,26 @@ struct _MwListBoxPacket {
}; };
struct _MwClass { struct _MwClass {
MwHandlerWithStatus create; MwHandlerWithStatus create;
MwHandler destroy; MwHandler destroy;
MwHandler draw; MwHandler draw;
MwHandler click; MwHandler click;
MwHandler parent_resize; MwHandler parent_resize;
MwHandlerProp prop_change; MwHandlerProp prop_change;
MwHandler mouse_move; MwHandler mouse_move;
MwHandlerMouse mouse_up; MwHandlerMouse mouse_up;
MwHandlerMouse mouse_down; MwHandlerMouse mouse_down;
MwHandlerKey key; MwHandlerKey key;
MwHandlerExecute execute; MwHandlerExecute execute;
MwHandler tick; MwHandler tick;
void* reserved3; MwHandler resize;
void* reserved4; MwHandler children_update;
void* reserved5; MwHandlerChildrenProp children_prop_change;
void* reserved1;
void* reserved2;
void* reserved3;
void* reserved4;
void* reserved5;
}; };
#endif #endif

24
include/Mw/Widget/Box.h Normal file
View file

@ -0,0 +1,24 @@
/*!
* @file Mw/Widget/Box.h
* @brief Box widget
*/
#ifndef __MW_WIDGET_BOX_H__
#define __MW_WIDGET_BOX_H__
#include <Mw/MachDep.h>
#include <Mw/TypeDefs.h>
#ifdef __cplusplus
extern "C" {
#endif
/*!
* @brief Box widget class
*/
MWDECL MwClass MwBoxClass;
#ifdef __cplusplus
}
#endif
#endif

View file

@ -49,6 +49,8 @@
- MwNheight - MwNheight
- MwNborderWidth - MwNborderWidth
- MwNbackgroundPixmap - MwNbackgroundPixmap
- MwNratio
- MwNfixedSize
Integer properties must be prefixed with I. Integer properties must be prefixed with I.
String properties must be prefixed with S. String properties must be prefixed with S.
@ -82,6 +84,9 @@
<integer name="showArrows" /> <integer name="showArrows" />
<integer name="padding" /> <integer name="padding" />
<integer name="borderWidth" /> <integer name="borderWidth" />
<integer name="ratio" />
<integer name="fixedSize" />
<integer name="margin" />
<string name="title" /> <string name="title" />
<string name="text" /> <string name="text" />
@ -483,6 +488,13 @@
</header> </header>
</headers> </headers>
<widgets> <widgets>
<widget name="Box">
<properties>
<property name="orientation" />
<property name="margin" />
<property name="padding" />
</properties>
</widget>
<widget name="Button"> <widget name="Button">
<properties> <properties>
<property name="pixmap" /> <property name="pixmap" />

View file

@ -65,6 +65,7 @@ new_object("src/icon/*.c");
new_object("src/font/*.c"); new_object("src/font/*.c");
new_object("src/cursor/*.c"); new_object("src/cursor/*.c");
new_object("src/widget/box.c");
new_object("src/widget/button.c"); new_object("src/widget/button.c");
new_object("src/widget/checkbox.c"); new_object("src/widget/checkbox.c");
new_object("src/widget/combobox.c"); new_object("src/widget/combobox.c");
@ -110,6 +111,7 @@ new_example("examples/basic/progressbar");
new_example("examples/basic/colorpicker"); new_example("examples/basic/colorpicker");
new_example("examples/basic/combobox"); new_example("examples/basic/combobox");
new_example("examples/basic/treeview"); new_example("examples/basic/treeview");
new_example("examples/basic/box");
if (param_get("opengl")) { if (param_get("opengl")) {
new_example("examples/gldemos/boing", $gl_libs); new_example("examples/gldemos/boing", $gl_libs);

File diff suppressed because it is too large Load diff

View file

@ -50,6 +50,7 @@ static void llresizehandler(MwLL handle, void* data) {
for(i = 0; i < arrlen(h->children); i++) { for(i = 0; i < arrlen(h->children); i++) {
MwDispatch(h->children[i], parent_resize); MwDispatch(h->children[i], parent_resize);
} }
MwDispatch(h, resize);
} }
static void llclosehandler(MwLL handle, void* data) { static void llclosehandler(MwLL handle, void* data) {
@ -176,6 +177,8 @@ MwWidget MwCreateWidget(MwClass widget_class, const char* name, MwWidget parent,
MwAddTickList(h); MwAddTickList(h);
} }
if(h->parent != NULL) MwDispatch(h->parent, children_update);
return h; return h;
} }
@ -378,7 +381,10 @@ void MwSetInteger(MwWidget handle, const char* key, int n) {
} else { } else {
shput(handle->integer, key, n); shput(handle->integer, key, n);
} }
if(handle->prop_event) MwDispatch3(handle, prop_change, key); if(handle->prop_event) {
MwDispatch3(handle, prop_change, key);
if(handle->parent != NULL) MwDispatch4(handle->parent, children_prop_change, handle, key);
}
} }
void MwSetText(MwWidget handle, const char* key, const char* value) { void MwSetText(MwWidget handle, const char* key, const char* value) {
@ -395,7 +401,10 @@ void MwSetText(MwWidget handle, const char* key, const char* value) {
shdel(handle->text, key); shdel(handle->text, key);
} }
} }
if(handle->prop_event) MwDispatch3(handle, prop_change, key); if(handle->prop_event) {
MwDispatch3(handle, prop_change, key);
if(handle->parent != NULL) MwDispatch4(handle->parent, children_prop_change, handle, key);
}
if(strcmp(key, MwNbackground) == 0 || strcmp(key, MwNforeground) == 0 || strcmp(key, MwNsubBackground) == 0 || strcmp(key, MwNsubForeground) == 0) { if(strcmp(key, MwNbackground) == 0 || strcmp(key, MwNforeground) == 0 || strcmp(key, MwNsubBackground) == 0 || strcmp(key, MwNsubForeground) == 0) {
MwForceRender(handle); MwForceRender(handle);
} }
@ -413,7 +422,10 @@ void MwSetVoid(MwWidget handle, const char* key, void* value) {
} else { } else {
shput(handle->data, key, value); shput(handle->data, key, value);
} }
if(handle->prop_event) MwDispatch3(handle, prop_change, key); if(handle->prop_event) {
MwDispatch3(handle, prop_change, key);
if(handle->parent != NULL) MwDispatch4(handle->parent, children_prop_change, handle, key);
}
} }
int MwGetInteger(MwWidget handle, const char* key) { int MwGetInteger(MwWidget handle, const char* key) {
@ -732,10 +744,14 @@ void MwReparent(MwWidget handle, MwWidget new_parent) {
break; break;
} }
} }
MwDispatch(handle->parent, children_update);
} }
handle->parent = new_parent; handle->parent = new_parent;
arrput(new_parent->children, handle); arrput(new_parent->children, handle);
MwDispatch(handle->parent, children_update);
} }
MwClass MwGetClass(MwWidget handle) { MwClass MwGetClass(MwWidget handle) {

View file

@ -125,7 +125,11 @@ static void okay_activate(MwWidget handle, void* user, void* call) {
} else if(stat(p, &s) != 0) { } else if(stat(p, &s) != 0) {
MwWidget msgbox = MwMessageBox(handle->parent, "File does not exist!", "Error", MwMB_ICONERROR | MwMB_BUTTONOK); MwWidget msgbox = MwMessageBox(handle->parent, "File does not exist!", "Error", MwMB_ICONERROR | MwMB_BUTTONOK);
MwAddUserHandler(MwMessageBoxGetChild(msgbox, MwMB_BUTTONOK), MwNactivateHandler, msgbox_okay, NULL); MwAddUserHandler(MwMessageBoxGetChild(msgbox, MwMB_BUTTONOK), MwNactivateHandler, msgbox_okay, NULL);
#ifdef _S_IFDIR
} else if(fc->dir_only ? ((s.st_mode & _S_IFDIR) != _S_IFDIR) : 0) {
#else
} else if(fc->dir_only ? !S_ISDIR(s.st_mode) : 0) { } else if(fc->dir_only ? !S_ISDIR(s.st_mode) : 0) {
#endif
MwWidget msgbox = MwMessageBox(handle->parent, "File is not permitted here!", "Error", MwMB_ICONERROR | MwMB_BUTTONOK); MwWidget msgbox = MwMessageBox(handle->parent, "File is not permitted here!", "Error", MwMB_ICONERROR | MwMB_BUTTONOK);
MwAddUserHandler(MwMessageBoxGetChild(msgbox, MwMB_BUTTONOK), MwNactivateHandler, msgbox_okay, NULL); MwAddUserHandler(MwMessageBoxGetChild(msgbox, MwMB_BUTTONOK), MwNactivateHandler, msgbox_okay, NULL);
} else { } else {

View file

@ -104,30 +104,25 @@ void MwDrawRect(MwWidget handle, MwRect* rect, MwLLColor color) {
void MwDrawRectFading(MwWidget handle, MwRect* rect, MwLLColor color) { void MwDrawRectFading(MwWidget handle, MwRect* rect, MwLLColor color) {
MwLLPixmap pixmap; MwLLPixmap pixmap;
int y; int y;
int x;
double darken = 0.; double darken = 0.;
int ColorDiff = get_color_diff(handle); int ColorDiff = get_color_diff(handle);
double darkenStep = (ColorDiff / 2.) / rect->height; double darkenStep = (ColorDiff / 4.) / rect->height;
unsigned long sz = rect->width * rect->height * 4; unsigned long sz = 1 * rect->height * 4;
unsigned char* data; unsigned char* data = malloc(sz);
data = malloc(sz);
memset(data, 0, sz); memset(data, 0, sz);
for(y = 0; y < rect->height; y++) { for(y = 0; y < rect->height; y++) {
MwLLColor col = MwLightenColor(handle, color, -darken, -darken, -darken); MwLLColor col = MwLightenColor(handle, color, -darken, -darken, -darken);
for(x = 0; x < rect->width; x++) { int idx = y * 4;
int idx = ((y * rect->width) + x) * 4; data[idx] = col->common.red;
data[idx] = col->common.red; data[idx + 1] = col->common.green;
data[idx + 1] = col->common.green; data[idx + 2] = col->common.blue;
data[idx + 2] = col->common.blue; data[idx + 3] = 255;
data[idx + 3] = 255;
}
MwLLFreeColor(col); MwLLFreeColor(col);
darken += darkenStep; darken += darkenStep;
} }
pixmap = MwLLCreatePixmap(handle->lowlevel, data, rect->width / 4, rect->height); pixmap = MwLLCreatePixmap(handle->lowlevel, data, 1, rect->height);
MwLLDrawPixmap(handle->lowlevel, rect, pixmap); MwLLDrawPixmap(handle->lowlevel, rect, pixmap);
MwLLDestroyPixmap(pixmap); MwLLDestroyPixmap(pixmap);

112
src/widget/box.c Normal file
View file

@ -0,0 +1,112 @@
#include <Mw/Milsko.h>
#include "../../external/stb_ds.h"
static int create(MwWidget handle) {
MwSetDefault(handle);
MwSetInteger(handle, MwNorientation, MwHORIZONTAL);
MwSetInteger(handle, MwNmargin, 0);
MwSetInteger(handle, MwNpadding, 0);
return 0;
}
static void draw(MwWidget handle) {
MwRect r;
MwLLColor base = MwParseColor(handle, MwGetText(handle, MwNbackground));
r.x = 0;
r.y = 0;
r.width = MwGetInteger(handle, MwNwidth);
r.height = MwGetInteger(handle, MwNheight);
MwDrawRect(handle, &r, base);
MwLLFreeColor(base);
}
#define Margin ((i != (arrlen(handle->children) - 1)) ? MwGetInteger(handle, MwNmargin) : 0)
static void layout(MwWidget handle) {
int i;
int sum = 0;
int horiz = MwGetInteger(handle, MwNorientation) == MwHORIZONTAL ? 1 : 0;
int sz = MwGetInteger(handle, horiz ? MwNwidth : MwNheight) - MwGetInteger(handle, MwNpadding) * 2;
int fsz = MwGetInteger(handle, horiz ? MwNheight : MwNwidth) - MwGetInteger(handle, MwNpadding) * 2;
int sk = MwGetInteger(handle, MwNpadding);
for(i = 0; i < arrlen(handle->children); i++) {
int n = MwGetInteger(handle->children[i], MwNratio);
int s = MwGetInteger(handle->children[i], MwNfixedSize);
if(n == MwDEFAULT) n = 1;
if(s != MwDEFAULT) {
sz -= s + Margin;
} else {
sum += n;
}
}
for(i = 0; i < arrlen(handle->children); i++) {
int n = MwGetInteger(handle->children[i], MwNratio);
int s = MwGetInteger(handle->children[i], MwNfixedSize);
int wsz;
if(n == MwDEFAULT) n = 1;
if(s != MwDEFAULT) {
wsz = s;
} else {
wsz = sz * n / sum;
}
wsz -= Margin;
MwVaApply(handle->children[i],
horiz ? MwNx : MwNy, sk, /* this is what gets changed */
horiz ? MwNy : MwNx, MwGetInteger(handle, MwNpadding), /* fixed between widgets */
horiz ? MwNwidth : MwNheight, wsz, /* this is what gets changed */
horiz ? MwNheight : MwNwidth, fsz, /* fixed between widgets */
NULL);
sk += wsz + Margin;
}
}
static void prop_change(MwWidget handle, const char* key) {
if(strcmp(key, MwNorientation) == 0) layout(handle);
}
static void children_prop_change(MwWidget handle, MwWidget child, const char* key) {
(void)child;
if(strcmp(key, MwNratio) == 0 || strcmp(key, MwNfixedSize) == 0) layout(handle);
}
static void resize(MwWidget handle) {
layout(handle);
}
static void children_update(MwWidget handle) {
layout(handle);
}
MwClassRec MwBoxClassRec = {
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, /* tick */
resize, /* resize */
children_update, /* children_update */
children_prop_change, /* children_prop_change */
NULL,
NULL,
NULL,
NULL,
NULL};
MwClass MwBoxClass = &MwBoxClassRec;

View file

@ -101,6 +101,11 @@ MwClassRec MwButtonClassRec = {
NULL, /* key */ NULL, /* key */
NULL, /* execute */ NULL, /* execute */
NULL, /* tick */ NULL, /* tick */
NULL, /* resize */
NULL, /* children_update */
NULL, /* children_prop_change */
NULL,
NULL,
NULL, NULL,
NULL, NULL,
NULL}; NULL};

View file

@ -50,6 +50,11 @@ MwClassRec MwCheckBoxClassRec = {
NULL, /* key */ NULL, /* key */
NULL, /* execute */ NULL, /* execute */
NULL, /* tick */ NULL, /* tick */
NULL, /* resize */
NULL, /* children_update */
NULL, /* children_prop_change */
NULL,
NULL,
NULL, NULL,
NULL, NULL,
NULL}; NULL};

View file

@ -201,6 +201,11 @@ MwClassRec MwComboBoxClassRec = {
NULL, /* key */ NULL, /* key */
func_handler, /* execute */ func_handler, /* execute */
NULL, /* tick */ NULL, /* tick */
NULL, /* resize */
NULL, /* children_update */
NULL, /* children_prop_change */
NULL,
NULL,
NULL, NULL,
NULL, NULL,
NULL}; NULL};

View file

@ -170,6 +170,11 @@ MwClassRec MwEntryClassRec = {
key, /* key */ key, /* key */
NULL, /* execute */ NULL, /* execute */
NULL, /* tick */ NULL, /* tick */
NULL, /* resize */
NULL, /* children_update */
NULL, /* children_prop_change */
NULL,
NULL,
NULL, NULL,
NULL, NULL,
NULL}; NULL};

View file

@ -58,6 +58,11 @@ MwClassRec MwFrameClassRec = {
NULL, /* key */ NULL, /* key */
NULL, /* execute */ NULL, /* execute */
NULL, /* tick */ NULL, /* tick */
NULL, /* resize */
NULL, /* children_update */
NULL, /* children_prop_change */
NULL,
NULL,
NULL, NULL,
NULL, NULL,
NULL}; NULL};

View file

@ -46,6 +46,11 @@ MwClassRec MwImageClassRec = {
NULL, /* key */ NULL, /* key */
NULL, /* execute */ NULL, /* execute */
NULL, /* tick */ NULL, /* tick */
NULL, /* resize */
NULL, /* children_update */
NULL, /* children_prop_change */
NULL,
NULL,
NULL, NULL,
NULL, NULL,
NULL}; NULL};

View file

@ -59,6 +59,11 @@ MwClassRec MwLabelClassRec = {
NULL, /* key */ NULL, /* key */
NULL, /* execute */ NULL, /* execute */
NULL, /* tick */ NULL, /* tick */
NULL, /* resize */
NULL, /* children_update */
NULL, /* children_prop_change */
NULL,
NULL,
NULL, NULL,
NULL, NULL,
NULL}; NULL};

View file

@ -605,6 +605,11 @@ MwClassRec MwListBoxClassRec = {
NULL, /* key */ NULL, /* key */
func_handler, /* execute */ func_handler, /* execute */
tick, /* tick */ tick, /* tick */
NULL, /* resize */
NULL, /* children_update */
NULL, /* children_prop_change */
NULL,
NULL,
NULL, NULL,
NULL, NULL,
NULL}; NULL};

View file

@ -201,6 +201,11 @@ MwClassRec MwMenuClassRec = {
NULL, /* key */ NULL, /* key */
func_handler, /* execute */ func_handler, /* execute */
NULL, /* tick */ NULL, /* tick */
NULL, /* resize */
NULL, /* children_update */
NULL, /* children_prop_change */
NULL,
NULL,
NULL, NULL,
NULL, NULL,
NULL}; NULL};

View file

@ -140,6 +140,11 @@ MwClassRec MwNumberEntryClassRec = {
key, /* key */ key, /* key */
NULL, /* execute */ NULL, /* execute */
NULL, /* tick */ NULL, /* tick */
NULL, /* resize */
NULL, /* children_update */
NULL, /* children_prop_change */
NULL,
NULL,
NULL, NULL,
NULL, NULL,
NULL}; NULL};

View file

@ -241,6 +241,11 @@ MwClassRec MwOpenGLClassRec = {
NULL, /* key */ NULL, /* key */
func_handler, /* execute */ func_handler, /* execute */
NULL, /* tick */ NULL, /* tick */
NULL, /* resize */
NULL, /* children_update */
NULL, /* children_prop_change */
NULL,
NULL,
NULL, NULL,
NULL, NULL,
NULL}; NULL};

View file

@ -58,6 +58,11 @@ MwClassRec MwProgressBarClassRec = {
NULL, /* key */ NULL, /* key */
NULL, /* execute */ NULL, /* execute */
NULL, /* tick */ NULL, /* tick */
NULL, /* resize */
NULL, /* children_update */
NULL, /* children_prop_change */
NULL,
NULL,
NULL, NULL,
NULL, NULL,
NULL}; NULL};

View file

@ -59,6 +59,11 @@ MwClassRec MwRadioBoxClassRec = {
NULL, /* key */ NULL, /* key */
NULL, /* execute */ NULL, /* execute */
NULL, /* tick */ NULL, /* tick */
NULL, /* resize */
NULL, /* children_update */
NULL, /* children_prop_change */
NULL,
NULL,
NULL, NULL,
NULL, NULL,
NULL}; NULL};

View file

@ -275,6 +275,11 @@ MwClassRec MwScrollBarClassRec = {
NULL, /* key */ NULL, /* key */
func_handler, /* execute */ func_handler, /* execute */
NULL, /* tick */ NULL, /* tick */
NULL, /* resize */
NULL, /* children_update */
NULL, /* children_prop_change */
NULL,
NULL,
NULL, NULL,
NULL, NULL,
NULL}; NULL};

View file

@ -47,6 +47,11 @@ MwClassRec MwSeparatorClassRec = {
NULL, /* key */ NULL, /* key */
NULL, /* execute */ NULL, /* execute */
NULL, /* tick */ NULL, /* tick */
NULL, /* resize */
NULL, /* children_update */
NULL, /* children_prop_change */
NULL,
NULL,
NULL, NULL,
NULL, NULL,
NULL}; NULL};

View file

@ -212,6 +212,11 @@ MwClassRec MwSubMenuClassRec = {
NULL, /* key */ NULL, /* key */
func_handler, /* execute */ func_handler, /* execute */
NULL, /* tick */ NULL, /* tick */
NULL, /* resize */
NULL, /* children_update */
NULL, /* children_prop_change */
NULL,
NULL,
NULL, NULL,
NULL, NULL,
NULL}; NULL};

View file

@ -493,6 +493,11 @@ MwClassRec MwTreeViewClassRec = {
NULL, /* key */ NULL, /* key */
func_handler, /* execute */ func_handler, /* execute */
tick, /* tick */ tick, /* tick */
NULL, /* resize */
NULL, /* children_update */
NULL, /* children_prop_change */
NULL,
NULL,
NULL, NULL,
NULL, NULL,
NULL}; NULL};

View file

@ -188,6 +188,11 @@ MwClassRec MwViewportClassRec = {
NULL, /* key */ NULL, /* key */
func_handler, /* execute */ func_handler, /* execute */
tick, /* tick */ tick, /* tick */
NULL, /* resize */
NULL, /* children_update */
NULL, /* children_prop_change */
NULL,
NULL,
NULL, NULL,
NULL, NULL,
NULL}; NULL};

View file

@ -521,6 +521,11 @@ MwClassRec MwVulkanClassRec = {
NULL, /* key */ NULL, /* key */
func_handler, /* execute */ func_handler, /* execute */
NULL, /* tick */ NULL, /* tick */
NULL, /* resize */
NULL, /* children_update */
NULL, /* children_prop_change */
NULL,
NULL,
NULL, NULL,
NULL, NULL,
NULL}; NULL};

View file

@ -56,6 +56,11 @@ MwClassRec MwWindowClassRec = {
NULL, /* key */ NULL, /* key */
func_handler, /* execute */ func_handler, /* execute */
NULL, /* tick */ NULL, /* tick */
NULL, /* resize */
NULL, /* children_update */
NULL, /* children_prop_change */
NULL,
NULL,
NULL, NULL,
NULL, NULL,
NULL}; NULL};

View file

@ -20,7 +20,7 @@ while (my $l = <IN>) {
print(OUT " if(strcmp(color, \"$4\") == 0){\n"); print(OUT " if(strcmp(color, \"$4\") == 0){\n");
print(OUT " rgb->red = $1;\n"); print(OUT " rgb->red = $1;\n");
print(OUT " rgb->green = $2;\n"); print(OUT " rgb->green = $2;\n");
print(OUT " rgb->green = $3;\n"); print(OUT " rgb->blue = $3;\n");
print(OUT " return;\n"); print(OUT " return;\n");
print(OUT " }\n"); print(OUT " }\n");
} }

View file

@ -18,5 +18,6 @@ for i in *.c; do
done done
cd ../.. cd ../..
rm -f milsko-examples.zip rm -f milsko-examples.zip
cp resource/logo/logo.png examples/picture.jpg examples/picture.png milsko-examples/
zip -rv milsko-examples.zip milsko-examples zip -rv milsko-examples.zip milsko-examples
rm -rf milsko-examples rm -rf milsko-examples