Commit 424a3315 authored by LIGNEUL CLEMENT's avatar LIGNEUL CLEMENT
Browse files

add island model + update design + preparation for easea github integration

parent 54b10fa5
......@@ -2,7 +2,7 @@
_GREEN=$'\x1b[32m'
_END=$'\x1b[0m'
# get Os
# get Os name
UNAME:=$(shell uname)
install:
......@@ -12,7 +12,7 @@ install:
@echo "\n##### Beginning of the packaging #####\n"
@echo "\n##### Initialization #####\n"
@echo "\n##### Initialization #####\n"
rm -rf deploy dist
......@@ -22,10 +22,12 @@ install:
ifeq ($(UNAME), Linux)
cp -rf src/plot.py src/3D_plot.py documentation/ deploy/linux/EASEA-compiler-app/
cp -Rf src/ deploy/linux/EASEA-compiler-app/
endif
ifeq ($(UNAME), Darwin)
cp -rf src/plot.py src/3D_plot.py documentation/ deploy/darwin/EASEA-compiler-app/
cp -Rf src/ deploy/darwin/EASEA-compiler-app/
endif
@echo "\n##### Build dist #####\n"
......
......@@ -50,16 +50,23 @@ Note that if you are using macOS, plotly only works on version 10.10 or more (OS
== Installation
Once the dependencies are installed :
Once the dependencies are installed if you are using the development repository:
- clone https://git.unistra.fr/ligneul/easea-compiler-app[this repository, window=_blank]
- run `make install` in the main directory
- now you can run the executable in `EASEA-compiler-app/` named `easea-compiler-app`. If the executable is installed, you can also run `easea-compiler-app` from anywhere
- run `make uninstall` in the main directory to uninstall the application
== Dev version
If you are installing the interface from EASEA's github repository:
Running `npm start` in the main directory will allow you to see all the debugging information in the terminal. This is useful if you have any problems. This command recompiles everything each time you use it. You can also see debugging information from the executable if you run it into a terminal.
- move to the `easea-interface` directory with `cd easea/easea-interface/`
- run `sudo make install`
- you can now launch the application with the `easea-compiler-app` command from anywhere.
- to uninstall the application run `make uninstall` from the directory `easea/easea-interface/`
// == Dev version
// Running `npm start` in the main directory will allow you to see all the debugging information in the terminal. This is useful if you have any problems. This command recompiles everything each time you use it. You can also see debugging information from the executable if you run it into a terminal.
== Quick tutorials
......@@ -91,7 +98,7 @@ If the run finished correctly you can now see the plot in the Result Plot tab (s
=== Run in batch
[red]#Don't use the run in batch if you have compiled with options for <<Multi-objective problems, Multi-objective problems>>.#
// [red]#Don't use the run in batch if you have compiled with options for <<Multi-objective problems, Multi-objective problems>>.#
This application allows to run the same program several times at the same time (batch). In this tutorial we will use the file `weierstrass.ez` from the `/examples` directory of EASEA.
......@@ -213,7 +220,8 @@ image::images/general_menu.png[general menu image, 900, align=center]
- [underline]#Compression# : Set the compression level
- [underline]#Batch Size# : Number of runs at the same time. [red]#Don't use this option if you have compiled with options for <<Multi-objective problems>>#
- [underline]#Batch Size# : Number of runs at the same time.
// [red]#Don't use this option if you have compiled with options for <<Multi-objective problems>>#
- [underline]#Nb Of Threads# : Number of threads to use
......
......@@ -462,7 +462,6 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
</ul>
</li>
<li><a href="#_installation">Installation</a></li>
<li><a href="#_dev_version">Dev version</a></li>
<li><a href="#_quick_tutorials">Quick tutorials</a>
<ul class="sectlevel2">
<li><a href="#_simple_run">Simple run</a>
......@@ -614,7 +613,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
<h2 id="_installation">Installation</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Once the dependencies are installed :</p>
<p>Once the dependencies are installed if you are using the development repository:</p>
</div>
<div class="ulist">
<ul>
......@@ -632,13 +631,24 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_dev_version">Dev version</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Running <code>npm start</code> in the main directory will allow you to see all the debugging information in the terminal. This is useful if you have any problems. This command recompiles everything each time you use it. You can also see debugging information from the executable if you run it into a terminal.</p>
<p>If you are installing the interface from EASEA&#8217;s github repository:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>move to the <code>easea-interface</code> directory with <code>cd easea/easea-interface/</code></p>
</li>
<li>
<p>run <code>sudo make install</code></p>
</li>
<li>
<p>you can now launch the application with the <code>easea-compiler-app</code> command from anywhere.</p>
</li>
<li>
<p>to uninstall the application run <code>make uninstall</code> from the directory <code>easea/easea-interface/</code></p>
</li>
</ul>
</div>
</div>
</div>
......@@ -696,9 +706,6 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
<div class="sect2">
<h3 id="_run_in_batch">Run in batch</h3>
<div class="paragraph">
<p><span class="red">Don&#8217;t use the run in batch if you have compiled with options for <a href="#_multi_objective_problems">Multi-objective problems</a>.</span></p>
</div>
<div class="paragraph">
<p>This application allows to run the same program several times at the same time (batch). In this tutorial we will use the file <code>weierstrass.ez</code> from the <code>/examples</code> directory of EASEA.</p>
</div>
<div class="paragraph">
......@@ -894,7 +901,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
<p><span class="underline">Compression</span> : Set the compression level</p>
</li>
<li>
<p><span class="underline">Batch Size</span> : Number of runs at the same time. <span class="red">Don&#8217;t use this option if you have compiled with options for <a href="#_multi_objective_problems">Multi-objective problems</a></span></p>
<p><span class="underline">Batch Size</span> : Number of runs at the same time.</p>
</li>
<li>
<p><span class="underline">Nb Of Threads</span> : Number of threads to use</p>
......@@ -1240,7 +1247,7 @@ Attribution - Non Commercial 4.0 International" license</p>
<div id="footer">
<div id="footer-text">
Version 1.3 2021-09-12<br>
Last updated 2021-09-12 10:17:49 +0200
Last updated 2022-02-13 15:25:19 +0100
</div>
</div>
</body>
......
......@@ -42,16 +42,24 @@ Notez que plotly ne fonctionne qu'à partir de la version 10.10 de macOS (64 bit
== Installation
Une fois les dépendances installées :
Une fois les dépendances installées si vous utilisez le dépôt de développement :
- clonez https://git.unistra.fr/ligneul/easea-compiler-app[ce dépôt, window=_blank]
- exécutez `sudo make install` dans le repertoire principal
- vous pouvez maintenant lancer l'application avec l'exécutable `easea-compiler-app` dans le répertoire `EASEA-compiler-app/`. Si l'exécutable est installé vous pouvez lancer l'application avec la commande `easea-compiler-app` depuis n'importe où.
- vous pouvez maintenant lancer l'application avec la commande `easea-compiler-app` depuis n'importe où.
- pour désinstaller l'application faites `make uninstall` depuis le répertoire principal
== Version développeur
Si vous installez l'interface depuis le dépôt github d'EASEA :
Lancer la commande `npm start` dans le répertoire principal permet d'ouvrir l'application sans devoir générer d'exécutable mais aussi d'afficher dans la console les informations pouvant servir au débogage. Démarrer l'application en lançant l'exécutable depuis une console permet aussi d'afficher ces informations.
- déplacez-vous dans le répertoire `easea-interface` avec `cd easea/easea-interface/`
- exécutez `sudo make install`
- vous pouvez maintenant lancer l'application avec la commande `easea-compiler-app` depuis n'importe où.
- pour désinstaller l'application faites `make uninstall` depuis le répertoire `easea/easea-interface/`
// == Version développeur
// Lancer la commande `npm start` dans le répertoire principal permet d'ouvrir l'application sans devoir générer d'exécutable mais aussi d'afficher dans la console les informations pouvant servir au débogage. Démarrer l'application en lançant l'exécutable depuis une console permet aussi d'afficher ces informations.
== Tutoriels
......@@ -81,7 +89,7 @@ Si l'exécution se termine correctement vous pouvez voir le résultat dans la co
=== Exécution en batch
[red]#N'utilisez pas l'exécution en batch avec les options de compilation pour <<Problèmes multi-objectifs, problèmes multi-objectifs>> car seuls les resultats vont s'écraser entre eux#
// [red]#N'utilisez pas l'exécution en batch avec les options de compilation pour <<Problèmes multi-objectifs, problèmes multi-objectifs>> car seuls les resultats vont s'écraser entre eux#
Cette application permet de lancer plusieurs fois le même programme en même temps (batch). Dans ce tutoriel nous utiliserons le fichier `weierstrass.ez` du répertoire `/examples` d'EASEA.
......@@ -203,7 +211,8 @@ image::images/general_menu.png[general menu image, 900, align=center]
- [underline]#Compression# : Fixe le niveau de compression
- [underline]#Batch Size# : Nombre d'exécutions à effectuer. [red]#N'utilisez pas l'exécution en batch avec les options de compilation pour un <<Problèmes multi-objectifs, problème multi-objectifs>>#
- [underline]#Batch Size# : Nombre d'exécutions à effectuer.
//[red]#N'utilisez pas l'exécution en batch avec les options de compilation pour un <<Problèmes multi-objectifs, problème multi-objectifs>>#
- [underline]#Nb Of Threads# : Nombre de threads à utiliser pour chaque exécution
......
......@@ -457,7 +457,6 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
</ul>
</li>
<li><a href="#_installation">Installation</a></li>
<li><a href="#_version_développeur">Version développeur</a></li>
<li><a href="#_tutoriels">Tutoriels</a>
<ul class="sectlevel2">
<li><a href="#_simple_exécution">Simple exécution</a>
......@@ -588,7 +587,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
</ul>
</div>
<div class="paragraph">
<p>Notez que plotly ne fonctionne qu&#8217;à partir de la version 10.10 sur macOS (64 bit seulement).</p>
<p>Notez que plotly ne fonctionne qu&#8217;à partir de la version 10.10 de macOS (64 bit seulement).</p>
</div>
</div>
</div>
......@@ -597,7 +596,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
<h2 id="_installation">Installation</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Une fois les dépendances installées :</p>
<p>Une fois les dépendances installées si vous utilisez le dépôt de développement :</p>
</div>
<div class="ulist">
<ul>
......@@ -608,20 +607,31 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
<p>exécutez <code>sudo make install</code> dans le repertoire principal</p>
</li>
<li>
<p>vous pouvez maintenant lancer l&#8217;application avec l&#8217;exécutable <code>easea-compiler-app</code> dans le répertoire <code>EASEA-compiler-app/</code>. Si l&#8217;exécutable est installé vous pouvez lancer l&#8217;application avec la commande <code>easea-compiler-app</code> depuis n&#8217;importe où.</p>
<p>vous pouvez maintenant lancer l&#8217;application avec la commande <code>easea-compiler-app</code> depuis n&#8217;importe où.</p>
</li>
<li>
<p>pour désinstaller l&#8217;application faites <code>make uninstall</code> depuis le répertoire principal</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_version_développeur">Version développeur</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Lancer la commande <code>npm start</code> dans le répertoire principal permet d&#8217;ouvrir l&#8217;application sans devoir générer d&#8217;exécutable mais aussi d&#8217;afficher dans la console les informations pouvant servir au débogage. Démarrer l&#8217;application en lançant l&#8217;exécutable depuis une console permet aussi d&#8217;afficher ces informations.</p>
<p>Si vous installez l&#8217;interface depuis le dépôt github d&#8217;EASEA :</p>
</div>
<div class="ulist">
<ul>
<li>
<p>déplacez-vous dans le répertoire <code>easea-interface</code> avec <code>cd easea/easea-interface/</code></p>
</li>
<li>
<p>exécutez <code>sudo make install</code></p>
</li>
<li>
<p>vous pouvez maintenant lancer l&#8217;application avec la commande <code>easea-compiler-app</code> depuis n&#8217;importe où.</p>
</li>
<li>
<p>pour désinstaller l&#8217;application faites <code>make uninstall</code> depuis le répertoire <code>easea/easea-interface/</code></p>
</li>
</ul>
</div>
</div>
</div>
......@@ -676,9 +686,6 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
<div class="sect2">
<h3 id="_exécution_en_batch">Exécution en batch</h3>
<div class="paragraph">
<p><span class="red">N&#8217;utilisez pas l&#8217;exécution en batch avec les options de compilation pour <a href="#_problèmes_multi_objectifs">problèmes multi-objectifs</a> car seuls les resultats vont s&#8217;écraser entre eux</span></p>
</div>
<div class="paragraph">
<p>Cette application permet de lancer plusieurs fois le même programme en même temps (batch). Dans ce tutoriel nous utiliserons le fichier <code>weierstrass.ez</code> du répertoire <code>/examples</code> d&#8217;EASEA.</p>
</div>
<div class="paragraph">
......@@ -874,7 +881,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b
<p><span class="underline">Compression</span> : Fixe le niveau de compression</p>
</li>
<li>
<p><span class="underline">Batch Size</span> : Nombre d&#8217;exécutions à effectuer. <span class="red">N&#8217;utilisez pas l&#8217;exécution en batch avec les options de compilation pour un <a href="#_problèmes_multi_objectifs">problème multi-objectifs</a></span></p>
<p><span class="underline">Batch Size</span> : Nombre d&#8217;exécutions à effectuer.</p>
</li>
<li>
<p><span class="underline">Nb Of Threads</span> : Nombre de threads à utiliser pour chaque exécution</p>
......@@ -1219,7 +1226,7 @@ l&#8217;adresse suivante :
<div id="footer">
<div id="footer-text">
Version 1.3 2021-09-12<br>
Last updated 2021-09-12 10:17:57 +0200
Last updated 2022-02-13 15:25:30 +0100
</div>
</div>
</body>
......
{
"name": "EASEA-compiler-app",
"version": "1.0.0",
"version": "2.0.0",
"main": "index.ts",
"description": "Interface graphique du compilateur EASEA",
"description": "EASEA compiler user interface",
"author": "Clément Ligneul <clement.ligneul@etu.unistra.fr>",
"private": false,
"scripts": {
......@@ -13,11 +13,13 @@
},
"dependencies": {
"@nodegui/nodegui": "^0.34.0",
"ip": "^1.1.5",
"open": "^6.0.0"
},
"devDependencies": {
"@nodegui/packer": "^1.4.1",
"@types/fs-extra": "^9.0.12",
"@types/ip": "^1.1.0",
"@types/node": "^16.4.1",
"clean-webpack-plugin": "^3.0.0",
"file-loader": "^6.2.0",
......
__author__ = "Clément Ligneul"
__email__ = "clement.ligneul@etu.unistra.fr"
import plotly.express as px
import os
from pandas.io.parsers import read_csv
import sys
......
/**
* @author Clément Ligneul <clement.ligneul@etu.unistra.fr>
*/
import { QBoxLayout, QLabel, QLineEdit, QWidget } from "@nodegui/nodegui";
import { exit } from "process";
......@@ -34,7 +38,7 @@ export class Advanced_option_widget {
this.text_edit.setPlaceholderText(this.place_holder);
this.layout.addWidget(this.label);
this.layout.addWidget(this.text_edit);
this.widget.setMaximumSize(310, 100);
this.widget.setMaximumSize(330, 100);
}
}
\ No newline at end of file
/**
* @author Clément Ligneul <clement.ligneul@etu.unistra.fr>
*/
import { Pseudo_term } from './pseudo_term';
import { Win_alert } from './win_alert';
import { run_obj } from './index';
import { plot_obj, run_obj } from './index';
import * as util from './utilities';
import { FileMode, QCheckBox, QWidget, QLabel, QFileDialog, QGridLayout, QPushButton, QBoxLayout } from '@nodegui/nodegui';
import { FileMode, QCheckBox, QWidget, QLabel, QFileDialog, QGridLayout, QPushButton, QBoxLayout, AlignmentFlag } from '@nodegui/nodegui';
import { cwd } from 'process';
// buttons dimensions
const btn_width = 110;
const btn_height = 27;
export class Compile {
ez_file_address: string;
......@@ -46,11 +54,10 @@ export class Compile {
const option_widget = new QWidget();
option_widget.setLayout(option_layout);
const label_mode = new QLabel();
label_mode.setText('Compilation options :');
const misc_label = new QLabel();
misc_label.setText('Miscellaneous options :')
// separators
const label_mode = this.generate_separator('Compilation Options');
const misc_label = this.generate_separator('Miscellaneous Options');
const file_load_separator = this.generate_separator('File Options');
const check_gp = new QCheckBox();
check_gp.setText('gp');
......@@ -154,33 +161,37 @@ export class Compile {
this.true_line = !this.true_line;
});
option_layout.addWidget(label_mode, 0, 0);
option_layout.addWidget(check_gp, 1, 0);
option_layout.addWidget(check_nsgaii, 1, 1);
option_layout.addWidget(check_nsgaiii, 1, 2);
option_layout.addWidget(check_asrea, 1, 3);
option_layout.addWidget(check_ibea, 1, 4);
option_layout.addWidget(check_cdas, 2, 0);
option_layout.addWidget(check_memetic, 2, 1);
option_layout.addWidget(check_cmaes, 2, 2);
option_layout.addWidget(check_asrea, 2, 0);
option_layout.addWidget(check_ibea, 2, 1);
option_layout.addWidget(check_cdas, 2, 2);
option_layout.addWidget(check_memetic, 3, 0);
option_layout.addWidget(check_cmaes, 3, 1);
// cuda options if nvcc is installed
const cuda_test = new Pseudo_term('Cuda test');
if (cuda_test.run_command('nvcc', ['--version']) !== -1) {
option_layout.addWidget(check_cuda, 2, 3);
option_layout.addWidget(check_cuda_gp, 2, 4);
option_layout.addWidget(check_cuda, 3, 2);
option_layout.addWidget(check_cuda_gp, 3, 3);
}
option_layout.addWidget(misc_label, 3, 0);
option_layout.addWidget(check_v, 4, 0);
option_layout.addWidget(check_tl, 4, 1);
option_layout.setHorizontalSpacing(150);
option_layout.setVerticalSpacing(15);
const option_widget_misc = new QWidget();
const option_layout_misc = new QGridLayout();
option_widget_misc.setLayout(option_layout_misc);
option_layout_misc.addWidget(check_v, 0, 1);
option_layout_misc.addWidget(check_tl, 0, 2);
option_layout.setSpacing(15);
option_layout_misc.setSpacing(100);
// compile button
const compile_btn = new QPushButton();
compile_btn.setText("Compile");
compile_btn.setFixedSize(120, 30);
compile_btn.setFixedSize(btn_width, btn_height);
compile_btn.addEventListener('clicked', () => {
if (this.ez_file_address === '') {
new Win_alert("Please load a file");
......@@ -237,7 +248,11 @@ export class Compile {
ez_makefile = ez_makefile.concat('mak');
var run = output_compile.compile('/usr/local/easena/bin/easena', params, dir_path);
compiling_label.show();
output_compile.action_label.setText('Compiling ...');
output_compile.action_animation.setFileName(cwd() + '/src/assets/loader2.gif');
output_compile.action_animation.start();
output_compile.action_widget.show();
run.stdout.on('data', (data) => {
output_compile.text.insertPlainText(data.toString());
......@@ -255,29 +270,42 @@ export class Compile {
output_compile.text.insertPlainText(data.toString());
});
make.on('close', () => {
this.ready = 1;
run_obj.setReady(1);
make.on('close', (code, signal) => {
make_clean_btn.setEnabled(true);
file_select.setEnabled(true);
compile_btn.setEnabled(true);
option_widget.setEnabled(true);
compiling_label.hide();
if (this.nsgaii || this.nsgaiii || this.asrea || this.ibea || this.cdas) {
run_obj.plot_type = '3D';
output_compile.action_animation.stop();
// movie_loader.stop();
if(code === 0) {
this.ready = 1;
run_obj.setReady(1);
if (this.nsgaii || this.nsgaiii || this.asrea || this.ibea || this.cdas) {
run_obj.plot_type = '3D';
plot_obj.graph_option.axe_z_box.widget.show();
plot_obj.graph_option.plots.widget.hide();
} else {
run_obj.plot_type = '2D';
plot_obj.graph_option.axe_z_box.widget.hide();
plot_obj.graph_option.plots.widget.show();
}
output_compile.action_label.setText('Compilation succeed');
output_compile.action_animation.setFileName(cwd() + '/src/assets/ok_icon.png');
} else {
run_obj.plot_type = '2D';
output_compile.action_label.setText('Compilation failed');
output_compile.action_animation.setFileName(cwd() + '/src/assets/fail_icon.png');
}
});
} else {
output_compile.text.insertPlainText('Compilation failed');
this.ready = 0;
make_clean_btn.setEnabled(true);
file_select.setEnabled(true);
compile_btn.setEnabled(true);
option_widget.setEnabled(true);
compiling_label.hide();
output_compile.action_label.setText('Compilation failed');
output_compile.action_animation.stop();
output_compile.action_animation.setFileName(cwd() + '/src/assets/fail_icon.png');
}
});
}
......@@ -287,7 +315,7 @@ export class Compile {
// make clean button
const make_clean_btn = new QPushButton();
make_clean_btn.setText("Make clean");
make_clean_btn.setFixedSize(120, 30);
make_clean_btn.setFixedSize(btn_width, btn_height);
make_clean_btn.addEventListener('clicked', () => {
if (this.ez_file_address === '') {
new Win_alert("Please load a file");
......@@ -300,23 +328,35 @@ export class Compile {
output_compile.text.insertPlainText(data.toString());
});
make_clean.on('close', () => {
this.ready = 0;
run_obj.setReady(0);
make_clean.on('close', (code) => {
if(code === 0){
this.ready = 0;
run_obj.setReady(0);
output_compile.action_label.setText('Make clean OK');
output_compile.action_animation.setFileName(cwd() + '/src/assets/ok_icon.png');
} else {
output_compile.action_label.setText('Make clean failed');
output_compile.action_animation.setFileName(cwd() + '/src/assets/fail_icon.png');
}
});
}
});
const label_loaded = new QLabel();
label_loaded.setText("File loaded : ");
label_loaded.setStyleSheet("margin-left: 15px");
const file_loaded = new QLabel();
file_loaded.setText('Empty');
// load file dialog
const file_select = new QPushButton();
file_select.setText("Load a file");
file_select.setFixedSize(120, 30);
file_select.setFixedSize(btn_width, btn_height);
file_select.setStyleSheet("margin-left: 20px");
file_select.addEventListener('clicked', () => {
const fileDialog = new QFileDialog();
fileDialog.setFileMode(FileMode.ExistingFile);
......@@ -337,17 +377,25 @@ export class Compile {
// load file box
const widget_load = new QWidget();
const hbox_load = new QBoxLayout(0);
const compiling_label = new QLabel();
compiling_label.setText('Compiling ...');
compiling_label.hide();
hbox_load.addWidget(label_loaded);
hbox_load.addWidget(file_loaded);
hbox_load.addWidget(compiling_label);
hbox_load.setStretch(0, 0);
hbox_load.setStretch(1, 1);
hbox_load.setStretch(2, 1);
widget_load.setLayout(hbox_load);
// // compiling label
// const compiling_widget = new QWidget();
// const compiling_layout = new QBoxLayout(0);
// compiling_widget.setLayout(compiling_layout);
// const compiling_label = new QLabel();
// compiling_layout.addWidget(compiling_label);
// const compiling_animation = new QLabel();
// const movie_loader = new QMovie();
// // movie_loader.setFileName(cwd() + '/src/assets/loader2.gif');
// compiling_animation.setMovie(movie_loader);
// compiling_layout.addWidget(compiling_animation);
// compiling_widget.hide();
// compile box
const widget_comp = new QWidget();
......@@ -356,11 +404,16 @@ export class Compile {
hbox_comp.addWidget(make_clean_btn);
widget_comp.setLayout(hbox_comp);
global_layout.addWidget(widget_load);
global_layout.addWidget(file_select);
global_layout.addWidget(option_widget);
global_layout.addWidget(widget_comp);
global_layout.addWidget(widget_console);
global_layout.addWidget(file_load_separator, undefined, AlignmentFlag.AlignCenter);
global_layout.addWidget(widget_load, undefined, AlignmentFlag.AlignCenter);
global_layout.addWidget(file_select, undefined, AlignmentFlag.AlignCenter);
global_layout.addWidget(label_mode, undefined, AlignmentFlag.AlignCenter);
global_layout.addWidget(option_widget, undefined, AlignmentFlag.AlignCenter);
global_layout.addWidget(misc_label, undefined, AlignmentFlag.AlignCenter);;
global_layout.addWidget(option_widget_misc, undefined, AlignmentFlag.AlignCenter);
global_layout.addWidget(widget_comp, undefined, AlignmentFlag.AlignCenter);
// global_layout.addWidget(compiling_widget, undefined, AlignmentFlag.AlignCenter);
global_layout.addWidget(widget_console, undefined, AlignmentFlag.AlignCenter);
return global_layout;
}
......@@ -368,4 +421,18 @@ export class Compile {
setReady(val: Number) {
this.ready = val;
}
generate_separator(text:string) {
const sep = new QLabel();
sep.setText(text);
sep.setAlignment(AlignmentFlag.AlignCenter);
sep.setFixedSize(500,50);
sep.setStyleSheet(`
font-size: 15pt;
border-bottom: 0.5px solid;
background-color:rgb(226,226,226);
`);