Compare commits

..

8 Commits

Author SHA1 Message Date
NishiOwO
e9fd2705d4 fix 2025-12-21 23:05:42 +09:00
NishiOwO
a824b4fc44 oops 2025-12-21 23:04:53 +09:00
NishiOwO
c7c8f236b0 yes 2025-12-21 23:03:33 +09:00
NishiOwO
bdc67d6369 text shadow 2025-12-21 23:02:02 +09:00
NishiOwO
873c75b882 fix 2025-12-21 22:21:10 +09:00
NishiOwO
e44eaa2c16 fix 2025-12-21 22:02:33 +09:00
NishiOwO
0d281c09ce i will work on vms port at some point 2025-12-21 20:25:57 +09:00
NishiOwO
2b30a06ecf wip VMS port 2025-12-21 19:29:05 +09:00
11 changed files with 584 additions and 9 deletions

View File

@@ -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

View File

@@ -38,6 +38,7 @@
#define MwNbitmapFont "IbitmapFont"
#define MwNsevenSegment "IsevenSegment"
#define MwNlength "Ilength"
#define MwNforceInverted "IforceInverted"
#define MwNtitle "Stitle"
#define MwNtext "Stext"

View File

@@ -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" />

View File

@@ -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);

View File

@@ -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);

View File

@@ -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;

View File

@@ -126,7 +126,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);
@@ -317,6 +317,13 @@ static void draw(MwWidget handle) {
p.x = r.width - MwTextWidth(handle, str) / 2;
}
p.y = r.height / 2;
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);
}

View File

@@ -133,7 +133,7 @@ static void click(MwWidget handle) {
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 +142,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);
@@ -184,7 +184,7 @@ static void mwSubMenuAppearImpl(MwWidget handle, MwMenu menu, MwPoint* point, in
h += 3;
if(diff_calc) {
p.y = rc.height - p.y - h;
p.y = p.y - h;
}
MwLLMakeToolWindow(handle->lowlevel);

105
tools/gendcl.pl Executable file
View 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
View 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
View 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;*