Commit e8a986ab authored by Claes Sjofors's avatar Claes Sjofors

Merge branch 'master'

parents 60fe3c9d 9d5f65b3
...@@ -36,7 +36,7 @@ $(pwrp_obj)/%.o : %.c ...@@ -36,7 +36,7 @@ $(pwrp_obj)/%.o : %.c
($(pwrp_obj)/%.o) : %.c ($(pwrp_obj)/%.o) : %.c
@ echo "cc ar $(notdir $(source))" @ echo "cc ar $(notdir $(source))"
@ $(cc) $(cflags) $(csetos) $(cinc) -c -o $% $(source) @ $(cc) $(cflags) $(csetos) $(cinc) -c -o $% $(source)
@ ar -Ur $(target) $% @ ar rU $(target) $%
$(pwrp_obj)/%.o : %.cpp $(pwrp_obj)/%.o : %.cpp
@ echo "cc $(notdir $(source))" @ echo "cc $(notdir $(source))"
...@@ -45,7 +45,7 @@ $(pwrp_obj)/%.o : %.cpp ...@@ -45,7 +45,7 @@ $(pwrp_obj)/%.o : %.cpp
($(pwrp_obj)/%.o) : %.cpp ($(pwrp_obj)/%.o) : %.cpp
@ echo "cc ar $(notdir $(source))" @ echo "cc ar $(notdir $(source))"
@ $(cxx) $(cxxflags) $(csetos) $(cinc) -c -o $% $(source) @ $(cxx) $(cxxflags) $(csetos) $(cinc) -c -o $% $(source)
@ ar -Ur $(target) $% @ ar rU $(target) $%
$(pwrp_obj)/%.o : %.for $(pwrp_obj)/%.o : %.for
@ echo "fortran77 $(notdir $(source))" @ echo "fortran77 $(notdir $(source))"
...@@ -54,7 +54,7 @@ $(pwrp_obj)/%.o : %.for ...@@ -54,7 +54,7 @@ $(pwrp_obj)/%.o : %.for
($(pwrp_obj)/%.o) : %.for ($(pwrp_obj)/%.o) : %.for
@ echo "fortran77 ar $(notdir $(source))" @ echo "fortran77 ar $(notdir $(source))"
@ $(f77) $(f77flags) $(f77inc) -c -o $% $(source) @ $(f77) $(f77flags) $(f77inc) -c -o $% $(source)
@ ar -Ur $(target) $% @ ar rU $(target) $%
$(pwrp_inc)/%.h: %.msg $(pwrp_inc)/%.h: %.msg
@ echo "Msg to h $(source)" @ echo "Msg to h $(source)"
......
! !
! ProviewR Open Source Process Control. ! ProviewR Open Source Process Control.
! Copyright (C) 2005-2019 SSAB EMEA AB. ! Copyright (C) 2005-2019 SSAB EMEA AB.
! !
! This file is part of ProviewR. ! This file is part of ProviewR.
! !
! This program is free software; you can redistribute it and/or ! This program is free software; you can redistribute it and/or
! modify it under the terms of the GNU General Public License as ! modify it under the terms of the GNU General Public License as
! published by the Free Software Foundation, either version 2 of ! published by the Free Software Foundation, either version 2 of
! the License, or (at your option) any later version. ! the License, or (at your option) any later version.
! !
! This program is distributed in the hope that it will be useful ! This program is distributed in the hope that it will be useful
! but WITHOUT ANY WARRANTY; without even the implied warranty of ! but WITHOUT ANY WARRANTY; without even the implied warranty of
! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! GNU General Public License for more details. ! 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/> ! along with ProviewR. If not, see <http://www.gnu.org/licenses/>
! !
! Linking ProviewR statically or dynamically with other modules is ! Linking ProviewR statically or dynamically with other modules is
! making a combined work based on ProviewR. Thus, the terms and ! 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. ! combination.
! !
! In addition, as a special exception, the copyright holders of ! In addition, as a special exception, the copyright holders of
! ProviewR give you permission to, from the build function in the ! ProviewR give you permission to, from the build function in the
! ProviewR Configurator, combine ProviewR with modules generated by the ! ProviewR Configurator, combine ProviewR with modules generated by the
! ProviewR PLC Editor to a PLC program, regardless of the license ! ProviewR PLC Editor to a PLC program, regardless of the license
! terms of these modules. You may copy and distribute the resulting ! terms of these modules. You may copy and distribute the resulting
! combined work under the terms of your choice, provided that every ! combined work under the terms of your choice, provided that every
! copy of the combined work is accompanied by a complete copy of ! copy of the combined work is accompanied by a complete copy of
! the source code of ProviewR (the version used to produce the ! 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. ! General Public License plus this exception.
! !
! pwrb_c_opplace.wb_load -- Defines the class OpPlace. ! pwrb_c_opplace.wb_load -- Defines the class OpPlace.
...@@ -43,28 +43,28 @@ SObject pwrb:Class ...@@ -43,28 +43,28 @@ SObject pwrb:Class
! Configures a logical operator station for operator ! Configures a logical operator station for operator
! dialogue. A logical operator station represents a work ! dialogue. A logical operator station represents a work
! station, X-terminal etc. ! station, X-terminal etc.
! !
! The object specifies where files are to be fetched and ! The object specifies where files are to be fetched and
! on which screen they are to be displayed. ! on which screen they are to be displayed.
! Put the object below the actual $Node object in the ! Put the object below the actual $Node object in the
! Node Configuration. ! Node Configuration.
! !
! There may be one or more OpPlace objects below a $Node ! There may be one or more OpPlace objects below a $Node
! object. ! object.
!*/ !*/
Object OpPlace $ClassDef 164 Object OpPlace $ClassDef 164
Body SysBody Body SysBody
Attr Editor = pwr_eEditor_AttrEd Attr Editor = pwr_eEditor_AttrEd
Attr Method = pwr_eMethod_Standard Attr Method = pwr_eMethod_Standard
EndBody EndBody
Object RtBody $ObjBodyDef 1 Object RtBody $ObjBodyDef 1
Body SysBody Body SysBody
Attr StructName = "OpPlace" Attr StructName = "OpPlace"
EndBody EndBody
!/** !/**
! Optional text to describe the user category etc. ! Optional text to describe the user category etc.
!*/ !*/
Object Description $Attribute 1 Object Description $Attribute 1
Body SysBody Body SysBody
Attr TypeRef = "pwrs:Type-$String80" Attr TypeRef = "pwrs:Type-$String80"
EndBody EndBody
...@@ -79,9 +79,9 @@ SObject pwrb:Class ...@@ -79,9 +79,9 @@ SObject pwrb:Class
! Note! If XttUseOpsysUser is set in the Security object, this value is ! Note! If XttUseOpsysUser is set in the Security object, this value is
! overrided, and the username is fetched from the current operator system user. ! 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 Body SysBody
Attr TypeRef = "pwrs:Type-$String32" Attr TypeRef = "pwrs:Type-$String32"
Attr Flags |= PWR_MASK_CONST Attr Flags |= PWR_MASK_CONST
...@@ -92,17 +92,17 @@ SObject pwrb:Class ...@@ -92,17 +92,17 @@ SObject pwrb:Class
! Only if the user has logged in to the operator system as ! Only if the user has logged in to the operator system as
! one of these user he has authority to start this operator place. ! one of these user he has authority to start this operator place.
!*/ !*/
Object DedicatedOpsysUser $Attribute 29 Object DedicatedOpsysUser $Attribute 29
Body SysBody Body SysBody
Attr TypeRef = "pwrs:Type-$String256" Attr TypeRef = "pwrs:Type-$String256"
Attr Flags |= PWR_MASK_CONST Attr Flags |= PWR_MASK_CONST
EndBody EndBody
EndObject EndObject
!/** !/**
! Specifies on which monitor the operator dialogue will ! Specifies on which display the operator dialogue will
! take place. ! take place.
! If the operator communication is run on the local node ! 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 ! ('default display') the Display attribute ought to be
! left blank. ! left blank.
!*/ !*/
...@@ -144,7 +144,7 @@ SObject pwrb:Class ...@@ -144,7 +144,7 @@ SObject pwrb:Class
! XttGraph object which is to be activated by a function ! XttGraph object which is to be activated by a function
! button in the operator window. The buttons are are ordered ! button in the operator window. The buttons are are ordered
! in five rows with five buttons in each row. ! 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. ! the second for FastAvail[5] - FastAVail[9] etc.
!*/ !*/
Object FastAvail $Attribute 32 Object FastAvail $Attribute 32
...@@ -209,7 +209,7 @@ SObject pwrb:Class ...@@ -209,7 +209,7 @@ SObject pwrb:Class
! Operatorplace options. ! Operatorplace options.
! - OperatorLog will turn on the operator logging when rt_xtt is started. ! - OperatorLog will turn on the operator logging when rt_xtt is started.
! The logging is stored in $pwrp_log/xtt_'opplace'.log ! 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. ! logfile.
!*/ !*/
Object Options $Attribute 47 Object Options $Attribute 47
...@@ -228,7 +228,7 @@ SObject pwrb:Class ...@@ -228,7 +228,7 @@ SObject pwrb:Class
!/** !/**
! Specifies the maximum number of contemporary alarms in ! Specifies the maximum number of contemporary alarms in
! the user's alarm list. ! 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. ! concurrent alarms in the system.
! If the limit is exceeded, alarms might be lost. ! If the limit is exceeded, alarms might be lost.
!*/ !*/
...@@ -246,7 +246,7 @@ SObject pwrb:Class ...@@ -246,7 +246,7 @@ SObject pwrb:Class
! in respective node. In each node the message handler ! in respective node. In each node the message handler
! has its own skyline of events (also named MaxNoOfEvents) ! has its own skyline of events (also named MaxNoOfEvents)
! defined by a MessageHandler object. In principle, the ! 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 ! MaxNoOfEvents, added up over MaxNoOfEvents in the
! MessageHandler objects in all nodes throughout the ! MessageHandler objects in all nodes throughout the
! ProviewR system, or make it simple and assign the ! ProviewR system, or make it simple and assign the
...@@ -275,13 +275,13 @@ SObject pwrb:Class ...@@ -275,13 +275,13 @@ SObject pwrb:Class
! produced in an application by means of mh_ApplMessage ! produced in an application by means of mh_ApplMessage
! (see ProviewR Programmer's Reference Manual) get an ! (see ProviewR Programmer's Reference Manual) get an
! identity according to the calling parameter EventName. ! identity according to the calling parameter EventName.
! !
! SelectList specifies the hierarchies from which ! SelectList specifies the hierarchies from which
! messages are to be sent to the user. Up to 40 different ! messages are to be sent to the user. Up to 40 different
! hierarchies can be specified. If messages from e.g. a ! hierarchies can be specified. If messages from e.g. a
! Watchdog object in a node will be received, then the ! Watchdog object in a node will be received, then the
! name of the node will be specified. ! name of the node will be specified.
! !
! Note! If the SelectList is left blank no message at all is ! Note! If the SelectList is left blank no message at all is
! sent to the user. ! sent to the user.
!*/ !*/
...@@ -296,7 +296,7 @@ SObject pwrb:Class ...@@ -296,7 +296,7 @@ SObject pwrb:Class
! Specifies the type of events that are sent to the user. ! Specifies the type of events that are sent to the user.
! If no type is specified, all types av events are sent. ! If no type is specified, all types av events are sent.
!*/ !*/
Object EventSelectType $Attribute 49 Object EventSelectType $Attribute 49
Body SysBody Body SysBody
Attr TypeRef = "pwrb:Type-EventTypeMask" Attr TypeRef = "pwrb:Type-EventTypeMask"
EndBody EndBody
...@@ -304,7 +304,7 @@ SObject pwrb:Class ...@@ -304,7 +304,7 @@ SObject pwrb:Class
!/** !/**
! Specifies the type of events viewed in the eventlist. ! Specifies the type of events viewed in the eventlist.
!*/ !*/
Object EventListEvents $Attribute 43 Object EventListEvents $Attribute 43
Body SysBody Body SysBody
Attr TypeRef = "pwrb:Type-EventListMask" Attr TypeRef = "pwrb:Type-EventListMask"
EndBody EndBody
...@@ -356,16 +356,28 @@ SObject pwrb:Class ...@@ -356,16 +356,28 @@ SObject pwrb:Class
Body SysBody Body SysBody
Attr TypeRef = "pwrs:Type-$String80" Attr TypeRef = "pwrs:Type-$String80"
EndBody 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
EndObject EndObject
Object Template OpPlace Object Template OpPlace
Body RtBody Body RtBody
Attr AlarmBell = 1 Attr AlarmBell = 1
Attr BellDelay = 2 Attr BellDelay = 2
Attr OpWindPop = 3 Attr OpWindPop = 3
Attr OpWindEventNameSegments = 2 Attr OpWindEventNameSegments = 2
Attr MaxNoOfAlarms = 200 Attr MaxNoOfAlarms = 200
Attr MaxNoOfEvents = 500 Attr MaxNoOfEvents = 500
Attr Monitor = 0
EndBody EndBody
EndObject EndObject
Object FastAvail $ReferenceList Object FastAvail $ReferenceList
......
This diff is collapsed.
...@@ -93,6 +93,7 @@ public: ...@@ -93,6 +93,7 @@ public:
GdkColor green_color; GdkColor green_color;
GdkColor gray_color; GdkColor gray_color;
GdkColor white_color; GdkColor white_color;
GdkRectangle monitor_geometry;
int a_height; int a_height;
int a_exist[5]; int a_exist[5];
int a_active[5]; int a_active[5];
......
...@@ -145,7 +145,7 @@ void ClickableFrame::mousePressEvent(QMouseEvent* event) { ...@@ -145,7 +145,7 @@ void ClickableFrame::mousePressEvent(QMouseEvent* event) {
} }
OpQt::OpQt(void* op_parent_ctx, char* opplace, pwr_tStatus* status) OpQt::OpQt(void* op_parent_ctx, char* opplace, pwr_tStatus* status)
: Op(op_parent_ctx, opplace, status), title_label(0), a_height(2), : Op(op_parent_ctx, opplace, status), title_label(0), a_height(5),
text_size(12) text_size(12)
{ {
pwr_tStatus sts; pwr_tStatus sts;
...@@ -159,7 +159,6 @@ OpQt::OpQt(void* op_parent_ctx, char* opplace, pwr_tStatus* status) ...@@ -159,7 +159,6 @@ OpQt::OpQt(void* op_parent_ctx, char* opplace, pwr_tStatus* status)
toplevel->setWindowFlags(Qt::CustomizeWindowHint); toplevel->setWindowFlags(Qt::CustomizeWindowHint);
CoWowQt::SetWindowIcon(toplevel); CoWowQt::SetWindowIcon(toplevel);
QRect xtt_monitor_geometry = QApplication::desktop()->screenGeometry();
pwr_tFileName fname; pwr_tFileName fname;
dcli_translate_filename(fname, "$pwr_exe/xtt_alarm_active.png"); dcli_translate_filename(fname, "$pwr_exe/xtt_alarm_active.png");
...@@ -383,11 +382,11 @@ OpQt::OpQt(void* op_parent_ctx, char* opplace, pwr_tStatus* status) ...@@ -383,11 +382,11 @@ OpQt::OpQt(void* op_parent_ctx, char* opplace, pwr_tStatus* status)
if (sup_vect.size() > 10) { if (sup_vect.size() > 10) {
padding1 = 0; padding1 = 0;
padding2 = 0; padding2 = 0;
buttonwidth = (xtt_monitor_geometry.width() - 350) / sup_vect.size(); buttonwidth = (monitor_geometry.width() - 350) / sup_vect.size();
} else if (sup_vect.size() > 6) { } else if (sup_vect.size() > 6) {
padding1 = 8; padding1 = 8;
padding2 = 5; padding2 = 5;
buttonwidth = (xtt_monitor_geometry.width() - 350) / sup_vect.size() buttonwidth = (monitor_geometry.width() - 350) / sup_vect.size()
- 2 * padding2; - 2 * padding2;
} else { } else {
padding1 = 8; padding1 = 8;
...@@ -465,22 +464,14 @@ OpQt::OpQt(void* op_parent_ctx, char* opplace, pwr_tStatus* status) ...@@ -465,22 +464,14 @@ OpQt::OpQt(void* op_parent_ctx, char* opplace, pwr_tStatus* status)
aalarm_box[3]->setVisible(false); aalarm_box[3]->setVisible(false);
aalarm_box[4]->setVisible(false); aalarm_box[4]->setVisible(false);
balarm_box->setVisible(false); balarm_box->setVisible(false);
decr_button->setVisible(false); //decr_button->setVisible(false);
if (layout_mask & pwr_mOpWindLayoutMask_HideCloseButton) { if (layout_mask & pwr_mOpWindLayoutMask_HideCloseButton) {
tools_close->setVisible(false); tools_close->setVisible(false);
functions_close->setVisible(false); functions_close->setVisible(false);
} }
if (a_height == 5) { toplevel->resize(monitor_geometry.width(), OP_HEIGHT_MIN + OP_HEIGHT_STATUSBAR + (a_height - 3) * OP_HEIGHT_INC);
toplevel->activate_aalarm_decr(); toplevel->move(monitor_geometry.x(), 0);
}
if (a_height == 4) {
toplevel->activate_aalarm_decr();
toplevel->activate_aalarm_decr();
}
toplevel->resize(xtt_monitor_geometry.width(), OP_HEIGHT_MIN + OP_HEIGHT_STATUSBAR);
toplevel->move(0, 0);
wow = new CoWowQt(toplevel); wow = new CoWowQt(toplevel);
sup_timerid = wow->timer_new(); sup_timerid = wow->timer_new();
...@@ -810,6 +801,16 @@ int OpQt::configure(char* opplace_str) ...@@ -810,6 +801,16 @@ int OpQt::configure(char* opplace_str)
start_jop = 1; start_jop = 1;
} }
int numberOfMonitors = QApplication::desktop()->screenCount();
int monitor = opplace_p->Monitor;
if (monitor > numberOfMonitors || monitor < 0) monitor = 0;
if (monitor == 0) monitor = QApplication::desktop()->primaryScreen();
else monitor = opplace_p->Monitor - 1;
monitor_geometry = QApplication::desktop()->screenGeometry(monitor);
// Examine Graph objects // Examine Graph objects
for (i = 0; for (i = 0;
i < sizeof(opplace_p->FastAvail) / sizeof(opplace_p->FastAvail[0]); i < sizeof(opplace_p->FastAvail) / sizeof(opplace_p->FastAvail[0]);
...@@ -885,6 +886,7 @@ int OpQt::configure(char* opplace_str) ...@@ -885,6 +886,7 @@ int OpQt::configure(char* opplace_str)
} }
// Create the application buttons // Create the application buttons
int showRow[5] = {1, 1, 1, 0, 0};
for (i = 0; for (i = 0;
i < sizeof(opplace_p->FastAvail) / sizeof(opplace_p->FastAvail[0]); i < sizeof(opplace_p->FastAvail) / sizeof(opplace_p->FastAvail[0]);
i++) { i++) {
...@@ -902,21 +904,29 @@ int OpQt::configure(char* opplace_str) ...@@ -902,21 +904,29 @@ int OpQt::configure(char* opplace_str)
for (i = 0; for (i = 0;
i < sizeof(opplace_p->FastAvail) / sizeof(opplace_p->FastAvail[0]); i < sizeof(opplace_p->FastAvail) / sizeof(opplace_p->FastAvail[0]);
i++) { i++) {
if ((i == 0) || ((i + 1) % 5 == 0)) { if (i % 5 == 0) {
funcbox[(i + 1) / 5] = layout_to_widget(new QHBoxLayout()); funcbox[i / 5] = layout_to_widget(new QHBoxLayout());
appl_form->addWidget(funcbox[(i + 1) / 5]); appl_form->addWidget(funcbox[i / 5]);
} }
if (cdh_ObjidIsNotNull(button_aref[i].Objid)) { if (cdh_ObjidIsNotNull(button_aref[i].Objid)) {
int i2 = (int)(i / 5); showRow[i / 5] = 1;
add_expanding(funcbox[i2]->layout(), appl_buttons[i]); add_expanding(funcbox[i / 5]->layout(), appl_buttons[i]);
if (i >= 15) {
a_height = i2 + 1;
}
} }
} }
appl_form->addStretch(1); appl_form->addStretch(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--)
toplevel->activate_aalarm_decr();
break;
}
}
return XNAV__SUCCESS; return XNAV__SUCCESS;
} }
...@@ -973,13 +983,18 @@ void OpQtWidget::activate_aalarm_incr() ...@@ -973,13 +983,18 @@ void OpQtWidget::activate_aalarm_incr()
+ ((op->layout_mask & pwr_mOpWindLayoutMask_HideStatusBar) ? 0 : 1) + ((op->layout_mask & pwr_mOpWindLayoutMask_HideStatusBar) ? 0 : 1)
* OP_HEIGHT_STATUSBAR; * OP_HEIGHT_STATUSBAR;
if (op->a_height == 3) { if (op->a_height >= 3) {
op->decr_button->setVisible(true); op->decr_button->setVisible(true);
} else if (op->a_height == 4) { }
if (op->a_height >= 4) {
op->funcbox[3]->setVisible(true); op->funcbox[3]->setVisible(true);
} else if (op->a_height == 5) { }
if (op->a_height >= 5) {
op->funcbox[4]->setVisible(true); op->funcbox[4]->setVisible(true);
} }
for (int i = 2; i < 5; i++) { for (int i = 2; i < 5; i++) {
if (i < op->a_height) { if (i < op->a_height) {
if (op->a_exist[i]) { if (op->a_exist[i]) {
...@@ -988,6 +1003,8 @@ void OpQtWidget::activate_aalarm_incr() ...@@ -988,6 +1003,8 @@ void OpQtWidget::activate_aalarm_incr()
} }
} }
} }
resize(width, height); resize(width, height);
} }
...@@ -1005,13 +1022,22 @@ void OpQtWidget::activate_aalarm_decr() ...@@ -1005,13 +1022,22 @@ void OpQtWidget::activate_aalarm_decr()
+ ((op->layout_mask & pwr_mOpWindLayoutMask_HideStatusBar) ? 0 : 1) + ((op->layout_mask & pwr_mOpWindLayoutMask_HideStatusBar) ? 0 : 1)
* OP_HEIGHT_STATUSBAR; * OP_HEIGHT_STATUSBAR;
if (op->a_height == 2) { if (op->a_height <= 2) {
op->decr_button->setVisible(false); op->decr_button->setVisible(false);
} else if (op->a_height == 3) { }
else
{
op->decr_button->setVisible(true);
}
if (op->a_height <= 3) {
op->funcbox[3]->setVisible(false); op->funcbox[3]->setVisible(false);
} else if (op->a_height == 4) { }
if (op->a_height <= 4) {
op->funcbox[4]->setVisible(false); op->funcbox[4]->setVisible(false);
} }
for (int i = 2; i < 5; i++) { for (int i = 2; i < 5; i++) {
if (i >= op->a_height) { if (i >= op->a_height) {
if (op->a_exist[i]) { if (op->a_exist[i]) {
......
...@@ -97,6 +97,7 @@ public: ...@@ -97,6 +97,7 @@ public:
char a_alarm_moretext[5][256]; char a_alarm_moretext[5][256];
char b_alarm_moretext[256]; char b_alarm_moretext[256];
int text_size; int text_size;
QRect monitor_geometry;
CoWowFocusTimerQt poptimer; CoWowFocusTimerQt poptimer;
std::vector<OpCmd> cmd_vect; std::vector<OpCmd> cmd_vect;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment