diff options
Diffstat (limited to 'new/ui.idl')
| -rw-r--r-- | new/ui.idl | 161 |
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"; - -}; |
