Gui toolkits

I'm trying to decide which toolkit to stick to and become proficient in. Though I'm sure it would be good to learn multiple toolkits, I rather to stick to just one. I'm debating between gtk and tk. No qt because I've yet to get a qt application working in windows, and right now I'm stuck mainly developing in windows with linux in mind. I'm programming in Ruby, so if you want to suggest an alternative to the 2 listed above please link me to the Ruby bindings for that toolkit .
I don't really care about skinability, I'd rather focus on functionality and performance rather than aesthetics.
Any insights into gtk or tk would be appreciated aswell.

wxWindows has support for any GUI toolkit, provided you have the software and configuration set up for it.
I personally just use plain ol' GTK. I like the way it's organized and I don't have to do a lot of thinking when I use it, I just plop some widgets down, set up some signals, and then look at my pretty interface that I constructed in less than an hour. Not many machines that run X don't have GTK installed either, so you don't have to worry about people downloading dependencies. It makes me happy

Similar Messages

  • Java GUI for a shell script

    I have a file with passwd format.I made a script for this file that is working as I wanted it to work.I have a list of options and each time I give an option,the script is doing something(for example,if I press "b" it makes something and if I press "a" it makes something else).All the results are an output from the file.
    My question is how can I create a GUI in java for this script.For example if I want the script to do what it would do if I pressed the "a" button on my keyboard,but not by pressing "a",but by choosing from a drop down list or some other graphical feature(by ticking a check box,clicking a button etc).Can I do this with java?
    Lazaros

    Hi,
    I understand you can create a Java Swing gui for a bash shell script which takes both complex input and writes output to the stdout & files, to be specific. Is that correct?
    If yes, could you give a simple example. Say for the following shell script.
    #!/bin/sh
    printf "Enter input\n"
    i=0
    while [ $i -ne 1 ]; do
    read $inputVar
    if [  "$inputVar" == "y" ]; then
    printf "You typed yes\n"
    i=1
    elif [  "$inputVar" == "y"  ]; then
    printf "you typed no\n"
    i=1
    else
    printf "Enter a valid character\n"
    i=0
    fi
    done
    Could you also point to some URL's which might help? Googling for "Java Gui for shell script" returns this as the first page, others dont really help. Googling "GUI for shell script" returns all other gui toolkits for xes but thats not what I want. I want a cross platform (nixes, Win*, MacOS* ) gui for a shell script ( which I plan to run using cygwin etc).
    TIA
    Vinod

  • Too many widget toolkits?

    Do we have too many widget toolkits (GTK, Qt, etc.)?
    In the context of the KISS principle (I like the pythonic interpretation - "There should be one[-- and preferably only one --]obvious way to do it" ), it might be violating the DRY rule and the abstraction principle. On the other hand, it's always good to have choice. Again, in the context of the KISS principle, another toolkit should not be created unless it is necessary. Sometimes too many choices leads to the choice paradox and information overload; we have too many choices for our own good, The answer, depends on what perspective you take...
    From the Linux enduser's point of view, they all output the same widgets for the most part (and the dev's viewpoint). The problem for the enduser is they are somewhat forced to choose one if they desire a consistent look. To make matters worse, if they choose one, they may miss out on a program because there is no corresponding GUI.
    From the developer's point of view is where the differences are more striking for reasons I'll mention. Qt is developed in C++ and GTK uses C (+GObjects). Qt is an entire application framework. GTK seems to be heading that way - tighter integration with the DE (or bloat...). This is where FLTK and FOX Toolkit come in. However, FLTK and Tk lack advanced widgets. wxWidgets focuses on native widgets. The cross-platform availabilty varies. Then there's freeglut, GNUstep, and so on. Finally, somewhat related, Ubuntu's Unity.
    Using their similarities, is there some way we can form a common abstraction layer/interface/framework?
    To kind of pull out the abstraction, leaving only the differences needing to be implemented. I think of the way we embrace Linux and the X Windowing System (Wayland is stirring things up) or are we not at that stage yet (no "obvious" solution)? There is the freedesktop organization but it seems limited to protocols. If not cross-platform, at least a common framework on Linux? Not one to rule them all, but one to lead them all.
    The underlying issue seems to be that the developers' needs are outweighing the endusers' needs. It's no surprise as UNIX/Linux was developed by developers for developers. Fortunately, as the Linux userbase grows, the enduser is taken more into consideration, like with Ubuntu and VALVE's rejection of Windows 8. It's like two devs arguing in a room over xyz is better, when the enduser walks in and makes the answer obvious, before they can go fork it. This idea of balancing out the endusers and developers' needs, could easily apply to other Linux issues, such as the Linux Desktop, the ever growing number of distributions, package managers, WM/DEs, etc. especially the WM/DEs which from the enduser's POV varies in terms of their integration with other software and services. If Linux was able to unite, it would dominate! Currently, FOSS/Linux's greatest strength is being used as it's biggest weakness If only it could turn fragmentation into modularity.
    I ask all of this because I may be potentially creating another toolkit, thereby altering the already crowded toolkit ecosystem, though it may be able to bring balance to the force...;)
    Last edited by KCE (2013-03-04 10:23:25)

    Awebb wrote:
    KCE wrote:Using their similarities, is there some way we can form a common abstraction layer/interface/framework?
    What is it to the end user, that makes working with different toolkits difficult? It is themes as well as component behavior. While I was never really troubled by the fact, that GTK and Qt do not respect each others settings (especially: "Text below/next to/instead of icons"), the most annoying thing about those toolkits is the lack of unified themes. I am aware of the fact, that the themes are not even a standardized thing inside one toolkit, as different themes use different engines.
    I would not mind if the following happened:
    1.1 One tool to configure them all. A script, that knows all about those toolkits, like position of config files and equivalent settings for the same phenotypes.
    1.2 Since we're all about -kits these days, I had a look at packagekit and was surprised about the pacman (or libalpm?) support. How about a toolkitkit?
    2. A common theme file type. Since most elements of such a theme package are descriptor files, it should not be too hard to interconnect the equivalent lines over the different toolkits. Qt, in fact, already does this, by being able to import the GTK settings. This could be another part of, err, toolkitkit.
    3. People should abandon toolkits, that are tied too closely to desktop environments. The number of times I read "change in GTK broke XYZ" over the past two years, for example, is alarming.
    I thought I mentioned it in the OP, but mainly getting a consistent look besides Qt/GTK, and the availability of programs.
    1. Packagekit, if only it supported the AUR, but I like the idea. That's another issue. It seems to me that the main differences among the package managers are 1) source vs binary 2) dependency handling 3) release cycle 4) configurability like make flags. And as a result, varying levels of repo size and program availability. I like pacman because you get the best of all features, although #2 for example, Slackware users would not agree with automatic dependency resolution.
    2. Getting the devs of each toolkit to support the others would take some convincing.
    3. I agree, although I see why they are tied to desktop environments - because endusers want that consistency. I think that's good but being implemented inefficiently, leading to bloat. Ofc, as you mention, the interdependency means when one thing breaks, everything breaks. What should be included, should be absolutely necessary, but needs are somewhat subjective. Like does the user need all those features? It's always a delicate balance. Linux's availability on so many platforms is a good example of this. Imagine if Xorg had been merged into the Kernel?
    Redundancy can be beneficial but in this case it's detrimental. All the toolkit devs are reimplementing the same thing over and over; you could say this about distros - reconfigurations of the same software - such small differences yet an entire distro must be created each time. If there were a more convenient way, wouldn't the person have done it? The purpose of toolkits was so that the developer did not have to manually draw the widgets and event handling etc. We solved that issue but now we have another issue..redundancy at the toolkit level.
    Trilby wrote:
    KCE wrote:I like the pythonic interpretation - "There should be one[-- and preferably only one --]obvious way to do it"
    It's even more simple to have zero.
    Toolkits serve a purpose when one wants a fancy gui.  But I am driven mad by all the programs that use a toolkit just to say they did when they have no clear need for them.  They serve only as a banner of support for one of the "brands": the K brand, or the G brand.  All the while Xlib would have done everything they needed just fine.
    The problem isn't reinventing the wheel, the problem is buying a shiny new sports car when all one really needs is a wheel.
    This reminds me of something I read, unfortunately I can't find it right now but it's like your ability to not use a GUI determines your hardcoreness lol. Geek culture...flex your intellectual muscle haha
    Well, if you were only going a short distance a wheel might suffice...lol
    drcouzelis wrote:
    Here are some of my thoughts:
    A couple years ago when I was ready to write my first GUI application, I was frustrated by all of the different and competing GUI toolkits. I decided I was going to use the native X GUI (I can't remember what it's called). Then I looked at the API, and decided to write a GUI application for the Haiku operating system instead. Also, the nice default Haiku API has pretty much been stable for, like, 15 years now.
    Using a high level toolkit, such as wxWidgets, that interacts with many different other toolkits is nice, but comes at the cost of only having the option to use the lowst common denominator. Any type of special widgets are kind of hard to make.
    I recently decided to stop worrying and love the different toolkits. I don't care about having more packages installed or that each application looks a little different, as long as it's well written and does what I want. Also, I think people used to complain that applications on Linux look less consistent than they do on Windows or Mac OS X. I think anyone who thinks that needs to take a step back and look again. All computers look like a mess!
    KCE wrote:I ask all of this because I may be potentially creating another toolkit, thereby altering the already crowded toolkit ecosystem
    BURN HIM!
    I agree about having all the different toolkits but there must be a more efficient way of implementing them - providing more consistency but allowing variation. Maybe I'm wrong...I think awebb had a good point about a common theme file, that'd be a small step in the right direction, but I guess GUIs are too independent.
    Last edited by KCE (2013-03-04 23:43:51)

  • User moves mouse out of dial while turning it

    I have a user interface problem. I'm using dials to control scrolling and zooming in a graph. But it's very easy, as a user, to click in the dial and start dragging to turn it, but end up outside the dial. And then the dial never gets the Mouse Up event. I consider this a real oversight in the GUI toolkit design; most GUI toolkits always give a mouse-up to the object that got the mouse-down, regardless of where the mouse may be when the button is lifted.
    But I'm stuck with what I've got. Has anyone found a nice way of dealing with this problem? Because sometimes scrolling the graph means loading new data from a file, and that is way too time-consuming to do dynamically every time I get a Mouse Move event.
    Ken

    See the attached - as Ravens Fan says, the pane mouse-up event can be your friend.
    I set a flag in the value change event to indicate when new values are arriving, but do no processing. When the mouse is released, the new value is displayed, but only if the new data flag is true. This means that the relevant code is executed regardless of where the user ends up with the mouse and only if they have changed the dial.
    Attachments:
    dial-mouse up event.vi ‏16 KB

  • [WP8.1][C#]Interacting with web pages in WinRT

    I'm writing a Windows Phone 8.1 application. How would I programmatically interact with web pages- for example, search something on Google?
    The main problem seems to be, I can't access the underlying HTML document of the WebView control.
    What I have tried so far:
    using HtmlAgilityPack (only supports parsing, can't interact)
    trying to get underlying document w/ reflection (limited WinRT reflection APIs)
    looking into other cross-platform GUI toolkits, such as Qt# (also do not provide access to document object)

    Hi James.Ko,
    To help clarify your post and let people easily tell what it is about, please use a clear and concise subject and include applicable tags.
    We will help to modify the title tag base on this sticky post
    or you can modify it by yourself(recommended), and thanks for your cooperation.
    Before trying to answer your question, I would recommend you a blog:
    http://blogs.msdn.com/b/wsdevsol/archive/2014/04/03/ten-things-you-need-to-know-about-webview-_2d00_-an-update-for-windows-8.1.aspx
    You should be able to know how to invoke script into the pages and also how to get the return value. By the way, not quite understand what do you mean by underlying HTML document, means the HTML code?
    --James
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click
    HERE to participate the survey.

  • Goggles Music Manager

    Website: https://gogglesmm.github.io
    The Feature List:
        * Last-FM audio scrobbler support. (New in v0.9.4)
        * Fast and light weight. Quick startup, no splash screen needed!
        * Supports Ogg Vorbis , FLAC, MP3 , MP4 , ASF and Musepack music files.
        * Tag editing and file renaming capability (batch). One or more tracks may be edited at the same time.
        * Smart sorting with user configurable leading word filter to prevent sorting on common words like the, a or an.
        * Support for play lists. Play lists may be played in a certain configurable order, or browsed through like the main music library.
        * Export music library and play lists to XSPF,PLS,Extended M3U,M3U and CSV.
        * Clipboard & DND (drag-and-drop) support to arrange playlists and dragging to and from gnome / kde applications.
        * Uses xine multimedia library for gapless playback.
        * Written using FOX, one of the fastest GUI toolkits available. Support for FOX-1.6.x and the latest development version FOX-1.7.x.
        * Customizable icons. Either use buildin icons or use an existing gnome/kde icon theme.
        * Configurable user interface from minimalistic to detailed view. Full screen mode available with FOX-1.7.11.
        * Clean and fast database backend using SQLite 3.
    Goggles Music Manager is available in the community repository  (32 and 64 bit). A simple
    pacman -S gogglesmm
    should download and install it. Once installed you can start it from the command line using:
    gogglesmm
    Goggles Music Manager is fairly light on resources and quick to start up. Try it out. If you have feature requests, questions or other comments, leave a comment here, or leave bug report on the website
    Last edited by GogglesGuy (2014-09-19 19:50:51)

    GogglesGuy wrote:
    Goggles Music Manager v0.9.11 is out with the following improvements:
      - Support embedded cover art in flac files (jpg and png only).
      - Support last-fm 'now playing' notification.
      - Use "ALBUMARTIST" tag in Ogg / FLAC files and TPE2 for id3v2 tags for artist.[Tag reading only]
      - Support album art in notification to notify-daemon.[D-Bus enabled version only]
      - DBus enabled version now also support the ability to control a running gmm from the command line.
    It's still using FOX and still as ugly as some people think it is
    Nevertheless, it still beats the new Banshee regarding memory use and performance
    Thank you very much for the ALBUMARTIST tag...
    You should know tho, that the TPE2 tag has been misused... its only used by itunes and windows media player and some others. The problem: TPE2 tag was originally created for BAND/ORCHESTRA informations, which has nothing to do with ALBUMARTIST...
    An alternative would be a user-chosen tag for the albumartist. Ogg/flac/mpc can do this anyway. and id3v2 has the TXXX tag for that matter.
    Also do you think you will add some kind of playlist at some point? would be nice, if one could queue songs from different albums... (probably even multiple playlists as in tabs?) (Think like: mark songs: Send to playlist -> blabla)
    Regarding the FOX toolkit: i dont mind. Its VERY fast, which is a nice thing. Of course it would be nice if it integrated better with gtk and/or qt, but none of those 2 can match the speed of FOX.
    P.S.: Any news on the replaygain tag info reading?
    Some info: http://wiki.hydrogenaudio.org/index.php … Replaygain
    just make sure to support the tag based approach of mp3gain too... because mp3gain has both options -  modifying the actual audio data and writing tags.
    P.P.S: Another thing i want to suggest is some kind of plugin architecture... not sure if you designed gmm in a way that makes this possible. But if the possibility is there gmm is actually VERY close to foobar2000, which is a real compliment by the way
    Last edited by Rasi (2008-06-12 09:25:50)

  • Can I develop plug-in using cocoa as UI instead of ADM?

    I'm just about to start developing illustrator on mac.
    Is it possible to use cocoa framework to design the UI instead of ADM?
    Then my plug-in code will be mixed with C++ code and objective C++ code. I don't see this from the sample code, can anyone tell me whether it is possible?
    Thanks,

    I can't say for sure, but since I know from experience it's possible to mix in other GUI toolkits, I don't see why not. You won't be able to use anything but the ADM for palettes, but for just dialogs that pop up? I can't think of a reason why not.
    It'll be your headache to parent them appropriately though. AI provides a way to get the root window for the application, but you may have to do some work to find the appropriate child of that window to use as the parent for your dialogs.

  • Xlsh - eXtended Login Shell

    Hello!
    I'm new to Arch bbs, though I've been using Arch for quite some time now. So well... hi everyone!
    Recently I wrote a small program for myself and I feel that more people could benefit from it - so I'm sharing.
    xlsh is a simple login shell with readline functionality and PAM integration.
    When run stand-alone on a virtual console it can replace the standard "login" program.
    When run in cooperation with X daemon component (xlshd) it can replace XDM/GDM/KDM.
    Features:
    Small and simple, written entirely in C.
    Easily hackable because of compact codebase (~1000 source lines).
    Uses PAM for authorization and session management.
    Ability to select non-default shell/window manager during logon.
    Entirely keyboard driven display manager replacement (when used with xlshd) without the need for any fat libraries or GUI toolkits.
    Defaults configured before compilation, some of them can be changed by setting few environment variables.
    Single shell script file (/etc/xlsh/xlshrc) for customizing how xlshd launches xlsh.
    Introduces a concept of "pre-login shell" known from GNU/HURD.
    Only three important commands: 'login', 'reboot' and 'shutdown'.
    New commands can be easily added (if you need any) by editing xlsh.c
    Username autocompletion on TAB.
    Zenburn color scheme by default (when run under X).
    So that's it. I grew tired of xdm/gdm/kdm so I rolled out my own solution. I currently run it on all my ttys and as X login manager. Shell-like keyboard only interaction is very comfortable and simple Zenburn colorscheme fits very well into my Awesome WM look & feel (which is also Zenburn).
    AUR package (xlsh-git): http://aur.archlinux.org/packages.php?ID=53520
    Source code: https://github.com/Nadrin/xlsh
    Project wiki: https://github.com/Nadrin/xlsh/wiki
    Screenshot: https://github.com/Nadrin/xlsh/wiki/Screenshots
    Let me know if you find it useful. Bug reports, suggestions and any other form of constructive criticism is very much welcome!

    env (xlsh)
    LCLIMPORTDIR=/usr/share/splint/imports
    XDG_DATA_HOME=/home/irtigor/.local/share
    TERM=rxvt-unicode-256color
    SHELL=/bin/zsh
    XDG_SESSION_COOKIE=8c19aa75e1df23394088ae2f00001baa-1320498024.774424-1546763611
    GTK2_RC_FILES=/home/irtigor/.gtkrc-2.0
    LC_NUMERIC=
    ANT_HOME=/usr/share/java/apache-ant
    USER=irtigor
    LARCH_PATH=/usr/share/splint/lib
    MOZ_PLUGIN_PATH=/usr/lib/mozilla/plugins
    XDG_CONFIG_DIRS=/etc/xdg:/etc/xdg
    PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/share/java/apache-ant/bin:/usr/bin/vendor_perl:/usr/bin/core_perl:/home/irtigor/.rvm/bin
    LC_MESSAGES=
    HG=/usr/bin/hg
    _=/usr/bin/env
    LC_COLLATE=
    PWD=/home/irtigor
    JAVA_HOME=/usr/lib/jvm/java-6-openjdk
    LANG=en_US.UTF-8
    SHLVL=3
    HOME=/home/irtigor
    XDG_CONFIG_HOME=/home/irtigor/.config
    XDG_CACHE_HOME=/home/irtigor/.cache
    LOGNAME=irtigor
    DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-JT1g91p7nx,guid=9befacf8c90efc2782fc6ccf0000001c
    XDG_DATA_DIRS=/usr/share/:/usr/local/share/:/usr/share/:/usr/local/share/
    J2SDKDIR=/usr/lib/jvm/java-6-openjdk
    LC_CTYPE=en_US.UTF-8
    DISPLAY=:0
    J2REDIR=/usr/lib/jvm/java-6-openjdk/jre
    LC_TIME=
    G_BROKEN_FILENAMES=1
    WINDOWID=10485770
    COLORFGBG=default;default;0
    TERMINFO=/usr/share/terminfo
    COLORTERM=yes
    OLDPWD=/home/irtigor
    AUTOJUMP_DATA_DIR=/home/irtigor/.local/share/autojump
    EDITOR=vim
    PAGER=less
    MAIL=/var/mail/irtigor
    LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:
    LESS_TERMCAP_mb=[01;31m
    LESS_TERMCAP_md=[01;31m
    LESS_TERMCAP_me=[0m
    LESS_TERMCAP_se=[0m
    LESS_TERMCAP_so=[01;44;33m
    LESS_TERMCAP_ue=[0m
    LESS_TERMCAP_us=[01;32m
    BROWSER=firefox
    DISABLE_AUTO_UPDATE=true
    GREP_OPTIONS=--color=auto
    GREP_COLOR=1;32
    LSCOLORS=Gxfxcxdxbxegedabagacad
    ck-list-sessions (xlsh)
    Session1:
    unix-user = '1000'
    realname = '(null)'
    seat = 'Seat2'
    session-type = ''
    active = FALSE
    x11-display = ':0'
    x11-display-device = '/dev/tty3'
    display-device = ''
    remote-host-name = ''
    is-local = FALSE
    on-since = '2011-11-05T12:39:44.074206Z'
    login-session-id = '4294967295'
    env (slim)
    LCLIMPORTDIR=/usr/share/splint/imports
    XDG_DATA_HOME=/home/irtigor/.local/share
    SHELL=/bin/zsh
    TERM=rxvt-unicode-256color
    XDG_SESSION_COOKIE=8c19aa75e1df23394088ae2f00001baa-1320498147.998816-1602302550
    GTK2_RC_FILES=/home/irtigor/.gtkrc-2.0
    LC_NUMERIC=
    ANT_HOME=/usr/share/java/apache-ant
    USER=irtigor
    LARCH_PATH=/usr/share/splint/lib
    MOZ_PLUGIN_PATH=/usr/lib/mozilla/plugins
    XDG_CONFIG_DIRS=/etc/xdg:/etc/xdg
    MAIL=/var/mail/irtigor
    PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/share/java/apache-ant/bin:/usr/bin/vendor_perl:/usr/bin/core_perl:/home/irtigor/.rvm/bin
    LC_MESSAGES=
    HG=/usr/bin/hg
    _=/usr/bin/env
    LC_COLLATE=
    PWD=/home/irtigor
    JAVA_HOME=/usr/lib/jvm/java-6-openjdk
    EDITOR=vim
    LANG=en_US.UTF-8
    SHLVL=2
    HOME=/home/irtigor
    XDG_CONFIG_HOME=/home/irtigor/.config
    XDG_CACHE_HOME=/home/irtigor/.cache
    LOGNAME=irtigor
    DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-Ya5luICcfh,guid=74c155d555aa8c9aa358c87100000014
    XDG_DATA_DIRS=/usr/share/:/usr/local/share/:/usr/share/:/usr/local/share/
    J2SDKDIR=/usr/lib/jvm/java-6-openjdk
    LC_CTYPE=en_US.UTF-8
    DISPLAY=:0.0
    J2REDIR=/usr/lib/jvm/java-6-openjdk/jre
    LC_TIME=
    G_BROKEN_FILENAMES=1
    XAUTHORITY=/home/irtigor/.Xauthority
    WINDOWID=12582922
    COLORFGBG=default;default;0
    TERMINFO=/usr/share/terminfo
    COLORTERM=yes
    OLDPWD=/home/irtigor
    AUTOJUMP_DATA_DIR=/home/irtigor/.local/share/autojump
    PAGER=less
    LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:
    LESS_TERMCAP_mb=[01;31m
    LESS_TERMCAP_md=[01;31m
    LESS_TERMCAP_me=[0m
    LESS_TERMCAP_se=[0m
    LESS_TERMCAP_so=[01;44;33m
    LESS_TERMCAP_ue=[0m
    LESS_TERMCAP_us=[01;32m
    BROWSER=firefox
    DISABLE_AUTO_UPDATE=true
    GREP_OPTIONS=--color=auto
    GREP_COLOR=1;32
    LSCOLORS=Gxfxcxdxbxegedabagacad
    ck-list-sessions (slim)
    Session2:
    unix-user = '1000'
    realname = '(null)'
    seat = 'Seat1'
    session-type = ''
    active = TRUE
    x11-display = ':0.0'
    x11-display-device = '/dev/tty3'
    display-device = ''
    remote-host-name = ''
    is-local = TRUE
    on-since = '2011-11-05T12:46:37.963456Z'
    login-session-id = '1'
    Session1:
    unix-user = '1000'
    realname = '(null)'
    seat = 'Seat2'
    session-type = ''
    active = FALSE
    x11-display = ':0.0'
    x11-display-device = ''
    display-device = ''
    remote-host-name = ''
    is-local = TRUE
    on-since = '2011-11-05T12:46:33.690874Z'
    login-session-id = '1'

  • The difference between "swing/awt" and "SWT"

    What is the main defference between "swing" and "SWT",
    in other word, when use them to implement a GUI,what is different?
    Once making a choice between them,what do they affect a project?

    They both are GUI toolkits. One is from Sun, one is from IBM.
    Sun's is lightweight, meaning all components paint themselves. IBM's is heavy weight meaning that all components are painted by the platform's native widget toolkits (there are exceptions to both of these, but just bear with me).
    If you use SWT, you will need to create downloads for each platform your app was meant to run on, not only that, you will need to include the corresponding platform SWT jar files in your project. Ontop of that, SWT doesn't have anywhere near the documentation or help that Swing has (but to be fair, its about 1/8th the age of Swing).
    If you are a great programmer that usually doesn't need help and can get by with a few good docs and MUST have native look and feel and fantastic GUI performance, then use SWT.
    But if you are more relaxed and what to do the easiest thing, use Swing.
    Both are good, I prefer Swing right now, but lets wait and see if IBM buys Sun.

  • Focusing Language and Learning Goals

    I'm writing to ask for some guidance on choosing a language and course of action in learning programming.
    I've seen thread after thread with questions from newbies, asking, "What is the best language to start with?" and then it always starts a flame war or someone just answers, "There's no best language, it's best to pick one and start learning it." My question is a little bit more focused than that.
    First off, I've been programming my whole life, in very limited capacities. My deepest training was in C++. Whilst in my EECS degree program, I resolved to never be a software developer because I couldn't stand not interacting with people for such long periods of time. Instead I realized I wanted to be a math teacher, and so that is the path I have taken.
    But now that I'm well down that path, I've started to realize that perhaps I could develop my own software to help me in the classroom. If I want to demonstrate the Euclidean algorithm, what better way than to have a piece of software that breaks down the process? Students could run that software as part of their studies, and the advanced students might even develop programs for themselves. Or, with an Ipad in hand, why not have an app that lets students take their own attendance? It would certainly streamline some of the needs of classroom management.
    There's obviously a lot of great stuff already out there for math, and for education, but I want a way to more directly create things specific to my lectures. If I'm teaching a specific way of calculating a percent, I want to create an app that aligns with my teaching style, not just another calculator app that requires the student to learn twice.
    The most I use in class right now is iWork Numbers/Microsoft Excel for my stats class. Students can learn the basic statistical functions, and turn some of their data into graphs.
    I have dabbled a bit with R, and used Maple in college. I've started the basic tutorials for OS X/iOS development and have actually made good progress making an OS X app that takes a text string, converts it to numbers, and performs encryption using modular addition and multiplication. I sometimes use Wolfram|Alpha to save myself some time in getting quick solutions to equations or base conversions. I know of MatLab, Mathematica, and recently people have been telling me to check into Python or Ruby. I also know basic HTML, and while it's forgotten now, learned Javascript and PERL in college.
    If I keep on the path of Obj-C/Cocoa, I think it will have great benefits. Unfortunately, anything I produced for Mac would only be usable on a Mac, so it wouldn't be universal for all of my students. Perhaps then learning a web language would be better. Second, I'm wondering if the primary use is mathematical, then perhaps my time would be better spent learning Mathematica Programming Language, or R, or something based less on GUI and more on simple coding of algorithms, maybe Python or Ruby?
    It seems that Mathematica already has a lot of demos for different math concepts, so why reinvent the wheel is also a question I have. I think overall, it would be good to have more control and design things the way I need. And then, if I do want to make an "Attendance" app or something else, I would already have the programming experience to more easily design something for my iPad or MacBook.
    The related question to this is what is a good language to teach to my students? In his TED talk, Conrad Wolfram says one of the best ways to check the understanding of a student is have them write a program. But if Mathematica does the math virtually automatically for them, then I'm not sure that will get the deeper experience of working out logic for themselves, like you do when you're writing C, or a traditional procedural language.
    I know that programming takes time to learn, but I also know that at this point, my goal is not to be able to make an app like "Tiny Wings." With the app store ease, some of my work may be an extra revenue stream, but I see myself as more of a hobbyist, and now teacher looking to software development specifically for its ability to help me demonstrate mathematical concepts.
    I think I will push ahead with Obj-C/Cocoa for OSX/iOS, but if anyone has some better guidance regarding all of the other available stuff, it would be much appreciated. I don't think I would want to go fully to the web (I like apps), but perhaps someone could suggest a nice way of bridging what I produce in XCode to a universal web version. For example, if you come up with an algorithm in obj-c is it easiest to transition that to ruby and run it online, or is there another approach that works better?

    Another vote for Python. It's the best language I know of for getting your hands dirty quickly, but as you gain more experience it scales very nicely into a full-blown object-oriented language. There are some very nice GUI toolkits you can use with it if you need a graphical interface, or as K T suggested, you can hook it up with a web-based front-end. If you want to get really daring, you can use the PyObjC bridge and develop native Cocoa apps in Python, but in my experience, if you're going to go that route, you're better off just learning Objective-C, which is not all that difficult really. The difficult part about Mac or iOS program is wrapping your head around all the functionality in the Cocoa framework.
    The nice part about Python in the classroom is you can use it in an interactive learning mode. It would be perfect for progressively stepping through a math problem, showing each step along the way. Your students could participate and learn the basic functionality of Python at the same time. That's how I cut my teeth on Python (as part of a natural language programming class in grad school).

  • Porting a Borland C++ VCL 6.0 win32 app

    Hi all,  i am about to start porting a borland c++ win32 gui app in order to make it crossplatform (Linux/Win). I have looked briefly at GTK2,Qt 4.x,wxGTK. I think i have made up my mind, but is there anything i need to know/look into before proceeding ? (the app will be open source)
    BTW - Arch simply just rulez (switched a few months ago from gentoo, got tired of waiting for compilations)

    twiistedkaos wrote:wxWindow is a good one, it looks like QT on KDE, and gtk on gtk
    Except that its API is completely different from gtk's and qt's
    From my hacking experience it's quite primitive (like MVC?): a lot of type-unsafe macros, and the layout management is hard to use and different from most GUI toolkits on X. Also, it forces you to set fixed sizes for some borders and widgets, which is a very bad thing.
    If you don't have license problem, qt4 would be the best. It covers much more than what gtk does, and is probably the easist to use, though it's not yet popular on major linux distros. Gtk should not be considered if your app has to be cross-platform (not very good on windows, completely suck on osx)

  • XMLTalk alternatives?

    This months Java Report (http://www.javareport.com/html/from_pages/index.asp?mon=10&yr=2001) has an article about xmltalk, which allows you to have a declarative description of your UI, including data model objects that are being displayed/modified behind the scenes. xmltalk's code can read this description and instantiate the UI.
    I certainly understand the motivation for creating such a tool: it is hard (in most languages/gui toolkits) to create and maintain a large UI using hard coded techniques.
    I'd like to know if there are other (preferably opensource) efforts along this line.

    Axualize is one such framewrok that focusses on defining UI models. It is a very mature and robust tool that has been up and coming for more than a year and a half as far as I know... u can take a look at :
    http://axualize.sourceforge.net

  • Wingo: floating and tiling window manager with per-monitor workspaces

    More screenshots.
    Wingo has two features which, when combined, set it apart from other window managers (maybe):
    1) Support for both floating and tiling placement policies. Wingo can be used as a regular floating (stacking) window manager, complete with decorations, maximization, sticky windows, and most other things you might find in a window manager. Wingo can also be switched into a tiling mode where window decorations disappear, and windows are automatically managed via tiling.
    2) Workspaces per monitor. In a multi-head setup, each monitor can display its own workspace---independent of the other monitors. This makes changing your view of windows in multi-head setups much easier than in most other window managers, which will only allow you to see one workspace stretched across all of your monitors. Also, since placement policies like floating and tiling affect workspaces, this makes it possible for one monitor to be tiling while another is floating!
    Inspiration
    Wingo is heavily inspired by Openbox and Xmonad (and of course, pytyle). Basically, Openbox's floating semantics (although most window managers are the same in this regard) and Xmonad's automatic tiling style plus its workspace model (workspaces per monitor). I've also adopted Xmonad's "greedy" workspace switching and embedded the concepts from the "DynamicWorkspaces" contrib library into the Gribble command system.
    Configuration
    Wingo is extremely configurable. This includes binding any of a vast number of commands to key or mouse presses, theming your window decorations and setting up hooks that will fire depending upon a set of match conditions.
    All configuration is done using an INI like file format with support for simple variable substitution (which makes theming a bit simpler). No XML. No recompiling. No scripting.
    Configuring key/mouse bindings and hooks uses a central command system called Gribble. For example, one can add a workspace named "cromulent" with this command while Wingo is running:
    AddWorkspace "cromulent"
    But that's not very flexible, right? It'd be nice if you could specify the name of workspace on the fly... For this, simply use the "Input" command as an argument to AddWorkspace, which shows a graphical prompt and allows you to type in a name:
    AddWorkspace (Input "Enter your workspace name:")
    The text entered into the input box will be passed to the AddWorkspace command.
    Please see the HOWTO-COMMANDS file for more info. We've barely scratched the surface.
    Scripting Wingo
    So I lied earlier. You can kind of script Wingo by using its IPC mechanism. While Wingo is running, you can send any command you like:
    wingo-cmd 'AddWorkspace "embiggen"'
    Or perhaps you can't remember how to use the AddWorkspace command:
    wingo-cmd --usage AddWorkspace
    Which will print the parameters, their types and a description of the command.
    Want to pipe some information to another program? No problem, since commands can return stuff!
    wingo-cmd GetWorkspace
    And you can even make commands repeat themselves every X milliseconds, which is ideal for use with something like dzen to show the name of the currently active window:
    wingo-cmd --poll 500 'GetClientName (GetActive)' | dzen2
    Finally, you can see a list of all commands, their parameters and their usage: (even if Wingo isn't running)
    wingo-cmd --list-usage
    (Wingo actually can provide enough information (or will soon) for ambitious hackers to script their own layouts in whatever programming language they like without ever having to deal with X at all. Assuming it has support for connecting to unix domain sockets. Or you could just use a shell with 'wingo-cmd' if you're into that kind of tomfoolery.)
    Dynamic Workspaces
    Having some set number of workspaces labeled 1, 2, 3, 4, ... is a thing of the past. While Wingo won't stop you from using such a simplistic model, it will egg you on to try something else: dynamic workspaces.
    Dynamic workspaces takes advantage of two things: workspace names and adding/removing workspaces as you need them.
    This is something that I find useful since I'm typically working on multiple projects, and my needs change as I work on them. For example, when working on Wingo, I might add the "wingo" workspace, along with the "xephyr" workspace and the "gribble" workspace. When I'm done, I can remove those and add other workspaces for my next project. Or I can leave those workspaces intact for when I come back to them later.
    With Wingo, such a workflow is natural because you're no longer confined to "removing only the last workspace" or some other such nonsense. Plus, adding a workspace requires that you name it---so workspaces always carry some semantic meaning.
    (N.B. I don't mean to imply that this model is new, just uncommon; particularly among floating window managers. I've personally taken the model from xmonad-contrib's DynamicWorkspaces module.)
    Tiling layouts
    Right now, only simple tiling layouts are available. (Vertical and Horizontal.) Mostly because those are the layouts that I primarily use. I'll be adding more as they are demanded.
    Dependencies
    Wingo is written in pure Go (including all of its dependencies). As such, Go (and git) is the only package necessary to build and install Wingo. Once Wingo is installed, Go can be removed. (No Xlib/xcb, no cairo, no gui toolkits.)
    Installation
    Wingo is in the AUR. Alternatively, if you have a Go environment set up, you can download, build and install Wingo and all of its necessary dependencies with:
    go get github.com/BurntSushi/wingo
    go get github.com/BurntSushi/wingo/wingo-cmd
    (Yes, Go's build system is really that awesome.)
    There's a lot more at Wingo's github.
    Please note that Wingo should be considered in a very alpha state. I've been using it for a little bit myself, but beyond that, Wingo is untested.
    Last edited by BurntSushi (2012-10-22 06:02:16)

    netfun81 wrote:wow, nice wm.  Install was a breeze, love having floating layout on one screen and tiling on another.   In the past, for certain apps that wouldn't play well with a tiling wm, I would have to kill X, change my .xinitrc to start openbox and startx again.   This seems like the perfect solution.
    Thanks :-)
    netfun81 wrote:Does "go get github.com/BurntSushi/wingo"  always pull the latest from git?   Can i just delete the wingo executable from go/bin and run command to upgrade to latest or do I need to delete config files each time to remain compatible?
    Yes, `go get ...` always pulls from the latest git. I make sure that Wingo builds before pushing to `master`. I'll use a different branch for any longer term experiments.
    You could use `wingo-git` in the AUR, but `go get` is just as good. (Indeed, the PKGBUILD uses `go get`!)
    One note those, use this to update to instead:
    go get -u github.com/BurntSushi/wingo
    go get -u github.com/BurntSushi/wingo/wingo-cmd
    You shouldn't have to delete any executables.
    As far as configuration files go... I'm not sure. I haven't figured out how I'm going to handle them yet. I don't think any well-formed configuration file will break Wingo, but it's certainly possible that old configuration files will miss out on new features/options. (For example, I just added some new focus follows mouse options.) Wingo will always maintain an in-memory default configuration, so missing configuration options will also never break Wingo.
    You can always check out the new configuration files by running `wingo --write-config`. You'll have to move `~/.config/wingo` to a temporary location first though.
    If you're installing from the AUR, I'll try to add post installation messages for any big changes.
    FYI, I should say that installation is so easy because of Go. :-) /plug
    Last edited by BurntSushi (2012-10-26 21:07:44)

  • Need help creating a teaching aid

    hi,
    i jut want to know whether java could be used to make a learning aid for aircraft dynamics which basically involves making a 3D model of an aircraft and coupling the equations of motion to this 3D model. it also needs to take inputs from the user to simulate the dynamics of the aircraft in different conditions.
    could anyone tell me whether this is possible in java cause i'm trying to find which programming language would best suit this. also if there are any other programming language which could be used for this purpose please let me know. it is necessary that the simulations has to be displayed on a web page.
    cheers!

    Well, you could:
    1) Write a java application that does the simulation, and deploy it as a standalone application. Your users could download it from your web site.
    Advantage: the user wouldn't need to have the browser running while they ran the simulation, which might be helpful if it uses a lot of resources. Disadvantages: the user has to have Java installed; it has fewer options for interactivity with the server; the simulation is run on the local machine so the user needs to have a sufficiently powerful computer (I'm assuming that the simulation will be resource-hungry).
    2) Write a java application that does the simulation, and deploy it as an applet (embedded in a web page). Advantage: easier access to the simulation; easier interactivity in other browser windows, etc. Disadvantage: user has to have Java installed; user must have sufficiently powerful computer. You could do both (1) and (2) at the same time, using the same code, by the way, if you plan it well.
    3) Write a Flash animation that does it, a deploy it embedded in a web page.
    Advantage: Wider support. Disadvantage: You must buy a Flash authoring environment; Flash may not be suitable.
    4) Write a native application (or, several versions, for different platforms) and let the users download them and run them locally. This is basically like (1), only it's not in Java. Advantage: you can tweak things heavily if you need to squeeze every ounce of performance out of the system (assuming you're willing to learn assembly language); this might be the only option if the library/toolkit you select is in C or C++. Disadvantage: you have to compile multiple versions of the simulation; local GUI toolkits and the like might vary greatly (or you'll have to buy a more platform-independent GUI toolkit like Qt); harder to program; users will need to have a sufficiently powerful system.
    5) Write an application that does the simulation, and invoke it via the web server. This would be a regular web application: users would send data via HTML forms, and they'd get data back in the form of content on a web page, images, etc. Advantage: this is the most flexible solution. You can tie just about anything to a web server. The user doesn't need an especially powerful machine; nothing is run locally except the web browser. It might also be easier to write collaboration functionality between students. Disadvantage: much less interactive.
    You can also do combinations of these; for example you could put the bulk of the simulation on the server, and then have a Flash animation or a Java applet or an embedded QuickTime movie (maybe) that lets the user examine (but not necessarily modify) 3d models.

  • Arch GUI tools & prog. language

    This is a continuation from topic:
    http://bbs.archlinux.org/viewtopic.php?t=2257
    contrasutra wrote:What's to stop us from porting the Mandrake or Redhat System tools?
    rasat wrote:I would like to have a choice to use GUI tools...
    For my information, what language is easy to learn and makes nice GUI application?
    farphel wrote:If your end goal is to provide gui tools for Arch, then you need to first examine what languages/toolkits are included in 'base' so that your gui tools could be included in the mini-iso.....
    If your guis are post-install, and you don't care if they were to make it into base/current, then the sky's the limit.
    It would be interesting to know....
    1. what system tools other distros are using.
    2. what tools could be useful for Arch and also if possible to modify if needed.
    About programming language for Arch apps, in general, can it be said...
    1. Shell Script for Arch CD installer
    2. Curses and Tcl/Tk for base
    3. Any language for post-install
    About Python, is it possible to run a "stand alone" application without installing the python package? .... to develop apps to include the reguired python files and libs.

    rasat wrote:1. AL's wxPython is depended on wxGTK, for what purpose? In my compiled wxPython, I didn't install wxGTK.
    AFAIK, wxPython only requires GTK+ 1 and it's dependancies. wxGTK shouldn't be needed.
    rasat wrote:
    RdsArts wrote:Python is a byte-code language, you can't compile it into a stand-alone app yet AFAIK.
    2. Would it be possible to make one "mini" Python package for running Py apps only? Why I am asking, its not "fair" to ask users to install the 7.2MB Python package just for the sake of running an Py application e.g. 100KB.
    Maybe, but I doubt it. AFAIK, most of what you'd "cut" would be modules which other programs need. There are some demo programs, but I can't imagine that they take up more then 500K.
    Plus, if your doing a GUI, your going to pull large dependancies anyway.
    rds@hpavil
    (/var/cache/pacman/pkg)
    05:29 AM - $> ls -l glib-1.2.10-3.pkg.tar.gz glib2-2.2.3-1.pkg.tar.gz gtk-1.2.10
    -3.pkg.tar.gz gtk2-2.2.4-1.pkg.tar.gz pygtk-2.0.0-2.pkg.tar.gz kdelibs-3.1.4-1.pkg.tar.gz qt-3.2.3-1.pkg.tar.gz
    -rw-r--r-- 1 root root 181K Jan 1 21:20 glib-1.2.10-3.pkg.tar.gz
    -rw-r--r-- 1 root root 883K Jan 1 21:19 glib2-2.2.3-1.pkg.tar.gz
    -rw-r--r-- 1 root root 1.6M Jan 2 16:19 gtk-1.2.10-3.pkg.tar.gz
    -rw-r--r-- 1 root root 4.3M Jan 1 21:19 gtk2-2.2.4-1.pkg.tar.gz
    -rw-r--r-- 1 root root 15M Jan 15 03:30 kdelibs-3.1.4-1.pkg.tar.gz
    -rw-r--r-- 1 root root 561K Jan 1 21:23 pygtk-2.0.0-2.pkg.tar.gz
    -rw-r--r-- 1 root root 15M Jan 15 03:28 qt-3.2.3-1.pkg.tar.gz
    rds@hpavil
    (/var/cache/pacman/pkg)
    05:29 AM - $>
    Both GTK+ 2 and QT are rather "beefy" as-is. And we're not even going to talk about KDElibs. Compared to 15M for QT proper, 7M for Python isn't exactly massive.
    Also, if someone's going for a GUI, they'll most likely have GTK+2 or KDE already installed, and thus it'd make Python's size small in comparison. Compare 7M for Python to XFree at ~54M, most of which IIRC is taken up in drivers and locale files which most users will never use, and it's not even close to being the largest dependancy.
    Plus, with Python you gain the benefits of more stable code that can be developed in a very fast manner. It's fairly hard, IMHO, to quantify that and judge it against the relatively small size of the Python package proper.
    Besides, if more people would start using Python (like they should ) installing it "for one app" would be mitigated.
    */rant*

Maybe you are looking for