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
016ba2ab
Commit
016ba2ab
authored
Nov 30, 2020
by
Christoffer Ackelman
Committed by
Esteban Blanc
Dec 23, 2020
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
QT: Changed the selection clipboard to use the X11 selection clipboard instead.
parent
f68f184e
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
97 additions
and
294 deletions
+97
-294
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
-30
wb/lib/wb/qt/wb_nav_qt.h
wb/lib/wb/qt/wb_nav_qt.h
+0
-22
wb/lib/wb/qt/wb_pal_qt.cpp
wb/lib/wb/qt/wb_pal_qt.cpp
+7
-27
wb/lib/wb/qt/wb_pal_qt.h
wb/lib/wb/qt/wb_pal_qt.h
+0
-22
wb/lib/wb/qt/wb_wattnav_qt.cpp
wb/lib/wb/qt/wb_wattnav_qt.cpp
+1
-5
wb/lib/wb/qt/wb_wnav_qt.cqt
wb/lib/wb/qt/wb_wnav_qt.cqt
+70
-120
wb/lib/wb/qt/wb_wnav_qt.h
wb/lib/wb/qt/wb_wnav_qt.h
+0
-8
xtt/lib/cow/qt/cow_wow_qt.cqt
xtt/lib/cow/qt/cow_wow_qt.cqt
+6
-41
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.
wb/lib/wb/qt/wb_foe_qt.cqt
View file @
016ba2ab
...
...
@@ -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);
}
\ No newline at end of file
wb/lib/wb/qt/wb_nav_qt.c
qt
→
wb/lib/wb/qt/wb_nav_qt.c
pp
View file @
016ba2ab
...
...
@@ -42,27 +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);
server->listen("STRING");
QObject::connect(
server, SIGNAL(newConnection()), trace_obj, SLOT(sel_convert_cb()));
set_inputfocus
(
0
);
*
w
=
form_widget
;
...
...
@@ -73,41 +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)
{
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 @
016ba2ab
...
...
@@ -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 @
016ba2ab
...
...
@@ -42,27 +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);
server->listen("STRING");
QObject::connect(
server, SIGNAL(newConnection()), trace_obj, SLOT(sel_convert_cb()));
set_inputfocus
(
0
);
*
w
=
form_widget
;
...
...
@@ -71,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
();
...
...
@@ -110,19 +102,14 @@ void PalQt::set_selection_owner()
{
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
{
...
...
@@ -139,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
);
}
\ No newline at end of file
wb/lib/wb/qt/wb_pal_qt.h
View file @
016ba2ab
...
...
@@ -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 @
016ba2ab
...
...
@@ -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 @
016ba2ab
...
...
@@ -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,23 +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);
serverString->listen("STRING");
QObject::connect(
serverString, SIGNAL(newConnection()), trace_obj, SLOT(sel_convert_cb()));
serverGraph = new QLocalServer(trace_obj);
serverGraph->listen("PWR_GRAPH");
QObject::connect(
serverGraph, SIGNAL(newConnection()), trace_obj, SLOT(sel_convert_cb()));
serverObjId = new QLocalServer(trace_obj);
serverObjId->listen("PWR_OBJID");
QObject::connect(
serverObjId, SIGNAL(newConnection()), trace_obj, SLOT(sel_convert_cb()));
serverAttrRef = new QLocalServer(trace_obj);
serverAttrRef->listen("PWR_ATTRREF");
QObject::connect(serverAttrRef, SIGNAL(newConnection()), trace_obj,
SLOT(sel_convert_cb()));
gbl.load_config(this);
if (root_menu && !ldhses) {
...
...
@@ -185,19 +167,80 @@ 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()
{
selection_owner = 1;
selection_owner = 1;
if (!selection_owner) {
return;
}
pwr_sAttrRef attrref;
char* buffp;
int node_count;
brow_tNode* node_list;
brow_GetSelectedNodes(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(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(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)
...
...
@@ -269,99 +312,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.writeRawData(data, strlen(data));
QLocalSocket* clientConnection = server->nextPendingConnection();
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 @
016ba2ab
...
...
@@ -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 @
016ba2ab
...
...
@@ -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 str[200];
int len;
...
...
@@ -422,48 +421,14 @@ void CoWowQtObject::DisplayLicense()
pop(mbox);
}
int CoWowQt::GetSelection(char* str, int size
, const char* atom
)
int CoWowQt::GetSelection(char* str, int size)
{
log_debug("GetSelection str=%s, size=%d, arom=%s\n", str, size, atom);
static wow_sSelection data;
data.received = 0;
data.sts = 0;
data.atom = atom;
data.new_main = 0;
QLocalSocket* socket = new QLocalSocket();
socket->connectToServer(fl(atom));
while (!data.received) {
if (socket->waitForReadyRead(50)) {
if (socket->bytesAvailable() > 0) {
QDataStream in(socket);
if (socket->bytesAvailable() > int(sizeof(data.str) - 1)
|| in.atEnd()) {
data.sts = 0;
continue;
}
in.readRawData(data.str, socket->bytesAvailable());
data.str[socket->bytesAvailable()] = 0;
data.len = socket->bytesAvailable();
data.sts = 1;
} else {
data.sts = 0;
}
data.received = 1;
}
QApplication::processEvents();
}
delete socket;
if (data.sts && data.len < size) {
strcpy(str, data.str);
QString rcvStr = QApplication::clipboard()->text(QClipboard::Selection);
if (!rcvStr.isEmpty() && rcvStr.length() < size) {
strcpy(str, qPrintable(rcvStr));
}
return
data.sts
;
return
!rcvStr.isEmpty()
;
}
void CoWowQt::CreateFileSelDia(const char* title, void* parent_ctx,
...
...
xtt/lib/cow/qt/cow_wow_qt.h
View file @
016ba2ab
...
...
@@ -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 @
016ba2ab
...
...
@@ -319,14 +319,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;
}
...
...
@@ -341,14 +336,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