git-svn-id: http://svn2.nishi.boats/svn/milsko/trunk@34 b9cfdab3-6d41-4d17-bbe4-086880011989
This commit is contained in:
NishiOwO
2025-09-28 22:29:05 +00:00
parent a1601bb0b4
commit 431e1d6dec
3 changed files with 34 additions and 10 deletions

View File

@@ -7,14 +7,10 @@ void handler(MilskoWidget handle){
}
int main(){
MilskoWidget window = MilskoCreateWidget(MilskoWindowClass, "main", NULL, 0, 0, 400, 400);
MilskoWidget button = MilskoCreateWidget(MilskoButtonClass, "button", window, 50, 50, 300, 300);
MilskoApply(window,
MilskoWidget window = MilskoVaCreateWidget(MilskoWindowClass, "main", NULL, 0, 0, 400, 400,
MilskoNtitle, "hello world",
NULL);
MilskoApply(button,
MilskoWidget button = MilskoVaCreateWidget(MilskoButtonClass, "button", window, 50, 50, 300, 300,
MilskoNactivateHandler, handler,
NULL);

View File

@@ -9,6 +9,8 @@
if(x->class != NULL && x->class->y != NULL) x->class->y(x)
MILSKODECL MilskoWidget MilskoCreateWidget(MilskoClass class, const char* name, MilskoWidget parent, int x, int y, unsigned int width, unsigned int height);
MILSKODECL MilskoWidget MilskoVaCreateWidget(MilskoClass class, const char* name, MilskoWidget parent, int x, int y, unsigned int width, unsigned int height, ...);
MILSKODECL MilskoWidget MilskoVaListCreateWidget(MilskoClass class, const char* name, MilskoWidget parent, int x, int y, unsigned int width, unsigned int height, va_list va);
MILSKODECL void MilskoDestroyWidget(MilskoWidget handle);
MILSKODECL void MilskoLoop(MilskoWidget handle);
@@ -23,6 +25,7 @@ MILSKODECL const char* MilskoGetText(MilskoWidget handle, const char* key);
MILSKODECL MilskoHandler MilskoGetHandler(MilskoWidget handle, const char* key);
MILSKODECL void MilskoDispatchHandler(MilskoWidget handle, const char* key);
MILSKODECL void MilskoSetDefault(MilskoWidget handle);
MILSKODECL void MilskoApply(MilskoWidget handle, ...);
MILSKODECL void MilskoVaApply(MilskoWidget handle, ...);
MILSKODECL void MilskoVaListApply(MilskoWidget handle, va_list va);
#endif

View File

@@ -51,6 +51,26 @@ MilskoWidget MilskoCreateWidget(MilskoClass class, const char* name, MilskoWidge
return h;
}
MilskoWidget MilskoVaCreateWidget(MilskoClass class, const char* name, MilskoWidget parent, int x, int y, unsigned int width, unsigned int height, ...) {
MilskoWidget h;
va_list va;
va_start(va, height);
h = MilskoVaListCreateWidget(class, name, parent, x, y, width, height, va);
va_end(va);
return h;
}
MilskoWidget MilskoVaListCreateWidget(MilskoClass class, const char* name, MilskoWidget parent, int x, int y, unsigned int width, unsigned int height, va_list va) {
MilskoWidget h;
h = MilskoCreateWidget(class, name, parent, x, y, width, height);
MilskoVaListApply(h, va);
return h;
}
void MilskoDestroyWidget(MilskoWidget handle) {
int i;
@@ -171,11 +191,17 @@ MilskoHandler MilskoGetHandler(MilskoWidget handle, const char* key) {
return shget(handle->handler, key);
}
void MilskoApply(MilskoWidget handle, ...) {
void MilskoVaApply(MilskoWidget handle, ...) {
va_list va;
char* key;
va_start(va, handle);
MilskoVaListApply(handle, va);
va_end(va);
}
void MilskoVaListApply(MilskoWidget handle, va_list va) {
char* key;
while((key = va_arg(va, char*)) != NULL) {
if(key[0] == 'I') {
int n = va_arg(va, int);
@@ -188,7 +214,6 @@ void MilskoApply(MilskoWidget handle, ...) {
MilskoSetHandler(handle, key, h);
}
}
va_end(va);
}
void MilskoSetDefault(MilskoWidget handle) {