Slashdot Mirror


Pipes In GUI's

Caine asks: "While having some dead time at work, I spent some time thinking about how to write a good GUI. I started thinking about if you could implement pipes in a GUI. My thought was something like this: You could connect two programs and/or widgets by a GUI pipe. This could be visualized if the user wanted to, as a thin, pulsating red line or something. For example, you could pipe your browsers' status/error window to a log colorer. You could also pipe other things than text, such as pictures; if you're watching a streaming movie you could pipe it into the graphic programs' filters for example. Basically they would do the same as a normal "|" but with all kinds of data and in a GUI. Has this ever been done or written about before? Any implementations?" Interesting idea, but before this would be possible, we'd have to introduce the concept of discrete input-channels and output-channels into our GUIs, and that's not as easy as it sounds.

6 of 22 comments (clear)

  1. java? by stubob · · Score: 3

    I'm not sure if this is what you mean, but the Java event model seems to allow this. For example, if you type in one text window, you can send the KeyPressedEvents to another window and handle them differently there. I've never messed around with anything more complicated than forwarding MouseEvents (moving the mouse in one window recenters a map in a different window.) Also, with the JVM design, different JFrames can communicate with each other simply through object references.

    I guess the same idea could be done with X by registering for and dispatching callbacks to other panels in the same way.

    -----

    --
    Planning to be moderated ± 1: Bad Pun.
  2. Corba?? bonobo?? by bmetzler · · Score: 3

    Aren't things like corba and bonobo methods for communicating with applications? Either I don't understand Bonobo, or I don't understand the question, or I've had too much Mountain Dew.

  3. Not exactly what you are looking for, but.. by GuardianLion · · Score: 3

    There is a programming environment that works much like that, called Labview. They call it a "dataflow" language, and the design is all graphical, building components and connecting them together with "wires". Piping things off to other processes (within the environment, but it was multi-tasking) was really easy. It'd be hell to write a browser in, since it is built for real-time test and measurement, but I got it to do some fairly useful stuff, including some disk-based communication to get around whiny IS types.

    It was actually a lot of fun to program in.

    1. Re:Not exactly what you are looking for, but.. by nd · · Score: 3

      BTW, LabVIEW 6.0 was just released this week, and it has been available for Linux since 5.0. See http://www.ni.com/linux.

      I program in LabVIEW almost exclusively for my job, though I still prefer text-based languages.

  4. Um, Bonobo, KDE's DCOP, OLE, any drag-n-drop by hatless · · Score: 3
    Plenty of GUI applications have been piping between each other for years now. Apart from some scientific and audio/video processing apps, the UI representation is usually different, but the purpose and function are the same. When you embed an updateable spreadsheet in a word processing document, that's piping. When you drag a document icon to a prionter icon, you're piping to the application that renders the document for printing, which in turn pipes to the print spooler. Ditto when you drag and drop a compressed file's icon onto an icon representing a decompression program.

    Implementing a pipe metaphor into an entire UI framework isn't a bad idea. It is one that will likely have a small, techy audience. Using a nonverbal GUI to indicate what is being piped and to where, you run into a lot of ambiguity. When you connect one widget or window to another, what is it you're piping?
    • the content of a widget, the underlying value passed by the widget, the functioning widget itself, or the bitmap/vector graphic contents of the widget?
    • at this moment in time, or updated dynamically?
    • Plain text? HTML? Richtext?
    At a certain point in the stagnant WIMP interface, getting at these distinctions involves wizards and property sheets, and it ends up looking and feeling like an IDE.

    Again, truly ubiquitous embedding and linking at the desktop environment level would be useful for programmers and for some power-user applications. But I wouldn't expect it to take the world by storm in the two-dimensional, mouse-driven windowing environments we use today, outside the self-contained applications (like audio processors) that it's used in already.

    Apply the concept to VR interfaces and tactile interfaces, and maybe it'll be something fluidly usable for everyday use.
  5. how about this... by dutky · · Score: 3

    There is a tool for MacOS called FilterTop which allows you to construct pipelines from special filter programs. You can then drag-and-drop files into the resulting filters (called 'droplets' in MacOS) and have the pipeline executed on the contents of the file, spitting the results out into another file afterwards.

    I think that there was something else for the Mac, released back around 1995, that did something similar by arranging icons on the desktop, but I can't find any reference to it through Google.