Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
P
proview
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Esteban Blanc
proview
Commits
3ba801ae
Commit
3ba801ae
authored
Feb 16, 2010
by
Claes Sjofors
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Xtt commands 'wait' and 'close graph/classgraph' added
parent
49e52a1d
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
203 additions
and
102 deletions
+203
-102
src/msg/rt/src/rt_xnav_msg.msg
src/msg/rt/src/rt_xnav_msg.msg
+1
-1
xtt/changelog.txt
xtt/changelog.txt
+3
-1
xtt/lib/cow/gtk/cow_wow_gtk.cpp
xtt/lib/cow/gtk/cow_wow_gtk.cpp
+25
-0
xtt/lib/cow/gtk/cow_wow_gtk.h
xtt/lib/cow/gtk/cow_wow_gtk.h
+6
-2
xtt/lib/cow/src/cow_wow.h
xtt/lib/cow/src/cow_wow.h
+2
-1
xtt/lib/xtt/src/xtt_xnav.h
xtt/lib/xtt/src/xtt_xnav.h
+1
-0
xtt/lib/xtt/src/xtt_xnav_command.cpp
xtt/lib/xtt/src/xtt_xnav_command.cpp
+165
-97
No files found.
src/msg/rt/src/rt_xnav_msg.msg
View file @
3ba801ae
...
...
@@ -54,6 +54,6 @@ queuefull <Queue is full> /error
waveformat <Unsupported wavefile format> /error
filecorrupt <File is corrupt> /error
notcollectw <Not collect window> /error
noclassgraph <No classgraph found> /error
xtt/changelog.txt
View file @
3ba801ae
...
...
@@ -166,3 +166,5 @@
100209 cs xtt Error message for invalid local attributes in Ge graphs.
100209 cs ge Command 'set attr/bypass' replaced by action SetValue in object graphs.
100209 cs ge PID object graph, indicator for Inverse didn't work.
100216 cs xtt Command 'close graph', qualifier /classgraph added.
100216 cs xtt Command 'wait' added.
\ No newline at end of file
xtt/lib/cow/gtk/cow_wow_gtk.cpp
View file @
3ba801ae
...
...
@@ -44,6 +44,13 @@ typedef struct {
}
wow_sSelection
;
CoWowGtk
::~
CoWowGtk
()
{
if
(
m_wait_timerid
)
g_source_remove
(
m_wait_timerid
);
}
void
CoWowGtk
::
question_ok_cb
(
GtkWidget
*
w
,
gpointer
data
)
{
wow_t_question_cb
*
cbdata
=
(
wow_t_question_cb
*
)
data
;
...
...
@@ -735,6 +742,7 @@ CoWowTimerGtk::~CoWowTimerGtk()
{
if
(
m_timerid
)
g_source_remove
(
m_timerid
);
}
void
CoWowTimerGtk
::
add
(
int
time
,
void
(
*
callback
)(
void
*
data
),
void
*
data
)
...
...
@@ -1315,6 +1323,23 @@ pwr_tStatus CoWowGtk::DeleteMenuItem( const char *name, void *menu)
}
gboolean
CoWowGtk
::
wait_cb
(
void
*
data
)
{
((
CoWowGtk
*
)
data
)
->
m_wait_timerid
=
0
;
gtk_main_quit
();
return
FALSE
;
}
void
CoWowGtk
::
Wait
(
float
time
)
{
m_wait_timerid
=
g_timeout_add
(
int
(
time
*
1000
),
wait_cb
,
this
);
gtk_main
();
}
...
...
xtt/lib/cow/gtk/cow_wow_gtk.h
View file @
3ba801ae
...
...
@@ -87,9 +87,10 @@ class CoWowTimerGtk : public CoWowTimer {
class
CoWowGtk
:
public
CoWow
{
public:
GtkWidget
*
m_parent
;
gint
m_wait_timerid
;
CoWowGtk
(
GtkWidget
*
parent
)
:
m_parent
(
parent
)
{}
~
CoWowGtk
()
{}
CoWowGtk
(
GtkWidget
*
parent
)
:
m_parent
(
parent
)
,
m_wait_timerid
(
0
)
{}
~
CoWowGtk
()
;
void
DisplayQuestion
(
void
*
ctx
,
const
char
*
title
,
const
char
*
text
,
void
(
*
questionbox_ok
)
(
void
*
,
void
*
),
void
(
*
questionbox_cancel
)
(
void
*
,
void
*
),
...
...
@@ -116,6 +117,7 @@ class CoWowGtk : public CoWow {
pwr_tStatus
DeleteMenuItem
(
const
char
*
name
,
void
*
menu
);
CoWowTimer
*
timer_new
();
void
SetParent
(
GtkWidget
*
parent
)
{
m_parent
=
parent
;}
void
Wait
(
float
time
);
static
void
PopupPosition
(
GtkWidget
*
parent
,
int
x_event
,
int
y_event
,
int
*
x
,
int
*
y
);
static
void
GetAtoms
(
GdkAtom
*
graph_atom
,
GdkAtom
*
objid_atom
,
GdkAtom
*
attrref_atom
);
...
...
@@ -140,6 +142,8 @@ class CoWowGtk : public CoWow {
static
void
list_apply_cb
(
GtkWidget
*
w
,
gpointer
data
);
static
void
list_ok_cb
(
GtkWidget
*
w
,
gpointer
data
);
static
void
list_cancel_cb
(
GtkWidget
*
w
,
gpointer
data
);
static
gboolean
wait_cb
(
void
*
data
);
};
#endif
...
...
xtt/lib/cow/src/cow_wow.h
View file @
3ba801ae
...
...
@@ -106,13 +106,14 @@ class CoWow {
const
char
*
button1
,
const
char
*
button2
,
const
char
*
button3
,
const
char
*
image
,
int
input_length
)
{
return
0
;}
virtual
void
Wait
(
float
time
)
{}
static
int
HideWarranty
();
virtual
int
DisplayWarranty
()
{
return
0
;}
virtual
void
DisplayLicense
()
{}
virtual
CoWowTimer
*
timer_new
()
{
return
0
;}
virtual
pwr_tStatus
CreateMenuItem
(
const
char
*
name
,
void
*
menu
,
int
pixmap
,
int
append
,
void
*
w
)
{
return
0
;}
virtual
pwr_tStatus
DeleteMenuItem
(
const
char
*
name
,
void
*
menu
)
{
return
0
;}
};
#endif
...
...
xtt/lib/xtt/src/xtt_xnav.h
View file @
3ba801ae
...
...
@@ -501,6 +501,7 @@ class XNav {
int
create_object
(
char
*
classname
,
char
*
name
);
int
delete_object
(
char
*
name
);
void
print_methods
();
static
pwr_tStatus
get_instance_classgraph
(
char
*
instance_str
,
pwr_tFileName
filename
);
// Table module member functions
int
show_plcthreads
();
...
...
xtt/lib/xtt/src/xtt_xnav_command.cpp
View file @
3ba801ae
...
...
@@ -211,6 +211,8 @@ static int xnav_write_func( void *client_data,
void
*
client_flag
);
static
int
xnav_read_func
(
void
*
client_data
,
void
*
client_flag
);
static
int
xnav_wait_func
(
void
*
client_data
,
void
*
client_flag
);
dcli_tCmdTable
xnav_command_table
[]
=
{
{
...
...
@@ -236,7 +238,7 @@ dcli_tCmdTable xnav_command_table[] = {
"CLOSE"
,
&
xnav_close_func
,
{
"dcli_arg1"
,
"dcli_arg2"
,
"/NAME"
,
"/OBJECT"
,
"/INSTANCE
"
,
"/ALL"
,
"/EXCEPT"
,
""
}
"/INSTANCE"
,
"/CLASSGRAPH
"
,
"/ALL"
,
"/EXCEPT"
,
""
}
},
{
"CREATE"
,
...
...
@@ -374,6 +376,11 @@ dcli_tCmdTable xnav_command_table[] = {
&
xnav_read_func
,
{
"dcli_arg1"
,
"/OBJECT"
,
"/FILE"
,
""
}
},
{
"WAIT"
,
&
xnav_wait_func
,
{
"dcli_arg1"
,
"/TIME"
,
""
}
},
{
""
,}};
...
...
@@ -2570,8 +2577,6 @@ static int xnav_open_func( void *client_data,
pwr_tFileName
fname
;
int
use_default_access
;
unsigned
int
access
;
pwr_tAName
aname
;
pwr_tEnum
graph_conf
;
// Command is "OPEN GRAPH" without graph object
scrollbar
=
ODD
(
dcli_get_qualifier
(
"/SCROLLBAR"
,
0
,
0
));
...
...
@@ -2615,77 +2620,16 @@ static int xnav_open_func( void *client_data,
else
{
if
(
classgraph
)
{
// Get file from class of instance object
pwr_sAttrRef
aref
;
pwr_tObjName
cname
;
pwr_tCid
cid
;
pwr_tFileName
found_file
;
if
(
!
instance_p
)
{
xnav
->
message
(
'E'
,
"Enter instance object"
);
return
XNAV__HOLDCOMMAND
;
}
sts
=
gdh_NameToAttrref
(
pwr_cNObjid
,
instance_p
,
&
aref
);
sts
=
XNav
::
get_instance_classgraph
(
instance_p
,
file_str
);
if
(
EVEN
(
sts
))
{
xnav
->
message
(
'E'
,
"Instance object not found"
);
return
XNAV__HOLDCOMMAND
;
}
sts
=
gdh_GetAttrRefTid
(
&
aref
,
&
cid
);
while
(
ODD
(
sts
))
{
// Try all superclasses
sts
=
gdh_ObjidToName
(
cdh_ClassIdToObjid
(
cid
),
cname
,
sizeof
(
cname
),
cdh_mName_object
);
if
(
EVEN
(
sts
))
return
sts
;
cdh_ToLower
(
cname
,
cname
);
if
(
cdh_CidToVid
(
cid
)
<
cdh_cUserClassVolMin
||
(
cdh_CidToVid
(
cid
)
>=
cdh_cManufactClassVolMin
&&
cdh_CidToVid
(
cid
)
<=
cdh_cManufactClassVolMax
))
{
if
(
cname
[
0
]
==
'$'
)
sprintf
(
file_str
,
"pwr_c_%s"
,
&
cname
[
1
]);
else
sprintf
(
file_str
,
"pwr_c_%s"
,
cname
);
}
else
strcpy
(
file_str
,
cname
);
// Get base class graphs on $pwr_exe
cdh_ToLower
(
fname
,
file_str
);
if
(
instance_p
&&
(
cdh_NoCaseStrncmp
(
fname
,
"pwr_c_"
,
6
)
==
0
||
cdh_NoCaseStrncmp
(
fname
,
"pwr_c_"
,
6
)
==
0
))
{
strcpy
(
fname
,
"$pwr_exe/"
);
strcat
(
fname
,
file_str
);
strcpy
(
file_str
,
fname
);
}
else
{
strcpy
(
fname
,
"$pwrp_exe/"
);
strcat
(
fname
,
file_str
);
strcpy
(
file_str
,
fname
);
}
// Add any GraphConfiguration to filename
strcpy
(
aname
,
instance_p
);
strcat
(
aname
,
".GraphConfiguration"
);
sts
=
gdh_GetObjectInfo
(
aname
,
&
graph_conf
,
sizeof
(
graph_conf
));
if
(
ODD
(
sts
))
{
if
(
graph_conf
!=
0
)
{
char
gc
[
12
];
sprintf
(
gc
,
"%d"
,
graph_conf
);
strcat
(
fname
,
gc
);
}
strcpy
(
file_str
,
fname
);
}
strcat
(
fname
,
".pwg"
);
sts
=
dcli_search_file
(
fname
,
found_file
,
DCLI_DIR_SEARCH_INIT
);
dcli_search_file
(
fname
,
found_file
,
DCLI_DIR_SEARCH_END
);
if
(
ODD
(
sts
))
break
;
sts
=
gdh_GetSuperClass
(
cid
,
&
cid
,
aref
.
Objid
);
}
if
(
EVEN
(
sts
))
{
xnav
->
message
(
'E'
,
"No classgraph found"
);
xnav
->
message
(
'E'
,
XNav
::
get_message
(
sts
));
return
XNAV__HOLDCOMMAND
;
}
...
...
@@ -3583,12 +3527,23 @@ static int xnav_close_func( void *client_data,
pwr_tAName
object_str
;
pwr_tAName
instance_str
;
char
*
instance_p
;
int
classgraph
;
if
(
ODD
(
dcli_get_qualifier
(
"/INSTANCE"
,
instance_str
,
sizeof
(
instance_str
))))
instance_p
=
instance_str
;
else
instance_p
=
0
;
if
(
ODD
(
dcli_get_qualifier
(
"/CLASSGRAPH"
,
0
,
0
)))
{
classgraph
=
1
;
if
(
!
instance_p
)
{
xnav
->
message
(
'E'
,
"Instance is missing"
);
return
XNAV__HOLDCOMMAND
;
}
}
else
classgraph
=
0
;
if
(
ODD
(
dcli_get_qualifier
(
"/OBJECT"
,
object_str
,
sizeof
(
object_str
))))
{
pwr_tObjid
objid
;
...
...
@@ -3635,22 +3590,29 @@ static int xnav_close_func( void *client_data,
char
fname
[
80
];
// Command is "CLOSE GRAPH"
if
(
ODD
(
dcli_get_qualifier
(
"dcli_arg2"
,
file_str
,
sizeof
(
file_str
))))
{
if
(
file_str
[
0
]
==
'/'
)
{
if
(
ODD
(
dcli_get_qualifier
(
"dcli_arg2"
,
file_str
,
sizeof
(
file_str
))))
{
if
(
file_str
[
0
]
==
'/'
)
{
xnav
->
message
(
'E'
,
"Syntax error"
);
return
XNAV__HOLDCOMMAND
;
}
}
else
if
(
EVEN
(
dcli_get_qualifier
(
"/FILE"
,
file_str
,
sizeof
(
file_str
))))
{
xnav
->
message
(
'E'
,
"Enter file"
);
else
if
(
classgraph
)
{
// Get file from class of instance object
pwr_tStatus
sts
;
if
(
!
instance_p
)
{
xnav
->
message
(
'E'
,
"Enter instance object"
);
return
XNAV__HOLDCOMMAND
;
}
sts
=
XNav
::
get_instance_classgraph
(
instance_p
,
file_str
);
if
(
EVEN
(
sts
))
{
xnav
->
message
(
'E'
,
XNav
::
get_message
(
sts
));
return
XNAV__HOLDCOMMAND
;
}
}
else
if
(
ODD
(
dcli_get_qualifier
(
"/FILE"
,
file_str
,
sizeof
(
file_str
))))
{
// Get base class graphs on $pwr_exe
// cdh_ToUpper( fname, file_str);
if
(
instance_p
&&
(
cdh_NoCaseStrncmp
(
fname
,
"pwr_c_"
,
6
)
==
0
||
cdh_NoCaseStrncmp
(
fname
,
"pwr_t_"
,
6
)
==
0
))
{
...
...
@@ -3658,6 +3620,12 @@ static int xnav_close_func( void *client_data,
strcat
(
fname
,
file_str
);
strcpy
(
file_str
,
fname
);
}
}
else
{
xnav
->
message
(
'E'
,
"Enter file"
);
return
XNAV__HOLDCOMMAND
;
}
xnav
->
close_graph
(
file_str
,
instance_p
);
return
XNAV__SUCCESS
;
...
...
@@ -5317,6 +5285,33 @@ static int xnav_read_func(void *client_data,
return
XNAV__SUCCESS
;
}
static
int
xnav_wait_func
(
void
*
client_data
,
void
*
client_flag
)
{
XNav
*
xnav
=
(
XNav
*
)
client_data
;
char
time_str
[
80
];
float
ftime
;
int
sts
;
if
(
EVEN
(
dcli_get_qualifier
(
"/TIME"
,
time_str
,
sizeof
(
time_str
))))
{
if
(
EVEN
(
dcli_get_qualifier
(
"dcli_arg1"
,
time_str
,
sizeof
(
time_str
))))
{
xnav
->
message
(
'E'
,
"Time is missing"
);
return
XNAV__HOLDCOMMAND
;
}
}
sts
=
sscanf
(
time_str
,
"%f"
,
&
ftime
);
if
(
sts
!=
1
)
{
xnav
->
message
(
'E'
,
"Time syntax error"
);
return
XNAV__HOLDCOMMAND
;
}
xnav
->
wow
->
Wait
(
ftime
);
return
XNAV__SUCCESS
;
}
int
XNav
::
show_database
()
{
int
sts
;
...
...
@@ -7311,3 +7306,76 @@ static void xnav_show_objectlist_cancel_cb( void *ctx)
}
pwr_tStatus
XNav
::
get_instance_classgraph
(
char
*
instance_str
,
pwr_tFileName
filename
)
{
// Get file from class of instance object
pwr_tStatus
sts
;
pwr_sAttrRef
aref
;
pwr_tObjName
cname
;
pwr_tCid
cid
;
pwr_tFileName
found_file
,
fname
,
file_str
;
pwr_tAName
aname
;
pwr_tEnum
graph_conf
;
sts
=
gdh_NameToAttrref
(
pwr_cNObjid
,
instance_str
,
&
aref
);
if
(
EVEN
(
sts
))
return
sts
;
sts
=
gdh_GetAttrRefTid
(
&
aref
,
&
cid
);
while
(
ODD
(
sts
))
{
// Try all superclasses
sts
=
gdh_ObjidToName
(
cdh_ClassIdToObjid
(
cid
),
cname
,
sizeof
(
cname
),
cdh_mName_object
);
if
(
EVEN
(
sts
))
return
sts
;
cdh_ToLower
(
cname
,
cname
);
if
(
cdh_CidToVid
(
cid
)
<
cdh_cUserClassVolMin
||
(
cdh_CidToVid
(
cid
)
>=
cdh_cManufactClassVolMin
&&
cdh_CidToVid
(
cid
)
<=
cdh_cManufactClassVolMax
))
{
if
(
cname
[
0
]
==
'$'
)
sprintf
(
file_str
,
"pwr_c_%s"
,
&
cname
[
1
]);
else
sprintf
(
file_str
,
"pwr_c_%s"
,
cname
);
}
else
strcpy
(
file_str
,
cname
);
// Get base class graphs on $pwr_exe
cdh_ToLower
(
fname
,
file_str
);
if
(
(
cdh_NoCaseStrncmp
(
fname
,
"pwr_c_"
,
6
)
==
0
||
cdh_NoCaseStrncmp
(
fname
,
"pwr_c_"
,
6
)
==
0
))
{
strcpy
(
fname
,
"$pwr_exe/"
);
strcat
(
fname
,
file_str
);
strcpy
(
file_str
,
fname
);
}
else
{
strcpy
(
fname
,
"$pwrp_exe/"
);
strcat
(
fname
,
file_str
);
strcpy
(
file_str
,
fname
);
}
// Add any GraphConfiguration to filename
strcpy
(
aname
,
instance_str
);
strcat
(
aname
,
".GraphConfiguration"
);
sts
=
gdh_GetObjectInfo
(
aname
,
&
graph_conf
,
sizeof
(
graph_conf
));
if
(
ODD
(
sts
))
{
if
(
graph_conf
!=
0
)
{
char
gc
[
12
];
sprintf
(
gc
,
"%d"
,
graph_conf
);
strcat
(
fname
,
gc
);
}
strcpy
(
file_str
,
fname
);
}
strcat
(
fname
,
".pwg"
);
sts
=
dcli_search_file
(
fname
,
found_file
,
DCLI_DIR_SEARCH_INIT
);
dcli_search_file
(
fname
,
found_file
,
DCLI_DIR_SEARCH_END
);
if
(
ODD
(
sts
))
break
;
sts
=
gdh_GetSuperClass
(
cid
,
&
cid
,
aref
.
Objid
);
}
if
(
EVEN
(
sts
))
return
XNAV__NOCLASSGRAPH
;
strcpy
(
filename
,
fname
);
return
XNAV__SUCCESS
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment