AccessGrid.org

Developer Example: Venue Kiosk

Venue Kiosk is an example of a simplified Venue Client that would be suitable for Access Grid installations where ease of use is more important than the more functional interface provided by the standard Venue Client. This example shows how one could develop a simplified client for a special purpose.

When deploying an Access Grid room that will be used primarily for conferencing, with the room being run entirely by the attendees, a kiosk client could eliminate the operator while maintaining high reliability.

An image of the VenueKiosk is shown in the figure below. Note the virtual keyboard, suitable for use in keyboard-free installations with a mouse or touch screen. As a Venue name is entered, the list narrows to include only matching Venues (based on the starting letters). When the desired Venue has been located, the user would select it and press the Go button at the bottom of the kiosk window. The media tools would start according to the default node configuration.

 

 

Application Structure

Code

The code in this example is, as expected, largely to build the user interface. The relevant code in this example, from an Access Grid perspective, involves the Venue Cache, the relationship between the user interface and the underlying Venue Client, and entering the Venue.

Initializing the AG and creating the Venue Client

 

agapp = Application.instance()
agapp.Initialize()

kiosk = Kiosk(None,-1,'Access Grid Kiosk',size=(1000,1200))
venueClient = VenueClient(app=agapp)
venueClientController = VenueClientController()
venueClientController.SetVenueClient(venueClient)
venueClient.BuildDefaultNodeConfiguration()
kiosk.SetVenueClient(venueClient)

Venue Cache

The VenueCache is new for the 3.2 release. It simply keeps track of a list of Venue Servers and the Venues hosted on them, updating the list of Venues on demand. Once configured with a list of Venue Servers, the calling code can either load the cache, or update/save the cache. The example code updates the cache every time--being example code--updates the cache every time, which means more reliability and a slower startup; code for loading the cache at startup could instead be used, and is included in comments.

 

venueCache = VenueCache(venuesFile,venueServerUrls)
# Build the venue cache at each run
venueCache.Update()
venueCache.Store()
# Could instead load the venues from the cache
#venueCache.Load()

SetVenueClient

def SetVenueClient(self,venueClient):
self.venueClient = venueClient

EnterVenue

def EnterVenue(self,venue):
wx.BeginBusyCursor()
try:
self.venueClient.EnterVenue(venue.uri)
except:
pass
wx.EndBusyCursor()

Execution

Before executing the VenueKiosk, be sure to consider the Prerequisites for running AG components on the command line. Then execute the VenueKiosk as follows:

python VenueKiosk.py

Conclusion

This example demonstrates an alternate client that is suitable for fixed installations where ease of use is the highest priority. The primary goal of this program is to get naive users into the Venue of their choice. In simplifying the interface, much of the collaborative capacity of the Access Grid is not represented, including the list of participants, data, applications, the instant messaging interface, and the rest of the VenueClient functionality. Portions of that functionality could be added as an option.

Suggested Future Work

  • Integrate RSS-based scheduling
    • Display meetings scheduled for the user's site only, in a particular room
  • Add support for optionally launching the full VenueClient when entering the Venue, or integrate some of the core VenueClient functionality into the VenueKiosk (for example, instant messaging and shared applications

Supporting Code

VenueKiosk.py

login or register to post comments