mirror of
https://github.com/rizinorg/cutter.git
synced 2024-12-18 10:56:11 +00:00
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:
parent
65835f0dc9
commit
ff080c1d3c
@ -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
|
||||
|
||||
|
@ -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 ..
|
||||
```
|
||||
|
@ -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})
|
||||
|
||||
|
@ -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
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -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
12269
src/html/Chart.js
vendored
File diff suppressed because it is too large
Load Diff
@ -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>
|
@ -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>
|
@ -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>
|
@ -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>
|
@ -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>
|
@ -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>
|
@ -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);
|
||||
}
|
1302
src/html/viz.js
1302
src/html/viz.js
File diff suppressed because one or more lines are too long
@ -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>
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -8,7 +8,6 @@
|
||||
#include <QDockWidget>
|
||||
#include <QTreeWidget>
|
||||
#include <QTabWidget>
|
||||
#include <QWebEngineView>
|
||||
#include <QUrl>
|
||||
#include <QPlainTextEdit>
|
||||
#include <QMouseEvent>
|
||||
|
@ -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));
|
||||
}
|
||||
}
|
@ -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
|
||||
|
@ -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 "Monaco";
|
||||
}</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>
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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><html><head/><body><p><span style=" font-weight:600;">Information</span></p></body></html></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>
|
||||
|
Loading…
Reference in New Issue
Block a user