//
// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
// Copyright (C) 2009 - INRIA - Vincent COUVERT
//
// This file must be used under the terms of the CeCILL.
// This source file is licensed as described in the file COPYING, which
// you should have received as part of this distribution.  The terms
// are also available at
// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
//

// Callback function for SCI2C GUI (See sci2c_gui.sci)

function cb_sci2c_gui

//
// --- File to convert ---
//
if get(gcbo,"tag")=="filebtn" then

  filename = uigetfile("*.sci", pwd(), gettext("Select the file to translate"));
  if ~isempty(filename) then
    set(findobj("tag", "fileedit"), "string", filename);
  end

//
// --- Sub-functions directory ---
//
elseif get(gcbo,"tag")=="subfunsbtn" then

  directory = uigetdir(pwd(), gettext("Select your sub-functions directory"));
  if ~isempty(directory) then
    set(findobj("tag", "subfunsedit"), "string", directory);
  end

//
// --- Output directory ---
//
elseif get(gcbo,"tag")=="outbtn" then

  directory = uigetdir(pwd(), gettext("Select the directory for generated files"));
  if ~isempty(directory) then
    set(findobj("tag", "outedit"), "string", directory);
  end

//
// --- Run mode option ---
//
elseif or(get(gcbo, "tag")==["runradioall","runradiotranslate","runradiogenlib"]) then

  set(findobj("tag", "runradioall"), "value", 0);
  set(findobj("tag", "runradiotranslate"), "value", 0);
  set(findobj("tag", "runradiogenlib"), "value", 0);

  set(gcbo, "value", 1);


// --- Output format option ---

elseif or(get(gcbo, "tag")==["outformatradiostalone","outformatradioarduino","outformatradioavr","outformatradiorpi"]) then

  set(findobj("tag", "outformatradiostalone"), "value", 0);
  set(findobj("tag", "outformatradioarduino"), "value", 0);
  set(findobj("tag", "outformatradioavr"), "value", 0);
  set(findobj("tag", "outformatradiorpi"), "value", 0);
  set(gcbo, "value", 1);


//
// --- Copy Scilab code into C option ---
//
elseif or(get(gcbo, "tag")==["sciintocradioyes","sciintocradiono"]) then

  set(findobj("tag", "sciintocradioyes"), "value", 0);
  set(findobj("tag", "sciintocradiono"), "value", 0);

  set(gcbo, "value", 1);

//
// --- Build Tool option ---
//
elseif or(get(gcbo, "tag")==["buildtoolradiowin","buildtoolradiounix"]) then

  set(findobj("tag", "buildtoolradiowin"), "value", 0);
  set(findobj("tag", "buildtoolradiounix"), "value", 0);

  set(gcbo, "value", 1);

//
// --- Cancel conversion ---
//
elseif get(gcbo, "tag")=="cancelbtn" | get(gcbo, "tag")=="close_menu" then
  delete(findobj("tag", "sci2cfig"));

//
// --- Launch conversion ---
//
elseif get(gcbo, "tag")=="convertbtn" then
  UserScilabMainFile =  get(findobj("tag", "fileedit"), "string");

  UserSciFilesPaths = get(findobj("tag", "subfunsedit"), "string");

//  Sci2CLibMainHeaderFName = get(findobj("tag", "headeredit"), "string");

  UserSciCodeMainDir = get(findobj("tag", "outedit"), "string");

  if get(findobj("tag", "runradioall"), "value") == 1 then
    RunMode = "All";
  elseif get(findobj("tag", "runradiotranslate"), "value") == 1 then
    RunMode = "Translate";
  else
    RunMode = "GenLibraryStructure";
  end

  if get(findobj("tag", "outformatradiostalone"), "value") == 1 then
    Target = "StandAlone";
  elseif get(findobj("tag", "outformatradioarduino"), "value") == 1 then
    Target = "Arduino";
  elseif get(findobj("tag", "outformatradioavr"), "value") == 1 then
    Target = "AVR";
  elseif get(findobj("tag", "outformatradiorpi"), "value") == 1 then
    Target = "RPi";
  end

  CopySciCodeIntoCCode = get(findobj("tag", "sciintocradioyes"), "value") == 1;

  if get(findobj("tag", "buildtoolradiowin"), "value") == 1 then
    NativeBuild = "nmake";
  elseif get(findobj("tag", "buildtoolradiounix"), "value") == 1 then
    NativeBuild = "make";
//  else
//    CCompilerPathStyle = "cygwin";
  end

  // -*- DEBUG ONLY -*-
  
//  mprintf("UserScilabMainFile = {%s}\n", UserScilabMainFile);
//  mprintf("UserSciFilesPaths = {%s}\n", UserSciFilesPaths);
//  mprintf("UserSciCodeMainDir = {%s}\n", UserSciCodeMainDir);
//  mprintf("RunMode = {%s}\n", RunMode);
//  mprintf("CopySciCodeIntoCCode = {%d}\n", bool2s(CopySciCodeIntoCCode));
//  mprintf("NativeBuild = {%s}\n", NativeBuild);
  scilab2c(UserScilabMainFile, UserSciCodeMainDir, UserSciFilesPaths, RunMode, NativeBuild,Target);
//
// --- sci2c help ---
//
elseif get(gcbo, "tag")=="sci2c_help_menu" then
  help sci2c

//
// --- About SCI2C ---
//
elseif get(gcbo, "tag")=="about_sci2c_menu" then
  help(gettext("About_SCI2C_tools"))
end

endfunction