{"id":937,"date":"2009-07-20T13:32:46","date_gmt":"2009-07-20T12:32:46","guid":{"rendered":"http:\/\/flaven.fr\/?p=937"},"modified":"2013-09-26T06:13:04","modified_gmt":"2013-09-26T04:13:04","slug":"widget-apple-dashboard-introduction-a-la-creation-de-widget-sur-mac-os-x","status":"publish","type":"post","link":"https:\/\/flaven.fr\/2009\/07\/widget-apple-dashboard-introduction-a-la-creation-de-widget-sur-mac-os-x\/","title":{"rendered":"Widget Apple &#8211; Dashboard &#8211; Introduction \u00e0 la cr\u00e9ation de Widget sur Mac OS X"},"content":{"rendered":"<p><!-- Widget Apple - Dashboard - Introduction \u00e0 la cr\u00e9ation de Widget sur Mac OS X  --><br \/>\n<!--  Widget, Apple, Dashboard, Javascript, CSS, XHTML, Application --><br \/>\nSi vous faites de l&#8217;int\u00e9gration et que vous avez des notions de Javascript et de CSS, vous pouvez sans aucun doute vous en tirer dans la cr\u00e9ation de widget. Compte tenu de l&#8217;avenir prometteur qui s&#8217;ouvre \u00e0 ce type de mini-applications, ce pourrait \u00eatre un plus sur votre CV. <!--more-->Enfin, dites-vous bien que les pratiques pour la cr\u00e9ation d&#8217;un widget Apple sont tr\u00e8s similaires \u00e0 celles des autres plates-formes du march\u00e9 : Yahoo, Google&#8230; Pour ne citer que les principales plates-formes concurrentes. Un simple int\u00e9grateur avec des notions de d\u00e9veloppement peut faire d&#8217;un coup son entr\u00e9e sur le &#8220;bureau&#8221; gr\u00e2ce \u00e0 ses widgets. C&#8217;est la gloire et la fortune assur\u00e9es !<\/p>\n<p><b>Mais, au fait c&#8217;est quoi un widget !?<\/b><\/p>\n<h2>Qu&#8217;est-ce qu&#8217;un &#8220;widget&#8221; ?<\/h2>\n<p>Pour Apple, si on s&#8217;en tient \u00e0 la &#8220;baseline&#8221; du site en fran\u00e7ais, on aura une id\u00e9e concr\u00e8te ce que c&#8217;est ! pas vraiment la peine de chercher plus loin&#8230;<\/p>\n<blockquote><p>\n\tDes mini-applications astucieuses pour Mac OS X<br \/>\nSource : <a href=\"http:\/\/www.apple.com\/fr\/downloads\/dashboard\" target=\"_blank\">http:\/\/www.apple.com\/fr\/downloads\/dashboard<\/a>\n<\/p><\/blockquote>\n<p><i>Pour les amateurs de s\u00e9mantique, on pourra toujours se reporter \u00e0 la d\u00e9finition donn\u00e9e par Wikipedia.<br \/>\n<a href=\"http:\/\/fr.wikipedia.org\/wiki\/Widget\" target=\"_blank\">http:\/\/fr.wikipedia.org\/wiki\/Widget<\/a><\/i><\/p>\n<p><i>La version anglaise est moins didactique <code>Amazing widgets for your Mac OS X Dashboard<\/code><\/i><\/p>\n<p><b>Le dashboard ou tableau de bord<\/b><br \/>\nLe dashboard n&#8217;est rien d&#8217;autre que le tableau de bord de votre Mac. A titre d&#8217;exemple, ci-dessous le tableau de bord d&#8217;un utilisateur de mac, qui de toute \u00e9vidence est aussi un fan de ski ! Vous aurez donc compris que celui-ci peut-\u00eatre personnalis\u00e9 \u00e0 loisir \u00e0 l&#8217;aide des widgets de votre choix.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/07\/widget_apple_5.jpg\" alt=\"Widget Apple - Dashboard - Introduction \u00e0 la cr\u00e9ation de Widget sur Mac OS X\" width=\"500\" height=\"265\" \/><\/p>\n<h4>T\u00e9l\u00e9charger la derni\u00e8re version  de Xcode<\/h4>\n<p>Pour commencer \u00e0 d\u00e9velopper, il vous faut d&#8217;abord t\u00e9l\u00e9charger la plate-forme de d\u00e9veloppement mis \u00e0 votre disposition par Apple. Pour recevoir ce gros fichier, pas loin de 1Go, il vous faudra en plus d&#8217;une bonne connexion, un compte ADC (Apple Developer Connection), c&#8217;est GRATUIT. Toute la proc\u00e9dure se fait en ligne et se fait assez vite. Une fois pass\u00e9e l&#8217;inscription, vous pouvez proc\u00e9der imm\u00e9diatement au t\u00e9l\u00e9chargement de <code>xcode313_2736_developerdvd.dmg<\/code>.<\/p>\n<blockquote><p>\nTo download Xcode and access a range of development videos, log in with your ADC member Apple ID or register for a free ADC Online Membership.<\/p>\n<p>Source : <a href=\"http:\/\/developer.apple.com\/products\/membership\" target=\"_blank\">http:\/\/developer.apple.com\/products\/membership<\/a>\n<\/p><\/blockquote>\n<p><b>Une fois sur le page, <code>http:\/\/developer.apple.com\/mac\/<\/code> et muni de votre identifiant\/mot de passe ADC, vous pouvez t\u00e9l\u00e9charger la derni\u00e8re version de Xcode<\/b><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/07\/widget_apple_1.jpg\" alt=\"Widget Apple - Dashboard - Introduction \u00e0 la cr\u00e9ation de Widget sur Mac OS X\" width=\"500\" height=\"265\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/07\/widget_apple_2.jpg\" alt=\"Widget Apple - Dashboard - Introduction \u00e0 la cr\u00e9ation de Widget sur Mac OS X\" width=\"500\" height=\"265\" \/><\/p>\n<p><b>Se loguer gr\u00e2ce \u00e0 votre identifiant\/mot de passe ADC<\/b><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/07\/widget_apple_3.jpg\" alt=\"Widget Apple - Dashboard - Introduction \u00e0 la cr\u00e9ation de Widget sur Mac OS X\" width=\"500\" height=\"265\" \/><\/p>\n<p><b>T\u00e9l\u00e9charger <code>xcode313_2736_developerdvd.dmg<\/code>, c&#8217;est un gros fichier donc soyez patient !<\/b><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/07\/widget_apple_4.jpg\" alt=\"Widget Apple - Dashboard - Introduction \u00e0 la cr\u00e9ation de Widget sur Mac OS X\" width=\"500\" height=\"265\" \/><\/p>\n<h4>D\u00e9sinstaller un widget du Dashboard<\/h4>\n<p>Un <\/p>\n<p><b>Le signe <code><b>+<\/b><\/code><\/b> en bas \u00e0 gauche permet d&#8217;ouvrir le gestionnaire de widgets.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/07\/widget_apple_6.jpg\" alt=\"Widget Apple - Dashboard - Introduction \u00e0 la cr\u00e9ation de Widget sur Mac OS X\" width=\"500\" height=\"265\" \/><\/p>\n<p>D\u00e8s que le manager de widgets est ouvert, des croix apparaissent sur chacun des widgets de votre dashboard, il ne vous reste plus qu&#8217;\u00e0 fermer les widgets et de facto les supprimer de votre dashboard.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/07\/widget_apple_7.jpg\" alt=\"Widget Apple - Dashboard - Introduction \u00e0 la cr\u00e9ation de Widget sur Mac OS X\" width=\"500\" height=\"265\" \/><\/p>\n<p><em>Image d&#8217;imageshack.us et du site apple<\/em><\/p>\n<p><b>Mac OS X 10.4.2 or later: Installing and removing Dashboard widgets<\/b><br \/>\n<a href=\"http:\/\/support.apple.com\/kb\/HT2254\" target=\"_blank\">http:\/\/support.apple.com\/kb\/HT2254<\/a><\/p>\n<h2>Cr\u00e9er votre propre &#8220;widget&#8221; ?<\/h2>\n<p>Nous allons cr\u00e9er un widget qui va passer des valeurs en <code>$_GET<\/code> \u00e0 un fichier <code>index.php<\/code> qui fonctionne sur un site en local. L&#8217;adresse que nous allons utiliser est la suivante, voici un exemple de ce que le widget va appeler : <code>http:\/\/127.0.0.1\/widget_apple\/index.php?textField1=200&amp;horizontalSlider1=0.21739130434782608<\/code><\/p>\n<p>Pour m\u00e9moire, si vous souhaitez installer rapidement et simplement un site en local qui fonctionne avec le couple php-mysql, reportez-vous aux articles de ce blog :<\/p>\n<ul>\n<li><a href=\"http:\/\/social.hecube.net\/bruno\/2009\/04\/04\/installer-un-environnement-php-mysql-sur-mac\/\">Installer un environnement php-mysql sur Mac<\/a><\/li>\n<li><a href=\"http:\/\/social.hecube.net\/blog\/2009\/03\/14\/installer-facilement-php-mysql-sur-un-pc-avec-easyphp\/\">Installer un environnement php-mysql sous Windows<\/a><\/li>\n<\/ul>\n<h4>Le fichier <code>.php<\/code><\/h4>\n<p>Voil\u00e0 le code du fichier qui sera appel\u00e9 par notre widget. Un simple <code>echo<\/code> des valeurs pass\u00e9s en <code>$_GET<\/code>. <\/p>\n<pre lang=\"php\" escaped=\"true\">\r\n&lt;?php\r\n\r\n\r\n\/* Les valeurs vont \u00eatre envoy\u00e9es en $_GET \u00e0 votre fichier index.php *\/\r\n\/* http:\/\/127.0.0.1\/widget_apple\/index.php?textField1=200&amp;horizontalSlider1=0.21739130434782608 *\/\r\n\/*\r\n$textField1 = $_GET['textField1']; \r\n$horizontalSlider1 = $_GET['horizontalSlider1']; \r\n*\/\r\n\r\n\/* output the value textField1 *\/\r\necho ('&lt;h2&gt;textField1 =&gt; '.$_GET['textField1'].'&lt;\/h2&gt;');\r\n\r\n\/* output the value horizontalSlider1 *\/\r\necho ('&lt;h2&gt;horizontalSlider1 =&gt; '.$_GET['horizontalSlider1'].'&lt;\/h2&gt;');\r\n\r\n?&gt;\r\n<\/pre>\n<h4>Le projet <code>dashcube_W_a.dcproj<\/code><\/h4>\n<p>Le projet <code>dashcube_W_a.dcproj<\/code> comprend deux vues : frontend et backend.<\/p>\n<p><b>Une vue du frontend dans dashcode<\/b><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/07\/widget_apple_8.jpg\" alt=\"Widget Apple - Dashboard - Introduction \u00e0 la cr\u00e9ation de Widget sur Mac OS X\" width=\"500\" height=\"265\" \/><\/p>\n<p><b>Une vue du backend dans dashcode<\/b><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/07\/widget_apple_9.jpg\" alt=\"Widget Apple - Dashboard - Introduction \u00e0 la cr\u00e9ation de Widget sur Mac OS X\" width=\"500\" height=\"265\" \/><\/p>\n<h4>Le code source javascript du projet <code>dashcube_W_a.dcproj<\/code><\/h4>\n<p>C&#8217;est la dorsale de votre projet avec le fichier <code>http:\/\/127.0.0.1\/widget_apple\/index.php<\/code>, tout est contenu dans <code>main.js<\/code><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/07\/widget_apple_10.jpg\" alt=\"Widget Apple - Dashboard - Introduction \u00e0 la cr\u00e9ation de Widget sur Mac OS X\" width=\"500\" height=\"265\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/07\/widget_apple_11.jpg\" alt=\"Widget Apple - Dashboard - Introduction \u00e0 la cr\u00e9ation de Widget sur Mac OS X\" width=\"500\" height=\"265\" \/><\/p>\n<p><b>Le code de <code>main.js<\/code><\/b><\/p>\n<pre lang=\"javascript\" escaped=\"true\">\r\n\t\/* \r\n\t This file was generated by Dashcode.  \r\n\t You may edit this file to customize your widget or web page \r\n\t according to the license.txt file included in the project.\r\n\t *\/\r\n\r\n\t\/\/\r\n\t\/\/ Function: load()\r\n\t\/\/ Called by HTML body element's onload event when the widget is ready to start\r\n\t\/\/\r\n\tfunction load()\r\n\t{\r\n\t    dashcode.setupParts();\r\n\t}\r\n\r\n\t\/\/\r\n\t\/\/ Function: remove()\r\n\t\/\/ Called when the widget has been removed from the Dashboard\r\n\t\/\/\r\n\tfunction remove()\r\n\t{\r\n\t    \/\/ Stop any timers to prevent CPU usage\r\n\t    \/\/ Remove any preferences as needed\r\n\t    \/\/ widget.setPreferenceForKey(null, dashcode.createInstancePreferenceKey(\"your-key\"));\r\n\t}\r\n\r\n\t\/\/\r\n\t\/\/ Function: hide()\r\n\t\/\/ Called when the widget has been hidden\r\n\t\/\/\r\n\tfunction hide()\r\n\t{\r\n\t    \/\/ Stop any timers to prevent CPU usage\r\n\t}\r\n\r\n\t\/\/\r\n\t\/\/ Function: show()\r\n\t\/\/ Called when the widget has been shown\r\n\t\/\/\r\n\tfunction show()\r\n\t{\r\n\t    \/\/ Restart any timers that were stopped on hide\r\n\t}\r\n\r\n\t\/\/\r\n\t\/\/ Function: sync()\r\n\t\/\/ Called when the widget has been synchronized with .Mac\r\n\t\/\/\r\n\tfunction sync()\r\n\t{\r\n\t    \/\/ Retrieve any preference values that you need to be synchronized here\r\n\t    \/\/ Use this for an instance key's value:\r\n\t    \/\/ instancePreferenceValue = widget.preferenceForKey(null, dashcode.createInstancePreferenceKey(\"your-key\"));\r\n\t    \/\/\r\n\t    \/\/ Or this for global key's value:\r\n\t    \/\/ globalPreferenceValue = widget.preferenceForKey(null, \"your-key\");\r\n\t}\r\n\r\n\t\/\/\r\n\t\/\/ Function: showBack(event)\r\n\t\/\/ Called when the info button is clicked to show the back of the widget\r\n\t\/\/\r\n\t\/\/ event: onClick event from the info button\r\n\t\/\/\r\n\tfunction showBack(event)\r\n\t{\r\n\t    var front = document.getElementById(\"front\");\r\n\t    var back = document.getElementById(\"back\");\r\n\r\n\t    if (window.widget) {\r\n\t        widget.prepareForTransition(\"ToBack\");\r\n\t    }\r\n\r\n\t    front.style.display = \"none\";\r\n\t    back.style.display = \"block\";\r\n\r\n\t    if (window.widget) {\r\n\t        setTimeout('widget.performTransition();', 0);\r\n\t    }\r\n\t}\r\n\r\n\t\/\/\r\n\t\/\/ Function: showFront(event)\r\n\t\/\/ Called when the done button is clicked from the back of the widget\r\n\t\/\/\r\n\t\/\/ event: onClick event from the done button\r\n\t\/\/\r\n\tfunction showFront(event)\r\n\t{\r\n\t    var front = document.getElementById(\"front\");\r\n\t    var back = document.getElementById(\"back\");\r\n\r\n\t    if (window.widget) {\r\n\t        widget.prepareForTransition(\"ToFront\");\r\n\t    }\r\n\r\n\t    front.style.display=\"block\";\r\n\t    back.style.display=\"none\";\r\n\r\n\t    if (window.widget) {\r\n\t        setTimeout('widget.performTransition();', 0);\r\n\t    }\r\n\t}\r\n\r\n\tif (window.widget) {\r\n\t    widget.onremove = remove;\r\n\t    widget.onhide = hide;\r\n\t    widget.onshow = show;\r\n\t    widget.onsync = sync;\r\n\t}\r\n\r\n\t\/\/ testcode\r\n\tfunction showMypage(event) {\r\n\r\n\t    var websiteURL = document.getElementById(\"cfgValueWebsiteUrl\").value;\r\n\r\n\t    var textField1 = document.getElementById(\"textfield1\").value;\r\n\t    var horizontalSlider1 = document.getElementById(\"horizontalSlider1\").object.value;\r\n\t    var websiteURI = \"textField1=\"+textField1+\"&amp;\"+\"horizontalSlider1=\"+horizontalSlider1;\r\n\r\n\t    widget.openURL(websiteURL+\"?\"+websiteURI);\r\n\r\n\t} \/\/ EOF\r\n\r\n\t\r\n<\/pre>\n<h4>Configurer l&#8217;URL dans le backend de votre widget<\/h4>\n<p>Il faudra indiquer au widget vers quel fichier envoy\u00e9 les valeurs r\u00e9colt\u00e9es via votre widget. Nous l&#8217;indiquons par d\u00e9faut directement dans la backend.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/07\/widget_apple_12.jpg\" alt=\"Widget Apple - Dashboard - Introduction \u00e0 la cr\u00e9ation de Widget sur Mac OS X\" width=\"500\" height=\"265\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/07\/widget_apple_13.jpg\" alt=\"Widget Apple - Dashboard - Introduction \u00e0 la cr\u00e9ation de Widget sur Mac OS X\" width=\"500\" height=\"265\" \/><\/p>\n<p><b>Le rendu dans la navigateur<\/b><br \/>\nLes deux valeurs sont issus de ce qui a \u00e9t\u00e9 saisi dans le widget. le champs <code>textField1<\/code> affiche le chiffre 200 et le champs <code>horizontalSlider1<\/code> affiche la valeur num\u00e9rique qui est le r\u00e9sulat du d\u00e9placement du curseur.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/07\/widget_apple_14.jpg\" alt=\"Widget Apple - Dashboard - Introduction \u00e0 la cr\u00e9ation de Widget sur Mac OS X\" width=\"500\" height=\"265\" \/><\/p>\n<p><b>Conclusion :<\/b> L&#8217;\u00e9laboration d&#8217;un widget sur la plate-forme Apple est donc trivial. Il reste que votre widget peut devenir beaucoup plus sophistiqu\u00e9 que ce que nous venons de montrer.  Comme pour les applications d\u00e9velopp\u00e9es sous Flex, ce type d\u2019application est appeler \u00e0 se g\u00e9n\u00e9raliser Cf <a href=\"http:\/\/social.hecube.net\/blog\/2009\/07\/06\/flex-curl-et-twitter-creer-une-application-en-flex-interface-avec-twitter\/\">Flex , Curl et Twitter &#8211; cr\u00e9er une application en Flex interfac\u00e9 avec Twitter<\/a> . Il deviendra m\u00eame un facteur d\u00e9cisif pour rejoindre d\u00e9finitivement l&#8217;univers Mac et qui quitter \u00e0 jamais la plate-forme Windows, &#8220;hasta la vista baby&#8230;&#8221; si vous voyez ce que je veux dire. !<\/p>\n<h2>Pour aller plus loin<\/h2>\n<ul>\n<li>Le site de t\u00e9l\u00e9chargement de Apple Xcode 3<br \/>\n\tXcode 3 inclut &#8220;Xcode IDE, Dashcode, Instruments, Interface Builder and a suite of additional developer tools&#8221;.<br \/>\n\t<a href=\"http:\/\/developer.apple.com\/\" target=\"_blank\">http:\/\/developer.apple.com\/<\/a><\/li>\n<li>Des widgets pour le dashboard<br \/>\n\t\t&#8230;comme si il en pleuvait.<\/p>\n<p>\t\t<a href=\"http:\/\/www.apple.com\/downloads\/dashboard\/\" target=\"_blank\">http:\/\/www.apple.com\/downloads\/dashboard\/<\/a> (EN)<\/p>\n<p>\t\t<a href=\"http:\/\/www.apple.com\/fr\/downloads\/dashboard\/\" target=\"_blank\">http:\/\/www.apple.com\/fr\/downloads\/dashboard\/<\/a> (FR)<\/p>\n<\/li>\n<li>Leopard Sample Code: Apple Applications Dashboard<br \/>\n\t\t\t<a href=\"http:\/\/developer.apple.com\/samplecode\/AppleApplications\/idxDashboard-date\" target=\"_blank\">http:\/\/developer.apple.com\/samplecode\/AppleApplications\/idxDashboard-date<\/a>\n\t\t\t<\/li>\n<li>Apple Applications<br \/>\n\t\t\tTout sur les APIs de Apple<br \/>\n\t\t\t<a href=\"http:\/\/developer.apple.com\/documentation\/AppleApplications\/\" target=\"_blank\">http:\/\/developer.apple.com\/documentation\/AppleApplications\/<\/a>\n\t\t\t<\/li>\n<li>Developing Dashboard Widgets<br \/>\n\t\t\t\tUne pr\u00e9sentation rapide du Dashboard et des widgets, ce qu&#8217;il faut conna\u00eetre&#8230;<\/p>\n<p>\t\t\t\t<a href=\"http:\/\/developer.apple.com\/macosx\/dashboard\" target=\"_blank\">http:\/\/developer.apple.com\/macosx\/dashboard<\/a>\n\t\t\t\t<\/li>\n<li>Build a Dashboard Widget<br \/>\n\t\t\t\t\tUn excellent article de O&#8217;Reilly Media<br \/>\n\t\t\t\t\t<a href=\"http:\/\/linuxdevcenter.com\/pub\/a\/mac\/2005\/05\/06\/dashboard.html\" target=\"_blank\">http:\/\/linuxdevcenter.com\/pub\/a\/mac\/2005\/05\/06\/dashboard.html<\/a>\n\t\t\t\t\t<\/li>\n<li>How to make your own Dashboard Widget with Dashcode<br \/>\nComme son titre le mentionne, c&#8217;est pile poil le sujet qui nous int\u00e9resse.<br \/>\n<a href=\"http:\/\/www.downloadsquad.com\/2007\/01\/08\/how-to-make-your-own-dashboard-widget-with-dashcode\/\" target=\"_blank\">http:\/\/www.downloadsquad.com\/2007\/01\/08\/how-to-make-your-own-dashboard-widget-with-dashcode\/<\/a>\n\t\t\t\t\t\t<\/li>\n<li>Introduction to Dashboard Programming Topics<br \/>\n\t\t\t\t\t\tLe BA BA de la cr\u00e9ation de widget<br \/>\n\t\t\t\t\t\t<a href=\"http:\/\/developer.apple.com\/documentation\/AppleApplications\/Conceptual\/Dashboard_ProgTopics\/Introduction\/Introduction.html\" target=\"_blank\">http:\/\/developer.apple.com\/documentation\/AppleApplications\/Conceptual\/Dashboard_ProgTopics\/Introduction\/Introduction.html<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t<\/li>\n<\/ul>\n<h2>Vid\u00e9os<\/h2>\n<p>Un tutorial bien fait sur la cr\u00e9ation d&#8217;une &#8221; Xcode 3 Beep Application&#8221;<br \/>\n<!--YouTube Error: bad URL entered--><\/p>\n<p>Un des vid\u00e9os de la s\u00e9rie Mac vs PC,  sur vista justement&#8230;<br \/>\n<!--YouTube Error: bad URL entered--><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Si vous faites de l&#8217;int\u00e9gration et que vous avez des notions de Javascript et de CSS, vous pouvez sans aucun doute vous en tirer dans&hellip; <\/p>\n<p class=\"text-center\"><a href=\"https:\/\/flaven.fr\/2009\/07\/widget-apple-dashboard-introduction-a-la-creation-de-widget-sur-mac-os-x\/\" class=\"more-link\">Continue reading &rarr; <span class=\"screen-reader-text\">Widget Apple &#8211; Dashboard &#8211; Introduction \u00e0 la cr\u00e9ation de Widget sur Mac OS X<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":9528,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"bf_ai_meta_description":"Cr\u00e9ation de Widget Apple: ma\u00eetrisez Javascript et CSS pour concevoir des mini-applications. Int\u00e9grez des widgets sur Mac OS X et boostez votre CV.","bf_ai_og_title":"Widget Apple \u2013 Dashboard","footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[3442,3444,3448,3449,3451],"tags":[223,163,209,224,226,189,212],"class_list":["post-937","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mobile-devices","category-programming-databases","category-tools-productivity","category-tutorials-how-to","category-web-design-front-end","tag-apple","tag-application","tag-css","tag-dashboard","tag-javascript","tag-widget","tag-xhtml"],"jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p3Vuhl-f7","jetpack_featured_media_url":"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/07\/widget_apple_b_3_2_g_bf.jpg","_links":{"self":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts\/937","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/comments?post=937"}],"version-history":[{"count":1,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts\/937\/revisions"}],"predecessor-version":[{"id":9529,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts\/937\/revisions\/9529"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/media\/9528"}],"wp:attachment":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/media?parent=937"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/categories?post=937"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/tags?post=937"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}