rendered paste body# Copyright (C) 2003-2004 David PHAM-VAN -- david@ab2r.com
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#------------------------------------------------------------------------------
cdef extern from "Python.h":
object PyString_FromStringAndSize(char *, int)
#------------------------------------------------------------------------------
cdef extern from "stdlib.h":
void free(void *)
#------------------------------------------------------------------------------
cdef extern from "time.h":
ctypedef struct time_t:
int a
#------------------------------------------------------------------------------
cdef extern from "gphoto2-port-version.h":
ctypedef enum GPVersionVerbosity:
GP_VERSION_SHORT
GP_VERSION_VERBOSE
char **gp_port_library_version(GPVersionVerbosity verbose)
#------------------------------------------------------------------------------
cdef extern from "gphoto2-version.h":
char **gp_library_version(GPVersionVerbosity verbose)
#------------------------------------------------------------------------------
cdef extern from "gphoto2-context.h":
ctypedef struct GPContext
GPContext *gp_context_new ()
void gp_context_ref (GPContext *context)
void gp_context_unref (GPContext *context)
ctypedef enum GPContextFeedback:
GP_CONTEXT_FEEDBACK_OK
GP_CONTEXT_FEEDBACK_CANCEL
ctypedef void (* GPContextIdleFunc) (GPContext *context, void *data)
ctypedef void (* GPContextErrorFunc) (GPContext *context, char *format, args, void *data)
ctypedef void (* GPContextStatusFunc) (GPContext *context, char *format, args, void *data)
ctypedef void (* GPContextMessageFunc) (GPContext *context, char *format, args, void *data)
ctypedef GPContextFeedback (* GPContextQuestionFunc) (GPContext *context, char *format, args, void *data)
ctypedef GPContextFeedback (* GPContextCancelFunc) (GPContext *context, void *data)
ctypedef unsigned int (* GPContextProgressStartFunc) (GPContext *context, float target, char *format, args, void *data)
ctypedef void (* GPContextProgressUpdateFunc) (GPContext *context, unsigned int id, float current, void *data)
ctypedef void (* GPContextProgressStopFunc) (GPContext *context, unsigned int id, void *data)
void gp_context_set_idle_func (GPContext *context, GPContextIdleFunc func, void *data)
void gp_context_set_progress_funcs (GPContext *context, GPContextProgressStartFunc start_func, GPContextProgressUpdateFunc update_func,
GPContextProgressStopFunc stop_func, void *data)
void gp_context_set_error_func (GPContext *context, GPContextErrorFunc func, void *data)
void gp_context_set_status_func (GPContext *context, GPContextStatusFunc func, void *data)
void gp_context_set_question_func (GPContext *context, GPContextQuestionFunc func, void *data)
void gp_context_set_cancel_func (GPContext *context, GPContextCancelFunc func, void *data)
void gp_context_set_message_func (GPContext *context, GPContextMessageFunc func, void *data)
void gp_context_idle (GPContext *context)
void gp_context_error (GPContext *context, char *format, ...)
void gp_context_status (GPContext *context, char *format, ...)
void gp_context_message (GPContext *context, char *format, ...)
GPContextFeedback gp_context_question (GPContext *context, char *format, ...)
GPContextFeedback gp_context_cancel (GPContext *context)
unsigned int gp_context_progress_start (GPContext *context, float target, char *format, ...)
void gp_context_progress_update (GPContext *context, unsigned int id, float current)
void gp_context_progress_stop (GPContext *context, unsigned int id)
#------------------------------------------------------------------------------
cdef extern from "gphoto2-port-info-list.h":
ctypedef enum GPPortType:
GP_PORT_NONE
GP_PORT_SERIAL
GP_PORT_USB
ctypedef struct GPPortInfo:
GPPortType type
char name[64]
char path[64]
char library_filename[1024]
ctypedef struct GPPortInfoList
int gp_port_info_list_new (GPPortInfoList **list)
int gp_port_info_list_free (GPPortInfoList *list)
int gp_port_info_list_append (GPPortInfoList *list, GPPortInfo info)
int gp_port_info_list_load (GPPortInfoList *list)
int gp_port_info_list_count (GPPortInfoList *list)
int gp_port_info_list_lookup_path (GPPortInfoList *list, char *path)
int gp_port_info_list_lookup_name (GPPortInfoList *list, char *name)
int gp_port_info_list_get_info (GPPortInfoList *list, int n, GPPortInfo *info)
#------------------------------------------------------------------------------
cdef extern from "gphoto2-port.h":
ctypedef enum GPPortSerialParity:
GP_PORT_SERIAL_PARITY_OFF
GP_PORT_SERIAL_PARITY_EVEN
GP_PORT_SERIAL_PARITY_ODD
ctypedef enum defines_port:
GP_PORT_MAX_BUF_LEN
ctypedef struct GPPortSettingsSerial:
char port[128]
int speed
int bits
GPPortSerialParity parity
int stopbits
ctypedef struct GPPortSettingsUSB:
int inep, outep, intep
int config
int interface
int altsetting
char port[64]
ctypedef union GPPortSettings:
GPPortSettingsSerial serial
GPPortSettingsUSB usb
enum:
GP_PORT_USB_ENDPOINT_IN
GP_PORT_USB_ENDPOINT_OUT
GP_PORT_USB_ENDPOINT_INT
ctypedef struct GPPortPrivateLibrary
ctypedef struct GPPortPrivateCore
ctypedef struct GPPort:
GPPortType type
GPPortSettings settings
GPPortSettings settings_pending
int timeout
GPPortPrivateLibrary *pl
GPPortPrivateCore *pc
int gp_port_new (GPPort **port)
int gp_port_free (GPPort *port)
int gp_port_set_info (GPPort *port, GPPortInfo info)
int gp_port_get_info (GPPort *port, GPPortInfo *info)
int gp_port_open (GPPort *port)
int gp_port_close (GPPort *port)
int gp_port_write (GPPort *port, char *data, int size)
int gp_port_read (GPPort *port, char *data, int size)
int gp_port_check_int (GPPort *port, char *data, int size)
int gp_port_check_int_fast (GPPort *port, char *data, int size)
int gp_port_get_timeout (GPPort *port, int *timeout)
int gp_port_set_timeout (GPPort *port, int timeout)
int gp_port_set_settings (GPPort *port, GPPortSettings settings)
int gp_port_get_settings (GPPort *port, GPPortSettings *settings)
ctypedef enum GPPin:
GP_PIN_RTS
GP_PIN_DTR
GP_PIN_CTS
GP_PIN_DSR
GP_PIN_CD
GP_PIN_RING
ctypedef enum GPLevel:
GP_LEVEL_LOW
GP_LEVEL_HIGH
int gp_port_get_pin (GPPort *port, GPPin pin, GPLevel *level)
int gp_port_set_pin (GPPort *port, GPPin pin, GPLevel level)
int gp_port_send_break (GPPort *port, int duration)
int gp_port_flush (GPPort *port, int direction)
int gp_port_usb_find_device (GPPort *port, int idvendor, int idproduct)
int gp_port_usb_find_device_by_class (GPPort *port, int mainclass, int subclass, int protocol)
int gp_port_usb_clear_halt (GPPort *port, int ep)
int gp_port_usb_msg_write (GPPort *port, int request, int value, int index, char *bytes, int size)
int gp_port_usb_msg_read (GPPort *port, int request, int value, int index, char *bytes, int size)
int gp_port_set_error (GPPort *port, char *format, ...)
char *gp_port_get_error (GPPort *port)
#------------------------------------------------------------------------------
cdef extern from "gphoto2-port-log.h":
ctypedef enum GPLogLevel:
GP_LOG_ERROR
GP_LOG_VERBOSE
GP_LOG_DEBUG
GP_LOG_DATA
ctypedef void *GPLogFunc (GPLogLevel level, char *domain, char *format, args, void *data)
int gp_log_add_func (GPLogLevel level, GPLogFunc func, void *data)
int gp_log_remove_func (int id)
void gp_log (GPLogLevel level, char *domain, char *format, ...)
void gp_logv (GPLogLevel level, char *domain, char *format, args)
void gp_log_data (char *domain, char *data, unsigned int size)
#------------------------------------------------------------------------------
cdef extern from "gphoto2-port-result.h":
ctypedef enum port_result:
GP_OK
GP_ERROR
GP_ERROR_BAD_PARAMETERS
GP_ERROR_NO_MEMORY
GP_ERROR_LIBRARY
GP_ERROR_UNKNOWN_PORT
GP_ERROR_NOT_SUPPORTED
GP_ERROR_IO
GP_ERROR_TIMEOUT
GP_ERROR_IO_SUPPORTED_SERIAL
GP_ERROR_IO_SUPPORTED_USB
GP_ERROR_IO_INIT
GP_ERROR_IO_READ
GP_ERROR_IO_WRITE
GP_ERROR_IO_UPDATE
GP_ERROR_IO_SERIAL_SPEED
GP_ERROR_IO_USB_CLEAR_HALT
GP_ERROR_IO_USB_FIND
GP_ERROR_IO_USB_CLAIM
GP_ERROR_IO_LOCK
char *gp_port_result_as_string (int result)
#------------------------------------------------------------------------------
cdef extern from "gphoto2-port-result.h":
ctypedef enum gphoto2_result:
GP_ERROR_CORRUPTED_DATA
GP_ERROR_FILE_EXISTS
GP_ERROR_MODEL_NOT_FOUND
GP_ERROR_DIRECTORY_NOT_FOUND
GP_ERROR_FILE_NOT_FOUND
GP_ERROR_DIRECTORY_EXISTS
GP_ERROR_CAMERA_BUSY
GP_ERROR_PATH_NOT_ABSOLUTE
GP_ERROR_CANCEL
char *gp_result_as_string(int result)
#------------------------------------------------------------------------------
cdef extern from "gphoto2-widget.h":
ctypedef struct CameraWidget
ctypedef enum CameraWidgetType:
GP_WIDGET_WINDOW
GP_WIDGET_SECTION
GP_WIDGET_TEXT
GP_WIDGET_RANGE
GP_WIDGET_TOGGLE
GP_WIDGET_RADIO
GP_WIDGET_MENU
GP_WIDGET_BUTTON
GP_WIDGET_DATE
ctypedef int (* CameraWidgetCallback) (Camera, CameraWidget, GPContext)
int gp_widget_new (CameraWidgetType _type, char *label, CameraWidget **widget)
int gp_widget_free (CameraWidget *widget)
int gp_widget_ref (CameraWidget *widget)
int gp_widget_unref (CameraWidget *widget)
int gp_widget_append (CameraWidget *widget, CameraWidget *child)
int gp_widget_prepend (CameraWidget *widget, CameraWidget *child)
int gp_widget_count_children (CameraWidget *widget)
int gp_widget_get_child (CameraWidget *widget, int child_number,
CameraWidget **child)
int gp_widget_get_child_by_label (CameraWidget *widget, char *label,
CameraWidget **child)
int gp_widget_get_child_by_id (CameraWidget *widget, int id, CameraWidget **child)
int gp_widget_get_child_by_name (CameraWidget *widget, char *name, CameraWidget **child)
int gp_widget_get_root (CameraWidget *widget, CameraWidget **root)
int gp_widget_get_parent (CameraWidget *widget, CameraWidget **parent)
int gp_widget_set_value (CameraWidget *widget, void *value)
int gp_widget_get_value (CameraWidget *widget, void *value)
int gp_widget_set_name (CameraWidget *widget, char *name)
int gp_widget_get_name (CameraWidget *widget, char **name)
int gp_widget_set_info (CameraWidget *widget, char *info)
int gp_widget_get_info (CameraWidget *widget, char **info)
int gp_widget_get_id (CameraWidget *widget, int *id)
int gp_widget_get_type (CameraWidget *widget, CameraWidgetType *type)
int gp_widget_get_label (CameraWidget *widget, char **label)
int gp_widget_set_range (CameraWidget *range, float low, float high, float increment)
int gp_widget_get_range (CameraWidget *range, float *min, float *max, float *increment)
int gp_widget_add_choice (CameraWidget *widget, char *choice)
int gp_widget_count_choices (CameraWidget *widget)
int gp_widget_get_choice (CameraWidget *widget, int choice_number, char **choice)
int gp_widget_changed (CameraWidget *widget)
int gp_widget_set_changed (CameraWidget *widget, int changed)
#------------------------------------------------------------------------------
cdef extern from "gphoto2-file.h":
ctypedef enum defines_file:
GP_MIME_WAV
GP_MIME_RAW
GP_MIME_PNG
GP_MIME_PGM
GP_MIME_PPM
GP_MIME_PNM
GP_MIME_JPEG
GP_MIME_TIFF
GP_MIME_BMP
GP_MIME_QUICKTIME
GP_MIME_AVI
GP_MIME_CRW
GP_MIME_UNKNOWN
GP_MIME_EXIF
ctypedef enum CameraFileType:
GP_FILE_TYPE_PREVIEW
GP_FILE_TYPE_NORMAL
GP_FILE_TYPE_RAW
GP_FILE_TYPE_AUDIO
GP_FILE_TYPE_EXIF
ctypedef struct CameraFile
int gp_file_new (CameraFile **file)
int gp_file_ref (CameraFile *file)
int gp_file_unref (CameraFile *file)
int gp_file_free (CameraFile *file)
int gp_file_open (CameraFile *file, char *filename)
int gp_file_save (CameraFile *file, char *filename)
int gp_file_clean (CameraFile *file)
int gp_file_copy (CameraFile *destination, CameraFile *source)
int gp_file_set_name (CameraFile *file, char *name)
int gp_file_get_name (CameraFile *file, char **name)
int gp_file_set_mime_type (CameraFile *file, char *mime_type)
int gp_file_get_mime_type (CameraFile *file, char **mime_type)
int gp_file_set_type (CameraFile *file, CameraFileType type)
int gp_file_get_type (CameraFile *file, CameraFileType *type)
int gp_file_set_mtime (CameraFile *file, mtime)
int gp_file_get_mtime (CameraFile *file, mtime)
int gp_file_detect_mime_type (CameraFile *file)
int gp_file_adjust_name_for_mime_type (CameraFile *file)
int gp_file_append (CameraFile*, char *data, unsigned long int size)
int gp_file_set_data_and_size (CameraFile*, char *data, unsigned long int size)
int gp_file_get_data_and_size (CameraFile*, char **data, unsigned long int *size)
#------------------------------------------------------------------------------
cdef extern from "gphoto2-list.h":
ctypedef enum defines_list:
MAX_ENTRIES
cdef struct s_entry:
char name[128]
char value[128]
ctypedef struct CameraList:
int count
s_entry entry[MAX_ENTRIES]
int ref_count
int gp_list_new (CameraList **list)
int gp_list_ref (CameraList *list)
int gp_list_unref (CameraList *list)
int gp_list_free (CameraList *list)
int gp_list_count (CameraList *list)
int gp_list_append (CameraList *list, char *name, char *value)
int gp_list_reset (CameraList *list)
int gp_list_sort (CameraList *list)
int gp_list_get_name (CameraList *list, int index, char **name)
int gp_list_get_value (CameraList *list, int index, char **value)
int gp_list_set_name (CameraList *list, int index, char *name)
int gp_list_set_value (CameraList *list, int index, char *value)
int gp_list_populate (CameraList *list, char *format, int count)
#------------------------------------------------------------------------------
cdef extern from "gphoto2-filesys.h":
ctypedef enum CameraFileInfoFields:
GP_FILE_INFO_NONE
GP_FILE_INFO_TYPE
GP_FILE_INFO_NAME
GP_FILE_INFO_SIZE
GP_FILE_INFO_WIDTH
GP_FILE_INFO_HEIGHT
GP_FILE_INFO_PERMISSIONS
GP_FILE_INFO_STATUS
GP_FILE_INFO_MTIME
GP_FILE_INFO_ALL
ctypedef enum CameraFilePermissions:
GP_FILE_PERM_NONE
GP_FILE_PERM_READ
GP_FILE_PERM_DELETE
GP_FILE_PERM_ALL
ctypedef enum CameraFileStatus:
GP_FILE_STATUS_NOT_DOWNLOADED
GP_FILE_STATUS_DOWNLOADED
ctypedef struct CameraFileInfoFile:
CameraFileInfoFields fields
CameraFileStatus status
unsigned long size
char type[64]
unsigned int width, height
char name[64]
CameraFilePermissions permissions
time_t mtime
ctypedef struct CameraFileInfoPreview:
CameraFileInfoFields fields
CameraFileStatus status
unsigned long size
char type[64]
unsigned int width, height
ctypedef struct CameraFileInfoAudio:
CameraFileInfoFields fields
CameraFileStatus status
unsigned long size
char type[64]
ctypedef struct CameraFileInfo:
CameraFileInfoPreview preview
CameraFileInfoFile file
CameraFileInfoAudio audio
ctypedef struct CameraFilesystem
int gp_filesystem_new (CameraFilesystem **fs)
int gp_filesystem_free (CameraFilesystem *fs)
int gp_filesystem_append (CameraFilesystem *fs, char *folder, char *filename, GPContext *context)
int gp_filesystem_set_info_noop (CameraFilesystem *fs, char *folder, CameraFileInfo info, GPContext *context)
int gp_filesystem_set_file_noop (CameraFilesystem *fs, char *folder, CameraFile *file, GPContext *context)
int gp_filesystem_delete_file_noop (CameraFilesystem *fs, char *folder, char *filename, GPContext *context)
int gp_filesystem_reset (CameraFilesystem *fs)
int gp_filesystem_count (CameraFilesystem *fs, char *folder, GPContext *context)
int gp_filesystem_name (CameraFilesystem *fs, char *folder, int filenumber, char **filename, GPContext *context)
int gp_filesystem_get_folder (CameraFilesystem *fs, char *filename, char **folder, GPContext *context)
int gp_filesystem_number (CameraFilesystem *fs, char *folder, char *filename, GPContext *context)
ctypedef int (*CameraFilesystemListFunc) (CameraFilesystem *fs, char *folder, CameraList *list, void *data, GPContext *context)
int gp_filesystem_set_list_funcs (CameraFilesystem *fs, CameraFilesystemListFunc file_list_func, CameraFilesystemListFunc folder_list_func, void *data)
int gp_filesystem_list_files (CameraFilesystem *fs, char *folder, CameraList *list, GPContext *context)
int gp_filesystem_list_folders (CameraFilesystem *fs, char *folder, CameraList *list, GPContext *context)
ctypedef int (*CameraFilesystemSetInfoFunc) (CameraFilesystem *fs, char *folder, char *filename, CameraFileInfo info, void *data, GPContext *context)
ctypedef int (*CameraFilesystemGetInfoFunc) (CameraFilesystem *fs, char *folder, char *filename, CameraFileInfo *info, void *data, GPContext *context)
int gp_filesystem_set_info_funcs (CameraFilesystem *fs, CameraFilesystemGetInfoFunc get_info_func,
CameraFilesystemSetInfoFunc set_info_func,
void *data)
int gp_filesystem_get_info (CameraFilesystem *fs, char *folder,
char *filename, CameraFileInfo *info,
GPContext *context)
int gp_filesystem_set_info (CameraFilesystem *fs, char *folder,
char *filename, CameraFileInfo info,
GPContext *context)
ctypedef int (*CameraFilesystemGetFileFunc) (CameraFilesystem *fs,
char *folder,
char *filename,
CameraFileType type,
CameraFile *file, void *data,
GPContext *context)
ctypedef int (*CameraFilesystemDeleteFileFunc) (CameraFilesystem *fs,
char *folder,
char *filename,
void *data, GPContext *context)
int gp_filesystem_set_file_funcs (CameraFilesystem *fs,
CameraFilesystemGetFileFunc get_file_func,
CameraFilesystemDeleteFileFunc del_file_func,
void *data)
int gp_filesystem_get_file (CameraFilesystem *fs, char *folder,
char *filename, CameraFileType type,
CameraFile *file, GPContext *context)
int gp_filesystem_delete_file (CameraFilesystem *fs, char *folder,
char *filename, GPContext *context)
ctypedef int (*CameraFilesystemPutFileFunc) (CameraFilesystem *fs,
char *folder,
CameraFile *file, void *data,
GPContext *context)
ctypedef int (*CameraFilesystemDeleteAllFunc) (CameraFilesystem *fs,
char *folder, void *data,
GPContext *context)
ctypedef int (*CameraFilesystemDirFunc) (CameraFilesystem *fs,
char *folder,
char *name, void *data,
GPContext *context)
int gp_filesystem_set_folder_funcs (CameraFilesystem *fs,
CameraFilesystemPutFileFunc put_file_func,
CameraFilesystemDeleteAllFunc delete_all_func,
CameraFilesystemDirFunc make_dir_func,
CameraFilesystemDirFunc remove_dir_func,
void *data)
int gp_filesystem_put_file (CameraFilesystem *fs, char *folder,
CameraFile *file, GPContext *context)
int gp_filesystem_delete_all (CameraFilesystem *fs, char *folder,
GPContext *context)
int gp_filesystem_make_dir (CameraFilesystem *fs, char *folder,
char *name, GPContext *context)
int gp_filesystem_remove_dir (CameraFilesystem *fs, char *folder,
char *name, GPContext *context)
int gp_filesystem_dump (CameraFilesystem *fs)
#------------------------------------------------------------------------------
cdef extern from "gphoto2-abilities-list.h":
ctypedef enum CameraDriverStatus:
GP_DRIVER_STATUS_PRODUCTION
GP_DRIVER_STATUS_TESTING
GP_DRIVER_STATUS_EXPERIMENTAL
GP_DRIVER_STATUS_DEPRECATED
ctypedef enum CameraOperation:
GP_OPERATION_NONE
GP_OPERATION_CAPTURE_IMAGE
GP_OPERATION_CAPTURE_VIDEO
GP_OPERATION_CAPTURE_AUDIO
GP_OPERATION_CAPTURE_PREVIEW
GP_OPERATION_CONFIG
ctypedef enum CameraFileOperation:
GP_FILE_OPERATION_NONE
GP_FILE_OPERATION_DELETE
GP_FILE_OPERATION_PREVIEW
GP_FILE_OPERATION_RAW
GP_FILE_OPERATION_AUDIO
GP_FILE_OPERATION_EXIF
ctypedef enum CameraFolderOperation:
GP_FOLDER_OPERATION_NONE
GP_FOLDER_OPERATION_DELETE_ALL
GP_FOLDER_OPERATION_PUT_FILE
GP_FOLDER_OPERATION_MAKE_DIR
GP_FOLDER_OPERATION_REMOVE_DIR
ctypedef struct CameraAbilities:
char model [128]
CameraDriverStatus status
GPPortType port
int speed [64]
CameraOperation operations
CameraFileOperation file_operations
CameraFolderOperation folder_operations
int usb_vendor, usb_product
int usb_class, usb_subclass, usb_protocol
char library [1024]
char id [1024]
int reserved1
int reserved2
int reserved3
int reserved4
int reserved5
int reserved6
int reserved7
int reserved8
ctypedef struct CameraAbilitiesList
int gp_abilities_list_new (CameraAbilitiesList **list)
int gp_abilities_list_free (CameraAbilitiesList *list)
int gp_abilities_list_load (CameraAbilitiesList *list, GPContext *context)
int gp_abilities_list_reset (CameraAbilitiesList *list)
int gp_abilities_list_detect (CameraAbilitiesList *list, GPPortInfoList *info_list, CameraList *l, GPContext *context)
int gp_abilities_list_append (CameraAbilitiesList *list, CameraAbilities abilities)
int gp_abilities_list_count (CameraAbilitiesList *list)
int gp_abilities_list_lookup_model (CameraAbilitiesList *list, char *model)
int gp_abilities_list_get_abilities (CameraAbilitiesList *list, int index, CameraAbilities *abilities)
#------------------------------------------------------------------------------
cdef extern from "gphoto2-camera.h":
# include <gphoto2-context.h>
ctypedef struct Camera
#include <gphoto2-port.h>
#include <gphoto2-port-info-list.h>
#include <gphoto2-widget.h>
#include <gphoto2-list.h>
#include <gphoto2-file.h>
#include <gphoto2-filesys.h>
#include <gphoto2-abilities-list.h>
#include <gphoto2-result.h>
#include <gphoto2-context.h>
ctypedef struct CameraText:
char text [32 * 1024]
ctypedef struct CameraFilePath:
char name [128]
char folder [1024]
ctypedef enum CameraCaptureType:
GP_CAPTURE_IMAGE
GP_CAPTURE_MOVIE
GP_CAPTURE_SOUND
ctypedef enum CameraEventType:
GP_EVENT_UNKNOWN # unknown and unhandled event
GP_EVENT_TIMEOUT # timeout, no arguments
GP_EVENT_FILE_ADDED # CameraFilePath = file in camfs
GP_EVENT_FOLDER_ADDED # CameraFilePath = folder in camfs
ctypedef int (*CameraExitFunc) (Camera *camera, GPContext *context)
ctypedef int (*CameraGetConfigFunc) (Camera *camera, CameraWidget **widget, GPContext *context)
ctypedef int (*CameraSetConfigFunc) (Camera *camera, CameraWidget *widget, GPContext *context)
ctypedef int (*CameraCaptureFunc) (Camera *camera, CameraCaptureType type, CameraFilePath *path, GPContext *context)
ctypedef int (*CameraCapturePreviewFunc) (Camera *camera, CameraFile *file, GPContext *context)
ctypedef int (*CameraSummaryFunc) (Camera *camera, CameraText *text,
GPContext *context)
ctypedef int (*CameraManualFunc) (Camera *camera, CameraText *text,
GPContext *context)
ctypedef int (*CameraAboutFunc) (Camera *camera, CameraText *text,
GPContext *context)
ctypedef int (*CameraPrePostFunc) (Camera *camera, GPContext *context)
ctypedef struct CameraFunctions:
CameraPrePostFunc pre_func
CameraPrePostFunc post_func
CameraExitFunc exit
CameraGetConfigFunc get_config
CameraSetConfigFunc set_config
CameraCaptureFunc capture
CameraCapturePreviewFunc capture_preview
CameraSummaryFunc summary
CameraManualFunc manual
CameraAboutFunc about
void *reserved1
void *reserved2
void *reserved3
void *reserved4
void *reserved5
void *reserved6
void *reserved7
void *reserved8
ctypedef GPPort CameraPort
ctypedef GPPortInfo CameraPortInfo
ctypedef struct CameraPrivateLibrary
ctypedef struct CameraPrivateCore
cdef struct _Camera:
GPPort *port
CameraFilesystem *fs
CameraFunctions *functions
CameraPrivateLibrary *pl
CameraPrivateCore *pc
int gp_camera_new (Camera **camera)
int gp_camera_set_abilities (Camera *camera, CameraAbilities abilities)
int gp_camera_get_abilities (Camera *camera, CameraAbilities *abilities)
int gp_camera_set_port_info (Camera *camera, GPPortInfo info)
int gp_camera_get_port_info (Camera *camera, GPPortInfo *info)
int gp_camera_set_port_speed (Camera *camera, int speed)
int gp_camera_get_port_speed (Camera *camera)
int gp_camera_init (Camera *camera, GPContext *context)
int gp_camera_exit (Camera *camera, GPContext *context)
int gp_camera_ref (Camera *camera)
int gp_camera_unref (Camera *camera)
int gp_camera_free (Camera *camera)
int gp_camera_get_config (Camera *camera, CameraWidget **window, GPContext *context)
int gp_camera_set_config (Camera *camera, CameraWidget *window, GPContext *context)
int gp_camera_get_summary (Camera *camera, CameraText *summary, GPContext *context)
int gp_camera_get_manual (Camera *camera, CameraText *manual, GPContext *context)
int gp_camera_get_about (Camera *camera, CameraText *about, GPContext *context)
int gp_camera_capture (Camera *camera, CameraCaptureType type, CameraFilePath *path, GPContext *context)
int gp_camera_capture_preview (Camera *camera, CameraFile *file, GPContext *context)
int gp_camera_wait_for_event (Camera *camera, int timeout, CameraEventType *eventtype, void **eventdata, GPContext *context)
int gp_camera_folder_list_files (Camera *camera, char *folder, CameraList *list, GPContext *context)
int gp_camera_folder_list_folders (Camera *camera, char *folder, CameraList *list, GPContext *context)
int gp_camera_folder_delete_all (Camera *camera, char *folder, GPContext *context)
int gp_camera_folder_put_file (Camera *camera, char *folder, CameraFile *file, GPContext *context)
int gp_camera_folder_make_dir (Camera *camera, char *folder, char *name, GPContext *context)
int gp_camera_folder_remove_dir (Camera *camera, char *folder, char *name, GPContext *context)
int gp_camera_file_get_info (Camera *camera, char *folder, char *file, CameraFileInfo *info, GPContext *context)
int gp_camera_file_set_info (Camera *camera, char *folder, char *file, CameraFileInfo info, GPContext *context)
int gp_camera_file_get (Camera *camera, char *folder, char *file, CameraFileType type, CameraFile *camera_file, GPContext *context)
int gp_camera_file_delete (Camera *camera, char *folder, char *file, GPContext *context)
ctypedef int (* CameraTimeoutFunc) (Camera *camera, GPContext *context)
ctypedef unsigned int (* CameraTimeoutStartFunc) (Camera *camera, unsigned int timeout, CameraTimeoutFunc func, void *data)
ctypedef void (* CameraTimeoutStopFunc) (Camera *camera, unsigned int id, void *data)
void gp_camera_set_timeout_funcs (Camera *camera, CameraTimeoutStartFunc start_func, CameraTimeoutStopFunc stop_func, void *data)
int gp_camera_start_timeout (Camera *camera, unsigned int timeout, CameraTimeoutFunc func)
void gp_camera_stop_timeout (Camera *camera, unsigned int id)
#------------------------------------------------------------------------------
cdef extern from "gphoto2-library.h":
ctypedef int (* CameraLibraryIdFunc) (CameraText *id)
ctypedef int (* CameraLibraryAbilitiesFunc) (CameraAbilitiesList *list)
ctypedef int (* CameraLibraryInitFunc) (Camera *camera, GPContext *context)
int camera_id (CameraText *id)
int camera_abilities (CameraAbilitiesList *list)
int camera_init (Camera *camera, GPContext *context)
#------------------------------------------------------------------------------
cdef extern from "gphoto2-setting.h":
int gp_setting_set (char *id, char *key, char *value)
int gp_setting_get (char *id, char *key, char *value)
#------------------------------------------------------------------------------
def version(verbose=False):
cdef char **cText
if verbose==False:
cText=<char **>gp_library_version(GP_VERSION_SHORT)
else:
cText=<char **>gp_library_version(GP_VERSION_VERBOSE)
return cText[0]
cdef check(result):
if result!=0:
txt=gp_result_as_string(result)
raise Exception('Error ('+str(result)+') : '+txt)
cdef check_unref(int result,CameraFile *file):
if result!=0:
gp_file_unref(file)
txt=gp_result_as_string(result)
raise Exception('Error ('+str(result)+') : '+txt)
cdef class portInfo:
cdef GPPortInfo info
def __repr__(self):
return self.info.name
cdef class ports:
cdef GPPortInfoList *portInfoList
def __new__(self):
check(gp_port_info_list_new(&self.portInfoList))
def __dealloc__(self):
check(gp_port_info_list_free(self.portInfoList))
def load(self):
check(gp_port_info_list_load(self.portInfoList))
def count(self):
return gp_port_info_list_count(self.portInfoList)
def __getitem__(self, num):
cdef portInfo info
info=portInfo()
check(gp_port_info_list_get_info(self.portInfoList, num, &info.info))
return info
cdef class cameraList:
cdef CameraList *liste
def __new__(self):
check(gp_list_new(&self.liste))
def __dealloc__(self):
check(gp_list_free(self.liste))
def count(self):
return gp_list_count(self.liste)
def __getitem__(self, index):
cdef char *name
cdef char *value
check(gp_list_get_name(self.liste, index, &name))
check(gp_list_get_value(self.liste, index, &value))
return (name, value)
cdef class cameraAbilities:
cdef CameraAbilities abilitie
def __new__(self):
pass
def __repr__(self):
return "Model : %s\nStatus : %d\nPort : %d\nOperations : %d\nFile Operations : %d\nFolder Operations : %d\nUSB (vendor/product) : %d/%d\nUSB class : %d/%d/%d\nLibrary : %s\nId : %s\n" % (self.abilitie.model, self.abilitie.status, self.abilitie.port, self.abilitie.operations, self.abilitie.file_operations, self.abilitie.folder_operations, self.abilitie.usb_vendor, self.abilitie.usb_product, self.abilitie.usb_class, self.abilitie.usb_subclass, self.abilitie.usb_protocol, self.abilitie.library, self.abilitie.id)
property model:
def __get__(self):
return self.abilitie.model
property status:
def __get__(self):
return self.abilitie.status
property port:
def __get__(self):
return self.abilitie.port
property operations:
def __get__(self):
return self.abilitie.operations
property file_operations:
def __get__(self):
return self.abilitie.file_operations
property folder_operations:
def __get__(self):
return self.abilitie.folder_operations
property usb_vendor:
def __get__(self):
return self.abilitie.usb_vendor
property usb_product:
def __get__(self):
return self.abilitie.usb_product
property usb_class:
def __get__(self):
return self.abilitie.usb_class
property usb_subclass:
def __get__(self):
return self.abilitie.usb_subclass
property usb_protocol:
def __get__(self):
return self.abilitie.usb_protocol
property library:
def __get__(self):
return self.abilitie.library
property id:
def __get__(self):
return self.abilitie.id
cdef class abilities_list:
cdef CameraAbilitiesList *abilitiesList
def __new__(self):
check(gp_abilities_list_new(&self.abilitiesList))
def __dealloc__(self):
check(gp_abilities_list_free(self.abilitiesList))
def count(self):
return gp_abilities_list_count(self.abilitiesList)
def load(self):
check(gp_abilities_list_load(self.abilitiesList, NULL))
def __getitem__(self, index):
cdef cameraAbilities ab
ab=cameraAbilities()
check(gp_abilities_list_get_abilities(self.abilitiesList, index, &ab.abilitie))
return ab
def lookup_model(self, model):
ret=gp_abilities_list_lookup_model(self.abilitiesList, model)
return ret
def detect(self, ports p):
cdef cameraList l
l=cameraList()
check(gp_abilities_list_detect(self.abilitiesList, p.portInfoList, l.liste, NULL))
return l
class cameraeventtype:
GP_EVENT_UNKNOWN, \
GP_EVENT_TIMEOUT, \
GP_EVENT_FILE_ADDED, \
GP_EVENT_FOLDER_ADDED \
= range(0,4)
cdef class camera:
cdef Camera *camera
def __new__(self):
check(gp_camera_new(&self.camera))
def init(self):
check(gp_camera_init(self.camera, NULL))
def reinit(self):
gp_camera_free(self.camera)
check(gp_camera_new(&self.camera))
self.init()
def __dealloc__(self):
check(gp_camera_free(self.camera))
property abilities:
def __set__(self, cameraAbilities ab):
check(gp_camera_set_abilities(self.camera, ab.abilitie))
def __get__(self):
cdef cameraAbilities ab
ab=cameraAbilities()
check(gp_camera_get_abilities(self.camera, &ab.abilitie))
return ab
property summary:
def __get__(self):
cdef CameraText txt
check(gp_camera_get_summary(self.camera, &txt, NULL))
return txt.text
def capture_image(self):
cdef CameraFilePath path
check(gp_camera_capture(self.camera, GP_CAPTURE_IMAGE, &path, NULL))
return (path.folder, path.name)
def wait_for_event(self,int timeout):
cdef CameraEventType event
cdef void *data
check(gp_camera_wait_for_event(self.camera,timeout,&event,&data,NULL))
eventdata=None
if event==GP_EVENT_FILE_ADDED:
eventdata=((<CameraFilePath*>data).folder,(<CameraFilePath*>data).name)
free(data)
return (event,eventdata)
def list_folders_in_folder(self,char *path):
cdef cameraList l
l=cameraList()
check(gp_camera_folder_list_folders( self.camera, path, l.liste, NULL ));
return l
def list_files_in_folder(self,char *path):
cdef cameraList l
l=cameraList()
check(gp_camera_folder_list_files( self.camera, path, l.liste, NULL ));
return l
def upload_file_to(self,char *srcpath,char *destfolder,char *destfilename):
cdef CameraFile *cfile
check( gp_file_new( &cfile ) )
check_unref( gp_file_open( cfile, srcpath ), cfile )
check_unref( gp_file_set_name( cfile, destfilename ), cfile )
check_unref( gp_camera_folder_put_file( self.camera, destfolder, cfile, NULL ), cfile )
gp_file_unref( cfile )
def download_file_to(self,char *srcfolder,char *srcfilename,char *destpath):
cdef CameraFile *cfile
cdef char *data
cdef unsigned long size
check( gp_file_new( &cfile ) )
check_unref( gp_camera_file_get ( self.camera, srcfolder, srcfilename, GP_FILE_TYPE_NORMAL, cfile, NULL ), cfile )
check_unref( gp_file_get_data_and_size( cfile, &data, &size ), cfile )
gp_file_unref( cfile )
dfile = open( destpath, 'w' )
dfile.write( PyString_FromStringAndSize( data, size ) )
dfile.close()
def getConfigByName(self,char *name):
cdef CameraWidget *root
cdef CameraWidget *child
cdef char *value
check(gp_camera_get_config(self.camera,root,NULL))
check(gp_widget_get_child_by_name(root,name,child))
check(gp_widget_get_value(child,value))
return value