diff options
| author | Pietro Gagliardi <[email protected]> | 2018-08-26 09:55:07 -0400 |
|---|---|---|
| committer | Pietro Gagliardi <[email protected]> | 2018-08-26 09:55:07 -0400 |
| commit | 62ac2527732a01dfa6bd2c9523215c0ba3816641 (patch) | |
| tree | 84244a69e048f79e4d9f134c121f4cf581200986 /datetimepicker.go | |
| parent | a5a00c644c08a6e0f52740c3f2a280977929a285 (diff) | |
Moved all the Go files out of the way again, this time so we can migrate them to more proper cgo usage.
Diffstat (limited to 'datetimepicker.go')
| -rw-r--r-- | datetimepicker.go | 107 |
1 files changed, 0 insertions, 107 deletions
diff --git a/datetimepicker.go b/datetimepicker.go deleted file mode 100644 index 3436b3c..0000000 --- a/datetimepicker.go +++ /dev/null @@ -1,107 +0,0 @@ -// 12 december 2015 - -package ui - -import ( - "time" - "unsafe" -) - -// #include <stdlib.h> -// #include <time.h> -// #include "ui.h" -// #include "util.h" -// static inline struct tm *allocTimeStruct(void) -// { -// return (struct tm *) pkguiAlloc(sizeof (struct tm)); -// } -// extern void doDateTimePickerOnChanged(uiDateTimePicker *, void *); -// // see golang/go#19835 -// typedef void (*dtpCallback)(uiDateTimePicker *, void *); -import "C" - -// DateTimePicker is a Control that represents a field where the user -// can enter a date and/or a time. -type DateTimePicker struct { - ControlBase - d *C.uiDateTimePicker - onChanged func(*DateTimePicker) -} - -func finishNewDateTimePicker(dd *C.uiDateTimePicker) *DateTimePicker { - d := new(DateTimePicker) - - d.d = dd - - C.uiDateTimePickerOnChanged(d.d, C.dtpCallback(C.doDateTimePickerOnChanged), nil) - - d.ControlBase = NewControlBase(d, uintptr(unsafe.Pointer(d.d))) - return d -} - -// NewDateTimePicker creates a new DateTimePicker that shows -// both a date and a time. -func NewDateTimePicker() *DateTimePicker { - return finishNewDateTimePicker(C.uiNewDateTimePicker()) -} - -// NewDatePicker creates a new DateTimePicker that shows -// only a date. -func NewDatePicker() *DateTimePicker { - return finishNewDateTimePicker(C.uiNewDatePicker()) -} - -// NewTimePicker creates a new DateTimePicker that shows -// only a time. -func NewTimePicker() *DateTimePicker { - return finishNewDateTimePicker(C.uiNewTimePicker()) -} - -// Time returns the time stored in the uiDateTimePicker. -// The time is assumed to be local time. -func (d *DateTimePicker) Time() time.Time { - tm := C.allocTimeStruct() - defer C.free(unsafe.Pointer(tm)) - C.uiDateTimePickerTime(d.d, tm) - return time.Date( - int(tm.tm_year + 1900), - time.Month(tm.tm_mon + 1), - int(tm.tm_mday), - int(tm.tm_hour), - int(tm.tm_min), - int(tm.tm_sec), - 0, time.Local) -} - -// SetTime sets the time in the DateTimePicker to t. -// t's components are read as-is via t.Date() and t.Clock(); -// no time zone manipulations are done. -func (d *DateTimePicker) SetTime(t time.Time) { - tm := C.allocTimeStruct() - defer C.free(unsafe.Pointer(tm)) - year, mon, mday := t.Date() - tm.tm_year = C.int(year - 1900) - tm.tm_mon = C.int(mon - 1) - tm.tm_mday = C.int(mday) - hour, min, sec := t.Clock() - tm.tm_hour = C.int(hour) - tm.tm_min = C.int(min) - tm.tm_sec = C.int(sec) - tm.tm_isdst = -1 - C.uiDateTimePickerSetTime(d.d, tm) -} - -// OnChanged registers f to be run when the user changes the time -// in the DateTimePicker. Only one function can be registered at a -// time. -func (d *DateTimePicker) OnChanged(f func(*DateTimePicker)) { - d.onChanged = f -} - -//export doDateTimePickerOnChanged -func doDateTimePickerOnChanged(dd *C.uiDateTimePicker, data unsafe.Pointer) { - d := ControlFromLibui(uintptr(unsafe.Pointer(dd))).(*DateTimePicker) - if d.onChanged != nil { - d.onChanged(d) - } -} |
