summaryrefslogtreecommitdiff
path: root/new/ui.h
diff options
context:
space:
mode:
Diffstat (limited to 'new/ui.h')
-rw-r--r--new/ui.h159
1 files changed, 0 insertions, 159 deletions
diff --git a/new/ui.h b/new/ui.h
deleted file mode 100644
index b1a03c8..0000000
--- a/new/ui.h
+++ /dev/null
@@ -1,159 +0,0 @@
-// 6 april 2015
-
-#ifndef __UI_UI_H__
-#define __UI_UI_H__
-
-#include <stdint.h>
-
-typedef struct uiInitOptions uiInitOptions;
-
-// TODO note that should be initialized to zero
-struct uiInitOptions {
- // TODO cbSize
-
- // If nonzero, allocations will be logged to stderr.
- // See leaks.awk.
- int debugLogAllocations;
-};
-
-const char *uiInit(uiInitOptions *);
-void uiFreeInitError(const char *);
-
-void uiMain(void);
-void uiQuit(void);
-
-void uiFreeText(char *);
-
-typedef struct uiSizing uiSizing;
-typedef struct uiSizingSys uiSizingSys;
-struct uiSizing {
- intmax_t xPadding;
- intmax_t yPadding;
- uiSizingSys *sys;
-};
-
-typedef struct uiParent uiParent;
-
-typedef struct uiControl uiControl;
-struct uiControl {
- void *data; // for use by implementations only
- void *internal; // for use by ui only
- void (*destroy)(uiControl *);
- uintptr_t (*handle)(uiControl *);
- void (*setParent)(uiControl *, uiParent *);
- void (*preferredSize)(uiControl *, uiSizing *, intmax_t *, intmax_t *);
- void (*resize)(uiControl *, intmax_t, intmax_t, intmax_t, intmax_t, uiSizing *);
- int (*visible)(uiControl *);
- void (*show)(uiControl *);
- void (*hide)(uiControl *);
- void (*containerShow)(uiControl *);
- void (*containerHide)(uiControl *);
- void (*enable)(uiControl *);
- void (*disable)(uiControl *);
- void (*containerEnable)(uiControl *);
- void (*containerDisable)(uiControl *);
-};
-void uiControlDestroy(uiControl *);
-uintptr_t uiControlHandle(uiControl *);
-void uiControlSetParent(uiControl *, uiParent *);
-void uiControlPreferredSize(uiControl *, uiSizing *, intmax_t *width, intmax_t *height);
-void uiControlResize(uiControl *, intmax_t, intmax_t, intmax_t, intmax_t, uiSizing *);
-int uiControlVisible(uiControl *);
-void uiControlShow(uiControl *);
-void uiControlHide(uiControl *);
-void uiControlContainerShow(uiControl *);
-void uiControlContainerHide(uiControl *);
-void uiControlEnable(uiControl *);
-void uiControlDisable(uiControl *);
-void uiControlContainerEnable(uiControl *);
-void uiControlContainerDisable(uiControl *);
-
-// uiParent represents an OS control that hosts other OS controls.
-// It is used internally by package ui and by implementations.
-// uiWindow, uiTab, and uiGroup all use uiParents to store their controls.
-struct uiParent {
- // Internal points to internal data.
- // Do not access or alter this field.
- void *Internal;
-
- // TODO destroy
- // TODO object destruction debug handler
-
- // Handle returns the window handle of the uiParent.
- // On Windows, this is a HWND.
- // On GTK+, this is a GtkContainer.
- // On Mac OS X, this is a NSView.
- uintptr_t (*Handle)(uiParent *p);
-#define uiParentHandle(p) ((*((p)->Handle))((p)))
-
- // SetChild sets the uiControl that this uiParent relegates.
- // It calls uiControl.SetParent() which should, in turn, call uiParent.Update().
- // The uiParent should already not have a child and the uiControl should already not have a parent.
- //
- // child can be NULL, in which case the uiParent has no children.
- // This version should also call uiControl.SetParent(), passing NULL.
- //
- // If this uiParent has a child already, then the current child is replaced with the new one.
- void (*SetChild)(uiParent *p, uiControl *child);
-#define uiParentSetChild(p, child) ((*((p)->SetChild))((p), (child)))
-
- // SetMargins sets the margins of the uiParent to the given margins.
- // It does not call uiParent.Update(); its caller must.
- // The units of the margins are backend-defined.
- // The initial margins are all 0.
- void (*SetMargins)(uiParent *p, intmax_t left, intmax_t top, intmax_t right, intmax_t bottom);
-#define uiParentSetMargins(p, left, top, right, bottom) ((*((p)->SetMargins))((p), (left), (top), (right), (bottom)))
-
- // TODO Resize?
-
- // Update tells the uiParent to re-layout its children immediately.
- // It is called when a widget is shown or hidden or when a control is added or removed from a container such as uiStack.
- void (*Update)(uiParent *p);
-#define uiParentUpdate(p) ((*((p)->Update))((p)))
-};
-uiParent *uiNewParent(uintptr_t);
-
-typedef struct uiWindow uiWindow;
-uiWindow *uiNewWindow(char *, int, int);
-void uiWindowDestroy(uiWindow *);
-uintptr_t uiWindowHandle(uiWindow *);
-char *uiWindowTitle(uiWindow *);
-void uiWindowSetTitle(uiWindow *, const char *);
-void uiWindowShow(uiWindow *);
-void uiWindowHide(uiWindow *);
-void uiWindowOnClosing(uiWindow *, int (*)(uiWindow *, void *), void *);
-void uiWindowSetChild(uiWindow *, uiControl *);
-int uiWindowMargined(uiWindow *);
-void uiWindowSetMargined(uiWindow *, int);
-
-uiControl *uiNewButton(const char *);
-char *uiButtonText(uiControl *);
-void uiButtonSetText(uiControl *, const char *);
-void uiButtonOnClicked(uiControl *, void (*)(uiControl *, void *), void *);
-
-uiControl *uiNewHorizontalStack(void);
-uiControl *uiNewVerticalStack(void);
-void uiStackAppend(uiControl *, uiControl *, int);
-void uiStackDelete(uiControl *, uintmax_t);
-int uiStackPadded(uiControl *);
-void uiStackSetPadded(uiControl *, int);
-
-uiControl *uiNewEntry(void);
-char *uiEntryText(uiControl *);
-void uiEntrySetText(uiControl *, const char *);
-
-uiControl *uiNewCheckbox(const char *);
-char *uiCheckboxText(uiControl *);
-void uiCheckboxSetText(uiControl *, const char *);
-void uiCheckboxOnToggled(uiControl *, void (*)(uiControl *, void *), void *);
-int uiCheckboxChecked(uiControl *);
-void uiCheckboxSetChecked(uiControl *, int);
-
-uiControl *uiNewLabel(const char *);
-char *uiLabelText(uiControl *);
-void uiLabelSetText(uiControl *, const char *);
-
-uiControl *uiNewTab(void);
-void uiTabAddPage(uiControl *, const char *, uiControl *);
-
-#endif