9f9f1788
Pavel Govyadinov
clead up version ...
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Mon Aug 5 15:53:16 2019
@author: pavel
"""
"""
Qt wrapper/container class that handles all the top level events and maintains the
methods necessary to use the QT signals and slots API.
"""
|
4407a915
Pavel Govyadinov
working with new ...
|
14
15
|
#from pyqtgraph.Qt import QtCore, QtGui, QtWidgets
from PyQt5 import QtCore, QtGui, QtWidgets
|
9f9f1788
Pavel Govyadinov
clead up version ...
|
16
|
from TubeCanvas import TubeDraw
|
193cb4c6
Pavel Govyadinov
need this to test
|
17
|
import numpy as np
|
25fa0bfe
Pavel Govyadinov
Stable, pre-vispy...
|
18
|
#import trimesh as tm
|
9f9f1788
Pavel Govyadinov
clead up version ...
|
19
|
|
6eb102f5
Pavel Govyadinov
Fixed issue cause...
|
20
21
|
DEBUG = False
|
4407a915
Pavel Govyadinov
working with new ...
|
22
|
class TubeWidget(QtWidgets.QWidget):
|
9f9f1788
Pavel Govyadinov
clead up version ...
|
23
24
25
26
|
sigUpdate = QtCore.pyqtSignal(float, float, float)
#Initializes the QT wrapper class.
def __init__(self):
super(TubeWidget, self).__init__()
|
4407a915
Pavel Govyadinov
working with new ...
|
27
|
box = QtWidgets.QVBoxLayout(self)
|
9f9f1788
Pavel Govyadinov
clead up version ...
|
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
self.resize(500,500)
self.setLayout(box)
self.canvas = TubeDraw()
#self.canvas.create_native()
box.addWidget(self.canvas.native)
self.camera = [0,0,0]
self.down = False
self.canvas.events.mouse_press.connect(self.on_mouse_press)
self.canvas.events.mouse_release.connect(self.on_mouse_release)
self.canvas.events.mouse_move.connect(self.on_mouse_move)
self.canvas.events.mouse_wheel.connect(self.on_mouse_wheel)
#self.show()
#Handles the mouse release event
def on_mouse_release(self, event):
self.down=False
self.sendCameraInfo()
#Handles the mouse move event
def on_mouse_move(self, event):
if self.down:
self.sendCameraInfo()
|
2282da38
Pavel Govyadinov
added path select...
|
53
|
#Handles the mouse press events
|
9f9f1788
Pavel Govyadinov
clead up version ...
|
54
55
|
def on_mouse_press(self, event):
self.down = True
|
193cb4c6
Pavel Govyadinov
need this to test
|
56
57
58
59
60
61
62
|
if event.button == 2:
menu = QtWidgets.QMenu(self)
NS = menu.addAction('Export Model')
action = menu.exec_(event.native.globalPos())
if action == NS:
self.save_stl_mesh()
|
9f9f1788
Pavel Govyadinov
clead up version ...
|
63
64
65
66
67
68
69
70
71
72
73
|
#Handles the mouse wheel event
def on_mouse_wheel(self, event):
self.sendCameraInfo()
#controls the emit function of the QT class to send a signal to the slot
#located in the other window.
def sendCameraInfo(self):
#self.view = self.canvas.view
self.camera = self.canvas.camera
#print("stuff", self.view[3, 0], self.view[3, 1], self.view[3, 2])
|
6eb102f5
Pavel Govyadinov
Fixed issue cause...
|
74
75
|
if DEBUG:
print("stuff", self.camera[0], self.camera[1], self.camera[2])
|
9f9f1788
Pavel Govyadinov
clead up version ...
|
76
|
self.sigUpdate.emit(self.camera[0], self.camera[1], self.camera[2])
|
6aca1767
Pavel Govyadinov
Added a signal to...
|
77
78
79
80
81
82
83
|
"""
Function to receive the signal with the information necessary to visualize
specific fibers only. With the rest of them being minimized.
"""
@QtCore.pyqtSlot(list)
def select(self, x):
|
2282da38
Pavel Govyadinov
added path select...
|
84
85
86
87
88
89
|
self.canvas.select_edges(x)
# for e in x:
# if e in self.canvas.edge_dict:
# print(self.canvas.edge_dict[e])
# elif (e[1], e[0]) in self.canvas.edge_dict:
# print(self.canvas.edge_dict[(e[1], e[0])])
|
6aca1767
Pavel Govyadinov
Added a signal to...
|
90
|
print("got signal", x)
|
9f9f1788
Pavel Govyadinov
clead up version ...
|
91
|
|
6aca1767
Pavel Govyadinov
Added a signal to...
|
92
93
94
95
96
97
|
"""
Initialization method that connects the slot to the function that handles
the information being sent.
"""
def connect(self, signal_object):
signal_object.select.connect(self.select)
|
193cb4c6
Pavel Govyadinov
need this to test
|
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
def save_stl_mesh(self):
triangles = self.canvas.triangle_data
caps = self.canvas.cap_data
points = self.canvas.cylinder_data['a_position']
colors = self.canvas.cylinder_data['a_fg_color']
normals = self.canvas.cylinder_data['a_normal']
mesh = tm.Trimesh(vertices=points, faces=np.append(triangles, caps, axis=0),
vertex_colors=colors, vertex_normals=normals)
mesh.export('with_caps.obj')
mesh.export('with_caps.ply')
|