blob: 520aaa84e3802c5968e5208acf831ec192a44ab4 [file] [log] [blame]
/*
* Copyright 2012 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef SKDEBUGGERUI_H
#define SKDEBUGGERUI_H
#include "SkCanvas.h"
#include "SkDebugCanvas.h"
#include "SkListWidget.h"
#include "SkInspectorWidget.h"
#include "SkCanvasWidget.h"
#include "SkSettingsWidget.h"
#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QHBoxLayout>
#include <QtGui/QHeaderView>
#include <QtGui/QListView>
#include <QtGui/QListWidget>
#include <QtGui/QMainWindow>
#include <QtGui/QStatusBar>
#include <QtGui/QToolBar>
#include <QtGui/QVBoxLayout>
#include <QtGui/QWidget>
#include <QtGui/QMenu>
#include <QtGui/QMenuBar>
#include <vector>
/** \class SkDebuggerGUI
Container for the UI and it's functions.
*/
class SkDebuggerGUI : public QMainWindow {
Q_OBJECT
public:
/**
Constructs the view of the application.
@param parent The parent container of this widget.
*/
SkDebuggerGUI(QWidget *parent = 0);
~SkDebuggerGUI();
private slots:
/**
Toggles breakpoint view in the list widget.
*/
void actionBreakpoints();
/**
Cancels the command filter in the list widget.
*/
void actionCancel();
/**
Applies a visible filter to all drawing commands other than the previous.
*/
void actionCommandFilter();
/**
Closes the application.
*/
void actionClose();
/**
Deletes the command in question.
*/
void actionDelete();
/**
Toggles the visibility of the inspector widget.
*/
void actionInspector();
/**
Plays from the current step to the next breakpoint if it exists, otherwise
executes all remaining draw commands.
*/
void actionPlay();
/**
Resets all deleted commands.
*/
void actionReload();
/**
Rewinds from the current step back to the start of the commands.
*/
void actionRewind();
/**
Toggles the settings widget visibility.
*/
void actionSettings();
/**
Steps forward to the next draw command.
*/
void actionStepBack();
/**
Steps backwards to the next draw command.
*/
void actionStepForward();
/**
Loads an skpicture selected from the directory.
*/
void loadFile(QListWidgetItem *item);
/**
Toggles a dialog with a file browser for navigating to a skpicture. Loads
the seleced file.
*/
void openFile();
/**
Executes draw commands up to the selected command
*/
void registerListClick(QListWidgetItem *item);
/**
Toggles a breakpoint on the current step in the list widget.
*/
void toggleBreakpoint();
/**
Toggles the visibility of the directory widget.
*/
void toggleDirectory();
/**
Filters the list widgets command visibility based on the currently
active selection.
*/
void toggleFilter(QString string);
private:
QAction* fActionOpen;
QAction* fActionDirectory;
QAction* fActionRewind;
QAction* fActionStepBack;
QAction* fActionStepForward;
QAction* fActionPlay;
QAction* fActionBreakpoint;
QAction* fActionInspector;
QAction* fActionDelete;
QAction* fActionReload;
QAction* fActionClose;
QAction* fActionSettings;
QComboBox* fFilter;
QAction* fActionCancel;
QWidget* fCentralWidget;
QHBoxLayout* fHorizontalLayout;
QHBoxLayout* fHorizontalLayout_2;
QVBoxLayout* fVerticalLayout;
QVBoxLayout* fVerticalLayout_2;
QListWidget* fListWidget;
QListWidget* fDirectoryWidget;
QListView* fListView;
QStatusBar* fStatusBar;
QToolBar* fToolBar;
SkCanvasWidget* fCanvasWidget;
SkInspectorWidget* fInspectorWidget;
SkSettingsWidget* fSettingsWidget;
QDir* fDir;
QString fPath;
bool fDirectoryWidgetActive;
QMenuBar* fMenuBar;
QMenu* fMenuFile;
QAction* fActionQuit;
QAction* fActionTemp;
QMenu* fMenuView;
QAction* fActionToggleCurrentCommand;
QMenu* fMenuNavigate;
QAction *fActionGoToLine;
bool fBreakpointsActivated;
/**
Creates the entire UI.
*/
void setupUi(QMainWindow *SkDebuggerGUI);
/**
Placeholder function for executing new commands on window translate
and resize.
*/
void retranslateUi(QMainWindow *SkDebuggerGUI);
/**
Pipes a QString in with the location of the filename, proceeds to updating
the listwidget, combowidget and inspectorwidget.
*/
void loadPicture(QString fileName);
/**
Populates the list widget with the vector of strings passed in.
*/
void setupListWidget(std::vector<std::string>* cv);
/**
Populates the combo box widget with the vector of strings passed in.
*/
void setupComboBox(std::vector<std::string>* cv);
/**
Updates the directory widget with the latest directory path stored in
the global class variable fPath.
*/
void setupDirectoryWidget();
};
#endif // SKDEBUGGERUI_H