structurelibraryview.hpp 1.73 KB
Newer Older
1
2
3
4
5
6
7
8
/**
\file structurelibraryview.hpp
\author Yann Boucher
\version 1
\brief StructureLibraryView

Widget de la bibliothèque de structures.
        **/
9
10
11
12
13
14
15
#ifndef STRUCTURELIBRARYVIEW_HPP
#define STRUCTURELIBRARYVIEW_HPP

#include <QFrame>

#include <QDir>
#include <QTreeWidgetItem>
16
#include <QFileSystemWatcher>
17
18
19
20
21
22
23

#include "structure.hpp"

namespace Ui {
class StructureLibraryView;
}

24
25
//! \brief Widget de la bibliothèque de structures.
//! Ce widget représente la bibliothèque de structure, ses contrôles et l'affichage des données ex. description et titre.
26
27
28
29
30
class StructureLibraryView : public QFrame
{
    Q_OBJECT

public:
31
    //! \brief Construit le widhet à partir du parent.
32
33
34
35
    explicit StructureLibraryView(QWidget *parent = nullptr);
    ~StructureLibraryView();

signals:
36
37
    //! \brief Signal émis lorsqu'une structure de la bibliothèque est copiée.
    //! \param s La structure copiée.
38
39
    void structure_copied(const Structure& s);

40
public slots:
41
42
    //! \brief Permet de mettre à jour la taille en pixels d'une cellule, pour que l'affichage d'un drag&drop soit correct
    //! \param size Côté en pixels.
43
44
    void update_cell_pixel_size(unsigned size);

45
46
47
private:
    void load_structures();
    QTreeWidgetItem *add_directory_contents(const QDir& dir);
48
    bool try_load_structure(const QString& filename, Structure& s);
Yann Boucher's avatar
Yann Boucher committed
49
    void update_preview(const Structure& s);
50
51
    QImage create_preview_image(const Structure &s, QColor background);
    void create_drag(QTreeWidgetItem* item, int column);
52
53
54
55
56
57
58

private slots:
    void update_info(QTreeWidgetItem* item, int column);
    void copy_button_clicked();

private:
    Ui::StructureLibraryView *ui;
59
    QFileSystemWatcher m_watcher;
60
    unsigned m_cell_pixel_size;
61
62
63
};

#endif // STRUCTURELIBRARYVIEW_HPP