1
////////////////////////////////////////////////////////////////////////////////
3
// This file is part of Toolkit for Conceptual Modeling (TCM).
4
// (c) copyright 1997, Vrije Universiteit Amsterdam.
5
// Author: Frank Dehne (frank@cs.vu.nl).
7
// TCM is free software; you can redistribute it and/or modify
8
// it under the terms of the GNU General Public License as published by
9
// the Free Software Foundation; either version 2 of the License, or
10
// (at your option) any later version.
12
// TCM is distributed in the hope that it will be useful,
13
// but WITHOUT ANY WARRANTY; without even the implied warranty of
14
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
// GNU General Public License for more details.
17
// You should have received a copy of the GNU General Public License
18
// along with TCM; if not, write to the Free Software
19
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
21
////////////////////////////////////////////////////////////////////////////////
22
#include "scaledialog.h"
27
ScaleDialog::ScaleDialog(Widget w): MessageDialog(w) {
33
void ScaleDialog::CreateWidget() {
34
Arg args[9]; int i = 0;
35
XtSetArg(args[i], XmNautoUnmanage, GetAutoUnmanage()); i++;
36
SetWidget(XmCreateMessageDialog(GetParent(), (char *)GetClassName(), args, i));
37
scale = XtVaCreateManagedWidget("scale",
38
xmScaleWidgetClass, GetWidget(),
39
XmNorientation, XmHORIZONTAL,
40
XmNshowValue, True, 0);
43
void ScaleDialog::Configure() {
44
SetHelpButtonLabel("Default");
45
SetHelpCallback(SetDefaultCB, this);
46
SetCancelCallback(SetInitCB, this);
49
void ScaleDialog::SetScaleValues(int min, int max, int init, int decimal,
57
XmNdecimalPoints, decimal, 0);
62
void ScaleDialog::SetScaleLabel(const char *text) {
65
XmString text_string = CreateXmString(text);
66
// XtVaTypedArg, XmNtitleString, XmRString, text, strlen(text),
67
XtVaSetValues(scale, XmNtitleString, text_string, 0);
68
XmStringFree(text_string);
71
void ScaleDialog::SetValueChangedCallback(XtCallbackProc fun, XtPointer cd) {
74
XtRemoveAllCallbacks(scale, XmNvalueChangedCallback);
76
XtAddCallback(scale, XmNvalueChangedCallback, fun, cd);
84
void ScaleDialog::SetDefaultCB(Widget, XtPointer cd, XtPointer) {
85
ScaleDialog *d = (ScaleDialog *)cd;
86
d->SetScaleValue(d->GetDefaultValue());
89
void ScaleDialog::SetInitCB(Widget, XtPointer cd, XtPointer) {
90
ScaleDialog *d = (ScaleDialog *)cd;
91
d->SetScaleValue(d->GetInitValue());
94
void ScaleDialog::SetScaleValue(int val) {
97
int oldval = GetScaleValue();
99
XmScaleSetValue(scale, val);
100
if (valueChangeFun) {
101
XmScaleCallbackStruct cbs;
104
cbs.reason = XmCR_VALUE_CHANGED;
105
(*valueChangeFun)(scale, clientData, (XtPointer) &cbs);
110
int ScaleDialog::GetScaleValue() {
114
XmScaleGetValue(scale, &val);