Shinya Kitaoka 810553
#pragma once
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#ifndef SHORTCUTPOPUP_H
Toshihiro Shimizu 890ddd
#define SHORTCUTPOPUP_H
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#include <qdialog></qdialog>
Toshihiro Shimizu 890ddd
#include <qtreewidget></qtreewidget>
Jeremy Bullock e8903b
#include <qcombobox></qcombobox>
shun-iwasawa 83baef
#include <qkeysequenceedit></qkeysequenceedit>
Jeremy Bullock e8903b
#include "filebrowserpopup.h"
Toshihiro Shimizu 890ddd
#include "toonzqt/dvdialog.h"
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
// forward declaration
Toshihiro Shimizu 890ddd
class QPushButton;
Toshihiro Shimizu 890ddd
class ShortcutItem;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
// ShortcutViewer
Toshihiro Shimizu 890ddd
// --------------
Toshihiro Shimizu 890ddd
// E' l'editor dello shortcut associato all'azione corrente
Toshihiro Shimizu 890ddd
// Visualizza lo shortcut e permette di cambiarlo digitando direttamente
Toshihiro Shimizu 890ddd
// la nuova sequenza di tasti
Toshihiro Shimizu 890ddd
// Per cancellarlo bisogna chiamare removeShortcut()
Toshihiro Shimizu 890ddd
//-----------------------------------------------------------------------------
Toshihiro Shimizu 890ddd
shun-iwasawa 83baef
class ShortcutViewer final : public QKeySequenceEdit {
Shinya Kitaoka 120a6e
  Q_OBJECT
Shinya Kitaoka 120a6e
  QAction *m_action;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  ShortcutViewer(QWidget *parent);
Shinya Kitaoka 120a6e
  ~ShortcutViewer();
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected:
Shinya Kitaoka 473e70
  void enterEvent(QEvent *event) override;
Shinya Kitaoka 473e70
  void leaveEvent(QEvent *event) override;
shun-iwasawa 83baef
  void keyPressEvent(QKeyEvent *event) override;
Toshihiro Shimizu 890ddd
public slots:
Shinya Kitaoka 120a6e
  void setAction(QAction *action);
Shinya Kitaoka 120a6e
  void removeShortcut();
shun-iwasawa 83baef
  void onEditingFinished();
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
signals:
Shinya Kitaoka 120a6e
  void shortcutChanged();
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
// ShortcutTree
Toshihiro Shimizu 890ddd
// ------------
Toshihiro Shimizu 890ddd
// Visualizza tutti le QAction (con gli eventuali shortcut assegnati)
Toshihiro Shimizu 890ddd
// Serve per selezionare la QAction corrente
Toshihiro Shimizu 890ddd
//-----------------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Shinya Kitaoka d1f6c4
class ShortcutTree final : public QTreeWidget {
Shinya Kitaoka 120a6e
  Q_OBJECT
Shinya Kitaoka 120a6e
  std::vector<shortcutitem *=""> m_items;</shortcutitem>
shun_iwasawa 4343e7
  std::vector<qtreewidgetitem *=""> m_folders;</qtreewidgetitem>
shun_iwasawa 4343e7
  std::vector<qtreewidgetitem *=""> m_subFolders;</qtreewidgetitem>
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  ShortcutTree(QWidget *parent = 0);
Shinya Kitaoka 120a6e
  ~ShortcutTree();
Toshihiro Shimizu 890ddd
Shinya Kitaoka 2a7129
  void searchItems(const QString &searchWord = QString());
Shinya Kitaoka 2a7129
Toshihiro Shimizu 890ddd
protected:
Shinya Kitaoka 120a6e
  // aggiunge un blocco di QAction. commandType e' un
Shinya Kitaoka 120a6e
  // CommandType::MenubarCommandType
Shinya Kitaoka 2a7129
  void addFolder(const QString &title, int commandType,
Shinya Kitaoka 120a6e
                 QTreeWidgetItem *folder = 0);
Shinya Kitaoka 2a7129
shun_iwasawa 4343e7
  void resizeEvent(QResizeEvent *event);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public slots:
Shinya Kitaoka 120a6e
  void onCurrentItemChanged(QTreeWidgetItem *current,
Shinya Kitaoka 120a6e
                            QTreeWidgetItem *previous);
Shinya Kitaoka 120a6e
  void onShortcutChanged();
Toshihiro Shimizu 890ddd
shun-iwasawa 750e14
  void onItemClicked(const QModelIndex &);
shun-iwasawa 750e14
Toshihiro Shimizu 890ddd
signals:
Shinya Kitaoka 120a6e
  void actionSelected(QAction *);
shun_iwasawa 4343e7
  void searched(bool haveResult);
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
// ShortcutPopup
Toshihiro Shimizu 890ddd
// -------------
Toshihiro Shimizu 890ddd
// Questo e' il popup che l'utente utilizza per modificare gli shortcut
Toshihiro Shimizu 890ddd
//-----------------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Shinya Kitaoka d1f6c4
class ShortcutPopup final : public DVGui::Dialog {
Shinya Kitaoka 120a6e
  Q_OBJECT
Shinya Kitaoka 120a6e
  QPushButton *m_removeBtn;
Shinya Kitaoka 120a6e
  ShortcutViewer *m_sViewer;
Shinya Kitaoka 120a6e
  ShortcutTree *m_list;
Jeremy Bullock e8903b
  QComboBox *m_presetChoiceCB;
Jeremy Bullock e8903b
  DVGui::Dialog *m_dialog;
Jeremy Bullock e8903b
  GenericLoadFilePopup *m_loadShortcutsPopup;
Jeremy Bullock e8903b
  GenericSaveFilePopup *m_saveShortcutsPopup;
Jeremy Bullock e8903b
  QPushButton *m_exportButton;
Jeremy Bullock e8903b
  QPushButton *m_deletePresetButton;
Jeremy Bullock e8903b
  QPushButton *m_savePresetButton;
Jeremy Bullock e8903b
  QPushButton *m_loadPresetButton;
Jeremy Bullock e8903b
  QPushButton *m_clearAllShortcutsButton;
Jeremy Bullock e8903b
  QLabel *m_dialogLabel;
Shinya Kitaoka 2a7129
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  ShortcutPopup();
Shinya Kitaoka 120a6e
  ~ShortcutPopup();
shun_iwasawa 4343e7
Jeremy Bullock e8903b
private:
Jeremy Bullock e8903b
  void setPresetShortcuts(TFilePath fp);
Jeremy Bullock e8903b
  void showDialog(QString text);
Jeremy Bullock e8903b
  bool showConfirmDialog();
Jeremy Bullock e8903b
  bool showOverwriteDialog(QString name);
Jeremy Bullock e8903b
  void importPreset();
shun-iwasawa 7e230a
  void buildPresets();
Jeremy Bullock e8903b
  void showEvent(QShowEvent *se) override;
Jeremy Bullock e8903b
  void setCurrentPresetPref(QString preset);
Jeremy Bullock e8903b
  void getCurrentPresetPref();
Jeremy Bullock e8903b
shun_iwasawa 4343e7
protected slots:
Jeremy Bullock e8903b
  void clearAllShortcuts(bool warning = true);
shun_iwasawa 4343e7
  void onSearchTextChanged(const QString &text);
shun-iwasawa 7e230a
  void onPresetChanged();
Jeremy Bullock e8903b
  void onExportButton(TFilePath fp = TFilePath());
Jeremy Bullock e8903b
  void onDeletePreset();
Jeremy Bullock e8903b
  void onSavePreset();
Jeremy Bullock e8903b
  void onLoadPreset();
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
#endif  //  SHORTCUTPOPUP_H