Commit 52bf7040 authored by claes's avatar claes

Storage environment first versin

parent 563fa014
/*
* Proview $Id: ge_curve_gtk.cpp,v 1.2 2007-01-15 13:19:09 claes Exp $
* Proview $Id: ge_curve_gtk.cpp,v 1.3 2008-07-17 11:21:25 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
......@@ -121,6 +121,22 @@ void GeCurveGtk::activate_scroll_left( GtkWidget *w, gpointer data)
curve->set_inputfocus();
}
void GeCurveGtk::activate_higher_res( GtkWidget *w, gpointer data)
{
GeCurve *curve = (GeCurve *)data;
if ( curve->higher_res_cb)
(curve->higher_res_cb)( curve->parent_ctx);
}
void GeCurveGtk::activate_lower_res( GtkWidget *w, gpointer data)
{
GeCurve *curve = (GeCurve *)data;
if ( curve->lower_res_cb)
(curve->lower_res_cb)( curve->parent_ctx);
}
void GeCurveGtk::activate_background( GtkWidget *w, gpointer data)
{
GeCurve *curve = (GeCurve *)data;
......@@ -462,6 +478,22 @@ GeCurveGtk::GeCurveGtk( void *gc_parent_ctx,
g_object_set( tools_page_right, "can-focus", FALSE, NULL);
gtk_toolbar_append_widget( tools, tools_page_right, CoWowGtk::translate_utf8("Page right"), "");
GtkWidget *tools_higher_res = gtk_button_new();
dcli_translate_filename( fname, "$pwr_exe/ge_redo.png");
gtk_container_add( GTK_CONTAINER(tools_higher_res),
gtk_image_new_from_file( fname));
g_signal_connect(tools_higher_res, "clicked", G_CALLBACK(activate_higher_res), this);
g_object_set( tools_higher_res, "can-focus", FALSE, NULL);
gtk_toolbar_append_widget( tools, tools_higher_res, CoWowGtk::translate_utf8("Higer resolution"), "");
GtkWidget *tools_lower_res = gtk_button_new();
dcli_translate_filename( fname, "$pwr_exe/ge_undo.png");
gtk_container_add( GTK_CONTAINER(tools_lower_res),
gtk_image_new_from_file( fname));
g_signal_connect(tools_lower_res, "clicked", G_CALLBACK(activate_lower_res), this);
g_object_set( tools_lower_res, "can-focus", FALSE, NULL);
gtk_toolbar_append_widget( tools, tools_lower_res, CoWowGtk::translate_utf8("Lower resolution"), "");
GtkWidget *w;
grownames_main_widget = scrolledgrowwidgetgtk_new( init_grownames_cb, this, &w);
......
/*
* Proview $Id: ge_curve_gtk.h,v 1.2 2007-01-15 13:19:09 claes Exp $
* Proview $Id: ge_curve_gtk.h,v 1.3 2008-07-17 11:21:25 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
......@@ -69,6 +69,8 @@ class GeCurveGtk : public GeCurve {
static void activate_page_right( GtkWidget *w, gpointer data);
static void activate_scroll_left( GtkWidget *w, gpointer data);
static void activate_scroll_right( GtkWidget *w, gpointer data);
static void activate_higher_res( GtkWidget *w, gpointer data);
static void activate_lower_res( GtkWidget *w, gpointer data);
static void activate_background( GtkWidget *w, gpointer data);
static void activate_showname( GtkWidget *w, gpointer data);
static void activate_filledcurves( GtkWidget *w, gpointer data);
......
/*
* Proview $Id: ge_curve.cpp,v 1.18 2008-05-13 13:59:02 claes Exp $
* Proview $Id: ge_curve.cpp,v 1.19 2008-07-17 11:21:25 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
......@@ -1041,6 +1041,18 @@ void GeCurve::set_title( char *str)
write_title( str);
}
void GeCurve::measure_window( double *ll_x, double *ll_y, double *ur_x, double *ur_y)
{
grow_MeasureWindow( growcurve_ctx, ll_x, ll_y, ur_x, ur_y);
}
void GeCurve::set_curvedata( GeCurveData *curve_data)
{
if ( cd)
delete cd;
cd = curve_data;
}
GeCurve::~GeCurve()
{
}
......@@ -1055,8 +1067,8 @@ GeCurve::GeCurve( void *gc_parent_ctx,
border_dark(glow_eDrawType_Color28),
border_bright(glow_eDrawType_Color22),
cd(0), axis_window_width(0), auto_refresh(1), axis_displayed(1),
minmax_idx(0), close_cb(0), help_cb(0), initial_right_position(pos_right),
last_cursor_x(0), last_mark_x(0), deferred_configure_axes(0)
minmax_idx(0), close_cb(0), help_cb(0), higher_res_cb(0), lower_res_cb(0),
initial_right_position(pos_right), last_cursor_x(0), last_mark_x(0), deferred_configure_axes(0)
{
pwr_tStatus sts;
......@@ -1093,6 +1105,8 @@ GeCurveData::GeCurveData( curve_eDataType datatype) :
memset( data, 0, sizeof(data));
for ( int i = 0; i < CURVE_MAX_COLS; i++) {
strcpy( unit[i], "");
strcpy( format[i], "");
strcpy( name[i], "");
max_value[i] = 0;
min_value[i] = 0;
min_value_axis[i] = 0;
......@@ -1301,7 +1315,7 @@ void GeCurveData::scale( int axis_type, int value_type,
else
i_value = int(min_value - 1);
minval = i_value;
min_lines = abs(i_value);
min_lines = i_value;
}
else if ( max_value - min_value < 1000) {
i_value = int(max_value/10) * 10 + 10;
......@@ -1313,7 +1327,7 @@ void GeCurveData::scale( int axis_type, int value_type,
else
i_value = int(min_value/10) * 10 - 10;
minval = i_value;
min_lines = abs(i_value) / 10;
min_lines = i_value / 10;
}
else if ( max_value - min_value < 3000) {
i_value = int(max_value/50) * 50 + 50;
......@@ -1325,7 +1339,7 @@ void GeCurveData::scale( int axis_type, int value_type,
else
i_value = int(min_value/50) * 50 - 50;
minval = i_value;
min_lines = abs(i_value) / 50;
min_lines = i_value / 50;
}
else if ( max_value - min_value < 10000) {
i_value = int(max_value/100) * 100 + 100;
......@@ -1337,7 +1351,7 @@ void GeCurveData::scale( int axis_type, int value_type,
else
i_value = int(min_value/100) * 100 - 100;
minval = i_value;
min_lines = abs(i_value) / 100;
min_lines = i_value / 100;
}
else if ( max_value - min_value < 30000) {
i_value = int(max_value/600) * 600 + 600;
......@@ -1349,7 +1363,7 @@ void GeCurveData::scale( int axis_type, int value_type,
else
i_value = int(min_value/60) * 60 - 60;
minval = i_value;
min_lines = abs(i_value) / 60;
min_lines = i_value / 60;
format_type = 1;
trendlinequot = 2;
axlinequot = 10;
......@@ -1365,7 +1379,7 @@ void GeCurveData::scale( int axis_type, int value_type,
else
i_value = int(min_value/600) * 600 - 600;
minval = i_value;
min_lines = abs(i_value) / 600;
min_lines = i_value / 600;
axlinequot = 6;
axvaluequot = 2;
format_type = 1;
......@@ -1380,7 +1394,7 @@ void GeCurveData::scale( int axis_type, int value_type,
else
i_value = int(min_value/600) * 600 - 600;
minval = i_value;
min_lines = abs(i_value) / 600;
min_lines = i_value / 600;
axlinequot = 6;
axvaluequot = 12;
format_type = 1;
......@@ -1395,7 +1409,7 @@ void GeCurveData::scale( int axis_type, int value_type,
else
i_value = int(min_value/3600) * 3600 - 3600;
minval = i_value;
min_lines = abs(i_value) / 3600;
min_lines = i_value / 3600;
axlinequot = 2 * int((max_value - min_value)/140000);
axvaluequot = 2 * int((max_value - min_value)/140000);
format_type = 2;
......@@ -1512,13 +1526,13 @@ void GeCurveData::scale( int axis_type, int value_type,
if ( ODD(i_value) && i_value != 5 && !allow_odd)
i_value -= 1;
minval = double(i_value) * pow( 10, n);
min_lines = -i_value;
min_lines = i_value;
}
}
}
*max_value_axis = maxval;
*min_value_axis = minval;
*trend_lines = abs(max_lines + min_lines) + 1;
*trend_lines = abs(max_lines - min_lines) + 1;
*axis_lines = (*trend_lines - 1) * trendlinequot + 1;
*axis_linelongq = axlinequot;
*axis_valueq = axvaluequot;
......
/*
* Proview $Id: ge_curve.h,v 1.10 2007-01-15 13:19:09 claes Exp $
* Proview $Id: ge_curve.h,v 1.11 2008-07-17 11:21:25 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
......@@ -120,6 +120,8 @@ class GeCurve {
int minmax_idx;
void (*close_cb)( void *);
void (*help_cb)( void *);
void (*higher_res_cb)( void *);
void (*lower_res_cb)( void *);
int initial_right_position;
char title[300];
double last_cursor_x;
......@@ -145,6 +147,7 @@ class GeCurve {
void set_time( pwr_tTime time);
void print( char *filename);
void scroll( double value);
void measure_window( double *ll_x, double *ll_y, double *ur_x, double *ur_y);
void activate_exit();
void activate_configure();
void activate_print();
......@@ -152,7 +155,8 @@ class GeCurve {
void activate_filledcurves( int set);
void activate_help();
void activate_minmax_ok( double min_value, double max_value);
void set_curvedata( GeCurveData *curve_data);
static int growcurve_cb( GlowCtx *ctx, glow_tEvent event);
static int init_growcurve_cb( GlowCtx *fctx, void *client_data);
static int growaxis_cb( GlowCtx *ctx, glow_tEvent event);
......
/*
* Proview $Id: xtt_dshist_gtk.cpp,v 1.1 2008-07-17 11:20:33 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* 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 the program, if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include "flow_std.h"
#include <stdio.h>
#include <stdlib.h>
#include <vector.h>
#include <gtk/gtk.h>
#include "pwr.h"
#include "pwr_baseclasses.h"
#include "rt_gdh.h"
#include "rt_gdh_msg.h"
#include "co_cdh.h"
#include "co_time.h"
#include "co_wow_gtk.h"
#include "rt_xnav_msg.h"
#include "flow.h"
#include "flow_browctx.h"
#include "flow_browapi.h"
#include "glow_growctx.h"
#include "glow_growapi.h"
#include "glow_curvectx.h"
#include "glow_curveapi.h"
#include "xtt_xnav.h"
#include "xtt_dshist_gtk.h"
#include "ge_curve_gtk.h"
XttDsHistGtk::XttDsHistGtk( void *parent_ctx,
GtkWidget *parent_wid,
char *name,
GtkWidget **w,
pwr_tOid *xn_oid,
pwr_tOName *xn_aname,
sevcli_tCtx xn_scctx,
int *sts) :
XttDsHist( parent_ctx, name, xn_oid, xn_aname, xn_scctx, sts), parent_widget(parent_wid)
{
char title[250];
if ( EVEN(*sts))
// Error from XttDsHist
return;
*sts = XNAV__SUCCESS;
curve = new GeCurveGtk( this, parent_widget, title, NULL, gcd, 0);
curve->close_cb = dshist_close_cb;
curve->help_cb = dshist_help_cb;
curve->higher_res_cb = dshist_higher_res_cb;
curve->lower_res_cb = dshist_lower_res_cb;
wow = new CoWowGtk( parent_widget);
timerid = wow->timer_new();
timerid->add( 1000, dshist_scan, this);
}
XttDsHistGtk::~XttDsHistGtk()
{
timerid->remove();
delete curve;
}
/*
* Proview $Id: xtt_dshist_gtk.h,v 1.1 2008-07-17 11:20:33 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* 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 the program, if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef xtt_dshist_gtk_h
#define xtt_dshist_gtk_h
/* xtt_dshist_gtk.h -- DsHist curves */
#ifndef xtt_dshist_h
# include "xtt_dshist.h"
#endif
class XttDsHistGtk : public XttDsHist {
public:
GtkWidget *parent_widget; //!< Parent widget.
XttDsHistGtk( void *xn_parent_ctx,
GtkWidget *xn_parent_wid,
char *xn_name,
GtkWidget **w,
pwr_tOid *xn_oid,
pwr_tOName *xn_aname,
sevcli_tCtx xn_scctx,
int *sts);
~XttDsHistGtk();
};
#endif
/*
* Proview $Id: xtt_dshist.cpp,v 1.1 2008-07-17 11:20:33 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* 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 the program, if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include "flow_std.h"
#include <stdio.h>
#include <stdlib.h>
#include <vector.h>
#include "pwr.h"
#include "pwr_baseclasses.h"
#include "rt_gdh.h"
#include "rt_gdh_msg.h"
#include "co_cdh.h"
#include "co_time.h"
#include "co_wow.h"
#include "rt_sev_msg.h"
#include "flow.h"
#include "flow_browctx.h"
#include "flow_browapi.h"
#include "glow_growctx.h"
#include "glow_growapi.h"
#include "glow_curvectx.h"
#include "glow_curveapi.h"
#include "xtt_xnav.h"
#include "xtt_dshist.h"
#include "ge_curve.h"
XttDsHist::XttDsHist( void *parent_ctx,
char *name,
pwr_tOid *xn_oid,
pwr_tOName *xn_aname,
sevcli_tCtx xn_scctx,
int *sts) :
xnav(parent_ctx), gcd(0), curve(0), rows(0), vsize(0), timerid(0), close_cb(0), help_cb(0),
first_scan(1), scctx(xn_scctx), oid(xn_oid[0])
{
strncpy( aname, xn_aname[0], sizeof(aname));
get_data( sts, pwr_cNTime, pwr_cNTime);
if ( EVEN(*sts)) return;
cdh_StrncpyCutOff( title, name, sizeof(title), 1);
}
XttDsHist::~XttDsHist()
{
}
int XttDsHist::get_data( pwr_tStatus *sts, pwr_tTime from, pwr_tTime to)
{
pwr_tTime *tbuf;
void *vbuf;
pwr_tDeltaTime trange;
sevcli_get_itemdata( sts, scctx, oid, aname, from, to, 500, &tbuf, &vbuf,
&rows, &vtype, &vsize);
if ( EVEN(*sts))
return 0;
// Create data for time axis
gcd = new GeCurveData( curve_eDataType_DsTrend);
gcd->data[0] = (double *) calloc( 1, 8 * rows);
for ( int i = 0; i < rows; i++)
gcd->data[0][i] = tbuf[i].tv_sec;
strcpy( gcd->name[0], "Time");
gcd->axis_type[0] = curve_eAxis_x;
strcpy( gcd->format[0], "%10t");
strcpy( gcd->name[1], aname);
gcd->data[1] = (double *) calloc( 1, 8 * rows);
for ( int i = 0; i < rows; i++) {
switch ( vtype) {
case pwr_eType_Int64:
gcd->data[1][i] = ((pwr_tInt32 *)vbuf)[i];
break;
case pwr_eType_Int32:
gcd->data[1][i] = ((pwr_tInt32 *)vbuf)[i];
break;
case pwr_eType_Int16:
gcd->data[1][i] = ((pwr_tInt32 *)vbuf)[i];
break;
case pwr_eType_Int8:
gcd->data[1][i] = ((pwr_tInt32 *)vbuf)[i];
break;
case pwr_eType_UInt64:
gcd->data[1][i] = ((pwr_tUInt32 *)vbuf)[i];
break;
case pwr_eType_UInt32:
gcd->data[1][i] = ((pwr_tUInt32 *)vbuf)[i];
break;
case pwr_eType_UInt16:
gcd->data[1][i] = ((pwr_tUInt32 *)vbuf)[i];
break;
case pwr_eType_UInt8:
gcd->data[1][i] = ((pwr_tUInt32 *)vbuf)[i];
break;
case pwr_eType_Float32:
gcd->data[1][i] = ((pwr_tFloat32 *)vbuf)[i];
break;
case pwr_eType_Float64:
gcd->data[1][i] = ((pwr_tFloat64 *)vbuf)[i];
break;
case pwr_eType_Boolean:
gcd->data[1][i] = ((pwr_tBoolean *)vbuf)[i];
break;
default:
*sts = SEV__CURVETYPE;
return 0;
}
}
free( tbuf);
free( vbuf);
gcd->axis_type[1] = curve_eAxis_y;
gcd->cols = 1 + 1;
gcd->rows = rows;
gcd->get_borders();
gcd->get_default_axis();
if ( to.tv_sec != 0 && from.tv_sec != 0) {
time_Adiff( &trange, &to, &from);
if ( time_DToFloat( 0, &trange) < 600)
strcpy( gcd->format[0], "%10t");
else
strcpy( gcd->format[0], "%11t");
}
else
strcpy( gcd->format[0], "%11t");
gcd->select_color( 0);
if ( curve) {
curve->set_curvedata( gcd); // This will free the old gcd
curve->configure_curves();
curve->configure_axes();
}
*sts = SEV__SUCCESS;
return 1;
}
void XttDsHist::pop()
{
curve->pop();
}
void XttDsHist::dshist_close_cb( void *ctx)
{
XttDsHist *dshist = (XttDsHist *) ctx;
if ( dshist->close_cb)
(dshist->close_cb)( dshist->xnav, dshist);
else
delete dshist;
}
void XttDsHist::dshist_higher_res_cb( void *ctx)
{
XttDsHist *dshist = (XttDsHist *) ctx;
double ll_x, ll_y, ur_x, ur_y;
pwr_tTime t_low, t_high;
pwr_tStatus sts;
dshist->curve->measure_window( &ll_x, &ll_y, &ur_x, &ur_y);
t_low.tv_sec = int( dshist->gcd->min_value_axis[0] +
ll_x / 200 * (dshist->gcd->max_value_axis[0] - dshist->gcd->min_value_axis[0]));
t_low.tv_nsec = 0;
t_high.tv_sec = int( dshist->gcd->min_value_axis[0] +
ur_x / 200 * (dshist->gcd->max_value_axis[0] - dshist->gcd->min_value_axis[0]));
t_high.tv_nsec = 0;
{
char s1[40], s2[40];
time_AtoAscii( &t_low, time_eFormat_NumDateAndTime, s1, sizeof(s1));
time_AtoAscii( &t_high, time_eFormat_NumDateAndTime, s2, sizeof(s2));
printf( "Low: %s, High: %s\n", s1, s2);
}
dshist->get_data( &sts, t_low, t_high);
}
void XttDsHist::dshist_lower_res_cb( void *ctx)
{
XttDsHist *dshist = (XttDsHist *) ctx;
double ll_x, ll_y, ur_x, ur_y;
pwr_tTime t_low, t_high;
pwr_tStatus sts;
dshist->curve->measure_window( &ll_x, &ll_y, &ur_x, &ur_y);
t_low.tv_sec = int( dshist->gcd->min_value_axis[0] -
5 * (dshist->gcd->max_value_axis[0] - dshist->gcd->min_value_axis[0]));
t_low.tv_nsec = 0;
t_high.tv_sec = int( dshist->gcd->max_value_axis[0] +
5 * (dshist->gcd->max_value_axis[0] - dshist->gcd->min_value_axis[0]));
t_high.tv_nsec = 0;
{
char s1[40], s2[40];
time_AtoAscii( &t_low, time_eFormat_NumDateAndTime, s1, sizeof(s1));
time_AtoAscii( &t_high, time_eFormat_NumDateAndTime, s2, sizeof(s2));
printf( "Low: %s, High: %s\n", s1, s2);
}
dshist->get_data( &sts, t_low, t_high);
}
void XttDsHist::dshist_help_cb( void *ctx)
{
XttDsHist *dshist = (XttDsHist *) ctx;
if ( dshist->help_cb)
(dshist->help_cb)( dshist->xnav, "dshistwindow");
}
void XttDsHist::dshist_scan( void *data)
{
XttDsHist *dshist = (XttDsHist *) data;
if ( dshist->timerid)
dshist->timerid->add( 1000, dshist_scan, dshist);
}
/*
* Proview $Id: xtt_dshist.h,v 1.1 2008-07-17 11:20:33 claes Exp $
* Copyright (C) 2005 SSAB Oxelösund AB.
*
* 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 the program, if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef xtt_dshist_h
#define xtt_dshist_h
/* xtt_dshist.h -- Dshist curves */
#ifndef pwr_h
# include "pwr.h"
#endif
#ifndef ge_curve_h
# include "ge_curve.h"
#endif
#ifndef rt_sevcli_h
# include "rt_sevcli.h"
#endif
/*! \file xtt_dshist.h
\brief Contains the XttDsHist class. */
/*! \addtogroup Xtt */
/*@{*/
#define XTT_DSHIST_MAX 20
class CoWow;
class CoWowTimer;
//! Window that displays dshist curve in a DsDsHistCurve object.
/*!
A DsDsHistCurve references a data array for the time axis, and up to 10 data arrays
with stored data. These arrays are displayed in the XttDsHist window. The measurement
of these curves are triggered manually, on a digital signal, or on a level of one of
the attributes. When the measurement is completed this is signaled with the New attribute
in the DsDsHistCurve object. The XttDsHist window then has to read the new data and
reconfigure the curves. XttDsHist uses the GeCurve class to display the curves.
*/
class XttDsHist {
public:
void *xnav; //!< Pointer to parent XNav.
GeCurveData *gcd; //!< Curve data for GeCurve object.
GeCurve *curve; //!< Curve window.
int rows; //!< Max number of points in curves.
pwr_eType vtype;
unsigned int vsize;
CoWowTimer *timerid; //!< Time id for scan.
void (*close_cb)( void *, XttDsHist *); //!< Close callback to parent.
void (*help_cb)( void *, char *); //!< Open help window.
bool first_scan; //!< Indicates that this is the first scan.
char title[250]; //!< Window title
sevcli_tCtx scctx;
pwr_tOName aname;
pwr_tOid oid;
CoWow *wow;
//! Constructor
XttDsHist( void *xn_parent_ctx,
char *xn_name,
pwr_tOid* xn_oid,
pwr_tOName *xn_aname,
sevcli_tCtx xn_scctx,
int *sts);
//! Destructor
virtual ~XttDsHist();
//! Pop dshist window.
void pop();
int get_data( pwr_tStatus *sts, pwr_tTime from, pwr_tTime to);
static void dshist_close_cb( void *ctx);
static void dshist_higher_res_cb( void *ctx);
static void dshist_lower_res_cb( void *ctx);
static void dshist_help_cb( void *ctx);
static void dshist_scan( void *data);
};
/*@}*/
#endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment