// PresetsUI.h
// generated by Fast Light User Interface Designer (fluid) version 1.0405

#ifndef PresetsUI_h
#define PresetsUI_h
#include <FL/Fl.H>
// Original ZynAddSubFX author Nasca Octavian Paul
// Copyright (C) 2002-2005 Nasca Octavian Paul
// Copyright 2009-2010, Alan Calvert
// Copyright 2017-2023, Will Godfrey

// This file is part of yoshimi, which is free software: you can redistribute
// it and/or modify it under the terms of the GNU General Public
// License as published by the Free Software Foundation; either version 2 of
// the License, or (at your option) any later version.

// yoshimi is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
// FOR A PARTICULAR PURPOSE.   See the GNU General Public License (version 2 or
// later) for more details.

// You should have received a copy of the GNU General Public License along with
// yoshimi; if not, write to the Free Software Foundation, Inc., 51 Franklin
// Street, Fifth Floor, Boston, MA  02110-1301, USA.

// This file is a derivative of the ZynAddSubFX original.


#include <FL/fl_ask.H>
#include <string>
#include <vector>
#include <unistd.h>
#include "Misc/SynthEngine.h"
#include "UI/ScaleTrackedWindow.h"

class PresetsUI_ {
public:
  virtual void refresh();
  ~PresetsUI_();
};
#include <FL/Fl_Browser.H>
#include <FL/Fl_Button.H>
#include <FL/Fl_Box.H>
#include <FL/Fl_Input.H>

class PresetsUI {
public:
  PresetsUI(SynthEngine *_synth);
  ~PresetsUI();
  ScaleTrackedWindow* make_window();
  ScaleTrackedWindow *Ucopywin;
private:
  inline void cb_Ucopywin_i(ScaleTrackedWindow*, void*);
  static void cb_Ucopywin(ScaleTrackedWindow*, void*);
public:
  Fl_Browser *Ucopybrowse;
private:
  inline void cb_Ucopybrowse_i(Fl_Browser*, void*);
  static void cb_Ucopybrowse(Fl_Browser*, void*);
public:
  Fl_Button *UcopyPresbutton;
private:
  inline void cb_UcopyPresbutton_i(Fl_Button*, void*);
  static void cb_UcopyPresbutton(Fl_Button*, void*);
public:
  Fl_Button *UcopyClipbutton;
private:
  inline void cb_UcopyClipbutton_i(Fl_Button*, void*);
  static void cb_UcopyClipbutton(Fl_Button*, void*);
public:
  Fl_Button *Ucopycancel;
private:
  inline void cb_Ucopycancel_i(Fl_Button*, void*);
  static void cb_Ucopycancel(Fl_Button*, void*);
public:
  Fl_Box *Ucopytype;
  Fl_Box *Ucopytypetext;
  Fl_Input *Upresetname;
private:
  inline void cb_Upresetname_i(Fl_Input*, void*);
  static void cb_Upresetname(Fl_Input*, void*);
public:
  ScaleTrackedWindow *Upastewin;
private:
  inline void cb_Upastewin_i(ScaleTrackedWindow*, void*);
  static void cb_Upastewin(ScaleTrackedWindow*, void*);
public:
  Fl_Browser *Upastebrowse;
private:
  inline void cb_Upastebrowse_i(Fl_Browser*, void*);
  static void cb_Upastebrowse(Fl_Browser*, void*);
public:
  Fl_Button *UpastePresbutton;
private:
  inline void cb_UpastePresbutton_i(Fl_Button*, void*);
  static void cb_UpastePresbutton(Fl_Button*, void*);
public:
  Fl_Button *UpasteClipbutton;
private:
  inline void cb_UpasteClipbutton_i(Fl_Button*, void*);
  static void cb_UpasteClipbutton(Fl_Button*, void*);
public:
  Fl_Button *Upastecancel;
private:
  inline void cb_Upastecancel_i(Fl_Button*, void*);
  static void cb_Upastecancel(Fl_Button*, void*);
public:
  Fl_Box *Upastetypetext;
  Fl_Box *Upastetype;
  Fl_Button *Udeletepbutton;
private:
  inline void cb_Udeletepbutton_i(Fl_Button*, void*);
  static void cb_Udeletepbutton(Fl_Button*, void*);
public:
  string setExten();
  void Ucopy(int _npart, int _kititem, int _engine = UNUSED, int _insert =  UNUSED, int _parameter = UNUSED, int _offset = UNUSED);
  void Upaste(int _npart, int _kititem, int _engine = UNUSED, int _insert =  UNUSED, int _parameter = UNUSED, int _offset = UNUSED);
  string Ufetch(int sent = 0);
  void send_data(float value, int action, int type, int control, int part = UNUSED, int kititem = UNUSED, int engine = UNUSED, int insert = UNUSED, int parameter = UNUSED, int offset = UNUSED, int miscmsg = UNUSED);
  void UpresetsRtext();
private:
  SynthEngine *synth;
  int presetsDW;
  int presetsDH;
  int UcopyW;
  int UpasteW;
  int npart;
  int kititem;
  int engine;
  int insert;
  int offset;
  int parameter;
  string groupName;
};
#endif
