Commit e8a986ab authored by Claes Sjofors's avatar Claes Sjofors

Merge branch 'master'

parents 60fe3c9d 9d5f65b3
......@@ -36,7 +36,7 @@ $(pwrp_obj)/%.o : %.c
($(pwrp_obj)/%.o) : %.c
@ echo "cc ar $(notdir $(source))"
@ $(cc) $(cflags) $(csetos) $(cinc) -c -o $% $(source)
@ ar -Ur $(target) $%
@ ar rU $(target) $%
$(pwrp_obj)/%.o : %.cpp
@ echo "cc $(notdir $(source))"
......@@ -45,7 +45,7 @@ $(pwrp_obj)/%.o : %.cpp
($(pwrp_obj)/%.o) : %.cpp
@ echo "cc ar $(notdir $(source))"
@ $(cxx) $(cxxflags) $(csetos) $(cinc) -c -o $% $(source)
@ ar -Ur $(target) $%
@ ar rU $(target) $%
$(pwrp_obj)/%.o : %.for
@ echo "fortran77 $(notdir $(source))"
......@@ -54,7 +54,7 @@ $(pwrp_obj)/%.o : %.for
($(pwrp_obj)/%.o) : %.for
@ echo "fortran77 ar $(notdir $(source))"
@ $(f77) $(f77flags) $(f77inc) -c -o $% $(source)
@ ar -Ur $(target) $%
@ ar rU $(target) $%
$(pwrp_inc)/%.h: %.msg
@ echo "Msg to h $(source)"
......
!
!
! 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
......
This diff is collapsed.
......@@ -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];
......
......@@ -145,7 +145,7 @@ void ClickableFrame::mousePressEvent(QMouseEvent* event) {
}
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)
{
pwr_tStatus sts;
......@@ -159,7 +159,6 @@ OpQt::OpQt(void* op_parent_ctx, char* opplace, pwr_tStatus* status)
toplevel->setWindowFlags(Qt::CustomizeWindowHint);
CoWowQt::SetWindowIcon(toplevel);
QRect xtt_monitor_geometry = QApplication::desktop()->screenGeometry();
pwr_tFileName fname;
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)
if (sup_vect.size() > 10) {
padding1 = 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) {
padding1 = 8;
padding2 = 5;
buttonwidth = (xtt_monitor_geometry.width() - 350) / sup_vect.size()
buttonwidth = (monitor_geometry.width() - 350) / sup_vect.size()
- 2 * padding2;
} else {
padding1 = 8;
......@@ -465,22 +464,14 @@ OpQt::OpQt(void* op_parent_ctx, char* opplace, pwr_tStatus* status)
aalarm_box[3]->setVisible(false);
aalarm_box[4]->setVisible(false);
balarm_box->setVisible(false);
decr_button->setVisible(false);
//decr_button->setVisible(false);
if (layout_mask & pwr_mOpWindLayoutMask_HideCloseButton) {
tools_close->setVisible(false);
functions_close->setVisible(false);
}
if (a_height == 5) {
toplevel->activate_aalarm_decr();
}
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);
toplevel->resize(monitor_geometry.width(), OP_HEIGHT_MIN + OP_HEIGHT_STATUSBAR + (a_height - 3) * OP_HEIGHT_INC);
toplevel->move(monitor_geometry.x(), 0);
wow = new CoWowQt(toplevel);
sup_timerid = wow->timer_new();
......@@ -810,6 +801,16 @@ int OpQt::configure(char* opplace_str)
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
for (i = 0;
i < sizeof(opplace_p->FastAvail) / sizeof(opplace_p->FastAvail[0]);
......@@ -885,6 +886,7 @@ int OpQt::configure(char* opplace_str)
}
// Create the application buttons
int showRow[5] = {1, 1, 1, 0, 0};
for (i = 0;
i < sizeof(opplace_p->FastAvail) / sizeof(opplace_p->FastAvail[0]);
i++) {
......@@ -902,21 +904,29 @@ int OpQt::configure(char* opplace_str)
for (i = 0;
i < sizeof(opplace_p->FastAvail) / sizeof(opplace_p->FastAvail[0]);
i++) {
if ((i == 0) || ((i + 1) % 5 == 0)) {
funcbox[(i + 1) / 5] = layout_to_widget(new QHBoxLayout());
appl_form->addWidget(funcbox[(i + 1) / 5]);
if (i % 5 == 0) {
funcbox[i / 5] = layout_to_widget(new QHBoxLayout());
appl_form->addWidget(funcbox[i / 5]);
}
if (cdh_ObjidIsNotNull(button_aref[i].Objid)) {
int i2 = (int)(i / 5);
add_expanding(funcbox[i2]->layout(), appl_buttons[i]);
if (i >= 15) {
a_height = i2 + 1;
}
showRow[i / 5] = 1;
add_expanding(funcbox[i / 5]->layout(), appl_buttons[i]);
}
}
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;
}
......@@ -973,13 +983,18 @@ void OpQtWidget::activate_aalarm_incr()
+ ((op->layout_mask & pwr_mOpWindLayoutMask_HideStatusBar) ? 0 : 1)
* OP_HEIGHT_STATUSBAR;
if (op->a_height == 3) {
if (op->a_height >= 3) {
op->decr_button->setVisible(true);
} else if (op->a_height == 4) {
}
if (op->a_height >= 4) {
op->funcbox[3]->setVisible(true);
} else if (op->a_height == 5) {
}
if (op->a_height >= 5) {
op->funcbox[4]->setVisible(true);
}
for (int i = 2; i < 5; i++) {
if (i < op->a_height) {
if (op->a_exist[i]) {
......@@ -988,6 +1003,8 @@ void OpQtWidget::activate_aalarm_incr()
}
}
}
resize(width, height);
}
......@@ -1005,13 +1022,22 @@ void OpQtWidget::activate_aalarm_decr()
+ ((op->layout_mask & pwr_mOpWindLayoutMask_HideStatusBar) ? 0 : 1)
* OP_HEIGHT_STATUSBAR;
if (op->a_height == 2) {
if (op->a_height <= 2) {
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);
} else if (op->a_height == 4) {
}
if (op->a_height <= 4) {
op->funcbox[4]->setVisible(false);
}
for (int i = 2; i < 5; i++) {
if (i >= op->a_height) {
if (op->a_exist[i]) {
......
......@@ -97,6 +97,7 @@ public:
char a_alarm_moretext[5][256];
char b_alarm_moretext[256];
int text_size;
QRect monitor_geometry;
CoWowFocusTimerQt poptimer;
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