Kill a few bugs on HWCODEC
[kugel-rb.git] / utils / themeeditor / gui / editorwindow.h
blobbd71c9a5dc77d512569d1621d707477ecff27d64
1 /***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
10 * Copyright (C) 2010 Robert Bieber
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied.
20 ****************************************************************************/
22 #ifndef EDITORWINDOW_H
23 #define EDITORWINDOW_H
25 #include <QMainWindow>
26 #include <QLabel>
27 #include <QItemSelectionModel>
28 #include <QDockWidget>
30 #include "parsetreemodel.h"
31 #include "skinhighlighter.h"
32 #include "skindocument.h"
33 #include "configdocument.h"
34 #include "preferencesdialog.h"
35 #include "skinviewer.h"
36 #include "devicestate.h"
37 #include "skintimer.h"
38 #include "targetdata.h"
40 class ProjectModel;
41 class TabContent;
43 namespace Ui
45 class EditorWindow;
48 class EditorWindow : public QMainWindow
50 Q_OBJECT
51 public:
52 static const int numRecent;
54 EditorWindow(QWidget *parent = 0);
55 virtual ~EditorWindow();
57 /* A public function so external widgets can load files */
58 void loadTabFromSkinFile(QString fileName);
59 void loadConfigTab(ConfigDocument* doc);
61 protected:
62 virtual void closeEvent(QCloseEvent* event);
64 public slots:
65 void configFileChanged(QString configFile);
67 private slots:
68 void showPanel();
69 void newTab();
70 void newProject();
71 void shiftTab(int index);
72 bool closeTab(int index);
73 void closeCurrent();
74 void closeProject();
75 void saveCurrent();
76 void saveCurrentAs();
77 void exportProject();
78 void openFile();
79 void openProject();
80 void openRecentFile();
81 void openRecentProject();
82 void tabTitleChanged(QString title);
83 void updateCurrent(); /* Generates code in the current tab */
84 void lineChanged(int line); /* Used for auto-expand */
85 void undo();
86 void redo();
87 void cut();
88 void copy();
89 void paste();
90 void findReplace();
92 private:
93 /* Setup functions */
94 void loadSettings();
95 void saveSettings();
96 void setupUI();
97 void setupMenus();
99 void addTab(TabContent* doc);
100 void expandLine(ParseTreeModel* model, QModelIndex parent, int line,
101 bool highlight);
102 void sizeColumns();
104 void loadProjectFile(QString fileName);
105 static void createFile(QString filename, QString contents);
107 /* Functions to manipulate the recent projects/documents menus */
108 void docToTop(QString file);
109 void projectToTop(QString file);
110 void refreshRecentMenus();
112 Ui::EditorWindow *ui;
113 PreferencesDialog* prefs;
114 QLabel* parseStatus;
115 ProjectModel* project;
116 QItemSelectionModel* parseTreeSelection;
117 SkinViewer* viewer;
118 DeviceState* deviceConfig;
119 QDockWidget* deviceDock;
120 SkinTimer* timer;
121 QDockWidget* timerDock;
123 QStringList recentDocs;
124 QStringList recentProjects;
125 QList<QAction*> recentDocsMenu;
126 QList<QAction*> recentProjectsMenu;
129 #endif // EDITORWINDOW_H