Commit d1b222c0 authored by Claes Sjofors's avatar Claes Sjofors

Sev curve window time selecton added and function to adde curve

parent 964a98e5
...@@ -202,13 +202,12 @@ void XttTblGtk::activate_list_layout( GtkWidget *w, gpointer data) ...@@ -202,13 +202,12 @@ void XttTblGtk::activate_list_layout( GtkWidget *w, gpointer data)
xtt->tblnav->show_list(); xtt->tblnav->show_list();
} }
XttSevHist *XttTblGtk::sevhist_new( pwr_tOid *oidv, pwr_tOName *anamev, pwr_tOName *onamev, bool *sevhistobjectv) XttSevHist *XttTblGtk::sevhist_new( pwr_tOid *oidv, pwr_tOName *anamev, pwr_tOName *onamev, bool *sevhistobjectv, pwr_tStatus *sts)
{ {
GtkWidget *w; GtkWidget *w;
pwr_tStatus sts;
return new XttSevHistGtk( (void *)this, toplevel, "SevHist", &w, oidv, anamev, onamev, return new XttSevHistGtk( (void *)this, toplevel, "Process History", &w, oidv, anamev, onamev,
sevhistobjectv, sevcli, &sts); sevhistobjectv, sevcli, sts);
} }
CoLogin *XttTblGtk::login_new( const char *name, CoLogin *XttTblGtk::login_new( const char *name,
...@@ -338,8 +337,11 @@ XttTblGtk::XttTblGtk( GtkWidget *a_parent_wid, ...@@ -338,8 +337,11 @@ XttTblGtk::XttTblGtk( GtkWidget *a_parent_wid,
// Functions entry // Functions entry
GtkWidget *functions_opensevhist = gtk_menu_item_new_with_mnemonic( "_Open SevHist"); GtkWidget *functions_opensevhist = gtk_menu_item_new_with_mnemonic( CoWowGtk::translate_utf8("_Open Process History"));
g_signal_connect(functions_opensevhist, "activate", G_CALLBACK(activate_opensevhist), this); g_signal_connect(functions_opensevhist, "activate", G_CALLBACK(activate_opensevhist), this);
gtk_widget_add_accelerator( functions_opensevhist, "activate", accel_g,
'g', GdkModifierType(GDK_CONTROL_MASK),
GTK_ACCEL_VISIBLE);
GtkWidget *functions_command = gtk_menu_item_new_with_mnemonic(CoWowGtk::translate_utf8("Co_mmand")); GtkWidget *functions_command = gtk_menu_item_new_with_mnemonic(CoWowGtk::translate_utf8("Co_mmand"));
g_signal_connect( functions_command, "activate", g_signal_connect( functions_command, "activate",
...@@ -348,7 +350,7 @@ XttTblGtk::XttTblGtk( GtkWidget *a_parent_wid, ...@@ -348,7 +350,7 @@ XttTblGtk::XttTblGtk( GtkWidget *a_parent_wid,
'b', GdkModifierType(GDK_CONTROL_MASK), 'b', GdkModifierType(GDK_CONTROL_MASK),
GTK_ACCEL_VISIBLE); GTK_ACCEL_VISIBLE);
GtkWidget *functions_delete_item = gtk_menu_item_new_with_mnemonic( "_Delete Item"); GtkWidget *functions_delete_item = gtk_menu_item_new_with_mnemonic( CoWowGtk::translate_utf8("_Delete Item"));
g_signal_connect(functions_delete_item, "activate", G_CALLBACK(activate_delete_item), this); g_signal_connect(functions_delete_item, "activate", G_CALLBACK(activate_delete_item), this);
GtkMenu *functions_menu = (GtkMenu *) g_object_new( GTK_TYPE_MENU, NULL); GtkMenu *functions_menu = (GtkMenu *) g_object_new( GTK_TYPE_MENU, NULL);
...@@ -356,16 +358,16 @@ XttTblGtk::XttTblGtk( GtkWidget *a_parent_wid, ...@@ -356,16 +358,16 @@ XttTblGtk::XttTblGtk( GtkWidget *a_parent_wid,
gtk_menu_shell_append(GTK_MENU_SHELL(functions_menu), functions_command); gtk_menu_shell_append(GTK_MENU_SHELL(functions_menu), functions_command);
gtk_menu_shell_append(GTK_MENU_SHELL(functions_menu), functions_delete_item); gtk_menu_shell_append(GTK_MENU_SHELL(functions_menu), functions_delete_item);
GtkWidget *functions = gtk_menu_item_new_with_mnemonic("_Functions"); GtkWidget *functions = gtk_menu_item_new_with_mnemonic(CoWowGtk::translate_utf8("_Functions"));
gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar), functions); gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar), functions);
gtk_menu_item_set_submenu(GTK_MENU_ITEM(functions), GTK_WIDGET(functions_menu)); gtk_menu_item_set_submenu(GTK_MENU_ITEM(functions), GTK_WIDGET(functions_menu));
// View menu // View menu
GtkWidget *view_tree_layout = gtk_menu_item_new_with_mnemonic( "_Tree Layout"); GtkWidget *view_tree_layout = gtk_menu_item_new_with_mnemonic( CoWowGtk::translate_utf8("_Tree Layout"));
g_signal_connect(view_tree_layout, "activate", G_CALLBACK(activate_tree_layout), this); g_signal_connect(view_tree_layout, "activate", G_CALLBACK(activate_tree_layout), this);
GtkWidget *view_list_layout = gtk_menu_item_new_with_mnemonic( "_List Layout"); GtkWidget *view_list_layout = gtk_menu_item_new_with_mnemonic( CoWowGtk::translate_utf8("_List Layout"));
g_signal_connect(view_list_layout, "activate", G_CALLBACK(activate_list_layout), this); g_signal_connect(view_list_layout, "activate", G_CALLBACK(activate_list_layout), this);
GtkWidget *view_zoom_in = gtk_image_menu_item_new_with_mnemonic(CoWowGtk::translate_utf8("Zoom _In")); GtkWidget *view_zoom_in = gtk_image_menu_item_new_with_mnemonic(CoWowGtk::translate_utf8("Zoom _In"));
...@@ -419,7 +421,7 @@ XttTblGtk::XttTblGtk( GtkWidget *a_parent_wid, ...@@ -419,7 +421,7 @@ XttTblGtk::XttTblGtk( GtkWidget *a_parent_wid,
gtk_menu_shell_append(GTK_MENU_SHELL(help_menu), help_project); gtk_menu_shell_append(GTK_MENU_SHELL(help_menu), help_project);
gtk_menu_shell_append(GTK_MENU_SHELL(help_menu), help_proview); gtk_menu_shell_append(GTK_MENU_SHELL(help_menu), help_proview);
GtkWidget *help = gtk_menu_item_new_with_mnemonic("_Help"); GtkWidget *help = gtk_menu_item_new_with_mnemonic(CoWowGtk::translate_utf8("_Help"));
gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar), help); gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar), help);
gtk_menu_item_set_submenu(GTK_MENU_ITEM(help), GTK_WIDGET(help_menu)); gtk_menu_item_set_submenu(GTK_MENU_ITEM(help), GTK_WIDGET(help_menu));
...@@ -432,7 +434,7 @@ XttTblGtk::XttTblGtk( GtkWidget *a_parent_wid, ...@@ -432,7 +434,7 @@ XttTblGtk::XttTblGtk( GtkWidget *a_parent_wid,
gtk_image_new_from_file( fname)); gtk_image_new_from_file( fname));
g_signal_connect(tools_opensevhist, "clicked", G_CALLBACK(activate_opensevhist), this); g_signal_connect(tools_opensevhist, "clicked", G_CALLBACK(activate_opensevhist), this);
g_object_set( tools_opensevhist, "can-focus", FALSE, NULL); g_object_set( tools_opensevhist, "can-focus", FALSE, NULL);
gtk_toolbar_append_widget( tools, tools_opensevhist,CoWowGtk::translate_utf8("Open hist item"), ""); gtk_toolbar_append_widget( tools, tools_opensevhist,CoWowGtk::translate_utf8("Open history item"), "");
GtkWidget *tools_zoom_in = gtk_button_new(); GtkWidget *tools_zoom_in = gtk_button_new();
dcli_translate_filename( fname, "$pwr_exe/xtt_zoom_in.png"); dcli_translate_filename( fname, "$pwr_exe/xtt_zoom_in.png");
......
...@@ -49,7 +49,8 @@ class XttTblGtk : public XttTbl { ...@@ -49,7 +49,8 @@ class XttTblGtk : public XttTbl {
CoWowEntryGtk *cmd_entry; CoWowEntryGtk *cmd_entry;
void message( char severity, char *message); void message( char severity, char *message);
XttSevHist *sevhist_new( pwr_tOid *oidv, pwr_tOName *anamev, pwr_tOName *onamev, bool *sevhistobjectv); XttSevHist *sevhist_new( pwr_tOid *oidv, pwr_tOName *anamev, pwr_tOName *onamev,
bool *sevhistobjectv, pwr_tStatus *sts);
CoLogin *login_new( const char *wl_name, CoLogin *login_new( const char *wl_name,
const char *wl_groupname, const char *wl_groupname,
void (* wl_bc_success)( void *), void (* wl_bc_success)( void *),
......
...@@ -40,8 +40,11 @@ ...@@ -40,8 +40,11 @@
#include "glow_growapi.h" #include "glow_growapi.h"
#include "flow_msg.h" #include "flow_msg.h"
#include "glow_curvectx.h"
#include "xtt_tbl.h" #include "xtt_tbl.h"
#include "xtt_tblnav.h" #include "xtt_tblnav.h"
#include "xtt_sevhist.h"
XttTbl::~XttTbl() XttTbl::~XttTbl()
{ {
...@@ -126,6 +129,8 @@ void XttTbl::activate_print() ...@@ -126,6 +129,8 @@ void XttTbl::activate_print()
void XttTbl::activate_opensevhist() void XttTbl::activate_opensevhist()
{ {
ItemBase *item; ItemBase *item;
XttSevHist *hist;
pwr_tStatus sts;
if ( !tblnav->get_select( &item)) { if ( !tblnav->get_select( &item)) {
message( 'E', "Select an storage item"); message( 'E', "Select an storage item");
...@@ -142,7 +147,12 @@ void XttTbl::activate_opensevhist() ...@@ -142,7 +147,12 @@ void XttTbl::activate_opensevhist()
bool sevhistobjectv[2] = {hi->attrnum > 1, false}; bool sevhistobjectv[2] = {hi->attrnum > 1, false};
if( !sevhistobjectv[0] ) { if( !sevhistobjectv[0] ) {
strcpy( anamev[0], hi->objectattrlist[0].aname); strcpy( anamev[0], hi->objectattrlist[0].aname);
sevhist_new( oidv, anamev, onamev, sevhistobjectv); strcpy( onamev[0], hi->oname);
hist = sevhist_new( oidv, anamev, onamev, sevhistobjectv, &sts);
if ( ODD(sts)) {
hist->help_cb = sevhist_help_cb;
hist->get_select_cb = sevhist_get_select_cb;
}
} }
else { else {
char *s; char *s;
...@@ -156,7 +166,11 @@ void XttTbl::activate_opensevhist() ...@@ -156,7 +166,11 @@ void XttTbl::activate_opensevhist()
strcpy( aname, s+1); strcpy( aname, s+1);
} }
strcpy( anamev[0], aname); strcpy( anamev[0], aname);
sevhist_new( oidv, anamev, onamev, sevhistobjectv); hist = sevhist_new( oidv, anamev, onamev, sevhistobjectv, &sts);
if ( ODD(sts)) {
hist->help_cb = sevhist_help_cb;
hist->get_select_cb = sevhist_get_select_cb;
}
} }
break; break;
} }
...@@ -253,3 +267,35 @@ void XttTbl::activate_help_proview() ...@@ -253,3 +267,35 @@ void XttTbl::activate_help_proview()
CoXHelp::dhelp( "version", "", navh_eHelpFile_Other, "$pwr_exe/sev_xtt_version_help.dat", 0); CoXHelp::dhelp( "version", "", navh_eHelpFile_Other, "$pwr_exe/sev_xtt_version_help.dat", 0);
} }
void XttTbl::sevhist_help_cb( void *ctx, const char *key)
{
CoXHelp::dhelp( key, "", navh_eHelpFile_Base, NULL, 0);
}
int XttTbl::sevhist_get_select_cb( void *ctx, pwr_tOid *oid, char *aname, char *oname)
{
XttTbl *xtttbl = (XttTbl *) ctx;
ItemBase *item;
if ( !xtttbl->tblnav->get_select( &item)) {
xtttbl->message( 'E', "Select an storage item");
return 0;
}
switch ( item->type) {
case tblnav_eItemType_Local:
case tblnav_eItemType_TreeLocal: {
TblNav_sevhistobject *hi = &((ItemLocal *)item)->item;
if ( hi->attrnum > 1)
return 0;
*oid = hi->oid;
strcpy( aname, hi->objectattrlist[0].aname);
strcpy( oname, hi->oname);
break;
}
default:
return 0;
}
return 1;
}
...@@ -56,7 +56,7 @@ class XttTbl { ...@@ -56,7 +56,7 @@ class XttTbl {
virtual void message( char severity, const char *message) {} virtual void message( char severity, const char *message) {}
virtual XttSevHist *sevhist_new( pwr_tOid *oidv, pwr_tOName *anamev, pwr_tOName *onamev, virtual XttSevHist *sevhist_new( pwr_tOid *oidv, pwr_tOName *anamev, pwr_tOName *onamev,
bool *sevhistobjectv) { return 0;} bool *sevhistobjectv, pwr_tStatus *sts) { return 0;}
virtual CoLogin *login_new( const char *wl_name, virtual CoLogin *login_new( const char *wl_name,
const char *wl_groupname, const char *wl_groupname,
void (* wl_bc_success)( void *), void (* wl_bc_success)( void *),
...@@ -81,6 +81,8 @@ class XttTbl { ...@@ -81,6 +81,8 @@ class XttTbl {
static int is_authorized( void *ctx, unsigned int access, int msg); static int is_authorized( void *ctx, unsigned int access, int msg);
static int command_cb( void *ctx, char *cmd); static int command_cb( void *ctx, char *cmd);
static void delete_item_yes( void *ctx, void *data); static void delete_item_yes( void *ctx, void *data);
static int sevhist_get_select_cb( void *ctx, pwr_tOid *oid, char *aname, char *oname);
static void sevhist_help_cb( void *ctx, const char *key);
virtual ~XttTbl(); virtual ~XttTbl();
int command( char* input_str); int command( char* input_str);
......
...@@ -44,11 +44,17 @@ ...@@ -44,11 +44,17 @@
#include "flow.h" #include "flow.h"
#include "flow_browctx.h" #include "flow_browctx.h"
#include "flow_browapi.h" #include "flow_browapi.h"
#include "glow.h"
#include "glow_growctx.h"
#include "glow_growapi.h"
#include "flow_msg.h"
#include "glow_curvectx.h"
#include "co_lng.h" #include "co_lng.h"
#include "co_error.h" #include "co_error.h"
#include "cow_wow.h" #include "cow_wow.h"
#include "xtt_tbl.h" #include "xtt_tbl.h"
#include "xtt_tblnav.h" #include "xtt_tblnav.h"
#include "xtt_sevhist.h"
#include "co_dcli_msg.h" #include "co_dcli_msg.h"
#include "cow_xhelp.h" #include "cow_xhelp.h"
#include "cow_login.h" #include "cow_login.h"
...@@ -380,6 +386,7 @@ static int xtttbl_open_func( void *client_data, ...@@ -380,6 +386,7 @@ static int xtttbl_open_func( void *client_data,
pwr_tOName onamev[11]; pwr_tOName onamev[11];
bool sevhistobjectv[11]; bool sevhistobjectv[11];
int sts; int sts;
XttSevHist *hist;
// Command is "OPEN HISTORY" // Command is "OPEN HISTORY"
...@@ -439,7 +446,11 @@ static int xtttbl_open_func( void *client_data, ...@@ -439,7 +446,11 @@ static int xtttbl_open_func( void *client_data,
} }
oidv[i] = pwr_cNOid; oidv[i] = pwr_cNOid;
xtttbl->sevhist_new( oidv, anamev, onamev, sevhistobjectv); hist = xtttbl->sevhist_new( oidv, anamev, onamev, sevhistobjectv, &sts);
if ( ODD(sts)) {
hist->help_cb = XttTbl::sevhist_help_cb;
hist->get_select_cb = XttTbl::sevhist_get_select_cb;
}
} }
else else
xtttbl->message('E',"Syntax error"); xtttbl->message('E',"Syntax error");
......
This diff is collapsed.
...@@ -73,6 +73,30 @@ typedef enum { ...@@ -73,6 +73,30 @@ typedef enum {
time_eFormat_NumDateAndTime = 3 //!< Date and time format, 2005-01-01 00:00:00 time_eFormat_NumDateAndTime = 3 //!< Date and time format, 2005-01-01 00:00:00
} time_eFormat; } time_eFormat;
typedef enum {
time_ePeriod_,
time_ePeriod_UserDefined,
time_ePeriod_OneMinute,
time_ePeriod_10Minutes,
time_ePeriod_OneHour,
time_ePeriod_OneDay,
time_ePeriod_OneWeek,
time_ePeriod_OneMonth,
time_ePeriod_OneYear,
time_ePeriod_LastMinute,
time_ePeriod_Last10Minutes,
time_ePeriod_LastHour,
time_ePeriod_Today,
time_ePeriod_Yesterday,
time_ePeriod_ThisWeek,
time_ePeriod_LastWeek,
time_ePeriod_ThisMonth,
time_ePeriod_LastMonth,
time_ePeriod_ThisYear,
time_ePeriod_AllTime,
time_ePeriod__
} time_ePeriod;
#define SWE 0 #define SWE 0
#define GB 1 #define GB 1
...@@ -157,6 +181,17 @@ pwr_tDeltaTime * time_ZeroD (pwr_tDeltaTime*); ...@@ -157,6 +181,17 @@ pwr_tDeltaTime * time_ZeroD (pwr_tDeltaTime*);
void time_Sleep (float time); void time_Sleep (float time);
int time_GetTime (pwr_tTime *ts); int time_GetTime (pwr_tTime *ts);
int time_GetTimeMonotonic (pwr_tTime *ts); int time_GetTimeMonotonic (pwr_tTime *ts);
int time_PeriodPreviousMonth( pwr_tTime *time, pwr_tTime *from, pwr_tTime *to);
int time_PeriodPreviousWeek( pwr_tTime *time, pwr_tTime *from, pwr_tTime *to);
void time_PreviousDayBreak( pwr_tTime *time, pwr_tTime *daybreak);
void time_Period( time_ePeriod period, pwr_tTime *from, pwr_tTime *to, pwr_tTime *center,
int daybreak);
void time_PreviousPeriod( time_ePeriod period, pwr_tTime *prev_from, pwr_tTime *prev_to,
pwr_tTime *from, pwr_tTime *to);
void time_NextPeriod( time_ePeriod period, pwr_tTime *prev_from, pwr_tTime *prev_to,
pwr_tTime *from, pwr_tTime *to);
int time_PeriodZoomIn( time_ePeriod *period);
int time_PeriodZoomOut( time_ePeriod *period);
#if defined(OS_ELN) #if defined(OS_ELN)
......
This diff is collapsed.
...@@ -47,9 +47,12 @@ class GeCurveGtk : public GeCurve { ...@@ -47,9 +47,12 @@ class GeCurveGtk : public GeCurve {
GtkWidget *minmax_widget; GtkWidget *minmax_widget;
GtkWidget *minmax_textmin_widget; GtkWidget *minmax_textmin_widget;
GtkWidget *minmax_textmax_widget; GtkWidget *minmax_textmax_widget;
GtkWidget *tools_higher_res; GtkWidget *sea_timebox;
GtkWidget *tools_lower_res; GtkWidget *timebox_start_time;
GtkWidget *timebox_stop_time;
GtkWidget *timebox_timecombo;
CoWowFocusTimerGtk focustimer; CoWowFocusTimerGtk focustimer;
int disable_timecombo_callback;
void pop(); void pop();
void write_title( char *str); void write_title( char *str);
...@@ -58,7 +61,12 @@ class GeCurveGtk : public GeCurve { ...@@ -58,7 +61,12 @@ class GeCurveGtk : public GeCurve {
void axis_set_width( int width); void axis_set_width( int width);
void create_minmax_dialog(); void create_minmax_dialog();
void set_inputfocus(); void set_inputfocus();
void enable_resolution_buttons(); void enable_timebox();
void set_times( pwr_tTime *from, pwr_tTime *to);
void set_times_sensitivity( int sensitive);
pwr_tStatus get_times( pwr_tTime *from, pwr_tTime *to);
int get_period( time_ePeriod *period);
void set_period( time_ePeriod period, int nocallback);
~GeCurveGtk(); ~GeCurveGtk();
...@@ -72,8 +80,14 @@ class GeCurveGtk : public GeCurve { ...@@ -72,8 +80,14 @@ class GeCurveGtk : public GeCurve {
static void activate_page_right( GtkWidget *w, gpointer data); static void activate_page_right( GtkWidget *w, gpointer data);
static void activate_scroll_left( 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_scroll_right( GtkWidget *w, gpointer data);
static void activate_higher_res( GtkWidget *w, gpointer data); static void activate_increase_period( GtkWidget *w, gpointer data);
static void activate_lower_res( GtkWidget *w, gpointer data); static void activate_decrease_period( GtkWidget *w, gpointer data);
static void activate_reload( GtkWidget *w, gpointer data);
static void activate_prev_period( GtkWidget *w, gpointer data);
static void activate_next_period( GtkWidget *w, gpointer data);
static void activate_add( GtkWidget *w, gpointer data);
static void activate_remove( GtkWidget *w, gpointer data);
static void activate_timecombo( GtkWidget *w, gpointer data);
static void activate_background( GtkWidget *w, gpointer data); static void activate_background( GtkWidget *w, gpointer data);
static void activate_showname( GtkWidget *w, gpointer data); static void activate_showname( GtkWidget *w, gpointer data);
static void activate_filledcurves( GtkWidget *w, gpointer data); static void activate_filledcurves( GtkWidget *w, gpointer data);
......
This diff is collapsed.
...@@ -143,14 +143,20 @@ class GeCurve { ...@@ -143,14 +143,20 @@ class GeCurve {
int minmax_idx; int minmax_idx;
void (*close_cb)( void *); void (*close_cb)( void *);
void (*help_cb)( void *); void (*help_cb)( void *);
void (*higher_res_cb)( void *); void (*increase_period_cb)( void *);
void (*lower_res_cb)( void *); void (*decrease_period_cb)( void *);
void (*reload_cb)( void *);
void (*prev_period_cb)( void *);
void (*next_period_cb)( void *);
void (*add_cb)( void *);
void (*remove_cb)( void *);
int initial_right_position; int initial_right_position;
char title[300]; char title[300];
double last_cursor_x; double last_cursor_x;
double last_mark_x; double last_mark_x;
int deferred_configure_axes; int deferred_configure_axes;
CoWow *wow; CoWow *wow;
int center_from_window;
GeCurve( void *gc_parent_ctx, char *curve_name, GeCurve( void *gc_parent_ctx, char *curve_name,
char *filename, GeCurveData *curve_data, int pos_right); char *filename, GeCurveData *curve_data, int pos_right);
...@@ -160,12 +166,18 @@ class GeCurve { ...@@ -160,12 +166,18 @@ class GeCurve {
virtual void resize() {} virtual void resize() {}
virtual void open_minmax( int idx) {} virtual void open_minmax( int idx) {}
virtual void axis_set_width( int width) {} virtual void axis_set_width( int width) {}
virtual void enable_resolution_buttons() {} virtual void enable_timebox() {}
virtual void set_times( pwr_tTime *from, pwr_tTime *to) {}
virtual void set_times_sensitivity( int sensitive) {}
virtual pwr_tStatus get_times( pwr_tTime *from, pwr_tTime *to) {return 0;}
virtual int get_period( time_ePeriod *period) {return 0;}
virtual void set_period( time_ePeriod period, int nocallback) {}
void set_inputfocus() {} void set_inputfocus() {}
int read_file( char *filename); int read_file( char *filename);
int configure_curves(); int configure_curves();
int configure_axes(); int configure_axes();
int config_names();
void points_added(); void points_added();
void set_title( char *str); void set_title( char *str);
void set_time( pwr_tTime time); void set_time( pwr_tTime time);
...@@ -178,10 +190,13 @@ class GeCurve { ...@@ -178,10 +190,13 @@ class GeCurve {
void activate_background(); void activate_background();
void activate_filledcurves( int set); void activate_filledcurves( int set);
void activate_help(); void activate_help();
void activate_period( time_ePeriod);
void activate_edit();
void activate_minmax_ok( double min_value, double max_value); void activate_minmax_ok( double min_value, double max_value);
void set_curvedata( GeCurveData *curve_data); void set_curvedata( GeCurveData *curve_data);
void redraw(); void redraw();
void x_to_points( double x, double *time, double *values); void x_to_points( double x, double *time, double *values);
void set_center_from_window( int val) { center_from_window = val;}
static int growcurve_cb( GlowCtx *ctx, glow_tEvent event); static int growcurve_cb( GlowCtx *ctx, glow_tEvent event);
static int init_growcurve_cb( GlowCtx *fctx, void *client_data); static int init_growcurve_cb( GlowCtx *fctx, void *client_data);
......
...@@ -238,12 +238,12 @@ HistGtk::HistGtk( void *hist_parent_ctx, ...@@ -238,12 +238,12 @@ HistGtk::HistGtk( void *hist_parent_ctx,
gtk_widget_set_size_request( sea_time_start_label, 120, -1); gtk_widget_set_size_request( sea_time_start_label, 120, -1);
gtk_misc_set_alignment( GTK_MISC(sea_time_start_label), 0.0, 0.5); gtk_misc_set_alignment( GTK_MISC(sea_time_start_label), 0.0, 0.5);
start_time_entry_w = gtk_entry_new(); start_time_entry_w = gtk_entry_new();
gtk_widget_set_size_request( start_time_entry_w, 140, -1); gtk_widget_set_size_request( start_time_entry_w, 160, -1);
GtkWidget *sea_time_stop_label = gtk_label_new( CoWowGtk::translate_utf8("Stop time")); GtkWidget *sea_time_stop_label = gtk_label_new( CoWowGtk::translate_utf8("Stop time"));
gtk_widget_set_size_request( sea_time_stop_label, 120, -1); gtk_widget_set_size_request( sea_time_stop_label, 120, -1);
stop_time_entry_w = gtk_entry_new(); stop_time_entry_w = gtk_entry_new();
gtk_widget_set_size_request( start_time_entry_w, 140, -1); gtk_widget_set_size_request( stop_time_entry_w, 160, -1);
// Time option menu // Time option menu
GtkWidget *sea_time_all = gtk_menu_item_new_with_label( CoWowGtk::translate_utf8("All ")); GtkWidget *sea_time_all = gtk_menu_item_new_with_label( CoWowGtk::translate_utf8("All "));
...@@ -262,10 +262,10 @@ HistGtk::HistGtk( void *hist_parent_ctx, ...@@ -262,10 +262,10 @@ HistGtk::HistGtk( void *hist_parent_ctx,
g_signal_connect( sea_time_lastw, "activate", G_CALLBACK( lastw_cb), this); g_signal_connect( sea_time_lastw, "activate", G_CALLBACK( lastw_cb), this);
GtkWidget *sea_time_thism = gtk_menu_item_new_with_label( CoWowGtk::translate_utf8("This Month")); GtkWidget *sea_time_thism = gtk_menu_item_new_with_label( CoWowGtk::translate_utf8("This Month"));
g_signal_connect( sea_time_thism, "activate", G_CALLBACK( thisw_cb), this); g_signal_connect( sea_time_thism, "activate", G_CALLBACK( thism_cb), this);
GtkWidget *sea_time_lastm = gtk_menu_item_new_with_label( CoWowGtk::translate_utf8("Last Month")); GtkWidget *sea_time_lastm = gtk_menu_item_new_with_label( CoWowGtk::translate_utf8("Last Month"));
g_signal_connect( sea_time_lastm, "activate", G_CALLBACK( lastw_cb), this); g_signal_connect( sea_time_lastm, "activate", G_CALLBACK( lastm_cb), this);
GtkWidget *sea_time_time = gtk_menu_item_new_with_label( CoWowGtk::translate_utf8("Time")); GtkWidget *sea_time_time = gtk_menu_item_new_with_label( CoWowGtk::translate_utf8("Time"));
g_signal_connect( sea_time_time, "activate", G_CALLBACK( time_cb), this); g_signal_connect( sea_time_time, "activate", G_CALLBACK( time_cb), this);
...@@ -423,25 +423,8 @@ HistGtk::HistGtk( void *hist_parent_ctx, ...@@ -423,25 +423,8 @@ HistGtk::HistGtk( void *hist_parent_ctx,
pwr_tStatus sts; pwr_tStatus sts;
pwr_tOName name_str; pwr_tOName name_str;
gint pos = 0; gint pos = 0;
char buf[80];
pwr_tTime StopTime;
pwr_tTime StartTime;
strcpy( buf, "1970-05-05 00:00:00"); ((Hist *)this)->all_cb();
gtk_editable_insert_text( GTK_EDITABLE(start_time_entry_w), buf,
strlen(buf), &pos);
gtk_widget_set_sensitive( start_time_entry_w, FALSE);
sts = time_GetTime( &StopTime);
sts = AdjustForDayBreak( this, &StopTime, &StartTime);
StopTime = StartTime;
StopTime.tv_sec += ONEDAY;
time_AtoFormAscii(&StopTime, SWE, SECOND, buf, sizeof(buf));
gtk_editable_insert_text( GTK_EDITABLE(stop_time_entry_w), buf,
strlen(buf), &pos);
gtk_widget_set_sensitive( stop_time_entry_w, FALSE);
// If objid is applied, search for this object // If objid is applied, search for this object
pos = 0; pos = 0;
......
...@@ -69,9 +69,14 @@ XttSevHistGtk::XttSevHistGtk( void *parent_ctx, ...@@ -69,9 +69,14 @@ XttSevHistGtk::XttSevHistGtk( void *parent_ctx,
curve = new GeCurveGtk( this, parent_widget, title, NULL, gcd, 1); curve = new GeCurveGtk( this, parent_widget, title, NULL, gcd, 1);
curve->close_cb = sevhist_close_cb; curve->close_cb = sevhist_close_cb;
curve->help_cb = sevhist_help_cb; curve->help_cb = sevhist_help_cb;
curve->higher_res_cb = sevhist_higher_res_cb; curve->increase_period_cb = sevhist_increase_period_cb;
curve->lower_res_cb = sevhist_lower_res_cb; curve->decrease_period_cb = sevhist_decrease_period_cb;
curve->enable_resolution_buttons(); curve->reload_cb = sevhist_reload_cb;
curve->prev_period_cb = sevhist_prev_period_cb;
curve->next_period_cb = sevhist_next_period_cb;
curve->add_cb = sevhist_add_cb;
curve->remove_cb = sevhist_remove_cb;
curve->enable_timebox();
wow = new CoWowGtk( parent_widget); wow = new CoWowGtk( parent_widget);
timerid = wow->timer_new(); timerid = wow->timer_new();
......
...@@ -139,67 +139,40 @@ void Hist::activate_helpevent() ...@@ -139,67 +139,40 @@ void Hist::activate_helpevent()
void Hist::today_cb() void Hist::today_cb()
{ {
int Sts;
pwr_tTime StartTime; pwr_tTime StartTime;
pwr_tTime StopTime; pwr_tTime StopTime;
Sts = time_GetTime( &StopTime); time_Period( time_ePeriod_Today, &StartTime, &StopTime, 0, 1);
Sts = AdjustForDayBreak( this, &StopTime, &StartTime);
StopTime = StartTime;
StopTime.tv_sec += ONEDAY;
if ( time_Acomp( &StartTime, &StopTime) > 0)
StartTime.tv_sec -= ONEDAY;
SetListTime( StartTime, StopTime, INSENS); SetListTime( StartTime, StopTime, INSENS);
} }
void Hist::yesterday_cb() void Hist::yesterday_cb()
{ {
int Sts;
pwr_tTime StartTime; pwr_tTime StartTime;
pwr_tTime StopTime; pwr_tTime StopTime;
Sts = time_GetTime( &StopTime); time_Period( time_ePeriod_Yesterday, &StartTime, &StopTime, 0, 0);
Sts = AdjustForDayBreak( this, &StopTime, &StartTime);
if ( time_Acomp( &StartTime, &StopTime) > 0)
StartTime.tv_sec -= ONEDAY;
StopTime = StartTime;
StartTime.tv_sec -= ONEDAY;
SetListTime( StartTime, StopTime, INSENS); SetListTime( StartTime, StopTime, INSENS);
} }
void Hist::thisw_cb() void Hist::thisw_cb()
{ {
int Sts;
pwr_tTime CurrTime;
pwr_tTime StartTime; pwr_tTime StartTime;
pwr_tTime StopTime; pwr_tTime StopTime;
Sts = time_GetTime( &CurrTime); time_Period( time_ePeriod_ThisWeek, &StartTime, &StopTime, 0, 1);
Sts = GoBackWeek( CurrTime, &StartTime, &StopTime);
StopTime.tv_sec += ONEDAY;
CurrTime.tv_sec += ONEDAY;
SetListTime( StopTime, CurrTime, INSENS); SetListTime( StartTime, StopTime, INSENS);
} }
void Hist::lastw_cb() void Hist::lastw_cb()
{ {
int Sts;
pwr_tTime CurrTime;
pwr_tTime StartTime; pwr_tTime StartTime;
pwr_tTime StopTime; pwr_tTime StopTime;
Sts = time_GetTime( &CurrTime); time_Period( time_ePeriod_LastWeek, &StartTime, &StopTime, 0, 0);
Sts = GoBackWeek( CurrTime, &StartTime, &StopTime);
SetListTime( StartTime, StopTime, INSENS); SetListTime( StartTime, StopTime, INSENS);
...@@ -207,62 +180,41 @@ void Hist::lastw_cb() ...@@ -207,62 +180,41 @@ void Hist::lastw_cb()
void Hist::thism_cb() void Hist::thism_cb()
{ {
int Sts;
pwr_tTime CurrTime;
pwr_tTime StartTime; pwr_tTime StartTime;
pwr_tTime StopTime; pwr_tTime StopTime;
Sts = time_GetTime( &CurrTime); time_Period( time_ePeriod_ThisMonth, &StartTime, &StopTime, 0, 1);
Sts = GoBackMonth( CurrTime, &StartTime, &StopTime);
StopTime.tv_sec += ONEDAY;
CurrTime.tv_sec += ONEDAY;
SetListTime( StopTime, CurrTime, INSENS); SetListTime( StartTime, StopTime, INSENS);
} }
void Hist::lastm_cb() void Hist::lastm_cb()
{ {
int Sts;
pwr_tTime CurrTime;
pwr_tTime StartTime; pwr_tTime StartTime;
pwr_tTime StopTime; pwr_tTime StopTime;
Sts = time_GetTime( &CurrTime); time_Period( time_ePeriod_LastMonth, &StartTime, &StopTime, 0, 0);
Sts = GoBackMonth( CurrTime, &StartTime, &StopTime);
SetListTime( StartTime, StopTime, INSENS); SetListTime( StartTime, StopTime, INSENS);
} }
void Hist::all_cb() void Hist::all_cb()
{ {
int Sts;
pwr_tTime StartTime; pwr_tTime StartTime;
pwr_tTime StopTime; pwr_tTime StopTime;
char timestr[32] = "01-JAN-1970 00:00:00";
time_AsciiToA(timestr, &StartTime); time_Period( time_ePeriod_AllTime, &StartTime, &StopTime, 0, 1);
Sts = time_GetTime( &StopTime);
StopTime.tv_sec += ONEDAY;
SetListTime( StartTime, StopTime, INSENS); SetListTime( StartTime, StopTime, INSENS);
} }
void Hist::time_cb() void Hist::time_cb()
{ {
int Sts;
pwr_tTime StartTime; pwr_tTime StartTime;
pwr_tTime StopTime; pwr_tTime StopTime;
char timestr[32] = "01-JAN-1970 00:00:00";
time_AsciiToA(timestr, &StartTime); time_Period( time_ePeriod_AllTime, &StartTime, &StopTime, 0, 0);
Sts = time_GetTime( &StopTime);
SetListTime( StartTime, StopTime, SENS); SetListTime( StartTime, StopTime, SENS);
...@@ -806,7 +758,10 @@ int Hist::GoBackMonth( pwr_tTime TimeIn, pwr_tTime *FromTime, ...@@ -806,7 +758,10 @@ int Hist::GoBackMonth( pwr_tTime TimeIn, pwr_tTime *FromTime,
break; break;
} }
memset(Tm, 0, sizeof(*Tm)); // memset(Tm, 0, sizeof(*Tm));
Tm->tm_sec = 0;
Tm->tm_min = 0;
Tm->tm_hour = 0;
Tm->tm_mday = 1; Tm->tm_mday = 1;
Tm->tm_mon = Month; Tm->tm_mon = Month;
Tm->tm_year = TmYear; Tm->tm_year = TmYear;
...@@ -814,8 +769,9 @@ int Hist::GoBackMonth( pwr_tTime TimeIn, pwr_tTime *FromTime, ...@@ -814,8 +769,9 @@ int Hist::GoBackMonth( pwr_tTime TimeIn, pwr_tTime *FromTime,
FromTime->tv_sec = mktime(Tm); FromTime->tv_sec = mktime(Tm);
FromTime->tv_nsec = 0; FromTime->tv_nsec = 0;
Tm->tm_mday = DaysOfMonth; ToTime->tv_sec = FromTime->tv_sec + DaysOfMonth * ONEDAY;
ToTime->tv_sec = mktime(Tm); // Tm->tm_mday = DaysOfMonth;
// ToTime->tv_sec = mktime(Tm);
ToTime->tv_nsec = 0; ToTime->tv_nsec = 0;
return(1); return(1);
...@@ -859,7 +815,7 @@ int Hist::GoBackWeek( pwr_tTime TimeIn, pwr_tTime *FromTime, ...@@ -859,7 +815,7 @@ int Hist::GoBackWeek( pwr_tTime TimeIn, pwr_tTime *FromTime,
FromTime->tv_sec = Time.tv_sec - Days * ONEDAY; FromTime->tv_sec = Time.tv_sec - Days * ONEDAY;
FromTime->tv_nsec = 0; FromTime->tv_nsec = 0;
ToTime->tv_sec = Time.tv_sec - (Days - 6) * ONEDAY; ToTime->tv_sec = FromTime->tv_sec + 7 * ONEDAY;
ToTime->tv_nsec = 0; ToTime->tv_nsec = 0;
return(1); return(1);
...@@ -881,16 +837,21 @@ int Hist::GoBackWeek( pwr_tTime TimeIn, pwr_tTime *FromTime, ...@@ -881,16 +837,21 @@ int Hist::GoBackWeek( pwr_tTime TimeIn, pwr_tTime *FromTime,
* *
*************************************************************************/ *************************************************************************/
pwr_tStatus Hist::AdjustForDayBreak( Hist *histOP, pwr_tTime *Time, pwr_tStatus Hist::AdjustForDayBreak( Hist *histOP, pwr_tTime *Time,
pwr_tTime *NewTime) pwr_tTime *NewTime)
{ {
pwr_tStatus Sts; struct tm *Tm;
char timestr[32];
Sts = time_AtoAscii(Time, time_eFormat_DateAndTime, timestr, sizeof(timestr)); time_t sec = Time->tv_sec;
sprintf(&timestr[12],"00:00:00"); Tm = localtime(&sec);
Tm->tm_sec = 0;
Tm->tm_min = 0;
Tm->tm_hour = 0;
return time_AsciiToA(timestr, NewTime); NewTime->tv_sec = mktime(Tm);
NewTime->tv_nsec = 0;
return 1;
} /* AdjustForDayBreak */ } /* AdjustForDayBreak */
#endif #endif
......
...@@ -28,7 +28,7 @@ xtt_sMethodButton XttMethodToolbar::m_data[XttMethodToolbar::m_size] = ...@@ -28,7 +28,7 @@ xtt_sMethodButton XttMethodToolbar::m_data[XttMethodToolbar::m_size] =
{"Note", "$Object-Note", "$Object-NoteFilter", "$pwr_exe/xtt_meth_note.png", "Note"}, {"Note", "$Object-Note", "$Object-NoteFilter", "$pwr_exe/xtt_meth_note.png", "Note"},
{"Trend", "$Object-OpenTrend", "$Object-OpenTrendFilter", "$pwr_exe/xtt_meth_trend.png", "Trend"}, {"Trend", "$Object-OpenTrend", "$Object-OpenTrendFilter", "$pwr_exe/xtt_meth_trend.png", "Trend"},
{"Fast", "$Object-OpenFast", "$Object-OpenFastFilter", "$pwr_exe/xtt_meth_fast.png", "Fast"}, {"Fast", "$Object-OpenFast", "$Object-OpenFastFilter", "$pwr_exe/xtt_meth_fast.png", "Fast"},
{"History", "$Object-History", "$Object-HistoryFilter", "$pwr_exe/xtt_meth_history.png", "History"}, {"History", "$Object-OpenHistory", "$Object-OpenHistoryFilter", "$pwr_exe/xtt_meth_history.png", "History"},
{"Photo", "$Object-Photo", "$Object-PhotoFilter", "$pwr_exe/xtt_meth_photo.png", "Photo"}, {"Photo", "$Object-Photo", "$Object-PhotoFilter", "$pwr_exe/xtt_meth_photo.png", "Photo"},
{"Graph", "$Object-OpenGraph", "$Object-OpenGraphFilter", "$pwr_exe/xtt_meth_graph.png", "Graph"}, {"Graph", "$Object-OpenGraph", "$Object-OpenGraphFilter", "$pwr_exe/xtt_meth_graph.png", "Graph"},
{"RtNavigator", "$Object-RtNavigator", "$Object-RtNavigatorFilter", "$pwr_exe/xtt_meth_navigator.png", "RtNavigator"}, {"RtNavigator", "$Object-RtNavigator", "$Object-RtNavigatorFilter", "$pwr_exe/xtt_meth_navigator.png", "RtNavigator"},
......
...@@ -54,8 +54,15 @@ XttSevHist::XttSevHist( void *parent_ctx, ...@@ -54,8 +54,15 @@ XttSevHist::XttSevHist( void *parent_ctx,
sevcli_tCtx xn_scctx, sevcli_tCtx xn_scctx,
int *sts) : int *sts) :
xnav(parent_ctx), gcd(0), curve(0), rows(0), vsize(0), timerid(0), close_cb(0), help_cb(0), 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), time_low_old(0), time_high_old(0) get_select_cb(0), first_scan(1), scctx(xn_scctx), time_low_old(0), time_high_old(0)
{ {
pwr_tTime from, to;
if ( xn_oidv == 0 || xn_oidv[0].vid == 0) {
oid_cnt = 0;
gcd = new GeCurveData( curve_eDataType_DsTrend);
return;
}
// Count number of curves // Count number of curves
for ( oid_cnt = 0; xn_oidv[oid_cnt].vid != 0; oid_cnt++) ; for ( oid_cnt = 0; xn_oidv[oid_cnt].vid != 0; oid_cnt++) ;
...@@ -68,12 +75,13 @@ XttSevHist::XttSevHist( void *parent_ctx, ...@@ -68,12 +75,13 @@ XttSevHist::XttSevHist( void *parent_ctx,
memcpy( onamev, xn_onamev, oid_cnt * sizeof(onamev[0])); memcpy( onamev, xn_onamev, oid_cnt * sizeof(onamev[0]));
memcpy( sevhistobjectv, xn_sevhistobjectv, oid_cnt * sizeof(sevhistobjectv[0])); memcpy( sevhistobjectv, xn_sevhistobjectv, oid_cnt * sizeof(sevhistobjectv[0]));
time_Period( time_ePeriod_OneHour, &from, &to, 0, 0);
if ( oid_cnt == 1) { if ( oid_cnt == 1) {
get_data( sts, pwr_cNTime, pwr_cNTime); get_data( sts, from, to);
if ( EVEN(*sts)) return; if ( EVEN(*sts)) return;
} }
else { else {
get_multidata( sts, pwr_cNTime, pwr_cNTime); get_multidata( sts, from, to);
if ( EVEN(*sts)) return; if ( EVEN(*sts)) return;
} }
cdh_StrncpyCutOff( title, name, sizeof(title), 1); cdh_StrncpyCutOff( title, name, sizeof(title), 1);
...@@ -586,6 +594,52 @@ int XttSevHist::get_multidata( pwr_tStatus *sts, pwr_tTime from, pwr_tTime to) ...@@ -586,6 +594,52 @@ int XttSevHist::get_multidata( pwr_tStatus *sts, pwr_tTime from, pwr_tTime to)
return 1; return 1;
} }
void XttSevHist::curve_add( pwr_tOid oid, pwr_tOName aname, pwr_tOName oname,
bool sevhistobject)
{
if ( oid_cnt == XTT_SEVHIST_MAX)
return;
if ( gcd->type != curve_eDataType_MultiTrend) {
// Convert to multidata
for ( int i = 1; i < gcd->cols; i++) {
gcd->rows[i] = gcd->rows[0];
gcd->x_data[i] = (double *) calloc( 1, 8 * gcd->rows[i]);
memcpy( gcd->x_data[i], gcd->x_data[0], 8 * gcd->rows[i]);
gcd->x_axis_type[i] = curve_eAxis_x;
strcpy( gcd->x_format[i], "%10t");
}
gcd->type = curve_eDataType_MultiTrend;
}
oidv[oid_cnt] = oid;
strncpy( anamev[oid_cnt], aname, sizeof(anamev[0]));
strncpy( onamev[oid_cnt], oname, sizeof(onamev[0]));
oid_cnt++;
int curve_cnt = gcd->cols;
rows = 0;
gcd->x_data[curve_cnt] = (double *) calloc( 1, 8 * rows);
gcd->x_axis_type[curve_cnt] = curve_eAxis_x;
strcpy( gcd->x_format[curve_cnt], "%10t");
strcpy( gcd->y_name[curve_cnt], oname);
if ( strcmp( oname, "") != 0)
strcat( gcd->y_name[curve_cnt], ".");
strcat( gcd->y_name[curve_cnt], aname);
gcd->y_data[curve_cnt] = (double *) calloc( 1, 8 * rows);
gcd->cols++;
gcd->select_color( 0);
curve->config_names();
}
void XttSevHist::pop() void XttSevHist::pop()
{ {
...@@ -602,30 +656,56 @@ void XttSevHist::sevhist_close_cb( void *ctx) ...@@ -602,30 +656,56 @@ void XttSevHist::sevhist_close_cb( void *ctx)
delete sevhist; delete sevhist;
} }
void XttSevHist::sevhist_higher_res_cb( void *ctx) void XttSevHist::sevhist_decrease_period_cb( void *ctx)
{ {
XttSevHist *sevhist = (XttSevHist *) ctx; XttSevHist *sevhist = (XttSevHist *) ctx;
double ll_x, ll_y, ur_x, ur_y; time_ePeriod period;
pwr_tTime t_low, t_high;
pwr_tStatus sts; pwr_tStatus sts;
int changed;
sts = sevhist->curve->get_period( &period);
sevhist->curve->measure_window( &ll_x, &ll_y, &ur_x, &ur_y); changed = time_PeriodZoomIn( &period);
if ( changed)
sevhist->curve->set_period( period, 0);
t_low.tv_sec = int( sevhist->gcd->x_min_value_axis[0] + }
ll_x / 200 * (sevhist->gcd->x_max_value_axis[0] - sevhist->gcd->x_min_value_axis[0]));
t_low.tv_nsec = 0; void XttSevHist::sevhist_increase_period_cb( void *ctx)
t_high.tv_sec = int( sevhist->gcd->x_min_value_axis[0] + {
ur_x / 200 * (sevhist->gcd->x_max_value_axis[0] - sevhist->gcd->x_min_value_axis[0])); XttSevHist *sevhist = (XttSevHist *) ctx;
t_high.tv_nsec = 0; time_ePeriod period;
pwr_tStatus sts;
int changed;
sts = sevhist->curve->get_period( &period);
changed = time_PeriodZoomOut( &period);
if ( changed)
sevhist->curve->set_period( period, 0);
}
void XttSevHist::sevhist_reload_cb( void *ctx)
{
XttSevHist *sevhist = (XttSevHist *) ctx;
pwr_tTime t_low, t_high;
pwr_tStatus sts;
{ sts = sevhist->curve->get_times( &t_low, &t_high);
char s1[40], s2[40]; if ( EVEN(sts)) {
time_AtoAscii( &t_low, time_eFormat_NumDateAndTime, s1, sizeof(s1)); sevhist->wow->DisplayError( "Time", "Time syntax error");
time_AtoAscii( &t_high, time_eFormat_NumDateAndTime, s2, sizeof(s2)); return;
}
printf( "Low: %s, High: %s\n", s1, s2); if ( time_Acomp( &t_high, &t_low) != 1) {
sevhist->wow->DisplayError( "Time", "Start time later than end time");
return;
} }
if ( t_low.tv_sec < 0)
t_low.tv_sec = 0;
if ( sevhist->oid_cnt == 1) if ( sevhist->oid_cnt == 1)
sevhist->get_data( &sts, t_low, t_high); sevhist->get_data( &sts, t_low, t_high);
else else
...@@ -633,46 +713,118 @@ void XttSevHist::sevhist_higher_res_cb( void *ctx) ...@@ -633,46 +713,118 @@ void XttSevHist::sevhist_higher_res_cb( void *ctx)
sevhist->time_low_old = 0; sevhist->time_low_old = 0;
sevhist->time_high_old = 0; sevhist->time_high_old = 0;
sevhist->curve->set_center_from_window( 1);
} }
void XttSevHist::sevhist_lower_res_cb( void *ctx) void XttSevHist::sevhist_prev_period_cb( void *ctx)
{ {
XttSevHist *sevhist = (XttSevHist *) ctx; XttSevHist *sevhist = (XttSevHist *) ctx;
double ll_x, ll_y, ur_x, ur_y; pwr_tTime from, to, prev_from, prev_to;
pwr_tTime t_low, t_high;
pwr_tStatus sts; pwr_tStatus sts;
time_ePeriod period;
sts = sevhist->curve->get_times( &prev_from, &prev_to);
if ( EVEN(sts)) {
sevhist->wow->DisplayError( "Time", "Time syntax error");
return;
}
sevhist->curve->measure_window( &ll_x, &ll_y, &ur_x, &ur_y); sts = sevhist->curve->get_period( &period);
t_low.tv_sec = int( sevhist->gcd->x_min_value_axis[0] - if ( time_Acomp( &prev_to, &prev_from) != 1) {
5 * (sevhist->gcd->x_max_value_axis[0] - sevhist->gcd->x_min_value_axis[0])); sevhist->wow->DisplayError( "Time", "Start time later than end time");
t_low.tv_nsec = 0; return;
t_high.tv_sec = int( sevhist->gcd->x_max_value_axis[0] + }
5 * (sevhist->gcd->x_max_value_axis[0] - sevhist->gcd->x_min_value_axis[0]));
t_high.tv_nsec = 0;
if ( t_low.tv_sec == sevhist->time_low_old && t_high.tv_sec == sevhist->time_high_old) { time_PreviousPeriod( period, &prev_from, &prev_to, &from, &to);
t_low.tv_sec = int( sevhist->gcd->x_min_value_axis[0] -
25 * (sevhist->gcd->x_max_value_axis[0] - sevhist->gcd->x_min_value_axis[0])); sevhist->curve->set_times( &from, &to);
t_high.tv_sec = int( sevhist->gcd->x_max_value_axis[0] +
25 * (sevhist->gcd->x_max_value_axis[0] - sevhist->gcd->x_min_value_axis[0])); int change_period = 1;
switch( period) {
case time_ePeriod_LastMinute:
period = time_ePeriod_OneMinute;
break;
case time_ePeriod_Last10Minutes:
period = time_ePeriod_10Minutes;
break;
case time_ePeriod_LastHour:
period = time_ePeriod_OneHour;
break;
case time_ePeriod_Today:
period = time_ePeriod_Yesterday;
break;
case time_ePeriod_Yesterday:
period = time_ePeriod_OneDay;
break;
case time_ePeriod_ThisWeek:
period = time_ePeriod_LastWeek;
break;
case time_ePeriod_LastWeek:
period = time_ePeriod_OneWeek;
break;
case time_ePeriod_ThisMonth:
period = time_ePeriod_LastMonth;
break;
case time_ePeriod_LastMonth:
period = time_ePeriod_OneMonth;
break;
case time_ePeriod_ThisYear:
period = time_ePeriod_OneYear;
break;
default:
change_period = 0;
} }
if ( change_period)
sevhist->curve->set_period( period, 1);
}
{ void XttSevHist::sevhist_next_period_cb( void *ctx)
char s1[40], s2[40]; {
time_AtoAscii( &t_low, time_eFormat_NumDateAndTime, s1, sizeof(s1)); XttSevHist *sevhist = (XttSevHist *) ctx;
time_AtoAscii( &t_high, time_eFormat_NumDateAndTime, s2, sizeof(s2)); pwr_tTime from, to, prev_from, prev_to;
pwr_tStatus sts;
time_ePeriod period;
printf( "Low: %s, High: %s\n", s1, s2); sts = sevhist->curve->get_times( &prev_from, &prev_to);
if ( EVEN(sts)) {
sevhist->wow->DisplayError( "Time", "Time syntax error");
return;
} }
if ( sevhist->oid_cnt == 1) sts = sevhist->curve->get_period( &period);
sevhist->get_data( &sts, t_low, t_high);
else if ( time_Acomp( &prev_to, &prev_from) != 1) {
sevhist->get_multidata( &sts, t_low, t_high); sevhist->wow->DisplayError( "Time", "Start time later than end time");
return;
}
time_NextPeriod( period, &prev_from, &prev_to, &from, &to);
sevhist->time_low_old = t_low.tv_sec; sevhist->curve->set_times( &from, &to);
sevhist->time_high_old = t_high.tv_sec;
}
void XttSevHist::sevhist_add_cb( void *ctx)
{
XttSevHist *sevhist = (XttSevHist *) ctx;
pwr_tOid oid;
pwr_tOName aname, oname;
int sts;
if ( !sevhist->get_select_cb)
return;
sts = sevhist->get_select_cb( sevhist->xnav, &oid, aname, oname);
if ( EVEN(sts)) return;
sevhist->curve_add( oid, aname, oname, false);
}
void XttSevHist::sevhist_remove_cb( void *ctx)
{
// Do do
} }
void XttSevHist::sevhist_help_cb( void *ctx) void XttSevHist::sevhist_help_cb( void *ctx)
......
...@@ -65,6 +65,7 @@ class XttSevHist { ...@@ -65,6 +65,7 @@ class XttSevHist {
CoWowTimer *timerid; //!< Time id for scan. CoWowTimer *timerid; //!< Time id for scan.
void (*close_cb)( void *, XttSevHist *); //!< Close callback to parent. void (*close_cb)( void *, XttSevHist *); //!< Close callback to parent.
void (*help_cb)( void *, const char *); //!< Open help window. void (*help_cb)( void *, const char *); //!< Open help window.
int (*get_select_cb)( void *, pwr_tOid *, char *, char *); //!< Get selected SevHist object.
bool first_scan; //!< Indicates that this is the first scan. bool first_scan; //!< Indicates that this is the first scan.
char title[250]; //!< Window title char title[250]; //!< Window title
sevcli_tCtx scctx; sevcli_tCtx scctx;
...@@ -95,10 +96,17 @@ class XttSevHist { ...@@ -95,10 +96,17 @@ class XttSevHist {
int get_data( pwr_tStatus *sts, pwr_tTime from, pwr_tTime to); int get_data( pwr_tStatus *sts, pwr_tTime from, pwr_tTime to);
int get_objectdata( pwr_tStatus *sts, pwr_tTime from, pwr_tTime to); int get_objectdata( pwr_tStatus *sts, pwr_tTime from, pwr_tTime to);
int get_multidata( pwr_tStatus *sts, pwr_tTime from, pwr_tTime to); int get_multidata( pwr_tStatus *sts, pwr_tTime from, pwr_tTime to);
void curve_add( pwr_tOid oid, pwr_tOName aname, pwr_tOName oname,
bool sevhistobject);
static void sevhist_close_cb( void *ctx); static void sevhist_close_cb( void *ctx);
static void sevhist_higher_res_cb( void *ctx); static void sevhist_increase_period_cb( void *ctx);
static void sevhist_lower_res_cb( void *ctx); static void sevhist_decrease_period_cb( void *ctx);
static void sevhist_reload_cb( void *ctx);
static void sevhist_prev_period_cb( void *ctx);
static void sevhist_next_period_cb( void *ctx);
static void sevhist_add_cb( void *ctx);
static void sevhist_remove_cb( void *ctx);
static void sevhist_help_cb( void *ctx); static void sevhist_help_cb( void *ctx);
static void sevhist_scan( void *data); static void sevhist_scan( void *data);
......
...@@ -151,6 +151,7 @@ static void xnav_op_ack_last_cb( void *xnav, unsigned long type, unsigned long p ...@@ -151,6 +151,7 @@ static void xnav_op_ack_last_cb( void *xnav, unsigned long type, unsigned long p
static void xnav_trend_close_cb( void *ctx, XttTrend *trend); static void xnav_trend_close_cb( void *ctx, XttTrend *trend);
static void xnav_trend_help_cb( void *ctx, const char *key); static void xnav_trend_help_cb( void *ctx, const char *key);
static void xnav_sevhist_help_cb( void *ctx, const char *key); static void xnav_sevhist_help_cb( void *ctx, const char *key);
static int xnav_sevhist_get_select_cb( void *ctx, pwr_tOid *oid, char *aname, char *oname);
static void xnav_fast_close_cb( void *ctx, XttFast *fast); static void xnav_fast_close_cb( void *ctx, XttFast *fast);
static void xnav_fast_help_cb( void *ctx, const char *key); static void xnav_fast_help_cb( void *ctx, const char *key);
static void xnav_xao_close_cb( void *ctx, XAttOne *xao); static void xnav_xao_close_cb( void *ctx, XAttOne *xao);
...@@ -3367,18 +3368,21 @@ static int xnav_open_func( void *client_data, ...@@ -3367,18 +3368,21 @@ static int xnav_open_func( void *client_data,
hist = xnav->xttsevhist_new( title_str, oidv, anamev, onamev, sevhistobjectv, xnav->scctx, &sts); hist = xnav->xttsevhist_new( title_str, oidv, anamev, onamev, sevhistobjectv, xnav->scctx, &sts);
if ( ODD(sts)) { if ( ODD(sts)) {
hist->help_cb = xnav_sevhist_help_cb; hist->help_cb = xnav_sevhist_help_cb;
hist->get_select_cb = xnav_sevhist_get_select_cb;
} }
} }
else if( sevHistObjectFound ) { else if( sevHistObjectFound ) {
hist = xnav->xttsevhist_new( title_str, oidv, anamev, onamev, sevhistobjectv, xnav->scctx, &sts); hist = xnav->xttsevhist_new( title_str, oidv, anamev, onamev, sevhistobjectv, xnav->scctx, &sts);
if ( ODD(sts)) { if ( ODD(sts)) {
hist->help_cb = xnav_sevhist_help_cb; hist->help_cb = xnav_sevhist_help_cb;
hist->get_select_cb = xnav_sevhist_get_select_cb;
} }
} }
else { else {
hist = xnav->xttsevhist_new( title_str, oidv, anamev, onamev, sevhistobjectv, xnav->scctx, &sts); hist = xnav->xttsevhist_new( title_str, oidv, anamev, onamev, sevhistobjectv, xnav->scctx, &sts);
if ( ODD(sts)) { if ( ODD(sts)) {
hist->help_cb = xnav_sevhist_help_cb; hist->help_cb = xnav_sevhist_help_cb;
hist->get_select_cb = xnav_sevhist_get_select_cb;
} }
} }
} }
...@@ -4084,6 +4088,68 @@ static void xnav_sevhist_help_cb( void *ctx, const char *key) ...@@ -4084,6 +4088,68 @@ static void xnav_sevhist_help_cb( void *ctx, const char *key)
xnav->message( ' ', null_str); xnav->message( ' ', null_str);
} }
static int xnav_sevhist_get_select_cb( void *ctx, pwr_tOid *oid, char *aname, char *oname)
{
XNav *xnav = (XNav *) ctx;
pwr_tAttrRef sel_aref, attr_aref, aref;
int is_attr;
int sts;
pwr_tAName name;
pwr_tCid cid;
pwr_tAName arefname;
char *s;
pwr_tOid ch;
sts = xnav->get_select( &sel_aref, &is_attr);
if ( EVEN(sts)) return sts;
sts = gdh_ObjidToName( sel_aref.Objid, name, sizeof(name), cdh_mNName);
if ( EVEN(sts)) return sts;
sts = gdh_GetObjectClass( sel_aref.Objid, &cid);
switch ( cid) {
case pwr_cClass_SevHist:
break;
case pwr_cClass_SevHistObject:
return 0; // NYI
default:
// Look for a SevHist child
for ( sts = gdh_GetChild( sel_aref.Objid, &ch);
ODD(sts);
sts = gdh_GetNextSibling( ch, &ch)) {
sts = gdh_GetObjectClass( ch, &cid);
if ( EVEN(sts)) return sts;
switch ( cid) {
case pwr_cClass_SevHist:
sel_aref = cdh_ObjidToAref( ch);
break;
default:
return 0;
}
}
}
sts = gdh_ArefANameToAref( &sel_aref, "Attribute", &attr_aref);
if ( EVEN(sts)) return sts;
sts = gdh_GetObjectInfoAttrref( &attr_aref, &aref, sizeof(aref));
if ( EVEN(sts)) return sts;
sts = gdh_AttrrefToName( &aref, arefname, sizeof(arefname), cdh_mNName);
if ( EVEN(sts)) return sts;
s = strchr( arefname, '.');
if ( !s) return 0;
*s = 0;
strcpy( oname, arefname);
strcpy( aname, s+1);
*oid = aref.Objid;
return XNAV__SUCCESS;
}
static void xnav_fast_close_cb( void *ctx, XttFast *fast) static void xnav_fast_close_cb( void *ctx, XttFast *fast)
{ {
XNav *xnav = (XNav *) ctx; XNav *xnav = (XNav *) ctx;
......
xtt/mmi/ge/src/ge_page_left.png

228 Bytes | W: | H:

xtt/mmi/ge/src/ge_page_left.png

203 Bytes | W: | H:

xtt/mmi/ge/src/ge_page_left.png
xtt/mmi/ge/src/ge_page_left.png
xtt/mmi/ge/src/ge_page_left.png
xtt/mmi/ge/src/ge_page_left.png
  • 2-up
  • Swipe
  • Onion skin
xtt/mmi/ge/src/ge_page_right.png

236 Bytes | W: | H:

xtt/mmi/ge/src/ge_page_right.png

207 Bytes | W: | H:

xtt/mmi/ge/src/ge_page_right.png
xtt/mmi/ge/src/ge_page_right.png
xtt/mmi/ge/src/ge_page_right.png
xtt/mmi/ge/src/ge_page_right.png
  • 2-up
  • Swipe
  • Onion skin
xtt/mmi/ge/src/ge_scroll_left.png

224 Bytes | W: | H:

xtt/mmi/ge/src/ge_scroll_left.png

217 Bytes | W: | H:

xtt/mmi/ge/src/ge_scroll_left.png
xtt/mmi/ge/src/ge_scroll_left.png
xtt/mmi/ge/src/ge_scroll_left.png
xtt/mmi/ge/src/ge_scroll_left.png
  • 2-up
  • Swipe
  • Onion skin
xtt/mmi/ge/src/ge_scroll_right.png

223 Bytes | W: | H:

xtt/mmi/ge/src/ge_scroll_right.png

219 Bytes | W: | H:

xtt/mmi/ge/src/ge_scroll_right.png
xtt/mmi/ge/src/ge_scroll_right.png
xtt/mmi/ge/src/ge_scroll_right.png
xtt/mmi/ge/src/ge_scroll_right.png
  • 2-up
  • Swipe
  • Onion skin
...@@ -212,6 +212,30 @@ E 1.10.11 "Unit" ...@@ -212,6 +212,30 @@ E 1.10.11 "Unit"
E 1.10.12 "Scale" E 1.10.12 "Scale"
E 1.10.13 "Attribute" E 1.10.13 "Attribute"
E 1.10.14 "Time axis" E 1.10.14 "Time axis"
E 1.10.15 "One Minute"
E 1.10.16 "10 Minutes"
E 1.10.17 "One Hour"
E 1.10.18 "One Day"
E 1.10.19 "One Week"
E 1.10.20 "One Month"
E 1.10.21 "One Year"
E 1.10.22 "Last Minute"
E 1.10.23 "Last 10 Minutes"
E 1.10.24 "Last Hour"
E 1.10.25 "This Year"
E 1.10.26 "All Time"
E 1.10.27 "Edit"
E 1.10.28 "Page left"
E 1.10.29 "Scroll left"
E 1.10.30 "Scroll right"
E 1.10.31 "Page right"
E 1.10.32 "Previous period"
E 1.10.33 "Next period"
E 1.10.34 "Increase period"
E 1.10.35 "Decrease period"
E 1.10.36 "Update curve"
E 1.10.37 "Add curve item"
E 1.10.38 "Remove selected curve"
# #
# Fileview # Fileview
E 1.11.1 "Save" E 1.11.1 "Save"
......
xtt/mmi/xtt/src/xtt_down.png

196 Bytes | W: | H:

xtt/mmi/xtt/src/xtt_down.png

219 Bytes | W: | H:

xtt/mmi/xtt/src/xtt_down.png
xtt/mmi/xtt/src/xtt_down.png
xtt/mmi/xtt/src/xtt_down.png
xtt/mmi/xtt/src/xtt_down.png
  • 2-up
  • Swipe
  • Onion skin
xtt/mmi/xtt/src/xtt_up.png

187 Bytes | W: | H:

xtt/mmi/xtt/src/xtt_up.png

210 Bytes | W: | H:

xtt/mmi/xtt/src/xtt_up.png
xtt/mmi/xtt/src/xtt_up.png
xtt/mmi/xtt/src/xtt_up.png
xtt/mmi/xtt/src/xtt_up.png
  • 2-up
  • Swipe
  • Onion skin
...@@ -212,6 +212,30 @@ E 1.10.11 "Enhet" ...@@ -212,6 +212,30 @@ E 1.10.11 "Enhet"
E 1.10.12 "Skala" E 1.10.12 "Skala"
E 1.10.13 "Attribut" E 1.10.13 "Attribut"
E 1.10.14 "Tidsaxel" E 1.10.14 "Tidsaxel"
E 1.10.15 "En minut"
E 1.10.16 "10 minuter"
E 1.10.17 "En timme"
E 1.10.18 "En dag"
E 1.10.19 "En vecka"
E 1.10.20 "En mnad"
E 1.10.21 "Ett r"
E 1.10.22 "Sista minuten"
E 1.10.23 "Sista 10 minuterna"
E 1.10.24 "Sista timmen"
E 1.10.25 "Detta r"
E 1.10.26 "All tid"
E 1.10.27 "Editera"
E 1.10.28 "Sida vnster"
E 1.10.29 "Rulla vnster"
E 1.10.30 "Rulla hger"
E 1.10.31 "Sida hger"
E 1.10.32 "Tidigare period"
E 1.10.33 "Nsta period"
E 1.10.34 "ka period"
E 1.10.35 "Minska period"
E 1.10.36 "Updatera kurva"
E 1.10.37 "Addera kurva"
E 1.10.38 "Ta bort utvald kurva"
# #
# Fileview # Fileview
E 1.11.1 "Spara" E 1.11.1 "Spara"
......
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