mirror of
https://gitea.nishi.boats/pyrite-dev/milsko
synced 2025-12-30 22:20:50 +00:00
Compare commits
30 Commits
188da6803e
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
72820e87f1 | ||
|
|
d3147ac087 | ||
|
|
4bdda59693 | ||
|
|
823c865791 | ||
|
|
3f9125d1ae | ||
|
|
549d235893 | ||
|
|
0daa527b1d | ||
|
|
0ca7f6ed8a | ||
|
|
e895e96941 | ||
|
|
0d79141a49 | ||
|
|
c80987ffe4 | ||
|
|
d3a7b0a01d | ||
|
|
e77c4f3c38 | ||
|
|
22b4737c33 | ||
|
|
509351a0a0 | ||
|
|
86effbdfd7 | ||
|
|
7b47524286 | ||
|
|
c8e7f58230 | ||
|
|
9ea54b4f88 | ||
|
|
55f82e4fbc | ||
|
|
a23016bc05 | ||
|
|
df99e66d87 | ||
|
|
e9fd2705d4 | ||
|
|
a824b4fc44 | ||
|
|
c7c8f236b0 | ||
|
|
bdc67d6369 | ||
|
|
873c75b882 | ||
|
|
e44eaa2c16 | ||
|
|
0d281c09ce | ||
|
|
2b30a06ecf |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -5,6 +5,7 @@ examples/*/*.exe
|
||||
!examples/*/
|
||||
!examples/*.*
|
||||
!examples/*/*.*
|
||||
*.exe
|
||||
*.o
|
||||
*.so
|
||||
*.dll
|
||||
|
||||
@@ -195,7 +195,6 @@ target_compile_definitions(
|
||||
_MILSKO
|
||||
)
|
||||
|
||||
include(GNUInstallDirs)
|
||||
install(
|
||||
TARGETS Mw
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
|
||||
@@ -29,6 +29,9 @@ void handler(MwWidget handle, void* user_data, void* call_data) {
|
||||
(void)handle;
|
||||
(void)user_data;
|
||||
(void)call_data;
|
||||
|
||||
/* nishi: please rewrite this part */
|
||||
/*
|
||||
char* clipboard;
|
||||
|
||||
clipboard = MwLLGetClipboard(handle->lowlevel);
|
||||
@@ -37,6 +40,7 @@ void handler(MwWidget handle, void* user_data, void* call_data) {
|
||||
MwVaApply(text, MwNtext, clipboard);
|
||||
MwForceRender(text);
|
||||
}
|
||||
*/
|
||||
|
||||
resize(window, NULL, NULL);
|
||||
}
|
||||
|
||||
@@ -52,6 +52,11 @@ MWDECL const char* MwDefaultDarkSubBackground;
|
||||
*/
|
||||
MWDECL const char* MwDefaultDarkSubForeground;
|
||||
|
||||
/*!
|
||||
* @brief Default shadow difference
|
||||
*/
|
||||
MWDECL const int MwDefaultShadow;
|
||||
|
||||
/*!
|
||||
* @brief Gets default border width
|
||||
* @param handle Widget
|
||||
|
||||
@@ -147,6 +147,7 @@ struct _MwLLHandler {
|
||||
void (*key_released)(MwLL handle, void* data);
|
||||
void (*focus_in)(MwLL handle, void* data);
|
||||
void (*focus_out)(MwLL handle, void* data);
|
||||
void (*clipboard)(MwLL handle, void* data);
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
@@ -203,7 +204,7 @@ MWDECL void (*MwLLFocus)(MwLL handle);
|
||||
MWDECL void (*MwLLGrabPointer)(MwLL handle, int toggle);
|
||||
|
||||
MWDECL void (*MwLLSetClipboard)(MwLL handle, const char* text);
|
||||
MWDECL char* (*MwLLGetClipboard)(MwLL handle);
|
||||
MWDECL void (*MwLLGetClipboard)(MwLL handle);
|
||||
|
||||
MWDECL void (*MwLLGetCursorCoord)(MwLL handle, MwPoint* point);
|
||||
MWDECL void (*MwLLGetScreenSize)(MwLL handle, MwRect* rect);
|
||||
|
||||
@@ -21,6 +21,7 @@ struct _MwLLGDI {
|
||||
|
||||
int grabbed;
|
||||
int force_render;
|
||||
int get_clipboard;
|
||||
};
|
||||
|
||||
struct _MwLLGDIColor {
|
||||
|
||||
@@ -29,6 +29,7 @@ struct _MwLLX11 {
|
||||
GC gc;
|
||||
Colormap colormap;
|
||||
Atom wm_delete;
|
||||
Atom wm_protocols;
|
||||
XIM xim;
|
||||
XIC xic;
|
||||
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
#define MwNbitmapFont "IbitmapFont"
|
||||
#define MwNsevenSegment "IsevenSegment"
|
||||
#define MwNlength "Ilength"
|
||||
#define MwNforceInverted "IforceInverted"
|
||||
|
||||
#define MwNtitle "Stitle"
|
||||
#define MwNtext "Stext"
|
||||
@@ -70,5 +71,6 @@
|
||||
#define MwNdirectoryChosenHandler "CdirectoryChosen" /* char* */
|
||||
#define MwNcolorChosenHandler "CcolorChosen" /* MwRGB* */
|
||||
#define MwNdrawHandler "Cdraw" /* NULL */
|
||||
#define MwNclipboardHandler "Cclipboard" /* char* */
|
||||
|
||||
#endif
|
||||
|
||||
@@ -39,6 +39,7 @@ typedef void (*MwHandlerChildrenProp)(MwWidget handle, MwWidget child, const cha
|
||||
typedef void (*MwHandlerKey)(MwWidget handle, int key);
|
||||
typedef void (*MwHandlerMouse)(MwWidget handle, void* ptr);
|
||||
typedef void (*MwHandlerExecute)(MwWidget handle, const char* name, void* out, va_list args);
|
||||
typedef void (*MwHandlerClipboardReceived)(MwWidget handle, const char* data);
|
||||
|
||||
typedef void (*MwUserHandler)(MwWidget handle, void* user_data, void* call_data);
|
||||
typedef void (*MwErrorHandler)(int code, const char* message, void* user_data);
|
||||
@@ -108,6 +109,7 @@ struct _MwMenu {
|
||||
int keep;
|
||||
MwWidget wsub;
|
||||
MwMenu* sub;
|
||||
void* opaque;
|
||||
};
|
||||
|
||||
struct _MwEntry {
|
||||
@@ -195,26 +197,26 @@ struct _MwListBoxPacket {
|
||||
};
|
||||
|
||||
struct _MwClass {
|
||||
MwHandlerWithStatus create;
|
||||
MwHandler destroy;
|
||||
MwHandler draw;
|
||||
MwHandler click;
|
||||
MwHandler parent_resize;
|
||||
MwHandlerProp prop_change;
|
||||
MwHandler mouse_move;
|
||||
MwHandlerMouse mouse_up;
|
||||
MwHandlerMouse mouse_down;
|
||||
MwHandlerKey key;
|
||||
MwHandlerExecute execute;
|
||||
MwHandler tick;
|
||||
MwHandler resize;
|
||||
MwHandler children_update;
|
||||
MwHandlerChildrenProp children_prop_change;
|
||||
void* reserved1;
|
||||
void* reserved2;
|
||||
void* reserved3;
|
||||
void* reserved4;
|
||||
void* reserved5;
|
||||
MwHandlerWithStatus create;
|
||||
MwHandler destroy;
|
||||
MwHandler draw;
|
||||
MwHandler click;
|
||||
MwHandler parent_resize;
|
||||
MwHandlerProp prop_change;
|
||||
MwHandler mouse_move;
|
||||
MwHandlerMouse mouse_up;
|
||||
MwHandlerMouse mouse_down;
|
||||
MwHandlerKey key;
|
||||
MwHandlerExecute execute;
|
||||
MwHandler tick;
|
||||
MwHandler resize;
|
||||
MwHandler children_update;
|
||||
MwHandlerChildrenProp children_prop_change;
|
||||
MwHandlerClipboardReceived clipboard;
|
||||
void* reserved1;
|
||||
void* reserved2;
|
||||
void* reserved3;
|
||||
void* reserved4;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -29,6 +29,16 @@ MwInline void MwSubMenuAppear(MwWidget handle, MwMenu menu, MwPoint* point, int
|
||||
MwVaWidgetExecute(handle, "mwSubMenuAppear", NULL, menu, point, diff_calc);
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief Calculates the size of submenu
|
||||
* @param handle Handle
|
||||
* @param menu Menu
|
||||
* @param rect Size
|
||||
*/
|
||||
MwInline void MwSubMenuGetSize(MwWidget handle, MwMenu menu, MwRect* rect) {
|
||||
MwVaWidgetExecute(handle, "mwSubMenuGetSize", NULL, menu, rect);
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -52,6 +52,7 @@
|
||||
- MwNratio
|
||||
- MwNfixedSize
|
||||
- MwNbitmapFont
|
||||
- MwNforceInverted
|
||||
|
||||
Integer properties must be prefixed with I.
|
||||
String properties must be prefixed with S.
|
||||
@@ -91,6 +92,7 @@
|
||||
<integer name="bitmapFont" />
|
||||
<integer name="sevenSegment" />
|
||||
<integer name="length" />
|
||||
<integer name="forceInverted" />
|
||||
|
||||
<string name="title" />
|
||||
<string name="text" />
|
||||
@@ -120,6 +122,7 @@
|
||||
<handler name="directoryChosen" />
|
||||
<handler name="colorChosen" />
|
||||
<handler name="draw" />
|
||||
<handler name="clipboard" />
|
||||
</properties>
|
||||
<enumerations>
|
||||
<enumeration name="MwDIRECTION">
|
||||
@@ -542,6 +545,7 @@
|
||||
<property name="bold" />
|
||||
<property name="sevenSegment" />
|
||||
<property name="length" />
|
||||
<property name="leftPadding" />
|
||||
</properties>
|
||||
<functions>
|
||||
<function name="SetSevenSegment">
|
||||
@@ -638,6 +642,9 @@
|
||||
</functions>
|
||||
</widget>
|
||||
<widget name="SubMenu">
|
||||
<properties>
|
||||
<property name="leftPadding" />
|
||||
</properties>
|
||||
<functions>
|
||||
<function name="Appear">
|
||||
<arguments>
|
||||
|
||||
@@ -237,12 +237,13 @@ static MwLL MwLLCreateImpl(MwLL parent, int x, int y, int width, int height) {
|
||||
r->common.copy_buffer = 1;
|
||||
r->common.type = MwLLBackendGDI;
|
||||
|
||||
r->gdi.force_render = 0;
|
||||
r->gdi.grabbed = 0;
|
||||
r->gdi.hWnd = CreateWindow("milsko", "Milsko", parent == NULL ? (WS_OVERLAPPEDWINDOW) : (WS_CHILD | WS_VISIBLE), x == MwDEFAULT ? CW_USEDEFAULT : x, y == MwDEFAULT ? CW_USEDEFAULT : y, width, height, parent == NULL ? NULL : parent->gdi.hWnd, 0, wc.hInstance, NULL);
|
||||
r->gdi.hInstance = wc.hInstance;
|
||||
r->gdi.cursor = NULL;
|
||||
r->gdi.icon = NULL;
|
||||
r->gdi.get_clipboard = 1;
|
||||
r->gdi.force_render = 0;
|
||||
r->gdi.grabbed = 0;
|
||||
r->gdi.hWnd = CreateWindow("milsko", "Milsko", parent == NULL ? (WS_OVERLAPPEDWINDOW) : (WS_CHILD | WS_VISIBLE), x == MwDEFAULT ? CW_USEDEFAULT : x, y == MwDEFAULT ? CW_USEDEFAULT : y, width, height, parent == NULL ? NULL : parent->gdi.hWnd, 0, wc.hInstance, NULL);
|
||||
r->gdi.hInstance = wc.hInstance;
|
||||
r->gdi.cursor = NULL;
|
||||
r->gdi.icon = NULL;
|
||||
|
||||
u->ll = r;
|
||||
u->min_set = 0;
|
||||
@@ -383,6 +384,7 @@ static int MwLLPendingImpl(MwLL handle) {
|
||||
|
||||
(void)handle;
|
||||
|
||||
if(handle->gdi.get_clipboard) return 1;
|
||||
return PeekMessage(&msg, handle->gdi.hWnd, 0, 0, PM_NOREMOVE) ? 1 : 0;
|
||||
}
|
||||
|
||||
@@ -391,6 +393,24 @@ static void MwLLNextEventImpl(MwLL handle) {
|
||||
|
||||
(void)handle;
|
||||
|
||||
if(handle->gdi.get_clipboard) {
|
||||
HGLOBAL hg;
|
||||
if(OpenClipboard(handle->gdi.hWnd) != 0 && (hg = GetClipboardData(CF_TEXT)) != NULL) {
|
||||
char* txt = malloc(GlobalSize(hg));
|
||||
char* clp = GlobalLock(hg);
|
||||
|
||||
strcpy(txt, clp);
|
||||
|
||||
GlobalUnlock(hg);
|
||||
CloseClipboard();
|
||||
|
||||
MwLLDispatch(handle, clipboard, txt);
|
||||
|
||||
free(txt);
|
||||
}
|
||||
|
||||
handle->gdi.get_clipboard = 0;
|
||||
}
|
||||
while(PeekMessage(&msg, handle->gdi.hWnd, 0, 0, PM_NOREMOVE)) {
|
||||
GetMessage(&msg, handle->gdi.hWnd, 0, 0);
|
||||
TranslateMessage(&msg);
|
||||
@@ -697,21 +717,8 @@ static void MwLLSetClipboardImpl(MwLL handle, const char* text) {
|
||||
}
|
||||
}
|
||||
|
||||
static char* MwLLGetClipboardImpl(MwLL handle) {
|
||||
HGLOBAL hg;
|
||||
char* r = NULL;
|
||||
if(OpenClipboard(handle->gdi.hWnd) != 0 && (hg = GetClipboardData(CF_TEXT)) != NULL) {
|
||||
char* lock;
|
||||
|
||||
r = malloc(GlobalSize(hg));
|
||||
|
||||
lock = GlobalLock(hg);
|
||||
strcpy(r, lock);
|
||||
GlobalUnlock(hg);
|
||||
|
||||
CloseClipboard();
|
||||
}
|
||||
return r;
|
||||
static void MwLLGetClipboardImpl(MwLL handle) {
|
||||
handle->gdi.get_clipboard = 1; /* nishi: we do this to make clipboard api work similar to other backends */
|
||||
}
|
||||
|
||||
static void MwLLMakeToolWindowImpl(MwLL handle) {
|
||||
|
||||
@@ -209,8 +209,9 @@ static MwLL MwLLCreateImpl(MwLL parent, int x, int y, int width, int height) {
|
||||
r->x11.grabbed = 0;
|
||||
r->x11.force_render = 0;
|
||||
|
||||
r->x11.colormap = DefaultColormap(r->x11.display, XDefaultScreen(r->x11.display));
|
||||
r->x11.wm_delete = XInternAtom(r->x11.display, "WM_DELETE_WINDOW", False);
|
||||
r->x11.colormap = DefaultColormap(r->x11.display, XDefaultScreen(r->x11.display));
|
||||
r->x11.wm_delete = XInternAtom(r->x11.display, "WM_DELETE_WINDOW", False);
|
||||
r->x11.wm_protocols = XInternAtom(r->x11.display, "WM_PROTOCOLS", False);
|
||||
XSetWMProtocols(r->x11.display, r->x11.window, &r->x11.wm_delete, 1);
|
||||
|
||||
r->x11.gc = XCreateGC(r->x11.display, r->x11.window, 0, NULL);
|
||||
@@ -471,7 +472,7 @@ static void MwLLNextEventImpl(MwLL handle) {
|
||||
handle->x11.width = ev.xconfigure.width;
|
||||
handle->x11.height = ev.xconfigure.height;
|
||||
} else if(ev.type == ClientMessage) {
|
||||
if(ev.xclient.data.l[0] == (long)handle->x11.wm_delete) {
|
||||
if(ev.xclient.message_type == handle->x11.wm_protocols && ev.xclient.data.l[0] == (long)handle->x11.wm_delete) {
|
||||
MwLLDispatch(handle, close, NULL);
|
||||
}
|
||||
} else if(ev.type == FocusIn) {
|
||||
@@ -956,45 +957,10 @@ static void MwLLSetClipboardImpl(MwLL handle, const char* text) {
|
||||
(void)text;
|
||||
}
|
||||
|
||||
static char* MwLLGetClipboardImpl(MwLL handle) {
|
||||
Atom clip, target, prop;
|
||||
XEvent ev;
|
||||
XEvent* queue = NULL;
|
||||
char* r = NULL;
|
||||
static void MwLLGetClipboardImpl(MwLL handle) {
|
||||
/* TODO */
|
||||
|
||||
clip = XInternAtom(handle->x11.display, "CLIPBOARD", 0);
|
||||
target = XA_STRING;
|
||||
prop = XInternAtom(handle->x11.display, "XSEL_DATA", 0);
|
||||
|
||||
XConvertSelection(handle->x11.display, clip, target, prop, handle->x11.window, CurrentTime);
|
||||
|
||||
while(1) {
|
||||
XNextEvent(handle->x11.display, &ev);
|
||||
if(ev.type == SelectionNotify) {
|
||||
if(ev.xselection.selection == clip && ev.xselection.property != 0) {
|
||||
Atom t;
|
||||
unsigned long size, N;
|
||||
char* data;
|
||||
int format;
|
||||
|
||||
XGetWindowProperty(ev.xselection.display, ev.xselection.requestor, ev.xselection.property, 0, (~0L), 0, AnyPropertyType, &t, &format, &size, &N, (unsigned char**)&data);
|
||||
if(t == target) {
|
||||
r = MwStringDuplicate(data);
|
||||
XFree(data);
|
||||
}
|
||||
XDeleteProperty(ev.xselection.display, ev.xselection.requestor, ev.xselection.property);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
while(arrlen(queue) > 0) {
|
||||
XPutBackEvent(handle->x11.display, &queue[0]);
|
||||
arrdel(queue, 0);
|
||||
}
|
||||
arrfree(queue);
|
||||
|
||||
return r;
|
||||
(void)handle;
|
||||
}
|
||||
|
||||
static void MwLLMakeToolWindowImpl(MwLL handle) {
|
||||
|
||||
13
src/core.c
13
src/core.c
@@ -107,6 +107,13 @@ static void llfocusouthandler(MwLL handle, void* data) {
|
||||
MwDispatchUserHandler(h, MwNfocusOutHandler, data);
|
||||
}
|
||||
|
||||
static void llclipboardhandler(MwLL handle, void* data) {
|
||||
MwWidget h = (MwWidget)handle->common.user;
|
||||
|
||||
MwDispatch3(h, clipboard, data);
|
||||
MwDispatchUserHandler(h, MwNclipboardHandler, data);
|
||||
}
|
||||
|
||||
MwWidget MwCreateWidget(MwClass widget_class, const char* name, MwWidget parent, int x, int y, unsigned int width, unsigned int height) {
|
||||
MwWidget h = malloc(sizeof(*h));
|
||||
|
||||
@@ -148,6 +155,7 @@ MwWidget MwCreateWidget(MwClass widget_class, const char* name, MwWidget parent,
|
||||
h->lowlevel->common.handler->key_released = llkeyrelhandler;
|
||||
h->lowlevel->common.handler->focus_in = llfocusinhandler;
|
||||
h->lowlevel->common.handler->focus_out = llfocusouthandler;
|
||||
h->lowlevel->common.handler->clipboard = llclipboardhandler;
|
||||
}
|
||||
|
||||
if(parent != NULL) arrput(parent->children, h);
|
||||
@@ -261,6 +269,8 @@ void MwDestroyWidget(MwWidget handle) {
|
||||
if(i == arrlen(handle->parent->destroy_queue)) {
|
||||
arrput(handle->parent->destroy_queue, handle);
|
||||
}
|
||||
|
||||
MwDispatch(handle->parent, children_update);
|
||||
}
|
||||
destroy_children(handle);
|
||||
handle->destroyed = 1;
|
||||
@@ -385,6 +395,9 @@ void MwSetInteger(MwWidget handle, const char* key, int n) {
|
||||
MwDispatch3(handle, prop_change, key);
|
||||
if(handle->parent != NULL) MwDispatch4(handle->parent, children_prop_change, handle, key);
|
||||
}
|
||||
if(strcmp(key, MwNforceInverted) == 0) {
|
||||
MwForceRender(handle);
|
||||
}
|
||||
}
|
||||
|
||||
void MwSetText(MwWidget handle, const char* key, const char* value) {
|
||||
|
||||
@@ -10,6 +10,8 @@ const char* MwDefaultDarkForeground = "#ddd";
|
||||
const char* MwDefaultDarkSubBackground = "#333";
|
||||
const char* MwDefaultDarkSubForeground = "#ddd";
|
||||
|
||||
const int MwDefaultShadow = -32;
|
||||
|
||||
int MwDefaultBorderWidth(MwWidget handle) {
|
||||
int bw = MwGetInteger(handle, MwNborderWidth);
|
||||
|
||||
|
||||
13
src/draw.c
13
src/draw.c
@@ -1,6 +1,7 @@
|
||||
#include <Mw/Milsko.h>
|
||||
|
||||
#ifdef USE_STB_IMAGE
|
||||
#ifdef NO_IMAGE
|
||||
#elif defined(USE_STB_IMAGE)
|
||||
#include "../external/stb_image.h"
|
||||
#else
|
||||
#include <png.h>
|
||||
@@ -130,6 +131,9 @@ void MwDrawRectFading(MwWidget handle, MwRect* rect, MwLLColor color) {
|
||||
}
|
||||
|
||||
void MwDrawFrame(MwWidget handle, MwRect* rect, MwLLColor color, int invert) {
|
||||
int inv;
|
||||
|
||||
if((inv = MwGetInteger(handle, MwNforceInverted)) != MwDEFAULT && inv) invert = 1;
|
||||
if(MwGetInteger(handle, MwNmodernLook)) {
|
||||
MwDrawFrameEx(handle, rect, color, invert, MwDefaultBorderWidth(handle), 0, 0);
|
||||
} else {
|
||||
@@ -502,7 +506,8 @@ void MwDrawTriangle(MwWidget handle, MwRect* rect, MwLLColor color, int invert,
|
||||
MwLLFreeColor(darker);
|
||||
}
|
||||
|
||||
#ifndef USE_STB_IMAGE
|
||||
#if defined(NO_IMAGE)
|
||||
#elif !defined(USE_STB_IMAGE)
|
||||
static void PNGCAPI user_error(png_structp png, const char* str) {
|
||||
(void)str;
|
||||
|
||||
@@ -617,7 +622,9 @@ static unsigned char* load_jpeg(FILE* f, int* w, int* h) {
|
||||
#endif
|
||||
|
||||
static unsigned char* load_image(const char* path, int* w, int* h) {
|
||||
#ifdef USE_STB_IMAGE
|
||||
#if defined(NO_IMAGE)
|
||||
return NULL;
|
||||
#elif defined(USE_STB_IMAGE)
|
||||
int ch;
|
||||
|
||||
return stbi_load(path, w, h, &ch, 4);
|
||||
|
||||
@@ -46,7 +46,7 @@ void (*MwLLFocus)(MwLL handle);
|
||||
void (*MwLLGrabPointer)(MwLL handle, int toggle);
|
||||
|
||||
void (*MwLLSetClipboard)(MwLL handle, const char* text);
|
||||
char* (*MwLLGetClipboard)(MwLL handle);
|
||||
void (*MwLLGetClipboard)(MwLL handle);
|
||||
|
||||
void (*MwLLGetCursorCoord)(MwLL handle, MwPoint* point);
|
||||
void (*MwLLGetScreenSize)(MwLL handle, MwRect* rect);
|
||||
|
||||
@@ -47,6 +47,8 @@ static void layout(MwWidget handle) {
|
||||
int s = MwGetInteger(handle->children[i], MwNfixedSize);
|
||||
if(n == MwDEFAULT) n = 1;
|
||||
|
||||
if(handle->children[i]->destroyed) continue;
|
||||
|
||||
if(s != MwDEFAULT) {
|
||||
sz -= s + Margin;
|
||||
} else {
|
||||
@@ -60,6 +62,8 @@ static void layout(MwWidget handle) {
|
||||
int wsz;
|
||||
if(n == MwDEFAULT) n = 1;
|
||||
|
||||
if(handle->children[i]->destroyed) continue;
|
||||
|
||||
if(s != MwDEFAULT) {
|
||||
wsz = s;
|
||||
} else {
|
||||
@@ -110,7 +114,7 @@ MwClassRec MwBoxClassRec = {
|
||||
resize, /* resize */
|
||||
children_update, /* children_update */
|
||||
children_prop_change, /* children_prop_change */
|
||||
NULL,
|
||||
NULL, /* clipboard */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -20,6 +20,7 @@ static void draw(MwWidget handle) {
|
||||
const char* str = MwGetText(handle, MwNtext);
|
||||
MwLLPixmap px = MwGetVoid(handle, MwNpixmap);
|
||||
MwLLPixmap bgpx = MwGetVoid(handle, MwNbackgroundPixmap);
|
||||
int inv;
|
||||
|
||||
if(str == NULL) str = "";
|
||||
|
||||
@@ -29,7 +30,7 @@ static void draw(MwWidget handle) {
|
||||
r.height = MwGetInteger(handle, MwNheight);
|
||||
|
||||
if(MwGetInteger(handle, MwNflat)) {
|
||||
if(handle->pressed) {
|
||||
if(handle->pressed || ((inv = MwGetInteger(handle, MwNforceInverted)) != MwDEFAULT && inv)) {
|
||||
MwDrawWidgetBack(handle, &r, base, handle->pressed, 1);
|
||||
} else {
|
||||
MwDrawRect(handle, &r, base);
|
||||
@@ -38,7 +39,7 @@ static void draw(MwWidget handle) {
|
||||
MwDrawWidgetBack(handle, &r, base, handle->pressed, 1);
|
||||
}
|
||||
if(bgpx != NULL) MwLLDrawPixmap(handle->lowlevel, &r, bgpx);
|
||||
if(MwGetInteger(handle, MwNflat) && !handle->pressed) {
|
||||
if(MwGetInteger(handle, MwNflat) && !(handle->pressed || ((inv = MwGetInteger(handle, MwNforceInverted)) != MwDEFAULT && inv))) {
|
||||
r.x += MwDefaultBorderWidth(handle);
|
||||
r.y += MwDefaultBorderWidth(handle);
|
||||
r.width -= MwDefaultBorderWidth(handle) * 2;
|
||||
@@ -106,7 +107,7 @@ MwClassRec MwButtonClassRec = {
|
||||
NULL, /* resize */
|
||||
NULL, /* children_update */
|
||||
NULL, /* children_prop_change */
|
||||
NULL,
|
||||
NULL, /* clipboard */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -53,7 +53,7 @@ MwClassRec MwCheckBoxClassRec = {
|
||||
NULL, /* resize */
|
||||
NULL, /* children_update */
|
||||
NULL, /* children_prop_change */
|
||||
NULL,
|
||||
NULL, /* clipboard */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -204,7 +204,7 @@ MwClassRec MwComboBoxClassRec = {
|
||||
NULL, /* resize */
|
||||
NULL, /* children_update */
|
||||
NULL, /* children_prop_change */
|
||||
NULL,
|
||||
NULL, /* clipboard */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -109,20 +109,7 @@ static void key(MwWidget handle, int code) {
|
||||
} else if(code == MwLLKeyEnter) {
|
||||
MwDispatchUserHandler(handle, MwNactivateHandler, NULL);
|
||||
} else if(code == (MwLLControlMask | 'v')) {
|
||||
char* c = MwLLGetClipboard(handle->lowlevel);
|
||||
if(c != NULL) {
|
||||
char* out = malloc(strlen(str) + strlen(c) + 1);
|
||||
|
||||
MwUTF8Copy(str, 0, out, 0, t->cursor);
|
||||
MwUTF8Copy(c, 0, out, t->cursor, MwUTF8Length(c));
|
||||
MwUTF8Copy(str, t->cursor, out, t->cursor + MwUTF8Length(c), MwUTF8Length(str) - t->cursor);
|
||||
|
||||
t->cursor += MwUTF8Length(c);
|
||||
|
||||
MwSetText(handle, MwNtext, out);
|
||||
free(out);
|
||||
free(c);
|
||||
}
|
||||
MwLLGetClipboard(handle->lowlevel);
|
||||
} else if(!(code & MwLLKeyMask)) {
|
||||
int incr = 0;
|
||||
out = malloc(strlen(str) + 5 + 1);
|
||||
@@ -157,6 +144,23 @@ static void prop_change(MwWidget handle, const char* prop) {
|
||||
}
|
||||
}
|
||||
|
||||
static void clipboard(MwWidget handle, const char* data) {
|
||||
MwEntry t = handle->internal;
|
||||
const char* str = MwGetText(handle, MwNtext);
|
||||
char* out = malloc(strlen(str) + strlen(data) + 1);
|
||||
|
||||
if(str == NULL) str = "";
|
||||
|
||||
MwUTF8Copy(str, 0, out, 0, t->cursor);
|
||||
MwUTF8Copy(data, 0, out, t->cursor, MwUTF8Length(data));
|
||||
MwUTF8Copy(str, t->cursor, out, t->cursor + MwUTF8Length(data), MwUTF8Length(str) - t->cursor);
|
||||
|
||||
t->cursor += MwUTF8Length(data);
|
||||
|
||||
MwSetText(handle, MwNtext, out);
|
||||
free(out);
|
||||
}
|
||||
|
||||
MwClassRec MwEntryClassRec = {
|
||||
create, /* create */
|
||||
destroy, /* destroy */
|
||||
@@ -173,7 +177,7 @@ MwClassRec MwEntryClassRec = {
|
||||
NULL, /* resize */
|
||||
NULL, /* children_update */
|
||||
NULL, /* children_prop_change */
|
||||
NULL,
|
||||
clipboard, /* clipboard */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -61,7 +61,7 @@ MwClassRec MwFrameClassRec = {
|
||||
NULL, /* resize */
|
||||
NULL, /* children_update */
|
||||
NULL, /* children_prop_change */
|
||||
NULL,
|
||||
NULL, /* clipboard */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -57,7 +57,7 @@ MwClassRec MwImageClassRec = {
|
||||
NULL, /* resize */
|
||||
NULL, /* children_update */
|
||||
NULL, /* children_prop_change */
|
||||
NULL,
|
||||
NULL, /* clipboard */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -15,6 +15,7 @@ static int create(MwWidget handle) {
|
||||
MwSetInteger(handle, MwNbold, 0);
|
||||
MwSetInteger(handle, MwNsevenSegment, 0);
|
||||
MwSetInteger(handle, MwNlength, 4);
|
||||
MwSetInteger(handle, MwNleftPadding, 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -126,7 +127,7 @@ static void draw(MwWidget handle) {
|
||||
MwPoint p;
|
||||
MwLLColor base = MwParseColor(handle, MwGetText(handle, MwNbackground));
|
||||
MwLLColor text = MwParseColor(handle, MwGetText(handle, MwNforeground));
|
||||
MwLLColor shadow = MwLightenColor(handle, base, -32, -32, -32);
|
||||
MwLLColor shadow = MwLightenColor(handle, base, MwDefaultShadow, MwDefaultShadow, MwDefaultShadow);
|
||||
int align;
|
||||
const char* str = MwGetText(handle, MwNtext);
|
||||
MwLLPixmap bgpx = MwGetVoid(handle, MwNbackgroundPixmap);
|
||||
@@ -253,10 +254,11 @@ static void draw(MwWidget handle) {
|
||||
for(j = 1; j >= 0; j--) {
|
||||
MwLLColor cl = j == 1 ? shadow : text;
|
||||
for(cy = 1; cy < h - 1; cy++) {
|
||||
int c = (l_one - s_one) / 2 + s_one;
|
||||
int h = s_one / 2;
|
||||
int c = (l_one - h) / 2 + s_one;
|
||||
|
||||
int c1 = (c <= cy && cy <= (c + s_one)) ? 1 : 0;
|
||||
int c2 = ((s_one + l_one + c) <= cy && cy <= (s_one + l_one + c + s_one)) ? 1 : 0;
|
||||
int c1 = (c <= cy && cy <= (c + h)) ? 1 : 0;
|
||||
int c2 = ((s_one + l_one + c) <= cy && cy <= (s_one + l_one + c + h)) ? 1 : 0;
|
||||
|
||||
if(c1 || c2) {
|
||||
for(cx = x; cx < x + s_one; cx++) {
|
||||
@@ -309,6 +311,8 @@ static void draw(MwWidget handle) {
|
||||
|
||||
MwLLDestroyPixmap(px);
|
||||
} else {
|
||||
r.width -= MwGetInteger(handle, MwNleftPadding);
|
||||
|
||||
if(align == MwALIGNMENT_CENTER) {
|
||||
p.x = r.width / 2;
|
||||
} else if(align == MwALIGNMENT_BEGINNING) {
|
||||
@@ -317,6 +321,15 @@ static void draw(MwWidget handle) {
|
||||
p.x = r.width - MwTextWidth(handle, str) / 2;
|
||||
}
|
||||
p.y = r.height / 2;
|
||||
|
||||
p.x += MwGetInteger(handle, MwNleftPadding);
|
||||
|
||||
p.x += 1;
|
||||
p.y += 1;
|
||||
MwDrawText(handle, &p, str, MwGetInteger(handle, MwNbold), MwALIGNMENT_CENTER, shadow);
|
||||
|
||||
p.x -= 1;
|
||||
p.y -= 1;
|
||||
MwDrawText(handle, &p, str, MwGetInteger(handle, MwNbold), MwALIGNMENT_CENTER, text);
|
||||
}
|
||||
|
||||
@@ -326,7 +339,7 @@ static void draw(MwWidget handle) {
|
||||
}
|
||||
|
||||
static void prop_change(MwWidget handle, const char* key) {
|
||||
if(strcmp(key, MwNtext) == 0 || strcmp(key, MwNalignment) == 0 || strcmp(key, MwNsevenSegment) == 0) MwForceRender(handle);
|
||||
if(strcmp(key, MwNtext) == 0 || strcmp(key, MwNalignment) == 0 || strcmp(key, MwNsevenSegment) == 0 || strcmp(key, MwNlength) == 0 || strcmp(key, MwNleftPadding) == 0) MwForceRender(handle);
|
||||
}
|
||||
|
||||
static void mwLabelSetSevenSegmentImpl(MwWidget handle, int index, unsigned char data) {
|
||||
@@ -362,7 +375,7 @@ MwClassRec MwLabelClassRec = {
|
||||
NULL, /* resize */
|
||||
NULL, /* children_update */
|
||||
NULL, /* children_prop_change */
|
||||
NULL,
|
||||
NULL, /* clipboard */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -608,7 +608,7 @@ MwClassRec MwListBoxClassRec = {
|
||||
NULL, /* resize */
|
||||
NULL, /* children_update */
|
||||
NULL, /* children_prop_change */
|
||||
NULL,
|
||||
NULL, /* clipboard */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -204,7 +204,7 @@ MwClassRec MwMenuClassRec = {
|
||||
NULL, /* resize */
|
||||
NULL, /* children_update */
|
||||
NULL, /* children_prop_change */
|
||||
NULL,
|
||||
NULL, /* clipboard */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -143,7 +143,7 @@ MwClassRec MwNumberEntryClassRec = {
|
||||
NULL, /* resize */
|
||||
NULL, /* children_update */
|
||||
NULL, /* children_prop_change */
|
||||
NULL,
|
||||
NULL, /* clipboard */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -244,7 +244,7 @@ MwClassRec MwOpenGLClassRec = {
|
||||
NULL, /* resize */
|
||||
NULL, /* children_update */
|
||||
NULL, /* children_prop_change */
|
||||
NULL,
|
||||
NULL, /* clipboard */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -61,7 +61,7 @@ MwClassRec MwProgressBarClassRec = {
|
||||
NULL, /* resize */
|
||||
NULL, /* children_update */
|
||||
NULL, /* children_prop_change */
|
||||
NULL,
|
||||
NULL, /* clipboard */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -62,7 +62,7 @@ MwClassRec MwRadioBoxClassRec = {
|
||||
NULL, /* resize */
|
||||
NULL, /* children_update */
|
||||
NULL, /* children_prop_change */
|
||||
NULL,
|
||||
NULL, /* clipboard */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -272,7 +272,7 @@ MwClassRec MwScrollBarClassRec = {
|
||||
NULL, /* resize */
|
||||
NULL, /* children_update */
|
||||
NULL, /* children_prop_change */
|
||||
NULL,
|
||||
NULL, /* clipboard */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -50,7 +50,7 @@ MwClassRec MwSeparatorClassRec = {
|
||||
NULL, /* resize */
|
||||
NULL, /* children_update */
|
||||
NULL, /* children_prop_change */
|
||||
NULL,
|
||||
NULL, /* clipboard */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -6,6 +6,7 @@ static int create(MwWidget handle) {
|
||||
MwLLBeginStateChange(handle->lowlevel);
|
||||
|
||||
MwSetDefault(handle);
|
||||
MwSetInteger(handle, MwNleftPadding, 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -53,25 +54,27 @@ static void draw(MwWidget handle) {
|
||||
|
||||
rc.x = MwDefaultBorderWidth(handle) * 2;
|
||||
rc.y = p.y;
|
||||
rc.width = r.width - (rc.x * 2);
|
||||
rc.height = MwDefaultBorderWidth(handle) * 2;
|
||||
rc.width = r.width - (rc.x * 2) - MwGetInteger(handle, MwNleftPadding);
|
||||
rc.height = 2;
|
||||
|
||||
MwDrawFrame(handle, &rc, base, 1);
|
||||
rc.x += MwGetInteger(handle, MwNleftPadding);
|
||||
|
||||
p.y += MwDefaultBorderWidth(handle) * 2 + 1;
|
||||
MwDrawFrameEx(handle, &rc, base, 1, 1, 0, 0);
|
||||
|
||||
p.y += 2 + 1;
|
||||
} else {
|
||||
int tw = MwTextWidth(handle, menu->sub[i]->name);
|
||||
int th = MwTextHeight(handle, menu->sub[i]->name);
|
||||
|
||||
if(menu->sub[i]->wsub != NULL) {
|
||||
r.x = 0;
|
||||
r.x = MwGetInteger(handle, MwNleftPadding);
|
||||
r.y = p.y - 3;
|
||||
r.width = tw + 15 + 5 * 2;
|
||||
r.width = MwGetInteger(handle, MwNwidth) - MwGetInteger(handle, MwNleftPadding);
|
||||
r.height = th + 3 * 2;
|
||||
MwDrawWidgetBack(handle, &r, base, 0, MwTRUE);
|
||||
}
|
||||
|
||||
p.x = 5 + tw / 2;
|
||||
p.x = 5 + tw / 2 + MwGetInteger(handle, MwNleftPadding);
|
||||
|
||||
p.y += th / 2;
|
||||
MwDrawText(handle, &p, menu->sub[i]->name, menu->sub[i]->wsub != NULL ? 1 : 0, MwALIGNMENT_CENTER, text);
|
||||
@@ -79,7 +82,7 @@ static void draw(MwWidget handle) {
|
||||
if(arrlen(menu->sub[i]->sub) > 0) {
|
||||
MwRect tr;
|
||||
|
||||
tr.x = p.x + tw / 2 + 5;
|
||||
tr.x = MwGetInteger(handle, MwNwidth) - MwDefaultBorderWidth(handle) - 11 - 2;
|
||||
tr.y = p.y - th / 2 + 2;
|
||||
tr.width = tr.height = 11;
|
||||
|
||||
@@ -116,7 +119,11 @@ static void click(MwWidget handle) {
|
||||
int th = MwTextHeight(handle, menu->sub[i]->name);
|
||||
rc.height = th;
|
||||
|
||||
if(rc.x <= handle->mouse_point.x && rc.y <= handle->mouse_point.y && handle->mouse_point.x <= (int)(rc.x + rc.width) && handle->mouse_point.y <= (int)(rc.y + rc.height)) {
|
||||
if(strcmp(menu->sub[i]->name, "----") == 0) {
|
||||
rc.height = 2 - 1;
|
||||
}
|
||||
|
||||
if(MwGetInteger(handle, MwNleftPadding) <= handle->mouse_point.x && rc.y <= handle->mouse_point.y && handle->mouse_point.y <= (int)(rc.y + rc.height)) {
|
||||
if(menu->sub[i]->wsub == NULL && arrlen(menu->sub[i]->sub) > 0) {
|
||||
MwPoint p;
|
||||
int j;
|
||||
@@ -126,14 +133,14 @@ static void click(MwWidget handle) {
|
||||
menu->sub[j]->wsub = NULL;
|
||||
}
|
||||
|
||||
p.x = rc.x + rc.width + 3;
|
||||
p.x = MwGetInteger(handle, MwNwidth);
|
||||
p.y = rc.y - 3;
|
||||
|
||||
menu->sub[i]->wsub = MwCreateWidget(MwSubMenuClass, "submenu", handle, 0, 0, 0, 0);
|
||||
MwSubMenuAppear(menu->sub[i]->wsub, menu->sub[i], &p, 0);
|
||||
i = -1;
|
||||
} else if(menu->sub[i]->wsub != NULL && arrlen(menu->sub[i]->sub) > 0) {
|
||||
while(w->parent->widget_class != MwMenuClass) w = w->parent;
|
||||
while(w->parent->widget_class == MwSubMenuClass) w = w->parent;
|
||||
|
||||
MwDestroyWidget(menu->sub[i]->wsub);
|
||||
menu->sub[i]->wsub = NULL;
|
||||
@@ -142,7 +149,7 @@ static void click(MwWidget handle) {
|
||||
|
||||
MwForceRender(handle);
|
||||
} else if(strcmp(menu->sub[i]->name, "----") != 0 && arrlen(menu->sub[i]->sub) == 0) {
|
||||
while(w->parent->widget_class != MwMenuClass) w = w->parent;
|
||||
while(w->parent->widget_class == MwSubMenuClass) w = w->parent;
|
||||
MwGetBeforeStep(w, &jmp);
|
||||
|
||||
MwDestroyWidget(w);
|
||||
@@ -160,49 +167,61 @@ static void click(MwWidget handle) {
|
||||
}
|
||||
|
||||
static void mwSubMenuAppearImpl(MwWidget handle, MwMenu menu, MwPoint* point, int diff_calc) {
|
||||
int i, w = 0, h = 0;
|
||||
MwRect rc;
|
||||
MwRect rc, sz;
|
||||
MwPoint p = *point;
|
||||
|
||||
MwSubMenuGetSize(handle, menu, &sz);
|
||||
|
||||
MwGetScreenSize(handle, &rc);
|
||||
|
||||
handle->internal = menu;
|
||||
|
||||
for(i = 0; i < arrlen(menu->sub); i++) {
|
||||
if(strcmp(menu->sub[i]->name, "----") == 0) {
|
||||
h += MwDefaultBorderWidth(handle) * 2 + 2;
|
||||
} else {
|
||||
int tw = MwTextWidth(handle, menu->sub[i]->name);
|
||||
h += MwTextHeight(handle, menu->sub[i]->name) + 3;
|
||||
if(tw > w) {
|
||||
w = tw;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
w += 10 + 15;
|
||||
h += 3;
|
||||
|
||||
if(diff_calc) {
|
||||
p.y = rc.height - p.y - h;
|
||||
p.y = p.y - sz.height;
|
||||
}
|
||||
|
||||
MwLLMakeToolWindow(handle->lowlevel);
|
||||
MwLLDetach(handle->lowlevel, &p);
|
||||
|
||||
if(MwGetInteger(handle, MwNy) + h > rc.height) {
|
||||
if(MwGetInteger(handle, MwNy) + sz.height > rc.height) {
|
||||
MwVaApply(handle,
|
||||
MwNy, rc.height - h,
|
||||
MwNy, rc.height - sz.height,
|
||||
NULL);
|
||||
}
|
||||
MwLLEndStateChange(handle->lowlevel);
|
||||
|
||||
MwVaApply(handle,
|
||||
MwNwidth, w,
|
||||
MwNheight, h,
|
||||
MwNwidth, sz.width,
|
||||
MwNheight, sz.height,
|
||||
NULL);
|
||||
}
|
||||
|
||||
static void mwSubMenuGetSizeImpl(MwWidget handle, MwMenu menu, MwRect* rect) {
|
||||
int i;
|
||||
|
||||
rect->width = 0;
|
||||
rect->height = 0;
|
||||
|
||||
for(i = 0; i < arrlen(menu->sub); i++) {
|
||||
if(strcmp(menu->sub[i]->name, "----") == 0) {
|
||||
rect->height += 2 + 2;
|
||||
} else {
|
||||
int tw = MwTextWidth(handle, menu->sub[i]->name);
|
||||
rect->height += MwTextHeight(handle, menu->sub[i]->name) + 3;
|
||||
if(tw > rect->width) {
|
||||
rect->width = tw;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
rect->width += MwGetInteger(handle, MwNleftPadding);
|
||||
|
||||
rect->width += 10 + 15;
|
||||
rect->height += 3;
|
||||
|
||||
rect->width += 16;
|
||||
}
|
||||
|
||||
static void func_handler(MwWidget handle, const char* name, void* out, va_list va) {
|
||||
(void)out;
|
||||
|
||||
@@ -211,6 +230,10 @@ static void func_handler(MwWidget handle, const char* name, void* out, va_list v
|
||||
MwPoint* point = va_arg(va, MwPoint*);
|
||||
int diff_calc = va_arg(va, int);
|
||||
mwSubMenuAppearImpl(handle, menu, point, diff_calc);
|
||||
} else if(strcmp(name, "mwSubMenuGetSize") == 0) {
|
||||
MwMenu menu = va_arg(va, MwMenu);
|
||||
MwRect* rect = va_arg(va, MwRect*);
|
||||
mwSubMenuGetSizeImpl(handle, menu, rect);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -230,7 +253,7 @@ MwClassRec MwSubMenuClassRec = {
|
||||
NULL, /* resize */
|
||||
NULL, /* children_update */
|
||||
NULL, /* children_prop_change */
|
||||
NULL,
|
||||
NULL, /* clipboard */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -496,7 +496,7 @@ MwClassRec MwTreeViewClassRec = {
|
||||
NULL, /* resize */
|
||||
NULL, /* children_update */
|
||||
NULL, /* children_prop_change */
|
||||
NULL,
|
||||
NULL, /* clipboard */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -191,7 +191,7 @@ MwClassRec MwViewportClassRec = {
|
||||
NULL, /* resize */
|
||||
NULL, /* children_update */
|
||||
NULL, /* children_prop_change */
|
||||
NULL,
|
||||
NULL, /* clipboard */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -524,7 +524,7 @@ MwClassRec MwVulkanClassRec = {
|
||||
NULL, /* resize */
|
||||
NULL, /* children_update */
|
||||
NULL, /* children_prop_change */
|
||||
NULL,
|
||||
NULL, /* clipboard */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
@@ -59,7 +59,7 @@ MwClassRec MwWindowClassRec = {
|
||||
NULL, /* resize */
|
||||
NULL, /* children_update */
|
||||
NULL, /* children_prop_change */
|
||||
NULL,
|
||||
NULL, /* clipboard */
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
|
||||
105
tools/gendcl.pl
Executable file
105
tools/gendcl.pl
Executable file
@@ -0,0 +1,105 @@
|
||||
#!/usr/bin/env perl
|
||||
|
||||
our $clean = 0;
|
||||
my @objs = ();
|
||||
|
||||
sub compile {
|
||||
my ($source) = @_;
|
||||
my $object = "";
|
||||
my $dir = "";
|
||||
|
||||
$dir = $source;
|
||||
$dir =~ s/\/([^\/]+)$//;
|
||||
|
||||
$source =~ s/^(.+)\/([^\/]+)$/[\/\1]\2/;
|
||||
$source =~ s/\//\./g;
|
||||
|
||||
$object = $source;
|
||||
$object =~ s/\.c$/.obj/;
|
||||
|
||||
print(OUT "\$ if f\$search(\"$object;*\") .eqs. \"\"\n");
|
||||
print(OUT "\$ then\n");
|
||||
print(OUT "\$ write sys\$output \"CC $object\"\n");
|
||||
print(OUT
|
||||
"\$ cc /include_directory=(\"./include\",\"./$dir\") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=$object $source\n"
|
||||
);
|
||||
print(OUT "\$ endif\n");
|
||||
|
||||
push(@objs, $object);
|
||||
}
|
||||
|
||||
sub clean {
|
||||
my ($source) = @_;
|
||||
my $object = "";
|
||||
my $dir = "";
|
||||
|
||||
$source =~ s/^(.+)\/([^\/]+)$/[\/\1]\2/;
|
||||
$source =~ s/\//\./g;
|
||||
|
||||
$object = $source;
|
||||
$object =~ s/\.c$/.obj/;
|
||||
|
||||
print(OUT
|
||||
"\$ if f\$search(\"$object\") .nes. \"\" then delete $object;*\n");
|
||||
}
|
||||
|
||||
sub thing {
|
||||
if ($clean) {
|
||||
clean($_[0]);
|
||||
}
|
||||
else {
|
||||
compile($_[0]);
|
||||
}
|
||||
}
|
||||
|
||||
sub scan {
|
||||
my ($dir) = @_;
|
||||
|
||||
opendir(my $dh, $dir);
|
||||
while (my $file = readdir($dh)) {
|
||||
if ( !(($dir . "/" . $file) eq "src/widget/opengl.c")
|
||||
&& !(($dir . "/" . $file) eq "src/widget/vulkan.c")
|
||||
&& !(($dir . "/" . $file) eq "external/stb_truetype.c")
|
||||
&& !(($dir . "/" . $file) eq "external/stb_image.c")
|
||||
&& ($file =~ /\.c$/))
|
||||
{
|
||||
thing($dir . "/" . $file);
|
||||
}
|
||||
}
|
||||
closedir($dh);
|
||||
}
|
||||
|
||||
for (my $i = 0 ; $i < 2 ; $i++) {
|
||||
$clean = $i;
|
||||
|
||||
open(OUT, ">", $i == 0 ? "vms/build.com" : "vms/clean.com");
|
||||
scan("src");
|
||||
scan("src/cursor");
|
||||
scan("src/widget");
|
||||
scan("src/dialog");
|
||||
scan("src/font");
|
||||
scan("src/icon");
|
||||
scan("src/abstract");
|
||||
scan("external");
|
||||
thing("src/backend/x11.c");
|
||||
|
||||
if ($i == 0) {
|
||||
print(OUT "\$ if f\$search(\"[.src]MwSHR.exe;*\") .eqs. \"\"\n");
|
||||
print(OUT "\$ then\n");
|
||||
print(OUT "\$ write sys\$output \"LINK [.src]MwSHR.exe\"\n");
|
||||
print(OUT "\$ OPEN /WRITE LINK_OPT LINK.OPT\n");
|
||||
foreach my $obj (@objs) {
|
||||
print(OUT "\$ WRITE LINK_OPT \"$obj\"\n");
|
||||
}
|
||||
print(OUT "\$ WRITE LINK_OPT \"SYS\$LIBRARY:DECW\$XLIBSHR/SHARE\"\n");
|
||||
print(OUT "\$ WRITE LINK_OPT \"SYS\$LIBRARY:DPML\$SHR/SHARE\"\n");
|
||||
print(OUT "\$ CLOSE LINK_OPT\n");
|
||||
print(OUT "\$ link /SHAREABLE=[.src]MwSHR.exe LINK.OPT/options\n");
|
||||
print(OUT "\$ DELETE LINK.OPT;*\n");
|
||||
print(OUT "\$ endif\n");
|
||||
}
|
||||
else {
|
||||
clean("src/MwSHR.exe");
|
||||
}
|
||||
close(OUT);
|
||||
}
|
||||
382
vms/build.com
Normal file
382
vms/build.com
Normal file
@@ -0,0 +1,382 @@
|
||||
$ if f$search("[.src]color.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src]color.obj"
|
||||
$ cc /include_directory=("./include","./src") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src]color.obj [.src]color.c
|
||||
$ endif
|
||||
$ if f$search("[.src]core.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src]core.obj"
|
||||
$ cc /include_directory=("./include","./src") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src]core.obj [.src]core.c
|
||||
$ endif
|
||||
$ if f$search("[.src]default.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src]default.obj"
|
||||
$ cc /include_directory=("./include","./src") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src]default.obj [.src]default.c
|
||||
$ endif
|
||||
$ if f$search("[.src]draw.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src]draw.obj"
|
||||
$ cc /include_directory=("./include","./src") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src]draw.obj [.src]draw.c
|
||||
$ endif
|
||||
$ if f$search("[.src]error.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src]error.obj"
|
||||
$ cc /include_directory=("./include","./src") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src]error.obj [.src]error.c
|
||||
$ endif
|
||||
$ if f$search("[.src]lowlevel.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src]lowlevel.obj"
|
||||
$ cc /include_directory=("./include","./src") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src]lowlevel.obj [.src]lowlevel.c
|
||||
$ endif
|
||||
$ if f$search("[.src]string.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src]string.obj"
|
||||
$ cc /include_directory=("./include","./src") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src]string.obj [.src]string.c
|
||||
$ endif
|
||||
$ if f$search("[.src]text.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src]text.obj"
|
||||
$ cc /include_directory=("./include","./src") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src]text.obj [.src]text.c
|
||||
$ endif
|
||||
$ if f$search("[.src]unicode.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src]unicode.obj"
|
||||
$ cc /include_directory=("./include","./src") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src]unicode.obj [.src]unicode.c
|
||||
$ endif
|
||||
$ if f$search("[.src.cursor]arrow.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.cursor]arrow.obj"
|
||||
$ cc /include_directory=("./include","./src/cursor") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.cursor]arrow.obj [.src.cursor]arrow.c
|
||||
$ endif
|
||||
$ if f$search("[.src.cursor]cross.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.cursor]cross.obj"
|
||||
$ cc /include_directory=("./include","./src/cursor") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.cursor]cross.obj [.src.cursor]cross.c
|
||||
$ endif
|
||||
$ if f$search("[.src.cursor]default.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.cursor]default.obj"
|
||||
$ cc /include_directory=("./include","./src/cursor") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.cursor]default.obj [.src.cursor]default.c
|
||||
$ endif
|
||||
$ if f$search("[.src.cursor]hidden.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.cursor]hidden.obj"
|
||||
$ cc /include_directory=("./include","./src/cursor") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.cursor]hidden.obj [.src.cursor]hidden.c
|
||||
$ endif
|
||||
$ if f$search("[.src.cursor]text.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.cursor]text.obj"
|
||||
$ cc /include_directory=("./include","./src/cursor") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.cursor]text.obj [.src.cursor]text.c
|
||||
$ endif
|
||||
$ if f$search("[.src.widget]button.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.widget]button.obj"
|
||||
$ cc /include_directory=("./include","./src/widget") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.widget]button.obj [.src.widget]button.c
|
||||
$ endif
|
||||
$ if f$search("[.src.widget]checkbox.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.widget]checkbox.obj"
|
||||
$ cc /include_directory=("./include","./src/widget") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.widget]checkbox.obj [.src.widget]checkbox.c
|
||||
$ endif
|
||||
$ if f$search("[.src.widget]combobox.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.widget]combobox.obj"
|
||||
$ cc /include_directory=("./include","./src/widget") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.widget]combobox.obj [.src.widget]combobox.c
|
||||
$ endif
|
||||
$ if f$search("[.src.widget]entry.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.widget]entry.obj"
|
||||
$ cc /include_directory=("./include","./src/widget") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.widget]entry.obj [.src.widget]entry.c
|
||||
$ endif
|
||||
$ if f$search("[.src.widget]frame.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.widget]frame.obj"
|
||||
$ cc /include_directory=("./include","./src/widget") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.widget]frame.obj [.src.widget]frame.c
|
||||
$ endif
|
||||
$ if f$search("[.src.widget]image.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.widget]image.obj"
|
||||
$ cc /include_directory=("./include","./src/widget") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.widget]image.obj [.src.widget]image.c
|
||||
$ endif
|
||||
$ if f$search("[.src.widget]label.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.widget]label.obj"
|
||||
$ cc /include_directory=("./include","./src/widget") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.widget]label.obj [.src.widget]label.c
|
||||
$ endif
|
||||
$ if f$search("[.src.widget]listbox.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.widget]listbox.obj"
|
||||
$ cc /include_directory=("./include","./src/widget") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.widget]listbox.obj [.src.widget]listbox.c
|
||||
$ endif
|
||||
$ if f$search("[.src.widget]menu.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.widget]menu.obj"
|
||||
$ cc /include_directory=("./include","./src/widget") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.widget]menu.obj [.src.widget]menu.c
|
||||
$ endif
|
||||
$ if f$search("[.src.widget]numberentry.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.widget]numberentry.obj"
|
||||
$ cc /include_directory=("./include","./src/widget") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.widget]numberentry.obj [.src.widget]numberentry.c
|
||||
$ endif
|
||||
$ if f$search("[.src.widget]progressbar.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.widget]progressbar.obj"
|
||||
$ cc /include_directory=("./include","./src/widget") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.widget]progressbar.obj [.src.widget]progressbar.c
|
||||
$ endif
|
||||
$ if f$search("[.src.widget]radiobox.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.widget]radiobox.obj"
|
||||
$ cc /include_directory=("./include","./src/widget") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.widget]radiobox.obj [.src.widget]radiobox.c
|
||||
$ endif
|
||||
$ if f$search("[.src.widget]scrollbar.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.widget]scrollbar.obj"
|
||||
$ cc /include_directory=("./include","./src/widget") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.widget]scrollbar.obj [.src.widget]scrollbar.c
|
||||
$ endif
|
||||
$ if f$search("[.src.widget]separator.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.widget]separator.obj"
|
||||
$ cc /include_directory=("./include","./src/widget") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.widget]separator.obj [.src.widget]separator.c
|
||||
$ endif
|
||||
$ if f$search("[.src.widget]submenu.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.widget]submenu.obj"
|
||||
$ cc /include_directory=("./include","./src/widget") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.widget]submenu.obj [.src.widget]submenu.c
|
||||
$ endif
|
||||
$ if f$search("[.src.widget]treeview.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.widget]treeview.obj"
|
||||
$ cc /include_directory=("./include","./src/widget") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.widget]treeview.obj [.src.widget]treeview.c
|
||||
$ endif
|
||||
$ if f$search("[.src.widget]viewport.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.widget]viewport.obj"
|
||||
$ cc /include_directory=("./include","./src/widget") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.widget]viewport.obj [.src.widget]viewport.c
|
||||
$ endif
|
||||
$ if f$search("[.src.widget]window.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.widget]window.obj"
|
||||
$ cc /include_directory=("./include","./src/widget") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.widget]window.obj [.src.widget]window.c
|
||||
$ endif
|
||||
$ if f$search("[.src.widget]box.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.widget]box.obj"
|
||||
$ cc /include_directory=("./include","./src/widget") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.widget]box.obj [.src.widget]box.c
|
||||
$ endif
|
||||
$ if f$search("[.src.dialog]colorpicker.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.dialog]colorpicker.obj"
|
||||
$ cc /include_directory=("./include","./src/dialog") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.dialog]colorpicker.obj [.src.dialog]colorpicker.c
|
||||
$ endif
|
||||
$ if f$search("[.src.dialog]directorychooser.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.dialog]directorychooser.obj"
|
||||
$ cc /include_directory=("./include","./src/dialog") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.dialog]directorychooser.obj [.src.dialog]directorychooser.c
|
||||
$ endif
|
||||
$ if f$search("[.src.dialog]filechooser.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.dialog]filechooser.obj"
|
||||
$ cc /include_directory=("./include","./src/dialog") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.dialog]filechooser.obj [.src.dialog]filechooser.c
|
||||
$ endif
|
||||
$ if f$search("[.src.dialog]messagebox.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.dialog]messagebox.obj"
|
||||
$ cc /include_directory=("./include","./src/dialog") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.dialog]messagebox.obj [.src.dialog]messagebox.c
|
||||
$ endif
|
||||
$ if f$search("[.src.font]boldfont.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.font]boldfont.obj"
|
||||
$ cc /include_directory=("./include","./src/font") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.font]boldfont.obj [.src.font]boldfont.c
|
||||
$ endif
|
||||
$ if f$search("[.src.font]boldttf.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.font]boldttf.obj"
|
||||
$ cc /include_directory=("./include","./src/font") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.font]boldttf.obj [.src.font]boldttf.c
|
||||
$ endif
|
||||
$ if f$search("[.src.font]font.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.font]font.obj"
|
||||
$ cc /include_directory=("./include","./src/font") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.font]font.obj [.src.font]font.c
|
||||
$ endif
|
||||
$ if f$search("[.src.font]ttf.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.font]ttf.obj"
|
||||
$ cc /include_directory=("./include","./src/font") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.font]ttf.obj [.src.font]ttf.c
|
||||
$ endif
|
||||
$ if f$search("[.src.icon]back.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.icon]back.obj"
|
||||
$ cc /include_directory=("./include","./src/icon") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.icon]back.obj [.src.icon]back.c
|
||||
$ endif
|
||||
$ if f$search("[.src.icon]clock.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.icon]clock.obj"
|
||||
$ cc /include_directory=("./include","./src/icon") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.icon]clock.obj [.src.icon]clock.c
|
||||
$ endif
|
||||
$ if f$search("[.src.icon]computer.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.icon]computer.obj"
|
||||
$ cc /include_directory=("./include","./src/icon") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.icon]computer.obj [.src.icon]computer.c
|
||||
$ endif
|
||||
$ if f$search("[.src.icon]directory.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.icon]directory.obj"
|
||||
$ cc /include_directory=("./include","./src/icon") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.icon]directory.obj [.src.icon]directory.c
|
||||
$ endif
|
||||
$ if f$search("[.src.icon]down.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.icon]down.obj"
|
||||
$ cc /include_directory=("./include","./src/icon") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.icon]down.obj [.src.icon]down.c
|
||||
$ endif
|
||||
$ if f$search("[.src.icon]error.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.icon]error.obj"
|
||||
$ cc /include_directory=("./include","./src/icon") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.icon]error.obj [.src.icon]error.c
|
||||
$ endif
|
||||
$ if f$search("[.src.icon]file.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.icon]file.obj"
|
||||
$ cc /include_directory=("./include","./src/icon") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.icon]file.obj [.src.icon]file.c
|
||||
$ endif
|
||||
$ if f$search("[.src.icon]forward.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.icon]forward.obj"
|
||||
$ cc /include_directory=("./include","./src/icon") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.icon]forward.obj [.src.icon]forward.c
|
||||
$ endif
|
||||
$ if f$search("[.src.icon]info.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.icon]info.obj"
|
||||
$ cc /include_directory=("./include","./src/icon") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.icon]info.obj [.src.icon]info.c
|
||||
$ endif
|
||||
$ if f$search("[.src.icon]left.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.icon]left.obj"
|
||||
$ cc /include_directory=("./include","./src/icon") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.icon]left.obj [.src.icon]left.c
|
||||
$ endif
|
||||
$ if f$search("[.src.icon]news.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.icon]news.obj"
|
||||
$ cc /include_directory=("./include","./src/icon") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.icon]news.obj [.src.icon]news.c
|
||||
$ endif
|
||||
$ if f$search("[.src.icon]note.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.icon]note.obj"
|
||||
$ cc /include_directory=("./include","./src/icon") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.icon]note.obj [.src.icon]note.c
|
||||
$ endif
|
||||
$ if f$search("[.src.icon]right.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.icon]right.obj"
|
||||
$ cc /include_directory=("./include","./src/icon") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.icon]right.obj [.src.icon]right.c
|
||||
$ endif
|
||||
$ if f$search("[.src.icon]search.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.icon]search.obj"
|
||||
$ cc /include_directory=("./include","./src/icon") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.icon]search.obj [.src.icon]search.c
|
||||
$ endif
|
||||
$ if f$search("[.src.icon]up.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.icon]up.obj"
|
||||
$ cc /include_directory=("./include","./src/icon") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.icon]up.obj [.src.icon]up.c
|
||||
$ endif
|
||||
$ if f$search("[.src.icon]warning.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.icon]warning.obj"
|
||||
$ cc /include_directory=("./include","./src/icon") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.icon]warning.obj [.src.icon]warning.c
|
||||
$ endif
|
||||
$ if f$search("[.src.abstract]directory.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.abstract]directory.obj"
|
||||
$ cc /include_directory=("./include","./src/abstract") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.abstract]directory.obj [.src.abstract]directory.c
|
||||
$ endif
|
||||
$ if f$search("[.src.abstract]dynamic.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.abstract]dynamic.obj"
|
||||
$ cc /include_directory=("./include","./src/abstract") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.abstract]dynamic.obj [.src.abstract]dynamic.c
|
||||
$ endif
|
||||
$ if f$search("[.src.abstract]time.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.abstract]time.obj"
|
||||
$ cc /include_directory=("./include","./src/abstract") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.abstract]time.obj [.src.abstract]time.c
|
||||
$ endif
|
||||
$ if f$search("[.external]stb_ds.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.external]stb_ds.obj"
|
||||
$ cc /include_directory=("./include","./external") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.external]stb_ds.obj [.external]stb_ds.c
|
||||
$ endif
|
||||
$ if f$search("[.src.backend]x11.obj;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "CC [.src.backend]x11.obj"
|
||||
$ cc /include_directory=("./include","./src/backend") /define=(_MILSKO,USE_X11,NO_IMAGE) /object=[.src.backend]x11.obj [.src.backend]x11.c
|
||||
$ endif
|
||||
$ if f$search("[.src]MwSHR.exe;*") .eqs. ""
|
||||
$ then
|
||||
$ write sys$output "LINK [.src]MwSHR.exe"
|
||||
$ OPEN /WRITE LINK_OPT LINK.OPT
|
||||
$ WRITE LINK_OPT "[.src]color.obj"
|
||||
$ WRITE LINK_OPT "[.src]core.obj"
|
||||
$ WRITE LINK_OPT "[.src]default.obj"
|
||||
$ WRITE LINK_OPT "[.src]draw.obj"
|
||||
$ WRITE LINK_OPT "[.src]error.obj"
|
||||
$ WRITE LINK_OPT "[.src]lowlevel.obj"
|
||||
$ WRITE LINK_OPT "[.src]string.obj"
|
||||
$ WRITE LINK_OPT "[.src]text.obj"
|
||||
$ WRITE LINK_OPT "[.src]unicode.obj"
|
||||
$ WRITE LINK_OPT "[.src.cursor]arrow.obj"
|
||||
$ WRITE LINK_OPT "[.src.cursor]cross.obj"
|
||||
$ WRITE LINK_OPT "[.src.cursor]default.obj"
|
||||
$ WRITE LINK_OPT "[.src.cursor]hidden.obj"
|
||||
$ WRITE LINK_OPT "[.src.cursor]text.obj"
|
||||
$ WRITE LINK_OPT "[.src.widget]button.obj"
|
||||
$ WRITE LINK_OPT "[.src.widget]checkbox.obj"
|
||||
$ WRITE LINK_OPT "[.src.widget]combobox.obj"
|
||||
$ WRITE LINK_OPT "[.src.widget]entry.obj"
|
||||
$ WRITE LINK_OPT "[.src.widget]frame.obj"
|
||||
$ WRITE LINK_OPT "[.src.widget]image.obj"
|
||||
$ WRITE LINK_OPT "[.src.widget]label.obj"
|
||||
$ WRITE LINK_OPT "[.src.widget]listbox.obj"
|
||||
$ WRITE LINK_OPT "[.src.widget]menu.obj"
|
||||
$ WRITE LINK_OPT "[.src.widget]numberentry.obj"
|
||||
$ WRITE LINK_OPT "[.src.widget]progressbar.obj"
|
||||
$ WRITE LINK_OPT "[.src.widget]radiobox.obj"
|
||||
$ WRITE LINK_OPT "[.src.widget]scrollbar.obj"
|
||||
$ WRITE LINK_OPT "[.src.widget]separator.obj"
|
||||
$ WRITE LINK_OPT "[.src.widget]submenu.obj"
|
||||
$ WRITE LINK_OPT "[.src.widget]treeview.obj"
|
||||
$ WRITE LINK_OPT "[.src.widget]viewport.obj"
|
||||
$ WRITE LINK_OPT "[.src.widget]window.obj"
|
||||
$ WRITE LINK_OPT "[.src.widget]box.obj"
|
||||
$ WRITE LINK_OPT "[.src.dialog]colorpicker.obj"
|
||||
$ WRITE LINK_OPT "[.src.dialog]directorychooser.obj"
|
||||
$ WRITE LINK_OPT "[.src.dialog]filechooser.obj"
|
||||
$ WRITE LINK_OPT "[.src.dialog]messagebox.obj"
|
||||
$ WRITE LINK_OPT "[.src.font]boldfont.obj"
|
||||
$ WRITE LINK_OPT "[.src.font]boldttf.obj"
|
||||
$ WRITE LINK_OPT "[.src.font]font.obj"
|
||||
$ WRITE LINK_OPT "[.src.font]ttf.obj"
|
||||
$ WRITE LINK_OPT "[.src.icon]back.obj"
|
||||
$ WRITE LINK_OPT "[.src.icon]clock.obj"
|
||||
$ WRITE LINK_OPT "[.src.icon]computer.obj"
|
||||
$ WRITE LINK_OPT "[.src.icon]directory.obj"
|
||||
$ WRITE LINK_OPT "[.src.icon]down.obj"
|
||||
$ WRITE LINK_OPT "[.src.icon]error.obj"
|
||||
$ WRITE LINK_OPT "[.src.icon]file.obj"
|
||||
$ WRITE LINK_OPT "[.src.icon]forward.obj"
|
||||
$ WRITE LINK_OPT "[.src.icon]info.obj"
|
||||
$ WRITE LINK_OPT "[.src.icon]left.obj"
|
||||
$ WRITE LINK_OPT "[.src.icon]news.obj"
|
||||
$ WRITE LINK_OPT "[.src.icon]note.obj"
|
||||
$ WRITE LINK_OPT "[.src.icon]right.obj"
|
||||
$ WRITE LINK_OPT "[.src.icon]search.obj"
|
||||
$ WRITE LINK_OPT "[.src.icon]up.obj"
|
||||
$ WRITE LINK_OPT "[.src.icon]warning.obj"
|
||||
$ WRITE LINK_OPT "[.src.abstract]directory.obj"
|
||||
$ WRITE LINK_OPT "[.src.abstract]dynamic.obj"
|
||||
$ WRITE LINK_OPT "[.src.abstract]time.obj"
|
||||
$ WRITE LINK_OPT "[.external]stb_ds.obj"
|
||||
$ WRITE LINK_OPT "[.src.backend]x11.obj"
|
||||
$ WRITE LINK_OPT "SYS$LIBRARY:DECW$XLIBSHR/SHARE/SHARE"
|
||||
$ WRITE LINK_OPT "SYS$LIBRARY:DPML$SHR/SHARE/SHARE"
|
||||
$ CLOSE LINK_OPT
|
||||
$ link /SHAREABLE=[.src]MwSHR.exe LINK.OPT/options
|
||||
$ DELETE LINK.OPT;*
|
||||
$ endif
|
||||
63
vms/clean.com
Normal file
63
vms/clean.com
Normal file
@@ -0,0 +1,63 @@
|
||||
$ if f$search("[.src]color.obj") .nes. "" then delete [.src]color.obj;*
|
||||
$ if f$search("[.src]core.obj") .nes. "" then delete [.src]core.obj;*
|
||||
$ if f$search("[.src]default.obj") .nes. "" then delete [.src]default.obj;*
|
||||
$ if f$search("[.src]draw.obj") .nes. "" then delete [.src]draw.obj;*
|
||||
$ if f$search("[.src]error.obj") .nes. "" then delete [.src]error.obj;*
|
||||
$ if f$search("[.src]lowlevel.obj") .nes. "" then delete [.src]lowlevel.obj;*
|
||||
$ if f$search("[.src]string.obj") .nes. "" then delete [.src]string.obj;*
|
||||
$ if f$search("[.src]text.obj") .nes. "" then delete [.src]text.obj;*
|
||||
$ if f$search("[.src]unicode.obj") .nes. "" then delete [.src]unicode.obj;*
|
||||
$ if f$search("[.src.cursor]arrow.obj") .nes. "" then delete [.src.cursor]arrow.obj;*
|
||||
$ if f$search("[.src.cursor]cross.obj") .nes. "" then delete [.src.cursor]cross.obj;*
|
||||
$ if f$search("[.src.cursor]default.obj") .nes. "" then delete [.src.cursor]default.obj;*
|
||||
$ if f$search("[.src.cursor]hidden.obj") .nes. "" then delete [.src.cursor]hidden.obj;*
|
||||
$ if f$search("[.src.cursor]text.obj") .nes. "" then delete [.src.cursor]text.obj;*
|
||||
$ if f$search("[.src.widget]button.obj") .nes. "" then delete [.src.widget]button.obj;*
|
||||
$ if f$search("[.src.widget]checkbox.obj") .nes. "" then delete [.src.widget]checkbox.obj;*
|
||||
$ if f$search("[.src.widget]combobox.obj") .nes. "" then delete [.src.widget]combobox.obj;*
|
||||
$ if f$search("[.src.widget]entry.obj") .nes. "" then delete [.src.widget]entry.obj;*
|
||||
$ if f$search("[.src.widget]frame.obj") .nes. "" then delete [.src.widget]frame.obj;*
|
||||
$ if f$search("[.src.widget]image.obj") .nes. "" then delete [.src.widget]image.obj;*
|
||||
$ if f$search("[.src.widget]label.obj") .nes. "" then delete [.src.widget]label.obj;*
|
||||
$ if f$search("[.src.widget]listbox.obj") .nes. "" then delete [.src.widget]listbox.obj;*
|
||||
$ if f$search("[.src.widget]menu.obj") .nes. "" then delete [.src.widget]menu.obj;*
|
||||
$ if f$search("[.src.widget]numberentry.obj") .nes. "" then delete [.src.widget]numberentry.obj;*
|
||||
$ if f$search("[.src.widget]progressbar.obj") .nes. "" then delete [.src.widget]progressbar.obj;*
|
||||
$ if f$search("[.src.widget]radiobox.obj") .nes. "" then delete [.src.widget]radiobox.obj;*
|
||||
$ if f$search("[.src.widget]scrollbar.obj") .nes. "" then delete [.src.widget]scrollbar.obj;*
|
||||
$ if f$search("[.src.widget]separator.obj") .nes. "" then delete [.src.widget]separator.obj;*
|
||||
$ if f$search("[.src.widget]submenu.obj") .nes. "" then delete [.src.widget]submenu.obj;*
|
||||
$ if f$search("[.src.widget]treeview.obj") .nes. "" then delete [.src.widget]treeview.obj;*
|
||||
$ if f$search("[.src.widget]viewport.obj") .nes. "" then delete [.src.widget]viewport.obj;*
|
||||
$ if f$search("[.src.widget]window.obj") .nes. "" then delete [.src.widget]window.obj;*
|
||||
$ if f$search("[.src.widget]box.obj") .nes. "" then delete [.src.widget]box.obj;*
|
||||
$ if f$search("[.src.dialog]colorpicker.obj") .nes. "" then delete [.src.dialog]colorpicker.obj;*
|
||||
$ if f$search("[.src.dialog]directorychooser.obj") .nes. "" then delete [.src.dialog]directorychooser.obj;*
|
||||
$ if f$search("[.src.dialog]filechooser.obj") .nes. "" then delete [.src.dialog]filechooser.obj;*
|
||||
$ if f$search("[.src.dialog]messagebox.obj") .nes. "" then delete [.src.dialog]messagebox.obj;*
|
||||
$ if f$search("[.src.font]boldfont.obj") .nes. "" then delete [.src.font]boldfont.obj;*
|
||||
$ if f$search("[.src.font]boldttf.obj") .nes. "" then delete [.src.font]boldttf.obj;*
|
||||
$ if f$search("[.src.font]font.obj") .nes. "" then delete [.src.font]font.obj;*
|
||||
$ if f$search("[.src.font]ttf.obj") .nes. "" then delete [.src.font]ttf.obj;*
|
||||
$ if f$search("[.src.icon]back.obj") .nes. "" then delete [.src.icon]back.obj;*
|
||||
$ if f$search("[.src.icon]clock.obj") .nes. "" then delete [.src.icon]clock.obj;*
|
||||
$ if f$search("[.src.icon]computer.obj") .nes. "" then delete [.src.icon]computer.obj;*
|
||||
$ if f$search("[.src.icon]directory.obj") .nes. "" then delete [.src.icon]directory.obj;*
|
||||
$ if f$search("[.src.icon]down.obj") .nes. "" then delete [.src.icon]down.obj;*
|
||||
$ if f$search("[.src.icon]error.obj") .nes. "" then delete [.src.icon]error.obj;*
|
||||
$ if f$search("[.src.icon]file.obj") .nes. "" then delete [.src.icon]file.obj;*
|
||||
$ if f$search("[.src.icon]forward.obj") .nes. "" then delete [.src.icon]forward.obj;*
|
||||
$ if f$search("[.src.icon]info.obj") .nes. "" then delete [.src.icon]info.obj;*
|
||||
$ if f$search("[.src.icon]left.obj") .nes. "" then delete [.src.icon]left.obj;*
|
||||
$ if f$search("[.src.icon]news.obj") .nes. "" then delete [.src.icon]news.obj;*
|
||||
$ if f$search("[.src.icon]note.obj") .nes. "" then delete [.src.icon]note.obj;*
|
||||
$ if f$search("[.src.icon]right.obj") .nes. "" then delete [.src.icon]right.obj;*
|
||||
$ if f$search("[.src.icon]search.obj") .nes. "" then delete [.src.icon]search.obj;*
|
||||
$ if f$search("[.src.icon]up.obj") .nes. "" then delete [.src.icon]up.obj;*
|
||||
$ if f$search("[.src.icon]warning.obj") .nes. "" then delete [.src.icon]warning.obj;*
|
||||
$ if f$search("[.src.abstract]directory.obj") .nes. "" then delete [.src.abstract]directory.obj;*
|
||||
$ if f$search("[.src.abstract]dynamic.obj") .nes. "" then delete [.src.abstract]dynamic.obj;*
|
||||
$ if f$search("[.src.abstract]time.obj") .nes. "" then delete [.src.abstract]time.obj;*
|
||||
$ if f$search("[.external]stb_ds.obj") .nes. "" then delete [.external]stb_ds.obj;*
|
||||
$ if f$search("[.src.backend]x11.obj") .nes. "" then delete [.src.backend]x11.obj;*
|
||||
$ if f$search("[.src]MwSHR.exe") .nes. "" then delete [.src]MwSHR.exe;*
|
||||
Reference in New Issue
Block a user