Building an Internet Radio on the Freescale I MX31PDK With

Total Page:16

File Type:pdf, Size:1020Kb

Building an Internet Radio on the Freescale I MX31PDK With Building an Internet Radio on the Freescale i. MX31PDK with LinuxLink 303.0 Webinar Series Session 2 Building a custom internet radio GUI on GTK+ with Glade for the i.MX31PDK We will start our webinar in few minutes. Thank you for your patience www.timesys.com ©2009 TimeSys Corp. 2 Series Overview Session 1 – recorded, available on the website Assembling a small footprint Linux platform for the i.MX31PDK https://linuxlink.timesys.com/dev_center/freescaleimx31_user Session 2 – today Building a custom internet radio GUI on GTK+ with Glade for the i.MX31PDK Session 3 – March 30, 2009 11.30am EST Adding audio codecs and a wireless technologies i.e. WIFI subsystem on the i.MX31PDK Session 4 – April 13, 2009 11.30am EST System debugging and testing with the i.MX31PDK www.timesys.com ©2009 TimeSys Corp. 3 Agenda – Session 2 Recap of what we have done so far Install Glade development tools on the host Develop a simple InternetRadio GUI • Create 2 panel application • Generate Code • Test Locally Add code to launch a playb ack applicati on i.e. MMlplayer and a Browse application i.e. Midori Implement application requirements • Add needed features to the RFS • Reconfigure Linux kernel www.timesys.com ©2009 TimeSys Corp. What we have accomplished 4 Built a starting point with Online Factory • Experiment on day one with a pre-built starting point Modified Linux kernel using desktop tools • Optimized for footprint • OiidOptimized for fast boot Altered root filesystem • Removed unneeded startup scripts Deployed the system on target’s NAND flash • Transferred and flashed images via TFTP • Configured bootloader for autoboot www.timesys.com ©2009 TimeSys Corp. Glade tools 5 Installation • Fedora Ubuntu yum install glade2 apt-cache search glade2 apt-get install [pkg1, pkg2, …] Run # glade-2 www.timesys.com ©2009 TimeSys Corp. Application 6 Create the following components Remember to define meaningful names • Variables • Callback functions NOTE: Do not modifyyy files that say “DO NOT EDIT THIS FILE – it is generated by Glade” until you are ready to customize. Keep modifications in separate files. www.timesys.com ©2009 TimeSys Corp. Application 7 Compilation • Host (initial GUI testing) #sh autogen.sh #make • Target (Cross-Compiled) #expor t PATH=<pa th to your too lhilchain>:$PATH #cross_configure #cross_make NOTE: In both cases binaries will be created in the src subdirectory Define/implement functions for • Callback functions for all buttons • init_list() – to initialize lists • add_to_list() – adding individual items • populate_favorites_list() – fill the favorites list with stations • start__pymplayer() – multimedia ppylayer • start_web_browser() www.timesys.com ©2009 TimeSys Corp. Platform adjustments 8 Linux kernel • Reconfigure the Linux kernel – Enable verbose output (printk) – Enable frame buffer, audio and other multimedia options Root filesystem • Add the following packages to the RFS definition – Multimedia: alsa-utils libtheora libXcursor Application: fbset lib555 • bash font-alias matchbox-keyboard • bzip2 • dbus-glib font-bitstream-75dpi matchbox-panel matchbox-theme-sato font-cursor-misc matchbox-window-manager-2 Development: font-micro-misc midori • libpthread-stubs font-misc-misc MPlayer package vorbis-tools libglade Networking: WebKit • openssh libgpelaunch xinit libgpewidget xorg-server www.timesys.com ©2009 TimeSys Corp. Browsing the kernel sources 9 GIT is … part of the update service • Git is an open source, distributed version control system currently used by a number of projects including: – Kernel.org – X.org – Perl – Android • Every Git clone is a full-fledged repository with complete history and full revision tracking capabilities • Branc hin g and mergin g are ftfast and easy to do Timesys GIT • Provides code for a number of Freescale i.MX platforms iildincluding: ¾ i.MX27 LITE ¾i.MX31 LITE ¾ i.MX27ADS ¾i.MX31 ADS ¾i.MX31 PDK https://linuxlink.timesys.com/git?repo=linux-2.6-mx.git READ more on the GIT update service here: https://linuxlink.timesys.com/docs/wiki/engineering/HOWTO_Use_git www.timesys.com ©2009 TimeSys Corp. Deployment 10 We’ll use TFTP service to transfer images to the target • Runs typically as xinetd process • Disa ble d when newly ins ta lle d. Mo dify /e tc/ x ine td.d/tft pd Flashing procedure RedBoot> fis erase –f 0x100000 –l 0xff00000 RedBoot> fis init RedBoot> ffifconfig >>fis load kernel; exec –c “noinitrd console=ttymxc0,115200 root=/dev/mtdblock2 rw rootfstype=jffs2” RedBoot> load –r –b 0x100000 zImage-mx31 RedBoot> fis create –f 0x100000 kernel RedBoot> load –r –b 0x100000 rootfs.jffs2 RedBoot> fis create –f 0x 600000 root RedBoot> reset www.timesys.com ©2009 TimeSys Corp. What we have accomplished 11 We have installed Glade tools for GUI development Deve lope d a simp le GUI base d applica tion with three major features: • Multimedia playback (ogg/vorbis) • Read RSS feeds (code to be added next time) • Internet Browsing (midori browser) Modified Linux kernel using desktop tools • Enable all needed for Internet Radio peripherals Altered root filesystem • Added packages needed for our Internet Radio application Deployed the system on target’s NAND flash • Transferred and flashed images via TFTP • Configured bootloader for autoboot www.timesys.com ©2009 TimeSys Corp. Next Time 12 Session #3 is scheduled for Monday, March 30th at 11.30am EST Subject: Adding audio codecs and a wireless technologies i.e . WIFI subsystem on the i.MX31PDK • Add XML reader for RSS feeds • Patch midori web browser to launch directly a playback application • Work with LTIB provided Linux kernel • Enable WIFI connectivity using onboard CSR chip • Add codec packages for additional media formats • Make our device autoboot into Internet Radio application www.timesys.com ©2009 TimeSys Corp. 13 How Do I Learn More? Go to www.timesys.com to learn more • Webinars • LinuxLink Radio Podcasts • Request a Free Factory Test Drive Schedule a more detailed introduction/training session • WebEx • Face-to-face www.timesys.com ©2009 TimeSys Corp..
Recommended publications
  • The Glib/GTK+ Development Platform
    The GLib/GTK+ Development Platform A Getting Started Guide Version 0.8 Sébastien Wilmet March 29, 2019 Contents 1 Introduction 3 1.1 License . 3 1.2 Financial Support . 3 1.3 Todo List for this Book and a Quick 2019 Update . 4 1.4 What is GLib and GTK+? . 4 1.5 The GNOME Desktop . 5 1.6 Prerequisites . 6 1.7 Why and When Using the C Language? . 7 1.7.1 Separate the Backend from the Frontend . 7 1.7.2 Other Aspects to Keep in Mind . 8 1.8 Learning Path . 9 1.9 The Development Environment . 10 1.10 Acknowledgments . 10 I GLib, the Core Library 11 2 GLib, the Core Library 12 2.1 Basics . 13 2.1.1 Type Definitions . 13 2.1.2 Frequently Used Macros . 13 2.1.3 Debugging Macros . 14 2.1.4 Memory . 16 2.1.5 String Handling . 18 2.2 Data Structures . 20 2.2.1 Lists . 20 2.2.2 Trees . 24 2.2.3 Hash Tables . 29 2.3 The Main Event Loop . 31 2.4 Other Features . 33 II Object-Oriented Programming in C 35 3 Semi-Object-Oriented Programming in C 37 3.1 Header Example . 37 3.1.1 Project Namespace . 37 3.1.2 Class Namespace . 39 3.1.3 Lowercase, Uppercase or CamelCase? . 39 3.1.4 Include Guard . 39 3.1.5 C++ Support . 39 1 3.1.6 #include . 39 3.1.7 Type Definition . 40 3.1.8 Object Constructor . 40 3.1.9 Object Destructor .
    [Show full text]
  • Fuzzing Project, Funded by Linux Foundation's Core Infrastructure Initiative
    FIX ALL THE BUGS AMERICAN FUZZY LOP AND ADDRESS SANITIZER Hanno Böck 1 INTRODUCTION Hanno Böck, freelance journalist and hacker. Writing for Golem.de and others. Author of monthly Bulletproof TLS Newsletter. Fuzzing Project, funded by Linux Foundation's Core Infrastructure Initiative. 2 BUG EXAMPLE (QT file src/plugins/platforminputcontexts/compose/qcomposeplatforminputcontext.cpp) 3 KDE / QT BUGS Use aer free in qmake Underflow / out of bounds read in QT / QCompose Out of bounds read in QtGui Out of bounds read in Kwin (last 2 not sure if I should blame Xorg/xcb API) 4 FOR FAIRNESS: GNOME #762417: Out of bounds read in glib / token parser #762483: Out of bounds read in glib / unicode parser #768441: Heap overflow in gnome-session parameter parsing #770027: Out of bounds read in pango / test suite 5 BUG EXAMPLE /* +2 for our new arguments, +1 for NULL */ new_argv = g_malloc (argc + 3 * sizeof (*argv)); (gnome-session 3.20.1, bug #768441) 6 ADDRESS SANITIZER (ASAN) All this bugs can be trivially found with Address Sanitizer. Just add -fsanitize=address to the compiler flags in GCC/CLANG. 7 FIND BUGS WITH ASAN ./configure CFLAGS="-fsanitize=address -g" \ CXXFLAGS="-fsanitize=address -g" \ LDFLAGS="-fsanitize=address" make make check 8 WHAT IS ASAN DOING? Shadow memory tracking which memory areas are valid. Finds out of bounds access (read/write) and use aer free bugs (and other less common issues). 9 OUT OF BOUNDS READ #include <stdio.h> int main() { int a[2] = {3,1}; int i = 2; printf("%i\n", a[i]); } 10 USE AFTER FREE #include <stdio.h> #include <stdlib.h> int main() { char *c = calloc(10,1); printf("%i\n", c[0]); free(c); printf("%i\n", c[1]); } 11 MISSION: TEST EVERYTING WITH ASAN Every project using C/C++ code should test with ASAN.
    [Show full text]
  • Learn Raspberry Pi with Linux
    For your convenience Apress has placed some of the front matter material after the index. Please use the Bookmarks and Contents at a Glance links to access them. Contents at a Glance About the Authors .............................................................................................................. xv About the Technical Reviewer .......................................................................................... xvii Acknowledgments ............................................................................................................. xix Introduction ....................................................................................................................... xxi ■ Chapter 1: Your First Bite of Raspberry Pi .........................................................................1 ■ Chapter 2: Surveying the Landscape ...............................................................................31 ■ Chapter 3: Getting Comfortable .......................................................................................53 ■ Chapter 4: The File-Paths to Success ..............................................................................69 ■ Chapter 5: Essential Commands ......................................................................................89 ■ Chapter 6: Editing Files on the Command Line ..............................................................109 ■ Chapter 7: Managing Your Pi .........................................................................................129 ■ Chapter 8: A
    [Show full text]
  • Gtk2-Perl: an Introduction
    Gtk2-Perl: An Introduction Gtk2-Perl: An Introduction Or How I Learned to Stop Worrying and Make Things Pretty Scott Paul Robertson http://spr.mahonri5.net [email protected] May 9, 2007 Gtk2-Perl: An Introduction Background What is Gtk2-Perl? Gtk2-Perl is the set of Perl bindings for Gtk2, and related libraries1. These allow you to code Gtk2 and Gnome applications in Perl. Gtk2-Perl is fairly easy to get started using, but has a few hang ups that can be difficult to discover, or sometimes the documentation is just not there. The developers are aware of the issue, and encourage users to provide documentation, reference guides, or tutorials. 1Glade, Glib, etc Gtk2-Perl: An Introduction Background Online Documentation There are a few major online sources for Gtk2-Perl documentation: ◮ Gtk2-Perl Tutorial - The offical tutorial. ◮ Gtk2-Perl Study Guide - Another excellent tutorial/reference ◮ Introduction to GUI Programming with Gtk2-Perl - As it says, it’s a good introduction to gui programming in general. ◮ Gtk2-Perl Pod Documentation - You might have these as man pages as well, very helpful. Gtk2-Perl: An Introduction Basic Application A Simple Window We’ll start with an example of a simple single button application. First we have to initalize Gtk2: #!/usr/bin/perl -w use strict; use Gtk2 ’-init’; use readonly TRUE => 1; use readonly FALSE => 0; ◮ The ’-init’ prepares the Gtk2 environment, otherwise we would have to do it ourselves later. ◮ Defining the constants is very helpful for code readability later. Gtk2-Perl: An Introduction Basic Application A Simple Window Now we set up the window object and a button.
    [Show full text]
  • Clutter Version 1.10.0, Updated 9 May 2012
    Guile-GNOME: Clutter version 1.10.0, updated 9 May 2012 Matthew Allum and OpenedHand LTD Intel Corporation This manual is for (gnome clutter) (version 1.10.0, updated 9 May 2012) Copyright 2006,2007,2008 OpenedHand LTD Copyright 2009,2010,2011,2012 Intel Corporation Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. You may obtain a copy of the GNU Free Documentation License from the Free Software Foundation by visiting their Web site or by writing to: The Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA i Short Contents 1 Overview :::::::::::::::::::::::::::::::::::::::::::: 1 2 ClutterAction :::::::::::::::::::::::::::::::::::::::: 2 3 ClutterActorMeta ::::::::::::::::::::::::::::::::::::: 3 4 ClutterActor ::::::::::::::::::::::::::::::::::::::::: 5 5 ClutterAlignConstraint:::::::::::::::::::::::::::::::: 63 6 ClutterAlpha :::::::::::::::::::::::::::::::::::::::: 65 7 ClutterAnimatable ::::::::::::::::::::::::::::::::::: 68 8 Implicit Animations :::::::::::::::::::::::::::::::::: 69 9 ClutterAnimator ::::::::::::::::::::::::::::::::::::: 76 10 ClutterBackend :::::::::::::::::::::::::::::::::::::: 82 11 ClutterBinLayout :::::::::::::::::::::::::::::::::::: 84 12 ClutterBindConstraint :::::::::::::::::::::::::::::::: 87 13 Key Bindings:::::::::::::::::::::::::::::::::::::::: 90
    [Show full text]
  • Geanypy Documentation Release 1.0
    GeanyPy Documentation Release 1.0 Matthew Brush <[email protected]> February 17, 2017 Contents 1 Introduction 3 2 Installation 5 2.1 Getting the Source............................................5 2.2 Dependencies and where to get them..................................5 2.3 And finally ... installing GeanyPy....................................7 3 Getting Started 9 3.1 What the heck is GeanyPy, really?....................................9 3.2 Python Console..............................................9 3.3 Future Plans............................................... 10 4 Writing a Plugin - Quick Start Guide 11 4.1 The Plugin Interface........................................... 11 4.2 Real-world Example........................................... 12 4.3 Logging.................................................. 13 5 API Documentation 15 5.1 The app module............................................. 15 5.2 The dialogs module.......................................... 16 5.3 The document module......................................... 17 5.4 The geany package and module.................................... 19 6 Indices and tables 21 Python Module Index 23 i ii GeanyPy Documentation, Release 1.0 Contents: Contents 1 GeanyPy Documentation, Release 1.0 2 Contents CHAPTER 1 Introduction GeanyPy allows people to write their Geany plugins in Python making authoring a plugin much more accessible to non C programmers. What follows is a description of installing and using the GeanyPy plugin, paving the way for the rest of the documentation to covert the details of programming with the GeanyPy bindings of the Geany API. 3 GeanyPy Documentation, Release 1.0 4 Chapter 1. Introduction CHAPTER 2 Installation Currently there are no binary packages available for installing GeanyPy so it must be installed from source. The following instructions will describe how to do this. Getting the Source The best way currently to get GeanyPy is to check it out from it’s repository on GitHub.com.
    [Show full text]
  • Debian and Ubuntu
    Debian and Ubuntu Lucas Nussbaum lucas@{debian.org,ubuntu.com} lucas@{debian.org,ubuntu.com} Debian and Ubuntu 1 / 28 Why I am qualified to give this talk Debian Developer and Ubuntu Developer since 2006 Involved in improving collaboration between both projects Developed/Initiated : Multidistrotools, ubuntu usertag on the BTS, improvements to the merge process, Ubuntu box on the PTS, Ubuntu column on DDPO, . Attended Debconf and UDS Friends in both communities lucas@{debian.org,ubuntu.com} Debian and Ubuntu 2 / 28 What’s in this talk ? Ubuntu development process, and how it relates to Debian Discussion of the current state of affairs "OK, what should we do now ?" lucas@{debian.org,ubuntu.com} Debian and Ubuntu 3 / 28 The Ubuntu Development Process lucas@{debian.org,ubuntu.com} Debian and Ubuntu 4 / 28 Linux distributions 101 Take software developed by upstream projects Linux, X.org, GNOME, KDE, . Put it all nicely together Standardization / Integration Quality Assurance Support Get all the fame Ubuntu has one special upstream : Debian lucas@{debian.org,ubuntu.com} Debian and Ubuntu 5 / 28 Ubuntu’s upstreams Not that simple : changes required, sometimes Toolchain changes Bugfixes Integration (Launchpad) Newer releases Often not possible to do work in Debian first lucas@{debian.org,ubuntu.com} Debian and Ubuntu 6 / 28 Ubuntu Packages Workflow lucas@{debian.org,ubuntu.com} Debian and Ubuntu 7 / 28 Ubuntu Packages Workflow Ubuntu Karmic Excluding specific packages language-(support|pack)-*, kde-l10n-*, *ubuntu*, *launchpad* Missing 4% : Newer upstream
    [Show full text]
  • How to Run POSIX Apps in a Minimal Picoprocess Jon Howell, Bryan Parno, John R
    How to Run POSIX Apps in a Minimal Picoprocess Jon Howell, Bryan Parno, John R. Douceur Microsoft Research, Redmond, WA Abstract Libraries We envision a future where Web, mobile, and desktop Application Function # Examples applications are delivered as isolated, complete software Abiword word processor 63 Pango,Freetype stacks to a minimal, secure client host. This shift imbues Gimp raster graphics 55 Gtk,Gdk Gnucash personal finances 101 Gnome,Enchant app vendors with full autonomy to maintain their apps’ Gnumeric spreadsheet 54 Gtk,Gdk integrity. Achieving this goal requires shifting complex Hyperoid video game 6 svgalib behavior out of the client platform and into the vendors’ Inkscape vector drawing 96 Magick,Gnome isolated apps. We ported rich, interactive POSIX apps, Marble 3D globe 73 KDE, Qt such as Gimp and Inkscape, to a spartan host platform. Midori HTML/JS renderer 74 webkit We describe this effort in sufficient detail to support re- producibility. Table 1: A variety of rich, functional apps transplanted to run in a minimal native picoprocess. While these 1 Introduction apps are nearly fully functional, plugins that depend on fork() are not yet supported (§3.9). Numerous academic systems [5, 11, 13, 15, 19, 22, 25–28, 31] and deployed systems [1–3, 23] have started pushing towards a world in which Web, mobile, and multaneously [16]. It pushes the minimal client host in- desktop applications are strongly isolated by the client terface to an extreme, proposing a client host without kernel. A common theme in this work is that guarantee- TCP, a file system or even storage, and with a UI con- ing strong isolation requires simplifying the client, since strained to simple pixel blitting (i.e., copying pixel arrays complexity tends to breed vulnerability.
    [Show full text]
  • GTK Development Using Glade 3
    GTK Development Using Glade 3 GTK+ is a toolkit, or a collection of libraries, which developers can use to develop GUI applications for Linux, OSX, Windows, and any other platform on which GTK+ is available. Original Article by Micah Carrick Table of Contents Part 1 - Designing a User Interface Using Glade 3 ___________________________________________1 Quick Overview of GTK+ Concepts ______________________________________________________________1 Introduction to Glade3 _________________________________________________________________________3 Getting Familiar with the Glade Interface_______________________________________________________3 Manipulating Widget Properties________________________________________________________________5 Specifying Callback Functions for Signals _______________________________________________________6 Adding Widgets to the GtkWindow _____________________________________________________________9 How Packing Effects the Layout ______________________________________________________________ 13 Editing the Menu (or Toolbar) ________________________________________________________________ 15 Final Touches to the Main Window ___________________________________________________________ 18 Part 2 - Choosing a Programming Language for GT K+ Developm ent _____________ 19 Which is the BEST Language? ________________________________________________________________ 19 Language Choice Considerations _____________________________________________________________ 19 A Look at Python vs. C________________________________________________________________________
    [Show full text]
  • Replacing C Library Code with Rust
    Replacing C library code with Rust: What I learned with librsvg Federico Mena Quintero [email protected] GUADEC 2017 Manchester, UK What uses librsvg? GNOME platform and desktop: gtk+ indirectly through gdk-pixbuf thumbnailer via gdk-pixbuf eog gstreamer-plugins-bad What uses librsvg? Fine applications: gnome-games (gnome-chess, five-or-more, etc.) gimp gcompris claws-mail darktable What uses librsvg? Desktop environments mate-panel Evas / Enlightenment emacs-x11 What uses librsvg? Things you may not expect ImageMagick Wikipedia ← they have been awesome Long History ● First commit, Eazel, 2001 ● Experiment instead of building a DOM, stream in SVG by using libbxml2’s SAX parser ● Renderer used libart ● Gill → Sodipodi → Inkscape ● Librsvg was being written while the SVG spec was being written ● Ported to Cairo eventually – I’ll remove the last libart-ism any day now Federico takes over ● Librsvg was mostly unmaintained in 2015 ● Took over maintenance in February 2015 ● Started the Rust port in October 2016 Pain points: librsvg’s CVEs ● CVE-2011-3146 - invalid cast of RsvgNode type, crash ● CVE-2015-7557 - out-of-bounds heap read in list-of-points ● CVE-2015-7558 - Infinite loop / stack overflow from cyclic element references (thanks to Benjamin Otte for the epic fix) ● CVE-2016-4348 - NOT OUR PROBLEM - integer overflow when writing PNGs in Cairo (rowstride computation) ● CVE-2017-11464 - Division by zero in Gaussian blur code (my bad, sorry) ● Many non-CVEs found through fuzz testing and random SVGs on the net ● https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=librsvg
    [Show full text]
  • Upgrade Issues
    Upgrade issues Graph of new conflicts libsiloh5-0 libhdf5-lam-1.8.4 (x 3) xul-ext-dispmua (x 2) liboss4-salsa-asound2 (x 2) why sysklogd console-cyrillic (x 9) libxqilla-dev libxerces-c2-dev iceape xul-ext-adblock-plus gnat-4.4 pcscada-dbg Explanations of conflicts pcscada-dbg libpcscada2-dev gnat-4.6 gnat-4.4 Similar to gnat-4.4: libpolyorb1-dev libapq-postgresql1-dev adacontrol libxmlada3.2-dev libapq1-dev libaws-bin libtexttools2-dev libpolyorb-dbg libnarval1-dev libgnat-4.4-dbg libapq-dbg libncursesada1-dev libtemplates-parser11.5-dev asis-programs libgnadeodbc1-dev libalog-base-dbg liblog4ada1-dev libgnomeada2.14.2-dbg libgnomeada2.14.2-dev adabrowse libgnadecommon1-dev libgnatvsn4.4-dbg libgnatvsn4.4-dev libflorist2009-dev libopentoken2-dev libgnadesqlite3-1-dev libnarval-dbg libalog1-full-dev adacgi0 libalog0.3-base libasis2008-dbg libxmlezout1-dev libasis2008-dev libgnatvsn-dev libalog0.3-full libaws2.7-dev libgmpada2-dev libgtkada2.14.2-dbg libgtkada2.14.2-dev libasis2008 ghdl libgnatprj-dev gnat libgnatprj4.4-dbg libgnatprj4.4-dev libaunit1-dev libadasockets3-dev libalog1-base-dev libapq-postgresql-dbg libalog-full-dbg Weight: 5 Problematic packages: pcscada-dbg hostapd initscripts sysklogd Weight: 993 Problematic packages: hostapd | initscripts initscripts sysklogd Similar to initscripts: conglomerate libnet-akamai-perl erlang-base screenlets xlbiff plasma-widget-yawp-dbg fso-config- general gforge-mta-courier libnet-jifty-perl bind9 libplack-middleware-session-perl libmail-listdetector-perl masqmail libcomedi0 taxbird ukopp
    [Show full text]
  • Introduction to GTK+
    Introduction to GTK+ Ted Gould PLUG Developers Meeting August 4th, 2003 http:/ / gould.cx/ ted/ projects/ gtkintro/ Presentation Outline ● GTK+ and helper libraries ● Glib Object Model ● GTK+ Programming <break> ● GNOME Libraries ● References GTK+ Overview ● Developed to move The GIMP off of Motif ● Realized that C could be object oriented ● Created in C for compatibility (every modern language can load C libraries) ● Large number of bindings (Effiel, Java, Ruby...) ● GUI Interface designer: Glade ● License: LGPL ● Used in the GNOME project (and many others) Helping out GTK+ Pango Text Rendering Library ● Greek 'Pan' for 'All' and Japanese 'Go' for language ● Internationalized text rendering library – not actually GTK+ specific, but used by GTK+ ● Uses Unicode internally ● Focus on 'correct' rendering of anything ● Font system and toolkit independent ● For modern Linux uses XFT Accessibility Toolkit ● Hard to find documentation on :) ● Allows GTK (and other) programs to be used by screen readers, magnifiers, etc. ● Developed by the developers that built the accessibility for Java ● Required for many corporations (especially gov't) to use software GDK: Gimp Display Kit ● Library to perform the actual rendering to the display ● Abstracts out the display so that it can be X11 or Win32 or Cocoa or whatever ● Also provides some pixmap functions if you need those (not covered today) Glib C Utility Library ● Makes C 'easy to use' ● Provides much of the functionality that is replicated in many programs ● Has things like: memory allocation, linked
    [Show full text]