[niepce] [cw] Basic gphoto functionnality: list connected cameras.
- From: Hubert Figuière <hub src gnome org>
- To: svn-commits-list gnome org
- Subject: [niepce] [cw] Basic gphoto functionnality: list connected cameras.
- Date: Sat, 23 May 2009 03:30:50 -0400 (EDT)
commit 4408e227dd5f385bdd15c9877404e8bd8bea0dc1
Author: Hubert Figuiere <hub figuiere net>
Date: Fri May 22 15:03:02 2009 -0400
[cw] Basic gphoto functionnality: list connected cameras.
---
camerawire/ChangeLog | 5 +++++
camerawire/configure.ac | 2 ++
camerawire/src/Makefile.am | 5 +++--
camerawire/src/cwwindow.cpp | 30 ++++++++++++++++++++++++++++++
camerawire/src/cwwindow.hpp | 25 +++++++++++++++++++++++++
5 files changed, 65 insertions(+), 2 deletions(-)
diff --git a/camerawire/ChangeLog b/camerawire/ChangeLog
index fe7a538..629758e 100644
--- a/camerawire/ChangeLog
+++ b/camerawire/ChangeLog
@@ -1,5 +1,10 @@
2009-05-22 Hubert Figuiere <hub figuiere net>
+ * configure.ac
+ * src/Makefile.am
+ * src/cwwindow.{hpp,cpp}
+ Basic gphoto functionnality: list connected cameras.
+
* Makefile.am:
Fix maintainer mode build.
diff --git a/camerawire/configure.ac b/camerawire/configure.ac
index 751c255..8d22eea 100644
--- a/camerawire/configure.ac
+++ b/camerawire/configure.ac
@@ -27,6 +27,7 @@ EXEMPI_VERSION=2.0.0
GEGL_VERSION=0.0.22
GEGLMM_VERSION=0.0.22
LIBOPENRAW_VERSION=0.0.5
+LIBGPHOTO_VERSION=2.4
dnl need at least 2.5.0 because of xmlTextReader
LIBXML2_VERSION=2.5.0
BOOST_VERSION=1.34
@@ -69,6 +70,7 @@ PKG_CHECK_MODULES(GCONF, [gconf-2.0 >= $LIBGCONF_VERSION])
PKG_CHECK_MODULES(EXEMPI, [exempi-2.0 >= $EXEMPI_VERSION])
PKG_CHECK_MODULES(LIBXML2, [libxml-2.0 >= $LIBXML2_VERSION])
PKG_CHECK_MODULES(BABL, babl)
+PKG_CHECK_MODULES(GPHOTO, [libgphoto2 >= $LIBGPHOTO_VERSION libgphoto2_port])
PKG_CHECK_MODULES(OPENRAW, libopenraw-gnome-1.0 >= $LIBOPENRAW_VERSION)
AC_SUBST(OPENRAW_CFLAGS)
diff --git a/camerawire/src/Makefile.am b/camerawire/src/Makefile.am
index 41972de..a4e428d 100644
--- a/camerawire/src/Makefile.am
+++ b/camerawire/src/Makefile.am
@@ -7,7 +7,8 @@ bin_PROGRAMS = camerawire
INCLUDES = -DDATADIR=\"$(datadir)\" \
-I$(top_srcdir)/../src/ -I$(top_srcdir)/src \
- @LIBGLIBMM_CFLAGS@ @LIBGTKMM_CFLAGS@ @GCONF_CFLAGS@
+ @LIBGLIBMM_CFLAGS@ @LIBGTKMM_CFLAGS@ @GCONF_CFLAGS@ \
+ @GPHOTO_CFLAGS@
camerawire_SOURCES = \
@@ -16,7 +17,7 @@ camerawire_SOURCES = \
main.cpp
camerawire_LDADD = @LIBGLIBMM_LIBS@ @LIBGTKMM_LIBS@ \
- @GCONF_LIBS@ \
+ @GCONF_LIBS@ @GPHOTO_LIBS@ \
$(top_builddir)/../src/fwk/toolkit/libniepceframework.a \
$(top_builddir)/../src/fwk/utils/libniepceutils.a \
$(top_builddir)/../src/fwk/libfwk.a \
diff --git a/camerawire/src/cwwindow.cpp b/camerawire/src/cwwindow.cpp
index 1cd6b54..34273ad 100644
--- a/camerawire/src/cwwindow.cpp
+++ b/camerawire/src/cwwindow.cpp
@@ -53,6 +53,15 @@ Gtk::Widget * CwWindow::buildWidget()
Gtk::Widget* pMenuBar = pApp->uiManager()->get_widget("/MenuBar");
m_vbox.pack_start(*pMenuBar, Gtk::PACK_SHRINK);
+ m_vbox.pack_start(m_hbox, true, true);
+
+ m_camera_tree_model = Gtk::ListStore::create(m_camera_tree_record);
+ Gtk::TreeView *treeview = manage(new Gtk::TreeView(m_camera_tree_model));
+ treeview->append_column("", m_camera_tree_record.m_icon);
+ treeview->append_column(_("Camera"), m_camera_tree_record.m_label);
+ m_hbox.pack_start(*treeview, false, true);
+
+ reload_camera_list();
win.set_size_request(600, 400);
win.show_all_children();
@@ -94,6 +103,10 @@ void CwWindow::init_actions()
&CwWindow::on_preferences));
m_refActionGroup->add(Gtk::Action::create("MenuTools", _("_Tools")));
+ m_refActionGroup->add(Gtk::Action::create("ReloadCameras",
+ Gtk::Stock::REFRESH),
+ Gtk::AccelKey("F5"),
+ sigc::mem_fun(*this, &CwWindow::reload_camera_list));
m_hide_tools_action = Gtk::ToggleAction::create("ToggleToolsVisible",
_("_Hide tools"));
m_refActionGroup->add(m_hide_tools_action,
@@ -136,6 +149,8 @@ void CwWindow::init_ui()
" <menuitem action='Preferences'/>"
" </menu>"
" <menu action='MenuTools'>"
+ " <menuitem action='ReloadCameras' />"
+ " <separator/>"
" <menuitem action='ToggleToolsVisible'/>"
" <separator/>"
" </menu>"
@@ -163,4 +178,19 @@ void CwWindow::on_preferences()
}
+void CwWindow::reload_camera_list()
+{
+ using fwk::GpDeviceList;
+
+ GpDeviceList::obj().detect();
+ for(GpDeviceList::const_iterator iter = GpDeviceList::obj().begin();
+ iter != GpDeviceList::obj().end(); ++iter) {
+
+ Gtk::TreeIter treeiter = m_camera_tree_model->append();
+ treeiter->set_value(m_camera_tree_record.m_label, (*iter)->get_model());
+ treeiter->set_value(m_camera_tree_record.m_camera, *iter);
+ }
+}
+
+
}
diff --git a/camerawire/src/cwwindow.hpp b/camerawire/src/cwwindow.hpp
index 10051bc..4510d8b 100644
--- a/camerawire/src/cwwindow.hpp
+++ b/camerawire/src/cwwindow.hpp
@@ -24,7 +24,11 @@
#include <gtkmm/action.h>
#include <gtkmm/actiongroup.h>
#include <gtkmm/box.h>
+#include <gtkmm/liststore.h>
+#include <gtkmm/treemodel.h>
+#include <gtkmm/treeview.h>
+#include "fwk/utils/gphoto.hpp"
#include "fwk/toolkit/frame.hpp"
namespace cw {
@@ -39,12 +43,33 @@ protected:
virtual Gtk::Widget * buildWidget();
private:
+ class CameraTreeRecord
+ : public Gtk::TreeModelColumnRecord
+ {
+ public:
+ CameraTreeRecord()
+ {
+ add(m_icon);
+ add(m_label);
+ add(m_camera);
+ }
+
+ Gtk::TreeModelColumn<Glib::RefPtr<Gdk::Pixbuf> > m_icon;
+ Gtk::TreeModelColumn<std::string> m_label;
+ Gtk::TreeModelColumn<fwk::GpDevice::Ptr> m_camera;
+ };
+
void init_ui();
void init_actions();
void on_action_import();
void on_preferences();
+ void reload_camera_list();
+
+ CameraTreeRecord m_camera_tree_record;
+ Glib::RefPtr<Gtk::ListStore> m_camera_tree_model;
Gtk::VBox m_vbox;
+ Gtk::HBox m_hbox;
Glib::RefPtr<Gtk::ActionGroup> m_refActionGroup;
};
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]