;; -*- scheme -*-
; boxed definitions ...

(define-boxed Location
  (in-module "MateWeather")
  (c-name "MateWeatherLocation")
  (gtype-id "MATEWEATHER_TYPE_LOCATION")
)

(define-boxed Timezone
  (in-module "MateWeather")
  (c-name "MateWeatherTimezone")
  (gtype-id "MATEWEATHER_TYPE_TIMEZONE")
)

; interface definitions ...

; object definitions ...

(define-object LocationEntry
  (in-module "MateWeather")
  (parent "GtkEntry")
  (c-name "MateWeatherLocationEntry")
  (gtype-id "MATEWEATHER_TYPE_LOCATION_ENTRY")
)

(define-object TimezoneMenu
  (in-module "MateWeather")
  (parent "GtkComboBox")
  (c-name "MateWeatherTimezoneMenu")
  (gtype-id "MATEWEATHER_TYPE_TIMEZONE_MENU")
)

; pointer definitions ...

;; Enumerations and Flags ...

(define-enum LocationLevel
  (in-module "MateWeather")
  (c-name "MateWeatherLocationLevel")
  (gtype-id "MATEWEATHER_TYPE_LOCATION_LEVEL")
  (values
    '("world" "MATEWEATHER_LOCATION_WORLD")
    '("region" "MATEWEATHER_LOCATION_REGION")
    '("country" "MATEWEATHER_LOCATION_COUNTRY")
    '("adm1" "MATEWEATHER_LOCATION_ADM1")
    '("adm2" "MATEWEATHER_LOCATION_ADM2")
    '("city" "MATEWEATHER_LOCATION_CITY")
    '("weather-station" "MATEWEATHER_LOCATION_WEATHER_STATION")
  )
)


;; From mateweather-enum-types.h

(define-function g_weather_location_level_get_type
  (c-name "g_weather_location_level_get_type")
  (return-type "GType")
)



;; From mateweather-location.h

(define-function location_get_type
  (c-name "mateweather_location_get_type")
  (return-type "GType")
)

(define-function location_new_world
  (c-name "mateweather_location_new_world")
  (return-type "MateWeatherLocation*")
  (parameters
    '("gboolean" "use_regions")
  )
)

(define-method ref
  (of-object "MateWeatherLocation")
  (c-name "mateweather_location_ref")
  (return-type "MateWeatherLocation*")
)

(define-method unref
  (of-object "MateWeatherLocation")
  (c-name "mateweather_location_unref")
  (return-type "none")
)

(define-method get_name
  (of-object "MateWeatherLocation")
  (c-name "mateweather_location_get_name")
  (return-type "const-char*")
)

(define-method get_sort_name
  (of-object "MateWeatherLocation")
  (c-name "mateweather_location_get_sort_name")
  (return-type "const-char*")
)

(define-method get_level
  (of-object "MateWeatherLocation")
  (c-name "mateweather_location_get_level")
  (return-type "MateWeatherLocationLevel")
)

(define-method get_parent
  (of-object "MateWeatherLocation")
  (c-name "mateweather_location_get_parent")
  (return-type "MateWeatherLocation*")
)

(define-method get_children
  (of-object "MateWeatherLocation")
  (c-name "mateweather_location_get_children")
  (return-type "MateWeatherLocation**")
)

(define-method free_children
  (of-object "MateWeatherLocation")
  (c-name "mateweather_location_free_children")
  (return-type "none")
  (parameters
    '("MateWeatherLocation**" "children")
  )
)

(define-method has_coords
  (of-object "MateWeatherLocation")
  (c-name "mateweather_location_has_coords")
  (return-type "gboolean")
)

(define-method get_coords
  (of-object "MateWeatherLocation")
  (c-name "mateweather_location_get_coords")
  (return-type "none")
  (parameters
    '("double*" "latitude")
    '("double*" "longitude")
  )
)

(define-method get_distance
  (of-object "MateWeatherLocation")
  (c-name "mateweather_location_get_distance")
  (return-type "double")
  (parameters
    '("MateWeatherLocation*" "loc2")
  )
)

(define-method get_country
  (of-object "MateWeatherLocation")
  (c-name "mateweather_location_get_country")
  (return-type "const-char*")
)

(define-method get_timezone
  (of-object "MateWeatherLocation")
  (c-name "mateweather_location_get_timezone")
  (return-type "MateWeatherTimezone*")
)

(define-method get_timezones
  (of-object "MateWeatherLocation")
  (c-name "mateweather_location_get_timezones")
  (return-type "MateWeatherTimezone**")
)

(define-method free_timezones
  (of-object "MateWeatherLocation")
  (c-name "mateweather_location_free_timezones")
  (return-type "none")
  (parameters
    '("MateWeatherTimezone**" "zones")
  )
)

(define-method get_code
  (of-object "MateWeatherLocation")
  (c-name "mateweather_location_get_code")
  (return-type "const-char*")
)

(define-method get_city_name
  (of-object "MateWeatherLocation")
  (c-name "mateweather_location_get_city_name")
  (return-type "char*")
)

(define-method get_weather
  (of-object "MateWeatherLocation")
  (c-name "mateweather_location_get_weather")
  (return-type "WeatherInfo*")
)



;; From mateweather-timezone.h

(define-function timezone_get_type
  (c-name "mateweather_timezone_get_type")
  (return-type "GType")
)

(define-method get_name
  (of-object "MateWeatherTimezone")
  (c-name "mateweather_timezone_get_name")
  (return-type "const-char*")
)

(define-method get_tzid
  (of-object "MateWeatherTimezone")
  (c-name "mateweather_timezone_get_tzid")
  (return-type "const-char*")
)

(define-method get_offset
  (of-object "MateWeatherTimezone")
  (c-name "mateweather_timezone_get_offset")
  (return-type "int")
)

(define-method has_dst
  (of-object "MateWeatherTimezone")
  (c-name "mateweather_timezone_has_dst")
  (return-type "gboolean")
)

(define-method get_dst_offset
  (of-object "MateWeatherTimezone")
  (c-name "mateweather_timezone_get_dst_offset")
  (return-type "int")
)

(define-method ref
  (of-object "MateWeatherTimezone")
  (c-name "mateweather_timezone_ref")
  (return-type "MateWeatherTimezone*")
)

(define-method unref
  (of-object "MateWeatherTimezone")
  (c-name "mateweather_timezone_unref")
  (return-type "none")
)



;; From location-entry.h

(define-function location_entry_get_type
  (c-name "mateweather_location_entry_get_type")
  (return-type "GType")
)

(define-function location_entry_new
  (c-name "mateweather_location_entry_new")
  (is-constructor-of "MateWeatherLocationEntry")
  (return-type "GtkWidget*")
  (properties
    '("top")
  )
)

(define-method set_location
  (of-object "MateWeatherLocationEntry")
  (c-name "mateweather_location_entry_set_location")
  (return-type "none")
  (parameters
    '("MateWeatherLocation*" "loc")
  )
)

(define-method get_location
  (of-object "MateWeatherLocationEntry")
  (c-name "mateweather_location_entry_get_location")
  (return-type "MateWeatherLocation*")
)

(define-method set_city
  (of-object "MateWeatherLocationEntry")
  (c-name "mateweather_location_entry_set_city")
  (return-type "none")
  (parameters
    '("const-char*" "city_name")
    '("const-char*" "code")
  )
)



;; From timezone-menu.h

(define-function timezone_menu_get_type
  (c-name "mateweather_timezone_menu_get_type")
  (return-type "GType")
)

(define-function timezone_menu_new
  (c-name "mateweather_timezone_menu_new")
  (is-constructor-of "MateWeatherTimezoneMenu")
  (return-type "GtkWidget*")
  (properties
    '("top")
  )
)

(define-method set_tzid
  (of-object "MateWeatherTimezoneMenu")
  (c-name "mateweather_timezone_menu_set_tzid")
  (return-type "none")
  (parameters
    '("const-char*" "tzid")
  )
)

(define-method get_tzid
  (of-object "MateWeatherTimezoneMenu")
  (c-name "mateweather_timezone_menu_get_tzid")
  (return-type "const-char*")
)