outils/OutilNew.js

/*
 * Created by yvesb on 26/12/2016.
 */

/*
 * MathGraph32 Javascript : Software for animating online dynamic mathematics figures
 * https://www.mathgraph32.org/
 * @Author Yves Biton (yves.biton@sesamath.net)
 * @License: GNU AGPLv3 https://www.gnu.org/licenses/agpl-3.0.html
 */
import Outil from './Outil'
import NewFigDlg from '../dialogs/NewFigDlg'
import ConfirmDlg from '../dialogs/ConfirmDlg'
import { uniteAngleDegre } from 'src/kernel/kernel'
import { storeFigByCode } from '../kernel/kernelAdd'
export default OutilNew
/**
 * Outil servant à modifier un objet qui a été créé par un menu
 * @param {MtgApp} app L'application propriétaire
 * @constructor
 * @extends Outil
 */
function OutilNew (app) {
  Outil.call(this, app, 'New', -1, false, true, app.newFig)
}

OutilNew.prototype = new Outil()

OutilNew.prototype.select = function () {
  Outil.prototype.select.call(this)
  const app = this.app
  app.termineMacroEnCours() // Ajout version 6.4.1
  app.activeOutilCapt() // Ajout version 6.4.1 pour éviter plantages si par ex l'outil rideau est actiF

  // On regarde si on est en mode electron. Si oui on avertit si la figure n'a pas été sauvegardée
  const actualBase64Code = app.getBase64Code()
  if (app.doc.isDirty) {
    new ConfirmDlg(app, 'AvertDirty', function () {
      if (app.level === app.levels[0]) {
        storeFigByCode(actualBase64Code)
        app.fileName = ''
        app.setNewfigWithUnity(uniteAngleDegre)
      } else {
        new NewFigDlg(app, function () {
          storeFigByCode(actualBase64Code)
          app.fileName = ''
          app.activeOutilsDem()
          app.reInitConst() // Pour réinitialiser une éventuelle construction en cours
          // Si on est dans la version electron on remet à zéro le document
          if (app.electron) {
            // resetDocument est une fonction de la page index.html de la version electron
            resetDocument() // eslint-disable-line no-undef
          }
          app.gestionnaire.initialise()
        }, function () {
          app.activeOutilCapt()
        })
      }
    })
  } else {
    new NewFigDlg(app, function () {
      app.fileName = ''
      app.activeOutilsDem()
      app.reInitConst() // Pour réinitialiser une éventuelle construction en cours
      // Si on est dans la version electron on remet à zéro le document
      if (app.electron) {
        // resetDocument est une fonction de la page index.html de la version electron
        resetDocument() // eslint-disable-line no-undef
      }
      app.gestionnaire.initialise()
    }, function () {
      app.activeOutilCapt()
    })
  }
}