You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
151 lines
4.0 KiB
151 lines
4.0 KiB
/* ============================================================
|
|
* File : gpiface.cpp
|
|
* Author: Renchi Raju <renchi@pooh.tam.uiuc.edu>
|
|
* Date : 2003-02-19
|
|
* Description :
|
|
*
|
|
* Copyright 2003 by Renchi Raju <renchi@pooh.tam.uiuc.edu>
|
|
|
|
* 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, 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.
|
|
*
|
|
* ============================================================ */
|
|
|
|
// GPhoto2
|
|
|
|
extern "C"
|
|
{
|
|
#include <gphoto2.h>
|
|
}
|
|
|
|
// TQt
|
|
#include <tqstring.h>
|
|
#include <tqstringlist.h>
|
|
|
|
// Local
|
|
#include "gpiface.h"
|
|
#include "config.h"
|
|
|
|
namespace KIPIKameraKlientPlugin
|
|
{
|
|
|
|
int GPIface::autoDetect(TQString& model, TQString& port) {
|
|
CameraList *pCamList;
|
|
CameraAbilitiesList *abilList;
|
|
GPPortInfoList *infoList;
|
|
const char *camModel_, *camPort_;
|
|
GPContext *context;
|
|
|
|
context = gp_context_new ();
|
|
gp_list_new(&pCamList);
|
|
|
|
gp_abilities_list_new (&abilList);
|
|
gp_abilities_list_load (abilList, context);
|
|
gp_port_info_list_new (&infoList);
|
|
gp_port_info_list_load (infoList);
|
|
gp_abilities_list_detect (abilList, infoList, pCamList, context);
|
|
gp_abilities_list_free (abilList);
|
|
gp_port_info_list_free (infoList);
|
|
|
|
gp_context_unref( context );
|
|
|
|
int count = gp_list_count (pCamList);
|
|
|
|
if (count<=0) {
|
|
gp_list_free(pCamList);
|
|
return -1;
|
|
}
|
|
|
|
for (int i = 0; i < count; i++) {
|
|
gp_list_get_name (pCamList, i, &camModel_);
|
|
gp_list_get_value (pCamList, i, &camPort_);
|
|
}
|
|
|
|
model = camModel_;
|
|
port = camPort_;
|
|
gp_list_free(pCamList);
|
|
|
|
return 0;
|
|
}
|
|
|
|
void GPIface::getSupportedCameras(int& count, TQStringList& clist) {
|
|
clist.clear();
|
|
count = 0;
|
|
|
|
CameraAbilitiesList *abilList;
|
|
CameraAbilities abil;
|
|
GPContext *context;
|
|
|
|
context = gp_context_new ();
|
|
|
|
gp_abilities_list_new( &abilList );
|
|
gp_abilities_list_load( abilList, context );
|
|
|
|
count = gp_abilities_list_count( abilList );
|
|
if ( count < 0) {
|
|
gp_context_unref( context );
|
|
tqWarning("failed to get list of cameras");
|
|
return;
|
|
} else {
|
|
for (int i=0; i<count; i++) {
|
|
const char *cname;
|
|
gp_abilities_list_get_abilities( abilList, i, &abil );
|
|
cname = abil.model;
|
|
clist.append( TQString( cname ) );
|
|
}
|
|
}
|
|
gp_abilities_list_free( abilList );
|
|
gp_context_unref( context );
|
|
}
|
|
|
|
void GPIface::getSupportedPorts(TQStringList& plist) {
|
|
GPPortInfoList *list;
|
|
GPPortInfo info;
|
|
plist.clear();
|
|
gp_port_info_list_new( &list );
|
|
gp_port_info_list_load( list );
|
|
int numPorts = gp_port_info_list_count( list );
|
|
for (int i = 0; i < numPorts; i++) {
|
|
gp_port_info_list_get_info( list, i, &info );
|
|
# ifdef HAVE_GPHOTO2_5
|
|
char *xpath;
|
|
gp_port_info_get_path( info, &xpath );
|
|
plist.append( xpath );
|
|
# else
|
|
plist.append( info.path );
|
|
# endif
|
|
}
|
|
gp_port_info_list_free( list );
|
|
}
|
|
|
|
void GPIface::getCameraSupportedPorts(const TQString& model, TQStringList& plist) {
|
|
int i = 0;
|
|
plist.clear();
|
|
CameraAbilities abilities;
|
|
CameraAbilitiesList *abilList;
|
|
GPContext *context;
|
|
context = gp_context_new ();
|
|
gp_abilities_list_new (&abilList);
|
|
gp_abilities_list_load (abilList, context);
|
|
i = gp_abilities_list_lookup_model (abilList, model.local8Bit().data());
|
|
gp_abilities_list_get_abilities (abilList, i, &abilities);
|
|
gp_abilities_list_free (abilList);
|
|
if (abilities.port & GP_PORT_SERIAL) {
|
|
plist.append("serial");
|
|
}
|
|
if (abilities.port & GP_PORT_USB) {
|
|
plist.append("usb");
|
|
}
|
|
gp_context_unref( context );
|
|
}
|
|
|
|
} // NameSpace KIPIKameraKlientPlugin
|