/* * File: ginteractors.h * -------------------- * This interface exports a hierarchy of graphical interactors similar to * those provided in the Java Swing libraries. * */ /*************************************************************************/ /* Stanford Portable Library */ /* Copyright (C) 2013 by Eric Roberts */ /* */ /* This program is free software: you can redistribute it and/or modify */ /* it under the terms of the GNU General Public License as published by */ /* the Free Software Foundation, either version 3 of the License, or */ /* (at your option) any later version. */ /* */ /* This program is distributed in the hope that it will be useful, */ /* but WITHOUT ANY WARRANTY; without even the implied warranty of */ /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */ /* GNU General Public License for more details. */ /* */ /* You should have received a copy of the GNU General Public License */ /* along with this program. If not, see . */ /*************************************************************************/ #ifndef _ginteractors_h #define _ginteractors_h #include "cslib.h" #include "gobjects.h" #include "gtypes.h" #include "gwindow.h" #include "vector.h" /* * Type: GInteractor * ----------------- * This abstract type is the superclass for all graphical interactors. * In most applications, interactors will be added to a control strip * along one of the sides of the GWindow, but they can * also be placed in specific positions just like any other * GObject. */ typedef GObject GInteractor; /* * Function: setActionCommand * Usage: setActionCommand(interactor, cmd); * ----------------------------------------- * Sets the action command to the indicated string. If the string is not * empty, activating the interactor generates a GActionEvent. */ void setActionCommand(GInteractor interactor, string cmd); /* * Function: getActionCommand * Usage: cmd = getActionCommand(interactor); * ------------------------------------------ * Returns the action command associated with the interactor. */ string getActionCommandGInteractor(GInteractor interactor); /* * Type: GButton * ------------- * This interactor subtype represents an onscreen button. The following * program displays a button that, when pressed, generates the message * “Please do not press this button again” * (with thanks to Douglas Adams’s Hitchhiker’s * Guide to the Galaxy): * *
 *    main() {
 *       GWindow gw = newGWindow(600, 400);
 *       GButton button = newGButton("RED");
 *       addToRegion(gw, button, "SOUTH");
 *       while (true) {
 *          GEvent e = waitForEvent(ACTION_EVENT | CLICK_EVENT);
 *          if (getEventType(e) == MOUSE_CLICKED) break;
 *          printf("Please do not press this button again.\n");
 *       }
 *    }
 *
*/ typedef GInteractor GButton; /* * Function: newGButton * Usage: button = newGButton(label); * ---------------------------------- * Creates a GButton with the specified label. This * function also sets the action command for the button to the * label string. */ GButton newGButton(string label); /* * Type: GCheckBox * --------------- * This interactor subtype represents an onscreen check box. Clicking * once on the check box selects it; clicking again removes the selection. * If a GCheckBox has an action command, clicking on the box * generates a GActionEvent. * */ typedef GInteractor GCheckBox; /* * Function: GCheckBox * Usage: chkbox = new GCheckBox(label); * ------------------------------------- * Creates a GCheckBox with the specified label. In contrast * to the GButtonructor, this function does not automatically * set an action command. */ GCheckBox newGCheckBox(string label); /* * Function: setSelected * Usage: setSelected(chkbox, state); * ---------------------------------- * Sets the state of the check box. */ void setSelected(GCheckBox chkbox, bool state); /* * Function: isSelected * Usage: if (isSelected(chkbox)) ... * ---------------------------------- * Returns true if the check box is selected. */ bool isSelected(GCheckBox chkbox); /* * Type: GSlider * ------------- * This interactor subtype represents an onscreen slider. Dragging * the slider control generates an ActionEvent if the * slider has a nonempty action command. * */ typedef GInteractor GSlider; /* * Function: GSlider * Usage: slider = new GSlider(min, max, value); * --------------------------------------------- * Creates a horizontal GSlider. The parameters are * the minimum value, maximum value, and current value of the slider. * Assigning an action command to the slider causes the slider to * generate an action event whenever the slider value changes. */ GSlider newGSlider(int min, int max, int value); /* * Function: setValue * Usage: setValue(slider, value); * ------------------------------- * Sets the current value of the slider. */ void setValue(GSlider slider, int value); /* * Function: getValue * Usage: value = getValue(slider); * -------------------------------- * Returns the current value of the slider. */ int getValue(GSlider slider); /* * Type: GTextField * ---------------- * This interactor subtype represents a text field for entering * short text strings. Hitting enter in a text field generates a * GActionEvent if the text field has a nonempty * action command. */ typedef GInteractor GTextField; /* * Function: GTextField * Usage: field = newGTextField(nChars); * ------------------------------------- * Creates a text field capable of holding nChars characters. * Assigning an action command to the text field causes it to generate an * action event whenever the user types the ENTER key. */ GTextField newGTextField(int nChars); /* * Function: setText * Usage: setText(field, str); * --------------------------- * Sets the text of the field to the specified string. */ void setText(GTextField field, string str); /* * Function: getText * Usage: str = getText(field); * ---------------------------- * Returns the contents of the text field. */ string getText(GTextField field); /* * Type: GChooser * -------------- * This interactor subtype represents a selectable list. The * newGChooser function creates an empty chooser. * Once the chooser has been created, clients can use addItem * to add the options. For example, the following code creates a * GChooser containing the four strings * "Small", "Medium", "Large", * and "X-Large": * *
 *    GChooser sizeChooser = newGChooser();
 *    addItem(sizeChooser, "Small");
 *    addItem(sizeChooser, "Medium");
 *    addItem(sizeChooser, "Large");
 *    addItem(sizeChooser, "X-Large");
 *
* */ typedef GInteractor GChooser; /* * Function: newGChooser * Usage: chooser = newGChooser(); * ------------------------------- * Creates a chooser that initially contains no items, which are added * using the addItem function. Assigning an action command * to the chooser causes it to generate an action event whenever the * user selects an item. */ GChooser newGChooser(void); /* * Function: addItem * Usage: addItem(chooser, item); * ------------------------------ * Adds a new item consisting of the specified string. */ void addItem(GChooser chooser, string item); /* * Function: setSelectedItem * Usage: setSelectedItem(chooser, item); * -------------------------------------- * Sets the chooser so that it shows the specified item. If the item * does not exist in the chooser, no change occurs. */ void setSelectedItem(GChooser chooser, string item); /* * Function: getSelectedItem * Usage: item = getSelectedItem(chooser); * --------------------------------------- * Returns the current item selected in the chooser. */ string getSelectedItem(GChooser chooser); #endif