/*
* Grace - GRaphing, Advanced Computation and Exploration of data
*
* Home page: http://plasma-gate.weizmann.ac.il/Grace/
*
* Copyright (c) 1991-1995 Paul J Turner, Portland, OR
* Copyright (c) 1996-2003 Grace Development Team
*
* Maintained by Evgeny Stambulchik
*
*
* All Rights Reserved
*
* 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 2 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, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/*
*
* Set appearance
*
*/
#include <config.h>
#include <stdio.h>
#include <stdlib.h>
#include "globals.h"
#include "graphs.h"
#include "utils.h"
#include "motifinc.h"
#include "protos.h"
#define cg get_cg()
#define SETAPP_STRIP_LEGENDS 0
#define SETAPP_LOAD_COMMENTS 1
#define SETAPP_ALL_COLORS 2
#define SETAPP_ALL_SYMBOLS 3
#define SETAPP_ALL_LINEW 4
#define SETAPP_ALL_LINES 5
#define SETAPP_ALL_BW 6
#define CSYNC_LINE 0
#define CSYNC_SYM 1
static int cset = 0; /* the current set from the symbols panel */
static Widget setapp_dialog = NULL;
static Widget duplegs_item;
static OptionStructure *type_item;
static Widget *toggle_symbols_item;
static Widget symsize_item;
static SpinStructure *symskip_item;
static OptionStructure *symcolor_item;
static OptionStructure *sympattern_item;
static OptionStructure *symfillcolor_item;
static OptionStructure *symfillpattern_item;
static SpinStructure *symlinew_item;
static OptionStructure *symlines_item;
static Widget symchar_item;
static OptionStructure *char_font_item;
static OptionStructure *toggle_color_item;
static OptionStructure *toggle_pattern_item;
static SpinStructure *toggle_width_item;
static Widget dropline_item;
static OptionStructure *toggle_lines_item;
static Widget *toggle_linet_item;
static Widget *toggle_filltype_item;
static Widget *toggle_fillrule_item;
static OptionStructure *toggle_fillpat_item;
static OptionStructure *toggle_fillcol_item;
static ListStructure *toggle_symset_item;
static Widget baseline_item;
static Widget *baselinetype_item;
static TextStructure *legend_str_item;
static Widget errbar_active_item;
static Widget *errbar_ptype_item;
static OptionStructure *errbar_color_item;
static OptionStructure *errbar_pattern_item;
static Widget errbar_size_item;
static SpinStructure *errbar_width_item;
static OptionStructure *errbar_lines_item;
static SpinStructure *errbar_riserlinew_item;
static OptionStructure *errbar_riserlines_item;
static Widget errbar_aclip_item;
static SpinStructure *errbar_cliplen_item;
static Widget avalue_active_item;
static Widget *avalue_type_item;
static OptionStructure *avalue_font_item;
static OptionStructure *avalue_color_item;
static Widget avalue_charsize_item ;
static Widget avalue_angle_item;
static OptionStructure *avalue_format_item;
static Widget *avalue_precision_item;
static Widget avalue_offsetx;
static Widget avalue_offsety;
static Widget avalue_prestr;
static Widget avalue_appstr;
static Widget csync_item;
static void UpdateSymbols(int gno, int value);
static void set_cset_proc(int n, int *values, void *data);
static int setapp_aac_cb(void *data);
static void setapp_data_proc(void *data);
static void csync_cb(int value, void *data);
/*
* create the symbols popup
*/
void define_symbols_popup(void *data)
{
int setno;
set_wait_cursor();
setno = (int) data;
if (is_valid_setno(cg, setno) == TRUE) {
cset = setno;
}
if (setapp_dialog == NULL) {
Widget setapp_tab, setapp_main, setapp_symbols,
setapp_line, setapp_errbar, setapp_avalue, fr, rc, rc1, rc2;
Widget menubar, menupane;
setapp_dialog = CreateDialogForm(app_shell, "Set Appearance");
menubar = CreateMenuBar(setapp_dialog);
AddDialogFormChild(setapp_dialog, menubar);
ManageChild(menubar);
menupane = CreateMenu(menubar, "File", 'F', FALSE);
CreateMenuCloseButton(menupane, setapp_dialog);
menupane = CreateMenu(menubar, "Edit", 'E', FALSE);
CreateMenuButton(menupane, "Set different colors", 'c',
setapp_data_proc, (void *) SETAPP_ALL_COLORS);
CreateMenuButton(menupane, "Set different symbols", 's',
setapp_data_proc, (void *) SETAPP_ALL_SYMBOLS);
CreateMenuButton(menupane, "Set different line widths", 'w',
setapp_data_proc, (void *) SETAPP_ALL_LINEW);
CreateMenuButton(menupane, "Set different line styles", 'y',
setapp_data_proc, (void *) SETAPP_ALL_LINES);
CreateMenuButton(menupane, "Set black & white", 'B',
setapp_data_proc, (void *) SETAPP_ALL_BW);
CreateMenuSeparator(menupane);
CreateMenuButton(menupane, "Load comments", 'm',
setapp_data_proc, (void *) SETAPP_LOAD_COMMENTS);
CreateMenuButton(menupane, "Strip legends", 'l',
setapp_data_proc, (void *) SETAPP_STRIP_LEGENDS);
menupane = CreateMenu(menubar, "Options", 'O', FALSE);
duplegs_item = CreateMenuToggle(menupane,
"Duplicate legends", 'D', NULL, NULL);
csync_item = CreateMenuToggle(menupane, "Color sync", 's', NULL, NULL);
SetToggleButtonState(csync_item, TRUE);
menupane = CreateMenu(menubar, "Help", 'H', TRUE);
CreateMenuHelpButton(menupane, "On set appearance", 's',
setapp_dialog, "doc/UsersGuide.html#set-appearance");
toggle_symset_item = CreateSetChoice(setapp_dialog, "Select set:",
LIST_TYPE_MULTIPLE, TRUE);
AddDialogFormChild(setapp_dialog, toggle_symset_item->rc);
AddListChoiceCB(toggle_symset_item, set_cset_proc, NULL);
/* ------------ Tabs -------------- */
setapp_tab = CreateTab(setapp_dialog);
/* ------------ Main tab -------------- */
setapp_main = CreateTabPage(setapp_tab, "Main");
fr = CreateFrame(setapp_main, "Set presentation");
type_item = CreateSetTypeChoice(fr, "Type:");
rc2 = CreateHContainer(setapp_main);
fr = CreateFrame(rc2, "Symbol properties");
rc = CreateVContainer(fr);
toggle_symbols_item = CreatePanelChoice(rc,
"Type:",
13,
"None", /* 0 */
"Circle", /* 1 */
"Square", /* 2 */
"Diamond", /* 3 */
"Triangle up", /* 4 */
"Triangle left", /* 5 */
"Triangle down", /* 6 */
"Triangle right", /* 7 */
"Plus", /* 8 */
"X", /* 9 */
"Star", /* 10 */
"Char", /* 11 */
NULL);
symsize_item = CreateCharSizeChoice(rc, "Size");
symcolor_item = CreateColorChoice(rc, "Color:");
AddOptionChoiceCB(symcolor_item, csync_cb, (void *) CSYNC_SYM);
symchar_item = CreateTextItem2(rc, 3, "Symbol char:");
fr = CreateFrame(rc2, "Line properties");
rc = CreateVContainer(fr);
toggle_linet_item = CreatePanelChoice(rc, "Type:",
7,
"None",
"Straight",
"Left stairs",
"Right stairs",
"Segments",
"3-Segments",
NULL);
toggle_lines_item = CreateLineStyleChoice(rc, "Style:");
toggle_width_item = CreateLineWidthChoice(rc, "Width:");
toggle_color_item = CreateColorChoice(rc, "Color:");
AddOptionChoiceCB(toggle_color_item, csync_cb, (void *) CSYNC_LINE);
fr = CreateFrame(setapp_main, "Legend");
legend_str_item = CreateCSText(fr, "String:");
fr = CreateFrame(setapp_main, "Display options");
rc2 = CreateHContainer(fr);
avalue_active_item = CreateToggleButton(rc2, "Annotate values");
errbar_active_item = CreateToggleButton(rc2, "Display error bars");
/* ------------ Symbols tab -------------- */
setapp_symbols = CreateTabPage(setapp_tab, "Symbols");
fr = CreateFrame(setapp_symbols, "Symbol outline");
rc = CreateVContainer(fr);
rc2 = CreateHContainer(rc);
symlines_item = CreateLineStyleChoice(rc2, "Style:");
symlinew_item = CreateLineWidthChoice(rc2, "Width:");
sympattern_item = CreatePatternChoice(rc, "Pattern:");
fr = CreateFrame(setapp_symbols, "Symbol fill");
rc = CreateHContainer(fr);
symfillcolor_item = CreateColorChoice(rc, "Color:");
symfillpattern_item = CreatePatternChoice(rc, "Pattern:");
fr = CreateFrame(setapp_symbols, "Extra");
rc = CreateVContainer(fr);
symskip_item = CreateSpinChoice(rc, "Symbol skip:",
5, SPIN_TYPE_INT, (double) 0, (double) 100000, (double) 1);
char_font_item = CreateFontChoice(rc, "Font for char symbol:");
/* ------------ Line tab -------------- */
setapp_line = CreateTabPage(setapp_tab, "Line");
fr = CreateFrame(setapp_line, "Line properties");
rc = CreateHContainer(fr);
toggle_pattern_item = CreatePatternChoice(rc, "Pattern:");
dropline_item = CreateToggleButton(rc, "Draw drop lines");
fr = CreateFrame(setapp_line, "Fill properties");
rc = CreateVContainer(fr);
rc2 = CreateHContainer(rc);
toggle_filltype_item = CreatePanelChoice(rc2, "Type:",
4,
"None",
"As polygon",
"To baseline",
NULL);
toggle_fillrule_item = CreatePanelChoice(rc2, "Rule:",
3,
"Winding",
"Even-Odd",
NULL);
rc2 = CreateHContainer(rc);
toggle_fillpat_item = CreatePatternChoice(rc2, "Pattern:");
toggle_fillcol_item = CreateColorChoice(rc2, "Color:");
fr = CreateFrame(setapp_line, "Base line");
rc = CreateHContainer(fr);
baselinetype_item = CreatePanelChoice(rc, "Type:",
7,
"Zero",
"Set min",
"Set max",
"Graph min",
"Graph max",
"Set average",
NULL);
baseline_item = CreateToggleButton(rc, "Draw line");
/* ------------ AValue tab -------------- */
setapp_avalue = CreateTabPage(setapp_tab, "Ann. values");
fr = CreateFrame(setapp_avalue, "Text properties");
rc = CreateVContainer(fr);
rc2 = CreateHContainer(rc);
avalue_font_item = CreateFontChoice(rc2, "Font:");
avalue_charsize_item = CreateCharSizeChoice(rc2, "Char size");
SetScaleWidth(avalue_charsize_item, 120);
rc2 = CreateHContainer(rc);
avalue_color_item = CreateColorChoice(rc2, "Color:");
avalue_angle_item = CreateAngleChoice(rc2, "Angle");
SetScaleWidth(avalue_angle_item, 180);
rc2 = CreateHContainer(rc);
avalue_prestr = CreateTextItem2(rc2, 10, "Prepend:");
avalue_appstr = CreateTextItem2(rc2, 10, "Append:");
fr = CreateFrame(setapp_avalue, "Format options");
rc = CreateVContainer(fr);
rc2 = CreateHContainer(rc);
avalue_format_item = CreateFormatChoice(rc, "Format:");
avalue_type_item = CreatePanelChoice(rc2, "Type:",
7,
"None",
"X",
"Y",
"X, Y",
"String",
"Z",
NULL);
avalue_precision_item = CreatePrecisionChoice(rc2, "Precision:");
fr = CreateFrame(setapp_avalue, "Placement");
rc2 = CreateHContainer(fr);
avalue_offsetx = CreateTextItem2(rc2, 10, "X offset:");
avalue_offsety = CreateTextItem2(rc2, 10, "Y offset:");
/* ------------ Errbar tab -------------- */
setapp_errbar = CreateTabPage(setapp_tab, "Error bars");
rc2 = CreateHContainer(setapp_errbar);
rc1 = CreateVContainer(rc2);
fr = CreateFrame(rc1, "Common");
rc = CreateVContainer(fr);
errbar_ptype_item = CreatePanelChoice(rc,
"Placement:",
4,
"Normal",
"Opposite",
"Both",
NULL);
errbar_color_item = CreateColorChoice(rc, "Color:");
errbar_pattern_item = CreatePatternChoice(rc, "Pattern:");
fr = CreateFrame(rc1, "Clipping");
rc = CreateVContainer(fr);
errbar_aclip_item = CreateToggleButton(rc, "Arrow clip");
errbar_cliplen_item = CreateSpinChoice(rc, "Max length:",
3, SPIN_TYPE_FLOAT, 0.0, 10.0, 0.1);
rc1 = CreateVContainer(rc2);
fr = CreateFrame(rc1, "Bar line");
rc = CreateVContainer(fr);
errbar_size_item = CreateCharSizeChoice(rc, "Size");
errbar_width_item = CreateLineWidthChoice(rc, "Width:");
errbar_lines_item = CreateLineStyleChoice(rc, "Style:");
fr = CreateFrame(rc1, "Riser line");
rc = CreateVContainer(fr);
errbar_riserlinew_item = CreateLineWidthChoice(rc, "Width:");
errbar_riserlines_item = CreateLineStyleChoice(rc, "Style:");
SelectTabPage(setapp_tab, setapp_main);
CreateAACDialog(setapp_dialog, setapp_tab, setapp_aac_cb, NULL);
}
updatesymbols(cg, cset);
RaiseWindow(GetParent(setapp_dialog));
unset_wait_cursor();
}
/*
* define symbols for the current set
*/
static int setapp_aac_cb(void *data)
{
int i;
int duplegs;
int type;
int sym, symskip, symlines;
double symlinew;
int line, linet, color, pattern;
double wid;
int dropline, filltype, fillrule, fillpat, fillcol;
int symcolor, sympattern, symfillcolor, symfillpattern;
double symsize;
int baseline, baselinetype;
Errbar errbar;
AValue avalue;
char symchar;
int charfont;
plotarr p;
int setno;
int *selset, cd;
duplegs = GetToggleButtonState(duplegs_item);
type = GetOptionChoice(type_item);
symsize = GetCharSizeChoice(symsize_item);
sym = GetChoice(toggle_symbols_item);
color = GetOptionChoice(toggle_color_item);
pattern = GetOptionChoice(toggle_pattern_item);
wid = GetSpinChoice(toggle_width_item);
baseline = GetToggleButtonState(baseline_item);
baselinetype = GetChoice(baselinetype_item);
dropline = GetToggleButtonState(dropline_item);
line = GetOptionChoice(toggle_lines_item);
linet = GetChoice(toggle_linet_item);
filltype = GetChoice(toggle_filltype_item);
fillrule = GetChoice(toggle_fillrule_item);
fillpat = GetOptionChoice(toggle_fillpat_item);
fillcol = GetOptionChoice(toggle_fillcol_item);
symskip = GetSpinChoice(symskip_item);
symcolor = GetOptionChoice(symcolor_item);
sympattern = GetOptionChoice(sympattern_item);
symfillcolor = GetOptionChoice(symfillcolor_item);
symfillpattern = GetOptionChoice(symfillpattern_item);
symlinew = GetSpinChoice(symlinew_item);
symlines = GetOptionChoice(symlines_item);
symchar = atoi(xv_getstr(symchar_item));
charfont = GetOptionChoice(char_font_item);
errbar.active = GetToggleButtonState(errbar_active_item);
errbar.barsize = GetCharSizeChoice(errbar_size_item);
errbar.linew = GetSpinChoice(errbar_width_item);
errbar.lines = GetOptionChoice(errbar_lines_item);
errbar.riser_linew = GetSpinChoice(errbar_riserlinew_item);
errbar.riser_lines = GetOptionChoice(errbar_riserlines_item);
avalue.active = GetToggleButtonState(avalue_active_item);
avalue.type = GetChoice(avalue_type_item);
avalue.size = GetCharSizeChoice(avalue_charsize_item);
avalue.font = GetOptionChoice(avalue_font_item);
avalue.color = GetOptionChoice(avalue_color_item);
avalue.angle = GetAngleChoice(avalue_angle_item);
avalue.format = GetOptionChoice(avalue_format_item);
avalue.prec = GetChoice(avalue_precision_item);
strcpy(avalue.prestr, xv_getstr(avalue_prestr));
strcpy(avalue.appstr, xv_getstr(avalue_appstr));
xv_evalexpr(avalue_offsetx, &avalue.offset.x );
xv_evalexpr(avalue_offsety, &avalue.offset.y);
cd = GetListChoices(toggle_symset_item, &selset);
if (cd < 1) {
errwin("No set selected");
return RETURN_FAILURE;
} else {
for(i = 0; i < cd; i++) {
setno = selset[i];
get_graph_plotarr(get_cg(), setno, &p);
p.symskip = symskip;
p.symsize = symsize;
p.symlinew = symlinew;
p.symlines = symlines;
p.symchar = symchar;
p.charfont = charfont;
p.filltype = filltype;
p.fillrule = fillrule;
p.setfillpen.pattern = fillpat;
p.setfillpen.color = fillcol;
if (cd == 1 || duplegs) {
strcpy(p.lstr, GetTextString(legend_str_item));
}
p.sym = sym;
p.linet = linet;
p.lines = line;
p.linew = wid;
p.linepen.color = color;
p.linepen.pattern = pattern;
p.sympen.color = symcolor;
p.sympen.pattern = sympattern;
p.symfillpen.color = symfillcolor;
p.symfillpen.pattern = symfillpattern;
p.dropline = dropline;
p.baseline = baseline;
p.baseline_type = baselinetype;
errbar.ptype = GetChoice(errbar_ptype_item);
errbar.pen.color = GetOptionChoice(errbar_color_item);
errbar.pen.pattern = GetOptionChoice(errbar_pattern_item);
errbar.arrow_clip = GetToggleButtonState(errbar_aclip_item);
errbar.cliplen = GetSpinChoice(errbar_cliplen_item);
p.errbar = errbar;
p.avalue = avalue;
set_graph_plotarr(get_cg(), setno, &p);
set_dataset_type(get_cg(), setno, type);
}
xfree(selset);
}
xdrawgraph();
return RETURN_SUCCESS;
}
/*
* freshen up symbol items, generally after a parameter
* file has been read
*/
static void UpdateSymbols(int gno, int value)
{
int i;
char val[24];
plotarr p;
if ((cset == value) && (value != -1)) {
get_graph_plotarr(gno, cset, &p);
SetOptionChoice(type_item, p.type);
for (i = 0; i < type_item->nchoices; i++) {
if (settype_cols(type_item->options[i].value) ==
settype_cols(p.type)) {
SetSensitive(type_item->options[i].widget, True);
} else {
SetSensitive(type_item->options[i].widget, False);
}
}
SetCharSizeChoice(symsize_item, p.symsize);
SetSpinChoice(symskip_item, p.symskip);
sprintf(val, "%d", p.symchar);
xv_setstr(symchar_item, val);
SetChoice(toggle_symbols_item, p.sym);
SetOptionChoice(symcolor_item, p.sympen.color);
SetOptionChoice(sympattern_item, p.sympen.pattern);
SetOptionChoice(symfillcolor_item, p.symfillpen.color);
SetOptionChoice(symfillpattern_item, p.symfillpen.pattern);
SetSpinChoice(symlinew_item, p.symlinew);
SetOptionChoice(symlines_item, p.symlines);
SetOptionChoice(char_font_item, p.charfont);
SetOptionChoice(toggle_color_item, p.linepen.color);
SetOptionChoice(toggle_pattern_item, p.linepen.pattern);
SetSpinChoice(toggle_width_item, p.linew);
SetToggleButtonState(dropline_item, p.dropline);
SetOptionChoice(toggle_lines_item, p.lines);
SetChoice(toggle_linet_item, p.linet);
SetChoice(toggle_filltype_item, p.filltype);
SetChoice(toggle_fillrule_item, p.fillrule);
SetOptionChoice(toggle_fillcol_item, p.setfillpen.color);
SetOptionChoice(toggle_fillpat_item, p.setfillpen.pattern);
SetToggleButtonState(baseline_item, p.baseline);
SetChoice(baselinetype_item, p.baseline_type);
SetTextString(legend_str_item, p.lstr);
SetToggleButtonState(errbar_active_item, p.errbar.active);
switch (p.type) {
case SET_XYDXDX:
case SET_XYDYDY:
case SET_XYDXDXDYDY:
SetSensitive(errbar_ptype_item[4], False);
break;
default:
SetSensitive(errbar_ptype_item[4], True);
break;
}
SetChoice(errbar_ptype_item, p.errbar.ptype);
SetOptionChoice(errbar_color_item, p.errbar.pen.color);
SetOptionChoice(errbar_pattern_item, p.errbar.pen.pattern);
SetToggleButtonState(errbar_aclip_item, p.errbar.arrow_clip);
SetSpinChoice(errbar_cliplen_item, p.errbar.cliplen);
SetSpinChoice(errbar_width_item, p.errbar.linew);
SetOptionChoice(errbar_lines_item, p.errbar.lines);
SetSpinChoice(errbar_riserlinew_item, p.errbar.riser_linew);
SetOptionChoice(errbar_riserlines_item, p.errbar.riser_lines);
SetCharSizeChoice(errbar_size_item, p.errbar.barsize);
SetToggleButtonState(avalue_active_item, p.avalue.active);
SetChoice(avalue_type_item, p.avalue.type);
SetCharSizeChoice(avalue_charsize_item, p.avalue.size);
SetOptionChoice(avalue_font_item, p.avalue.font);
SetOptionChoice(avalue_color_item, p.avalue.color);
SetAngleChoice(avalue_angle_item, p.avalue.angle);
SetOptionChoice(avalue_format_item, p.avalue.format);
SetChoice(avalue_precision_item, p.avalue.prec);
xv_setstr(avalue_prestr, p.avalue.prestr);
xv_setstr(avalue_appstr, p.avalue.appstr);
sprintf(val, "%f", p.avalue.offset.x);
xv_setstr(avalue_offsetx, val);
sprintf(val, "%f", p.avalue.offset.y);
xv_setstr(avalue_offsety, val);
/*
* set_graph_plotarr(gno, cset, &p);
*/
}
}
static void set_cset_proc(int n, int *values, void *data)
{
if (n == 1) {
cset = values[0];
UpdateSymbols(cg, cset);
}
}
void updatesymbols(int gno, int setno)
{
if (gno != cg) {
return;
}
if (setapp_dialog != NULL) {
if (SelectListChoice(toggle_symset_item, setno) == RETURN_SUCCESS) {
cset = setno;
}
}
}
static void setapp_data_proc(void *data)
{
int proc_type;
int *selset, cd;
int i, setno;
plotarr p;
int c = 0, bg = getbgcolor();
proc_type = (int) data;
cd = GetListChoices(toggle_symset_item, &selset);
if (cd < 1) {
errmsg("No set selected");
return;
} else {
for(i = 0; i < cd; i++) {
setno = selset[i];
switch (proc_type) {
case SETAPP_STRIP_LEGENDS:
set_legend_string(cg, setno,
mybasename(get_legend_string(cg, setno)));
break;
case SETAPP_LOAD_COMMENTS:
load_comments_to_legend(cg, setno);
break;
case SETAPP_ALL_COLORS:
while (c == bg || get_colortype(c) != COLOR_MAIN) {
c++;
c %= number_of_colors();
}
set_set_colors(cg, setno, c);
c++;
break;
case SETAPP_ALL_SYMBOLS:
get_graph_plotarr(cg, setno, &p);
p.sym = (i % (MAXSYM - 2)) + 1;
set_graph_plotarr(cg, setno, &p);
break;
case SETAPP_ALL_LINEW:
get_graph_plotarr(cg, setno, &p);
p.linew = ((i % (2*((int) MAX_LINEWIDTH) - 1)) + 1)/2.0;
set_graph_plotarr(cg, setno, &p);
break;
case SETAPP_ALL_LINES:
get_graph_plotarr(cg, setno, &p);
p.lines = (i % (number_of_linestyles() - 1)) + 1;
set_graph_plotarr(cg, setno, &p);
break;
case SETAPP_ALL_BW:
set_set_colors(cg, setno, 1);
break;
}
}
xfree(selset);
UpdateSymbols(cg, cset);
set_dirtystate();
xdrawgraph();
}
}
static void csync_cb(int value, void *data)
{
int mask = (int) data;
if (GetToggleButtonState(csync_item) != TRUE) {
return;
}
if (mask == CSYNC_LINE) {
SetOptionChoice(symcolor_item, value);
mask++;
}
if (mask == CSYNC_SYM) {
SetOptionChoice(symfillcolor_item, value);
SetOptionChoice(errbar_color_item, value);
mask++;
}
}
syntax highlighted by Code2HTML, v. 0.9.1