Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
B-ASIC - Better ASIC Toolbox
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Computer Engineering
B-ASIC - Better ASIC Toolbox
Commits
da2f3879
Commit
da2f3879
authored
2 years ago
by
Oscar Gustafsson
Browse files
Options
Downloads
Patches
Plain Diff
Move add_ports logic to drag_button
parent
5e253f97
No related branches found
No related tags found
No related merge requests found
Pipeline
#88156
passed
2 years ago
Stage: test
Changes
2
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
b_asic/GUI/drag_button.py
+39
-6
39 additions, 6 deletions
b_asic/GUI/drag_button.py
b_asic/GUI/main_window.py
+9
-46
9 additions, 46 deletions
b_asic/GUI/main_window.py
with
48 additions
and
52 deletions
b_asic/GUI/drag_button.py
+
39
−
6
View file @
da2f3879
...
@@ -10,9 +10,16 @@ from qtpy.QtCore import QSize, Qt, Signal
...
@@ -10,9 +10,16 @@ from qtpy.QtCore import QSize, Qt, Signal
from
qtpy.QtGui
import
QIcon
from
qtpy.QtGui
import
QIcon
from
qtpy.QtWidgets
import
QAction
,
QMenu
,
QPushButton
from
qtpy.QtWidgets
import
QAction
,
QMenu
,
QPushButton
from
b_asic.GUI.port_button
import
PortButton
from
b_asic.GUI.properties_window
import
PropertiesWindow
from
b_asic.GUI.properties_window
import
PropertiesWindow
from
b_asic.GUI.utils
import
decorate_class
,
handle_error
from
b_asic.GUI.utils
import
decorate_class
,
handle_error
from
b_asic.GUI._preferences
import
GRID
,
MINBUTTONSIZE
,
PORTWIDTH
from
b_asic.GUI._preferences
import
(
GAP
,
GRID
,
MINBUTTONSIZE
,
PORTHEIGHT
,
PORTWIDTH
,
)
from
b_asic.port
import
InputPort
from
b_asic.port
import
InputPort
...
@@ -67,8 +74,8 @@ class DragButton(QPushButton):
...
@@ -67,8 +74,8 @@ class DragButton(QPushButton):
menu
.
exec_
(
self
.
cursor
().
pos
())
menu
.
exec_
(
self
.
cursor
().
pos
())
def
show_properties_window
(
self
,
event
):
def
show_properties_window
(
self
,
event
):
self
.
properties_window
=
PropertiesWindow
(
self
,
self
.
_window
)
self
.
_
properties_window
=
PropertiesWindow
(
self
,
self
.
_window
)
self
.
properties_window
.
show
()
self
.
_
properties_window
.
show
()
def
add_label
(
self
,
label
):
def
add_label
(
self
,
label
):
self
.
label
=
label
self
.
label
=
label
...
@@ -146,9 +153,7 @@ class DragButton(QPushButton):
...
@@ -146,9 +153,7 @@ class DragButton(QPushButton):
path_to_image
=
os
.
path
.
join
(
path_to_image
=
os
.
path
.
join
(
os
.
path
.
dirname
(
__file__
),
os
.
path
.
dirname
(
__file__
),
"
operation_icons
"
,
"
operation_icons
"
,
(
f
"
{
self
.
operation_path_name
}{
'
_grey.png
'
if
self
.
pressed
else
'
.png
'
}
"
,
f
"
{
self
.
operation_path_name
}{
'
_grey.png
'
if
self
.
pressed
else
'
.png
'
}
"
),
)
)
self
.
setIcon
(
QIcon
(
path_to_image
))
self
.
setIcon
(
QIcon
(
path_to_image
))
self
.
setIconSize
(
QSize
(
MINBUTTONSIZE
,
MINBUTTONSIZE
))
self
.
setIconSize
(
QSize
(
MINBUTTONSIZE
,
MINBUTTONSIZE
))
...
@@ -227,3 +232,31 @@ class DragButton(QPushButton):
...
@@ -227,3 +232,31 @@ class DragButton(QPushButton):
if
self
.
operation
in
self
.
_window
.
operationDragDict
:
if
self
.
operation
in
self
.
_window
.
operationDragDict
:
del
self
.
_window
.
operationDragDict
[
self
.
operation
]
del
self
.
_window
.
operationDragDict
[
self
.
operation
]
def
add_ports
(
self
):
def
_determine_port_distance
(
height
,
ports
):
"""
Determine the distance between each port on the side of an operation.
The method returns the distance that each port should have from 0.
"""
return
(
[(
height
-
PORTHEIGHT
)
//
2
]
if
ports
==
1
else
[(
PORTHEIGHT
+
GAP
)
*
i
for
i
in
range
(
ports
)]
)
op
=
self
.
operation
height
=
self
.
height
()
output_ports_dist
=
_determine_port_distance
(
height
,
op
.
output_count
)
input_ports_dist
=
_determine_port_distance
(
height
,
op
.
input_count
)
for
i
,
dist
in
enumerate
(
input_ports_dist
):
port
=
PortButton
(
"
>
"
,
self
,
op
.
input
(
i
),
self
.
_window
)
self
.
ports
.
append
(
port
)
port
.
move
(
0
,
dist
)
port
.
show
()
for
i
,
dist
in
enumerate
(
output_ports_dist
):
port
=
PortButton
(
"
>
"
,
self
,
op
.
output
(
i
),
self
.
_window
)
self
.
ports
.
append
(
port
)
port
.
move
(
MINBUTTONSIZE
-
PORTWIDTH
,
dist
)
port
.
show
()
This diff is collapsed.
Click to expand it.
b_asic/GUI/main_window.py
+
9
−
46
View file @
da2f3879
...
@@ -32,7 +32,6 @@ from b_asic.GUI.about_window import AboutWindow, FaqWindow, KeybindsWindow
...
@@ -32,7 +32,6 @@ from b_asic.GUI.about_window import AboutWindow, FaqWindow, KeybindsWindow
from
b_asic.GUI.arrow
import
Arrow
from
b_asic.GUI.arrow
import
Arrow
from
b_asic.GUI.drag_button
import
DragButton
from
b_asic.GUI.drag_button
import
DragButton
from
b_asic.GUI.gui_interface
import
Ui_main_window
from
b_asic.GUI.gui_interface
import
Ui_main_window
from
b_asic.GUI.port_button
import
PortButton
from
b_asic.GUI.select_sfg_window
import
SelectSFGWindow
from
b_asic.GUI.select_sfg_window
import
SelectSFGWindow
from
b_asic.GUI._preferences
import
(
from
b_asic.GUI._preferences
import
(
GAP
,
GAP
,
...
@@ -452,40 +451,6 @@ class MainWindow(QMainWindow):
...
@@ -452,40 +451,6 @@ class MainWindow(QMainWindow):
self
.
dialog
.
add_sfg_to_dialog
()
self
.
dialog
.
add_sfg_to_dialog
()
self
.
dialog
.
show
()
self
.
dialog
.
show
()
def
_determine_port_distance
(
self
,
height
,
ports
):
"""
Determine the distance between each port on the side of an operation.
The method returns the distance that each port should have from 0.
"""
return
(
[(
height
-
PORTHEIGHT
)
//
2
]
if
ports
==
1
else
[(
PORTHEIGHT
+
GAP
)
*
i
for
i
in
range
(
ports
)]
)
def
add_ports
(
self
,
operation
):
op
=
operation
.
operation
height
=
self
.
_get_button_height
(
op
)
_output_ports_dist
=
self
.
_determine_port_distance
(
height
,
op
.
output_count
)
_input_ports_dist
=
self
.
_determine_port_distance
(
height
,
op
.
input_count
)
self
.
portDict
[
operation
]
=
[]
for
i
,
dist
in
enumerate
(
_input_ports_dist
):
port
=
PortButton
(
"
>
"
,
operation
,
op
.
input
(
i
),
self
)
self
.
portDict
[
operation
].
append
(
port
)
operation
.
ports
.
append
(
port
)
port
.
move
(
0
,
dist
)
port
.
show
()
for
i
,
dist
in
enumerate
(
_output_ports_dist
):
port
=
PortButton
(
"
>
"
,
operation
,
op
.
output
(
i
),
self
)
self
.
portDict
[
operation
].
append
(
port
)
operation
.
ports
.
append
(
port
)
port
.
move
(
MINBUTTONSIZE
-
PORTWIDTH
,
dist
)
port
.
show
()
def
get_operations_from_namespace
(
self
,
namespace
):
def
get_operations_from_namespace
(
self
,
namespace
):
self
.
logger
.
info
(
self
.
logger
.
info
(
f
"
Fetching operations from namespace:
{
namespace
.
__name__
}
.
"
f
"
Fetching operations from namespace:
{
namespace
.
__name__
}
.
"
...
@@ -511,7 +476,7 @@ class MainWindow(QMainWindow):
...
@@ -511,7 +476,7 @@ class MainWindow(QMainWindow):
f
"
Added operations from namespace:
{
namespace
.
__name__
}
.
"
f
"
Added operations from namespace:
{
namespace
.
__name__
}
.
"
)
)
def
add_namespace
(
self
):
def
add_namespace
(
self
,
event
=
None
):
module
,
accepted
=
QFileDialog
().
getOpenFileName
()
module
,
accepted
=
QFileDialog
().
getOpenFileName
()
if
not
accepted
:
if
not
accepted
:
return
return
...
@@ -526,12 +491,6 @@ class MainWindow(QMainWindow):
...
@@ -526,12 +491,6 @@ class MainWindow(QMainWindow):
namespace
,
self
.
ui
.
custom_operations_list
namespace
,
self
.
ui
.
custom_operations_list
)
)
def
_get_button_height
(
self
,
op
):
max_ports
=
max
(
op
.
input_count
,
op
.
output_count
)
return
max
(
MINBUTTONSIZE
,
max_ports
*
PORTHEIGHT
+
(
max_ports
-
1
)
*
GAP
)
def
create_operation
(
self
,
op
,
position
=
None
):
def
create_operation
(
self
,
op
,
position
=
None
):
try
:
try
:
attr_button
=
DragButton
(
attr_button
=
DragButton
(
...
@@ -542,14 +501,18 @@ class MainWindow(QMainWindow):
...
@@ -542,14 +501,18 @@ class MainWindow(QMainWindow):
else
:
else
:
attr_button
.
move
(
*
position
)
attr_button
.
move
(
*
position
)
attr_button
.
setFixedSize
(
max_ports
=
max
(
op
.
input_count
,
op
.
output_count
)
MINBUTTONSIZE
,
self
.
_get_button_height
(
op
)
button_height
=
max
(
MINBUTTONSIZE
,
max_ports
*
PORTHEIGHT
+
(
max_ports
-
1
)
*
GAP
)
)
attr_button
.
setFixedSize
(
MINBUTTONSIZE
,
button_height
)
attr_button
.
setStyleSheet
(
attr_button
.
setStyleSheet
(
"
background-color: white; border-style: solid;
"
"
background-color: white; border-style: solid;
"
"
border-color: black; border-width: 2px
"
"
border-color: black; border-width: 2px
"
)
)
self
.
add_ports
(
attr_button
)
attr_button
.
add_ports
()
self
.
portDict
[
attr_button
]
=
attr_button
.
ports
icon_path
=
os
.
path
.
join
(
icon_path
=
os
.
path
.
join
(
os
.
path
.
dirname
(
__file__
),
os
.
path
.
dirname
(
__file__
),
...
@@ -588,7 +551,7 @@ class MainWindow(QMainWindow):
...
@@ -588,7 +551,7 @@ class MainWindow(QMainWindow):
self
.
dragOperationSceneDict
[
attr_button
]
=
attr_button_scene
self
.
dragOperationSceneDict
[
attr_button
]
=
attr_button_scene
except
Exception
as
e
:
except
Exception
as
e
:
self
.
logger
.
error
(
self
.
logger
.
error
(
f
"
Unexpected error occured while creating operation:
{
e
}
.
"
f
"
Unexpected error occur
r
ed while creating operation:
{
e
}
.
"
)
)
def
_create_operation_item
(
self
,
item
):
def
_create_operation_item
(
self
,
item
):
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment