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)
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;
pwr_tStatus sts;
return new XttSevHistGtk( (void *)this, toplevel, "SevHist", &w, oidv, anamev, onamev,
sevhistobjectv, sevcli, &sts);
return new XttSevHistGtk( (void *)this, toplevel, "Process History", &w, oidv, anamev, onamev,
sevhistobjectv, sevcli, sts);
}
CoLogin *XttTblGtk::login_new( const char *name,
......@@ -338,8 +337,11 @@ XttTblGtk::XttTblGtk( GtkWidget *a_parent_wid,
// 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);
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"));
g_signal_connect( functions_command, "activate",
......@@ -348,7 +350,7 @@ XttTblGtk::XttTblGtk( GtkWidget *a_parent_wid,
'b', GdkModifierType(GDK_CONTROL_MASK),
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);
GtkMenu *functions_menu = (GtkMenu *) g_object_new( GTK_TYPE_MENU, NULL);
......@@ -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_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_item_set_submenu(GTK_MENU_ITEM(functions), GTK_WIDGET(functions_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);
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);
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,
gtk_menu_shell_append(GTK_MENU_SHELL(help_menu), help_project);
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_item_set_submenu(GTK_MENU_ITEM(help), GTK_WIDGET(help_menu));
......@@ -432,7 +434,7 @@ XttTblGtk::XttTblGtk( GtkWidget *a_parent_wid,
gtk_image_new_from_file( fname));
g_signal_connect(tools_opensevhist, "clicked", G_CALLBACK(activate_opensevhist), this);
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();
dcli_translate_filename( fname, "$pwr_exe/xtt_zoom_in.png");
......
......@@ -49,7 +49,8 @@ class XttTblGtk : public XttTbl {
CoWowEntryGtk *cmd_entry;
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,
const char *wl_groupname,
void (* wl_bc_success)( void *),
......
......@@ -40,8 +40,11 @@
#include "glow_growapi.h"
#include "flow_msg.h"
#include "glow_curvectx.h"
#include "xtt_tbl.h"
#include "xtt_tblnav.h"
#include "xtt_sevhist.h"
XttTbl::~XttTbl()
{
......@@ -126,6 +129,8 @@ void XttTbl::activate_print()
void XttTbl::activate_opensevhist()
{
ItemBase *item;
XttSevHist *hist;
pwr_tStatus sts;
if ( !tblnav->get_select( &item)) {
message( 'E', "Select an storage item");
......@@ -142,7 +147,12 @@ void XttTbl::activate_opensevhist()
bool sevhistobjectv[2] = {hi->attrnum > 1, false};
if( !sevhistobjectv[0] ) {
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 {
char *s;
......@@ -156,7 +166,11 @@ void XttTbl::activate_opensevhist()
strcpy( aname, s+1);
}
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;
}
......@@ -253,3 +267,35 @@ void XttTbl::activate_help_proview()
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 {
virtual void message( char severity, const char *message) {}
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,
const char *wl_groupname,
void (* wl_bc_success)( void *),
......@@ -81,6 +81,8 @@ class XttTbl {
static int is_authorized( void *ctx, unsigned int access, int msg);
static int command_cb( void *ctx, char *cmd);
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();
int command( char* input_str);
......
......@@ -44,11 +44,17 @@
#include "flow.h"
#include "flow_browctx.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_error.h"
#include "cow_wow.h"
#include "xtt_tbl.h"
#include "xtt_tblnav.h"
#include "xtt_sevhist.h"
#include "co_dcli_msg.h"
#include "cow_xhelp.h"
#include "cow_login.h"
......@@ -380,6 +386,7 @@ static int xtttbl_open_func( void *client_data,
pwr_tOName onamev[11];
bool sevhistobjectv[11];
int sts;
XttSevHist *hist;
// Command is "OPEN HISTORY"
......@@ -439,7 +446,11 @@ static int xtttbl_open_func( void *client_data,
}
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
xtttbl->message('E',"Syntax error");
......
This diff is collapsed.
......@@ -73,6 +73,30 @@ typedef enum {
time_eFormat_NumDateAndTime = 3 //!< Date and time format, 2005-01-01 00:00:00
} 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 GB 1
......@@ -157,6 +181,17 @@ pwr_tDeltaTime * time_ZeroD (pwr_tDeltaTime*);
void time_Sleep (float time);
int time_GetTime (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)
......
This diff is collapsed.
......@@ -47,9 +47,12 @@ class GeCurveGtk : public GeCurve {
GtkWidget *minmax_widget;
GtkWidget *minmax_textmin_widget;
GtkWidget *minmax_textmax_widget;
GtkWidget *tools_higher_res;
GtkWidget *tools_lower_res;
GtkWidget *sea_timebox;
GtkWidget *timebox_start_time;
GtkWidget *timebox_stop_time;
GtkWidget *timebox_timecombo;
CoWowFocusTimerGtk focustimer;
int disable_timecombo_callback;
void pop();
void write_title( char *str);
......@@ -58,7 +61,12 @@ class GeCurveGtk : public GeCurve {
void axis_set_width( int width);
void create_minmax_dialog();
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();
......@@ -72,8 +80,14 @@ 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_increase_period( 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_showname( GtkWidget *w, gpointer data);
static void activate_filledcurves( GtkWidget *w, gpointer data);
......
This diff is collapsed.
......@@ -143,14 +143,20 @@ class GeCurve {
int minmax_idx;
void (*close_cb)( void *);
void (*help_cb)( void *);
void (*higher_res_cb)( void *);
void (*lower_res_cb)( void *);
void (*increase_period_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;
char title[300];
double last_cursor_x;
double last_mark_x;
int deferred_configure_axes;
CoWow *wow;
int center_from_window;
GeCurve( void *gc_parent_ctx, char *curve_name,
char *filename, GeCurveData *curve_data, int pos_right);
......@@ -160,12 +166,18 @@ class GeCurve {
virtual void resize() {}
virtual void open_minmax( int idx) {}
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() {}
int read_file( char *filename);
int configure_curves();
int configure_axes();
int config_names();
void points_added();
void set_title( char *str);
void set_time( pwr_tTime time);
......@@ -178,10 +190,13 @@ class GeCurve {
void activate_background();
void activate_filledcurves( int set);
void activate_help();
void activate_period( time_ePeriod);
void activate_edit();
void activate_minmax_ok( double min_value, double max_value);
void set_curvedata( GeCurveData *curve_data);
void redraw();
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 init_growcurve_cb( GlowCtx *fctx, void *client_data);
......
......@@ -238,12 +238,12 @@ HistGtk::HistGtk( void *hist_parent_ctx,
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);
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"));
gtk_widget_set_size_request( sea_time_stop_label, 120, -1);
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
GtkWidget *sea_time_all = gtk_menu_item_new_with_label( CoWowGtk::translate_utf8("All "));
......@@ -262,10 +262,10 @@ HistGtk::HistGtk( void *hist_parent_ctx,
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"));
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"));
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"));
g_signal_connect( sea_time_time, "activate", G_CALLBACK( time_cb), this);
......@@ -423,25 +423,8 @@ HistGtk::HistGtk( void *hist_parent_ctx,
pwr_tStatus sts;
pwr_tOName name_str;
gint pos = 0;
char buf[80];
pwr_tTime StopTime;
pwr_tTime StartTime;
strcpy( buf, "1970-05-05 00:00:00");
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);
((Hist *)this)->all_cb();
// If objid is applied, search for this object
pos = 0;
......
......@@ -69,9 +69,14 @@ XttSevHistGtk::XttSevHistGtk( void *parent_ctx,
curve = new GeCurveGtk( this, parent_widget, title, NULL, gcd, 1);
curve->close_cb = sevhist_close_cb;
curve->help_cb = sevhist_help_cb;
curve->higher_res_cb = sevhist_higher_res_cb;
curve->lower_res_cb = sevhist_lower_res_cb;
curve->enable_resolution_buttons();
curve->increase_period_cb = sevhist_increase_period_cb;
curve->decrease_period_cb = sevhist_decrease_period_cb;
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);
timerid = wow->timer_new();
......
......@@ -139,67 +139,40 @@ void Hist::activate_helpevent()
void Hist::today_cb()
{
int Sts;
pwr_tTime StartTime;
pwr_tTime StopTime;
Sts = time_GetTime( &StopTime);
Sts = AdjustForDayBreak( this, &StopTime, &StartTime);
StopTime = StartTime;
StopTime.tv_sec += ONEDAY;
if ( time_Acomp( &StartTime, &StopTime) > 0)
StartTime.tv_sec -= ONEDAY;
time_Period( time_ePeriod_Today, &StartTime, &StopTime, 0, 1);
SetListTime( StartTime, StopTime, INSENS);
}
void Hist::yesterday_cb()
{
int Sts;
pwr_tTime StartTime;
pwr_tTime StopTime;
Sts = time_GetTime( &StopTime);
Sts = AdjustForDayBreak( this, &StopTime, &StartTime);
if ( time_Acomp( &StartTime, &StopTime) > 0)
StartTime.tv_sec -= ONEDAY;
StopTime = StartTime;
StartTime.tv_sec -= ONEDAY;
time_Period( time_ePeriod_Yesterday, &StartTime, &StopTime, 0, 0);
SetListTime( StartTime, StopTime, INSENS);
}
void Hist::thisw_cb()
{
int Sts;
pwr_tTime CurrTime;
pwr_tTime StartTime;
pwr_tTime StopTime;
Sts = time_GetTime( &CurrTime);
Sts = GoBackWeek( CurrTime, &StartTime, &StopTime);
StopTime.tv_sec += ONEDAY;
CurrTime.tv_sec += ONEDAY;
time_Period( time_ePeriod_ThisWeek, &StartTime, &StopTime, 0, 1);
SetListTime( StopTime, CurrTime, INSENS);
SetListTime( StartTime, StopTime, INSENS);
}
void Hist::lastw_cb()
{
int Sts;
pwr_tTime CurrTime;
pwr_tTime StartTime;
pwr_tTime StopTime;
Sts = time_GetTime( &CurrTime);
Sts = GoBackWeek( CurrTime, &StartTime, &StopTime);
time_Period( time_ePeriod_LastWeek, &StartTime, &StopTime, 0, 0);
SetListTime( StartTime, StopTime, INSENS);
......@@ -207,62 +180,41 @@ void Hist::lastw_cb()
void Hist::thism_cb()
{
int Sts;
pwr_tTime CurrTime;
pwr_tTime StartTime;
pwr_tTime StopTime;
Sts = time_GetTime( &CurrTime);
Sts = GoBackMonth( CurrTime, &StartTime, &StopTime);
StopTime.tv_sec += ONEDAY;
CurrTime.tv_sec += ONEDAY;
time_Period( time_ePeriod_ThisMonth, &StartTime, &StopTime, 0, 1);
SetListTime( StopTime, CurrTime, INSENS);
SetListTime( StartTime, StopTime, INSENS);
}
void Hist::lastm_cb()
{
int Sts;
pwr_tTime CurrTime;
pwr_tTime StartTime;
pwr_tTime StopTime;
Sts = time_GetTime( &CurrTime);
Sts = GoBackMonth( CurrTime, &StartTime, &StopTime);
time_Period( time_ePeriod_LastMonth, &StartTime, &StopTime, 0, 0);
SetListTime( StartTime, StopTime, INSENS);
}
void Hist::all_cb()
{
int Sts;
pwr_tTime StartTime;
pwr_tTime StopTime;
char timestr[32] = "01-JAN-1970 00:00:00";
time_AsciiToA(timestr, &StartTime);
Sts = time_GetTime( &StopTime);
time_Period( time_ePeriod_AllTime, &StartTime, &StopTime, 0, 1);
StopTime.tv_sec += ONEDAY;
SetListTime( StartTime, StopTime, INSENS);
}
void Hist::time_cb()
{
int Sts;
pwr_tTime StartTime;
pwr_tTime StopTime;
char timestr[32] = "01-JAN-1970 00:00:00";
time_AsciiToA(timestr, &StartTime);
Sts = time_GetTime( &StopTime);
time_Period( time_ePeriod_AllTime, &StartTime, &StopTime, 0, 0);
SetListTime( StartTime, StopTime, SENS);
......@@ -806,7 +758,10 @@ int Hist::GoBackMonth( pwr_tTime TimeIn, pwr_tTime *FromTime,
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_mon = Month;
Tm->tm_year = TmYear;
......@@ -814,8 +769,9 @@ int Hist::GoBackMonth( pwr_tTime TimeIn, pwr_tTime *FromTime,
FromTime->tv_sec = mktime(Tm);
FromTime->tv_nsec = 0;
Tm->tm_mday = DaysOfMonth;
ToTime->tv_sec = mktime(Tm);
ToTime->tv_sec = FromTime->tv_sec + DaysOfMonth * ONEDAY;
// Tm->tm_mday = DaysOfMonth;
// ToTime->tv_sec = mktime(Tm);
ToTime->tv_nsec = 0;
return(1);
......@@ -859,7 +815,7 @@ int Hist::GoBackWeek( pwr_tTime TimeIn, pwr_tTime *FromTime,
FromTime->tv_sec = Time.tv_sec - Days * ONEDAY;
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;
return(1);
......@@ -881,16 +837,21 @@ int Hist::GoBackWeek( pwr_tTime TimeIn, pwr_tTime *FromTime,
*
*************************************************************************/
pwr_tStatus Hist::AdjustForDayBreak( Hist *histOP, pwr_tTime *Time,
pwr_tTime *NewTime)
pwr_tTime *NewTime)
{
pwr_tStatus Sts;
char timestr[32];
struct tm *Tm;
Sts = time_AtoAscii(Time, time_eFormat_DateAndTime, timestr, sizeof(timestr));
sprintf(&timestr[12],"00:00:00");
time_t sec = Time->tv_sec;
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 */
#endif
......
......@@ -28,7 +28,7 @@ xtt_sMethodButton XttMethodToolbar::m_data[XttMethodToolbar::m_size] =
{"Note", "$Object-Note", "$Object-NoteFilter", "$pwr_exe/xtt_meth_note.png", "Note"},
{"Trend", "$Object-OpenTrend", "$Object-OpenTrendFilter", "$pwr_exe/xtt_meth_trend.png", "Trend"},
{"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"},
{"Graph", "$Object-OpenGraph", "$Object-OpenGraphFilter", "$pwr_exe/xtt_meth_graph.png", "Graph"},
{"RtNavigator", "$Object-RtNavigator", "$Object-RtNavigatorFilter", "$pwr_exe/xtt_meth_navigator.png", "RtNavigator"},
......
......@@ -54,8 +54,15 @@ XttSevHist::XttSevHist( void *parent_ctx,
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), 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
for ( oid_cnt = 0; xn_oidv[oid_cnt].vid != 0; oid_cnt++) ;
......@@ -68,12 +75,13 @@ XttSevHist::XttSevHist( void *parent_ctx,
memcpy( onamev, xn_onamev, oid_cnt * sizeof(onamev[0]));
memcpy( sevhistobjectv, xn_sevhistobjectv, oid_cnt * sizeof(sevhistobjectv[0]));
time_Period( time_ePeriod_OneHour, &from, &to, 0, 0);
if ( oid_cnt == 1) {
get_data( sts, pwr_cNTime, pwr_cNTime);
get_data( sts, from, to);
if ( EVEN(*sts)) return;
}
else {
get_multidata( sts, pwr_cNTime, pwr_cNTime);
get_multidata( sts, from, to);
if ( EVEN(*sts)) return;
}
cdh_StrncpyCutOff( title, name, sizeof(title), 1);
......@@ -586,6 +594,52 @@ int XttSevHist::get_multidata( pwr_tStatus *sts, pwr_tTime from, pwr_tTime to)
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()
{
......@@ -602,30 +656,56 @@ void XttSevHist::sevhist_close_cb( void *ctx)
delete sevhist;
}
void XttSevHist::sevhist_higher_res_cb( void *ctx)
void XttSevHist::sevhist_decrease_period_cb( void *ctx)
{
XttSevHist *sevhist = (XttSevHist *) ctx;
double ll_x, ll_y, ur_x, ur_y;
pwr_tTime t_low, t_high;
time_ePeriod period;
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;
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]));
t_high.tv_nsec = 0;
}
void XttSevHist::sevhist_increase_period_cb( void *ctx)
{
XttSevHist *sevhist = (XttSevHist *) ctx;
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;
{
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));
sts = sevhist->curve->get_times( &t_low, &t_high);
if ( EVEN(sts)) {
sevhist->wow->DisplayError( "Time", "Time syntax error");
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)
sevhist->get_data( &sts, t_low, t_high);
else
......@@ -633,46 +713,118 @@ void XttSevHist::sevhist_higher_res_cb( void *ctx)
sevhist->time_low_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;
double ll_x, ll_y, ur_x, ur_y;
pwr_tTime t_low, t_high;
pwr_tTime from, to, prev_from, prev_to;
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] -
5 * (sevhist->gcd->x_max_value_axis[0] - sevhist->gcd->x_min_value_axis[0]));
t_low.tv_nsec = 0;
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 ( time_Acomp( &prev_to, &prev_from) != 1) {
sevhist->wow->DisplayError( "Time", "Start time later than end time");
return;
}
if ( t_low.tv_sec == sevhist->time_low_old && t_high.tv_sec == sevhist->time_high_old) {
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]));
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]));
time_PreviousPeriod( period, &prev_from, &prev_to, &from, &to);
sevhist->curve->set_times( &from, &to);
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);
}
{
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));
void XttSevHist::sevhist_next_period_cb( void *ctx)
{
XttSevHist *sevhist = (XttSevHist *) ctx;
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)
sevhist->get_data( &sts, t_low, t_high);
else
sevhist->get_multidata( &sts, t_low, t_high);
sts = sevhist->curve->get_period( &period);
if ( time_Acomp( &prev_to, &prev_from) != 1) {
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->time_high_old = t_high.tv_sec;
sevhist->curve->set_times( &from, &to);
}
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)
......
......@@ -65,6 +65,7 @@ class XttSevHist {
CoWowTimer *timerid; //!< Time id for scan.
void (*close_cb)( void *, XttSevHist *); //!< Close callback to parent.
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.
char title[250]; //!< Window title
sevcli_tCtx scctx;
......@@ -95,10 +96,17 @@ class XttSevHist {
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_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_higher_res_cb( void *ctx);
static void sevhist_lower_res_cb( void *ctx);
static void sevhist_increase_period_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_scan( void *data);
......
......@@ -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_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_help_cb( void *ctx, const char *key);
static void xnav_xao_close_cb( void *ctx, XAttOne *xao);
......@@ -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);
if ( ODD(sts)) {
hist->help_cb = xnav_sevhist_help_cb;
hist->get_select_cb = xnav_sevhist_get_select_cb;
}
}
else if( sevHistObjectFound ) {
hist = xnav->xttsevhist_new( title_str, oidv, anamev, onamev, sevhistobjectv, xnav->scctx, &sts);
if ( ODD(sts)) {
hist->help_cb = xnav_sevhist_help_cb;
hist->get_select_cb = xnav_sevhist_get_select_cb;
}
}
else {
hist = xnav->xttsevhist_new( title_str, oidv, anamev, onamev, sevhistobjectv, xnav->scctx, &sts);
if ( ODD(sts)) {
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)
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)
{
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"
E 1.10.12 "Scale"
E 1.10.13 "Attribute"
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
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"
E 1.10.12 "Skala"
E 1.10.13 "Attribut"
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
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