Sostituito il metodo enable con activate nelle TWindow e TMask
Corretti spreadsheet di conseguenza git-svn-id: svn://10.65.10.50/trunk@746 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
6f9ba45c36
commit
98efeaff69
@ -51,7 +51,7 @@ bool TForm_flags::update(const char* s)
|
|||||||
|
|
||||||
void TForm_flags::print_on(ostream& out) const
|
void TForm_flags::print_on(ostream& out) const
|
||||||
{
|
{
|
||||||
TString s(4);
|
TString16 s;
|
||||||
|
|
||||||
if (automagic) s << "A";
|
if (automagic) s << "A";
|
||||||
if (disabled) s << "D";
|
if (disabled) s << "D";
|
||||||
@ -199,7 +199,7 @@ bool TForm_item::parse_item(TScanner& scanner)
|
|||||||
|
|
||||||
if (scanner.key() == "ME")
|
if (scanner.key() == "ME")
|
||||||
{
|
{
|
||||||
TString m(scanner.line());
|
TFixed_string m(scanner.line());
|
||||||
m.strip_spaces();
|
m.strip_spaces();
|
||||||
message(0).add(m);
|
message(0).add(m);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@ -287,7 +287,7 @@ void TForm_item::send_message(const TString& cmd, TForm_item* des) const
|
|||||||
} else
|
} else
|
||||||
if (cmd == "APPEND")
|
if (cmd == "APPEND")
|
||||||
{
|
{
|
||||||
TString val(80);
|
TString80 val;
|
||||||
val = des->get();
|
val = des->get();
|
||||||
if (val.not_empty()) val << ' ';
|
if (val.not_empty()) val << ' ';
|
||||||
val << get();
|
val << get();
|
||||||
@ -316,7 +316,7 @@ void TForm_item::send_message(const TString& cmd, TForm_item* des) const
|
|||||||
} else
|
} else
|
||||||
if (cmd[0] == '"')
|
if (cmd[0] == '"')
|
||||||
{
|
{
|
||||||
TString val(cmd);
|
TString80 val(cmd);
|
||||||
val.strip("\"");
|
val.strip("\"");
|
||||||
des->set(val);
|
des->set(val);
|
||||||
} else
|
} else
|
||||||
@ -330,7 +330,7 @@ bool TForm_item::do_message(int num)
|
|||||||
if (message(num).empty()) return FALSE;
|
if (message(num).empty()) return FALSE;
|
||||||
|
|
||||||
TToken_string msg(16, ',');
|
TToken_string msg(16, ',');
|
||||||
TString cmd(8);
|
TString16 cmd;
|
||||||
const char* m;
|
const char* m;
|
||||||
|
|
||||||
message(num).restart();
|
message(num).restart();
|
||||||
@ -378,7 +378,7 @@ void TForm_item::to_mask(TMask& m) const
|
|||||||
m.set(F_WIDTH, _width);
|
m.set(F_WIDTH, _width);
|
||||||
_flag.to_mask(m);
|
_flag.to_mask(m);
|
||||||
|
|
||||||
TString g;
|
TString16 g;
|
||||||
g << _group;
|
g << _group;
|
||||||
m.set(F_GROUP, g);
|
m.set(F_GROUP, g);
|
||||||
}
|
}
|
||||||
@ -391,7 +391,7 @@ void TForm_item::from_mask(const TMask& m)
|
|||||||
_prompt = m.get(F_PROMPT);
|
_prompt = m.get(F_PROMPT);
|
||||||
_width = atoi(m.get(F_WIDTH));
|
_width = atoi(m.get(F_WIDTH));
|
||||||
|
|
||||||
TString flag;
|
TString16 flag;
|
||||||
if (m.get(F_AUTOMAGIC) == "X") flag << "A";
|
if (m.get(F_AUTOMAGIC) == "X") flag << "A";
|
||||||
if (m.get(F_HIDDEN) == "X") flag << "H";
|
if (m.get(F_HIDDEN) == "X") flag << "H";
|
||||||
_flag.update(flag);
|
_flag.update(flag);
|
||||||
@ -403,7 +403,7 @@ bool TForm_item::edit(TMaskmode mode)
|
|||||||
TMask m("bagn003");
|
TMask m("bagn003");
|
||||||
if (mode == MODE_INS)
|
if (mode == MODE_INS)
|
||||||
{
|
{
|
||||||
m.TWindow::disable();
|
m.disable(0);
|
||||||
m.show();
|
m.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -329,7 +329,8 @@ int TMask::first_focus(short id)
|
|||||||
if (tempfirstfocus)
|
if (tempfirstfocus)
|
||||||
{
|
{
|
||||||
f = tempfirstfocus;
|
f = tempfirstfocus;
|
||||||
fld(f).set_dirty();
|
if (fld(f).dirty() == FALSE)
|
||||||
|
fld(f).set_dirty();
|
||||||
}
|
}
|
||||||
tempfirstfocus = 0;
|
tempfirstfocus = 0;
|
||||||
}
|
}
|
||||||
@ -1004,9 +1005,9 @@ void TMask::set(short fld_id, long n, bool hit)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void TMask::enable(bool on)
|
void TMask::activate(bool on)
|
||||||
{
|
{
|
||||||
TWindow::enable(on);
|
TWindow::activate(on);
|
||||||
if (toolwin() != NULL_WIN)
|
if (toolwin() != NULL_WIN)
|
||||||
show_window(toolwin(), on);
|
show_window(toolwin(), on);
|
||||||
}
|
}
|
||||||
|
@ -125,7 +125,7 @@ public:
|
|||||||
|
|
||||||
virtual void open();
|
virtual void open();
|
||||||
virtual void close();
|
virtual void close();
|
||||||
virtual void enable(bool on = TRUE);
|
virtual void activate(bool on = TRUE);
|
||||||
|
|
||||||
int id2pos(short id) const;
|
int id2pos(short id) const;
|
||||||
TMask_field& fld(int i) const { return (TMask_field&)_field[i]; } // Ritorna il campo i-esimo della maschera
|
TMask_field& fld(int i) const { return (TMask_field&)_field[i]; } // Ritorna il campo i-esimo della maschera
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// $Id: maskfld.cpp,v 1.59 1994-12-07 11:10:39 guy Exp $
|
// $Id: maskfld.cpp,v 1.60 1994-12-07 18:03:37 guy Exp $
|
||||||
#include <xvt.h>
|
#include <xvt.h>
|
||||||
|
|
||||||
#include <applicat.h>
|
#include <applicat.h>
|
||||||
@ -377,12 +377,7 @@ word TMask_field::last_key() const
|
|||||||
|
|
||||||
void TMask_field::set_dirty(bool d)
|
void TMask_field::set_dirty(bool d)
|
||||||
{
|
{
|
||||||
#ifdef DBG
|
if (_flags.dirty == 3 && d == FALSE)
|
||||||
if (dlg() == 103)
|
|
||||||
d *= 1;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (_flags.dirty > TRUE && d == FALSE)
|
|
||||||
return;
|
return;
|
||||||
_flags.dirty = d;
|
_flags.dirty = d;
|
||||||
set_focusdirty(d);
|
set_focusdirty(d);
|
||||||
|
@ -28,7 +28,7 @@ class TSpreadsheet : public TWindow
|
|||||||
|
|
||||||
TMask _mask;
|
TMask _mask;
|
||||||
int _columns;
|
int _columns;
|
||||||
bool _firstfocus, _enabled;
|
bool _firstfocus, _active;
|
||||||
|
|
||||||
XI_OBJ *_list, *_itf;
|
XI_OBJ *_list, *_itf;
|
||||||
|
|
||||||
@ -66,7 +66,7 @@ public:
|
|||||||
bool destroy(int rec = -1);
|
bool destroy(int rec = -1);
|
||||||
|
|
||||||
void set_focus_cell(int riga, int colonna);
|
void set_focus_cell(int riga, int colonna);
|
||||||
void enable(bool on);
|
void activate(bool on);
|
||||||
void enable_column(int col, bool on = TRUE);
|
void enable_column(int col, bool on = TRUE);
|
||||||
void enable_cell(int row, int column, bool on = TRUE);
|
void enable_cell(int row, int column, bool on = TRUE);
|
||||||
bool cell_disabled(int row, int column) const;
|
bool cell_disabled(int row, int column) const;
|
||||||
@ -85,7 +85,7 @@ public:
|
|||||||
bool dirty() const { return _owner->dirty(); }
|
bool dirty() const { return _owner->dirty(); }
|
||||||
void set_dirty(bool spork = TRUE) { _owner->set_dirty(spork); }
|
void set_dirty(bool spork = TRUE) { _owner->set_dirty(spork); }
|
||||||
|
|
||||||
bool enabled() const { return _enabled; }
|
bool active() const { return _active; }
|
||||||
|
|
||||||
void set_notify(SPREADSHEET_NOTIFY n) { _notify = n; }
|
void set_notify(SPREADSHEET_NOTIFY n) { _notify = n; }
|
||||||
|
|
||||||
@ -119,7 +119,7 @@ TSpreadsheet::TSpreadsheet(short x, short y, short dx, short dy,
|
|||||||
const char* head, WINDOW parent,
|
const char* head, WINDOW parent,
|
||||||
TSheet_field* o)
|
TSheet_field* o)
|
||||||
: _mask(maskname, maskno), _notify(NULL), _edit_field(NULL),
|
: _mask(maskname, maskno), _notify(NULL), _edit_field(NULL),
|
||||||
_owner(o), _cur_row(0), _cur_col(0),
|
_owner(o), _cur_row(0), _cur_col(0), _active(TRUE),
|
||||||
_row_dirty(FALSE), _check_enabled(TRUE), _firstfocus(TRUE)
|
_row_dirty(FALSE), _check_enabled(TRUE), _firstfocus(TRUE)
|
||||||
{
|
{
|
||||||
const int NUMBER_WIDTH = 3;
|
const int NUMBER_WIDTH = 3;
|
||||||
@ -703,9 +703,9 @@ break;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TSpreadsheet::enable(bool on)
|
void TSpreadsheet::activate(bool on)
|
||||||
{
|
{
|
||||||
_enabled = on;
|
_active = on;
|
||||||
|
|
||||||
const dword old = xi_get_attrib(_list);
|
const dword old = xi_get_attrib(_list);
|
||||||
dword att = on ? (old & ~XI_ATR_NAVIGATE) : (old | XI_ATR_NAVIGATE);
|
dword att = on ? (old & ~XI_ATR_NAVIGATE) : (old | XI_ATR_NAVIGATE);
|
||||||
@ -986,7 +986,7 @@ void TSpreadsheet::str2mask(int riga)
|
|||||||
{
|
{
|
||||||
TMask_field& f = sheet_mask().fld(pos);
|
TMask_field& f = sheet_mask().fld(pos);
|
||||||
f.set(val);
|
f.set(val);
|
||||||
const bool on = enabled() ? !cell_disabled(riga, id-FIRST_FIELD) : FALSE;
|
const bool on = active() ? !cell_disabled(riga, id-FIRST_FIELD) : FALSE;
|
||||||
f.enable(on);
|
f.enable(on);
|
||||||
|
|
||||||
if (f.dirty() <= TRUE)
|
if (f.dirty() <= TRUE)
|
||||||
@ -1197,7 +1197,7 @@ void TSheet_field::highlight() const
|
|||||||
|
|
||||||
void TSheet_field::enable(bool on)
|
void TSheet_field::enable(bool on)
|
||||||
{
|
{
|
||||||
_sheet->enable(on);
|
_sheet->activate(on);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TSheet_field::enable_column(int column, bool on)
|
void TSheet_field::enable_column(int column, bool on)
|
||||||
|
@ -1 +1 @@
|
|||||||
#define VERSION 1.18
|
#define VERSION 1.16
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// $Id: relapp.cpp,v 1.38 1994-12-07 12:21:01 guy Exp $
|
// $Id: relapp.cpp,v 1.39 1994-12-07 18:03:46 guy Exp $
|
||||||
#include <mailbox.h>
|
#include <mailbox.h>
|
||||||
#include <sheet.h>
|
#include <sheet.h>
|
||||||
#include <urldefid.h>
|
#include <urldefid.h>
|
||||||
@ -131,10 +131,11 @@ void TRelation_application::set_limits(byte what)
|
|||||||
{
|
{
|
||||||
if (has_filtered_cursor())
|
if (has_filtered_cursor())
|
||||||
{
|
{
|
||||||
TEdit_field* f = (TEdit_field*) get_search_field();
|
TEdit_field* f = (TEdit_field*)get_search_field();
|
||||||
|
|
||||||
CHECK(f, "Manca il campo di ricerca");
|
CHECK(f, "Manca il campo di ricerca");
|
||||||
TCursor* cur = f->browse()->cursor();
|
|
||||||
|
TBrowse* b = f->browse();
|
||||||
|
TCursor* cur = b ? b->cursor() : NULL;
|
||||||
if (cur)
|
if (cur)
|
||||||
{
|
{
|
||||||
cur->setkey();
|
cur->setkey();
|
||||||
@ -156,6 +157,7 @@ void TRelation_application::set_limits(byte what)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
file().setkey(1);
|
file().setkey(1);
|
||||||
if (what & 0x1)
|
if (what & 0x1)
|
||||||
{
|
{
|
||||||
@ -166,7 +168,6 @@ void TRelation_application::set_limits(byte what)
|
|||||||
_first = file().recno();
|
_first = file().recno();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (what & 0x2)
|
if (what & 0x2)
|
||||||
{
|
{
|
||||||
if (file().empty()) _last = 1;
|
if (file().empty()) _last = 1;
|
||||||
@ -790,6 +791,8 @@ bool TRelation_application::main_loop()
|
|||||||
case K_DEL:
|
case K_DEL:
|
||||||
if (relation_remove())
|
if (relation_remove())
|
||||||
query_mode();
|
query_mode();
|
||||||
|
if (_autoins_caller.not_empty())
|
||||||
|
k = K_QUIT;
|
||||||
break;
|
break;
|
||||||
case K_F9:
|
case K_F9:
|
||||||
if (save(TRUE))
|
if (save(TRUE))
|
||||||
|
@ -629,64 +629,74 @@ bool TFilename::ok() const
|
|||||||
|
|
||||||
// Certified 70%
|
// Certified 70%
|
||||||
const TFilename& TFilename::tempdir()
|
const TFilename& TFilename::tempdir()
|
||||||
{
|
{
|
||||||
const char* dirpref = getenv("TEMP");
|
static TFilename _tempdir;
|
||||||
if (dirpref == NULL) dirpref = getenv("TMP");
|
|
||||||
if (dirpref == NULL) dirpref = "/tmp";
|
|
||||||
set(dirpref);
|
|
||||||
|
|
||||||
const int last = len()-1;
|
if (_tempdir.empty())
|
||||||
if (!is_not_slash(_str[last]))
|
{
|
||||||
cut(last);
|
const char* dirpref = getenv("TEMP");
|
||||||
|
if (dirpref == NULL || *dirpref == '\0') dirpref = getenv("TMP");
|
||||||
int res = 0;
|
if (dirpref == NULL || *dirpref == '\0')
|
||||||
|
|
||||||
if (!fexist(_str))
|
|
||||||
{
|
|
||||||
res =
|
|
||||||
#if XVT_OS==XVT_OS_SCOUNIX
|
#if XVT_OS==XVT_OS_SCOUNIX
|
||||||
mkdir(_str, 0777);
|
dirpref = "/tmp";
|
||||||
#else
|
#else
|
||||||
mkdir(_str);
|
dirpref = "\\tmp";
|
||||||
|
#endif
|
||||||
|
_tempdir = dirpref;
|
||||||
|
|
||||||
|
const int last = len()-1;
|
||||||
|
if (!is_not_slash(_str[last]))
|
||||||
|
_tempdir.cut(last);
|
||||||
|
|
||||||
|
int res = 0;
|
||||||
|
|
||||||
|
if (!fexist(_tempdir))
|
||||||
|
{
|
||||||
|
#if XVT_OS==XVT_OS_SCOUNIX
|
||||||
|
res = mkdir(_tempdir, 0777);
|
||||||
|
#else
|
||||||
|
res = mkdir(_tempdir);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef FOXPRO
|
#ifndef FOXPRO
|
||||||
|
|
||||||
const TString& user = main_app().user();
|
const TString& user = main_app().user();
|
||||||
if (res == 0 && user.not_empty())
|
if (res == 0 && user.not_empty())
|
||||||
{
|
{
|
||||||
#if XVT_OS==XVT_OS_SCOUNIX
|
#if XVT_OS==XVT_OS_SCOUNIX
|
||||||
*this << '/'
|
_tempdir << '/' << user;
|
||||||
#else
|
#else
|
||||||
*this << '\\'
|
_tempdir << '\\' << user;
|
||||||
#endif
|
#endif
|
||||||
<< user;
|
lower();
|
||||||
lower();
|
if (!fexist(_tempdir))
|
||||||
if (!fexist(_str))
|
{
|
||||||
{
|
|
||||||
res =
|
|
||||||
#if XVT_OS==XVT_OS_SCOUNIX
|
#if XVT_OS==XVT_OS_SCOUNIX
|
||||||
mkdir(_str, 0777);
|
res = mkdir(_str, 0777);
|
||||||
#else
|
#else
|
||||||
mkdir(_str);
|
res = mkdir(_str);
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* FOXPRO */
|
#endif /* FOXPRO */
|
||||||
|
|
||||||
|
if (res != 0)
|
||||||
|
fatal_box("Impossibile creare la directory '%s' per i file temporanei", (const char*)_tempdir);
|
||||||
|
|
||||||
|
_tempdir.insert("TMP=", 0);
|
||||||
|
putenv(_tempdir);
|
||||||
|
}
|
||||||
|
|
||||||
if (res != 0)
|
return set(_tempdir.mid(4));
|
||||||
fatal_box("Impossibile creare la directory '%s' per i file temporanei", _str);
|
|
||||||
|
|
||||||
return *this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Certified 50%
|
// Certified 50%
|
||||||
const TFilename& TFilename::temp(const char* prefix)
|
const TFilename& TFilename::temp(const char* prefix)
|
||||||
{
|
{
|
||||||
TFilename dirpref(tempdir());
|
tempdir();
|
||||||
|
|
||||||
if (prefix && *prefix)
|
if (prefix && *prefix)
|
||||||
{
|
{
|
||||||
@ -709,16 +719,10 @@ const TFilename& TFilename::temp(const char* prefix)
|
|||||||
}
|
}
|
||||||
else cut(0);
|
else cut(0);
|
||||||
|
|
||||||
TFilename oldtmp(getenv("TMP"));
|
|
||||||
dirpref.insert("TMP=", 0);
|
|
||||||
putenv(dirpref);
|
|
||||||
|
|
||||||
char* t = tempnam(NULL, (char*)_str);
|
char* t = tempnam(NULL, (char*)_str);
|
||||||
CHECK(t != NULL, "Can't execute tempnam");
|
CHECK(t != NULL, "Can't execute tempnam");
|
||||||
set(t);
|
set(t);
|
||||||
free(t);
|
free(t);
|
||||||
oldtmp.insert("TMP=", 0);
|
|
||||||
putenv(oldtmp);
|
|
||||||
|
|
||||||
#ifdef DBG
|
#ifdef DBG
|
||||||
if (fexist(_str))
|
if (fexist(_str))
|
||||||
|
@ -122,7 +122,7 @@ void TWindow_manager::reg(TWindow* m)
|
|||||||
case 1 :
|
case 1 :
|
||||||
win_menu_enable(TASK_WIN, M_FILE_QUIT, FALSE);
|
win_menu_enable(TASK_WIN, M_FILE_QUIT, FALSE);
|
||||||
default:
|
default:
|
||||||
_window[_current-1]->disable(); break;
|
_window[_current-1]->deactivate(); break;
|
||||||
}
|
}
|
||||||
|
|
||||||
_window[_current] = m;
|
_window[_current] = m;
|
||||||
@ -147,7 +147,7 @@ void TWindow_manager::unreg(const TWindow* m)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
cur_win()->enable();
|
cur_win()->activate();
|
||||||
win_menu_enable(TASK_WIN, M_FILE_QUIT, _current == 0);
|
win_menu_enable(TASK_WIN, M_FILE_QUIT, _current == 0);
|
||||||
win_update_menu_bar(TASK_WIN);
|
win_update_menu_bar(TASK_WIN);
|
||||||
cur_win()->set_focus();
|
cur_win()->set_focus();
|
||||||
@ -180,7 +180,7 @@ bool TWindow::_ctools_saved;
|
|||||||
|
|
||||||
|
|
||||||
TWindow::TWindow()
|
TWindow::TWindow()
|
||||||
: _win(NULL_WIN), _open(FALSE), _modal(FALSE),
|
: _win(NULL_WIN), _open(FALSE), _modal(FALSE), _active(TRUE),
|
||||||
_running(FALSE), _pixmap(FALSE), _lastkey(0)
|
_running(FALSE), _pixmap(FALSE), _lastkey(0)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
@ -357,9 +357,9 @@ void TWindow::maximize() const
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void TWindow::enable(bool on)
|
void TWindow::activate(bool on)
|
||||||
{
|
{
|
||||||
enable_window(win(), _enabled = on);
|
enable_window(win(), _active = on);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -60,7 +60,7 @@ protected:
|
|||||||
// @DPROT
|
// @DPROT
|
||||||
bool _open : 1; // Se la finestra e' aperta
|
bool _open : 1; // Se la finestra e' aperta
|
||||||
bool _modal : 1; // Se la finestra e' modale
|
bool _modal : 1; // Se la finestra e' modale
|
||||||
bool _enabled : 1; // Se la finestra e' abilitata
|
bool _active : 1; // Se la finestra e' abilitata
|
||||||
bool _running : 1; // Se la finestra e' in esecuzione
|
bool _running : 1; // Se la finestra e' in esecuzione
|
||||||
bool _pixmap : 1; // Se se le coordiante sono in pixel
|
bool _pixmap : 1; // Se se le coordiante sono in pixel
|
||||||
|
|
||||||
@ -94,7 +94,7 @@ public:
|
|||||||
bool is_open() const { return _open; } // Ritorna _open
|
bool is_open() const { return _open; } // Ritorna _open
|
||||||
bool is_modal() const { return _modal; } // Ritorna _modal
|
bool is_modal() const { return _modal; } // Ritorna _modal
|
||||||
bool is_running() const { return _running; } // Ritorna _running
|
bool is_running() const { return _running; } // Ritorna _running
|
||||||
bool enabled() const { return _enabled; }
|
bool active() const { return _active; }
|
||||||
|
|
||||||
TPoint size() const; // Determina numero di righe e colonne nella finestra
|
TPoint size() const; // Determina numero di righe e colonne nella finestra
|
||||||
short rows() const { return (short)size().y; }// Ritorna numero di righe
|
short rows() const { return (short)size().y; }// Ritorna numero di righe
|
||||||
@ -110,8 +110,8 @@ public:
|
|||||||
|
|
||||||
void iconize() const;
|
void iconize() const;
|
||||||
void maximize() const;
|
void maximize() const;
|
||||||
virtual void enable(bool = TRUE);
|
virtual void activate(bool = TRUE);
|
||||||
void disable() { enable(FALSE); }
|
void deactivate() { activate(FALSE); }
|
||||||
|
|
||||||
void open_modal(); // Mostra la finestra modale
|
void open_modal(); // Mostra la finestra modale
|
||||||
void close_modal(); // Nasconde la finestra modale
|
void close_modal(); // Nasconde la finestra modale
|
||||||
|
Loading…
x
Reference in New Issue
Block a user