structurelibraryview.hpp 1.92 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

#include "structure.hpp"
19
#include "alphabet.hpp"
20
21
22
23
24

namespace Ui {
class StructureLibraryView;
}

25
26
//! \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.
27
28
29
30
31
class StructureLibraryView : public QFrame
{
    Q_OBJECT

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

36
37
38
39
    //! \brief Spécifie l'alphabet à utiliser pour les couleurs de la preview
    void set_alphabet(const Alphabet& alph)
    { m_alph = alph; }

40
signals:
41
42
    //! \brief Signal émis lorsqu'une structure de la bibliothèque est copiée.
    //! \param s La structure copiée.
43
44
    void structure_copied(const Structure& s);

45
public slots:
46
47
    //! \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.
48
49
    void update_cell_pixel_size(unsigned size);

50
51
52
private:
    void load_structures();
    QTreeWidgetItem *add_directory_contents(const QDir& dir);
53
    bool try_load_structure(const QString& filename, Structure& s);
Yann Boucher's avatar
Yann Boucher committed
54
    void update_preview(const Structure& s);
55
    QImage create_preview_image(const Structure &s, bool transparent);
56
    void create_drag(QTreeWidgetItem* item, int column);
57
58
59
60
61
62
63

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

private:
    Ui::StructureLibraryView *ui;
64
    QFileSystemWatcher m_watcher;
65
    unsigned m_cell_pixel_size;
66
    Alphabet m_alph;
67
68
69
};

#endif // STRUCTURELIBRARYVIEW_HPP