diff --git a/wpf/area.cpp b/wpf/area.cpp new file mode 100644 index 00000000..9a4d2484 --- /dev/null +++ b/wpf/area.cpp @@ -0,0 +1,39 @@ +// 26 november 2015 +#include "uipriv_wpf.hpp" + +struct uiArea { + uiWindowsControl c; + DUMMY dummy; + uiAreaHandler *ah; +}; + +uiWindowsDefineControl( + uiArea, // type name + uiAreaType, // type function + dummy // handle +) + +void uiAreaUpdateScroll(uiArea *a) +{ + // TODO +} + +void uiAreaQueueRedrawAll(uiArea *a) +{ + // TODO +} + +uiArea *uiNewArea(uiAreaHandler *ah) +{ + uiArea *a; + + a = (uiArea *) uiNewControl(uiAreaType()); + + a->ah = ah; + + a->dummy = mkdummy(L"uiArea"); + + uiWindowsFinishNewControl(a, uiArea, dummy); + + return a; +} diff --git a/wpf/combobox.cpp b/wpf/combobox.cpp new file mode 100644 index 00000000..02d41dc1 --- /dev/null +++ b/wpf/combobox.cpp @@ -0,0 +1,60 @@ +// 26 november 2015 +#include "uipriv_wpf.hpp" + +struct uiCombobox { + uiWindowsControl c; + DUMMY dummy; +}; + +uiWindowsDefineControl( + uiCombobox, // type name + uiComboboxType, // type function + dummy // handle +) + +void uiComboboxAppend(uiCombobox *c, const char *text) +{ + // TODO +} + +intmax_t uiComboboxSelected(uiCombobox *c) +{ + // TODO + // return 0 so the area test can work + return 0; +} + +void uiComboboxSetSelected(uiCombobox *c, intmax_t n) +{ + // TODO +} + +void uiComboboxOnSelected(uiCombobox *c, void (*f)(uiCombobox *c, void *data), void *data) +{ + // TODO +} + +static uiCombobox *finishNewCombobox(bool editable) +{ + uiCombobox *c; + + c = (uiCombobox *) uiNewControl(uiComboboxType()); + + c->dummy = mkdummy(L"uiCombobox"); + +// (*(c->combobox))->IsReadOnly = editable; + + uiWindowsFinishNewControl(c, uiCombobox, dummy); + + return c; +} + +uiCombobox *uiNewCombobox(void) +{ + return finishNewCombobox(true); +} + +uiCombobox *uiNewEditableCombobox(void) +{ + return finishNewCombobox(false); +} diff --git a/wpf/datetimepicker.cpp b/wpf/datetimepicker.cpp new file mode 100644 index 00000000..3b8428f4 --- /dev/null +++ b/wpf/datetimepicker.cpp @@ -0,0 +1,41 @@ +// 26 november 2015 +#include "uipriv_wpf.hpp" + +struct uiDateTimePicker { + uiWindowsControl c; + DUMMY dummy; +}; + +uiWindowsDefineControl( + uiDateTimePicker, // type name + uiDateTimePickerType, // type function + dummy // handle +) + +static uiDateTimePicker *finishNewDateTimePicker(void) +{ + uiDateTimePicker *d; + + d = (uiDateTimePicker *) uiNewControl(uiDateTimePickerType()); + + d->dummy = mkdummy(L"uiDateTimePicker"); + + uiWindowsFinishNewControl(d, uiDateTimePicker, dummy); + + return d; +} + +uiDateTimePicker *uiNewDateTimePicker(void) +{ + return finishNewDateTimePicker(); +} + +uiDateTimePicker *uiNewDatePicker(void) +{ + return finishNewDateTimePicker(); +} + +uiDateTimePicker *uiNewTimePicker(void) +{ + return finishNewDateTimePicker(); +} diff --git a/wpf/draw.cpp b/wpf/draw.cpp new file mode 100644 index 00000000..87160762 --- /dev/null +++ b/wpf/draw.cpp @@ -0,0 +1,151 @@ +// 19 november 2015 +#include "uipriv_wpf.hpp" + +uiDrawPath *uiDrawNewPath(uiDrawFillMode fillMode) +{ + // TODO + return NULL; +} + +void uiDrawFreePath(uiDrawPath *p) +{ + // TODO +} + +void uiDrawPathNewFigure(uiDrawPath *p, double x, double y) +{ + // TODO +} + +void uiDrawPathNewFigureWithArc(uiDrawPath *p, double xCenter, double yCenter, double radius, double startAngle, double sweep, int negative) +{ + // TODO +} + +void uiDrawPathLineTo(uiDrawPath *p, double x, double y) +{ + // TODO +} + +void uiDrawPathArcTo(uiDrawPath *p, double xCenter, double yCenter, double radius, double startAngle, double sweep, int negative) +{ + // TODO +} + +void uiDrawPathBezierTo(uiDrawPath *p, double c1x, double c1y, double c2x, double c2y, double endX, double endY) +{ + // TODO +} + +void uiDrawPathCloseFigure(uiDrawPath *p) +{ + // TODO +} + +void uiDrawPathAddRectangle(uiDrawPath *p, double x, double y, double width, double height) +{ + // TODO +} + +void uiDrawPathEnd(uiDrawPath *p) +{ + // TODO +} + +struct uiDrawContext { + int TODO; +}; + +uiDrawContext *newContext(/* TODO */) +{ + // TODO + return NULL; +} + +void freeContext(uiDrawContext *c) +{ + uiFree(c); +} + +void uiDrawStroke(uiDrawContext *c, uiDrawPath *path, uiDrawBrush *b, uiDrawStrokeParams *p) +{ + // TODO +} + +void uiDrawFill(uiDrawContext *c, uiDrawPath *path, uiDrawBrush *b) +{ + // TODO +} + +void uiDrawMatrixSetIdentity(uiDrawMatrix *m) +{ + setIdentity(m); +} + +void uiDrawMatrixTranslate(uiDrawMatrix *m, double x, double y) +{ + // TODO +} + +void uiDrawMatrixScale(uiDrawMatrix *m, double xCenter, double yCenter, double x, double y) +{ + // TODO +} + +void uiDrawMatrixRotate(uiDrawMatrix *m, double x, double y, double amount) +{ + // TODO +} + +void uiDrawMatrixSkew(uiDrawMatrix *m, double x, double y, double xamount, double yamount) +{ + // TODO +} + +void uiDrawMatrixMultiply(uiDrawMatrix *dest, uiDrawMatrix *src) +{ + // TODO +} + +int uiDrawMatrixInvertible(uiDrawMatrix *m) +{ + // TODO + return 0; +} + +int uiDrawMatrixInvert(uiDrawMatrix *m) +{ + // TODO + return 0; +} + +void uiDrawMatrixTransformPoint(uiDrawMatrix *m, double *x, double *y) +{ + // TODO +} + +void uiDrawMatrixTransformSize(uiDrawMatrix *m, double *x, double *y) +{ + // TODO +} + +void uiDrawTransform(uiDrawContext *c, uiDrawMatrix *m) +{ + // TODO +} + +// TODO not documented on api.haiku-os.org +void uiDrawClip(uiDrawContext *c, uiDrawPath *path) +{ + // TODO +} + +void uiDrawSave(uiDrawContext *c) +{ + // TODO +} + +void uiDrawRestore(uiDrawContext *c) +{ + // TODO +} diff --git a/wpf/entry.cpp b/wpf/entry.cpp new file mode 100644 index 00000000..023a8603 --- /dev/null +++ b/wpf/entry.cpp @@ -0,0 +1,63 @@ +// 26 november 2015 +#include "uipriv_wpf.hpp" + +struct uiEntry { + uiWindowsControl c; + DUMMY dummy; + void (*onChanged)(uiEntry *, void *); + void *onChangedData; +}; + +uiWindowsDefineControl( + uiEntry, // type name + uiEntryType, // type function + dummy // handle +) + +static void defaultOnChanged(uiEntry *e, void *data) +{ + // do nothing +} + +char *uiEntryText(uiEntry *e) +{ + // TODO + return NULL; +} + +void uiEntrySetText(uiEntry *e, const char *text) +{ + // TODO +} + +void uiEntryOnChanged(uiEntry *e, void (*f)(uiEntry *e, void *data), void *data) +{ + e->onChanged = f; + e->onChangedData = data; +} + +int uiEntryReadOnly(uiEntry *e) +{ + // TODO + return 0; +} + +void uiEntrySetReadOnly(uiEntry *e, int readonly) +{ + // TODO +} + +uiEntry *uiNewEntry(void) +{ + uiEntry *e; + + e = (uiEntry *) uiNewControl(uiEntryType()); + + e->dummy = mkdummy("uiEntry"); + + uiEntryOnChanged(e, defaultOnChanged, NULL); + + uiWindowsFinishNewControl(e, uiEntry, dummy); + + return e; +} diff --git a/wpf/group.cpp b/wpf/group.cpp new file mode 100644 index 00000000..c5cb4df3 --- /dev/null +++ b/wpf/group.cpp @@ -0,0 +1,53 @@ +// 18 november 2015 +#include "uipriv_wpf.hpp" + +struct uiGroup { + uiWindowsControl c; + DUMMY dummy; +}; + +uiWindowsDefineControl( + uiGroup, // type name + uiGroupType, // type function + dummy // handle +) + +char *uiGroupTitle(uiGroup *g) +{ + // TODO + return NULL; +} + +void uiGroupSetTitle(uiGroup *g, const char *title) +{ + // TODO +} + +void uiGroupSetChild(uiGroup *g, uiControl *c) +{ + // TODO +} + +int uiGroupMargined(uiGroup *g) +{ + // TODO + return 0; +} + +void uiGroupSetMargined(uiGroup *g, int margined) +{ + // TODO +} + +uiGroup *uiNewGroup(const char *title) +{ + uiGroup *g; + + g = (uiGroup *) uiNewControl(uiGroupType()); + + g->dummy = mkdummy(L"uiGroup"); + + uiWindowsFinishNewControl(g, uiGroup, dummy); + + return g; +} diff --git a/wpf/libui.msbuild b/wpf/libui.msbuild index ef0d0d13..d1ac0571 100755 --- a/wpf/libui.msbuild +++ b/wpf/libui.msbuild @@ -75,18 +75,31 @@ false + + + false + + + false + + + + + + + diff --git a/wpf/menu.cpp b/wpf/menu.cpp new file mode 100644 index 00000000..06fdcd9b --- /dev/null +++ b/wpf/menu.cpp @@ -0,0 +1,69 @@ +// 19 november 2015 +#include "uipriv_wpf.hpp" + +void uiMenuItemEnable(uiMenuItem *m) +{ + // TODO +} + +void uiMenuItemDisable(uiMenuItem *m) +{ + // TODO +} + +void uiMenuItemOnClicked(uiMenuItem *m, void (*f)(uiMenuItem *sender, uiWindow *window, void *data), void *data) +{ + // TODO +} + +int uiMenuItemChecked(uiMenuItem *m) +{ + // TODO + return 0; +} + +void uiMenuItemSetChecked(uiMenuItem *m, int checked) +{ + // TODO +} + +uiMenuItem *uiMenuAppendItem(uiMenu *m, const char *name) +{ + // TODO + return NULL; +} + +uiMenuItem *uiMenuAppendCheckItem(uiMenu *m, const char *name) +{ + // TODO + return NULL; +} + +uiMenuItem *uiMenuAppendQuitItem(uiMenu *m) +{ + // TODO + return NULL; +} + +uiMenuItem *uiMenuAppendPreferencesItem(uiMenu *m) +{ + // TODO + return NULL; +} + +uiMenuItem *uiMenuAppendAboutItem(uiMenu *m) +{ + // TODO + return NULL; +} + +void uiMenuAppendSeparator(uiMenu *m) +{ + // TODO +} + +uiMenu *uiNewMenu(const char *name) +{ + // TODO + return NULL; +} diff --git a/wpf/progressbar.cpp b/wpf/progressbar.cpp new file mode 100644 index 00000000..5bc8df87 --- /dev/null +++ b/wpf/progressbar.cpp @@ -0,0 +1,31 @@ +// 26 november 2015 +#include "uipriv_wpf.hpp" + +struct uiProgressBar { + uiWindowsControl c; + DUMMY dummy; +}; + +uiWindowsDefineControl( + uiProgressBar, // type name + uiProgressBarType, // type function + dummy // handle +) + +void uiProgressBarSetValue(uiProgressBar *p, int n) +{ + // TODO +} + +uiProgressBar *uiNewProgressBar(void) +{ + uiProgressBar *p; + + p = (uiProgressBar *) uiNewControl(uiProgressBarType()); + + p->dummy = mkdummy(L"uiProgressBar"); + + uiWindowsFinishNewControl(p, uiProgressBar, dummy); + + return p; +} diff --git a/wpf/radiobuttons.cpp b/wpf/radiobuttons.cpp new file mode 100644 index 00000000..8277b9c9 --- /dev/null +++ b/wpf/radiobuttons.cpp @@ -0,0 +1,31 @@ +// 26 november 2015 +#include "uipriv_wpf.hpp" + +struct uiRadioButtons { + uiWindowsControl c; + DUMMY dummy; +}; + +uiWindowsDefineControl( + uiRadioButtons, // type name + uiRadioButtonsType, // type function + dummy // handle +) + +void uiRadioButtonsAppend(uiRadioButtons *r, const char *text) +{ + // TODO +} + +uiRadioButtons *uiNewRadioButtons(void) +{ + uiRadioButtons *r; + + r = (uiRadioButtons *) uiNewControl(uiRadioButtonsType()); + + r->dummy = mkdummy(L"uiRadioButtons"); + + uiWindowsFinishNewControl(r, uiRadioButtons, dummy); + + return r; +} diff --git a/wpf/separator.cpp b/wpf/separator.cpp new file mode 100644 index 00000000..07cb306e --- /dev/null +++ b/wpf/separator.cpp @@ -0,0 +1,26 @@ +// 18 november 2015 +#include "uipriv_wpf.hpp" + +struct uiSeparator { + uiWindowsControl c; + DUMMY dummy; +}; + +uiWindowsDefineControl( + uiSeparator, // type name + uiSeparatorType, // type function + dummy // handle +) + +uiSeparator *uiNewHorizontalSeparator(void) +{ + uiSeparator *s; + + s = (uiSeparator *) uiNewControl(uiSeparatorType()); + + s->dummy = mkdummy(L"uiSeparator"); + + uiWindowsFinishNewControl(s, uiSeparator, dummy); + + return s; +} diff --git a/wpf/slider.cpp b/wpf/slider.cpp new file mode 100644 index 00000000..217d8681 --- /dev/null +++ b/wpf/slider.cpp @@ -0,0 +1,52 @@ +// 18 november 2015 +#include "uipriv_wpf.hpp" + +struct uiSlider { + uiWindowsControl c; + DUMMY dummy; + void (*onChanged)(uiSlider *, void *); + void *onChangedData; +}; + +uiWindowsDefineControl( + uiSlider, // type name + uiSliderType, // type function + dummy // handle +) + +static void defaultOnChanged(uiSlider *s, void *data) +{ + // do nothing +} + +intmax_t uiSliderValue(uiSlider *s) +{ + // TODO + return -1; +} + +void uiSliderSetValue(uiSlider *s, intmax_t value) +{ + // TODO +} + +void uiSliderOnChanged(uiSlider *s, void (*f)(uiSlider *s, void *data), void *data) +{ + s->onChanged = f; + s->onChangedData = data; +} + +uiSlider *uiNewSlider(intmax_t min, intmax_t max) +{ + uiSlider *s; + + s = (uiSlider *) uiNewControl(uiSliderType()); + + s->dummy = mkdummy(L"uiSlider"); + + uiSliderOnChanged(s, defaultOnChanged, NULL); + + uiWindowsFinishNewControl(s, uiSlider, dummy); + + return s; +} diff --git a/wpf/spinbox.cpp b/wpf/spinbox.cpp new file mode 100644 index 00000000..ee128d69 --- /dev/null +++ b/wpf/spinbox.cpp @@ -0,0 +1,42 @@ +// 18 november 2015 +#include "uipriv_wpf.hpp" + +struct uiSpinbox { + uiWindowsControl c; + DUMMY dummy; +}; + +uiWindowsDefineControl( + uiSpinbox, // type name + uiSpinboxType, // type function + dummy // handle +) + +intmax_t uiSpinboxValue(uiSpinbox *s) +{ + // TODO + return 0; +} + +void uiSpinboxSetValue(uiSpinbox *s, intmax_t value) +{ + // TODO +} + +void uiSpinboxOnChanged(uiSpinbox *s, void (*f)(uiSpinbox *s, void *data), void *data) +{ + // TODO +} + +uiSpinbox *uiNewSpinbox(intmax_t min, intmax_t max) +{ + uiSpinbox *s; + + s = (uiSpinbox *) uiNewControl(uiSpinboxType()); + + s->dummy = mkdummy(L"uiSpinbox"); + + uiWindowsFinishNewControl(s, uiSpinbox, dummy); + + return s; +} diff --git a/wpf/stddialogs.cpp b/wpf/stddialogs.cpp new file mode 100644 index 00000000..388176fd --- /dev/null +++ b/wpf/stddialogs.cpp @@ -0,0 +1,24 @@ +// 26 june 2015 +#include "uipriv_wpf.hpp" + +char *uiOpenFile(void) +{ + // TODO + return NULL; +} + +char *uiSaveFile(void) +{ + // TODO + return NULL; +} + +void uiMsgBox(const char *title, const char *description) +{ + // TODO +} + +void uiMsgBoxError(const char *title, const char *description) +{ + // TODO +} diff --git a/wpf/tab.cpp b/wpf/tab.cpp index 052cceb3..e1b52d0b 100644 --- a/wpf/tab.cpp +++ b/wpf/tab.cpp @@ -2,6 +2,7 @@ #include "uipriv_wpf.hpp" // TODO save child alignments? +// TODO scroll tabs instead of multiline tabs using namespace System::Collections::Generic; diff --git a/wpf/uipriv_wpf.hpp b/wpf/uipriv_wpf.hpp index f1424300..62021ab5 100644 --- a/wpf/uipriv_wpf.hpp +++ b/wpf/uipriv_wpf.hpp @@ -19,3 +19,14 @@ extern String ^fromUTF8(const char *); // control.cpp extern UIElement ^genericHandle(uiControl *c); + +typedef gcroot