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
426fa8ac
Commit
426fa8ac
authored
Sep 02, 2019
by
Christoffer Ackelman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
QT: Changed selection to use the X11 selection clipboard.
parent
aaf2e162
Changes
12
Show whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
96 additions
and
302 deletions
+96
-302
src/tools/bld/src/variables.mk
src/tools/bld/src/variables.mk
+1
-1
wb/lib/wb/qt/wb_foe_qt.cqt
wb/lib/wb/qt/wb_foe_qt.cqt
+1
-6
wb/lib/wb/qt/wb_nav_qt.cpp
wb/lib/wb/qt/wb_nav_qt.cpp
+9
-33
wb/lib/wb/qt/wb_nav_qt.h
wb/lib/wb/qt/wb_nav_qt.h
+1
-23
wb/lib/wb/qt/wb_pal_qt.cpp
wb/lib/wb/qt/wb_pal_qt.cpp
+7
-30
wb/lib/wb/qt/wb_pal_qt.h
wb/lib/wb/qt/wb_pal_qt.h
+1
-23
wb/lib/wb/qt/wb_wattnav_qt.cpp
wb/lib/wb/qt/wb_wattnav_qt.cpp
+2
-6
wb/lib/wb/qt/wb_wnav_qt.cqt
wb/lib/wb/qt/wb_wnav_qt.cqt
+66
-132
wb/lib/wb/qt/wb_wnav_qt.h
wb/lib/wb/qt/wb_wnav_qt.h
+1
-9
xtt/lib/cow/qt/cow_wow_qt.cqt
xtt/lib/cow/qt/cow_wow_qt.cqt
+4
-26
xtt/lib/cow/qt/cow_wow_qt.h
xtt/lib/cow/qt/cow_wow_qt.h
+1
-1
xtt/lib/ge/qt/ge_qt.cqt
xtt/lib/ge/qt/ge_qt.cqt
+2
-12
No files found.
src/tools/bld/src/variables.mk
View file @
426fa8ac
...
...
@@ -152,7 +152,7 @@ else
endif
explinkflags
:=
$(cross_compile)
-g
-L
$(elib_dir)
cxxflags
:=
$(cflags)
cxxflags
:=
$(cflags)
-Wno-deprecated-copy
clis
=
/lis
=
$(list)
dolist
=
/lis
=
$(list)
domap
=
-Xlinker
-Map
-Xlinker
$(map)
...
...
wb/lib/wb/qt/wb_foe_qt.cqt
View file @
426fa8ac
...
...
@@ -1277,10 +1277,5 @@ int WFoeQt::view_set_entries()
int WFoeQt::get_selection(char* str, int len)
{
int sts = CoWowQt::GetSelection(str, len, "PWR_OBJID");
if (EVEN(sts)) {
sts = CoWowQt::GetSelection(str, len, "STRING");
}
return sts;
return CoWowQt::GetSelection(str, len);
}
wb/lib/wb/qt/wb_nav_qt.c
qt
→
wb/lib/wb/qt/wb_nav_qt.c
pp
View file @
426fa8ac
...
...
@@ -42,26 +42,20 @@
#include "wb_nav_qt.h"
#include <QApplication>
#include <QClipboard>
#include <QScrollArea>
#include <qlocalsocket.h>
NavQt
::
NavQt
(
void
*
nav_parent_ctx
,
const
char
*
nav_name
,
ldh_tSesContext
nav_ldhses
,
const
char
*
nav_root_name
,
QWidget
**
w
,
pwr_tStatus
*
status
)
:
Nav
(
nav_parent_ctx
,
nav_name
,
nav_ldhses
,
nav_root_name
,
status
)
{
trace_obj = new NavQtTraceObject(this);
QScrollArea
*
scrolledbrow
=
((
QScrollArea
*
)
scrolledbrowwidgetqt_new
(
Nav
::
init_brow_cb
,
this
,
&
brow_widget
));
form_widget
=
wrapInFrame
(
scrolledbrow
);
server = new QLocalServer(trace_obj);
QObject::connect(
server, SIGNAL(newConnection()), trace_obj, SLOT(sel_convert_cb()));
set_inputfocus
(
0
);
*
w
=
form_widget
;
...
...
@@ -72,45 +66,27 @@ NavQt::~NavQt()
{
PalFile
::
config_tree_free
(
menu
);
free_pixmaps
();
delete trace_obj;
form_widget
->
close
();
}
void NavQt
TraceObject::sel_convert_cb(
)
void
NavQt
::
set_selection_owner
(
int
set
)
{
char name[200];
pwr_tStatus sts;
if (!nav->selection_owner) {
selection_owner
=
set
;
if
(
!
selection_owner
)
{
return
;
}
if (!nav->get_plant_select_cb) {
char
name
[
200
];
if
(
!
get_plant_select_cb
)
{
strcpy
(
name
,
""
);
}
else
{
sts = nav->get_plant_select_cb(nav->
parent_ctx, name, sizeof(name));
pwr_tStatus
sts
=
get_plant_select_cb
(
parent_ctx
,
name
,
sizeof
(
name
));
if
(
EVEN
(
sts
))
{
strcpy
(
name
,
""
);
}
}
QByteArray block;
QDataStream out(&block, QIODevice::WriteOnly);
out.writeRawData(name, strlen(name));
QLocalSocket* clientConnection = nav->server->nextPendingConnection();
clientConnection->write(block);
clientConnection->flush();
clientConnection->disconnectFromServer();
}
void NavQt::set_selection_owner(int set)
{
if (!server->isListening()) {
QLocalServer::removeServer("STRING");
server->listen("STRING");
}
selection_owner = set;
QApplication
::
clipboard
()
->
setText
(
name
,
QClipboard
::
Selection
);
}
static
void
modifyBackground
(
QWidget
*
widget
,
QColor
color
)
...
...
wb/lib/wb/qt/wb_nav_qt.h
View file @
426fa8ac
...
...
@@ -43,10 +43,6 @@
#include <QWidget>
#include <qlocalserver.h>
class
NavQtTraceObject
;
class
NavQt
:
public
Nav
{
public:
NavQt
(
void
*
parent_ctx
,
const
char
*
name
,
ldh_tSesContext
ldhses
,
...
...
@@ -56,26 +52,8 @@ public:
QWidget
*
brow_widget
;
QWidget
*
form_widget
;
QLocalServer
*
server
;
void
set_inputfocus
(
int
focus
);
void
set_selection_owner
(
int
set
);
private:
NavQtTraceObject
*
trace_obj
;
};
class
NavQtTraceObject
:
public
QObject
{
Q_OBJECT
public:
NavQtTraceObject
(
NavQt
*
parent
)
:
QObject
(),
nav
(
parent
)
{}
public
slots
:
void
sel_convert_cb
();
private:
NavQt
*
nav
;
};
#endif
wb/lib/wb/qt/wb_pal_qt.c
qt
→
wb/lib/wb/qt/wb_pal_qt.c
pp
View file @
426fa8ac
...
...
@@ -42,26 +42,20 @@
#include "wb_pal_qt.h"
#include <QApplication>
#include <QClipboard>
#include <QScrollArea>
#include <qlocalsocket.h>
PalQt
::
PalQt
(
void
*
pal_parent_ctx
,
const
char
*
pal_name
,
ldh_tSesContext
pal_ldhses
,
const
char
*
pal_root_name
,
QWidget
**
w
,
pwr_tStatus
*
status
)
:
Pal
(
pal_parent_ctx
,
pal_name
,
pal_ldhses
,
pal_root_name
,
status
)
{
trace_obj = new PalQtTraceObject(this);
QScrollArea
*
scrolledbrow
=
((
QScrollArea
*
)
scrolledbrowwidgetqt_new
(
Pal
::
init_brow_cb
,
this
,
&
brow_widget
));
form_widget
=
wrapInFrame
(
scrolledbrow
);
server = new QLocalServer(trace_obj);
QObject::connect(
server, SIGNAL(newConnection()), trace_obj, SLOT(sel_convert_cb()));
set_inputfocus
(
0
);
*
w
=
form_widget
;
...
...
@@ -70,7 +64,6 @@ PalQt::PalQt(void* pal_parent_ctx, const char* pal_name,
PalQt
::~
PalQt
()
{
delete trace_obj;
PalFile
::
config_tree_free
(
menu
);
free_pixmaps
();
form_widget
->
close
();
...
...
@@ -107,25 +100,16 @@ void PalQt::set_inputfocus(int focus)
void
PalQt
::
set_selection_owner
()
{
if (!server->isListening()) {
QLocalServer::removeServer("STRING");
server->listen("STRING");
}
selection_owner
=
1
;
brow_SetInverseColor
(
brow_ctx
,
flow_eDrawType_Line
);
}
if
(
!
selection_owner
)
{
return
;
}
void PalQtTraceObject::sel_convert_cb()
{
char
name
[
200
];
brow_tNode
*
node_list
;
int
node_count
;
if (!pal->selection_owner) {
return;
}
brow_GetSelectedNodes(pal->brow_ctx, &node_list, &node_count);
brow_GetSelectedNodes
(
brow_ctx
,
&
node_list
,
&
node_count
);
if
(
!
node_count
)
{
strcpy
(
name
,
""
);
}
else
{
...
...
@@ -142,12 +126,5 @@ void PalQtTraceObject::sel_convert_cb()
}
}
QByteArray block;
QDataStream out(&block, QIODevice::WriteOnly);
out.writeRawData(name, strlen(name));
QLocalSocket* clientConnection = pal->server->nextPendingConnection();
clientConnection->write(block);
clientConnection->flush();
clientConnection->disconnectFromServer();
QApplication
::
clipboard
()
->
setText
(
name
,
QClipboard
::
Selection
);
}
wb/lib/wb/qt/wb_pal_qt.h
View file @
426fa8ac
...
...
@@ -41,10 +41,6 @@
#include <QWidget>
#include <qlocalserver.h>
class
PalQtTraceObject
;
class
PalQt
:
public
Pal
{
public:
PalQt
(
void
*
parent_ctx
,
const
char
*
name
,
ldh_tSesContext
ldhses
,
...
...
@@ -54,27 +50,9 @@ public:
QWidget
*
brow_widget
;
QWidget
*
form_widget
;
QLocalServer
*
server
;
void
set_inputfocus
(
int
focus
);
void
set_selection_owner
();
void
create_popup_menu
(
pwr_tCid
cid
,
int
x
,
int
y
);
private:
PalQtTraceObject
*
trace_obj
;
};
class
PalQtTraceObject
:
public
QObject
{
Q_OBJECT
public:
PalQtTraceObject
(
PalQt
*
parent
)
:
QObject
(),
pal
(
parent
)
{}
public
slots
:
void
sel_convert_cb
();
private:
PalQt
*
pal
;
};
#endif
wb/lib/wb/qt/wb_wattnav_qt.cpp
View file @
426fa8ac
...
...
@@ -66,11 +66,7 @@ WAttNavQt::~WAttNavQt()
pwr_tStatus
WAttNavQt
::
get_selection
(
char
*
str
,
int
size
)
{
pwr_tStatus
sts
=
CoWowQt
::
GetSelection
(
str
,
size
,
"PWR_OBJID"
);
if
(
EVEN
(
sts
))
{
sts
=
CoWowQt
::
GetSelection
(
str
,
size
,
"STRING"
);
}
return
sts
;
return
CoWowQt
::
GetSelection
(
str
,
size
);
}
void
WAttNavQt
::
set_inputfocus
()
...
...
wb/lib/wb/qt/wb_wnav_qt.cqt
View file @
426fa8ac
...
...
@@ -60,14 +60,13 @@
#include "wb_xcrr_qt.h"
#include <QApplication>
#include <QClipboard>
#include <QColor>
#include <QInputDialog>
#include <QLayout>
#include <QMessageBox>
#include <QScrollArea>
#include <qlocalsocket.h>
void WNavQt::pop()
{
::pop(form_widget);
...
...
@@ -94,19 +93,6 @@ WNavQt::WNavQt(void* xn_parent_ctx, QWidget* xn_parent_wid, const char* xn_name,
// Create the root item
*w = form_widget;
serverString = new QLocalServer(trace_obj);
QObject::connect(
serverString, SIGNAL(newConnection()), trace_obj, SLOT(sel_convert_cb()));
serverGraph = new QLocalServer(trace_obj);
QObject::connect(
serverGraph, SIGNAL(newConnection()), trace_obj, SLOT(sel_convert_cb()));
serverObjId = new QLocalServer(trace_obj);
QObject::connect(
serverObjId, SIGNAL(newConnection()), trace_obj, SLOT(sel_convert_cb()));
serverAttrRef = new QLocalServer(trace_obj);
QObject::connect(serverAttrRef, SIGNAL(newConnection()), trace_obj,
SLOT(sel_convert_cb()));
gbl.load_config(this);
if (root_menu && !ldhses) {
...
...
@@ -181,36 +167,79 @@ void WNavQt::print(const char* title)
int WNavQt::get_selection(char* str, int len)
{
int sts;
sts = CoWowQt::GetSelection(str, len, "PWR_OBJID");
if (EVEN(sts)) {
sts = CoWowQt::GetSelection(str, len, "STRING");
}
return sts;
return CoWowQt::GetSelection(str, len);
}
void WNavQt::set_selection_owner()
{
if (!serverString->isListening()) {
QLocalServer::removeServer("STRING");
serverString->listen("STRING");
}
if (!serverGraph->isListening()) {
QLocalServer::removeServer("PWR_GRAPH");
serverGraph->listen("PWR_GRAPH");
selection_owner = 1;
if (!selection_owner) {
return;
}
if (!serverObjId->isListening()) {
QLocalServer::removeServer("PWR_OBJID");
serverObjId->listen("PWR_OBJID");
pwr_sAttrRef attrref;
char* buffp;
int node_count;
brow_tNode* node_list;
brow_GetSelectedNodes(brow->ctx, &node_list, &node_count);
if (!node_count) {
return;
}
if (!serverAttrRef->isListening()) {
QLocalServer::removeServer("PWR_ATTRREF");
serverAttrRef->listen("PWR_ATTRREF");
WItem* item;
brow_GetUserData(node_list[0], (void**)&item);
switch (item->type) {
case wnav_eItemType_Attr:
case wnav_eItemType_AttrInput:
case wnav_eItemType_AttrInputInv:
case wnav_eItemType_AttrInputF:
case wnav_eItemType_AttrOutput:
case wnav_eItemType_AttrArray:
case wnav_eItemType_AttrArrayOutput:
case wnav_eItemType_AttrArrayElem:
case wnav_eItemType_AttrObject: {
WItemBaseAttr* aitem = (WItemBaseAttr*)item;
int size;
pwr_tAName attr_str;
int sts = ldh_ObjidToName(ldhses, item->objid, ldh_eName_Hierarchy,
attr_str, sizeof(attr_str), &size);
if (EVEN(sts)) {
break;
}
selection_owner = 1;
strcat(attr_str, ".");
strcat(attr_str, aitem->name);
sts = ldh_NameToAttrRef(ldhses, attr_str, &attrref);
if (EVEN(sts)) {
break;
}
sts = (format_selection_cb)(
parent_ctx, attrref, &buffp, 0, 1, wnav_eSelectionFormat_User);
if (sts) {
QApplication::clipboard()->setText(buffp, QClipboard::Selection);
}
break;
}
case wnav_eItemType_Object: {
attrref = cdh_ObjidToAref(item->objid);
int sts = (format_selection_cb)(
parent_ctx, attrref, &buffp, 0, 0, wnav_eSelectionFormat_User);
if (sts) {
QApplication::clipboard()->setText(buffp, QClipboard::Selection);
}
break;
}
default: {
char name[200];
brow_GetAnnotation(node_list[0], 0, name, sizeof(name));
QApplication::clipboard()->setText(name, QClipboard::Selection);
break;
}
}
free(node_list);
}
void WNavQt::create_popup_menu(pwr_tAttrRef aref, int x, int y)
...
...
@@ -282,101 +311,6 @@ void WNavQt::logw_new(char* item, wlog_eCategory* categories, int show_item)
}
}
static void selection_data_set(
WNavQt* wnav, QLocalServer* server, const char* data)
{
QByteArray block;
QDataStream out(&block, QIODevice::WriteOnly);
out << QString(data);
QLocalSocket* clientConnection = server->nextPendingConnection();
QObject::connect(clientConnection, SIGNAL(disconnected()),
clientConnection, SLOT(deleteLater()));
clientConnection->write(block);
clientConnection->flush();
clientConnection->disconnectFromServer();
}
void WNavQtTraceObject::sel_convert_cb()
{
pwr_sAttrRef attrref;
char* buffp;
QLocalServer* server = ((QLocalServer*)sender());
wnav_eSelectionFormat format;
if (server == wnav->serverGraph) {
format = wnav_eSelectionFormat_Graph;
} else if (server == wnav->serverObjId) {
format = wnav_eSelectionFormat_Objid;
} else if (server == wnav->serverAttrRef) {
format = wnav_eSelectionFormat_Attrref;
} else {
format = wnav_eSelectionFormat_User;
}
int node_count;
brow_tNode* node_list;
brow_GetSelectedNodes(wnav->brow->ctx, &node_list, &node_count);
if (!node_count) {
return;
}
WItem* item;
brow_GetUserData(node_list[0], (void**)&item);
switch (item->type) {
case wnav_eItemType_Attr:
case wnav_eItemType_AttrInput:
case wnav_eItemType_AttrInputInv:
case wnav_eItemType_AttrInputF:
case wnav_eItemType_AttrOutput:
case wnav_eItemType_AttrArray:
case wnav_eItemType_AttrArrayOutput:
case wnav_eItemType_AttrArrayElem:
case wnav_eItemType_AttrObject: {
WItemBaseAttr* aitem = (WItemBaseAttr*)item;
int size;
pwr_tAName attr_str;
int sts = ldh_ObjidToName(wnav->ldhses, item->objid, ldh_eName_Hierarchy,
attr_str, sizeof(attr_str), &size);
if (EVEN(sts)) {
break;
}
strcat(attr_str, ".");
strcat(attr_str, aitem->name);
sts = ldh_NameToAttrRef(wnav->ldhses, attr_str, &attrref);
if (EVEN(sts)) {
break;
}
sts = (wnav->format_selection_cb)(
wnav->parent_ctx, attrref, &buffp, 0, 1, format);
if (sts) {
selection_data_set(wnav, server, buffp);
}
break;
}
case wnav_eItemType_Object: {
attrref = cdh_ObjidToAref(item->objid);
int sts = (wnav->format_selection_cb)(
wnav->parent_ctx, attrref, &buffp, 0, 0, format);
if (sts) {
selection_data_set(wnav, server, buffp);
}
break;
}
default: {
char name[200];
brow_GetAnnotation(node_list[0], 0, name, sizeof(name));
selection_data_set(wnav, server, name);
break;
}
}
free(node_list);
}
int WNavQt::open_foe(const char* name, pwr_tOid plcpgm, void** foectx,
int map_window, ldh_eAccess access, pwr_tOid oid)
{
...
...
wb/lib/wb/qt/wb_wnav_qt.h
View file @
426fa8ac
...
...
@@ -41,8 +41,6 @@
#include <QTimer>
#include <qlocalserver.h>
/* wtt_wnav_qt.h -- Simple navigator */
class
CoLogin
;
...
...
@@ -62,11 +60,6 @@ public:
QWidget
*
brow_widget
;
QWidget
*
form_widget
;
QLocalServer
*
serverString
;
QLocalServer
*
serverGraph
;
QLocalServer
*
serverObjId
;
QLocalServer
*
serverAttrRef
;
void
pop
();
void
set_inputfocus
(
int
focus
);
void
print
(
const
char
*
title
);
...
...
@@ -115,7 +108,6 @@ public:
public
slots
:
void
trace_scan
();
void
sel_convert_cb
();
private:
WNavQt
*
wnav
;
...
...
xtt/lib/cow/qt/cow_wow_qt.cqt
View file @
426fa8ac
...
...
@@ -52,6 +52,7 @@
#include "flow_browapi.h"
#include <QApplication>
#include <QClipboard>
#include <QDialogButtonBox>
#include <QFileDialog>
#include <QHBoxLayout>
...
...
@@ -70,8 +71,6 @@
#include <QTimer>
#include <QVBoxLayout>
#include <qlocalsocket.h>
typedef struct {
char title[80];
flow_tCtx flow_ctx;
...
...
@@ -413,34 +412,13 @@ void CoWowQtObject::DisplayLicense()
pop(mbox);
}
int CoWowQt::GetSelection(char* str, int size
, const char* atom
)
int CoWowQt::GetSelection(char* str, int size)
{
QLocalSocket* socket = new QLocalSocket();
socket->connectToServer(fl(atom));
if (!socket->waitForConnected()) {
log_debug("GetSelection failed, could not connect to local server %s: %s\n", fl(atom), qPrintable(socket->errorString()));
}
QString rcvStr;
int received = 0;
while (!received) {
if (socket->waitForReadyRead(50)) {
QDataStream in(socket);
if (socket->bytesAvailable() > 0 && !in.atEnd()) {
in >> rcvStr;
}
received = 1;
}
QApplication::processEvents();
}
socket->close();
delete socket;
QString rcvStr = QApplication::clipboard()->text(QClipboard::Selection);
if (!rcvStr.isEmpty() && rcvStr.length() < size) {
strcpy(str, qPrintable(rcvStr));
return true;
}
return !rcvStr.isEmpty();
}
...
...
xtt/lib/cow/qt/cow_wow_qt.h
View file @
426fa8ac
...
...
@@ -223,7 +223,7 @@ public:
static
void
PopupPosition
(
QWidget
*
parent
,
int
x_event
,
int
y_event
,
int
*
x
,
int
*
y
);
static
int
GetSelection
(
char
*
str
,
int
size
,
const
char
*
atom
);
static
int
GetSelection
(
char
*
str
,
int
size
);
static
void
SetWindowIcon
(
QWidget
*
w
);
static
void
update_title
(
QWidget
*
w
,
int
editmode
);
...
...
xtt/lib/ge/qt/ge_qt.cqt
View file @
426fa8ac
...
...
@@ -320,14 +320,9 @@ int GeQt::get_plant_select(char* select_name, int size)
pwr_tAName buff;
if (!ldhses) {
sts = CoWowQt::GetSelection(str, sizeof(str)
, "PWR_GRAPH"
);
sts = CoWowQt::GetSelection(str, sizeof(str));
if (ODD(sts)) {
strcpy(select_name, str);
} else {
sts = CoWowQt::GetSelection(str, sizeof(str), "STRING");
if (ODD(sts)) {
strcpy(select_name, str);
}
}
return sts;
}
...
...
@@ -342,14 +337,9 @@ int GeQt::get_plant_select(char* select_name, int size)
strncpy(select_name, buff, size);
return 1;
} else {
sts = CoWowQt::GetSelection(str, sizeof(str)
, "PWR_GRAPH"
);
sts = CoWowQt::GetSelection(str, sizeof(str));
if (ODD(sts)) {
strncpy(select_name, str, size);
} else {
sts = CoWowQt::GetSelection(str, sizeof(str), "STRING");
if (ODD(sts)) {
strncpy(select_name, str, size);
}
}
return sts;
}
...
...
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