Remove QtWebEngine (Fix #60)

* Remove QML QtWebEngine dependency

* Remove Web graphs from Dashboard

* Remove web graphs from SidebarWidget

* Remove web mini graph from PreviewWidget

* Remove all remaining html and QtWebEngine dependencies

* Update docs/Compiling-with-CMake.md after QtWebEngine removal

* Remove QtWebEngine from Travis
This commit is contained in:
Florian Märkl 2017-10-15 13:40:20 +02:00 committed by xarkes
parent 65835f0dc9
commit ff080c1d3c
25 changed files with 22 additions and 14840 deletions

View File

@ -26,7 +26,7 @@ install:
export PATH="/usr/local/opt/qt/bin:$PATH"
; fi
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
sudo apt-get -y install qt59base qt59webengine &&
sudo apt-get -y install qt59base &&
source /opt/qt5*/bin/qt5*-env.sh
; fi

View File

@ -7,7 +7,7 @@ This page provides a guide to compile on **Linux** or **macOS**, the process for
## Requirements
* CMake >= 3.1
* Radare2 installed from submodule, see [README.md](https://github.com/radareorg/cutter#requirements)
* Qt 5.9.1 including the components Core Widgets Gui WebEngine WebEngineWidgets
* Qt 5.9.1
## Building
@ -26,23 +26,8 @@ make
## Troubleshooting
Depending on how Qt installed (Distribution packages or using the Qt installer application), CMake may not be able to find it by itself if it is not in a common place. You may encounter an error that looks like this:
```
CMake Error at /usr/lib/x86_64-linux-gnu/cmake/Qt5/Qt5Config.cmake:26 (find_package):
Could not find a package configuration file provided by "Qt5WebEngine" with
any of the following names:
Qt5WebEngineConfig.cmake
qt5webengine-config.cmake
Add the installation prefix of "Qt5WebEngine" to CMAKE_PREFIX_PATH or set
"Qt5WebEngine_DIR" to a directory containing one of the above files. If
"Qt5WebEngine" provides a separate development package or SDK, be sure it
has been installed.
```
If that is the case, double check that Qt 5.6 is installed correctly and contains all required components. Locate its prefix (a directory containing bin/, lib/, include/, etc.) and specify it to CMake using `CMAKE_PREFIX_PATH` in the above process, e.g.:
Depending on how Qt installed (Distribution packages or using the Qt installer application), CMake may not be able to find it by itself if it is not in a common place. If that is the case, double check that the correct Qt version is installed. Locate its prefix (a directory containing bin/, lib/, include/, etc.) and specify it to CMake using `CMAKE_PREFIX_PATH` in the above process, e.g.:
```
rm CMakeCache.txt # the cache may be polluted with unwanted libraries found before
cmake -DCMAKE_PREFIX_PATH=/opt/Qt/5.6/gcc_64 ..
cmake -DCMAKE_PREFIX_PATH=/opt/Qt/5.9.1/gcc_64 ..
```

View File

@ -12,7 +12,7 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)
find_package(Qt5 REQUIRED COMPONENTS Core Widgets Gui WebEngine WebEngineWidgets)
find_package(Qt5 REQUIRED COMPONENTS Core Widgets Gui)
if(WIN32)
@ -65,6 +65,6 @@ add_definitions("-DAPP_VERSION=\"${CUTTER_VERSION_FULL}\"")
add_executable(cutter ${UI_FILES} ${QRC_FILES} ${SOURCE_FILES} ${HEADER_FILES})
qt5_use_modules(cutter Core Widgets Gui WebEngine WebEngineWidgets)
qt5_use_modules(cutter Core Widgets Gui)
target_link_libraries(cutter ${RADARE2_LIBRARIES})

View File

@ -450,17 +450,19 @@ void MainWindow::readSettings()
void MainWindow::dark()
{
qApp->setStyleSheet("QPlainTextEdit { background-color: rgb(64, 64, 64); color: rgb(222, 222, 222);} QTextEdit { background-color: rgb(64, 64, 64); color: rgb(222, 222, 222);} ");
this->previewDock->switchTheme(true);
QSettings settings;
settings.setValue("dark", true);
// TODO: emit a signal for theme
}
void MainWindow::def_theme()
{
qApp->setStyleSheet("");
this->previewDock->switchTheme(false);
QSettings settings;
settings.setValue("dark", false);
// TODO: emit a signal for theme
}
/*

View File

@ -7,7 +7,7 @@ VERSION = 1.0
ICON = img/Enso.icns
QT += core gui widgets webengine webenginewidgets
QT += core gui widgets
QT_CONFIG -= no-pkg-config
CONFIG += c++11

12269
src/html/Chart.js vendored

File diff suppressed because it is too large Load Diff

View File

@ -1,45 +0,0 @@
<!doctype html>
<html>
<head>
<title>Bar Chart</title>
<script src="qrc:/html/Chart.js"></script>
</head>
<body>
<div style="width: 95%; height: 90%">
<canvas id="canvas"height="70"></canvas>
</div>
<script>
var randomScalingFactor = function(){ return Math.round(Math.random()*100)};
var barChartData = {
labels : ["January","February","March","April","May","June","July"],
datasets : [
{
fillColor : "rgba(220,220,220,0.5)",
strokeColor : "rgba(220,220,220,0.8)",
highlightFill: "rgba(220,220,220,0.75)",
highlightStroke: "rgba(220,220,220,1)",
data : [randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor()]
},
{
fillColor : "rgba(151,187,205,0.5)",
strokeColor : "rgba(151,187,205,0.8)",
highlightFill : "rgba(151,187,205,0.75)",
highlightStroke : "rgba(151,187,205,1)",
data : [randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor()]
}
]
}
window.onload = function(){
var ctx = document.getElementById("canvas").getContext("2d");
window.myBar = new Chart(ctx).Bar(barChartData, {
responsive : true
});
}
</script>
</body>
</html>

View File

@ -1,71 +0,0 @@
<!doctype html>
<html>
<head>
<title>Polar Area Chart</title>
<script src="qrc:/html/Chart.js"></script>
<script src="qrc:/html/utils.js"></script>
</head>
<body>
<div id="canvas-holder" style="width:100%;">
<canvas id="chart-area" width="225" height="225"/>
</div>
<script>
var chartColors = window.chartColors;
var color = Chart.helpers.color;
var config = {
data: {
datasets: [{
data: [MEOW],
backgroundColor: [
color(chartColors.red).alpha(0.5).rgbString(),
color(chartColors.blue).alpha(0.5).rgbString(),
color(chartColors.yellow).alpha(0.5).rgbString(),
color(chartColors.green).alpha(0.5).rgbString(),
color(chartColors.purple).alpha(0.5).rgbString(),
]
}],
labels: [
"CC",
"Refs",
"BB",
"XRefs",
"End BB"
]
},
options: {
responsive: true,
legend: {
display: false
},
title: {
display: false,
text: 'Chart.js Polar Area Chart'
},
tooltips: {
mode: 'index',
intersect: false,
displayColors: false,
},
scale: {
ticks: {
beginAtZero: true
},
reverse: false
},
animation: {
duration: 0,
animateRotate: false,
animateScale: true
}
}
};
window.onload = function() {
var ctx = document.getElementById("chart-area");
window.myPolarArea = Chart.PolarArea(ctx, config);
};
</script>
</body>
</html>

View File

@ -1,65 +0,0 @@
<!doctype html>
<html>
<head>
<title>Radar Chart</title>
<script src="qrc:/html/Chart.js"></script>
<script src="qrc:/html/utils.js"></script>
<style>
canvas{
}
</style>
</head>
<body>
<div style="width:100%">
<canvas id="canvas" height="230" width="230"></canvas>
</div>
<script>
var color = Chart.helpers.color;
var radarChartData = {
type: 'radar',
data: {
labels : ["Cyclomatic complexity", "Refs", "Basic Blocks", "XRefs", "End BB"],
datasets : [
{
label: "Amount",
backgroundColor: color(window.chartColors.blue).alpha(0.2).rgbString(),
borderColor: window.chartColors.blue,
pointBackgroundColor: window.chartColors.blue,
data : [MEOW]
}
]
},
options: {
legend: {
display: false,
},
title: {
display: false,
text: 'Binary statistics'
},
tooltips: {
intersect: false,
displayColors: false,
},
animation: {
duration: 0
},
scale: {
ticks: {
beginAtZero: true
}
}
}
};
window.onload = function(){
var ctx = document.getElementById("canvas").getContext("2d");
window.myLine = new Chart(ctx, radarChartData);
}
</script>
</body>
</html>

View File

@ -1,43 +0,0 @@
<html>
<body>
<!--
<style type="text/css">
.center {
position: absolute;
left: 50%;
/* top: 50%; */
-webkit-transform: translate(-50%, 0);
transform: translate(-50%, 0);
}
</style>
-->
<div class="center" id="output"></div>
<script src="qrc:/html/viz.js"></script>
<script type="text/vnd.graphviz" id="test">
MEOW
</script>
<script>
function src(id) {
return document.getElementById(id).innerHTML;
}
var format = "svg";
var engine = "dot";
var result = Viz(src("test"), format, engine);
//var result = Viz(input, format, engine);
if (format == "svg") {
document.getElementById("output").innerHTML = result;
} else {
document.getElementById("output").innerHTML = "";
}
</script>
</body>
</html>

View File

@ -1,109 +0,0 @@
<!doctype html>
<html>
<head>
<title>Statistics</title>
<script src="qrc:/html/Chart.js"></script>
<script src="qrc:/html/utils.js"></script>
</head>
<body>
<div style="width: 100%; overflow: hidden;">
<div id="canvas-holder" style="width:40%; float: left;">
<canvas id="canvas" width="230" height="230"/>
</div>
<div id="canvas-holder" style="width:40%; margin-left: 500px;">
<canvas id="canvas2" width="230" height="230"/>
</div>
</div>
<script>
var chartColors = window.chartColors;
var color = Chart.helpers.color;
var lineChartData = {
type: 'radar',
data: {
labels : ["Functions","Imports","Symbols","Strings","Relocs", "Sections"],
datasets : [
{
label: "Amount",
backgroundColor: color(window.chartColors.blue).alpha(0.2).rgbString(),
borderColor: window.chartColors.blue,
pointBackgroundColor: window.chartColors.blue,
data : [MEOW]
}
]
},
options: {
legend: {
display: false,
},
title: {
display: false,
text: 'Binary statistics'
},
tooltips: {
mode: 'index',
intersect: false,
displayColors: false,
},
scale: {
ticks: {
beginAtZero: true
}
}
}
};
var config = {
data: {
datasets: [{
data: [WOEM],
backgroundColor: [
color(chartColors.red).alpha(0.5).rgbString(),
color(chartColors.blue).alpha(0.5).rgbString(),
color(chartColors.yellow).alpha(0.5).rgbString(),
color(chartColors.green).alpha(0.5).rgbString(),
color(chartColors.purple).alpha(0.5).rgbString(),
color(chartColors.grey).alpha(0.5).rgbString(),
]
}],
labels : ["Functions","Imports","Symbols","Strings","Relocs", "Sections"]
},
options: {
responsive: true,
legend: {
display: false
},
title: {
display: false,
text: 'Chart.js Polar Area Chart'
},
tooltips: {
mode: 'index',
intersect: false,
displayColors: false,
},
scale: {
ticks: {
beginAtZero: true
},
reverse: false
},
animation: {
duration: 0,
animateRotate: false,
animateScale: true
}
}
};
window.onload = function(){
var ctx = document.getElementById("canvas");
window.myLine = new Chart(ctx, lineChartData);
var ctx2 = document.getElementById("canvas2");
window.myPolarArea2= Chart.PolarArea(ctx2, config);
}
</script>
</body>
</html>

View File

@ -1,145 +0,0 @@
<!doctype html>
<html>
<head>
<title>Statistics</title>
<script src="qrc:/html/Chart.js"></script>
<script src="qrc:/html/utils.js"></script>
</head>
<body>
<div style="width:100%; height:100%;">
<canvas id="canvas" height="360" width="890"></canvas>
</div>
<script>
var barChartData = {
type:'bar',
data:{
labels : ["Functions","Imports","Symbols","Strings","Relocs", "Sections"],
datasets:[
{
fill: false,
lineTension: 0.1,
borderCapStyle: 'butt',
borderDash: [],
borderDashOffset: 0.0,
borderJoinStyle: 'miter',
pointBorderWidth: 1,
pointHoverRadius: 5,
pointHoverBorderWidth: 2,
pointRadius: 1,
pointHitRadius: 10,
spanGaps: false,
label: "Found",
backgroundColor: window.chartColors.blue,
borderColor: window.chartColors.blue,
data : [MEOW]
}
]
},
options: {
responsive: true,
legend:{
display: false,
},
title:{
display: false,
text:'bar chart '
},
tooltips:{
mode:'index',
intersect: false,
displayColors: false,
},
hover:{
mode:'nearest',
intersect: false,
},
animation:{
duration: 0
},
scales:{
xAxes: [{
display: true,
scaleLabel:{
display: true,
labelString: 'Flags'
}
}]
}
}
};
var lineChartData = {
type: 'line',
data: {
labels : ["Functions","Imports","Symbols","Strings","Relocs", "Sections"],
datasets : [
{
fill: false,
lineTension: 0.1,
borderCapStyle: 'butt',
borderDash: [],
borderDashOffset: 0.0,
borderJoinStyle: 'miter',
pointBorderWidth: 1,
pointHoverRadius: 5,
pointHoverBorderWidth: 2,
pointRadius: 1,
pointHitRadius: 10,
spanGaps: false,
label: "Found",
backgroundColor: window.chartColors.blue,
borderColor: window.chartColors.blue,
data : [MEOW]
}
]
},
options: {
responsive: true,
legend: {
display: false,
},
title:{
display: false,
text:'Binary statistics'
},
tooltips: {
mode: 'index',
intersect: false,
displayColors: false,
},
hover: {
mode: 'nearest',
intersect: true
},
animation: {
duration: 0
},
scales: {
xAxes: [{
display: true,
scaleLabel: {
display: true,
labelString: 'Flags'
}
}],
yAxes: [{
display: true,
scaleLabel: {
display: true,
labelString: 'Value'
}
}]
}
}
};
window.onload = function(){
var ctx = document.getElementById("canvas").getContext("2d");
window.myLine = new Chart(ctx, barChartData);
}
</script>
</body>
</html>

View File

@ -1,13 +0,0 @@
window.chartColors = {
red: 'rgb(255, 99, 132)',
orange: 'rgb(255, 159, 64)',
yellow: 'rgb(255, 205, 86)',
green: 'rgb(75, 192, 192)',
blue: 'rgb(54, 162, 235)',
purple: 'rgb(153, 102, 255)',
grey: 'rgb(231,233,237)'
};
window.randomScalingFactor = function() {
return (Math.random() > 0.5 ? 1.0 : -1.0) * Math.round(Math.random() * 100);
}

File diff suppressed because one or more lines are too long

View File

@ -60,16 +60,5 @@
<file>img/icons/import_light.svg</file>
<file>fonts/Anonymous Pro.ttf</file>
<file>fonts/Inconsolata-Regular.ttf</file>
<file>html/graph.html</file>
<file>html/viz.js</file>
<file>html/Chart.js</file>
<file>html/fcn_graph.html</file>
<file>html/fcn_radar.html</file>
<file>html/bar.html</file>
<file>html/stats.html</file>
<file>html/utils.js</file>
<file>html/radar.html</file>
</qresource>
</RCC>

View File

@ -174,7 +174,7 @@ void Dashboard::updateContents()
}
}
foreach (QString lib, lines)
for (QString lib : lines)
{
QLabel *label = new QLabel(this);
label->setText(lib);
@ -194,30 +194,4 @@ void Dashboard::updateContents()
// Get stats for the graphs
QStringList stats = CutterCore::getInstance()->getStats();
// Add data to HTML graphs (stats)
QFile html(":/html/stats.html");
if (!html.open(QIODevice::ReadOnly))
{
QMessageBox::information(this, "error", html.errorString());
}
QString code = html.readAll();
html.close();
QString data = QString("%1, %2, %3, %4, %5, %6").arg(stats.at(0)).arg(stats.at(1)).arg(stats.at(2)).arg(stats.at(3)).arg(stats.at(4)).arg(stats.at(5));
code.replace("MEOW", data);
ui->statsWebView->setHtml(code);
// Add data to polar graph
QFile html2(":/html/radar.html");
if (!html2.open(QIODevice::ReadOnly))
{
QMessageBox::information(this, "error", html2.errorString());
}
QString code2 = html2.readAll();
html2.close();
code2.replace("MEOW", data);
code2.replace("WOEM", data);
ui->polarWebView->setHtml(code2);
}

View File

@ -56,7 +56,7 @@
<x>0</x>
<y>0</y>
<width>1055</width>
<height>974</height>
<height>980</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_5">
@ -90,6 +90,12 @@
</item>
<item>
<widget class="QFrame" name="mainFrame">
<property name="minimumSize">
<size>
<width>800</width>
<height>0</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
@ -1002,178 +1008,6 @@
</item>
</layout>
</item>
<item>
<widget class="Line" name="line_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_5">
<property name="font">
<font>
<pointsize>17</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Statistics</string>
</property>
</widget>
</item>
<item>
<widget class="QTabWidget" name="graphTabs">
<property name="styleSheet">
<string notr="true">QTabBar
{
qproperty-drawBase: 0;
}
QTabWidget::pane { /* The tab widget frame */
border-top: 0px;
}
QTabBar::tab {
background: rgb(240, 240, 240);
border: 0px solid #2180a9;
border-bottom-color: #2180a9;
border-top-left-radius: 0px;
border-top-right-radius: 0px;
min-width: 8ex;
padding: 5px;
margin-bottom: 3px;
margin-top: 3px;
}
QTabBar::tab:selected {
background: #2180a9;
color: #FFFFFF;
}
QTabBar::tab:hover {
background: #2180a9; /* #3C879E; */
color: #FFFFFF;
}</string>
</property>
<property name="tabPosition">
<enum>QTabWidget::North</enum>
</property>
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="tab_3">
<attribute name="title">
<string>Line</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_3">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QWebEngineView" name="statsWebView" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>950</width>
<height>400</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>950</width>
<height>400</height>
</size>
</property>
<property name="url" stdset="0">
<url>
<string>qrc:/html/stats.html</string>
</url>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_4">
<attribute name="title">
<string>Polar</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_4">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>20</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QWebEngineView" name="polarWebView" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>950</width>
<height>400</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>950</width>
<height>400</height>
</size>
</property>
<property name="url" stdset="0">
<url>
<string>qrc:/html/fcn_stats.html</string>
</url>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_3">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
<zorder>polarWebView</zorder>
</widget>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
@ -1210,13 +1044,6 @@ QTabBar::tab:hover {
</layout>
</widget>
</widget>
<customwidgets>
<customwidget>
<class>QWebEngineView</class>
<extends>QWidget</extends>
<header>QtWebEngineWidgets/QWebEngineView</header>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>

View File

@ -11,12 +11,9 @@
#include <QScrollBar>
#include <QClipboard>
#include <QShortcut>
#include <QWebEnginePage>
#include <QMenu>
#include <QFont>
#include <QUrl>
#include <QWebEngineSettings>
#include <QWebEngineProfile>
#include <QSettings>
#include <cassert>

View File

@ -8,7 +8,6 @@
#include <QDockWidget>
#include <QTreeWidget>
#include <QTabWidget>
#include <QWebEngineView>
#include <QUrl>
#include <QPlainTextEdit>
#include <QMouseEvent>

View File

@ -5,8 +5,6 @@
#include "utils/Helpers.h"
#include <QClipboard>
#include <QWebEngineSettings>
#include <QWebEngineProfile>
#include <QSettings>
PreviewWidget::PreviewWidget(QWidget *parent, Qt::WindowFlags flags) :
@ -93,8 +91,6 @@ void PreviewWidget::refresh(RVA addr)
addr = core->getSeekAddr();
}
setMiniGraph(RAddressString(addr));
// TODO: pseudo, ...
}
@ -128,25 +124,6 @@ void PreviewWidget::setFonts(QFont font)
* Buttons callback functions
*/
void PreviewWidget::setMiniGraph(QString at)
{
QString dot = this->core->getSimpleGraph(at);
//QString dot = this->core->cmd("agc " + at);
// Add data to HTML Polar functions graph
QFile html(":/html/graph.html");
if (!html.open(QIODevice::ReadOnly))
{
QMessageBox::information(this, "error", html.errorString());
}
QString code = html.readAll();
html.close();
code.replace("MEOW", dot);
ui->webSimpleGraph->setHtml(code);
}
void PreviewWidget::on_previewToolButton_clicked()
{
ui->memPreviewTab->setCurrentIndex(0);
@ -155,21 +132,4 @@ void PreviewWidget::on_previewToolButton_clicked()
void PreviewWidget::on_decoToolButton_clicked()
{
ui->memPreviewTab->setCurrentIndex(1);
}
void PreviewWidget::on_simpleGrapgToolButton_clicked()
{
ui->memPreviewTab->setCurrentIndex(2);
}
void PreviewWidget::switchTheme(bool dark)
{
if (dark)
{
ui->webSimpleGraph->page()->setBackgroundColor(QColor(64, 64, 64));
}
else
{
ui->webSimpleGraph->page()->setBackgroundColor(QColor(255, 255, 255));
}
}

View File

@ -6,7 +6,6 @@
#include <QDockWidget>
#include <QTreeWidget>
#include <QTabWidget>
#include <QWebEngineView>
#include <QUrl>
#include <QPlainTextEdit>
#include <QMouseEvent>
@ -37,11 +36,6 @@ public:
signals:
void fontChanged(QFont font);
public slots:
void setMiniGraph(QString at);
void switchTheme(bool dark);
private:
std::unique_ptr<Ui::PreviewWidget> ui;
CutterCore *core;
@ -58,7 +52,6 @@ private slots:
void on_actionSettings_menu_1_triggered();
void on_previewToolButton_clicked();
void on_decoToolButton_clicked();
void on_simpleGrapgToolButton_clicked();
};
#endif // MEMORYWIDGET_H

View File

@ -200,56 +200,6 @@ QToolTip {
</attribute>
</widget>
</item>
<item>
<widget class="QToolButton" name="simpleGrapgToolButton">
<property name="styleSheet">
<string notr="true">QToolButton { /* all types of tool button */
border: 3px solid rgb(255, 255, 255);
border-left: 10px solid rgb(255, 255, 255);
border-right: 10px solid rgb(255, 255, 255);
border-radius: 0px;
background-color: rgb(255, 255, 255);
color: rgb(191, 191, 191);
}
QToolButton:hover {
border: 3px solid #2180a9;
border-left: 10px solid #2180a9;
border-right: 10px solid #2180a9;
border-radius: 0px;
background-color: #2180a9;
color: rgb(255, 255, 255);
}
QToolButton:checked {
border: 3px solid #999;
border-left: 10px solid #999;
border-right: 10px solid #999;
border-radius: 0px;
background-color: #999;
color: rgb(255, 255, 255);
}
QToolTip {
background-color: #444;
border: 3px solid #444;
color: rgb(232, 232, 232);
}</string>
</property>
<property name="text">
<string notr="true">Graph</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>true</bool>
</property>
<attribute name="buttonGroup">
<string notr="true">buttonGroup_3</string>
</attribute>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
@ -281,7 +231,7 @@ QToolTip {
<enum>QTabWidget::South</enum>
</property>
<property name="currentIndex">
<number>0</number>
<number>1</number>
</property>
<widget class="QWidget" name="tab_4">
<attribute name="title">
@ -401,57 +351,6 @@ QToolTip {
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_8">
<attribute name="title">
<string notr="true">Graph</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_3">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>5</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QWebEngineView" name="webSimpleGraph">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>Anonymous Pro</family>
<pointsize>12</pointsize>
</font>
</property>
<property name="styleSheet">
<string notr="true">QToolTip {
background-color: #444;
border: 3px solid #444;
color: rgb(232, 232, 232);
font: 11pt &quot;Monaco&quot;;
}</string>
</property>
<property name="url">
<url>
<string>about:blank</string>
</url>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
@ -644,13 +543,6 @@ QToolTip {
</property>
</action>
</widget>
<customwidgets>
<customwidget>
<class>QWebEngineView</class>
<extends>QWidget</extends>
<header location="global">QtWebEngineWidgets/QWebEngineView</header>
</customwidget>
</customwidgets>
<resources>
<include location="../resources.qrc"/>
</resources>

View File

@ -9,12 +9,9 @@
#include <QScrollBar>
#include <QClipboard>
#include <QShortcut>
#include <QWebEnginePage>
#include <QMenu>
#include <QFont>
#include <QUrl>
#include <QWebEngineSettings>
#include <QWebEngineProfile>
#include <QSettings>
@ -30,10 +27,6 @@ SidebarWidget::SidebarWidget(QWidget *parent, Qt::WindowFlags flags) :
// Add margin to function name line edit
ui->fcnNameEdit->setTextMargins(5, 0, 0, 0);
// Hide fcn graph notebooks tabs
QTabBar *graph_bar = ui->fcnGraphTabWidget->tabBar();
graph_bar->setVisible(false);
connect(core, SIGNAL(seekChanged(RVA)), this, SLOT(on_seekChanged(RVA)));
connect(core, SIGNAL(flagsChanged()), this, SLOT(refresh()));
connect(core, SIGNAL(commentsChanged()), this, SLOT(refresh()));
@ -72,20 +65,6 @@ void SidebarWidget::refresh(RVA addr)
* Context menu functions
*/
void SidebarWidget::on_showInfoButton_2_clicked()
{
if (ui->showInfoButton_2->isChecked())
{
ui->fcnGraphTabWidget->hide();
ui->showInfoButton_2->setArrowType(Qt::RightArrow);
}
else
{
ui->fcnGraphTabWidget->show();
ui->showInfoButton_2->setArrowType(Qt::DownArrow);
}
}
void SidebarWidget::on_offsetToolButton_clicked()
{
if (ui->offsetToolButton->isChecked())
@ -211,32 +190,6 @@ void SidebarWidget::fill_refs(QList<XrefDescription> refs, QList<XrefDescription
{
this->xrefToTreeWidget_2->resizeColumnToContents(i);
}
// Add data to HTML Polar functions graph
QFile html(":/html/fcn_graph.html");
if (!html.open(QIODevice::ReadOnly))
{
QMessageBox::information(this, "error", html.errorString());
}
QString code = html.readAll();
html.close();
QString data = QString("\"%1\", \"%2\", \"%3\", \"%4\", \"%5\"").arg(graph_data.at(2)).arg(graph_data.at(0)).arg(graph_data.at(3)).arg(graph_data.at(1)).arg(graph_data.at(4));
code.replace("MEOW", data);
ui->fcnWebView->setHtml(code);
// Add data to HTML Radar functions graph
QFile html2(":/html/fcn_radar.html");
if (!html2.open(QIODevice::ReadOnly))
{
QMessageBox::information(this, "error", html.errorString());
}
QString code2 = html2.readAll();
html2.close();
QString data2 = QString("%1, %2, %3, %4, %5").arg(graph_data.at(2)).arg(graph_data.at(0)).arg(graph_data.at(3)).arg(graph_data.at(1)).arg(graph_data.at(4));
code2.replace("MEOW", data2);
ui->radarGraphWebView->setHtml(code2);
}
void SidebarWidget::fillOffsetInfo(QString off)
@ -287,18 +240,6 @@ void SidebarWidget::setFcnName(RVA addr)
ui->fcnNameEdit->setText(addr_string);
}
void SidebarWidget::on_polarToolButton_clicked()
{
ui->radarToolButton->setChecked(false);
ui->fcnGraphTabWidget->setCurrentIndex(0);
}
void SidebarWidget::on_radarToolButton_clicked()
{
ui->polarToolButton->setChecked(false);
ui->fcnGraphTabWidget->setCurrentIndex(1);
}
void SidebarWidget::setScrollMode()
{
qhelpers::setVerticalScrollMode(ui->xreFromTreeWidget_2);

View File

@ -8,7 +8,6 @@
#include <QDockWidget>
#include <QTreeWidget>
#include <QTabWidget>
#include <QWebEngineView>
#include <QUrl>
#include <QPlainTextEdit>
#include <QMouseEvent>
@ -53,14 +52,11 @@ private slots:
void refresh(RVA addr = RVA_INVALID);
void on_showInfoButton_2_clicked();
void on_xreFromTreeWidget_2_itemDoubleClicked(QTreeWidgetItem *item, int column);
void on_xrefToTreeWidget_2_itemDoubleClicked(QTreeWidgetItem *item, int column);
void on_xrefFromToolButton_2_clicked();
void on_xrefToToolButton_2_clicked();
void on_offsetToolButton_clicked();
void on_polarToolButton_clicked();
void on_radarToolButton_clicked();
};
#endif // SIDEBARWIDGET_H

View File

@ -70,8 +70,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>319</width>
<height>882</height>
<width>333</width>
<height>816</height>
</rect>
</property>
<property name="sizePolicy">
@ -152,308 +152,6 @@
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_14">
<property name="spacing">
<number>5</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>5</number>
</property>
<item>
<widget class="QToolButton" name="showInfoButton_2">
<property name="text">
<string>...</string>
</property>
<property name="iconSize">
<size>
<width>8</width>
<height>8</height>
</size>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="autoRaise">
<bool>true</bool>
</property>
<property name="arrowType">
<enum>Qt::DownArrow</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="infoTitleLabel_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;Information&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<property name="spacing">
<number>0</number>
</property>
<item>
<widget class="QToolButton" name="radarToolButton">
<property name="toolTip">
<string>Radar graph</string>
</property>
<property name="styleSheet">
<string notr="true">QToolButton { /* all types of tool button */
border: 5px solid #333;
border-left: 10px solid #333;
border-right: 10px solid #333;
border-radius: 0px;
background-color: #333;
}
QToolButton:hover {
border: 5px solid #444;
border-left: 10px solid #444;
border-right: 10px solid #444;
border-radius: 0px;
background-color: #444;
}
QToolButton:checked {
border: 5px solid #2180a9;
border-left: 10px solid #2180a9;
border-right: 10px solid #2180a9;
border-radius: 0px;
background-color: #2180a9;
}
QToolTip {
background-color: #444;
border: 3px solid #444;
color: rgb(232, 232, 232);
}</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../resources.qrc">
<normaloff>:/img/icons/radar_light.svg</normaloff>
<normalon>:/img/icons/radar_white.svg</normalon>
<activeon>:/img/icons/radar_white.svg</activeon>:/img/icons/radar_light.svg</iconset>
</property>
<property name="iconSize">
<size>
<width>8</width>
<height>8</height>
</size>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>true</bool>
</property>
<attribute name="buttonGroup">
<string notr="true">buttonGroup_2</string>
</attribute>
</widget>
</item>
<item>
<widget class="QToolButton" name="polarToolButton">
<property name="toolTip">
<string notr="true">Polar graph</string>
</property>
<property name="styleSheet">
<string notr="true">QToolButton { /* all types of tool button */
border: 5px solid #333;
border-left: 10px solid #333;
border-right: 10px solid #333;
border-radius: 0px;
background-color: #333;
}
QToolButton:hover {
border: 5px solid #444;
border-left: 10px solid #444;
border-right: 10px solid #444;
border-radius: 0px;
background-color: #444;
}
QToolButton:checked {
border: 5px solid #2180a9;
border-left: 10px solid #2180a9;
border-right: 10px solid #2180a9;
border-radius: 0px;
background-color: #2180a9;
}
QToolTip {
background-color: #444;
border: 3px solid #444;
color: rgb(232, 232, 232);
}</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../resources.qrc">
<normaloff>:/img/icons/polar_light.svg</normaloff>
<normalon>:/img/icons/polar_white.svg</normalon>
<activeon>:/img/icons/polar_white.svg</activeon>:/img/icons/polar_light.svg</iconset>
</property>
<property name="iconSize">
<size>
<width>8</width>
<height>8</height>
</size>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="checked">
<bool>false</bool>
</property>
<attribute name="buttonGroup">
<string notr="true">buttonGroup_2</string>
</attribute>
</widget>
</item>
</layout>
</item>
</layout>
</item>
<item>
<widget class="QTabWidget" name="fcnGraphTabWidget">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>250</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>250</height>
</size>
</property>
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="tab">
<attribute name="title">
<string>Tab 1</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QWebEngineView" name="fcnWebView">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>245</width>
<height>245</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>250</height>
</size>
</property>
<property name="url">
<url>
<string>qrc:/html/fcn_graph.html</string>
</url>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="tab_2">
<attribute name="title">
<string>Tab 2</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QWebEngineView" name="radarGraphWebView">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>245</width>
<height>245</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>250</height>
</size>
</property>
<property name="url">
<url>
<string>qrc:/html/fcn_radar.html</string>
</url>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="spacing">
@ -858,20 +556,11 @@ QToolTip {
</layout>
</widget>
</widget>
<customwidgets>
<customwidget>
<class>QWebEngineView</class>
<extends>QWidget</extends>
<header location="global">QtWebEngineWidgets/QWebEngineView</header>
</customwidget>
</customwidgets>
<resources>
<include location="../resources.qrc"/>
</resources>
<connections/>
<buttongroups>
<buttongroup name="buttonGroup_2"/>
<buttongroup name="buttonGroup"/>
<buttongroup name="buttonGroup_3"/>
</buttongroups>
</ui>