Moved everything up a directory level.

This commit is contained in:
Pietro Gagliardi 2015-08-27 12:05:11 -04:00
parent 4405001f07
commit 8213eac2d7
155 changed files with 245 additions and 245 deletions

View File

@ -8,6 +8,8 @@ IDLFILES = \
$(baseIDLFILES)
xHFILES = \
uipriv.h \
$(IDLFILES:%.idl=$(OUTDIR)/%.h) \
$(baseHFILES)
OFILES = \
@ -61,6 +63,11 @@ $(OBJDIR)/%.o: %.rc $(xHFILES) | $$(dir $$@).phony
@touch $@
.PRECIOUS: %/.phony
$(OUTDIR)/%.h: %.idl tools/idl2h.go | $(OUTDIR)/.phony
@go run tools/idl2h.go -extern _UI_EXTERN -guard __UI_UI_H__ < $< > $@
@echo ====== Generated `basename $@`
.PRECIOUS: $(OUTDIR)/%.h
clean:
rm -rf $(OUTDIR) $(OBJDIR) z*
.PHONY: clean

View File

@ -16,8 +16,11 @@ endif
include $(OS)/GNUmakeinc.mk
baseIDLFILES = \
ui.idl
# ui_$(OS).idl
baseHFILES = \
ui.h \
uipriv.h \
ui_$(OS).h \
$(osHFILES)

View File

153
control.c Normal file
View File

@ -0,0 +1,153 @@
// 26 may 2015
#include "out/ui.h"
#include "uipriv.h"
struct controlBase {
uiControl *parent;
int hidden;
int disabled;
};
static uintmax_t type_uiControl = 0;
uintmax_t uiTypeControl(void)
{
if (type_uiControl == 0)
type_uiControl = uiRegisterType("uiControl", 0, 0);
return type_uiControl;
}
#define controlBase(c) ((struct controlBase *) (c->Internal))
static void controlBaseDestroy(uiControl *c)
{
struct controlBase *cb = controlBase(c);
if (cb->parent != NULL)
complain("attempt to destroy uiControl %p while it has a parent", c);
uiControlCommitDestroy(c);
uiFree(cb);
uiFree(c);
}
static uiControl *controlBaseParent(uiControl *c)
{
struct controlBase *cb = controlBase(c);
return cb->parent;
}
static void controlBaseSetParent(uiControl *c, uiControl *parent)
{
struct controlBase *cb = controlBase(c);
if (parent != NULL && cb->parent != NULL)
complain("attempt to reparent uiControl %p (has parent %p, attempt to give parent %p)", c, cb->parent, parent);
if (parent == NULL && cb->parent == NULL)
complain("attempt to double unparent uiControl %p", c);
// this must come first; GTK+ CommitSetParent() needs the old parent
uiControlCommitSetParent(c, parent);
cb->parent = parent;
// for situations such as where the old parent was disabled but the new one is not, etc.
uiControlUpdateState(c);
}
static void controlBaseQueueResize(uiControl *c)
{
queueResize(c);
}
static int controlBaseContainerVisible(uiControl *c)
{
struct controlBase *cb = controlBase(c);
if (cb->hidden)
return 0;
if (cb->parent == NULL)
return 1;
return uiControlContainerVisible(cb->parent);
}
static void controlBaseShow(uiControl *c)
{
struct controlBase *cb = controlBase(c);
cb->hidden = 0;
uiControlUpdateState(c);
}
static void controlBaseHide(uiControl *c)
{
struct controlBase *cb = controlBase(c);
cb->hidden = 1;
uiControlUpdateState(c);
}
static int controlBaseContainerEnabled(uiControl *c)
{
struct controlBase *cb = controlBase(c);
if (cb->disabled)
return 0;
if (cb->parent == NULL)
return 1;
return uiControlContainerEnabled(cb->parent);
}
static void controlBaseEnable(uiControl *c)
{
struct controlBase *cb = controlBase(c);
cb->disabled = 0;
uiControlUpdateState(c);
}
static void controlBaseDisable(uiControl *c)
{
struct controlBase *cb = controlBase(c);
cb->disabled = 1;
uiControlUpdateState(c);
}
static void controlBaseUpdateState(uiControl *c)
{
if (uiControlContainerVisible(c))
uiControlCommitShow(c);
else
uiControlCommitHide(c);
if (uiControlContainerEnabled(c))
uiControlCommitEnable(c);
else
uiControlCommitDisable(c);
uiControlContainerUpdateState(c);
// and queue a resize, just in case we showed/hid something
uiControlQueueResize(c);
}
static void controlBaseContainerUpdateState(uiControl *c)
{
// by default not a container; do nothing
}
uiControl *uiNewControl(uintmax_t type)
{
uiControl *c;
c = uiControl(newTyped(type));
uiControl(c)->Internal = uiNew(struct controlBase);
uiControl(c)->Destroy = controlBaseDestroy;
uiControl(c)->Parent = controlBaseParent;
uiControl(c)->SetParent = controlBaseSetParent;
uiControl(c)->QueueResize = controlBaseQueueResize;
uiControl(c)->ContainerVisible = controlBaseContainerVisible;
uiControl(c)->Show = controlBaseShow;
uiControl(c)->Hide = controlBaseHide;
uiControl(c)->ContainerEnabled = controlBaseContainerEnabled;
uiControl(c)->Enable = controlBaseEnable;
uiControl(c)->Disable = controlBaseDisable;
uiControl(c)->UpdateState = controlBaseUpdateState;
uiControl(c)->ContainerUpdateState = controlBaseContainerUpdateState;
return uiControl(c);
}

View File

@ -1,17 +1,17 @@
// 29 may 2015
#include "ui.h"
#include "out/ui.h"
static uintmax_t type_uiMenu = 0;
static uintmax_t type_uiMenuItem = 0;
uintmax_t uiMenuType(void)
uintmax_t uiTypeMenu(void)
{
if (type_uiMenu == 0)
type_uiMenu = uiRegisterType("uiMenu", 0, 0);
return type_uiMenu;
}
uintmax_t uiMenuItemType(void)
uintmax_t uiTypeMenuItem(void)
{
if (type_uiMenuItem == 0)
type_uiMenuItem = uiRegisterType("uiMenuItem", 0, 0);

View File

@ -1,6 +1,6 @@
// 5 may 2015
#include <string.h>
#include "ui.h"
#include "out/ui.h"
#include "uipriv.h"
struct ptrArray *newPtrArray(void)

View File

@ -8,8 +8,6 @@ IDLFILES = \
$(baseIDLFILES)
xHFILES = \
uipriv.h \
$(IDLFILES:%.idl=$(OUTDIR)/%.h) \
$(baseHFILES)
OFILES = \
@ -63,11 +61,6 @@ $(OBJDIR)/%.o: %.rc $(xHFILES) | $$(dir $$@).phony
@touch $@
.PRECIOUS: %/.phony
$(OUTDIR)/%.h: %.idl tools/idl2h.go | $(OUTDIR)/.phony
@go run tools/idl2h.go -extern _UI_EXTERN -guard __UI_UI_H__ < $< > $@
@echo ====== Generated `basename $@`
.PRECIOUS: $(OUTDIR)/%.h
clean:
rm -rf $(OUTDIR) $(OBJDIR) z*
.PHONY: clean

View File

@ -16,11 +16,8 @@ endif
include $(OS)/GNUmakeinc.mk
baseIDLFILES = \
ui.idl
# ui_$(OS).idl
baseHFILES = \
ui.h \
uipriv.h \
ui_$(OS).h \
$(osHFILES)

View File

@ -1,5 +1,5 @@
// 26 may 2015
#include "out/ui.h"
#include "ui.h"
#include "uipriv.h"
struct controlBase {
@ -10,54 +10,74 @@ struct controlBase {
static uintmax_t type_uiControl = 0;
uintmax_t uiTypeControl(void)
uintmax_t uiControlType(void)
{
if (type_uiControl == 0)
type_uiControl = uiRegisterType("uiControl", 0, 0);
type_uiControl = uiRegisterType("uiControl", 0, sizeof (uiControl));
return type_uiControl;
}
#define controlBase(c) ((struct controlBase *) (c->Internal))
static void controlBaseDestroy(uiControl *c)
void uiControlDestroy(uiControl *c)
{
struct controlBase *cb = controlBase(c);
if (cb->parent != NULL)
complain("attempt to destroy uiControl %p while it has a parent", c);
uiControlCommitDestroy(c);
(*(c->CommitDestroy))(c);
uiFree(cb);
uiFree(c);
}
static uiControl *controlBaseParent(uiControl *c)
uintptr_t uiControlHandle(uiControl *c)
{
return (*(c->Handle))(c);
}
uiControl *uiControlParent(uiControl *c)
{
struct controlBase *cb = controlBase(c);
return cb->parent;
}
static void controlBaseSetParent(uiControl *c, uiControl *parent)
int isToplevel(uiControl *c)
{
return uiIsA(c, uiWindowType(), 0) != NULL;
}
// returns self if self is a window
uiControl *toplevelOwning(uiControl *c)
{
struct controlBase *cb;
for (;;) {
if (isToplevel(c))
return c;
cb = controlBase(c);
if (cb->parent == NULL)
return NULL;
c = cb->parent;
}
}
void uiControlSetParent(uiControl *c, uiControl *parent)
{
struct controlBase *cb = controlBase(c);
if (isToplevel(c))
complain("cannot set a parent on a toplevel (uiWindow)");
if (parent != NULL && cb->parent != NULL)
complain("attempt to reparent uiControl %p (has parent %p, attempt to give parent %p)", c, cb->parent, parent);
if (parent == NULL && cb->parent == NULL)
complain("attempt to double unparent uiControl %p", c);
// this must come first; GTK+ CommitSetParent() needs the old parent
uiControlCommitSetParent(c, parent);
cb->parent = parent;
// for situations such as where the old parent was disabled but the new one is not, etc.
uiControlUpdateState(c);
controlUpdateState(c);
}
static void controlBaseQueueResize(uiControl *c)
{
queueResize(c);
}
static int controlBaseContainerVisible(uiControl *c)
static int controlContainerVisible(uiControl *c)
{
struct controlBase *cb = controlBase(c);
@ -65,26 +85,26 @@ static int controlBaseContainerVisible(uiControl *c)
return 0;
if (cb->parent == NULL)
return 1;
return uiControlContainerVisible(cb->parent);
return controlContainerVisible(cb->parent);
}
static void controlBaseShow(uiControl *c)
void uiControlShow(uiControl *c)
{
struct controlBase *cb = controlBase(c);
cb->hidden = 0;
uiControlUpdateState(c);
controlUpdateState(c);
}
static void controlBaseHide(uiControl *c)
void uiControlHide(uiControl *c)
{
struct controlBase *cb = controlBase(c);
cb->hidden = 1;
uiControlUpdateState(c);
controlUpdateState(c);
}
static int controlBaseContainerEnabled(uiControl *c)
static int controlContainerEnabled(uiControl *c)
{
struct controlBase *cb = controlBase(c);
@ -92,43 +112,38 @@ static int controlBaseContainerEnabled(uiControl *c)
return 0;
if (cb->parent == NULL)
return 1;
return uiControlContainerEnabled(cb->parent);
return controlContainerEnabled(cb->parent);
}
static void controlBaseEnable(uiControl *c)
void uiControlEnable(uiControl *c)
{
struct controlBase *cb = controlBase(c);
cb->disabled = 0;
uiControlUpdateState(c);
controlUpdateState(c);
}
static void controlBaseDisable(uiControl *c)
void uiControlDisable(uiControl *c)
{
struct controlBase *cb = controlBase(c);
cb->disabled = 1;
uiControlUpdateState(c);
controlUpdateState(c);
}
static void controlBaseUpdateState(uiControl *c)
void controlUpdateState(uiControl *c)
{
if (uiControlContainerVisible(c))
uiControlCommitShow(c);
if (controlContainerVisible(c))
(*(c->CommitShow))(c);
else
uiControlCommitHide(c);
if (uiControlContainerEnabled(c))
uiControlCommitEnable(c);
(*(c->CommitHide))(c);
if (controlContainerEnabled(c))
osCommitEnable(c);
else
uiControlCommitDisable(c);
uiControlContainerUpdateState(c);
osCommitDisable(c);
(*(c->ContainerUpdateState))(c);
// and queue a resize, just in case we showed/hid something
uiControlQueueResize(c);
}
static void controlBaseContainerUpdateState(uiControl *c)
{
// by default not a container; do nothing
//TODO uiControlQueueResize(c);
}
uiControl *uiNewControl(uintmax_t type)
@ -136,18 +151,6 @@ uiControl *uiNewControl(uintmax_t type)
uiControl *c;
c = uiControl(newTyped(type));
uiControl(c)->Internal = uiNew(struct controlBase);
uiControl(c)->Destroy = controlBaseDestroy;
uiControl(c)->Parent = controlBaseParent;
uiControl(c)->SetParent = controlBaseSetParent;
uiControl(c)->QueueResize = controlBaseQueueResize;
uiControl(c)->ContainerVisible = controlBaseContainerVisible;
uiControl(c)->Show = controlBaseShow;
uiControl(c)->Hide = controlBaseHide;
uiControl(c)->ContainerEnabled = controlBaseContainerEnabled;
uiControl(c)->Enable = controlBaseEnable;
uiControl(c)->Disable = controlBaseDisable;
uiControl(c)->UpdateState = controlBaseUpdateState;
uiControl(c)->ContainerUpdateState = controlBaseContainerUpdateState;
return uiControl(c);
c->Internal = uiNew(struct controlBase);
return c;
}

View File

@ -1,17 +1,17 @@
// 29 may 2015
#include "out/ui.h"
#include "ui.h"
static uintmax_t type_uiMenu = 0;
static uintmax_t type_uiMenuItem = 0;
uintmax_t uiTypeMenu(void)
uintmax_t uiMenuType(void)
{
if (type_uiMenu == 0)
type_uiMenu = uiRegisterType("uiMenu", 0, 0);
return type_uiMenu;
}
uintmax_t uiTypeMenuItem(void)
uintmax_t uiMenuItemType(void)
{
if (type_uiMenuItem == 0)
type_uiMenuItem = uiRegisterType("uiMenuItem", 0, 0);

View File

@ -1,6 +1,6 @@
// 5 may 2015
#include <string.h>
#include "out/ui.h"
#include "ui.h"
#include "uipriv.h"
struct ptrArray *newPtrArray(void)

View File

@ -1,156 +0,0 @@
// 26 may 2015
#include "ui.h"
#include "uipriv.h"
struct controlBase {
uiControl *parent;
int hidden;
int disabled;
};
static uintmax_t type_uiControl = 0;
uintmax_t uiControlType(void)
{
if (type_uiControl == 0)
type_uiControl = uiRegisterType("uiControl", 0, sizeof (uiControl));
return type_uiControl;
}
#define controlBase(c) ((struct controlBase *) (c->Internal))
void uiControlDestroy(uiControl *c)
{
struct controlBase *cb = controlBase(c);
if (cb->parent != NULL)
complain("attempt to destroy uiControl %p while it has a parent", c);
(*(c->CommitDestroy))(c);
uiFree(cb);
uiFree(c);
}
uintptr_t uiControlHandle(uiControl *c)
{
return (*(c->Handle))(c);
}
uiControl *uiControlParent(uiControl *c)
{
struct controlBase *cb = controlBase(c);
return cb->parent;
}
int isToplevel(uiControl *c)
{
return uiIsA(c, uiWindowType(), 0) != NULL;
}
// returns self if self is a window
uiControl *toplevelOwning(uiControl *c)
{
struct controlBase *cb;
for (;;) {
if (isToplevel(c))
return c;
cb = controlBase(c);
if (cb->parent == NULL)
return NULL;
c = cb->parent;
}
}
void uiControlSetParent(uiControl *c, uiControl *parent)
{
struct controlBase *cb = controlBase(c);
if (isToplevel(c))
complain("cannot set a parent on a toplevel (uiWindow)");
if (parent != NULL && cb->parent != NULL)
complain("attempt to reparent uiControl %p (has parent %p, attempt to give parent %p)", c, cb->parent, parent);
if (parent == NULL && cb->parent == NULL)
complain("attempt to double unparent uiControl %p", c);
cb->parent = parent;
// for situations such as where the old parent was disabled but the new one is not, etc.
controlUpdateState(c);
}
static int controlContainerVisible(uiControl *c)
{
struct controlBase *cb = controlBase(c);
if (cb->hidden)
return 0;
if (cb->parent == NULL)
return 1;
return controlContainerVisible(cb->parent);
}
void uiControlShow(uiControl *c)
{
struct controlBase *cb = controlBase(c);
cb->hidden = 0;
controlUpdateState(c);
}
void uiControlHide(uiControl *c)
{
struct controlBase *cb = controlBase(c);
cb->hidden = 1;
controlUpdateState(c);
}
static int controlContainerEnabled(uiControl *c)
{
struct controlBase *cb = controlBase(c);
if (cb->disabled)
return 0;
if (cb->parent == NULL)
return 1;
return controlContainerEnabled(cb->parent);
}
void uiControlEnable(uiControl *c)
{
struct controlBase *cb = controlBase(c);
cb->disabled = 0;
controlUpdateState(c);
}
void uiControlDisable(uiControl *c)
{
struct controlBase *cb = controlBase(c);
cb->disabled = 1;
controlUpdateState(c);
}
void controlUpdateState(uiControl *c)
{
if (controlContainerVisible(c))
(*(c->CommitShow))(c);
else
(*(c->CommitHide))(c);
if (controlContainerEnabled(c))
osCommitEnable(c);
else
osCommitDisable(c);
(*(c->ContainerUpdateState))(c);
// and queue a resize, just in case we showed/hid something
//TODO uiControlQueueResize(c);
}
uiControl *uiNewControl(uintmax_t type)
{
uiControl *c;
c = uiControl(newTyped(type));
c->Internal = uiNew(struct controlBase);
return c;
}

View File

@ -1,5 +1,5 @@
// 9 may 2015
#include "out/ui.h"
#include "ui.h"
#include "uipriv.h"
static int defaultOnShouldQuit(void *data)

View File

@ -4,7 +4,7 @@
#include <stdint.h>
#include <stdarg.h>
#include <string.h>
#include "../out/ui.h"
#include "../ui.h"
// main.c
extern void die(const char *, ...);

View File

@ -1,5 +1,5 @@
// 17 may 2015
#include "out/ui.h"
#include "ui.h"
#include "uipriv.h"
struct typeinfo {
@ -19,6 +19,7 @@ uintmax_t uiRegisterType(const char *name, uintmax_t parent, size_t size)
// reserve ID 0
ptrArrayAppend(types, NULL);
}
// TODO prevent our size from being smaller than our parent's
ti = uiNew(struct typeinfo);
ti->name = name;
ti->parent = parent;

View File

@ -15,7 +15,12 @@ extern void uiFree(void *);
extern void complain(const char *, ...);
extern void queueResize(uiControl *);
extern int isToplevel(uiControl *);
extern uiControl *toplevelOwning(uiControl *);
extern void controlUpdateState(uiControl *);
extern void osCommitEnable(uiControl *);
extern void osCommitDisable(uiControl *);
// ptrarray.c
struct ptrArray {

View File

@ -1,5 +1,5 @@
// 9 may 2015
#include "ui.h"
#include "out/ui.h"
#include "uipriv.h"
static int defaultOnShouldQuit(void *data)

View File

@ -4,7 +4,7 @@
#include <stdint.h>
#include <stdarg.h>
#include <string.h>
#include "../ui.h"
#include "../out/ui.h"
// main.c
extern void die(const char *, ...);

View File

@ -1,5 +1,5 @@
// 17 may 2015
#include "ui.h"
#include "out/ui.h"
#include "uipriv.h"
struct typeinfo {
@ -19,7 +19,6 @@ uintmax_t uiRegisterType(const char *name, uintmax_t parent, size_t size)
// reserve ID 0
ptrArrayAppend(types, NULL);
}
// TODO prevent our size from being smaller than our parent's
ti = uiNew(struct typeinfo);
ti->name = name;
ti->parent = parent;

View File

View File

@ -15,12 +15,7 @@ extern void uiFree(void *);
extern void complain(const char *, ...);
extern int isToplevel(uiControl *);
extern uiControl *toplevelOwning(uiControl *);
extern void controlUpdateState(uiControl *);
extern void osCommitEnable(uiControl *);
extern void osCommitDisable(uiControl *);
extern void queueResize(uiControl *);
// ptrarray.c
struct ptrArray {

Some files were not shown because too many files have changed in this diff Show More