summaryrefslogtreecommitdiff
path: root/datetimepicker.go
diff options
context:
space:
mode:
authorPietro Gagliardi <[email protected]>2018-08-11 18:39:18 -0400
committerPietro Gagliardi <[email protected]>2018-08-11 18:39:18 -0400
commit485c946ad8961f836edb191eed60248f2ca6b617 (patch)
tree05da1a286c8dc8dfd0adc57f154de57c8fe7128b /datetimepicker.go
parent6700b2ec544d813c91e5493e43e6b8c973aaf236 (diff)
Moved all the Go files back out of the way. There needs to be a better way.
Diffstat (limited to 'datetimepicker.go')
-rw-r--r--datetimepicker.go160
1 files changed, 0 insertions, 160 deletions
diff --git a/datetimepicker.go b/datetimepicker.go
deleted file mode 100644
index ff98ced..0000000
--- a/datetimepicker.go
+++ /dev/null
@@ -1,160 +0,0 @@
-// 12 december 2015
-
-package ui
-
-import (
- "time"
- "unsafe"
-)
-
-// #include <time.h>
-// #include "ui.h"
-// static inline struct tm *allocTimeStruct(void)
-// {
-// /* TODO handle error */
-// return (struct tm *) malloc(sizeof (struct tm));
-// }
-// extern void doDateTimePickerChanged(uiDateTimePicker *, void *);
-// static inline void realuiDateTimePickerOnChanged(uiDateTimePicker *d)
-// {
-// uiDateTimePickerOnChanged(d, doDateTimePickerOnChanged, NULL);
-// }
-import "C"
-
-// DateTimePicker is a Control that represents a field where the user
-// can enter a date and/or a time.
-type DateTimePicker struct {
- c *C.uiControl
- d *C.uiDateTimePicker
-
- onChanged func(*DateTimePicker)
-}
-
-// NewDateTimePicker creates a new DateTimePicker that shows
-// both a date and a time.
-func NewDateTimePicker() *DateTimePicker {
- d := new(DateTimePicker)
-
- d.d = C.uiNewDateTimePicker()
- d.c = (*C.uiControl)(unsafe.Pointer(d.d))
-
- C.realuiDateTimePickerOnChanged(d.d)
-
- return d
-}
-
-// NewDatePicker creates a new DateTimePicker that shows
-// only a date.
-func NewDatePicker() *DateTimePicker {
- d := new(DateTimePicker)
-
- d.d = C.uiNewDatePicker()
- d.c = (*C.uiControl)(unsafe.Pointer(d.d))
-
- C.realuiDateTimePickerOnChanged(d.d)
-
- return d
-}
-
-// NewTimePicker creates a new DateTimePicker that shows
-// only a time.
-func NewTimePicker() *DateTimePicker {
- d := new(DateTimePicker)
-
- d.d = C.uiNewTimePicker()
- d.c = (*C.uiControl)(unsafe.Pointer(d.d))
-
- C.realuiDateTimePickerOnChanged(d.d)
-
- return d
-}
-
-// Destroy destroys the DateTimePicker.
-func (d *DateTimePicker) Destroy() {
- C.uiControlDestroy(d.c)
-}
-
-// LibuiControl returns the libui uiControl pointer that backs
-// the Window. This is only used by package ui itself and should
-// not be called by programs.
-func (d *DateTimePicker) LibuiControl() uintptr {
- return uintptr(unsafe.Pointer(d.c))
-}
-
-// Handle returns the OS-level handle associated with this DateTimePicker.
-// On Windows this is an HWND of a standard Windows API
-// DATETIMEPICK_CLASS class (as provided by Common Controls
-// version 6).
-// On GTK+ this is a pointer to a libui-internal class.
-// On OS X this is a pointer to a NSDatePicker.
-func (d *DateTimePicker) Handle() uintptr {
- return uintptr(C.uiControlHandle(d.c))
-}
-
-// Show shows the DateTimePicker.
-func (d *DateTimePicker) Show() {
- C.uiControlShow(d.c)
-}
-
-// Hide hides the DateTimePicker.
-func (d *DateTimePicker) Hide() {
- C.uiControlHide(d.c)
-}
-
-// Enable enables the DateTimePicker.
-func (d *DateTimePicker) Enable() {
- C.uiControlEnable(d.c)
-}
-
-// Disable disables the DateTimePicker.
-func (d *DateTimePicker) Disable() {
- C.uiControlDisable(d.c)
-}
-
-// 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; 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.Time()
- 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 := dateTimePickers[dd]
- if d.onChanged != nil {
- d.onChanged(d)
- }
-}