1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
|
// query.C
/******************************************************************************
*
* MiXViews - an X window system based sound & data editor/processor
*
* Copyright (c) 1993, 1994 Regents of the University of California
*
* Author: Douglas Scott
* Date: December 13, 1994
*
* Permission to use, copy and modify this software and its documentation
* for research and/or educational purposes and without fee is hereby granted,
* provided that the above copyright notice appear in all copies and that
* both that copyright notice and this permission notice appear in
* supporting documentation. The author reserves the right to distribute this
* software and its documentation. The University of California and the author
* make no representations about the suitability of this software for any
* purpose, and in no event shall University of California be liable for any
* damage, loss of data, or profits resulting from its use.
* It is provided "as is" without express or implied warranty.
*
******************************************************************************/
#ifdef __GNUG__
#pragma implementation
#endif
#include <String.h>
#include "localdefs.h"
#include "query.h"
#include "queryvalue.h"
const char* QueryItem::separator = "|";
QueryItem::QueryItem(const char* lbl) {
myLabel = new String(lbl);
}
QueryItem::QueryItem(const char* beg, const char* end) {
myLabel = new String(beg);
*myLabel += end;
}
QueryItem::~QueryItem() {
delete myLabel;
}
const char*
QueryItem::label() { return *myLabel; }
/////////
QueryFile::QueryFile(String* path, const char* suffixes) : QueryItem(""),
myPath(new QueryString("", path)),
mySuffixes(new String(suffixes? suffixes : "")) {
}
QueryFile::~QueryFile() {
delete myPath;
delete mySuffixes;
}
/////////
QueryButton::QueryButton(const char *lbl, Response r)
: QueryItem(lbl), myResponse(r) {}
QueryButton::~QueryButton() {}
/////////
QueryChoice::QueryChoice(const char *lbl, const char *list,
ChoiceValue* states, boolean excl) : QueryItem(lbl),
myList(list), statePtr(states), exclusive(excl) {}
QueryChoice::~QueryChoice() {}
void
QueryChoice::start() { // initialize iterators
iterator = myList;
stateIterator = *statePtr;
currentValue = 0x1; // value of first button
}
boolean
QueryChoice::nextValue(int *value) {
boolean isTrue = stateIterator & 0x1; // this state currently true?
*value = int(currentValue); // value for this button
stateIterator >>= 1; // shift to next state
currentValue <<= 1; // shift value up to next slot
return isTrue;
}
const char *
QueryChoice::nextLabel() {
// iterator = iterator.after(separator);
// currentLabel = iterator.before(separator);
String a= iterator.after(separator);
iterator = a;
String b = iterator.before(separator);
currentLabel = b;
return currentLabel; // must store into String to convert to char*
}
|