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
5c2ccbaa
Commit
5c2ccbaa
authored
Sep 27, 2019
by
Marcus Nordenberg
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
rt_xtt: Operator window popup placement + show all available function buttons by default
parent
be9d0585
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
745 additions
and
611 deletions
+745
-611
src/wbl/pwrb/src/pwrb_c_opplace.wb_load
src/wbl/pwrb/src/pwrb_c_opplace.wb_load
+47
-35
xtt/lib/xtt/gtk/xtt_op_gtk.cpp
xtt/lib/xtt/gtk/xtt_op_gtk.cpp
+697
-576
xtt/lib/xtt/gtk/xtt_op_gtk.h
xtt/lib/xtt/gtk/xtt_op_gtk.h
+1
-0
No files found.
src/wbl/pwrb/src/pwrb_c_opplace.wb_load
View file @
5c2ccbaa
!
!
! ProviewR Open Source Process Control.
! Copyright (C) 2005-2019 SSAB EMEA AB.
!
!
! This file is part of ProviewR.
!
! This program is free software; you can redistribute it and/or
! modify it under the terms of the GNU General Public License as
! published by the Free Software Foundation, either version 2 of
! This program is free software; you can redistribute it and/or
! modify it under the terms of the GNU General Public License as
! published by the Free Software Foundation, either version 2 of
! the License, or (at your option) any later version.
!
! This program is distributed in the hope that it will be useful
! but WITHOUT ANY WARRANTY; without even the implied warranty of
! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! This program is distributed in the hope that it will be useful
! but WITHOUT ANY WARRANTY; without even the implied warranty of
! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! GNU General Public License for more details.
!
! You should have received a copy of the GNU General Public License
! You should have received a copy of the GNU General Public License
! along with ProviewR. If not, see <http://www.gnu.org/licenses/>
!
!
! Linking ProviewR statically or dynamically with other modules is
! making a combined work based on ProviewR. Thus, the terms and
! conditions of the GNU General Public License cover the whole
! conditions of the GNU General Public License cover the whole
! combination.
!
!
! In addition, as a special exception, the copyright holders of
! ProviewR give you permission to, from the build function in the
! ProviewR Configurator, combine ProviewR with modules generated by the
! ProviewR PLC Editor to a PLC program, regardless of the license
! terms of these modules. You may copy and distribute the resulting
! combined work under the terms of your choice, provided that every
! copy of the combined work is accompanied by a complete copy of
! combined work under the terms of your choice, provided that every
! copy of the combined work is accompanied by a complete copy of
! the source code of ProviewR (the version used to produce the
! combined work), being distributed under the terms of the GNU
! combined work), being distributed under the terms of the GNU
! General Public License plus this exception.
!
! pwrb_c_opplace.wb_load -- Defines the class OpPlace.
...
...
@@ -43,28 +43,28 @@ SObject pwrb:Class
! Configures a logical operator station for operator
! dialogue. A logical operator station represents a work
! station, X-terminal etc.
!
!
! The object specifies where files are to be fetched and
! on which screen they are to be displayed.
! Put the object below the actual $Node object in the
! Node Configuration.
!
!
! There may be one or more OpPlace objects below a $Node
! object.
! object.
!*/
Object OpPlace $ClassDef 164
Object OpPlace $ClassDef 164
Body SysBody
Attr Editor = pwr_eEditor_AttrEd
Attr Method = pwr_eMethod_Standard
EndBody
Object RtBody $ObjBodyDef 1
Object RtBody $ObjBodyDef 1
Body SysBody
Attr StructName = "OpPlace"
EndBody
!/**
! Optional text to describe the user category etc.
!*/
Object Description $Attribute 1
Object Description $Attribute 1
Body SysBody
Attr TypeRef = "pwrs:Type-$String80"
EndBody
...
...
@@ -79,9 +79,9 @@ SObject pwrb:Class
! Note! If XttUseOpsysUser is set in the Security object, this value is
! overrided, and the username is fetched from the current operator system user.
!
! The UserName is a constant value and can not be changed in runtime.
! The UserName is a constant value and can not be changed in runtime.
!*/
Object UserName $Attribute 28
Object UserName $Attribute 28
Body SysBody
Attr TypeRef = "pwrs:Type-$String32"
Attr Flags |= PWR_MASK_CONST
...
...
@@ -92,17 +92,17 @@ SObject pwrb:Class
! Only if the user has logged in to the operator system as
! one of these user he has authority to start this operator place.
!*/
Object DedicatedOpsysUser $Attribute 29
Object DedicatedOpsysUser $Attribute 29
Body SysBody
Attr TypeRef = "pwrs:Type-$String256"
Attr Flags |= PWR_MASK_CONST
EndBody
EndObject
!/**
! Specifies on which
monitor
the operator dialogue will
! Specifies on which
display
the operator dialogue will
! take place.
! If the operator communication is run on the local node
! and the display is to be displayed on the own
monitor
! and the display is to be displayed on the own
display
! ('default display') the Display attribute ought to be
! left blank.
!*/
...
...
@@ -144,7 +144,7 @@ SObject pwrb:Class
! XttGraph object which is to be activated by a function
! button in the operator window. The buttons are are ordered
! in five rows with five buttons in each row.
! The first row contains buttons for FastAvail[0] - FastAvail[4],
! The first row contains buttons for FastAvail[0] - FastAvail[4],
! the second for FastAvail[5] - FastAVail[9] etc.
!*/
Object FastAvail $Attribute 32
...
...
@@ -209,7 +209,7 @@ SObject pwrb:Class
! Operatorplace options.
! - OperatorLog will turn on the operator logging when rt_xtt is started.
! The logging is stored in $pwrp_log/xtt_'opplace'.log
! - OperatorExendedLog will also store all mouse and motion events in the
! - OperatorExendedLog will also store all mouse and motion events in the
! logfile.
!*/
Object Options $Attribute 47
...
...
@@ -228,7 +228,7 @@ SObject pwrb:Class
!/**
! Specifies the maximum number of contemporary alarms in
! the user's alarm list.
! The number should exceed the maximum number of
! The number should exceed the maximum number of
! concurrent alarms in the system.
! If the limit is exceeded, alarms might be lost.
!*/
...
...
@@ -246,7 +246,7 @@ SObject pwrb:Class
! in respective node. In each node the message handler
! has its own skyline of events (also named MaxNoOfEvents)
! defined by a MessageHandler object. In principle, the
! User object's skyline of events should be selected as
å
! User object's skyline of events should be selected as
�
! MaxNoOfEvents, added up over MaxNoOfEvents in the
! MessageHandler objects in all nodes throughout the
! ProviewR system, or make it simple and assign the
...
...
@@ -275,13 +275,13 @@ SObject pwrb:Class
! produced in an application by means of mh_ApplMessage
! (see ProviewR Programmer's Reference Manual) get an
! identity according to the calling parameter EventName.
!
!
! SelectList specifies the hierarchies from which
! messages are to be sent to the user. Up to 40 different
! hierarchies can be specified. If messages from e.g. a
! Watchdog object in a node will be received, then the
! name of the node will be specified.
!
!
! Note! If the SelectList is left blank no message at all is
! sent to the user.
!*/
...
...
@@ -296,7 +296,7 @@ SObject pwrb:Class
! Specifies the type of events that are sent to the user.
! If no type is specified, all types av events are sent.
!*/
Object EventSelectType $Attribute 49
Object EventSelectType $Attribute 49
Body SysBody
Attr TypeRef = "pwrb:Type-EventTypeMask"
EndBody
...
...
@@ -304,7 +304,7 @@ SObject pwrb:Class
!/**
! Specifies the type of events viewed in the eventlist.
!*/
Object EventListEvents $Attribute 43
Object EventListEvents $Attribute 43
Body SysBody
Attr TypeRef = "pwrb:Type-EventListMask"
EndBody
...
...
@@ -356,16 +356,28 @@ SObject pwrb:Class
Body SysBody
Attr TypeRef = "pwrs:Type-$String80"
EndBody
EndObject
!/**
! Override on what monitor the operator panel will show up. Default 0
! will use the primary monitor of the system. A value of 1 selects the first
! monitor and so on and so forth.
!*/
Object Monitor $Attribute 53
Body SysBody
Attr TypeRef = "pwrs:Type-$UInt32"
Attr Flags = 0
EndBody
EndObject
EndObject
Object Template OpPlace
Body RtBody
Attr AlarmBell = 1
Attr BellDelay = 2
Attr OpWindPop = 3
Attr OpWindPop = 3
Attr OpWindEventNameSegments = 2
Attr MaxNoOfAlarms = 200
Attr MaxNoOfEvents = 500
Attr Monitor = 0
EndBody
EndObject
Object FastAvail $ReferenceList
...
...
xtt/lib/xtt/gtk/xtt_op_gtk.cpp
View file @
5c2ccbaa
...
...
@@ -80,9 +80,11 @@ static void cnv_pango_text(char* in, char* out, int size)
char
*
s
=
in
;
char
*
t
=
out
;
for
(
int
i
=
0
;
i
<
size
&&
*
s
;
i
++
,
s
++
)
{
for
(
int
i
=
0
;
i
<
size
&&
*
s
;
i
++
,
s
++
)
{
*
(
t
++
)
=
*
s
;
if
(
*
s
==
'&'
)
{
if
(
*
s
==
'&'
)
{
// & -> &
if
(
i
+
4
>=
size
)
break
;
...
...
@@ -96,12 +98,11 @@ static void cnv_pango_text(char* in, char* out, int size)
}
OpGtk
::
OpGtk
(
void
*
op_parent_ctx
,
GtkWidget
*
op_parent_wid
,
char
*
opplace
,
pwr_tStatus
*
status
)
pwr_tStatus
*
status
)
:
Op
(
op_parent_ctx
,
opplace
,
status
),
parent_wid
(
op_parent_wid
),
title_label
(
0
),
a_height
(
2
),
text_size
(
12
)
title_label
(
0
),
a_height
(
5
),
text_size
(
12
)
{
pwr_tStatus
sts
;
GdkRectangle
xtt_monitor_geometry
;
GdkColor
black_color
;
memset
(
a_exist
,
0
,
sizeof
(
a_exist
));
...
...
@@ -114,15 +115,12 @@ OpGtk::OpGtk(void* op_parent_ctx, GtkWidget* op_parent_wid, char* opplace,
gdk_color_parse
(
"Black"
,
&
black_color
);
gdk_color_parse
(
"White"
,
&
white_color
);
toplevel
=
(
GtkWidget
*
)
g_object_new
(
GTK_TYPE_WINDOW
,
"default-height"
,
OP_HEIGHT_MIN
,
"default-width"
,
1100
,
NULL
);
toplevel
=
(
GtkWidget
*
)
g_object_new
(
GTK_TYPE_WINDOW
,
"default-height"
,
OP_HEIGHT_MIN
,
"default-width"
,
1100
,
NULL
);
gtk_window_set_decorated
(
GTK_WINDOW
(
toplevel
),
FALSE
);
CoWowGtk
::
SetWindowIcon
(
toplevel
);
GdkScreen
*
xtt_screen
=
gtk_widget_get_screen
(
toplevel
);
int
xtt_monitor
=
gdk_screen_get_monitor_at_point
(
xtt_screen
,
0
,
0
);
gdk_screen_get_monitor_geometry
(
xtt_screen
,
xtt_monitor
,
&
xtt_monitor_geometry
);
pwr_tFileName
fname
;
dcli_translate_filename
(
fname
,
"$pwr_exe/xtt_alarm_active.png"
);
...
...
@@ -284,8 +282,8 @@ OpGtk::OpGtk(void* op_parent_ctx, GtkWidget* op_parent_wid, char* opplace,
gtk_container_add
(
GTK_CONTAINER
(
aalarm_ack
),
gtk_image_new_from_file
(
fname
));
gtk_widget_set_size_request
(
aalarm_ack
,
30
,
20
);
gtk_widget_set_size_request
(
aalarm_mark
,
-
1
,
20
);
g_signal_connect
(
aalarm_ack
,
"clicked"
,
G_CALLBACK
(
activate_aalarm_ack
),
this
);
g_signal_connect
(
aalarm_ack
,
"clicked"
,
G_CALLBACK
(
activate_aalarm_ack
),
this
);
// Increment size button
GtkWidget
*
incr_button
=
gtk_button_new
();
...
...
@@ -293,16 +291,16 @@ OpGtk::OpGtk(void* op_parent_ctx, GtkWidget* op_parent_wid, char* opplace,
gtk_container_add
(
GTK_CONTAINER
(
incr_button
),
gtk_image_new_from_file
(
fname
));
gtk_widget_set_size_request
(
incr_button
,
30
,
20
);
gtk_widget_set_size_request
(
alarmcnt_label
,
-
1
,
20
);
g_signal_connect
(
incr_button
,
"clicked"
,
G_CALLBACK
(
activate_aalarm_incr
),
this
);
g_signal_connect
(
incr_button
,
"clicked"
,
G_CALLBACK
(
activate_aalarm_incr
),
this
);
// Decrement size button
decr_button
=
gtk_button_new
();
dcli_translate_filename
(
fname
,
"$pwr_exe/xtt_up.png"
);
gtk_container_add
(
GTK_CONTAINER
(
decr_button
),
gtk_image_new_from_file
(
fname
));
gtk_widget_set_size_request
(
decr_button
,
30
,
20
);
g_signal_connect
(
decr_button
,
"clicked"
,
G_CALLBACK
(
activate_aalarm_decr
),
this
);
g_signal_connect
(
decr_button
,
"clicked"
,
G_CALLBACK
(
activate_aalarm_decr
),
this
);
// Acknowledge button for b alarms
GtkWidget
*
balarm_ack
=
gtk_button_new
();
...
...
@@ -310,8 +308,8 @@ OpGtk::OpGtk(void* op_parent_ctx, GtkWidget* op_parent_wid, char* opplace,
gtk_container_add
(
GTK_CONTAINER
(
balarm_ack
),
gtk_image_new_from_file
(
fname
));
gtk_widget_set_size_request
(
balarm_ack
,
30
,
20
);
gtk_widget_set_size_request
(
balarm_mark
,
-
1
,
20
);
g_signal_connect
(
balarm_ack
,
"clicked"
,
G_CALLBACK
(
activate_balarm_ack
),
this
);
g_signal_connect
(
balarm_ack
,
"clicked"
,
G_CALLBACK
(
activate_balarm_ack
),
this
);
GtkWidget
*
hbox_abutton
=
gtk_hbox_new
(
FALSE
,
0
);
gtk_box_pack_start
(
GTK_BOX
(
hbox_abutton
),
aalarm_ack
,
FALSE
,
FALSE
,
2
);
...
...
@@ -348,8 +346,8 @@ OpGtk::OpGtk(void* op_parent_ctx, GtkWidget* op_parent_wid, char* opplace,
// Menu
// Accelerators
GtkAccelGroup
*
accel_g
=
(
GtkAccelGroup
*
)
g_object_new
(
GTK_TYPE_ACCEL_GROUP
,
NULL
);
GtkAccelGroup
*
accel_g
=
(
GtkAccelGroup
*
)
g_object_new
(
GTK_TYPE_ACCEL_GROUP
,
NULL
);
gtk_window_add_accel_group
(
GTK_WINDOW
(
toplevel
),
accel_g
);
menu_bar
=
(
GtkMenuBar
*
)
g_object_new
(
GTK_TYPE_MENU_BAR
,
NULL
);
...
...
@@ -361,47 +359,47 @@ OpGtk::OpGtk(void* op_parent_ctx, GtkWidget* op_parent_wid, char* opplace,
CoWowGtk
::
translate_utf8
(
"_AlarmList"
));
dcli_translate_filename
(
fname
,
"$pwr_exe/xtt_alarmlist.png"
);
gtk_image_menu_item_set_image
(
GTK_IMAGE_MENU_ITEM
(
functions_alarm_alarmlist
),
gtk_image_new_from_file
(
fname
));
gtk_image_new_from_file
(
fname
));
g_signal_connect
(
functions_alarm_alarmlist
,
"activate"
,
G_CALLBACK
(
activate_alarmlist
),
this
);
G_CALLBACK
(
activate_alarmlist
),
this
);
GtkWidget
*
functions_alarm_eventlist
=
gtk_image_menu_item_new_with_mnemonic
(
CoWowGtk
::
translate_utf8
(
"_EventList"
));
dcli_translate_filename
(
fname
,
"$pwr_exe/xtt_eventlist.png"
);
gtk_image_menu_item_set_image
(
GTK_IMAGE_MENU_ITEM
(
functions_alarm_eventlist
),
gtk_image_new_from_file
(
fname
));
gtk_image_new_from_file
(
fname
));
g_signal_connect
(
functions_alarm_eventlist
,
"activate"
,
G_CALLBACK
(
activate_eventlist
),
this
);
G_CALLBACK
(
activate_eventlist
),
this
);
GtkWidget
*
functions_alarm_eventlog
=
gtk_image_menu_item_new_with_mnemonic
(
CoWowGtk
::
translate_utf8
(
"Event_Log"
));
dcli_translate_filename
(
fname
,
"$pwr_exe/xtt_eventlog.png"
);
gtk_image_menu_item_set_image
(
GTK_IMAGE_MENU_ITEM
(
functions_alarm_eventlog
),
gtk_image_new_from_file
(
fname
));
gtk_image_new_from_file
(
fname
));
g_signal_connect
(
functions_alarm_eventlog
,
"activate"
,
G_CALLBACK
(
activate_eventlog
),
this
);
G_CALLBACK
(
activate_eventlog
),
this
);
GtkWidget
*
functions_alarm_blocklist
=
gtk_image_menu_item_new_with_mnemonic
(
CoWowGtk
::
translate_utf8
(
"_BlockList"
));
dcli_translate_filename
(
fname
,
"$pwr_exe/xtt_blocklist.png"
);
gtk_image_menu_item_set_image
(
GTK_IMAGE_MENU_ITEM
(
functions_alarm_blocklist
),
gtk_image_new_from_file
(
fname
));
gtk_image_new_from_file
(
fname
));
g_signal_connect
(
functions_alarm_blocklist
,
"activate"
,
G_CALLBACK
(
activate_blocklist
),
this
);
G_CALLBACK
(
activate_blocklist
),
this
);
GtkWidget
*
functions_alarm
=
gtk_menu_item_new_with_mnemonic
(
CoWowGtk
::
translate_utf8
(
"_Alarm"
));
GtkWidget
*
functions_alarm
=
gtk_menu_item_new_with_mnemonic
(
CoWowGtk
::
translate_utf8
(
"_Alarm"
));
GtkMenu
*
functions_alarm_menu
=
(
GtkMenu
*
)
g_object_new
(
GTK_TYPE_MENU
,
NULL
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
functions_alarm_menu
),
functions_alarm_alarmlist
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
functions_alarm_menu
),
functions_alarm_eventlist
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
functions_alarm_menu
),
functions_alarm_eventlog
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
functions_alarm_menu
),
functions_alarm_blocklist
);
gtk_menu_item_set_submenu
(
GTK_MENU_ITEM
(
functions_alarm
),
GTK_WIDGET
(
functions_alarm_menu
));
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
functions_alarm_menu
),
functions_alarm_alarmlist
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
functions_alarm_menu
),
functions_alarm_eventlist
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
functions_alarm_menu
),
functions_alarm_eventlog
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
functions_alarm_menu
),
functions_alarm_blocklist
);
gtk_menu_item_set_submenu
(
GTK_MENU_ITEM
(
functions_alarm
),
GTK_WIDGET
(
functions_alarm_menu
));
// End Alarm submenu
// Submenu Curves
...
...
@@ -409,171 +407,172 @@ OpGtk::OpGtk(void* op_parent_ctx, GtkWidget* op_parent_wid, char* opplace,
CoWowGtk
::
translate_utf8
(
"_Trends"
));
dcli_translate_filename
(
fname
,
"$pwr_exe/xtt_meth_trend.png"
);
gtk_image_menu_item_set_image
(
GTK_IMAGE_MENU_ITEM
(
functions_curves_trend
),
gtk_image_new_from_file
(
fname
));
g_signal_connect
(
functions_curves_trend
,
"activate"
,
G_CALLBACK
(
activate_trend
),
this
);
gtk_image_new_from_file
(
fname
));
g_signal_connect
(
functions_curves_trend
,
"activate"
,
G_CALLBACK
(
activate_trend
),
this
);
GtkWidget
*
functions_curves_fast
=
gtk_image_menu_item_new_with_mnemonic
(
CoWowGtk
::
translate_utf8
(
"_Fast"
));
GtkWidget
*
functions_curves_fast
=
gtk_image_menu_item_new_with_mnemonic
(
CoWowGtk
::
translate_utf8
(
"_Fast"
));
dcli_translate_filename
(
fname
,
"$pwr_exe/xtt_meth_fast.png"
);
gtk_image_menu_item_set_image
(
GTK_IMAGE_MENU_ITEM
(
functions_curves_fast
),
gtk_image_new_from_file
(
fname
));
g_signal_connect
(
functions_curves_fast
,
"activate"
,
G_CALLBACK
(
activate_fast
),
this
);
gtk_image_new_from_file
(
fname
));
g_signal_connect
(
functions_curves_fast
,
"activate"
,
G_CALLBACK
(
activate_fast
),
this
);
GtkWidget
*
functions_curves_history
=
gtk_menu_item_new_with_mnemonic
(
CoWowGtk
::
translate_utf8
(
"_Process History"
));
g_signal_connect
(
functions_curves_history
,
"activate"
,
G_CALLBACK
(
activate_history
),
this
);
g_signal_connect
(
functions_curves_history
,
"activate"
,
G_CALLBACK
(
activate_history
),
this
);
GtkWidget
*
functions_curves
=
gtk_menu_item_new_with_mnemonic
(
CoWowGtk
::
translate_utf8
(
"_Curves"
));
GtkWidget
*
functions_curves
=
gtk_menu_item_new_with_mnemonic
(
CoWowGtk
::
translate_utf8
(
"_Curves"
));
GtkMenu
*
functions_curves_menu
=
(
GtkMenu
*
)
g_object_new
(
GTK_TYPE_MENU
,
NULL
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
functions_curves_menu
),
functions_curves_trend
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
functions_curves_menu
),
functions_curves_fast
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
functions_curves_menu
),
functions_curves_history
);
gtk_menu_item_set_submenu
(
GTK_MENU_ITEM
(
functions_curves
),
GTK_WIDGET
(
functions_curves_menu
));
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
functions_curves_menu
),
functions_curves_trend
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
functions_curves_menu
),
functions_curves_fast
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
functions_curves_menu
),
functions_curves_history
);
gtk_menu_item_set_submenu
(
GTK_MENU_ITEM
(
functions_curves
),
GTK_WIDGET
(
functions_curves_menu
));
// End Curves submenu
// Submenu View
GtkWidget
*
functions_view_colortheme
=
gtk_image_menu_item_new_with_mnemonic
(
CoWowGtk
::
translate_utf8
(
"_Color theme"
));
g_signal_connect
(
functions_view_colortheme
,
"activate"
,
G_CALLBACK
(
activate_colortheme
),
this
);
G_CALLBACK
(
activate_colortheme
),
this
);
GtkWidget
*
functions_view_incr
=
gtk_image_menu_item_new_with_mnemonic
(
CoWowGtk
::
translate_utf8
(
"_Larger Text"
));
dcli_translate_filename
(
fname
,
"$pwr_exe/xtt_zoom_in.png"
);
gtk_image_menu_item_set_image
(
GTK_IMAGE_MENU_ITEM
(
functions_view_incr
),
gtk_image_new_from_file
(
fname
));
g_signal_connect
(
functions_view_incr
,
"activate"
,
G_CALLBACK
(
activate_zoom_in
),
this
);
gtk_image_menu_item_set_image
(
GTK_IMAGE_MENU_ITEM
(
functions_view_incr
),
gtk_image_new_from_file
(
fname
));
g_signal_connect
(
functions_view_incr
,
"activate"
,
G_CALLBACK
(
activate_zoom_in
),
this
);
GtkWidget
*
functions_view_decr
=
gtk_image_menu_item_new_with_mnemonic
(
CoWowGtk
::
translate_utf8
(
"_Smaller Text"
));
dcli_translate_filename
(
fname
,
"$pwr_exe/xtt_zoom_out.png"
);
gtk_image_menu_item_set_image
(
GTK_IMAGE_MENU_ITEM
(
functions_view_decr
),
gtk_image_new_from_file
(
fname
));
g_signal_connect
(
functions_view_decr
,
"activate"
,
G_CALLBACK
(
activate_zoom_out
),
this
);
gtk_image_menu_item_set_image
(
GTK_IMAGE_MENU_ITEM
(
functions_view_decr
),
gtk_image_new_from_file
(
fname
));
g_signal_connect
(
functions_view_decr
,
"activate"
,
G_CALLBACK
(
activate_zoom_out
),
this
);
GtkWidget
*
functions_view
=
gtk_menu_item_new_with_mnemonic
(
CoWowGtk
::
translate_utf8
(
"_View"
));
GtkWidget
*
functions_view
=
gtk_menu_item_new_with_mnemonic
(
CoWowGtk
::
translate_utf8
(
"_View"
));
GtkMenu
*
functions_view_menu
=
(
GtkMenu
*
)
g_object_new
(
GTK_TYPE_MENU
,
NULL
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
functions_view_menu
),
functions_view_colortheme
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
functions_view_menu
),
functions_view_incr
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
functions_view_menu
),
functions_view_decr
);
gtk_menu_item_set_submenu
(
GTK_MENU_ITEM
(
functions_view
),
GTK_WIDGET
(
functions_view_menu
));
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
functions_view_menu
),
functions_view_colortheme
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
functions_view_menu
),
functions_view_incr
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
functions_view_menu
),
functions_view_decr
);
gtk_menu_item_set_submenu
(
GTK_MENU_ITEM
(
functions_view
),
GTK_WIDGET
(
functions_view_menu
));
// End View submenu
// Submenu User
GtkWidget
*
functions_user_switch
=
gtk_menu_item_new_with_mnemonic
(
CoWowGtk
::
translate_utf8
(
"S_witch User"
));
GtkWidget
*
functions_user_switch
=
gtk_menu_item_new_with_mnemonic
(
CoWowGtk
::
translate_utf8
(
"S_witch User"
));
g_signal_connect
(
functions_user_switch
,
"activate"
,
G_CALLBACK
(
activate_switch_user
),
this
);
G_CALLBACK
(
activate_switch_user
),
this
);
GtkWidget
*
functions_user_show
=
gtk_menu_item_new_with_mnemonic
(
CoWowGtk
::
translate_utf8
(
"_Show User"
));
g_signal_connect
(
functions_user_show
,
"activate"
,
G_CALLBACK
(
activate_show_user
),
this
);
GtkWidget
*
functions_user_show
=
gtk_menu_item_new_with_mnemonic
(
CoWowGtk
::
translate_utf8
(
"_Show User"
));
g_signal_connect
(
functions_user_show
,
"activate"
,
G_CALLBACK
(
activate_show_user
),
this
);
GtkWidget
*
functions_user_logout
=
gtk_menu_item_new_with_mnemonic
(
CoWowGtk
::
translate_utf8
(
"_Return"
));
g_signal_connect
(
functions_user_logout
,
"activate"
,
G_CALLBACK
(
activate_logout
),
this
);
GtkWidget
*
functions_user_logout
=
gtk_menu_item_new_with_mnemonic
(
CoWowGtk
::
translate_utf8
(
"_Return"
));
g_signal_connect
(
functions_user_logout
,
"activate"
,
G_CALLBACK
(
activate_logout
),
this
);
GtkWidget
*
functions_user
=
gtk_menu_item_new_with_mnemonic
(
CoWowGtk
::
translate_utf8
(
"_User"
));
GtkWidget
*
functions_user
=
gtk_menu_item_new_with_mnemonic
(
CoWowGtk
::
translate_utf8
(
"_User"
));
GtkMenu
*
functions_user_menu
=
(
GtkMenu
*
)
g_object_new
(
GTK_TYPE_MENU
,
NULL
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
functions_user_menu
),
functions_user_switch
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
functions_user_menu
),
functions_user_show
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
functions_user_menu
),
functions_user_logout
);
gtk_menu_item_set_submenu
(
GTK_MENU_ITEM
(
functions_user
),
GTK_WIDGET
(
functions_user_menu
));
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
functions_user_menu
),
functions_user_switch
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
functions_user_menu
),
functions_user_show
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
functions_user_menu
),
functions_user_logout
);
gtk_menu_item_set_submenu
(
GTK_MENU_ITEM
(
functions_user
),
GTK_WIDGET
(
functions_user_menu
));
// End User submenu
GtkWidget
*
functions_navigator
=
gtk_image_menu_item_new_with_mnemonic
(
CoWowGtk
::
translate_utf8
(
"_Navigator"
));
dcli_translate_filename
(
fname
,
"$pwr_exe/xtt_navigator.png"
);
gtk_image_menu_item_set_image
(
GTK_IMAGE_MENU_ITEM
(
functions_navigator
),
gtk_image_new_from_file
(
fname
));
g_signal_connect
(
functions_navigator
,
"activate"
,
G_CALLBACK
(
activate_navigator
),
this
);
gtk_image_menu_item_set_image
(
GTK_IMAGE_MENU_ITEM
(
functions_navigator
),
gtk_image_new_from_file
(
fname
));
g_signal_connect
(
functions_navigator
,
"activate"
,
G_CALLBACK
(
activate_navigator
),
this
);
// gtk_widget_add_accelerator( functions_navigator, "activate", accel_g,
// 'd', GdkModifierType(GDK_CONTROL_MASK),
//GTK_ACCEL_VISIBLE);
//
GTK_ACCEL_VISIBLE);
GtkWidget
*
functions_graph
=
gtk_image_menu_item_new_with_mnemonic
(
CoWowGtk
::
translate_utf8
(
"_Process Graphics"
));
dcli_translate_filename
(
fname
,
"$pwr_exe/wtt_ge.png"
);
// TODO
gtk_image_menu_item_set_image
(
GTK_IMAGE_MENU_ITEM
(
functions_graph
),
gtk_image_new_from_file
(
fname
));
g_signal_connect
(
functions_graph
,
"activate"
,
G_CALLBACK
(
activate_graph
),
this
);
gtk_image_menu_item_set_image
(
GTK_IMAGE_MENU_ITEM
(
functions_graph
),
gtk_image_new_from_file
(
fname
));
g_signal_connect
(
functions_graph
,
"activate"
,
G_CALLBACK
(
activate_graph
),
this
);
// gtk_widget_add_accelerator( functions_graph, "activate", accel_g,
// 'g', GdkModifierType(GDK_CONTROL_MASK),
//GTK_ACCEL_VISIBLE);
//
GTK_ACCEL_VISIBLE);
// Submenu Help
GtkWidget
*
functions_help_project
=
gtk_image_menu_item_new_with_mnemonic
(
CoWowGtk
::
translate_utf8
(
"_Project"
));
dcli_translate_filename
(
fname
,
"$pwr_exe/xtt_help.png"
);
gtk_image_menu_item_set_image
(
GTK_IMAGE_MENU_ITEM
(
functions_help_project
),
gtk_image_new_from_file
(
fname
));
g_signal_connect
(
functions_help_project
,
"activate"
,
G_CALLBACK
(
activate_help
),
this
);
gtk_image_new_from_file
(
fname
));
g_signal_connect
(
functions_help_project
,
"activate"
,
G_CALLBACK
(
activate_help
),
this
);
GtkWidget
*
functions_help_overview
=
gtk_menu_item_new_with_mnemonic
(
CoWowGtk
::
translate_utf8
(
"_Overview"
));
GtkWidget
*
functions_help_overview
=
gtk_menu_item_new_with_mnemonic
(
CoWowGtk
::
translate_utf8
(
"_Overview"
));
g_signal_connect
(
functions_help_overview
,
"activate"
,
G_CALLBACK
(
activate_help_overview
),
this
);
G_CALLBACK
(
activate_help_overview
),
this
);
GtkWidget
*
functions_help_opwin
=
gtk_menu_item_new_with_mnemonic
(
CoWowGtk
::
translate_utf8
(
"_OperatorWindow"
));
g_signal_connect
(
functions_help_opwin
,
"activate"
,
G_CALLBACK
(
activate_help_opwin
),
this
);
g_signal_connect
(
functions_help_opwin
,
"activate"
,
G_CALLBACK
(
activate_help_opwin
),
this
);
GtkWidget
*
functions_help_proview
=
gtk_menu_item_new_with_mnemonic
(
CoWowGtk
::
translate_utf8
(
"_About ProviewR"
));
g_signal_connect
(
functions_help_proview
,
"activate"
,
G_CALLBACK
(
activate_help_proview
),
this
);
G_CALLBACK
(
activate_help_proview
),
this
);
GtkWidget
*
functions_help
=
gtk_menu_item_new_with_mnemonic
(
CoWowGtk
::
translate_utf8
(
"_Help"
));
GtkWidget
*
functions_help
=
gtk_menu_item_new_with_mnemonic
(
CoWowGtk
::
translate_utf8
(
"_Help"
));
GtkMenu
*
functions_help_menu
=
(
GtkMenu
*
)
g_object_new
(
GTK_TYPE_MENU
,
NULL
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
functions_help_menu
),
functions_help_project
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
functions_help_menu
),
functions_help_overview
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
functions_help_menu
),
functions_help_opwin
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
functions_help_menu
),
functions_help_proview
);
gtk_menu_item_set_submenu
(
GTK_MENU_ITEM
(
functions_help
),
GTK_WIDGET
(
functions_help_menu
));
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
functions_help_menu
),
functions_help_project
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
functions_help_menu
),
functions_help_overview
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
functions_help_menu
),
functions_help_opwin
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
functions_help_menu
),
functions_help_proview
);
gtk_menu_item_set_submenu
(
GTK_MENU_ITEM
(
functions_help
),
GTK_WIDGET
(
functions_help_menu
));
// End Help submenu
functions_close
=
gtk_image_menu_item_new_with_mnemonic
(
CoWowGtk
::
translate_utf8
(
"_Close"
));
gtk_image_menu_item_set_image
(
GTK_IMAGE_MENU_ITEM
(
functions_close
),
functions_close
=
gtk_image_menu_item_new_with_mnemonic
(
CoWowGtk
::
translate_utf8
(
"_Close"
));
gtk_image_menu_item_set_image
(
GTK_IMAGE_MENU_ITEM
(
functions_close
),
gtk_image_new_from_stock
(
"gtk-close"
,
GTK_ICON_SIZE_MENU
));
g_signal_connect
(
functions_close
,
"activate"
,
G_CALLBACK
(
activate_exit
),
this
);
g_signal_connect
(
functions_close
,
"activate"
,
G_CALLBACK
(
activate_exit
),
this
);
// gtk_widget_add_accelerator( functions_close, "activate", accel_g,
// 'w', GdkModifierType(GDK_CONTROL_MASK),
//GTK_ACCEL_VISIBLE);
//
GTK_ACCEL_VISIBLE);
GtkMenu
*
functions_menu
=
(
GtkMenu
*
)
g_object_new
(
GTK_TYPE_MENU
,
NULL
);
gtk_menu_shell_append
(
GTK_MENU_SHELL
(
functions_menu
),
functions_alarm
);
...
...
@@ -588,12 +587,12 @@ OpGtk::OpGtk(void* op_parent_ctx, GtkWidget* op_parent_wid, char* opplace,
GtkWidget
*
functions
=
gtk_image_menu_item_new_with_mnemonic
(
CoWowGtk
::
translate_utf8
(
"_Functions"
));
dcli_translate_filename
(
fname
,
"$pwr_exe/xtt_down.png"
);
gtk_image_menu_item_set_image
(
GTK_IMAGE_MENU_ITEM
(
functions
),
gtk_image_new_from_file
(
fname
));
gtk_image_menu_item_set_image
(
GTK_IMAGE_MENU_ITEM
(
functions
),
gtk_image_new_from_file
(
fname
));
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
));
// Toolbar
tools
=
(
GtkWidget
*
)
g_object_new
(
GTK_TYPE_TOOLBAR
,
NULL
);
...
...
@@ -601,90 +600,90 @@ OpGtk::OpGtk(void* op_parent_ctx, GtkWidget* op_parent_wid, char* opplace,
GtkWidget
*
tools_zoom_in
=
gtk_button_new
();
dcli_translate_filename
(
fname
,
"$pwr_exe/xtt_zoom_in.png"
);
gtk_container_add
(
GTK_CONTAINER
(
tools_zoom_in
),
gtk_image_new_from_file
(
fname
));
g_signal_connect
(
tools_zoom_in
,
"clicked"
,
G_CALLBACK
(
activate_zoom_in
),
this
);
gtk_container_add
(
GTK_CONTAINER
(
tools_zoom_in
),
gtk_image_new_from_file
(
fname
));
g_signal_connect
(
tools_zoom_in
,
"clicked"
,
G_CALLBACK
(
activate_zoom_in
),
this
);
gtk_toolbar_append_widget
(
GTK_TOOLBAR
(
tools
),
tools_zoom_in
,
CoWowGtk
::
translate_utf8
(
"Larger Text"
),
""
);
CoWowGtk
::
translate_utf8
(
"Larger Text"
),
""
);
GtkWidget
*
tools_zoom_out
=
gtk_button_new
();
dcli_translate_filename
(
fname
,
"$pwr_exe/xtt_zoom_out.png"
);
gtk_container_add
(
GTK_CONTAINER
(
tools_zoom_out
),
gtk_image_new_from_file
(
fname
));
g_signal_connect
(
tools_zoom_out
,
"clicked"
,
G_CALLBACK
(
activate_zoom_out
),
this
);
gtk_container_add
(
GTK_CONTAINER
(
tools_zoom_out
),
gtk_image_new_from_file
(
fname
));
g_signal_connect
(
tools_zoom_out
,
"clicked"
,
G_CALLBACK
(
activate_zoom_out
),
this
);
gtk_toolbar_append_widget
(
GTK_TOOLBAR
(
tools
),
tools_zoom_out
,
CoWowGtk
::
translate_utf8
(
"Smaller Text"
),
""
);
CoWowGtk
::
translate_utf8
(
"Smaller Text"
),
""
);
GtkWidget
*
tools_help
=
gtk_button_new
();
dcli_translate_filename
(
fname
,
"$pwr_exe/xtt_help.png"
);
gtk_container_add
(
GTK_CONTAINER
(
tools_help
),
gtk_image_new_from_file
(
fname
));
g_signal_connect
(
tools_help
,
"clicked"
,
G_CALLBACK
(
activate_help
),
this
);
gtk_toolbar_append_widget
(
GTK_TOOLBAR
(
tools
),
tools_help
,
CoWowGtk
::
translate_utf8
(
"Help"
),
""
);
gtk_toolbar_append_widget
(
GTK_TOOLBAR
(
tools
),
tools_help
,
CoWowGtk
::
translate_utf8
(
"Help"
),
""
);
tools_close
=
gtk_button_new
();
dcli_translate_filename
(
fname
,
"$pwr_exe/xtt_close.png"
);
gtk_container_add
(
GTK_CONTAINER
(
tools_close
),
gtk_image_new_from_file
(
fname
));
g_signal_connect
(
tools_close
,
"clicked"
,
G_CALLBACK
(
activate_exit
),
this
);
gtk_toolbar_append_widget
(
GTK_TOOLBAR
(
tools
),
tools_close
,
CoWowGtk
::
translate_utf8
(
"Close"
),
""
);
gtk_toolbar_append_widget
(
GTK_TOOLBAR
(
tools
),
tools_close
,
CoWowGtk
::
translate_utf8
(
"Close"
),
""
);
GtkWidget
*
tools_alarmlist
=
gtk_button_new
();
dcli_translate_filename
(
fname
,
"$pwr_exe/xtt_alarmlist.png"
);
gtk_container_add
(
GTK_CONTAINER
(
tools_alarmlist
),
gtk_image_new_from_file
(
fname
));
g_signal_connect
(
tools_alarmlist
,
"clicked"
,
G_CALLBACK
(
activate_alarmlist
),
this
);
gtk_container_add
(
GTK_CONTAINER
(
tools_alarmlist
),
gtk_image_new_from_file
(
fname
));
g_signal_connect
(
tools_alarmlist
,
"clicked"
,
G_CALLBACK
(
activate_alarmlist
),
this
);
gtk_toolbar_append_widget
(
GTK_TOOLBAR
(
tools2
),
tools_alarmlist
,
CoWowGtk
::
translate_utf8
(
"Alarm List"
),
""
);
CoWowGtk
::
translate_utf8
(
"Alarm List"
),
""
);
GtkWidget
*
tools_eventlist
=
gtk_button_new
();
dcli_translate_filename
(
fname
,
"$pwr_exe/xtt_eventlist.png"
);
gtk_container_add
(
GTK_CONTAINER
(
tools_eventlist
),
gtk_image_new_from_file
(
fname
));
g_signal_connect
(
tools_eventlist
,
"clicked"
,
G_CALLBACK
(
activate_eventlist
),
this
);
gtk_container_add
(
GTK_CONTAINER
(
tools_eventlist
),
gtk_image_new_from_file
(
fname
));
g_signal_connect
(
tools_eventlist
,
"clicked"
,
G_CALLBACK
(
activate_eventlist
),
this
);
gtk_toolbar_append_widget
(
GTK_TOOLBAR
(
tools2
),
tools_eventlist
,
CoWowGtk
::
translate_utf8
(
"Event List"
),
""
);
CoWowGtk
::
translate_utf8
(
"Event List"
),
""
);
GtkWidget
*
tools_eventlog
=
gtk_button_new
();
dcli_translate_filename
(
fname
,
"$pwr_exe/xtt_eventlog.png"
);
gtk_container_add
(
GTK_CONTAINER
(
tools_eventlog
),
gtk_image_new_from_file
(
fname
));
g_signal_connect
(
tools_eventlog
,
"clicked"
,
G_CALLBACK
(
activate_eventlog
),
this
);
gtk_container_add
(
GTK_CONTAINER
(
tools_eventlog
),
gtk_image_new_from_file
(
fname
));
g_signal_connect
(
tools_eventlog
,
"clicked"
,
G_CALLBACK
(
activate_eventlog
),
this
);
gtk_toolbar_append_widget
(
GTK_TOOLBAR
(
tools2
),
tools_eventlog
,
CoWowGtk
::
translate_utf8
(
"Event Log"
),
""
);
CoWowGtk
::
translate_utf8
(
"Event Log"
),
""
);
GtkWidget
*
tools_blocklist
=
gtk_button_new
();
dcli_translate_filename
(
fname
,
"$pwr_exe/xtt_blocklist.png"
);
gtk_container_add
(
GTK_CONTAINER
(
tools_blocklist
),
gtk_image_new_from_file
(
fname
));
g_signal_connect
(
tools_blocklist
,
"clicked"
,
G_CALLBACK
(
activate_blocklist
),
this
);
gtk_container_add
(
GTK_CONTAINER
(
tools_blocklist
),
gtk_image_new_from_file
(
fname
));
g_signal_connect
(
tools_blocklist
,
"clicked"
,
G_CALLBACK
(
activate_blocklist
),
this
);
gtk_toolbar_append_widget
(
GTK_TOOLBAR
(
tools2
),
tools_blocklist
,
CoWowGtk
::
translate_utf8
(
"Blocked Alarms"
),
""
);
CoWowGtk
::
translate_utf8
(
"Blocked Alarms"
),
""
);
GtkWidget
*
tools_navigator
=
gtk_button_new
();
dcli_translate_filename
(
fname
,
"$pwr_exe/xtt_navigator.png"
);
gtk_container_add
(
GTK_CONTAINER
(
tools_navigator
),
gtk_image_new_from_file
(
fname
));
g_signal_connect
(
tools_navigator
,
"clicked"
,
G_CALLBACK
(
activate_navigator
),
this
);
gtk_container_add
(
GTK_CONTAINER
(
tools_navigator
),
gtk_image_new_from_file
(
fname
));
g_signal_connect
(
tools_navigator
,
"clicked"
,
G_CALLBACK
(
activate_navigator
),
this
);
gtk_toolbar_append_widget
(
GTK_TOOLBAR
(
tools2
),
tools_navigator
,
CoWowGtk
::
translate_utf8
(
"Navigator"
),
""
);
CoWowGtk
::
translate_utf8
(
"Navigator"
),
""
);
// System pushbuttons
GtkWidget
*
sysbutton_box
=
gtk_vbox_new
(
FALSE
,
0
);
gtk_box_pack_start
(
GTK_BOX
(
sysbutton_box
),
GTK_WIDGET
(
menu_bar
),
FALSE
,
FALSE
,
0
);
gtk_box_pack_start
(
GTK_BOX
(
sysbutton_box
),
GTK_WIDGET
(
tools
),
FALSE
,
FALSE
,
0
);
gtk_box_pack_start
(
GTK_BOX
(
sysbutton_box
),
GTK_WIDGET
(
tools2
),
FALSE
,
FALSE
,
0
);
gtk_box_pack_start
(
GTK_BOX
(
sysbutton_box
),
GTK_WIDGET
(
menu_bar
),
FALSE
,
FALSE
,
0
);
gtk_box_pack_start
(
GTK_BOX
(
sysbutton_box
),
GTK_WIDGET
(
tools
),
FALSE
,
FALSE
,
0
);
gtk_box_pack_start
(
GTK_BOX
(
sysbutton_box
),
GTK_WIDGET
(
tools2
),
FALSE
,
FALSE
,
0
);
gtk_widget_set_size_request
(
sysbutton_box
,
160
,
-
1
);
sts
=
configure
(
opplace
);
...
...
@@ -693,7 +692,8 @@ OpGtk::OpGtk(void* op_parent_ctx, GtkWidget* op_parent_wid, char* opplace,
// Status bar
GtkWidget
*
status_bar
=
NULL
;
if
(
!
(
layout_mask
&
pwr_mOpWindLayoutMask_HideStatusBar
))
{
if
(
!
(
layout_mask
&
pwr_mOpWindLayoutMask_HideStatusBar
))
{
char
text
[
80
];
pwr_tTime
time
;
...
...
@@ -705,32 +705,38 @@ OpGtk::OpGtk(void* op_parent_ctx, GtkWidget* op_parent_wid, char* opplace,
title_label
=
gtk_label_new
(
""
);
status_bar
=
gtk_hbox_new
(
FALSE
,
0
);
gtk_box_pack_start
(
GTK_BOX
(
status_bar
),
GTK_WIDGET
(
icon_image
),
FALSE
,
FALSE
,
5
);
gtk_box_pack_start
(
GTK_BOX
(
status_bar
),
GTK_WIDGET
(
title_label
),
FALSE
,
FALSE
,
20
);
gtk_box_pack_start
(
GTK_BOX
(
status_bar
),
GTK_WIDGET
(
icon_image
),
FALSE
,
FALSE
,
5
);
gtk_box_pack_start
(
GTK_BOX
(
status_bar
),
GTK_WIDGET
(
title_label
),
FALSE
,
FALSE
,
20
);
// Add node supervision buttons
int
padding1
,
padding2
,
buttonwidth
;
if
(
sup_vect
.
size
()
>
10
)
{
if
(
sup_vect
.
size
()
>
10
)
{
padding1
=
0
;
padding2
=
0
;
buttonwidth
=
(
xtt_monitor_geometry
.
width
-
350
)
/
sup_vect
.
size
();
}
else
if
(
sup_vect
.
size
()
>
6
)
{
buttonwidth
=
(
monitor_geometry
.
width
-
350
)
/
sup_vect
.
size
();
}
else
if
(
sup_vect
.
size
()
>
6
)
{
padding1
=
8
;
padding2
=
5
;
buttonwidth
=
(
xtt_monitor_geometry
.
width
-
350
)
/
sup_vect
.
size
()
-
2
*
padding2
;
}
else
{
buttonwidth
=
(
monitor_geometry
.
width
-
350
)
/
sup_vect
.
size
()
-
2
*
padding2
;
}
else
{
padding1
=
8
;
padding2
=
5
;
buttonwidth
=
0
;
}
for
(
unsigned
int
i
=
0
;
i
<
sup_vect
.
size
();
i
++
)
{
for
(
unsigned
int
i
=
0
;
i
<
sup_vect
.
size
();
i
++
)
{
GtkWidget
*
node_label
=
gtk_label_new
(
""
);
snprintf
(
text
,
sizeof
(
text
),
"<span size=
\"
%d
\"
>%s</span>"
,
11
*
1024
,
sup_vect
[
i
].
node_name
);
sup_vect
[
i
].
node_name
);
gtk_label_set_markup
(
GTK_LABEL
(
node_label
),
CoWowGtk
::
convert_utf8
(
text
));
GtkWidget
*
node_label_bg
=
gtk_event_box_new
();
gtk_container_add
(
GTK_CONTAINER
(
node_label_bg
),
node_label
);
...
...
@@ -747,9 +753,9 @@ OpGtk::OpGtk(void* op_parent_ctx, GtkWidget* op_parent_wid, char* opplace,
gtk_fixed_put
(
GTK_FIXED
(
node_ind_frame_box
),
node_ind_frame
,
0
,
0
);
gtk_fixed_put
(
GTK_FIXED
(
node_ind_frame_box
),
node_ind
,
1
,
1
);
gtk_box_pack_start
(
GTK_BOX
(
node_hbox
),
GTK_WIDGET
(
node_ind_frame_box
),
FALSE
,
FALSE
,
padding1
);
gtk_box_pack_start
(
GTK_BOX
(
node_hbox
),
GTK_WIDGET
(
node_label_bg
),
TRUE
,
TRUE
,
padding1
);
FALSE
,
FALSE
,
padding1
);
gtk_box_pack_start
(
GTK_BOX
(
node_hbox
),
GTK_WIDGET
(
node_label_bg
),
TRUE
,
TRUE
,
padding1
);
GtkWidget
*
node_image
=
gtk_vbox_new
(
FALSE
,
0
);
GtkWidget
*
node_ind_filler1
=
gtk_event_box_new
();
...
...
@@ -760,12 +766,12 @@ OpGtk::OpGtk(void* op_parent_ctx, GtkWidget* op_parent_wid, char* opplace,
gtk_widget_modify_bg
(
GTK_WIDGET
(
node_ind
),
GTK_STATE_NORMAL
,
&
gray_color
);
gtk_widget_set_size_request
(
node_ind
,
18
,
18
);
gtk_widget_modify_bg
(
GTK_WIDGET
(
node_ind_frame
),
GTK_STATE_NORMAL
,
&
black_color
);
gtk_widget_modify_bg
(
GTK_WIDGET
(
node_ind_frame
),
GTK_STATE_PRELIGHT
,
&
black_color
);
gtk_widget_modify_bg
(
GTK_WIDGET
(
node_ind_frame
),
GTK_STATE_ACTIVE
,
&
black_color
);
gtk_widget_modify_bg
(
GTK_WIDGET
(
node_ind_frame
),
GTK_STATE_NORMAL
,
&
black_color
);
gtk_widget_modify_bg
(
GTK_WIDGET
(
node_ind_frame
),
GTK_STATE_PRELIGHT
,
&
black_color
);
gtk_widget_modify_bg
(
GTK_WIDGET
(
node_ind_frame
),
GTK_STATE_ACTIVE
,
&
black_color
);
gtk_widget_set_size_request
(
node_ind_frame
,
20
,
20
);
if
(
buttonwidth
)
...
...
@@ -779,13 +785,13 @@ OpGtk::OpGtk(void* op_parent_ctx, GtkWidget* op_parent_wid, char* opplace,
sup_vect
[
i
].
textbgw
=
(
void
*
)
node_label_bg
;
sup_vect
[
i
].
buttonw
=
(
void
*
)
node_button
;
g_signal_connect
(
node_button
,
"button_press_event"
,
G_CALLBACK
(
activate_sup_node
),
this
);
G_CALLBACK
(
activate_sup_node
),
this
);
g_object_set
(
node_button
,
"can-focus"
,
FALSE
,
NULL
);
gtk_box_pack_start
(
GTK_BOX
(
status_bar
),
GTK_WIDGET
(
node_button
),
FALSE
,
FALSE
,
padding2
);
gtk_box_pack_start
(
GTK_BOX
(
status_bar
),
GTK_WIDGET
(
node_button
),
FALSE
,
FALSE
,
padding2
);
}
if
(
buttonwidth
)
gtk_widget_set_size_request
(
status_bar
,
xtt_
monitor_geometry
.
width
,
-
1
);
gtk_widget_set_size_request
(
status_bar
,
monitor_geometry
.
width
,
-
1
);
}
// Main window
...
...
@@ -800,10 +806,11 @@ OpGtk::OpGtk(void* op_parent_ctx, GtkWidget* op_parent_wid, char* opplace,
gtk_paned_pack2
(
GTK_PANED
(
pane
),
hbox_conf
,
FALSE
,
TRUE
);
GtkWidget
*
vbox_conf
=
gtk_vbox_new
(
FALSE
,
0
);
if
(
!
(
layout_mask
&
pwr_mOpWindLayoutMask_HideStatusBar
))
{
if
(
!
(
layout_mask
&
pwr_mOpWindLayoutMask_HideStatusBar
))
{
gtk_box_pack_start
(
GTK_BOX
(
vbox_conf
),
status_bar
,
FALSE
,
FALSE
,
0
);
gtk_box_pack_start
(
GTK_BOX
(
vbox_conf
),
gtk_hseparator_new
(),
FALSE
,
FALSE
,
2
);
gtk_box_pack_start
(
GTK_BOX
(
vbox_conf
),
gtk_hseparator_new
(),
FALSE
,
FALSE
,
2
);
}
gtk_box_pack_start
(
GTK_BOX
(
vbox_conf
),
pane
,
FALSE
,
FALSE
,
0
);
...
...
@@ -817,7 +824,8 @@ OpGtk::OpGtk(void* op_parent_ctx, GtkWidget* op_parent_wid, char* opplace,
gtk_widget_show_all
(
toplevel
);
if
(
start_jop
)
{
if
(
start_jop
)
{
jop
=
new
Jop
((
void
*
)
this
);
jop
->
command_cb
=
&
jop_command_cb
;
}
...
...
@@ -829,23 +837,16 @@ OpGtk::OpGtk(void* op_parent_ctx, GtkWidget* op_parent_wid, char* opplace,
g_object_set
(
aalarm_box
[
3
],
"visible"
,
FALSE
,
NULL
);
g_object_set
(
aalarm_box
[
4
],
"visible"
,
FALSE
,
NULL
);
g_object_set
(
balarm_box
,
"visible"
,
FALSE
,
NULL
);
g_object_set
(
decr_button
,
"visible"
,
FALSE
,
NULL
);
if
(
layout_mask
&
pwr_mOpWindLayoutMask_HideCloseButton
)
{
g_object_set
(
decr_button
,
"visible"
,
TRUE
,
NULL
);
if
(
layout_mask
&
pwr_mOpWindLayoutMask_HideCloseButton
)
{
g_object_set
(
tools_close
,
"visible"
,
FALSE
,
NULL
);
g_object_set
(
functions_close
,
"visible"
,
FALSE
,
NULL
);
}
if
(
a_height
==
5
)
activate_aalarm_decr
(
0
,
this
);
if
(
a_height
==
4
)
{
// g_object_set( decr_button, "visible", TRUE, NULL);
activate_aalarm_decr
(
0
,
this
);
activate_aalarm_decr
(
0
,
this
);
}
gtk_window_resize
(
GTK_WINDOW
(
toplevel
),
xtt_monitor_geometry
.
width
,
OP_HEIGHT_MIN
);
gtk_window_move
(
GTK_WINDOW
(
toplevel
),
0
,
0
);
gtk_window_resize
(
GTK_WINDOW
(
toplevel
),
monitor_geometry
.
width
,
OP_HEIGHT_MIN
);
gtk_window_move
(
GTK_WINDOW
(
toplevel
),
monitor_geometry
.
x
,
0
);
wow
=
new
CoWowGtk
(
toplevel
);
sup_timerid
=
wow
->
timer_new
();
...
...
@@ -864,7 +865,8 @@ OpGtk::~OpGtk()
{
if
(
jop
)
delete
jop
;
if
(
sup_timerid
)
{
if
(
sup_timerid
)
{
sup_timerid
->
remove
();
delete
sup_timerid
;
}
...
...
@@ -889,8 +891,8 @@ void OpGtk::add_close_button()
g_object_set
(
functions_close
,
"visible"
,
TRUE
,
NULL
);
}
int
OpGtk
::
create_menu_item
(
const
char
*
name
,
int
pixmap
,
int
append
,
const
char
*
cmd
)
int
OpGtk
::
create_menu_item
(
const
char
*
name
,
int
pixmap
,
int
append
,
const
char
*
cmd
)
{
GtkWidget
*
w
;
int
sts
;
...
...
@@ -924,9 +926,11 @@ void OpGtk::update_alarm_info()
int
show_time
=
0
;
time_eFormat
time_format
=
time_eFormat_Time
;
char
*
s
;
int
backward
=
layout_mask
&
pwr_mOpWindLayoutMask_ShowOldestNotAckedAlarm
?
1
:
0
;
int
backward
=
layout_mask
&
pwr_mOpWindLayoutMask_ShowOldestNotAckedAlarm
?
1
:
0
;
if
(
get_alarm_info_cb
)
{
if
(
get_alarm_info_cb
)
{
sts
=
(
get_alarm_info_cb
)(
parent_ctx
,
&
info
,
backward
,
a_height
);
if
(
EVEN
(
sts
))
return
;
...
...
@@ -941,55 +945,71 @@ void OpGtk::update_alarm_info()
snprintf
(
str
,
sizeof
(
str
),
"%d"
,
info
.
alarms_total
);
gtk_label_set_text
(
GTK_LABEL
(
alarmcnt_label
),
str
);
if
(
layout_mask
&
pwr_mOpWindLayoutMask_ShowAlarmDateAndTime
)
{
if
(
layout_mask
&
pwr_mOpWindLayoutMask_ShowAlarmDateAndTime
)
{
time_format
=
time_eFormat_ComprDateAndTime
;
show_time
=
1
;
}
else
if
(
layout_mask
&
pwr_mOpWindLayoutMask_ShowAlarmTime
)
{
}
else
if
(
layout_mask
&
pwr_mOpWindLayoutMask_ShowAlarmTime
)
{
time_format
=
time_eFormat_Time
;
show_time
=
1
;
}
for
(
i
=
0
;
i
<
5
;
i
++
)
{
for
(
i
=
0
;
i
<
5
;
i
++
)
{
a_exist
[
i
]
=
info
.
a_alarm_exist
[
i
];
a_active
[
i
]
=
info
.
a_alarm_active
[
i
];
strcpy
(
a_alarm_moretext
[
i
],
info
.
a_alarm_moretext
[
i
]);
if
(
info
.
a_alarm_exist
[
i
])
{
if
(
info
.
a_alarm_exist
[
i
])
{
cnv_pango_text
(
info
.
a_alarm_text
[
i
],
ctext
,
sizeof
(
ctext
));
if
(
show_time
)
{
sts
=
time_AtoAscii
(
&
info
.
a_alarm_time
[
i
],
time_format
,
timestr
,
sizeof
(
timestr
));
if
(
show_time
)
{
sts
=
time_AtoAscii
(
&
info
.
a_alarm_time
[
i
],
time_format
,
timestr
,
sizeof
(
timestr
));
if
((
s
=
strrchr
(
timestr
,
'.'
)))
*
s
=
0
;
snprintf
(
text
,
sizeof
(
text
),
"<span size=
\"
%d
\"
>%s %s %s</span>"
,
fsize
,
timestr
,
info
.
a_alarm_alias
[
i
],
ctext
);
}
else
fsize
,
timestr
,
info
.
a_alarm_alias
[
i
],
ctext
);
}
else
snprintf
(
text
,
sizeof
(
text
),
"<span size=
\"
%d
\"
>%s %s</span>"
,
fsize
,
info
.
a_alarm_alias
[
i
],
ctext
);
info
.
a_alarm_alias
[
i
],
ctext
);
gtk_label_set_markup
(
GTK_LABEL
(
aalarm_label
[
i
]),
CoWowGtk
::
convert_utf8
(
text
));
gtk_label_set_markup
(
GTK_LABEL
(
aalarm_label
[
i
]),
CoWowGtk
::
convert_utf8
(
text
));
snprintf
(
text
,
sizeof
(
text
),
"<span size=
\"
%d
\"
>%s</span>"
,
fsize
,
timestr
);
snprintf
(
text
,
sizeof
(
text
),
"<span size=
\"
%d
\"
>%s</span>"
,
fsize
,
timestr
);
// gtk_widget_modify_bg( aalarm_box[i], GTK_STATE_NORMAL, &red_color);
if
(
i
<
a_height
)
{
if
(
i
<
a_height
)
{
g_object_set
(
aalarm_box
[
i
],
"visible"
,
TRUE
,
NULL
);
if
(
info
.
a_alarm_active
[
i
])
{
if
(
info
.
a_alarm_active
[
i
])
{
g_object_set
(
aalarm_active
[
i
],
"visible"
,
TRUE
,
NULL
);
}
else
{
}
else
{
g_object_set
(
aalarm_active
[
i
],
"visible"
,
FALSE
,
NULL
);
}
if
(
!
streq
(
info
.
a_alarm_moretext
[
i
],
""
))
{
if
(
!
streq
(
info
.
a_alarm_moretext
[
i
],
""
))
{
g_object_set
(
aalarm_info
[
i
],
"visible"
,
TRUE
,
NULL
);
}
else
{
}
else
{
g_object_set
(
aalarm_info
[
i
],
"visible"
,
FALSE
,
NULL
);
}
}
}
else
{
}
else
{
gtk_label_set_text
(
GTK_LABEL
(
aalarm_label
[
i
]),
""
);
// gtk_widget_modify_bg( aalarm_box[i], GTK_STATE_NORMAL, &bg_color);
g_object_set
(
aalarm_active
[
i
],
"visible"
,
FALSE
,
NULL
);
...
...
@@ -997,43 +1017,54 @@ void OpGtk::update_alarm_info()
}
}
if
(
info
.
b_alarm_exist
[
0
])
{
if
(
info
.
b_alarm_exist
[
0
])
{
balarm_type
=
evlist_eEventType_Alarm
;
balarm_prio
=
mh_eEventPrio_B
;
strcpy
(
b_alarm_moretext
,
info
.
b_alarm_moretext
[
0
]);
cnv_pango_text
(
info
.
b_alarm_text
[
0
],
ctext
,
sizeof
(
ctext
));
if
(
show_time
)
{
sts
=
time_AtoAscii
(
&
info
.
b_alarm_time
[
0
],
time_format
,
timestr
,
sizeof
(
timestr
));
if
(
show_time
)
{
sts
=
time_AtoAscii
(
&
info
.
b_alarm_time
[
0
],
time_format
,
timestr
,
sizeof
(
timestr
));
if
((
s
=
strrchr
(
timestr
,
'.'
)))
*
s
=
0
;
snprintf
(
text
,
sizeof
(
text
),
"<span size=
\"
%d
\"
>%s %s %s</span>"
,
fsize
,
timestr
,
info
.
b_alarm_alias
[
0
],
ctext
);
}
else
fsize
,
timestr
,
info
.
b_alarm_alias
[
0
],
ctext
);
}
else
snprintf
(
text
,
sizeof
(
text
),
"<span size=
\"
%d
\"
>%s %s</span>"
,
fsize
,
info
.
b_alarm_alias
[
0
],
ctext
);
info
.
b_alarm_alias
[
0
],
ctext
);
gtk_label_set_markup
(
GTK_LABEL
(
balarm_label
),
CoWowGtk
::
convert_utf8
(
text
));
gtk_label_set_markup
(
GTK_LABEL
(
balarm_label
),
CoWowGtk
::
convert_utf8
(
text
));
gtk_widget_modify_bg
(
balarm_ebox
,
GTK_STATE_NORMAL
,
&
yellow_color
);
g_object_set
(
balarm_box
,
"visible"
,
TRUE
,
NULL
);
gtk_label_set_text
(
GTK_LABEL
(
balarm_mark
),
"B"
);
if
(
info
.
b_alarm_active
[
0
])
{
if
(
info
.
b_alarm_active
[
0
])
{
g_object_set
(
balarm_active
,
"visible"
,
TRUE
,
NULL
);
}
else
{
}
else
{
g_object_set
(
balarm_active
,
"visible"
,
FALSE
,
NULL
);
}
if
(
!
streq
(
info
.
b_alarm_moretext
[
0
],
""
))
{
if
(
!
streq
(
info
.
b_alarm_moretext
[
0
],
""
))
{
g_object_set
(
balarm_info
,
"visible"
,
TRUE
,
NULL
);
}
else
{
}
else
{
g_object_set
(
balarm_info
,
"visible"
,
FALSE
,
NULL
);
}
}
else
if
(
info
.
c_alarm_exist
[
0
])
{
}
else
if
(
info
.
c_alarm_exist
[
0
])
{
GdkColor
blue_color
;
gdk_color_parse
(
"Lightblue"
,
&
blue_color
);
...
...
@@ -1041,35 +1072,45 @@ void OpGtk::update_alarm_info()
balarm_prio
=
mh_eEventPrio_C
;
strcpy
(
b_alarm_moretext
,
info
.
c_alarm_moretext
[
0
]);
cnv_pango_text
(
info
.
c_alarm_text
[
0
],
ctext
,
sizeof
(
ctext
));
if
(
show_time
)
{
sts
=
time_AtoAscii
(
&
info
.
c_alarm_time
[
0
],
time_format
,
timestr
,
sizeof
(
timestr
));
if
(
show_time
)
{
sts
=
time_AtoAscii
(
&
info
.
c_alarm_time
[
0
],
time_format
,
timestr
,
sizeof
(
timestr
));
if
((
s
=
strrchr
(
timestr
,
'.'
)))
*
s
=
0
;
snprintf
(
text
,
sizeof
(
text
),
"<span size=
\"
%d
\"
>%s %s %s</span>"
,
fsize
,
timestr
,
info
.
c_alarm_alias
[
i
],
ctext
);
}
else
fsize
,
timestr
,
info
.
c_alarm_alias
[
i
],
ctext
);
}
else
snprintf
(
text
,
sizeof
(
text
),
"<span size=
\"
%d
\"
>%s %s</span>"
,
fsize
,
info
.
c_alarm_alias
[
0
],
ctext
);
gtk_label_set_markup
(
GTK_LABEL
(
balarm_label
),
CoWowGtk
::
convert_utf8
(
text
));
info
.
c_alarm_alias
[
0
],
ctext
);
gtk_label_set_markup
(
GTK_LABEL
(
balarm_label
),
CoWowGtk
::
convert_utf8
(
text
));
gtk_widget_modify_bg
(
balarm_ebox
,
GTK_STATE_NORMAL
,
&
blue_color
);
g_object_set
(
balarm_box
,
"visible"
,
TRUE
,
NULL
);
gtk_label_set_text
(
GTK_LABEL
(
balarm_mark
),
"C"
);
if
(
info
.
c_alarm_active
[
0
])
{
if
(
info
.
c_alarm_active
[
0
])
{
g_object_set
(
balarm_active
,
"visible"
,
TRUE
,
NULL
);
}
else
{
}
else
{
g_object_set
(
balarm_active
,
"visible"
,
FALSE
,
NULL
);
}
if
(
!
streq
(
info
.
c_alarm_moretext
[
0
],
""
))
{
if
(
!
streq
(
info
.
c_alarm_moretext
[
0
],
""
))
{
g_object_set
(
balarm_info
,
"visible"
,
TRUE
,
NULL
);
}
else
{
}
else
{
g_object_set
(
balarm_info
,
"visible"
,
FALSE
,
NULL
);
}
}
else
if
(
info
.
d_alarm_exist
[
0
])
{
}
else
if
(
info
.
d_alarm_exist
[
0
])
{
GdkColor
violet_color
;
gdk_color_parse
(
"Violet"
,
&
violet_color
);
...
...
@@ -1077,51 +1118,63 @@ void OpGtk::update_alarm_info()
balarm_prio
=
mh_eEventPrio_D
;
strcpy
(
b_alarm_moretext
,
info
.
d_alarm_moretext
[
0
]);
cnv_pango_text
(
info
.
d_alarm_text
[
0
],
ctext
,
sizeof
(
ctext
));
if
(
show_time
)
{
sts
=
time_AtoAscii
(
&
info
.
d_alarm_time
[
0
],
time_format
,
timestr
,
sizeof
(
timestr
));
if
(
show_time
)
{
sts
=
time_AtoAscii
(
&
info
.
d_alarm_time
[
0
],
time_format
,
timestr
,
sizeof
(
timestr
));
if
((
s
=
strrchr
(
timestr
,
'.'
)))
*
s
=
0
;
snprintf
(
text
,
sizeof
(
text
),
"<span size=
\"
%d
\"
>%s %s %s</span>"
,
fsize
,
timestr
,
info
.
d_alarm_alias
[
0
],
ctext
);
}
else
fsize
,
timestr
,
info
.
d_alarm_alias
[
0
],
ctext
);
}
else
snprintf
(
text
,
sizeof
(
text
),
"<span size=
\"
%d
\"
>%s %s</span>"
,
fsize
,
info
.
d_alarm_alias
[
0
],
ctext
);
gtk_label_set_markup
(
GTK_LABEL
(
balarm_label
),
CoWowGtk
::
convert_utf8
(
text
));
info
.
d_alarm_alias
[
0
],
ctext
);
gtk_label_set_markup
(
GTK_LABEL
(
balarm_label
),
CoWowGtk
::
convert_utf8
(
text
));
gtk_widget_modify_bg
(
balarm_ebox
,
GTK_STATE_NORMAL
,
&
violet_color
);
g_object_set
(
balarm_box
,
"visible"
,
TRUE
,
NULL
);
gtk_label_set_text
(
GTK_LABEL
(
balarm_mark
),
"D"
);
if
(
info
.
b_alarm_active
[
0
])
{
if
(
info
.
b_alarm_active
[
0
])
{
g_object_set
(
balarm_active
,
"visible"
,
TRUE
,
NULL
);
}
else
{
}
else
{
g_object_set
(
balarm_active
,
"visible"
,
FALSE
,
NULL
);
}
if
(
!
streq
(
info
.
d_alarm_moretext
[
0
],
""
))
{
if
(
!
streq
(
info
.
d_alarm_moretext
[
0
],
""
))
{
g_object_set
(
balarm_info
,
"visible"
,
TRUE
,
NULL
);
}
else
{
}
else
{
g_object_set
(
balarm_info
,
"visible"
,
FALSE
,
NULL
);
}
}
else
if
(
info
.
i_alarm_exist
[
0
])
{
}
else
if
(
info
.
i_alarm_exist
[
0
])
{
balarm_type
=
info
.
i_alarm_eventtype
[
0
];
strcpy
(
b_alarm_moretext
,
info
.
i_alarm_moretext
[
0
]);
cnv_pango_text
(
info
.
i_alarm_text
[
0
],
ctext
,
sizeof
(
ctext
));
if
(
show_time
)
{
sts
=
time_AtoAscii
(
&
info
.
i_alarm_time
[
0
],
time_format
,
timestr
,
sizeof
(
timestr
));
if
(
show_time
)
{
sts
=
time_AtoAscii
(
&
info
.
i_alarm_time
[
0
],
time_format
,
timestr
,
sizeof
(
timestr
));
if
((
s
=
strrchr
(
timestr
,
'.'
)))
*
s
=
0
;
snprintf
(
text
,
sizeof
(
text
),
"<span size=
\"
%d
\"
>%s %s %s</span>"
,
fsize
,
timestr
,
info
.
i_alarm_alias
[
0
],
ctext
);
}
else
fsize
,
timestr
,
info
.
i_alarm_alias
[
0
],
ctext
);
}
else
snprintf
(
text
,
sizeof
(
text
),
"<span size=
\"
%d
\"
>%s %s</span>"
,
fsize
,
info
.
i_alarm_alias
[
0
],
ctext
);
gtk_label_set_markup
(
GTK_LABEL
(
balarm_label
),
CoWowGtk
::
convert_utf8
(
text
));
info
.
i_alarm_alias
[
0
],
ctext
);
gtk_label_set_markup
(
GTK_LABEL
(
balarm_label
),
CoWowGtk
::
convert_utf8
(
text
));
if
(
balarm_type
==
evlist_eEventType_InfoSuccess
)
gtk_widget_modify_bg
(
balarm_ebox
,
GTK_STATE_NORMAL
,
&
green_color
);
else
...
...
@@ -1130,17 +1183,25 @@ void OpGtk::update_alarm_info()
gtk_label_set_text
(
GTK_LABEL
(
balarm_mark
),
"I"
);
if
(
info
.
i_alarm_active
[
0
])
{
if
(
info
.
i_alarm_active
[
0
])
{
g_object_set
(
balarm_active
,
"visible"
,
TRUE
,
NULL
);
}
else
{
}
else
{
g_object_set
(
balarm_active
,
"visible"
,
FALSE
,
NULL
);
}
if
(
!
streq
(
info
.
i_alarm_moretext
[
0
],
""
))
{
if
(
!
streq
(
info
.
i_alarm_moretext
[
0
],
""
))
{
g_object_set
(
balarm_info
,
"visible"
,
TRUE
,
NULL
);
}
else
{
}
else
{
g_object_set
(
balarm_info
,
"visible"
,
FALSE
,
NULL
);
}
}
else
{
}
else
{
gtk_label_set_text
(
GTK_LABEL
(
balarm_label
),
""
);
gtk_widget_modify_bg
(
balarm_ebox
,
GTK_STATE_NORMAL
,
&
bg_color
);
gtk_label_set_text
(
GTK_LABEL
(
balarm_mark
),
""
);
...
...
@@ -1173,10 +1234,22 @@ int OpGtk::configure(char* opplace_str)
if
(
opplace_p
->
StartJavaProcess
)
start_jop
=
1
;
GdkScreen
*
xtt_screen
=
gtk_widget_get_screen
(
toplevel
);
int
numberOfMonitors
=
gdk_screen_get_n_monitors
(
xtt_screen
);
int
monitor
=
opplace_p
->
Monitor
;
if
(
monitor
>
numberOfMonitors
||
monitor
<
0
)
monitor
=
0
;
if
(
monitor
==
0
)
monitor
=
gdk_screen_get_primary_monitor
(
xtt_screen
);
else
monitor
=
opplace_p
->
Monitor
-
1
;
gdk_screen_get_monitor_geometry
(
xtt_screen
,
monitor
,
&
monitor_geometry
);
// Examine Graph objects
for
(
i
=
0
;
i
<
sizeof
(
opplace_p
->
FastAvail
)
/
sizeof
(
opplace_p
->
FastAvail
[
0
]);
i
++
)
{
i
<
sizeof
(
opplace_p
->
FastAvail
)
/
sizeof
(
opplace_p
->
FastAvail
[
0
]);
i
++
)
{
button_aref
[
i
].
Objid
=
pwr_cNOid
;
if
(
cdh_ObjidIsNull
(
opplace_p
->
FastAvail
[
i
].
Objid
))
continue
;
...
...
@@ -1186,34 +1259,35 @@ int OpGtk::configure(char* opplace_str)
continue
;
memset
(
&
attrref
,
0
,
sizeof
(
attrref
));
switch
(
tid
)
{
switch
(
tid
)
{
case
pwr_cClass_XttGraph
:
sts
=
gdh_ClassAttrToAttrref
(
pwr_cClass_XttGraph
,
".ButtonText"
,
&
attrref
);
sts
=
gdh_ClassAttrToAttrref
(
pwr_cClass_XttGraph
,
".ButtonText"
,
&
attrref
);
if
(
EVEN
(
sts
))
return
sts
;
break
;
case
pwr_cClass_XttMultiView
:
sts
=
gdh_ClassAttrToAttrref
(
pwr_cClass_XttMultiView
,
".ButtonText"
,
&
attrref
);
sts
=
gdh_ClassAttrToAttrref
(
pwr_cClass_XttMultiView
,
".ButtonText"
,
&
attrref
);
if
(
EVEN
(
sts
))
return
sts
;
break
;
case
pwr_cClass_XttCamera
:
sts
=
gdh_ClassAttrToAttrref
(
pwr_cClass_XttCamera
,
".ButtonText"
,
&
attrref
);
sts
=
gdh_ClassAttrToAttrref
(
pwr_cClass_XttCamera
,
".ButtonText"
,
&
attrref
);
if
(
EVEN
(
sts
))
return
sts
;
break
;
case
pwr_cClass_SevPlotGroup
:
sts
=
gdh_ClassAttrToAttrref
(
pwr_cClass_SevPlotGroup
,
".ButtonText"
,
&
attrref
);
sts
=
gdh_ClassAttrToAttrref
(
pwr_cClass_SevPlotGroup
,
".ButtonText"
,
&
attrref
);
if
(
EVEN
(
sts
))
return
sts
;
break
;
case
pwr_cClass_PlotGroup
:
sts
=
gdh_ClassAttrToAttrref
(
pwr_cClass_PlotGroup
,
".ButtonText"
,
&
attrref
);
sts
=
gdh_ClassAttrToAttrref
(
pwr_cClass_PlotGroup
,
".ButtonText"
,
&
attrref
);
if
(
EVEN
(
sts
))
return
sts
;
break
;
...
...
@@ -1222,15 +1296,16 @@ int OpGtk::configure(char* opplace_str)
}
attrref
=
cdh_ArefAdd
(
&
opplace_p
->
FastAvail
[
i
],
&
attrref
);
sts
=
gdh_GetObjectInfoAttrref
(
&
attrref
,
(
void
*
)
button_title
[
i
],
sizeof
(
button_title
[
0
]));
sts
=
gdh_GetObjectInfoAttrref
(
&
attrref
,
(
void
*
)
button_title
[
i
],
sizeof
(
button_title
[
0
]));
if
(
EVEN
(
sts
))
continue
;
if
(
streq
(
button_title
[
i
],
""
))
{
if
(
streq
(
button_title
[
i
],
""
))
{
// Take object name instead
sts
=
gdh_AttrrefToName
(
&
opplace_p
->
FastAvail
[
i
],
button_title
[
i
],
sizeof
(
button_title
[
0
]),
cdh_mName_object
);
sizeof
(
button_title
[
0
]),
cdh_mName_object
);
if
(
EVEN
(
sts
))
continue
;
}
...
...
@@ -1240,13 +1315,13 @@ int OpGtk::configure(char* opplace_str)
// Create the application buttons
for
(
i
=
0
;
i
<
sizeof
(
opplace_p
->
FastAvail
)
/
sizeof
(
opplace_p
->
FastAvail
[
0
]);
i
++
)
{
i
<
sizeof
(
opplace_p
->
FastAvail
)
/
sizeof
(
opplace_p
->
FastAvail
[
0
]);
i
++
)
{
if
(
cdh_ObjidIsNull
(
button_aref
[
i
].
Objid
))
continue
;
char
*
textutf8
=
g_convert
(
button_title
[
i
],
-
1
,
"UTF-8"
,
"ISO8859-1"
,
NULL
,
NULL
,
NULL
);
char
*
textutf8
=
g_convert
(
button_title
[
i
],
-
1
,
"UTF-8"
,
"ISO8859-1"
,
NULL
,
NULL
,
NULL
);
// appl_buttons[i] = gtk_button_new_with_label(textutf8);
appl_buttons
[
i
]
=
gtk_event_box_new
();
gtk_container_set_border_width
(
GTK_CONTAINER
(
appl_buttons
[
i
]),
2
);
...
...
@@ -1254,150 +1329,140 @@ int OpGtk::configure(char* opplace_str)
g_free
(
textutf8
);
gtk_container_add
(
GTK_CONTAINER
(
appl_buttons
[
i
]),
label
);
gtk_widget_set_size_request
(
appl_buttons
[
i
],
-
1
,
28
);
switch
(
i
)
{
switch
(
i
)
{
case
0
:
g_signal_connect
(
appl_buttons
[
i
],
"button_press_event"
,
G_CALLBACK
(
activate_appl1
),
this
);
G_CALLBACK
(
activate_appl1
),
this
);
break
;
case
1
:
g_signal_connect
(
appl_buttons
[
i
],
"button_press_event"
,
G_CALLBACK
(
activate_appl2
),
this
);
G_CALLBACK
(
activate_appl2
),
this
);
break
;
case
2
:
g_signal_connect
(
appl_buttons
[
i
],
"button_press_event"
,
G_CALLBACK
(
activate_appl3
),
this
);
G_CALLBACK
(
activate_appl3
),
this
);
break
;
case
3
:
g_signal_connect
(
appl_buttons
[
i
],
"button_press_event"
,
G_CALLBACK
(
activate_appl4
),
this
);
G_CALLBACK
(
activate_appl4
),
this
);
break
;
case
4
:
g_signal_connect
(
appl_buttons
[
i
],
"button_press_event"
,
G_CALLBACK
(
activate_appl5
),
this
);
G_CALLBACK
(
activate_appl5
),
this
);
break
;
case
5
:
g_signal_connect
(
appl_buttons
[
i
],
"button_press_event"
,
G_CALLBACK
(
activate_appl6
),
this
);
G_CALLBACK
(
activate_appl6
),
this
);
break
;
case
6
:
g_signal_connect
(
appl_buttons
[
i
],
"button_press_event"
,
G_CALLBACK
(
activate_appl7
),
this
);
G_CALLBACK
(
activate_appl7
),
this
);
break
;
case
7
:
g_signal_connect
(
appl_buttons
[
i
],
"button_press_event"
,
G_CALLBACK
(
activate_appl8
),
this
);
G_CALLBACK
(
activate_appl8
),
this
);
break
;
case
8
:
g_signal_connect
(
appl_buttons
[
i
],
"button_press_event"
,
G_CALLBACK
(
activate_appl9
),
this
);
G_CALLBACK
(
activate_appl9
),
this
);
break
;
case
9
:
g_signal_connect
(
appl_buttons
[
i
],
"button_press_event"
,
G_CALLBACK
(
activate_appl10
),
this
);
G_CALLBACK
(
activate_appl10
),
this
);
break
;
case
10
:
g_signal_connect
(
appl_buttons
[
i
],
"button_press_event"
,
G_CALLBACK
(
activate_appl11
),
this
);
G_CALLBACK
(
activate_appl11
),
this
);
break
;
case
11
:
g_signal_connect
(
appl_buttons
[
i
],
"button_press_event"
,
G_CALLBACK
(
activate_appl12
),
this
);
G_CALLBACK
(
activate_appl12
),
this
);
break
;
case
12
:
g_signal_connect
(
appl_buttons
[
i
],
"button_press_event"
,
G_CALLBACK
(
activate_appl13
),
this
);
G_CALLBACK
(
activate_appl13
),
this
);
break
;
case
13
:
g_signal_connect
(
appl_buttons
[
i
],
"button_press_event"
,
G_CALLBACK
(
activate_appl14
),
this
);
G_CALLBACK
(
activate_appl14
),
this
);
break
;
case
14
:
g_signal_connect
(
appl_buttons
[
i
],
"button_press_event"
,
G_CALLBACK
(
activate_appl15
),
this
);
G_CALLBACK
(
activate_appl15
),
this
);
break
;
case
15
:
g_signal_connect
(
appl_buttons
[
i
],
"button_press_event"
,
G_CALLBACK
(
activate_appl16
),
this
);
G_CALLBACK
(
activate_appl16
),
this
);
break
;
case
16
:
g_signal_connect
(
appl_buttons
[
i
],
"button_press_event"
,
G_CALLBACK
(
activate_appl17
),
this
);
G_CALLBACK
(
activate_appl17
),
this
);
break
;
case
17
:
g_signal_connect
(
appl_buttons
[
i
],
"button_press_event"
,
G_CALLBACK
(
activate_appl18
),
this
);
G_CALLBACK
(
activate_appl18
),
this
);
break
;
case
18
:
g_signal_connect
(
appl_buttons
[
i
],
"button_press_event"
,
G_CALLBACK
(
activate_appl19
),
this
);
G_CALLBACK
(
activate_appl19
),
this
);
break
;
case
19
:
g_signal_connect
(
appl_buttons
[
i
],
"button_press_event"
,
G_CALLBACK
(
activate_appl20
),
this
);
G_CALLBACK
(
activate_appl20
),
this
);
break
;
case
20
:
g_signal_connect
(
appl_buttons
[
i
],
"button_press_event"
,
G_CALLBACK
(
activate_appl21
),
this
);
G_CALLBACK
(
activate_appl21
),
this
);
break
;
case
21
:
g_signal_connect
(
appl_buttons
[
i
],
"button_press_event"
,
G_CALLBACK
(
activate_appl22
),
this
);
G_CALLBACK
(
activate_appl22
),
this
);
break
;
case
22
:
g_signal_connect
(
appl_buttons
[
i
],
"button_press_event"
,
G_CALLBACK
(
activate_appl23
),
this
);
G_CALLBACK
(
activate_appl23
),
this
);
break
;
case
23
:
g_signal_connect
(
appl_buttons
[
i
],
"button_press_event"
,
G_CALLBACK
(
activate_appl24
),
this
);
G_CALLBACK
(
activate_appl24
),
this
);
break
;
case
24
:
g_signal_connect
(
appl_buttons
[
i
],
"button_press_event"
,
G_CALLBACK
(
activate_appl25
),
this
);
G_CALLBACK
(
activate_appl25
),
this
);
break
;
}
}
int
showRow
[
5
]
=
{
1
,
1
,
1
,
0
,
0
};
appl_form
=
gtk_vbox_new
(
FALSE
,
0
);
for
(
i
=
0
;
i
<
sizeof
(
opplace_p
->
FastAvail
)
/
sizeof
(
opplace_p
->
FastAvail
[
0
]);
i
++
)
{
if
(
i
==
0
)
{
funcbox
[
0
]
=
gtk_hbox_new
(
FALSE
,
0
);
gtk_box_pack_start
(
GTK_BOX
(
appl_form
),
funcbox
[
0
],
FALSE
,
FALSE
,
0
);
}
else
if
(
i
==
4
)
{
funcbox
[
1
]
=
gtk_hbox_new
(
FALSE
,
0
);
gtk_box_pack_start
(
GTK_BOX
(
appl_form
),
funcbox
[
1
],
FALSE
,
FALSE
,
0
);
}
else
if
(
i
==
9
)
{
funcbox
[
2
]
=
gtk_hbox_new
(
FALSE
,
0
);
gtk_box_pack_start
(
GTK_BOX
(
appl_form
),
funcbox
[
2
],
FALSE
,
FALSE
,
0
);
}
else
if
(
i
==
14
)
{
funcbox
[
3
]
=
gtk_hbox_new
(
FALSE
,
0
);
gtk_box_pack_start
(
GTK_BOX
(
appl_form
),
funcbox
[
3
],
FALSE
,
FALSE
,
0
);
}
else
if
(
i
==
19
)
{
funcbox
[
4
]
=
gtk_hbox_new
(
FALSE
,
0
);
gtk_box_pack_start
(
GTK_BOX
(
appl_form
),
funcbox
[
4
],
FALSE
,
FALSE
,
0
);
i
<
sizeof
(
opplace_p
->
FastAvail
)
/
sizeof
(
opplace_p
->
FastAvail
[
0
]);
i
++
)
{
// Create new box every 5th row
if
(
i
%
5
==
0
)
{
funcbox
[
i
/
5
]
=
gtk_hbox_new
(
FALSE
,
0
);
gtk_box_pack_start
(
GTK_BOX
(
appl_form
),
funcbox
[
i
/
5
],
FALSE
,
FALSE
,
0
);
}
if
(
i
<
5
)
{
if
(
cdh_ObjidIsNotNull
(
button_aref
[
i
].
Objid
))
gtk_box_pack_start
(
GTK_BOX
(
funcbox
[
0
]),
appl_buttons
[
i
],
TRUE
,
TRUE
,
0
);
}
else
if
(
i
<
10
)
{
if
(
cdh_ObjidIsNotNull
(
button_aref
[
i
].
Objid
))
gtk_box_pack_start
(
GTK_BOX
(
funcbox
[
1
]),
appl_buttons
[
i
],
TRUE
,
TRUE
,
0
);
}
else
if
(
i
<
15
)
{
if
(
cdh_ObjidIsNotNull
(
button_aref
[
i
].
Objid
))
gtk_box_pack_start
(
GTK_BOX
(
funcbox
[
2
]),
appl_buttons
[
i
],
TRUE
,
TRUE
,
0
);
}
else
if
(
i
<
20
)
{
if
(
cdh_ObjidIsNotNull
(
button_aref
[
i
].
Objid
))
{
gtk_box_pack_start
(
GTK_BOX
(
funcbox
[
3
]),
appl_buttons
[
i
],
TRUE
,
TRUE
,
0
);
a_height
=
4
;
}
}
else
if
(
i
<
25
)
{
if
(
cdh_ObjidIsNotNull
(
button_aref
[
i
].
Objid
))
{
gtk_box_pack_start
(
GTK_BOX
(
funcbox
[
4
]),
appl_buttons
[
i
],
TRUE
,
TRUE
,
0
);
a_height
=
5
;
}
// Pack everything and set showRow accordingly
if
(
cdh_ObjidIsNotNull
(
button_aref
[
i
].
Objid
))
{
gtk_box_pack_start
(
GTK_BOX
(
funcbox
[
i
/
5
]),
appl_buttons
[
i
],
TRUE
,
TRUE
,
0
);
showRow
[
i
/
5
]
=
1
;
}
}
// Start checking at the last row
for
(
int
row
=
(
sizeof
(
showRow
)
/
sizeof
(
showRow
[
0
]))
-
1
;
row
>=
0
;
row
--
)
{
if
(
showRow
[
row
])
{
for
(
int
height
=
a_height
-
1
;
height
>
row
;
height
--
)
activate_aalarm_decr
(
0
,
this
);
break
;
}
}
...
...
@@ -1453,7 +1518,8 @@ void OpGtk::activate_colortheme(GtkWidget* w, gpointer data)
{
OpGtk
*
op
=
(
OpGtk
*
)
data
;
if
(
op
->
command_cb
)
{
if
(
op
->
command_cb
)
{
op
->
command_cb
(
op
->
parent_ctx
,
(
char
*
)
"open colorthemeselector"
);
}
}
...
...
@@ -1469,24 +1535,35 @@ void OpGtk::activate_aalarm_incr(GtkWidget* w, gpointer data)
return
;
op
->
a_height
++
;
height
=
OP_HEIGHT_MIN
+
(
op
->
a_height
-
2
)
*
OP_HEIGHT_INC
+
((
op
->
layout_mask
&
pwr_mOpWindLayoutMask_HideStatusBar
)
?
0
:
1
)
*
OP_HEIGHT_STATUSBAR
;
height
=
OP_HEIGHT_MIN
+
(
op
->
a_height
-
2
)
*
OP_HEIGHT_INC
+
((
op
->
layout_mask
&
pwr_mOpWindLayoutMask_HideStatusBar
)
?
0
:
1
)
*
OP_HEIGHT_STATUSBAR
;
if
(
op
->
a_height
==
3
)
{
if
(
op
->
a_height
==
3
)
{
g_object_set
(
op
->
decr_button
,
"visible"
,
TRUE
,
NULL
);
}
else
if
(
op
->
a_height
==
4
)
{
}
else
if
(
op
->
a_height
==
4
)
{
g_object_set
(
op
->
funcbox
[
3
],
"visible"
,
TRUE
,
NULL
);
}
else
if
(
op
->
a_height
==
5
)
{
}
else
if
(
op
->
a_height
==
5
)
{
g_object_set
(
op
->
funcbox
[
4
],
"visible"
,
TRUE
,
NULL
);
}
for
(
int
i
=
2
;
i
<
5
;
i
++
)
{
if
(
i
<
op
->
a_height
)
{
if
(
op
->
a_exist
[
i
])
{
for
(
int
i
=
2
;
i
<
5
;
i
++
)
{
if
(
i
<
op
->
a_height
)
{
if
(
op
->
a_exist
[
i
])
{
g_object_set
(
op
->
aalarm_box
[
i
],
"visible"
,
TRUE
,
NULL
);
if
(
op
->
a_active
[
i
])
{
if
(
op
->
a_active
[
i
])
{
g_object_set
(
op
->
aalarm_active
[
i
],
"visible"
,
TRUE
,
NULL
);
}
else
{
}
else
{
g_object_set
(
op
->
aalarm_active
[
i
],
"visible"
,
FALSE
,
NULL
);
}
}
...
...
@@ -1506,20 +1583,28 @@ void OpGtk::activate_aalarm_decr(GtkWidget* w, gpointer data)
return
;
op
->
a_height
--
;
height
=
OP_HEIGHT_MIN
+
(
op
->
a_height
-
2
)
*
OP_HEIGHT_INC
+
((
op
->
layout_mask
&
pwr_mOpWindLayoutMask_HideStatusBar
)
?
0
:
1
)
*
OP_HEIGHT_STATUSBAR
;
height
=
OP_HEIGHT_MIN
+
(
op
->
a_height
-
2
)
*
OP_HEIGHT_INC
+
((
op
->
layout_mask
&
pwr_mOpWindLayoutMask_HideStatusBar
)
?
0
:
1
)
*
OP_HEIGHT_STATUSBAR
;
if
(
op
->
a_height
==
2
)
{
if
(
op
->
a_height
==
2
)
{
g_object_set
(
op
->
decr_button
,
"visible"
,
FALSE
,
NULL
);
}
else
if
(
op
->
a_height
==
3
)
{
}
else
if
(
op
->
a_height
==
3
)
{
g_object_set
(
op
->
funcbox
[
3
],
"visible"
,
FALSE
,
NULL
);
}
else
if
(
op
->
a_height
==
4
)
{
}
else
if
(
op
->
a_height
==
4
)
{
g_object_set
(
op
->
funcbox
[
4
],
"visible"
,
FALSE
,
NULL
);
}
for
(
int
i
=
2
;
i
<
5
;
i
++
)
{
if
(
i
>=
op
->
a_height
)
{
if
(
op
->
a_exist
[
i
])
{
for
(
int
i
=
2
;
i
<
5
;
i
++
)
{
if
(
i
>=
op
->
a_height
)
{
if
(
op
->
a_exist
[
i
])
{
g_object_set
(
op
->
aalarm_box
[
i
],
"visible"
,
FALSE
,
NULL
);
g_object_set
(
op
->
aalarm_active
[
i
],
"visible"
,
FALSE
,
NULL
);
g_object_set
(
op
->
aalarm_info
[
i
],
"visible"
,
FALSE
,
NULL
);
...
...
@@ -1648,7 +1733,8 @@ void OpGtk::activate_cmd_menu_item(GtkWidget* w, gpointer data)
int
sts
;
sts
=
((
OpGtk
*
)
op
)
->
get_cmd
(
w
,
cmd
);
if
(
ODD
(
sts
))
{
if
(
ODD
(
sts
))
{
op
->
activate_cmd_menu_item
(
cmd
);
}
}
...
...
@@ -1860,8 +1946,10 @@ void OpGtk::activate_info(GtkWidget* w, gpointer data)
int
OpGtk
::
get_cmd
(
GtkWidget
*
w
,
char
*
cmd
)
{
for
(
unsigned
int
i
=
0
;
i
<
cmd_vect
.
size
();
i
++
)
{
if
(
w
==
cmd_vect
[
i
].
w
)
{
for
(
unsigned
int
i
=
0
;
i
<
cmd_vect
.
size
();
i
++
)
{
if
(
w
==
cmd_vect
[
i
].
w
)
{
strcpy
(
cmd
,
cmd_vect
[
i
].
cmd
);
return
1
;
}
...
...
@@ -1873,7 +1961,8 @@ void OpGtk::change_sup_color(void* imagew, op_eSupColor color)
{
GdkColor
*
col
;
switch
(
color
)
{
switch
(
color
)
{
case
op_eSupColor_Gray
:
col
=
&
gray_color
;
break
;
...
...
@@ -1940,129 +2029,155 @@ void OpGtk::set_color_theme(int idx)
GdkColor
menu_text
;
red_color
.
pixel
=
0
;
red_color
.
red
=
0xFFFF
*
colors
[(
glow_eCtColor_RedIndicator
-
glow_eDrawType_CustomColor1
)
*
3
];
red_color
.
green
=
0xFFFF
*
colors
[(
glow_eCtColor_RedIndicator
-
glow_eDrawType_CustomColor1
)
*
3
+
1
];
red_color
.
blue
=
0xFFFF
*
colors
[(
glow_eCtColor_RedIndicator
-
glow_eDrawType_CustomColor1
)
*
3
+
2
];
red_color
.
red
=
0xFFFF
*
colors
[(
glow_eCtColor_RedIndicator
-
glow_eDrawType_CustomColor1
)
*
3
];
red_color
.
green
=
0xFFFF
*
colors
[(
glow_eCtColor_RedIndicator
-
glow_eDrawType_CustomColor1
)
*
3
+
1
];
red_color
.
blue
=
0xFFFF
*
colors
[(
glow_eCtColor_RedIndicator
-
glow_eDrawType_CustomColor1
)
*
3
+
2
];
green_color
.
pixel
=
0
;
green_color
.
red
=
0xFFFF
*
colors
[(
glow_eCtColor_GreenIndicator
-
glow_eDrawType_CustomColor1
)
*
3
];
green_color
.
green
=
0xFFFF
*
colors
[(
glow_eCtColor_GreenIndicator
-
glow_eDrawType_CustomColor1
)
*
3
+
1
];
green_color
.
blue
=
0xFFFF
*
colors
[(
glow_eCtColor_GreenIndicator
-
glow_eDrawType_CustomColor1
)
*
3
+
2
];
green_color
.
red
=
0xFFFF
*
colors
[(
glow_eCtColor_GreenIndicator
-
glow_eDrawType_CustomColor1
)
*
3
];
green_color
.
green
=
0xFFFF
*
colors
[(
glow_eCtColor_GreenIndicator
-
glow_eDrawType_CustomColor1
)
*
3
+
1
];
green_color
.
blue
=
0xFFFF
*
colors
[(
glow_eCtColor_GreenIndicator
-
glow_eDrawType_CustomColor1
)
*
3
+
2
];
yellow_color
.
pixel
=
0
;
yellow_color
.
red
=
0xFFFF
*
colors
[(
glow_eCtColor_YellowIndicator
-
glow_eDrawType_CustomColor1
)
*
3
];
yellow_color
.
green
=
0xFFFF
*
colors
[(
glow_eCtColor_YellowIndicator
-
glow_eDrawType_CustomColor1
)
*
3
+
1
];
yellow_color
.
blue
=
0xFFFF
*
colors
[(
glow_eCtColor_YellowIndicator
-
glow_eDrawType_CustomColor1
)
*
3
+
2
];
yellow_color
.
red
=
0xFFFF
*
colors
[(
glow_eCtColor_YellowIndicator
-
glow_eDrawType_CustomColor1
)
*
3
];
yellow_color
.
green
=
0xFFFF
*
colors
[(
glow_eCtColor_YellowIndicator
-
glow_eDrawType_CustomColor1
)
*
3
+
1
];
yellow_color
.
blue
=
0xFFFF
*
colors
[(
glow_eCtColor_YellowIndicator
-
glow_eDrawType_CustomColor1
)
*
3
+
2
];
gray_color
.
pixel
=
0
;
gray_color
.
red
=
0xFFFF
*
colors
[(
glow_eCtColor_IndicatorLowColor
-
glow_eDrawType_CustomColor1
)
*
3
];
gray_color
.
green
=
0xFFFF
*
colors
[(
glow_eCtColor_IndicatorLowColor
-
glow_eDrawType_CustomColor1
)
*
3
+
1
];
gray_color
.
blue
=
0xFFFF
*
colors
[(
glow_eCtColor_IndicatorLowColor
-
glow_eDrawType_CustomColor1
)
*
3
+
2
];
gray_color
.
red
=
0xFFFF
*
colors
[(
glow_eCtColor_IndicatorLowColor
-
glow_eDrawType_CustomColor1
)
*
3
];
gray_color
.
green
=
0xFFFF
*
colors
[(
glow_eCtColor_IndicatorLowColor
-
glow_eDrawType_CustomColor1
)
*
3
+
1
];
gray_color
.
blue
=
0xFFFF
*
colors
[(
glow_eCtColor_IndicatorLowColor
-
glow_eDrawType_CustomColor1
)
*
3
+
2
];
bg
.
pixel
=
0
;
bg
.
red
=
0xFFFF
*
colors
[(
glow_eCtColor_Background
-
glow_eDrawType_CustomColor1
)
*
3
];
bg
.
green
=
0xFFFF
*
colors
[(
glow_eCtColor_Background
-
glow_eDrawType_CustomColor1
)
*
3
+
1
];
bg
.
blue
=
0xFFFF
*
colors
[(
glow_eCtColor_Background
-
glow_eDrawType_CustomColor1
)
*
3
+
2
];
bg
.
red
=
0xFFFF
*
colors
[(
glow_eCtColor_Background
-
glow_eDrawType_CustomColor1
)
*
3
];
bg
.
green
=
0xFFFF
*
colors
[(
glow_eCtColor_Background
-
glow_eDrawType_CustomColor1
)
*
3
+
1
];
bg
.
blue
=
0xFFFF
*
colors
[(
glow_eCtColor_Background
-
glow_eDrawType_CustomColor1
)
*
3
+
2
];
bg_text
.
pixel
=
0
;
bg_text
.
red
=
0xFFFF
*
colors
[(
glow_eCtColor_BackgroundTextAndLines
-
glow_eDrawType_CustomColor1
)
*
3
];
bg_text
.
green
=
0xFFFF
*
colors
[(
glow_eCtColor_BackgroundTextAndLines
-
glow_eDrawType_CustomColor1
)
*
3
+
1
];
bg_text
.
blue
=
0xFFFF
*
colors
[(
glow_eCtColor_BackgroundTextAndLines
-
glow_eDrawType_CustomColor1
)
*
3
+
2
];
bg_text
.
red
=
0xFFFF
*
colors
[(
glow_eCtColor_BackgroundTextAndLines
-
glow_eDrawType_CustomColor1
)
*
3
];
bg_text
.
green
=
0xFFFF
*
colors
[(
glow_eCtColor_BackgroundTextAndLines
-
glow_eDrawType_CustomColor1
)
*
3
+
1
];
bg_text
.
blue
=
0xFFFF
*
colors
[(
glow_eCtColor_BackgroundTextAndLines
-
glow_eDrawType_CustomColor1
)
*
3
+
2
];
button_bg
.
pixel
=
0
;
button_bg
.
red
=
0xFFFF
*
colors
[(
glow_eCtColor_ButtonFillcolor
-
glow_eDrawType_CustomColor1
)
*
3
];
button_bg
.
green
=
0xFFFF
*
colors
[(
glow_eCtColor_ButtonFillcolor
-
glow_eDrawType_CustomColor1
)
*
3
+
1
];
button_bg
.
blue
=
0xFFFF
*
colors
[(
glow_eCtColor_ButtonFillcolor
-
glow_eDrawType_CustomColor1
)
*
3
+
2
];
button_bg
.
red
=
0xFFFF
*
colors
[(
glow_eCtColor_ButtonFillcolor
-
glow_eDrawType_CustomColor1
)
*
3
];
button_bg
.
green
=
0xFFFF
*
colors
[(
glow_eCtColor_ButtonFillcolor
-
glow_eDrawType_CustomColor1
)
*
3
+
1
];
button_bg
.
blue
=
0xFFFF
*
colors
[(
glow_eCtColor_ButtonFillcolor
-
glow_eDrawType_CustomColor1
)
*
3
+
2
];
button_text
.
pixel
=
0
;
button_text
.
red
=
0xFFFF
*
colors
[(
glow_eCtColor_ButtonTextcolor
-
glow_eDrawType_CustomColor1
)
*
3
];
button_text
.
green
=
0xFFFF
*
colors
[(
glow_eCtColor_ButtonTextcolor
-
glow_eDrawType_CustomColor1
)
*
3
+
1
];
button_text
.
blue
=
0xFFFF
*
colors
[(
glow_eCtColor_ButtonTextcolor
-
glow_eDrawType_CustomColor1
)
*
3
+
2
];
button_text
.
red
=
0xFFFF
*
colors
[(
glow_eCtColor_ButtonTextcolor
-
glow_eDrawType_CustomColor1
)
*
3
];
button_text
.
green
=
0xFFFF
*
colors
[(
glow_eCtColor_ButtonTextcolor
-
glow_eDrawType_CustomColor1
)
*
3
+
1
];
button_text
.
blue
=
0xFFFF
*
colors
[(
glow_eCtColor_ButtonTextcolor
-
glow_eDrawType_CustomColor1
)
*
3
+
2
];
button_prelight
.
pixel
=
0
;
button_prelight
.
red
=
0xFFFF
*
colors
[(
glow_eCtColor_ButtonFillcolor
-
glow_eDrawType_CustomColor1
+
3
)
*
3
];
button_prelight
.
green
=
0xFFFF
*
colors
[(
glow_eCtColor_ButtonFillcolor
-
glow_eDrawType_CustomColor1
+
3
)
*
3
+
1
];
button_prelight
.
blue
=
0xFFFF
*
colors
[(
glow_eCtColor_ButtonFillcolor
-
glow_eDrawType_CustomColor1
+
3
)
*
3
+
2
];
button_prelight
.
red
=
0xFFFF
*
colors
[(
glow_eCtColor_ButtonFillcolor
-
glow_eDrawType_CustomColor1
+
3
)
*
3
];
button_prelight
.
green
=
0xFFFF
*
colors
[(
glow_eCtColor_ButtonFillcolor
-
glow_eDrawType_CustomColor1
+
3
)
*
3
+
1
];
button_prelight
.
blue
=
0xFFFF
*
colors
[(
glow_eCtColor_ButtonFillcolor
-
glow_eDrawType_CustomColor1
+
3
)
*
3
+
2
];
button_active
.
pixel
=
0
;
button_active
.
red
=
0xFFFF
*
colors
[(
glow_eCtColor_ButtonFillcolor
-
glow_eDrawType_CustomColor1
+
2
)
*
3
];
button_active
.
green
=
0xFFFF
*
colors
[(
glow_eCtColor_ButtonFillcolor
-
glow_eDrawType_CustomColor1
+
2
)
*
3
+
1
];
button_active
.
blue
=
0xFFFF
*
colors
[(
glow_eCtColor_ButtonFillcolor
-
glow_eDrawType_CustomColor1
+
2
)
*
3
+
2
];
button_active
.
red
=
0xFFFF
*
colors
[(
glow_eCtColor_ButtonFillcolor
-
glow_eDrawType_CustomColor1
+
2
)
*
3
];
button_active
.
green
=
0xFFFF
*
colors
[(
glow_eCtColor_ButtonFillcolor
-
glow_eDrawType_CustomColor1
+
2
)
*
3
+
1
];
button_active
.
blue
=
0xFFFF
*
colors
[(
glow_eCtColor_ButtonFillcolor
-
glow_eDrawType_CustomColor1
+
2
)
*
3
+
2
];
menu
.
pixel
=
0
;
menu
.
red
=
0xFFFF
*
colors
[(
glow_eCtColor_MenuFillcolor
-
glow_eDrawType_CustomColor1
)
*
3
];
menu
.
green
=
0xFFFF
*
colors
[(
glow_eCtColor_MenuFillcolor
-
glow_eDrawType_CustomColor1
)
*
3
+
1
];
menu
.
blue
=
0xFFFF
*
colors
[(
glow_eCtColor_MenuFillcolor
-
glow_eDrawType_CustomColor1
)
*
3
+
2
];
menu
.
red
=
0xFFFF
*
colors
[(
glow_eCtColor_MenuFillcolor
-
glow_eDrawType_CustomColor1
)
*
3
];
menu
.
green
=
0xFFFF
*
colors
[(
glow_eCtColor_MenuFillcolor
-
glow_eDrawType_CustomColor1
)
*
3
+
1
];
menu
.
blue
=
0xFFFF
*
colors
[(
glow_eCtColor_MenuFillcolor
-
glow_eDrawType_CustomColor1
)
*
3
+
2
];
menu_text
.
pixel
=
0
;
menu_text
.
red
=
0xFFFF
*
colors
[(
glow_eCtColor_MenuTextcolor
-
glow_eDrawType_CustomColor1
)
*
3
];
menu_text
.
green
=
0xFFFF
*
colors
[(
glow_eCtColor_MenuTextcolor
-
glow_eDrawType_CustomColor1
)
*
3
+
1
];
menu_text
.
blue
=
0xFFFF
*
colors
[(
glow_eCtColor_MenuTextcolor
-
glow_eDrawType_CustomColor1
)
*
3
+
2
];
menu_text
.
red
=
0xFFFF
*
colors
[(
glow_eCtColor_MenuTextcolor
-
glow_eDrawType_CustomColor1
)
*
3
];
menu_text
.
green
=
0xFFFF
*
colors
[(
glow_eCtColor_MenuTextcolor
-
glow_eDrawType_CustomColor1
)
*
3
+
1
];
menu_text
.
blue
=
0xFFFF
*
colors
[(
glow_eCtColor_MenuTextcolor
-
glow_eDrawType_CustomColor1
)
*
3
+
2
];
gtk_widget_modify_bg
(
toplevel
,
GTK_STATE_NORMAL
,
&
bg
);
gtk_widget_modify_fg
(
GTK_WIDGET
(
title_label
),
GTK_STATE_NORMAL
,
&
bg_text
);
...
...
@@ -2078,72 +2193,76 @@ void OpGtk::set_color_theme(int idx)
gtk_widget_modify_fg
(
GTK_WIDGET
(
balarm_mark
),
GTK_STATE_NORMAL
,
&
bg_text
);
gtk_widget_modify_bg
(
GTK_WIDGET
(
balarm_active_box
),
GTK_STATE_NORMAL
,
&
bg
);
for
(
int
i
=
0
;
i
<
5
;
i
++
)
gtk_widget_modify_bg
(
GTK_WIDGET
(
aalarm_active_box
[
i
]),
GTK_STATE_NORMAL
,
&
bg
);
gtk_widget_modify_bg
(
GTK_WIDGET
(
aalarm_active_box
[
i
]),
GTK_STATE_NORMAL
,
&
bg
);
gtk_widget_modify_bg
(
GTK_WIDGET
(
menu_bar
),
GTK_STATE_NORMAL
,
&
menu
);
gtk_widget_modify_bg
(
GTK_WIDGET
(
menu_bar
),
GTK_STATE_ACTIVE
,
&
menu
);
GList
*
children
=
gtk_container_get_children
(
GTK_CONTAINER
(
menu_bar
));
GList
*
child
;
for
(
child
=
g_list_first
(
children
);
child
;
child
=
g_list_next
(
child
))
{
for
(
child
=
g_list_first
(
children
);
child
;
child
=
g_list_next
(
child
))
{
gtk_widget_modify_bg
(
GTK_WIDGET
(
child
->
data
),
GTK_STATE_NORMAL
,
&
menu
);
gtk_widget_modify_fg
(
GTK_WIDGET
(
child
->
data
),
GTK_STATE_NORMAL
,
&
menu_text
);
GList
*
children2
=
gtk_container_get_children
(
GTK_CONTAINER
(
child
->
data
));
GList
*
child2
;
for
(
child2
=
g_list_first
(
children2
);
child2
;
child2
=
g_list_next
(
child2
))
{
for
(
child2
=
g_list_first
(
children2
);
child2
;
child2
=
g_list_next
(
child2
))
{
gtk_widget_modify_bg
(
GTK_WIDGET
(
child2
->
data
),
GTK_STATE_NORMAL
,
&
menu
);
gtk_widget_modify_fg
(
GTK_WIDGET
(
child2
->
data
),
GTK_STATE_NORMAL
,
&
menu_text
);
gtk_widget_modify_fg
(
GTK_WIDGET
(
child2
->
data
),
GTK_STATE_NORMAL
,
&
menu_text
);
}
g_list_free
(
children2
);
}
g_list_free
(
children
);
for
(
unsigned
int
i
=
0
;
i
<
sup_vect
.
size
();
i
++
)
{
gtk_widget_modify_bg
(
GTK_WIDGET
(
sup_vect
[
i
].
buttonw
),
GTK_STATE_NORMAL
,
&
button_bg
);
gtk_widget_modify_bg
(
GTK_WIDGET
(
sup_vect
[
i
].
buttonw
),
GTK_STATE_PRELIGHT
,
&
button_prelight
);
gtk_widget_modify_bg
(
GTK_WIDGET
(
sup_vect
[
i
].
buttonw
),
GTK_STATE_ACTIVE
,
&
button_active
);
gtk_widget_modify_bg
(
GTK_WIDGET
(
sup_vect
[
i
].
indfiller1w
),
GTK_STATE_NORMAL
,
&
button_bg
);
for
(
unsigned
int
i
=
0
;
i
<
sup_vect
.
size
();
i
++
)
{
gtk_widget_modify_bg
(
GTK_WIDGET
(
sup_vect
[
i
].
buttonw
),
GTK_STATE_NORMAL
,
&
button_bg
);
gtk_widget_modify_bg
(
GTK_WIDGET
(
sup_vect
[
i
].
buttonw
),
GTK_STATE_PRELIGHT
,
&
button_prelight
);
gtk_widget_modify_bg
(
GTK_WIDGET
(
sup_vect
[
i
].
buttonw
),
GTK_STATE_ACTIVE
,
&
button_active
);
gtk_widget_modify_bg
(
GTK_WIDGET
(
sup_vect
[
i
].
indfiller1w
),
GTK_STATE_NORMAL
,
&
button_bg
);
gtk_widget_modify_bg
(
GTK_WIDGET
(
sup_vect
[
i
].
indfiller1w
),
GTK_STATE_PRELIGHT
,
&
button_prelight
);
gtk_widget_modify_bg
(
GTK_WIDGET
(
sup_vect
[
i
].
indfiller1w
),
GTK_STATE_ACTIVE
,
&
button_active
);
gtk_widget_modify_bg
(
GTK_WIDGET
(
sup_vect
[
i
].
indfiller2w
),
GTK_STATE_NORMAL
,
&
button_bg
);
GTK_STATE_PRELIGHT
,
&
button_prelight
);
gtk_widget_modify_bg
(
GTK_WIDGET
(
sup_vect
[
i
].
indfiller1w
),
GTK_STATE_ACTIVE
,
&
button_active
);
gtk_widget_modify_bg
(
GTK_WIDGET
(
sup_vect
[
i
].
indfiller2w
),
GTK_STATE_NORMAL
,
&
button_bg
);
gtk_widget_modify_bg
(
GTK_WIDGET
(
sup_vect
[
i
].
indfiller2w
),
GTK_STATE_PRELIGHT
,
&
button_prelight
);
gtk_widget_modify_bg
(
GTK_WIDGET
(
sup_vect
[
i
].
indfiller2w
),
GTK_STATE_ACTIVE
,
&
button_active
);
gtk_widget_modify_fg
(
GTK_WIDGET
(
sup_vect
[
i
].
textw
),
GTK_STATE_NORMAL
,
&
button_text
);
gtk_widget_modify_fg
(
GTK_WIDGET
(
sup_vect
[
i
].
textw
),
GTK_STATE_PRELIGHT
,
&
button_text
);
gtk_widget_modify_fg
(
GTK_WIDGET
(
sup_vect
[
i
].
textw
),
GTK_STATE_ACTIVE
,
&
button_text
);
gtk_widget_modify_bg
(
GTK_WIDGET
(
sup_vect
[
i
].
textbgw
),
GTK_STATE_NORMAL
,
&
button_bg
);
gtk_widget_modify_bg
(
GTK_WIDGET
(
sup_vect
[
i
].
textbgw
),
GTK_STATE_PRELIGHT
,
&
button_prelight
);
gtk_widget_modify_bg
(
GTK_WIDGET
(
sup_vect
[
i
].
textbgw
),
GTK_STATE_ACTIVE
,
&
button_active
);
GTK_STATE_PRELIGHT
,
&
button_prelight
);
gtk_widget_modify_bg
(
GTK_WIDGET
(
sup_vect
[
i
].
indfiller2w
),
GTK_STATE_ACTIVE
,
&
button_active
);
gtk_widget_modify_fg
(
GTK_WIDGET
(
sup_vect
[
i
].
textw
),
GTK_STATE_NORMAL
,
&
button_text
);
gtk_widget_modify_fg
(
GTK_WIDGET
(
sup_vect
[
i
].
textw
),
GTK_STATE_PRELIGHT
,
&
button_text
);
gtk_widget_modify_fg
(
GTK_WIDGET
(
sup_vect
[
i
].
textw
),
GTK_STATE_ACTIVE
,
&
button_text
);
gtk_widget_modify_bg
(
GTK_WIDGET
(
sup_vect
[
i
].
textbgw
),
GTK_STATE_NORMAL
,
&
button_bg
);
gtk_widget_modify_bg
(
GTK_WIDGET
(
sup_vect
[
i
].
textbgw
),
GTK_STATE_PRELIGHT
,
&
button_prelight
);
gtk_widget_modify_bg
(
GTK_WIDGET
(
sup_vect
[
i
].
textbgw
),
GTK_STATE_ACTIVE
,
&
button_active
);
sup_vect
[
i
].
old_color
=
op_eSupColor_
;
}
for
(
unsigned
int
i
=
0
;
i
<
25
;
i
++
)
{
if
(
appl_buttons
[
i
])
{
gtk_widget_modify_bg
(
GTK_WIDGET
(
appl_buttons
[
i
]),
GTK_STATE_NORMAL
,
&
button_bg
);
gtk_widget_modify_bg
(
GTK_WIDGET
(
appl_buttons
[
i
]),
GTK_STATE_PRELIGHT
,
&
button_prelight
);
gtk_widget_modify_bg
(
GTK_WIDGET
(
appl_buttons
[
i
]),
GTK_STATE_ACTIVE
,
&
button_active
);
for
(
unsigned
int
i
=
0
;
i
<
25
;
i
++
)
{
if
(
appl_buttons
[
i
])
{
gtk_widget_modify_bg
(
GTK_WIDGET
(
appl_buttons
[
i
]),
GTK_STATE_NORMAL
,
&
button_bg
);
gtk_widget_modify_bg
(
GTK_WIDGET
(
appl_buttons
[
i
]),
GTK_STATE_PRELIGHT
,
&
button_prelight
);
gtk_widget_modify_bg
(
GTK_WIDGET
(
appl_buttons
[
i
]),
GTK_STATE_ACTIVE
,
&
button_active
);
gtk_widget_modify_fg
(
GTK_WIDGET
(
gtk_bin_get_child
(
GTK_BIN
(
appl_buttons
[
i
]))),
GTK_STATE_NORMAL
,
&
button_text
);
...
...
@@ -2165,12 +2284,14 @@ void OpGtk::set_text_size()
char
str
[
80
];
char
bold_str
[
10
]
=
""
;
sprintf
(
str
,
"%s %s%f"
,
"Lucida Sans"
,
bold_str
,
FONT_SCALE
*
(
text_size
+
2
));
sprintf
(
str
,
"%s %s%f"
,
"Lucida Sans"
,
bold_str
,
FONT_SCALE
*
(
text_size
+
2
));
fd
=
pango_font_description_from_string
(
str
);
for
(
unsigned
int
i
=
0
;
i
<
25
;
i
++
)
{
if
(
appl_buttons
[
i
])
{
for
(
unsigned
int
i
=
0
;
i
<
25
;
i
++
)
{
if
(
appl_buttons
[
i
])
{
gtk_widget_modify_font
(
GTK_WIDGET
(
gtk_bin_get_child
(
GTK_BIN
(
appl_buttons
[
i
]))),
fd
);
}
...
...
xtt/lib/xtt/gtk/xtt_op_gtk.h
View file @
5c2ccbaa
...
...
@@ -93,6 +93,7 @@ public:
GdkColor
green_color
;
GdkColor
gray_color
;
GdkColor
white_color
;
GdkRectangle
monitor_geometry
;
int
a_height
;
int
a_exist
[
5
];
int
a_active
[
5
];
...
...
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