LibreCAD
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Friends Macros
LinePatternManager Class Reference

Create a new window which shows a list of line patterns. More...

#include <linepatternmanager.h>

Inheritance diagram for LinePatternManager:
Collaboration diagram for LinePatternManager:

Public Member Functions

 LinePatternManager (lc::Document_SPtr document, QWidget *parent=0)
 Create window. More...
 
 ~LinePatternManager ()
 
void setDocument (lc::Document_SPtr document)
 Set a new document and update the list of line patterns. Document can be set to nullptr to clear the list. More...
 

Private Slots

void on_editButton_pressed ()
 Create update dialog. This function is called when "Edit" button is pressed. It create a new dialog pre-filled with the line pattern information. More...
 
void on_newButton_pressed ()
 Create new line pattern dialog. It create a new dialog to create a line pattern. This function is called when "New" button is pressed. More...
 
void on_lpView_doubleClicked (const QModelIndex &index)
 Create update dialog. It create a new dialog pre-filled with the line pattern information. This function is called when an element of the list is double clicked. More...
 

Private Member Functions

void updateModel ()
 Refresh line patterns list. More...
 
void on_addLinePatternEvent (const lc::AddLinePatternEvent &)
 
void on_removeLinePatternEvent (const lc::RemoveLinePatternEvent &)
 
void on_replaceLinePatternEvent (const lc::ReplaceLinePatternEvent &)
 

Private Attributes

Ui::LinePatternManager * ui
 
lc::Document_SPtr _document
 
LinePatternModel_model
 

Detailed Description

Create a new window which shows a list of line patterns.

Definition at line 17 of file linepatternmanager.h.

Constructor & Destructor Documentation

LinePatternManager::LinePatternManager ( lc::Document_SPtr  document,
QWidget *  parent = 0 
)

Create window.

Parameters
documentDocument which contains the DXFLinePatterns
parentParent widget

Definition at line 4 of file linepatternmanager.cpp.

4  :
5  QDialog(parent),
6  ui(new Ui::LinePatternManager),
7  _model(new LinePatternModel(this)) {
8 
9  ui->setupUi(this);
10 
11  setDocument(document);
12 
13  ui->lpView->setModel(_model);
14  ui->lpView->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
15  ui->lpView->horizontalHeader()->setSectionResizeMode(LinePatternModel::NAME, QHeaderView::Stretch);
16 
17  show();
18 }
Ui::LinePatternManager * ui
Model to display a list of DxfLinePatterns in a QTableView. Show preview, name and description...
void setDocument(lc::Document_SPtr document)
Set a new document and update the list of line patterns. Document can be set to nullptr to clear the ...
LinePatternModel * _model
LinePatternManager::~LinePatternManager ( )

Definition at line 20 of file linepatternmanager.cpp.

20  {
21  delete ui;
22  delete _model;
23 }
Ui::LinePatternManager * ui
LinePatternModel * _model

Member Function Documentation

void LinePatternManager::on_addLinePatternEvent ( const lc::AddLinePatternEvent &  )
private

Definition at line 82 of file linepatternmanager.cpp.

82  {
83  updateModel();
84 }
void updateModel()
Refresh line patterns list.
void LinePatternManager::on_editButton_pressed ( )
privateslot

Create update dialog. This function is called when "Edit" button is pressed. It create a new dialog pre-filled with the line pattern information.

Definition at line 43 of file linepatternmanager.cpp.

43  {
44  QItemSelectionModel* select = ui->lpView->selectionModel();
45  if(!select->hasSelection()) {
46  return;
47  }
48 
49  auto row = select->selectedRows().first().row();
50  auto linePattern = std::dynamic_pointer_cast<const lc::DxfLinePatternByValue>(_model->linePatternAt(row));
51  if(linePattern == nullptr) {
52  return;
53  }
54 
55  auto dialog = new AddLinePatternDialog(_document, linePattern, this);
56  dialog->show();
57 }
lc::Document_SPtr _document
Ui::LinePatternManager * ui
Create a dialog with all required fields to create a new line pattern.
lc::DxfLinePattern_CSPtr linePatternAt(const int index) const
Return line pattern at specific row.
LinePatternModel * _model
void LinePatternManager::on_lpView_doubleClicked ( const QModelIndex &  index)
privateslot

Create update dialog. It create a new dialog pre-filled with the line pattern information. This function is called when an element of the list is double clicked.

Definition at line 64 of file linepatternmanager.cpp.

64  {
65  if(!index.isValid()) {
66  return;
67  }
68 
69  auto linePattern = std::dynamic_pointer_cast<const lc::DxfLinePatternByValue>(_model->linePatternAt(index.row()));
70  if(!linePattern) {
71  return;
72  }
73 
74  auto dialog = new AddLinePatternDialog(_document, linePattern, this);
75  dialog->show();
76 }
lc::Document_SPtr _document
Create a dialog with all required fields to create a new line pattern.
lc::DxfLinePattern_CSPtr linePatternAt(const int index) const
Return line pattern at specific row.
LinePatternModel * _model
void LinePatternManager::on_newButton_pressed ( )
privateslot

Create new line pattern dialog. It create a new dialog to create a line pattern. This function is called when "New" button is pressed.

Definition at line 59 of file linepatternmanager.cpp.

59  {
60  auto dialog = new AddLinePatternDialog(_document, this);
61  dialog->show();
62 }
lc::Document_SPtr _document
Create a dialog with all required fields to create a new line pattern.
void LinePatternManager::on_removeLinePatternEvent ( const lc::RemoveLinePatternEvent &  )
private

Definition at line 86 of file linepatternmanager.cpp.

86  {
87  updateModel();
88 }
void updateModel()
Refresh line patterns list.
void LinePatternManager::on_replaceLinePatternEvent ( const lc::ReplaceLinePatternEvent &  )
private

Definition at line 90 of file linepatternmanager.cpp.

90  {
91  updateModel();
92 }
void updateModel()
Refresh line patterns list.
void LinePatternManager::setDocument ( lc::Document_SPtr  document)

Set a new document and update the list of line patterns. Document can be set to nullptr to clear the list.

Parameters
documentDocument or nullptr

Definition at line 25 of file linepatternmanager.cpp.

25  {
26  if(_document != nullptr) {
27  _document->addLinePatternEvent().disconnect<LinePatternManager, &LinePatternManager::on_addLinePatternEvent>(this);
28  _document->removeLinePatternEvent().disconnect<LinePatternManager, &LinePatternManager::on_removeLinePatternEvent>(this);
29  _document->replaceLinePatternEvent().disconnect<LinePatternManager, &LinePatternManager::on_replaceLinePatternEvent>(this);
30  }
31 
32  _document = document;
33 
34  if(_document != nullptr) {
35  _document->addLinePatternEvent().connect<LinePatternManager, &LinePatternManager::on_addLinePatternEvent>(this);
36  _document->removeLinePatternEvent().connect<LinePatternManager, &LinePatternManager::on_removeLinePatternEvent>(this);
37  _document->replaceLinePatternEvent().connect<LinePatternManager, &LinePatternManager::on_replaceLinePatternEvent>(this);
38  }
39 
40  updateModel();
41 }
lc::Document_SPtr _document
LinePatternManager(lc::Document_SPtr document, QWidget *parent=0)
Create window.
void on_removeLinePatternEvent(const lc::RemoveLinePatternEvent &)
void on_addLinePatternEvent(const lc::AddLinePatternEvent &)
void on_replaceLinePatternEvent(const lc::ReplaceLinePatternEvent &)
void updateModel()
Refresh line patterns list.
void LinePatternManager::updateModel ( )
private

Refresh line patterns list.

Definition at line 78 of file linepatternmanager.cpp.

78  {
79  _model->setLinePatterns(_document->linePatterns());
80 }
lc::Document_SPtr _document
void setLinePatterns(std::vector< lc::DxfLinePatternByValue_CSPtr > linePatterns)
Set the new list of line patterns.
LinePatternModel * _model

Member Data Documentation

lc::Document_SPtr LinePatternManager::_document
private

Definition at line 64 of file linepatternmanager.h.

LinePatternModel* LinePatternManager::_model
private

Definition at line 65 of file linepatternmanager.h.

Ui::LinePatternManager* LinePatternManager::ui
private

Definition at line 63 of file linepatternmanager.h.


The documentation for this class was generated from the following files: