--User changes

-Add variations filter/selection dialog.

--Bug fixes
 -Fix summary window not properly indicating the presence of pose affine.
 -Remove a file named Fractorium.aps which had been erroneously committed a year ago.

--Code changes
 -Use qobject_cast instead of dynamic_cast where appropriate.
 -Add more override keyword where appropriate.
 -Add variations list to settings for filter dialog.
This commit is contained in:
mfeemster
2015-07-23 18:16:36 -07:00
parent 2019dcb605
commit e16c6a825f
25 changed files with 668 additions and 38 deletions

View File

@ -0,0 +1,47 @@
#pragma once
#include "ui_VariationsDialog.h"
#include "FractoriumSettings.h"
/// <summary>
/// FractoriumVariationsDialog class.
/// </summary>
/// <summary>
/// The variations filter dialog displays several columns
/// with the different types of variations shown as checkboxes.
/// This is used to filter the variations that are shown in the main window
/// because the list is very long.
/// The results are stored in a map and returned.
/// These are used in conjunction with the filter edit box to filter what's shown.
/// </summary>
class FractoriumVariationsDialog : public QDialog
{
Q_OBJECT
public:
FractoriumVariationsDialog(FractoriumSettings* settings, QWidget* p = nullptr, Qt::WindowFlags f = nullptr);
const QMap<QString, QVariant>& Map();
void ForEachCell(std::function<void(QTableWidgetItem* cb)> func);
void ForEachSelectedCell(std::function<void(QTableWidgetItem* cb)> func);
void SyncSettings();
public slots:
void OnSelectAllButtonClicked(bool checked);
void OnInvertSelectionButtonClicked(bool checked);
void OnSelectNoneButtonClicked(bool checked);
void Accept();
void OnVariationsTableItemChanged(QTableWidgetItem* item);
protected:
virtual void showEvent(QShowEvent* e) override;
private:
void MapToCheckBoxes();
void CheckBoxesToMap();
void Populate();
void SetCheckFromMap(QTableWidgetItem* cb, const Variation<float>* var);
VariationList<float> m_VariationList;
QMap<QString, QVariant> m_Vars;
FractoriumSettings* m_Settings;
Ui::VariationsDialog ui;
};