summaryrefslogtreecommitdiff
path: root/new/ui.idl
diff options
context:
space:
mode:
Diffstat (limited to 'new/ui.idl')
-rw-r--r--new/ui.idl161
1 files changed, 0 insertions, 161 deletions
diff --git a/new/ui.idl b/new/ui.idl
deleted file mode 100644
index e820002..0000000
--- a/new/ui.idl
+++ /dev/null
@@ -1,161 +0,0 @@
-// 6 april 2015
-
-// This is not an IDL file for the conventional RPC or Microsoft IDLs.
-// Instead, this is for a custom IDL of my own creation.
-// You can find it at github.com/andlabs/pgidl
-
-package ui {
-
-// TODO autogenerate this somehow
-// TODO alternatively, move AFTER typedefs
-raw "#ifndef __UI_UI_H__";
-raw "#define __UI_UI_H__";
-
-raw "#include <stdint.h>";
-
-// TODO note that should be initialized to zero
-struct InitOptions {
- // TODO cbSize
-
- // If nonzero, allocations will be logged to stderr.
- // See leaks.awk.
- field debugLogAllocations int;
-};
-
-// TODO const char
-raw "const char *uiInit(uiInitOptions *);";
-raw "void uiFreeInitError(const char *);";
-
-func Main(void);
-func Quit(void);
-
-func FreeText(text *char);
-
-raw "typedef struct uiSizingSys uiSizingSys;";
-
-struct Sizing {
- field xPadding intmax_t;
- field yPadding intmax_t;
- field sys *uiSizingSys;
-};
-
-interface Control {
- field Internal *void; // for use by ui only
- func Destroy(void);
- func Handle(void) uintptr_t;
- func SetParent(p *Parent);
- func PreferredSize(d *Sizing, width *intmax_t, height *intmax_t);
- func Resize(x intmax_t, y intmax_t, width intmax_t, height intmax_t, d *Sizing);
- func Visible(void) int;
- func Show(void);
- func Hide(void);
- func ContainerShow(void);
- func ContainerHide(void);
- func Enable(void);
- func Disable(void);
- func ContainerEnable(void);
- func ContainerDisable(void);
-};
-
-// Parent represents an OS control that hosts other OS controls.
-// It is used internally by package ui and by implementations.
-// Window, Tab, and Group all use uiParents to store their controls.
-interface Parent {
- // Internal points to internal data.
- // Do not access or alter this field.
- field Internal *void;
-
- // 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.
- func Handle(void) uintptr_t;
-
- // TODO rename and clean this up
- // 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.
- func SetChild(c *Control);
-
- // 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.
- func SetMargins(left intmax_t, top intmax_t, right intmax_t, bottom intmax_t);
-
- // 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.
- func Update(void);
-};
-func NewParent(osParent uintptr_t) *Parent;
-
-interface Window {
- field Internal *void;
- func Destroy(void);
- func Handle(void) uintptr_t;
- func Title(void) *char;
- func SetTitle(title *const char);
- func Show(void);
- func Hide(void);
- func OnClosing(f *func(w *Window, data *void) int, data *void);
- func SetChild(c *Control);
- func Margined(void) int;
- func SetMargined(margined int);
-};
-func NewWindow(title *const char, width int, height int) *Window;
-
-interface Button from Control {
- func Text(void) *char;
- func SetText(text *const char);
- func OnClicked(f *func(b *Button, data *void), data *void);
-};
-func NewButton(text *const char) *Button;
-
-interface Stack from Control {
- func Append(c *Control, stretchy int);
- func Delete(index uintmax_t);
- func Padded(void) int;
- func SetPadded(padded int);
-};
-func NewHorizontalStack(void) *Stack;
-func NewVerticalStack(void) *Stack;
-
-interface Entry from Control {
- func Text(void) *char;
- func SetText(text *const char);
-};
-func NewEntry(void) *Entry;
-
-interface Checkbox from Control {
- func Text(void) *char;
- func SetText(text *const char);
- func OnToggled(f *func(c *Checkbox, data *void), data *void);
- func Checked(void) int;
- func SetChecked(checked int);
-};
-func NewCheckbox(text *const char) *Checkbox;
-
-interface Label from Control {
- func Text(void) *char;
- func SetText(text *const char);
-};
-func NewLabel(text *const char) *Label;
-
-interface Tab from Control {
- func AddPage(name *const char, c *Control);
-};
-func NewTab(void) *Tab;
-
-raw "#endif";
-
-};