Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
S
soitool
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
bachelor-paa-bittet
soitool
Commits
4f3fe21b
Commit
4f3fe21b
authored
4 years ago
by
morkolai
Browse files
Options
Downloads
Patches
Plain Diff
#96 Dokumentasjon
parent
791ac4ca
No related branches found
Branches containing commit
No related tags found
1 merge request
!57
#96 Telefonliste & Fiks til høyde på tabeller (rundt oppløsning)
Pipeline
#83387
failed
4 years ago
Stage: lint
Stage: test
Stage: deploy
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
soitool/modules/module_phonebook.py
+103
-24
103 additions, 24 deletions
soitool/modules/module_phonebook.py
with
103 additions
and
24 deletions
soitool/modules/module_phonebook.py
+
103
−
24
View file @
4f3fe21b
...
...
@@ -20,38 +20,59 @@ from soitool.modules.module_base import (
class
ComponentsChoicePopup
(
QDialog
):
def
__init__
(
self
,
table_columns
):
def
__init__
(
self
,
selected_columns
):
"""
A popup for selecting wich columns to hide/show in phonebook.
Parameters
----------
QDialog : QDialog
Parent class for popup functionality.
selected_columns : dict
Table structure for columns to show/hide.
"""
super
().
__init__
()
self
.
table_columns
=
table_columns
self
.
selected_columns
=
selected_columns
self
.
setWindowTitle
(
"
Kolonner
"
)
# Layout
layout
=
QVBoxLayout
()
for
header
in
self
.
table_columns
.
keys
():
# Checkboxes
for
header
in
self
.
selected_columns
.
keys
():
box
=
QCheckBox
(
header
)
box
.
setChecked
(
self
.
table
_columns
[
header
])
box
.
setChecked
(
self
.
selected
_columns
[
header
])
layout
.
addWidget
(
box
)
# Button
btn_done
=
QPushButton
(
"
Bruk
"
)
btn_done
.
clicked
.
connect
(
lambda
:
self
.
update_
table
_columns
(
layout
))
btn_done
.
clicked
.
connect
(
lambda
:
self
.
update_
selected
_columns
(
layout
))
layout
.
addWidget
(
btn_done
)
self
.
setLayout
(
layout
)
def
update_table_columns
(
self
,
layout
):
def
update_selected_columns
(
self
,
layout
):
"""
Update the dict for columns to hide/show based on checkboxes.
Parameters
----------
layout : QLayout
Layout with checkboxes to loop trough.
"""
for
item_index
in
range
(
layout
.
count
()):
item
=
layout
.
itemAt
(
item_index
).
widget
()
if
isinstance
(
item
,
QCheckBox
):
self
.
table
_columns
[
item
.
text
()]
=
item
.
isChecked
()
self
.
selected
_columns
[
item
.
text
()]
=
item
.
isChecked
()
self
.
accept
()
def
get_table_columns
(
self
):
return
self
.
table_columns
def
get_selected_columns
(
self
):
"""
Getter for the table structure.
Returns
-------
dict
The table structure.
"""
return
self
.
selected_columns
class
Meta
(
type
(
ModuleBase
),
type
(
QWidget
)):
...
...
@@ -60,12 +81,13 @@ class Meta(type(ModuleBase), type(QWidget)):
class
PhonebookModule
(
ModuleBase
,
QWidget
,
metaclass
=
Meta
):
def
__init__
(
self
):
"""
Phonebook.
"""
self
.
type
=
"
Telefonliste
"
QWidget
.
__init__
(
self
)
ModuleBase
.
__init__
(
self
)
self
.
table_columns
=
{
# Table structure
self
.
selected_columns
=
{
"
Funksjon
"
:
True
,
"
Telefon
"
:
True
,
"
FDN
"
:
False
,
...
...
@@ -99,9 +121,14 @@ class PhonebookModule(ModuleBase, QWidget, metaclass=Meta):
# !!!!! CREATE MAIN COMPONENTS !!!!!!
def
__create_table
(
self
):
table
=
QTableWidget
(
2
,
len
(
self
.
table_columns
))
"""
The actual phonebook table.
Returns
-------
QTableWidget
The phonebook table.
"""
table
=
QTableWidget
(
2
,
len
(
self
.
selected_columns
))
table
.
setHorizontalScrollBarPolicy
(
Qt
.
ScrollBarAlwaysOff
)
table
.
setVerticalScrollBarPolicy
(
Qt
.
ScrollBarAlwaysOff
)
table
.
horizontalHeader
().
hide
()
...
...
@@ -109,7 +136,7 @@ class PhonebookModule(ModuleBase, QWidget, metaclass=Meta):
# Headers - setup
column_index
=
0
for
header
in
self
.
table
_columns
.
keys
():
for
header
in
self
.
selected
_columns
.
keys
():
header_item
=
QTableWidgetItem
(
header
)
header_item
.
setFont
(
HEADLINE_FONT
)
header_item
.
setFlags
(
header_item
.
flags
()
^
Qt
.
ItemIsEditable
)
...
...
@@ -123,20 +150,30 @@ class PhonebookModule(ModuleBase, QWidget, metaclass=Meta):
return
table
def
__creat_buttons
(
self
):
"""
Buttons for editing phonebook table.
Returns
-------
QWidget
Widget holding a layout with buttons.
"""
# Button for editing columns
btn_components
=
QPushButton
(
"
Kolonner
"
,
self
)
btn_components
.
clicked
.
connect
(
lambda
:
self
.
open_popup
())
btn_components
.
setShortcut
(
QKeySequence
(
Qt
.
CTRL
+
Qt
.
Key_K
))
btn_components
.
setFixedWidth
(
100
)
# Buttons for adding row
btn_add
=
QPushButton
(
"
+
"
,
self
)
btn_add
.
clicked
.
connect
(
lambda
:
self
.
add_row
())
btn_add
.
setFixedWidth
(
50
)
# Buttons for removing row
btn_remove
=
QPushButton
(
"
-
"
,
self
)
btn_remove
.
clicked
.
connect
(
lambda
:
self
.
remove_row
())
btn_remove
.
setFixedWidth
(
50
)
# Layout for structure
hbox
=
QHBoxLayout
()
hbox
.
setSpacing
(
0
)
hbox
.
setSpacing
(
0
)
...
...
@@ -144,6 +181,7 @@ class PhonebookModule(ModuleBase, QWidget, metaclass=Meta):
hbox
.
addWidget
(
btn_add
)
hbox
.
addWidget
(
btn_remove
)
# Widget wrapping buttons
wrapper
=
QWidget
()
wrapper
.
setFixedSize
(
QSize
(
230
,
50
))
wrapper
.
setLayout
(
hbox
)
...
...
@@ -154,15 +192,35 @@ class PhonebookModule(ModuleBase, QWidget, metaclass=Meta):
# !!!!! EVENT HADNDLERS !!!!!
def
enterEvent
(
self
,
event
):
"""
Eventhandler for showing buttons when mous enters widgets space.
Parameters
----------
event : enterEvent
Called when mouse enters widgets space.
"""
self
.
buttons
.
show
()
self
.
resize
()
def
leaveEvent
(
self
,
event
):
"""
Eventhandler for hiding buttons when mouse leaves widgets space.
Parameters
----------
event : enterEvent
Called when mosue leaves widgets space.
"""
self
.
buttons
.
hide
()
self
.
resize
()
def
keyPressEvent
(
self
,
event
):
"""
Keyboard shortcuts for adding and removing rows.
Parameters
----------
event : keyPressEvent
Called when keys are pressed.
"""
ctrl
=
event
.
modifiers
()
==
Qt
.
ControlModifier
if
ctrl
and
event
.
key
()
==
Qt
.
Key_Plus
:
...
...
@@ -175,24 +233,43 @@ class PhonebookModule(ModuleBase, QWidget, metaclass=Meta):
# !!!!! TABLE OPERATIONS !!!!!
def
add_row
(
self
):
"""
Add row to phonebook table.
"""
self
.
table
.
insertRow
(
self
.
table
.
currentRow
()
+
1
)
self
.
resize
()
def
remove_row
(
self
):
"""
Remove row for phonebook table.
"""
if
self
.
table
.
currentRow
()
>
0
:
self
.
table
.
removeRow
(
self
.
table
.
currentRow
())
self
.
resize
()
def
set_columns
(
self
):
for
header
in
self
.
table_columns
.
keys
():
"""
Update table columns visibility based on selected_columns.
"""
for
header
in
self
.
selected_columns
.
keys
():
self
.
table
.
setColumnHidden
(
self
.
get_column_index_by_header
(
header
),
not
(
self
.
table
_columns
[
header
]),
not
(
self
.
selected
_columns
[
header
]),
)
self
.
resize
()
def
get_column_index_by_header
(
self
,
header
):
"""
Get index for column containing a spesific header.
Parameters
----------
header : string
The header to search for.
Returns
-------
int
The column index for where the header was found.
Raises
------
LookupError
Unable to find header in table headers.
"""
for
column_index
in
range
(
self
.
table
.
columnCount
()):
self
.
table
.
setCurrentCell
(
0
,
column_index
)
if
self
.
table
.
currentItem
().
text
()
==
header
:
...
...
@@ -203,6 +280,7 @@ class PhonebookModule(ModuleBase, QWidget, metaclass=Meta):
# !!!!! MODULE OPERATIONs !!!!!
def
resize
(
self
):
"""
Resize whole module based on content.
"""
resize_table
(
self
.
table
)
width
=
max
(
get_table_size
(
self
.
table
)[
0
],
self
.
header
.
minimumWidth
())
...
...
@@ -216,9 +294,10 @@ class PhonebookModule(ModuleBase, QWidget, metaclass=Meta):
self
.
setFixedSize
(
QSize
(
width
,
height
))
def
open_popup
(
self
):
popup
=
ComponentsChoicePopup
(
self
.
table_columns
)
"""
Open dialog for editing columns.
"""
popup
=
ComponentsChoicePopup
(
self
.
selected_columns
)
popup
.
exec_
()
self
.
table
_columns
=
popup
.
get_
table
_columns
()
self
.
selected
_columns
=
popup
.
get_
selected
_columns
()
self
.
set_columns
()
# !!!!! MODULE BASE OPERATIONS !!!!!
...
...
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