cheese r394 - in trunk: . data data/pixmaps src
- From: dgsiegel svn gnome org
- To: svn-commits-list gnome org
- Subject: cheese r394 - in trunk: . data data/pixmaps src
- Date: Mon, 14 Jan 2008 14:28:40 +0000 (GMT)
Author: dgsiegel
Date: Mon Jan 14 14:28:40 2008
New Revision: 394
URL: http://svn.gnome.org/viewvc/cheese?rev=394&view=rev
Log:
add the stylish countdown widget by Mirco "MacSlow" MÃller. the patch was provided by Patryk Zawadzki
Added:
trunk/data/pixmaps/camera-icon.svg
trunk/src/cheese-countdown.c
trunk/src/cheese-countdown.h
Modified:
trunk/ChangeLog
trunk/configure.ac
trunk/data/cheese.glade
trunk/data/pixmaps/Makefile.am
trunk/data/wscript_build
trunk/src/Makefile.am
trunk/src/cheese-window.c
trunk/src/wscript_build
trunk/wscript
Modified: trunk/configure.ac
==============================================================================
--- trunk/configure.ac (original)
+++ trunk/configure.ac Mon Jan 14 14:28:40 2008
@@ -46,6 +46,8 @@
DBUS_REQUIRED=1.0
HAL_REQUIRED=0.5.9
DBUS_GLIB_REQUIRED=0.7
+LIBRSVG_REQUIRED=2.18.0
+PANGOCAIRO_REQUIRED=1.18.0
PKG_CHECK_MODULES(CHEESE, \
glib-2.0 >= $GLIB_REQUIRED \
@@ -61,6 +63,8 @@
dbus-1 >= $DBUS_REQUIRED \
hal >= $HAL_REQUIRED \
dbus-glib-1 >= $DBUS_GLIB_REQUIRED \
+ pangocairo >= $PANGOCAIRO_REQUIRED \
+ librsvg-2.0 >= $LIBRSVG_REQUIRED \
xxf86vm)
AC_SUBST(CHEESE_CFLAGS)
Modified: trunk/data/cheese.glade
==============================================================================
--- trunk/data/cheese.glade (original)
+++ trunk/data/cheese.glade Mon Jan 14 14:28:40 2008
@@ -85,216 +85,248 @@
</widget>
</child>
<child>
- <widget class="GtkHBox" id="hbox1">
+ <widget class="GtkNotebook" id="notebook_bar">
<property name="visible">True</property>
+ <property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="homogeneous">True</property>
+ <property name="show_tabs">False</property>
+ <property name="show_border">False</property>
<child>
- <widget class="GtkAlignment" id="alignment3">
+ <widget class="GtkHBox" id="hbox1">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="homogeneous">True</property>
<child>
- <widget class="GtkHBox" id="hbox2">
+ <widget class="GtkAlignment" id="alignment3">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<child>
- <widget class="GtkToggleButton" id="button_photo">
+ <widget class="GtkHBox" id="hbox2">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="response_id">0</property>
<child>
- <widget class="GtkAlignment" id="alignment4">
+ <widget class="GtkToggleButton" id="button_photo">
<property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="response_id">0</property>
<child>
- <widget class="GtkHBox" id="hbox5">
+ <widget class="GtkAlignment" id="alignment4">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="homogeneous">True</property>
- <child>
- <widget class="GtkImage" id="image4">
- <property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="icon_name">camera-photo</property>
- </widget>
- </child>
<child>
- <widget class="GtkLabel" id="label_photo">
+ <widget class="GtkHBox" id="hbox5">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="label" translatable="yes">_Photo</property>
- <property name="use_markup">True</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">button_photo</property>
+ <property name="homogeneous">True</property>
+ <child>
+ <widget class="GtkImage" id="image4">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="icon_name">camera-photo</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label_photo">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label" translatable="yes">_Photo</property>
+ <property name="use_markup">True</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">button_photo</property>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
</widget>
- <packing>
- <property name="position">1</property>
- </packing>
</child>
</widget>
</child>
</widget>
</child>
- </widget>
- </child>
- <child>
- <widget class="GtkToggleButton" id="button_video">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="response_id">0</property>
<child>
- <widget class="GtkAlignment" id="alignment5">
+ <widget class="GtkToggleButton" id="button_video">
<property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="response_id">0</property>
<child>
- <widget class="GtkHBox" id="hbox6">
+ <widget class="GtkAlignment" id="alignment5">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="homogeneous">True</property>
<child>
- <widget class="GtkImage" id="image5">
+ <widget class="GtkHBox" id="hbox6">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="icon_name">camera-video</property>
+ <property name="homogeneous">True</property>
+ <child>
+ <widget class="GtkImage" id="image5">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="icon_name">camera-video</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label_video">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label" translatable="yes">_Video</property>
+ <property name="use_markup">True</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">button_video</property>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
</widget>
</child>
- <child>
- <widget class="GtkLabel" id="label_video">
- <property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="label" translatable="yes">_Video</property>
- <property name="use_markup">True</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">button_video</property>
- </widget>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
</widget>
</child>
</widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
</child>
</widget>
- <packing>
- <property name="position">1</property>
- </packing>
</child>
</widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
</child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="GtkButton" id="take_picture">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="response_id">0</property>
<child>
- <widget class="GtkAlignment" id="alignment1">
+ <widget class="GtkButton" id="take_picture">
<property name="visible">True</property>
- <property name="xscale">0</property>
- <property name="yscale">0</property>
+ <property name="can_focus">True</property>
+ <property name="response_id">0</property>
<child>
- <widget class="GtkHBox" id="hbox3">
+ <widget class="GtkAlignment" id="alignment1">
<property name="visible">True</property>
- <property name="spacing">2</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
<child>
- <widget class="GtkImage" id="image_take_photo">
+ <widget class="GtkHBox" id="hbox3">
<property name="visible">True</property>
- <property name="stock">gtk-media-record</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel" id="label_take_photo">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Take a photo</property>
- <property name="use_markup">True</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">take_picture</property>
+ <property name="spacing">2</property>
+ <child>
+ <widget class="GtkImage" id="image_take_photo">
+ <property name="visible">True</property>
+ <property name="stock">gtk-media-record</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label_take_photo">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Take a photo</property>
+ <property name="use_markup">True</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">take_picture</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
</widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
</child>
</widget>
</child>
</widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="padding">16</property>
+ <property name="position">1</property>
+ </packing>
</child>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="padding">16</property>
- <property name="position">1</property>
- </packing>
- </child>
- <child>
- <widget class="GtkButton" id="button_effects">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="response_id">0</property>
<child>
- <widget class="GtkAlignment" id="alignment2">
+ <widget class="GtkButton" id="button_effects">
<property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="response_id">0</property>
<child>
- <widget class="GtkHBox" id="hbox4">
+ <widget class="GtkAlignment" id="alignment2">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="spacing">2</property>
<child>
- <widget class="GtkImage" id="image2">
+ <widget class="GtkHBox" id="hbox4">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="icon_name">applications-graphics</property>
+ <property name="spacing">2</property>
+ <child>
+ <widget class="GtkImage" id="image2">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="icon_name">applications-graphics</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label_effects">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="label" translatable="yes">_Effects</property>
+ <property name="use_markup">True</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">button_effects</property>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
</widget>
</child>
- <child>
- <widget class="GtkLabel" id="label_effects">
- <property name="visible">True</property>
- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
- <property name="label" translatable="yes">_Effects</property>
- <property name="use_markup">True</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">button_effects</property>
- </widget>
- <packing>
- <property name="position">1</property>
- </packing>
- </child>
</widget>
</child>
</widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">40</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ <property name="position">2</property>
+ </packing>
</child>
</widget>
+ </child>
+ <child>
+ <placeholder/>
+ <packing>
+ <property name="type">tab</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkAlignment" id="countdown_frame">
+ <property name="visible">True</property>
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <child>
+ <placeholder/>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
<packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="padding">40</property>
- <property name="pack_type">GTK_PACK_END</property>
- <property name="position">2</property>
+ <property name="type">tab</property>
</packing>
</child>
</widget>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
- <property name="padding">3</property>
<property name="position">1</property>
</packing>
</child>
Modified: trunk/data/pixmaps/Makefile.am
==============================================================================
--- trunk/data/pixmaps/Makefile.am (original)
+++ trunk/data/pixmaps/Makefile.am Mon Jan 14 14:28:40 2008
@@ -1,7 +1,8 @@
Pixmapsdir = $(datadir)/cheese/pixmaps
Pixmaps_DATA = \
- thumbnail-frame.png
+ thumbnail-frame.png \
+ camera-icon.svg
EXTRA_DIST = \
$(Pixmaps_DATA)
Added: trunk/data/pixmaps/camera-icon.svg
==============================================================================
--- (empty file)
+++ trunk/data/pixmaps/camera-icon.svg Mon Jan 14 14:28:40 2008
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.0"
+ width="30"
+ height="30"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.45.1"
+ sodipodi:docname="camera-icon.svg"
+ sodipodi:docbase="/home/users/patrys/Desktop/lab/cheese/data/pixmaps"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
+ <metadata
+ id="metadata23">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <sodipodi:namedview
+ inkscape:window-height="620"
+ inkscape:window-width="872"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ guidetolerance="10.0"
+ gridtolerance="10.0"
+ objecttolerance="10.0"
+ borderopacity="1.0"
+ bordercolor="#666666"
+ pagecolor="#ffffff"
+ id="base"
+ width="30px"
+ height="30px"
+ inkscape:zoom="6.7833333"
+ inkscape:cx="30"
+ inkscape:cy="12.309582"
+ inkscape:window-x="0"
+ inkscape:window-y="25"
+ inkscape:current-layer="svg2" />
+ <defs
+ id="defs4">
+ <filter
+ x="-0.1545473"
+ width="1.3090945"
+ y="-0.09807618"
+ height="1.1961524"
+ id="filter3168">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="0.37089844"
+ id="feGaussianBlur3170" />
+ </filter>
+ <filter
+ x="-0.15620252"
+ width="1.3124051"
+ y="-0.09742105"
+ height="1.1948421"
+ id="filter3172">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="0.36152344"
+ id="feGaussianBlur3174" />
+ </filter>
+ <filter
+ x="-0.1607649"
+ width="1.3215297"
+ y="-0.095726728"
+ height="1.1914535"
+ id="filter3176">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="0.34892578"
+ id="feGaussianBlur3178" />
+ </filter>
+ <filter
+ x="-0.21608295"
+ width="1.4321659"
+ y="-0.15424342"
+ height="1.3084868"
+ id="filter4158">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="0.5723877"
+ id="feGaussianBlur4160" />
+ </filter>
+ <filter
+ x="-0.21392"
+ width="1.42784"
+ y="-0.15536475"
+ height="1.3107295"
+ id="filter4162">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="0.58754883"
+ id="feGaussianBlur4164" />
+ </filter>
+ <filter
+ x="-0.21760684"
+ width="1.4352137"
+ y="-0.15347622"
+ height="1.3069524"
+ id="filter4166">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="0.55942383"
+ id="feGaussianBlur4168" />
+ </filter>
+ </defs>
+ <g
+ style="display:inline"
+ id="layer3"
+ transform="matrix(0.4962866,0,0,0.4962866,0.1114021,0.1114022)">
+ <g
+ style="opacity:1;fill:#ffffff;fill-opacity:1;display:inline"
+ id="g2183">
+ <g
+ style="fill:#ffffff;fill-opacity:1"
+ id="g2185">
+ <rect
+ width="32.623775"
+ height="5.6962147"
+ rx="2.2113023"
+ ry="2.2113023"
+ x="13.688112"
+ y="8.6353283"
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect2187" />
+ <path
+ d="M 4.0940897,11.993542 C 2.564051,11.993542 1.3498196,13.244365 1.3498196,14.774403 L 1.3498196,48.583811 C 1.3498196,50.113849 2.564051,51.364671 4.0940897,51.364671 L 55.90591,51.364671 C 57.435948,51.364671 58.65018,50.113849 58.65018,48.583811 L 58.65018,14.774403 C 58.65018,13.244365 57.435948,11.993542 55.90591,11.993542 L 4.0940897,11.993542 z M 30,15.469618 C 38.950294,15.469618 46.209489,22.728813 46.209489,31.679107 C 46.20949,40.6294 38.950294,47.888596 30,47.888596 C 21.049708,47.888596 13.790511,40.6294 13.790511,31.679107 C 13.790511,22.728813 21.049706,15.469618 30,15.469618 z "
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path2189" />
+ <path
+ d="M 46.06637,34.20763 C 46.068254,40.635655 40.857839,45.847598 34.429814,45.847598 C 28.001788,45.847598 22.791373,40.635655 22.793257,34.20763 C 22.791373,27.779605 28.001788,22.567662 34.429814,22.567662 C 40.857839,22.567662 46.068254,27.779605 46.06637,34.20763 L 46.06637,34.20763 z "
+ transform="matrix(0.9038829,0,0,0.9038829,-1.1205199,0.7594145)"
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
+ id="path2191" />
+ </g>
+ </g>
+ </g>
+</svg>
Modified: trunk/data/wscript_build
==============================================================================
--- trunk/data/wscript_build (original)
+++ trunk/data/wscript_build Mon Jan 14 14:28:40 2008
@@ -30,7 +30,7 @@
# data/effects
install_files('PACKAGE_DATADIR', 'effects', 'effects/*.png')
-install_files('PACKAGE_DATADIR', 'pixmaps', 'pixmaps/thumbnail-frame.png')
+install_files('PACKAGE_DATADIR', 'pixmaps', 'pixmaps/*.png')
# data/icons
for i in ["16x16", "22x22", "24x24", "32x32", "48x48"]:
Modified: trunk/src/Makefile.am
==============================================================================
--- trunk/src/Makefile.am (original)
+++ trunk/src/Makefile.am Mon Jan 14 14:28:40 2008
@@ -12,6 +12,8 @@
cheese_SOURCES = \
cheese.c \
+ cheese-countdown.c \
+ cheese-countdown.h \
cheese-effect-chooser.c \
cheese-effect-chooser.h \
cheese-fileutil.c \
Added: trunk/src/cheese-countdown.c
==============================================================================
--- (empty file)
+++ trunk/src/cheese-countdown.c Mon Jan 14 14:28:40 2008
@@ -0,0 +1,375 @@
+/*
+ * Copyright (C) 2008 Mirco "MacSlow" MÃller <macslow bangang de>
+ * Copyright (C) 2008 daniel g. siegel <dgsiegel gmail com>
+ * Copyright (C) 2008 Patryk Zawadzki <patrys pld-linux org>
+ *
+ * Licensed under the GNU General Public License Version 2
+ *
+ * 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, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <cheese-config.h>
+#endif
+
+#include <stdlib.h>
+#include <gtk/gtk.h>
+#include <librsvg/rsvg.h>
+#include <librsvg/rsvg-cairo.h>
+
+#include "cheese-countdown.h"
+
+#define R 0
+#define G 1
+#define B 2
+#define A 3
+
+#define CHEESE_COUNTDOWN_GET_PRIVATE(o) \
+ (G_TYPE_INSTANCE_GET_PRIVATE ((o), CHEESE_TYPE_COUNTDOWN, CheeseCountdownPrivate))
+
+G_DEFINE_TYPE (CheeseCountdown, cheese_countdown, GTK_TYPE_DRAWING_AREA);
+
+#define STATE_OFF 0
+#define STATE_3 1
+#define STATE_2 2
+#define STATE_1 3
+#define STATE_SMILE 4
+
+typedef struct
+{
+ gint iState;
+ cairo_surface_t* pSurface;
+ t_cheese_countdown_cb callback;
+ gpointer callback_data;
+} CheeseCountdownPrivate;
+
+static gint
+do_text (cairo_t* pContext,
+ gchar* pcText,
+ gint iFontSize,
+ gchar* pcFontFamily,
+ PangoWeight fontWeight,
+ PangoStyle fontStyle)
+{
+ PangoFontDescription* pDesc = NULL;
+ PangoLayout* pLayout = NULL;
+ GString* pTextString = NULL;
+ PangoRectangle logicalRect;
+ gint iAdvanceWidth;
+
+ /* setup a new pango-layout based on the source-context */
+ pLayout = pango_cairo_create_layout (pContext);
+ if (!pLayout)
+ {
+ g_print ("do_text(): ");
+ g_print ("Could not create pango-layout!\n");
+ return 0;
+ }
+
+ /* get a new pango-description */
+ pDesc = pango_font_description_new ();
+ if (!pDesc)
+ {
+ g_print ("do_text(): ");
+ g_print ("Could not create pango-font-description!\n");
+ g_object_unref (pLayout);
+ return 0;
+ }
+
+ /* set some desired font-attributes */
+ pango_font_description_set_absolute_size (pDesc, iFontSize);
+ pango_font_description_set_family_static (pDesc, pcFontFamily);
+ pango_font_description_set_weight (pDesc, fontWeight);
+ pango_font_description_set_style (pDesc, fontStyle);
+ pango_layout_set_font_description (pLayout, pDesc);
+ pango_font_description_free (pDesc);
+
+ /* get buffer to hold string */
+ pTextString = g_string_new (NULL);
+ if (!pTextString)
+ {
+ g_print ("do_text(): ");
+ g_print ("Could not create string-buffer!\n");
+ g_object_unref (pLayout);
+ return 0;
+ }
+
+ /* print and layout string (pango-wise) */
+ g_string_printf (pTextString, pcText);
+ pango_layout_set_text (pLayout, pTextString->str, -1);
+ g_string_free (pTextString, TRUE);
+
+ pango_layout_get_extents (pLayout, NULL, &logicalRect);
+ iAdvanceWidth = logicalRect.width / PANGO_SCALE;
+
+ /* draw pango-text as path to our cairo-context */
+ pango_cairo_layout_path (pContext, pLayout);
+
+ /* clean up */
+ g_object_unref (pLayout);
+
+ return iAdvanceWidth;
+}
+
+static gboolean
+on_expose (GtkWidget* widget, GdkEventExpose* pEvent, gpointer data)
+{
+ CheeseCountdownPrivate* priv = CHEESE_COUNTDOWN_GET_PRIVATE (widget);
+ cairo_t* pContext = NULL;
+ gdouble fWidth = (gdouble) widget->allocation.width;
+ gdouble fHeight = (gdouble) widget->allocation.height;
+ gint iOffsetX = (widget->allocation.width - 4 * 24) / 2;
+ gint iOffsetY = (widget->allocation.height - 30) / 2;
+ gdouble fAlpha1;
+ gdouble fAlpha2;
+ gdouble fAlpha3;
+ gdouble fAlphaClick;
+
+ /* deal with the timing stuff */
+ if (priv->iState == STATE_3)
+ fAlpha3 = 1.0f;
+ else
+ fAlpha3 = 0.5f;
+ if (priv->iState == STATE_2)
+ fAlpha2 = 1.0f;
+ else
+ fAlpha2 = 0.5f;
+ if (priv->iState == STATE_1)
+ fAlpha1 = 1.0f;
+ else
+ fAlpha1 = 0.5f;
+ if (priv->iState == STATE_SMILE)
+ fAlphaClick = 1.0f;
+ else
+ fAlphaClick = 0.5f;
+
+ /* clear drawing-context */
+ pContext = gdk_cairo_create (widget->window);
+ cairo_set_operator (pContext, CAIRO_OPERATOR_CLEAR);
+ cairo_paint (pContext);
+ cairo_set_operator (pContext, CAIRO_OPERATOR_OVER);
+
+ /* set the clipping-rectangle */
+ cairo_rectangle (pContext, 0.0f, 0.0f, fWidth, fHeight);
+ cairo_clip (pContext);
+
+ /* draw the red-ish background */
+ /* glossy version */
+ /*
+ cairo_set_source_rgba (pContext, 1.0f, 0.5f, 0.5f, 1.0f);
+ cairo_rectangle (pContext, 0.0f, 0.0f, fWidth, fHeight);
+ cairo_fill (pContext);
+ cairo_set_source_rgba (pContext, 1.0f, 0.25f, 0.25f, 1.0f);
+ cairo_rectangle (pContext, 0.0f, fHeight / 2.0f, fWidth, fHeight / 2.0f);
+ cairo_fill (pContext);
+ */
+ /* plain version */
+ cairo_set_source_rgba (pContext, 1.0f, 0.25f, 0.25f, 1.0f);
+ cairo_rectangle (pContext, 0.0f, 0.0f, fWidth, fHeight);
+ cairo_fill (pContext);
+
+ /* draw the 3 */
+ cairo_set_source_rgba (pContext, 1.0f, 1.0f, 1.0f, fAlpha3);
+ cairo_move_to (pContext, (gdouble) iOffsetX, (gdouble) iOffsetY);
+ iOffsetX += do_text (pContext,
+ "3 ",
+ 24 * PANGO_SCALE,
+ "Bitstream Charter",
+ PANGO_WEIGHT_BOLD,
+ PANGO_STYLE_NORMAL);
+ cairo_fill (pContext);
+
+ /* draw the 2 */
+ cairo_set_source_rgba (pContext, 1.0f, 1.0f, 1.0f, fAlpha2);
+ cairo_move_to (pContext, (gdouble) iOffsetX, (gdouble) iOffsetY);
+ iOffsetX += do_text (pContext,
+ "2 ",
+ 24 * PANGO_SCALE,
+ "Bitstream Charter",
+ PANGO_WEIGHT_BOLD,
+ PANGO_STYLE_NORMAL);
+ cairo_fill (pContext);
+
+ /* draw the 1 */
+ cairo_set_source_rgba (pContext, 1.0f, 1.0f, 1.0f, fAlpha1);
+ cairo_move_to (pContext, (gdouble) iOffsetX, (gdouble) iOffsetY);
+ iOffsetX += do_text (pContext,
+ "1 ",
+ 24 * PANGO_SCALE,
+ "Bitstream Charter",
+ PANGO_WEIGHT_BOLD,
+ PANGO_STYLE_NORMAL);
+ cairo_fill (pContext);
+
+ /* draw the camera */
+ cairo_set_source_surface (pContext,
+ priv->pSurface,
+ (gdouble) iOffsetX,
+ (gdouble) iOffsetY);
+ cairo_paint_with_alpha (pContext, fAlphaClick);
+
+ cairo_destroy (pContext);
+
+ return FALSE;
+}
+
+static gboolean
+redraw_handler (gpointer data)
+{
+ GtkWidget* widget = (GtkWidget*) data;
+
+ gtk_widget_queue_draw (widget);
+ return TRUE;
+}
+
+static cairo_surface_t*
+create_surface_from_svg (gchar* pcFilename)
+{
+ cairo_surface_t* pSurface = NULL;
+ RsvgHandle* pSvgHandle = NULL;
+ GError* pError = NULL;
+ RsvgDimensionData dimension;
+ cairo_t* pContext = NULL;
+
+ rsvg_init ();
+
+ /* load svg-file from disk */
+ pSvgHandle = rsvg_handle_new_from_file (pcFilename, &pError);
+ if (!pSvgHandle)
+ {
+ g_print ("Could not load file %s!\n", pcFilename);
+ return NULL;
+ }
+
+ /* get size of svg */
+ rsvg_handle_get_dimensions (pSvgHandle, &dimension);
+
+ /* create a surface-buffer */
+ pSurface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
+ dimension.width,
+ dimension.height);
+ if (cairo_surface_status (pSurface) != CAIRO_STATUS_SUCCESS)
+ {
+ g_print ("Could not create surface for svg-icon!\n");
+ return NULL;
+ }
+
+ /* create a temporary drawing-context */
+ pContext = cairo_create (pSurface);
+ if (cairo_status (pContext) != CAIRO_STATUS_SUCCESS)
+ {
+ g_print ("Could not create temp drawing-context!\n");
+ return NULL;
+ }
+
+ /* clear that context */
+ cairo_set_source_rgba (pContext, 1.0f, 1.0f, 1.0f, 0.0f);
+ cairo_set_operator (pContext, CAIRO_OPERATOR_OVER);
+ cairo_paint (pContext);
+
+ /* draw icon into surface-buffer */
+ rsvg_handle_render_cairo (pSvgHandle, pContext);
+
+ /* clean up */
+ rsvg_handle_free (pSvgHandle);
+ rsvg_term ();
+ cairo_destroy (pContext);
+
+ return pSurface;
+}
+
+static gboolean
+cheese_countdown_cb (gpointer countdown)
+{
+ CheeseCountdownPrivate* priv = CHEESE_COUNTDOWN_GET_PRIVATE (countdown);
+ if (priv->iState == STATE_OFF)
+ {
+ // should just ignore it, testing purposes
+ g_print("Should not happen, unitialized state in countdown handler\n");
+ }
+ else if (priv->iState == STATE_3)
+ {
+ priv->iState = STATE_2;
+ }
+ else if (priv->iState == STATE_2)
+ {
+ priv->iState = STATE_1;
+ }
+ else if (priv->iState == STATE_1)
+ {
+ priv->iState = STATE_SMILE;
+ if (priv->callback != NULL) (priv->callback)(priv->callback_data, FALSE);
+ }
+ else if (priv->iState == STATE_SMILE)
+ {
+ priv->iState = STATE_OFF;
+ if (priv->callback != NULL) (priv->callback)(priv->callback_data, TRUE);
+ return FALSE;
+ }
+ return TRUE;
+}
+
+void
+cheese_countdown_start (CheeseCountdown *countdown, t_cheese_countdown_cb cb, gpointer data)
+{
+ CheeseCountdownPrivate* priv = CHEESE_COUNTDOWN_GET_PRIVATE (countdown);
+ if (priv->iState != STATE_OFF)
+ {
+ g_print ("Should not happen, state is not off.\n");
+ }
+ priv->iState = STATE_3;
+ priv->callback = cb;
+ priv->callback_data = data;
+ g_timeout_add_seconds (1, cheese_countdown_cb, (gpointer) countdown);
+}
+
+static void
+cheese_countdown_finalize (GObject *object)
+{
+ G_OBJECT_CLASS (cheese_countdown_parent_class)->finalize (object);
+}
+
+static void
+cheese_countdown_class_init (CheeseCountdownClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ object_class->finalize = cheese_countdown_finalize;
+
+ g_type_class_add_private (klass, sizeof (CheeseCountdownPrivate));
+}
+
+static void
+cheese_countdown_init (CheeseCountdown *countdown)
+{
+ CheeseCountdownPrivate* priv = CHEESE_COUNTDOWN_GET_PRIVATE (countdown);
+
+ /* create/load svg-icon */
+ priv->pSurface = create_surface_from_svg (PACKAGE_DATADIR "/pixmaps/camera-icon.svg");
+ priv->iState = STATE_OFF;
+ priv->callback = NULL;
+
+ g_signal_connect (G_OBJECT (countdown), "expose-event",
+ G_CALLBACK (on_expose), NULL);
+
+ g_timeout_add (100, redraw_handler, (gpointer) countdown);
+}
+
+GtkWidget *
+cheese_countdown_new ()
+{
+ CheeseCountdown *countdown;
+ countdown = g_object_new (CHEESE_TYPE_COUNTDOWN, NULL);
+
+ return GTK_WIDGET (countdown);
+}
Added: trunk/src/cheese-countdown.h
==============================================================================
--- (empty file)
+++ trunk/src/cheese-countdown.h Mon Jan 14 14:28:40 2008
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2008 Mirco "MacSlow" MÃller <macslow bangang de>
+ * Copyright (C) 2007 daniel g. siegel <dgsiegel gmail com>
+ *
+ * Licensed under the GNU General Public License Version 2
+ *
+ * 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, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __CHEESE_COUNTDOWN_H__
+#define __CHEESE_COUNTDOWN_H__
+
+G_BEGIN_DECLS
+
+#define CHEESE_TYPE_COUNTDOWN (cheese_countdown_get_type ())
+#define CHEESE_COUNTDOWN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CHEESE_TYPE_COUNTDOWN, CheeseCountdown))
+#define CHEESE_COUNTDOWN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CHEESE_TYPE_COUNTDOWN, CheeseCountdownClass))
+#define CHEESE_IS_COUNTDOWN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CHEESE_TYPE_COUNTDOWN))
+#define CHEESE_IS_COUNTDOWN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CHEESE_TYPE_COUNTDOWN))
+#define CHEESE_COUNTDOWN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CHEESE_TYPE_COUNTDOWN, CheeseCountdownClass))
+
+typedef struct
+{
+ GtkDrawingArea parent;
+} CheeseCountdown;
+
+typedef struct
+{
+ GtkDrawingAreaClass parent_class;
+} CheeseCountdownClass;
+
+typedef void (*t_cheese_countdown_cb) (gpointer data, gboolean hide);
+
+GType cheese_countdown_get_type (void);
+GtkWidget *cheese_countdown_new ();
+
+void cheese_countdown_start (CheeseCountdown *countdown, t_cheese_countdown_cb cb, gpointer data);
+
+G_END_DECLS
+
+#endif /* __CHEESE_COUNTDOWN_H__ */
Modified: trunk/src/cheese-window.c
==============================================================================
--- trunk/src/cheese-window.c (original)
+++ trunk/src/cheese-window.c Mon Jan 14 14:28:40 2008
@@ -1,6 +1,7 @@
/*
* Copyright (C) 2007 daniel g. siegel <dgsiegel gmail com>
* Copyright (C) 2007 Jaap Haitsma <jaap haitsma org>
+ * Copyright (C) 2008 Patryk Zawadzki <patrys pld-linux org>
*
* Licensed under the GNU General Public License Version 2
*
@@ -35,13 +36,14 @@
#include <libebook/e-book.h>
#include <glade/glade.h>
+#include "cheese-countdown.h"
#include "cheese-effect-chooser.h"
#include "cheese-fileutil.h"
#include "cheese-gconf.h"
#include "cheese-thumb-view.h"
#include "cheese-window.h"
-#include "gst-audio-play.h"
#include "ephy-spinner.h"
+#include "gst-audio-play.h"
#define GLADE_FILE PACKAGE_DATADIR"/cheese.glade"
#define UI_FILE PACKAGE_DATADIR"/cheese-ui.xml"
@@ -69,6 +71,7 @@
GtkWidget *window;
GtkWidget *notebook;
+ GtkWidget *notebook_bar;
GtkWidget *main_vbox;
@@ -76,6 +79,8 @@
GtkWidget *effect_chooser;
GtkWidget *throbber_frame;
GtkWidget *throbber;
+ GtkWidget *countdown_frame;
+ GtkWidget *countdown;
GtkWidget *button_effects;
GtkWidget *button_photo;
@@ -767,19 +772,20 @@
}
-static void
-cheese_window_action_button_clicked_cb (GtkWidget *widget, CheeseWindow *cheese_window)
+void
+cheese_window_countdown_cb (gpointer data, gboolean hide)
{
- char *str;
-
- if (cheese_window->webcam_mode == WEBCAM_MODE_PHOTO)
+ CheeseWindow *cheese_window = (CheeseWindow *) data;
+ if (hide)
+ {
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(cheese_window->notebook_bar), 0);
+ }
+ else
{
GError *error = NULL;
GstAudioPlay *audio_play;
char *file;
- gtk_widget_set_sensitive (cheese_window->take_picture, FALSE);
-
file = audio_play_get_filename (cheese_window);
audio_play = gst_audio_play_file (file, &error);
if (!audio_play)
@@ -793,6 +799,21 @@
cheese_window->photo_filename = cheese_fileutil_get_new_media_filename (WEBCAM_MODE_PHOTO);
cheese_webcam_take_photo (cheese_window->webcam, cheese_window->photo_filename);
}
+}
+
+static void
+cheese_window_action_button_clicked_cb (GtkWidget *widget, CheeseWindow *cheese_window)
+{
+ char *str;
+
+ if (cheese_window->webcam_mode == WEBCAM_MODE_PHOTO)
+ {
+ cheese_countdown_start((CheeseCountdown *) cheese_window->countdown, cheese_window_countdown_cb, (gpointer) cheese_window);
+ gtk_notebook_set_current_page (GTK_NOTEBOOK(cheese_window->notebook_bar), 1);
+
+ gtk_widget_set_sensitive (cheese_window->take_picture, FALSE);
+ // FIXME: set menu inactive
+ }
else if (cheese_window->webcam_mode == WEBCAM_MODE_VIDEO)
{
if (!cheese_window->recording)
@@ -957,6 +978,7 @@
cheese_window->label_video = glade_xml_get_widget (gxml, "label_video");
cheese_window->main_vbox = glade_xml_get_widget (gxml, "main_vbox");
cheese_window->notebook = glade_xml_get_widget (gxml, "notebook");
+ cheese_window->notebook_bar = glade_xml_get_widget (gxml, "notebook_bar");
cheese_window->screen = glade_xml_get_widget (gxml, "video_screen");
cheese_window->take_picture = glade_xml_get_widget (gxml, "take_picture");
@@ -970,9 +992,7 @@
gtk_container_add (GTK_CONTAINER (cheese_window->thumb_scrollwindow), cheese_window->thumb_view);
char *gconf_effects;
- g_object_get (cheese_window->gconf,
- "gconf_prop_selected_effects", &gconf_effects,
- NULL);
+ g_object_get (cheese_window->gconf, "gconf_prop_selected_effects", &gconf_effects, NULL);
cheese_window->effect_frame = glade_xml_get_widget (gxml, "effect_frame");
cheese_window->effect_chooser = cheese_effect_chooser_new (gconf_effects);
gtk_container_add (GTK_CONTAINER (cheese_window->effect_frame), cheese_window->effect_chooser);
@@ -984,6 +1004,11 @@
gtk_container_add (GTK_CONTAINER (cheese_window->throbber_frame), cheese_window->throbber);
gtk_widget_show (cheese_window->throbber);
+ cheese_window->countdown_frame = glade_xml_get_widget (gxml, "countdown_frame");
+ cheese_window->countdown = cheese_countdown_new ();
+ gtk_container_add (GTK_CONTAINER (cheese_window->countdown_frame), cheese_window->countdown);
+ gtk_widget_show (cheese_window->countdown);
+
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (cheese_window->button_photo), TRUE);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (cheese_window->button_video), FALSE);
Modified: trunk/src/wscript_build
==============================================================================
--- trunk/src/wscript_build (original)
+++ trunk/src/wscript_build Mon Jan 14 14:28:40 2008
@@ -15,8 +15,8 @@
obj.includes='.'
obj.uselib='''GLIB GOBJECT GTK LIBGLADE GDK HAL
GSTREAMER GSTREAMER_PLUGINS_BASE
- GNOME_VFS CAIRO LIBGNOMEUI LIBEBOOK
- XXF86VM'''
+ GNOME_VFS CAIRO PANGOCAIRO LIBRSVG
+ LIBGNOMEUI LIBEBOOK XXF86VM'''
obj.target='cheese'
Modified: trunk/wscript
==============================================================================
--- trunk/wscript (original)
+++ trunk/wscript Mon Jan 14 14:28:40 2008
@@ -36,9 +36,11 @@
conf.check_pkg('gobject-2.0', destvar='GOBJECT', vnum='2.12.0', mandatory=True)
conf.check_pkg('glib-2.0', destvar='GLIB', vnum='2.12.1', mandatory=True)
conf.check_pkg('cairo', destvar='CAIRO', vnum='1.4.0', mandatory=True)
+ conf.check_pkg('pangocairo', destvar='PANGOCAIRO', vnum='1.18.0', mandatory=True)
conf.check_pkg('gdk-2.0', destvar='GDK', vnum='2.12.0', mandatory=True)
conf.check_pkg('gtk+-2.0', destvar='GTK', vnum='2.10.0', mandatory=True)
conf.check_pkg('libglade-2.0', destvar='LIBGLADE', vnum='2.0.0', mandatory=True)
+ conf.check_pkg('librsvg-2.0', destvar='LIBRSVG', vnum='2.18.0', mandatory=True)
conf.check_pkg('hal', destvar='HAL', vnum='0.5.0', mandatory=True)
conf.check_pkg('gstreamer-0.10', destvar='GSTREAMER', vnum='0.10.15', mandatory=True)
conf.check_pkg('gstreamer-plugins-base-0.10', destvar='GSTREAMER_PLUGINS_BASE', vnum='0.10.15', mandatory=True)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]