�PNG  IHDR22?�� pHYs  �� OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR RB���&*! J�!��Q�EEȠ�����Q, � ��!���������{�kּ������>���� �H3Q5� �B�������.@� $p�d!s�#�~<<+"��x� �M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!�� e�Dh;��V�EX0fK�9�-0IWfH���� � 0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4���������x����6��_-��"bb���ϫp@�t~��,/��;�m��%�h^ �u��f�@����W�p�~<�5�j>{�-�]c�K'Xt����o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A��,���� �`6�B$��BB d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(�� A�a!ڈb�X#����!�H�$ ɈQ"K�5H1R�T UH�=r9�\F��;�2����G1���Q=� �C��7�F� �dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8, �c˱"� ���V����cϱw�E� 6wB aAHXLXN�H� $4� 7 �Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�, +ȅ����3��!�[ �b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w ��Ljg(�gw��L�Ӌ�T071���oUX*�*|�� �J�&�*/T����ު U�U�T��^S}�FU3S� Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_�� c�x,!k ��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN �(���~���)�)�4L�1e\k����X�H�Q�G�6������E�Y��A�J'\'Gg����S�Sݧ �M=:��.�k���Dw�n��^��Lo��y���}/�T�m���G X� $� �<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��= ���Z~s�r:V:ޚΜ�?}����/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z���������ۯ�6�i�ܟ�4�)�Y3s���C�Q��? ��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�������!h�쐭!��Α�i�P~���a�a��~ '���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl������� �{�/�]py�����.,:�@L�N8��A*��%�w%� y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L Lݛ:��v m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y- �B��TZ(�*�geWf�͉�9���+��̳�ې7�����ᒶ��KW-X潬j9�������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n �ڴ �V����E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa��n��{��4���[���>ɾ�UUM�f�e�I���?�������m]�Nmq����#�׹���=TR��+�G�����w- 6 U����#pDy��� �� :�v�{���vg/jB��F�S��[b[�O�>����z�G��499�?r����C�d�&����ˮ/~�����јѡ�򗓿m|������������x31^�V���w�w��O�| (�h���SЧ��������c3-� cHRMz%������u0�`:�o�_�F5IDATx��ytUս�?�;���fN$$��@B�!�k��� -*�gE���j�O�kQ�ʠ`U�B_ �AÐ0%�Ȕ�@r3ޛ;߳��$�@��v����^�s����������$��ߢ !�W��5�̱'-٘������4�>�Rƫ$�G��0U�H}�_ _� #��k�MJ/=�9Du *ڲ�k�PQ;0��j|�*�$�^컂脛y���>�z×� B��� ��(�:$�ʔ_�6��C!B����MVx��a��ζyY����j��ƋY2�9�F�{r��r�딟F��Q��hY6��� x��[l��RC��������nt@��;P��3��� F�w��7��:�P���ɋ'���mj���Bƪ�$�Q�L��y��߷g��\���z����v5�p�v$�v櫻�`6~K �Y�X����,�:��"�o�e0II"(��,������l_�C���/4�+f�E�!q��:����u����c��樼.UE�@� �]K�W���$-�h]�JG���Dz)�`��.�A/ ���mᏣc�3jK� �!�>���$�Q�!�_�? \�C2(E �M$Z I{�U���s�ǣ���=��@Բe ޻��W�����@ �w����}�9v,)��.}*|"�s��di���,���G�]W�AC�������|<����[��ߕ������K�*�G nߴ!��‹��J�!��6(L�a)��Am��������;adf��:�xm��nh�;֦I��(���o�C~ډa?�=��s����h��E������xp����)���_���t��W�����´;8���`dz=(��@@�+,�;�`�fhl��XȌ�3,uI�~z(J����� �ZX�A����H'�À�㜦�82|��a�n�z2��I���� ���EY�h�ε<�0�q�{��C��v�˅��?"@��χ�x�WS+��N�~�KQ�J�8ل�� _.W��� !TU{�����,��"�� �;�������HI S� ��))�o�1�H�D� ���� (� ;����"Ҕ��,���� �F=���O��&�Ph>�`���y��߲ &S��P�<��'��1s�1cĂ�N����2)����@�u��tv��<�+�-&�����h��[!FSG���' � z z0��<����8d&�����E0�,��<��"!P�b4��� �{S�����X����.�囤���T��hEF��X�q0"-<����h���]�Py*����F⩍��@v�˂�Y08�� .q��a��s����(!<̫1�3�L�H��7sYW�`��qtu�\7��?�@�Y�� %Ka�x�GZ�*W�P��y�����N0r9��Z�c�%���q,��k�����!!,��>���IB��� �x1�Xu�Y���v-���ֺ��N������JP��a�2`�e5��w��u;�6�i���̃��(K���ťa��(l51��JL��O'%���]���ٖ뿉!��{*�p+f ���i8��D�ȑ���ܩ�M��V��ӟz��x�7Z�1i}�^͜���6e����x��)u�d�ˏ�V�eG�\�X1�����=n�U'�~Y����L�\,�(d!x ,�:�TW8� M`r���@��r+v�Q0��>^;˴�VbF��('����� �*O��i��j�Ӆ����^�S3&� ���{������.ی�� N;��NU%d0�Ce\r"�C�b��&t7N�7��� �ȪD�[%l�۪�$��'m?�A9tI�9>��NVL ��� 6v~M�����ъ�B���0����9$&=ώm��W�0���L���&��E���f�f��'+�9��hv��7,���M��6�D�&�^� �����8 D֮�����o��k^z��O��hP�8q�5d*��YVq3�{��������#LX4�?��jP=3�~�؅c�ݰ�̱�ұ��8̲��2�G�����j��έ�9��w7���U�X�w�85C��?!I&���o&����L���I#�^�eV�,�^t5�k� �xs˛\��U�8��."���{���ǵ�l4��ݼ�;��r"���G�/~���gJV�N糦��ZZ^k+NN�D��I$�=OE�z����|*�*{��%k���G��>�`9��b;�s���8,�qs��c��.b��q�%�>r��n�R�Ƨ�%�,�A��le#�8���}; 21�0�b�&�QX�f���q�00����$>�h�N�'�a3��A���/�r ��L5�8�GԲ'�����w;��c#�q1���h$*��V^�k��QĽ�b:i������� ����H F#�_���,��]g����Ը����`RUU���� ��"�qD���>-��ϤI�~��3�̴�����NZ[[555�eeek7�m����YF#[��Đ��R��i��L�H�r ��@��J-�Pŝ��_|�-��6y��ks�V�U~��6���w.����(��0A� 4��f��� /���C�xŊ�ٳ����z=6�����rg���mKo��o�/����a�g���?'9%9��P��斓��~���L{�� �H��{AW��B��$����v�1b�&Mb�ر��ر#�0`�`xMBp! )Z�Nmo�mZ�g�}�eذaWTVV ���'99��C5��&�&+5�bT>|8��PUUETT����&���t��~TE%��'������b�tEGG;RSS�S�N�v��ѯ��t����u1@�ޚ"f��͈���r'L�Ph��m��ƌ�74o��`�x�q�P���NRSS�X,�����l&&&��MFFA!-��`��ҷ�n��Yuu�����x<I�LB%����KԒ50�!�3�bz�����ʸKL���;---�l6[��`��������Ȏ;�����egg4��!D�T��jWujyZ��������K����%����p�^���X,6��sV=�ܖ����6�3�X ���4ҿ��A2�&����_k�;d�� �VfOIEND�B`� 0x0x
PHP 8.1.34
Preview: cursesf.h Size: 27.37 KB
//usr/include/cursesf.h
// * This makes emacs happy -*-Mode: C++;-*-
// vile:cppmode
/****************************************************************************
 * Copyright 2019-2020,2021 Thomas E. Dickey                                *
 * Copyright 1998-2012,2014 Free Software Foundation, Inc.                  *
 *                                                                          *
 * Permission is hereby granted, free of charge, to any person obtaining a  *
 * copy of this software and associated documentation files (the            *
 * "Software"), to deal in the Software without restriction, including      *
 * without limitation the rights to use, copy, modify, merge, publish,      *
 * distribute, distribute with modifications, sublicense, and/or sell       *
 * copies of the Software, and to permit persons to whom the Software is    *
 * furnished to do so, subject to the following conditions:                 *
 *                                                                          *
 * The above copyright notice and this permission notice shall be included  *
 * in all copies or substantial portions of the Software.                   *
 *                                                                          *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
 * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
 * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
 *                                                                          *
 * Except as contained in this notice, the name(s) of the above copyright   *
 * holders shall not be used in advertising or otherwise to promote the     *
 * sale, use or other dealings in this Software without prior written       *
 * authorization.                                                           *
 ****************************************************************************/

/****************************************************************************
 *   Author: Juergen Pfeifer, 1997                                          *
 ****************************************************************************/

// $Id: cursesf.h,v 1.38 2021/04/17 18:11:08 tom Exp $

#ifndef NCURSES_CURSESF_H_incl
#define NCURSES_CURSESF_H_incl 1

#include <cursesp.h>

#ifndef __EXT_QNX
#include <string.h>
#endif

extern "C" {
#  include <form.h>
}
//
// -------------------------------------------------------------------------
// The abstract base class for builtin and user defined Fieldtypes.
// -------------------------------------------------------------------------
//
class NCURSES_CXX_IMPEXP NCursesFormField; // forward declaration

// Class to represent builtin field types as well as C++ written new
// fieldtypes (see classes UserDefineFieldType...
class NCURSES_CXX_IMPEXP NCursesFieldType
{
  friend class NCursesFormField;

protected:
  FIELDTYPE* fieldtype;

  inline void OnError(int err) const THROW2(NCursesException const, NCursesFormException) {
    if (err!=E_OK)
      THROW(new NCursesFormException (err));
  }

  NCursesFieldType(FIELDTYPE *f) : fieldtype(f) {
  }

  virtual ~NCursesFieldType() {}

  // Set the fields f fieldtype to this one.
  virtual void set(NCursesFormField& f) = 0;

public:
  NCursesFieldType()
    : fieldtype(STATIC_CAST(FIELDTYPE*)(0))
  {
  }

  NCursesFieldType& operator=(const NCursesFieldType& rhs)
  {
    if (this != &rhs) {
      *this = rhs;
    }
    return *this;
  }

  NCursesFieldType(const NCursesFieldType& rhs)
    : fieldtype(rhs.fieldtype)
  {
  }

};

//
// -------------------------------------------------------------------------
// The class representing a forms field, wrapping the lowlevel FIELD struct
// -------------------------------------------------------------------------
//
class NCURSES_CXX_IMPEXP NCursesFormField
{
  friend class NCursesForm;

protected:
  FIELD *field;		     // lowlevel structure
  NCursesFieldType* ftype;   // Associated field type

  // Error handler
  inline void OnError (int err) const THROW2(NCursesException const, NCursesFormException) {
    if (err != E_OK)
      THROW(new NCursesFormException (err));
  }

public:
  // Create a 'Null' field. Can be used to delimit a field list
  NCursesFormField()
    : field(STATIC_CAST(FIELD*)(0)),
      ftype(STATIC_CAST(NCursesFieldType*)(0))
  {
  }

  // Create a new field
  NCursesFormField (int rows,
		    int ncols,
		    int first_row = 0,
		    int first_col = 0,
		    int offscreen_rows = 0,
		    int additional_buffers = 0)
    : field(0),
      ftype(STATIC_CAST(NCursesFieldType*)(0))
  {
      field = ::new_field(rows, ncols, first_row, first_col,
			  offscreen_rows, additional_buffers);
      if (!field)
	OnError(errno);
  }

  NCursesFormField& operator=(const NCursesFormField& rhs)
  {
    if (this != &rhs) {
      *this = rhs;
    }
    return *this;
  }

  NCursesFormField(const NCursesFormField& rhs)
    : field(rhs.field), ftype(rhs.ftype)
  {
  }

  virtual ~NCursesFormField () THROWS(NCursesException);

  // Duplicate the field at a new position
  inline NCursesFormField* dup(int first_row, int first_col)
  {
    NCursesFormField* f = new NCursesFormField();
    if (!f)
      OnError(E_SYSTEM_ERROR);
    else {
      f->ftype = ftype;
      f->field = ::dup_field(field,first_row,first_col);
      if (!f->field)
	OnError(errno);
    }
    return f;
  }

  // Link the field to a new location
  inline NCursesFormField* link(int first_row, int first_col) {
    NCursesFormField* f = new NCursesFormField();
    if (!f)
      OnError(E_SYSTEM_ERROR);
    else {
      f->ftype = ftype;
      f->field = ::link_field(field,first_row,first_col);
      if (!f->field)
	OnError(errno);
    }
    return f;
  }

  // Get the lowlevel field representation
  inline FIELD* get_field() const {
    return field;
  }

  // Retrieve info about the field
  inline void info(int& rows, int& ncols,
		   int& first_row, int& first_col,
		   int& offscreen_rows, int& additional_buffers) const {
    OnError(::field_info(field, &rows, &ncols,
			 &first_row, &first_col,
			 &offscreen_rows, &additional_buffers));
  }

  // Retrieve info about the fields dynamic properties.
  inline void dynamic_info(int& dynamic_rows, int& dynamic_cols,
			   int& max_growth) const {
    OnError(::dynamic_field_info(field, &dynamic_rows, &dynamic_cols,
				 &max_growth));
  }

  // For a dynamic field you may set the maximum growth limit.
  // A zero means unlimited growth.
  inline void set_maximum_growth(int growth = 0) {
    OnError(::set_max_field(field,growth));
  }

  // Move the field to a new position
  inline void move(int row, int col) {
    OnError(::move_field(field,row,col));
  }

  // Mark the field to start a new page
  inline void new_page(bool pageFlag = FALSE) {
    OnError(::set_new_page(field,pageFlag));
  }

  // Retrieve whether or not the field starts a new page.
  inline bool is_new_page() const {
    return ::new_page(field);
  }

  // Set the justification for the field
  inline void set_justification(int just) {
    OnError(::set_field_just(field,just));
  }

  // Retrieve the fields justification
  inline int justification() const {
    return ::field_just(field);
  }
  // Set the foreground attribute for the field
  inline void set_foreground(chtype foreground) {
    OnError(::set_field_fore(field,foreground));
  }

  // Retrieve the fields foreground attribute
  inline chtype fore() const {
    return ::field_fore(field);
  }

  // Set the background attribute for the field
  inline void set_background(chtype background) {
    OnError(::set_field_back(field,background));
  }

  // Retrieve the fields background attribute
  inline chtype back() const {
    return ::field_back(field);
  }

  // Set the padding character for the field
  inline void set_pad_character(int padding) {
    OnError(::set_field_pad(field, padding));
  }

  // Retrieve the fields padding character
  inline int pad() const {
    return ::field_pad(field);
  }

  // Switch on the fields options
  inline void options_on (Field_Options opts) {
    OnError (::field_opts_on (field, opts));
  }

  // Switch off the fields options
  inline void options_off (Field_Options opts) {
    OnError (::field_opts_off (field, opts));
  }

  // Retrieve the fields options
  inline Field_Options options () const {
    return ::field_opts (field);
  }

  // Set the fields options
  inline void set_options (Field_Options opts) {
    OnError (::set_field_opts (field, opts));
  }

  // Mark the field as changed
  inline void set_changed(bool changeFlag = TRUE) {
    OnError(::set_field_status(field,changeFlag));
  }

  // Test whether or not the field is marked as changed
  inline bool changed() const {
    return ::field_status(field);
  }

  // Return the index of the field in the field array of a form
  // or -1 if the field is not associated to a form
  inline int (index)() const {
    return ::field_index(field);
  }

  // Store a value in a fields buffer. The default buffer is nr. 0
  inline void set_value(const char *val, int buffer = 0) {
    OnError(::set_field_buffer(field,buffer,val));
  }

  // Retrieve the value of a fields buffer. The default buffer is nr. 0
  inline char* value(int buffer = 0) const {
    return ::field_buffer(field,buffer);
  }

  // Set the validation type of the field.
  inline void set_fieldtype(NCursesFieldType& f) {
    ftype = &f;
    f.set(*this); // A good friend may do that...
  }

  // Retrieve the validation type of the field.
  inline NCursesFieldType* fieldtype() const {
    return ftype;
  }

};

  // This are the built-in hook functions in this C++ binding. In C++ we use
  // virtual member functions (see below On_..._Init and On_..._Termination)
  // to provide this functionality in an object oriented manner.
extern "C" {
  void _nc_xx_frm_init(FORM *);
  void _nc_xx_frm_term(FORM *);
  void _nc_xx_fld_init(FORM *);
  void _nc_xx_fld_term(FORM *);
}

//
// -------------------------------------------------------------------------
// The class representing a form, wrapping the lowlevel FORM struct
// -------------------------------------------------------------------------
//
class NCURSES_CXX_IMPEXP NCursesForm : public NCursesPanel
{
protected:
  FORM* form;  // the lowlevel structure

private:
  NCursesWindow* sub;   // the subwindow object
  bool b_sub_owner;     // is this our own subwindow?
  bool b_framed;	// has the form a border?
  bool b_autoDelete;    // Delete fields when deleting form?

  NCursesFormField** my_fields; // The array of fields for this form

  // This structure is used for the form's user data field to link the
  // FORM* to the C++ object and to provide extra space for a user pointer.
  typedef struct {
    void*	       m_user;	    // the pointer for the user's data
    const NCursesForm* m_back;      // backward pointer to C++ object
    const FORM*	       m_owner;
  } UserHook;

  // Get the backward pointer to the C++ object from a FORM
  static inline NCursesForm* getHook(const FORM *f) {
    UserHook* hook = reinterpret_cast<UserHook*>(::form_userptr(f));
    assert(hook != 0 && hook->m_owner==f);
    return const_cast<NCursesForm*>(hook->m_back);
  }

  friend void _nc_xx_frm_init(FORM *);
  friend void _nc_xx_frm_term(FORM *);
  friend void _nc_xx_fld_init(FORM *);
  friend void _nc_xx_fld_term(FORM *);

  // Calculate FIELD* array for the menu
  FIELD** mapFields(NCursesFormField* nfields[]);

protected:
  // internal routines
  inline void set_user(void *user) {
    UserHook* uptr = reinterpret_cast<UserHook*>(::form_userptr (form));
    assert (uptr != 0 && uptr->m_back==this && uptr->m_owner==form);
    uptr->m_user = user;
  }

  inline void *get_user() {
    UserHook* uptr = reinterpret_cast<UserHook*>(::form_userptr (form));
    assert (uptr != 0 && uptr->m_back==this && uptr->m_owner==form);
    return uptr->m_user;
  }

  void InitForm (NCursesFormField* Fields[],
		 bool with_frame,
		 bool autoDeleteFields);

  inline void OnError (int err) const THROW2(NCursesException const, NCursesFormException) {
    if (err != E_OK)
      THROW(new NCursesFormException (err));
  }

  // this wraps the form_driver call.
  virtual int driver (int c) ;

  // 'Internal' constructor, builds an object without association to a
  // field array.
  NCursesForm( int  nlines,
	       int  ncols,
	       int  begin_y = 0,
	       int  begin_x = 0)
    : NCursesPanel(nlines, ncols, begin_y, begin_x),
      form (STATIC_CAST(FORM*)(0)),
      sub(0),
      b_sub_owner(0),
      b_framed(0),
      b_autoDelete(0),
      my_fields(0)
  {
  }

public:
  // Create form for the default panel.
  NCursesForm (NCursesFormField* Fields[],
	       bool with_frame=FALSE,	      // reserve space for a frame?
	       bool autoDelete_Fields=FALSE)  // do automatic cleanup?
    : NCursesPanel(),
      form(0),
      sub(0),
      b_sub_owner(0),
      b_framed(0),
      b_autoDelete(0),
      my_fields(0)
  {
    InitForm(Fields, with_frame, autoDelete_Fields);
  }

  // Create a form in a panel with the given position and size.
  NCursesForm (NCursesFormField* Fields[],
	       int  nlines,
	       int  ncols,
	       int  begin_y,
	       int  begin_x,
	       bool with_frame=FALSE,	     // reserve space for a frame?
	       bool autoDelete_Fields=FALSE) // do automatic cleanup?
    : NCursesPanel(nlines, ncols, begin_y, begin_x),
      form(0),
      sub(0),
      b_sub_owner(0),
      b_framed(0),
      b_autoDelete(0),
      my_fields(0)
  {
      InitForm(Fields, with_frame, autoDelete_Fields);
  }

  NCursesForm& operator=(const NCursesForm& rhs)
  {
    if (this != &rhs) {
      *this = rhs;
      NCursesPanel::operator=(rhs);
    }
    return *this;
  }

  NCursesForm(const NCursesForm& rhs)
    : NCursesPanel(rhs),
      form(rhs.form),
      sub(rhs.sub),
      b_sub_owner(rhs.b_sub_owner),
      b_framed(rhs.b_framed),
      b_autoDelete(rhs.b_autoDelete),
      my_fields(rhs.my_fields)
  {
  }

  virtual ~NCursesForm() THROWS(NCursesException);

  // Set the default attributes for the form
  virtual void setDefaultAttributes();

  // Retrieve current field of the form.
  inline NCursesFormField* current_field() const {
    return my_fields[::field_index(::current_field(form))];
  }

  // Set the forms subwindow
  void setSubWindow(NCursesWindow& sub);

  // Set these fields for the form
  inline void setFields(NCursesFormField* Fields[]) {
    OnError(::set_form_fields(form,mapFields(Fields)));
  }

  // Remove the form from the screen
  inline void unpost (void) {
    OnError (::unpost_form (form));
  }

  // Post the form to the screen if flag is true, unpost it otherwise
  inline void post(bool flag = TRUE) {
    OnError (flag ? ::post_form(form) : ::unpost_form (form));
  }

  // Decorations
  inline void frame(const char *title=NULL, const char* btitle=NULL) {
    if (b_framed)
      NCursesPanel::frame(title,btitle);
    else
      OnError(E_SYSTEM_ERROR);
  }

  inline void boldframe(const char *title=NULL, const char* btitle=NULL) {
    if (b_framed)
      NCursesPanel::boldframe(title,btitle);
    else
      OnError(E_SYSTEM_ERROR);
  }

  inline void label(const char *topLabel, const char *bottomLabel) {
    if (b_framed)
      NCursesPanel::label(topLabel,bottomLabel);
    else
      OnError(E_SYSTEM_ERROR);
  }

  // -----
  // Hooks
  // -----

  // Called after the form gets repositioned in its window.
  // This is especially true if the form is posted.
  virtual void On_Form_Init();

  // Called before the form gets repositioned in its window.
  // This is especially true if the form is unposted.
  virtual void On_Form_Termination();

  // Called after the field became the current field
  virtual void On_Field_Init(NCursesFormField& field);

  // Called before this field is left as current field.
  virtual void On_Field_Termination(NCursesFormField& field);

  // Calculate required window size for the form.
  void scale(int& rows, int& ncols) const {
    OnError(::scale_form(form,&rows,&ncols));
  }

  // Retrieve number of fields in the form.
  int count() const {
    return ::field_count(form);
  }

  // Make the page the current page of the form.
  void set_page(int pageNum) {
    OnError(::set_form_page(form, pageNum));
  }

  // Retrieve current page number
  int page() const {
    return ::form_page(form);
  }

  // Switch on the forms options
  inline void options_on (Form_Options opts) {
    OnError (::form_opts_on (form, opts));
  }

  // Switch off the forms options
  inline void options_off (Form_Options opts) {
    OnError (::form_opts_off (form, opts));
  }

  // Retrieve the forms options
  inline Form_Options options () const {
    return ::form_opts (form);
  }

  // Set the forms options
  inline void set_options (Form_Options opts) {
    OnError (::set_form_opts (form, opts));
  }

  // Are there more data in the current field after the data shown
  inline bool data_ahead() const {
    return ::data_ahead(form);
  }

  // Are there more data in the current field before the data shown
  inline bool data_behind() const {
    return ::data_behind(form);
  }

  // Position the cursor to the current field
  inline void position_cursor () {
    OnError (::pos_form_cursor (form));
  }
  // Set the current field
  inline void set_current(NCursesFormField& F) {
    OnError (::set_current_field(form, F.field));
  }

  // Provide a default key virtualization. Translate the keyboard
  // code c into a form request code.
  // The default implementation provides a hopefully straightforward
  // mapping for the most common keystrokes and form requests.
  virtual int virtualize(int c);

  // Operators
  inline NCursesFormField* operator[](int i) const {
    if ( (i < 0) || (i >= ::field_count (form)) )
      OnError (E_BAD_ARGUMENT);
    return my_fields[i];
  }

  // Perform the menu's operation
  // Return the field where you left the form.
  virtual NCursesFormField* operator()(void);

  // Exception handlers. The default is a Beep.
  virtual void On_Request_Denied(int c) const;
  virtual void On_Invalid_Field(int c) const;
  virtual void On_Unknown_Command(int c) const;

};

//
// -------------------------------------------------------------------------
// This is the typical C++ typesafe way to allow to attach
// user data to a field of a form. Its assumed that the user
// data belongs to some class T. Use T as template argument
// to create a UserField.
// -------------------------------------------------------------------------
template<class T> class NCURSES_CXX_IMPEXP NCursesUserField : public NCursesFormField
{
public:
  NCursesUserField (int rows,
		    int ncols,
		    int first_row = 0,
		    int first_col = 0,
		    const T* p_UserData = STATIC_CAST(T*)(0),
		    int offscreen_rows = 0,
		    int additional_buffers = 0)
    : NCursesFormField (rows, ncols,
			first_row, first_col,
			offscreen_rows, additional_buffers) {
      if (field)
	OnError(::set_field_userptr(field, STATIC_CAST(void *)(p_UserData)));
  }

  virtual ~NCursesUserField() THROWS(NCursesException) {};

  inline const T* UserData (void) const {
    return reinterpret_cast<const T*>(::field_userptr (field));
  }

  inline virtual void setUserData(const T* p_UserData) {
    if (field)
      OnError (::set_field_userptr (field, STATIC_CAST(void *)(p_UserData)));
  }
};
//
// -------------------------------------------------------------------------
// The same mechanism is used to attach user data to a form
// -------------------------------------------------------------------------
//
template<class T> class NCURSES_CXX_IMPEXP NCursesUserForm : public NCursesForm
{
protected:
  // 'Internal' constructor, builds an object without association to a
  // field array.
  NCursesUserForm( int  nlines,
		   int  ncols,
		   int  begin_y = 0,
		   int  begin_x = 0,
		   const T* p_UserData = STATIC_CAST(T*)(0))
    : NCursesForm(nlines,ncols,begin_y,begin_x) {
      if (form)
	set_user (const_cast<void *>(reinterpret_cast<const void*>
				     (p_UserData)));
  }

public:
  NCursesUserForm (NCursesFormField* Fields[],
		   const T* p_UserData = STATIC_CAST(T*)(0),
		   bool with_frame=FALSE,
		   bool autoDelete_Fields=FALSE)
    : NCursesForm (Fields, with_frame, autoDelete_Fields) {
      if (form)
	set_user (const_cast<void *>(reinterpret_cast<const void*>(p_UserData)));
  };

  NCursesUserForm (NCursesFormField* Fields[],
		   int nlines,
		   int ncols,
		   int begin_y = 0,
		   int begin_x = 0,
		   const T* p_UserData = STATIC_CAST(T*)(0),
		   bool with_frame=FALSE,
		   bool autoDelete_Fields=FALSE)
    : NCursesForm (Fields, nlines, ncols, begin_y, begin_x,
		   with_frame, autoDelete_Fields) {
      if (form)
	set_user (const_cast<void *>(reinterpret_cast<const void*>
				     (p_UserData)));
  };

  virtual ~NCursesUserForm() THROWS(NCursesException) {
  };

  inline T* UserData (void) {
    return reinterpret_cast<T*>(get_user ());
  };

  inline virtual void setUserData (const T* p_UserData) {
    if (form)
      set_user (const_cast<void *>(reinterpret_cast<const void*>(p_UserData)));
  }

};
//
// -------------------------------------------------------------------------
// Builtin Fieldtypes
// -------------------------------------------------------------------------
//
class NCURSES_CXX_IMPEXP Alpha_Field : public NCursesFieldType
{
private:
  int min_field_width;

  void set(NCursesFormField& f) {
    OnError(::set_field_type(f.get_field(),fieldtype,min_field_width));
  }

public:
  explicit Alpha_Field(int width)
    : NCursesFieldType(TYPE_ALPHA),
      min_field_width(width) {
  }
};

class NCURSES_CXX_IMPEXP Alphanumeric_Field : public NCursesFieldType
{
private:
  int min_field_width;

  void set(NCursesFormField& f) {
    OnError(::set_field_type(f.get_field(),fieldtype,min_field_width));
  }

public:
  explicit Alphanumeric_Field(int width)
    : NCursesFieldType(TYPE_ALNUM),
      min_field_width(width) {
  }
};

class NCURSES_CXX_IMPEXP Integer_Field : public NCursesFieldType
{
private:
  int precision;
  long lower_limit, upper_limit;

  void set(NCursesFormField& f) {
    OnError(::set_field_type(f.get_field(),fieldtype,
			     precision,lower_limit,upper_limit));
  }

public:
  Integer_Field(int prec, long low=0L, long high=0L)
    : NCursesFieldType(TYPE_INTEGER),
      precision(prec), lower_limit(low), upper_limit(high) {
  }
};

class NCURSES_CXX_IMPEXP Numeric_Field : public NCursesFieldType
{
private:
  int precision;
  double lower_limit, upper_limit;

  void set(NCursesFormField& f) {
    OnError(::set_field_type(f.get_field(),fieldtype,
			     precision,lower_limit,upper_limit));
  }

public:
  Numeric_Field(int prec, double low=0.0, double high=0.0)
    : NCursesFieldType(TYPE_NUMERIC),
      precision(prec), lower_limit(low), upper_limit(high) {
  }
};

class NCURSES_CXX_IMPEXP Regular_Expression_Field : public NCursesFieldType
{
private:
  char* regex;

  void set(NCursesFormField& f) {
    OnError(::set_field_type(f.get_field(),fieldtype,regex));
  }

  void copy_regex(const char *source)
  {
    regex = new char[1 + ::strlen(source)];
    (::strcpy)(regex, source);
  }

public:
  explicit Regular_Expression_Field(const char *expr)
    : NCursesFieldType(TYPE_REGEXP),
      regex(NULL)
  {
    copy_regex(expr);
  }

  Regular_Expression_Field& operator=(const Regular_Expression_Field& rhs)
  {
    if (this != &rhs) {
      *this = rhs;
      copy_regex(rhs.regex);
      NCursesFieldType::operator=(rhs);
    }
    return *this;
  }

  Regular_Expression_Field(const Regular_Expression_Field& rhs)
    : NCursesFieldType(rhs),
      regex(NULL)
  {
    copy_regex(rhs.regex);
  }

  ~Regular_Expression_Field() {
    delete[] regex;
  }
};

class NCURSES_CXX_IMPEXP Enumeration_Field : public NCursesFieldType
{
private:
  const char** list;
  int case_sensitive;
  int non_unique_matches;

  void set(NCursesFormField& f) {
    OnError(::set_field_type(f.get_field(),fieldtype,
			     list,case_sensitive,non_unique_matches));
  }
public:
  Enumeration_Field(const char* enums[],
		    bool case_sens=FALSE,
		    bool non_unique=FALSE)
    : NCursesFieldType(TYPE_ENUM),
      list(enums),
      case_sensitive(case_sens ? -1 : 0),
      non_unique_matches(non_unique ? -1 : 0) {
  }

  Enumeration_Field& operator=(const Enumeration_Field& rhs)
  {
    if (this != &rhs) {
      *this = rhs;
      NCursesFieldType::operator=(rhs);
    }
    return *this;
  }

  Enumeration_Field(const Enumeration_Field& rhs)
    : NCursesFieldType(rhs),
      list(rhs.list),
      case_sensitive(rhs.case_sensitive),
      non_unique_matches(rhs.non_unique_matches)
  {
  }
};

class NCURSES_CXX_IMPEXP IPV4_Address_Field : public NCursesFieldType
{
private:
  void set(NCursesFormField& f) {
    OnError(::set_field_type(f.get_field(),fieldtype));
  }

public:
  IPV4_Address_Field() : NCursesFieldType(TYPE_IPV4) {
  }
};

extern "C" {
  bool _nc_xx_fld_fcheck(FIELD *, const void*);
  bool _nc_xx_fld_ccheck(int c, const void *);
  void* _nc_xx_fld_makearg(va_list*);
}

//
// -------------------------------------------------------------------------
// Abstract base class for User-Defined Fieldtypes
// -------------------------------------------------------------------------
//
class NCURSES_CXX_IMPEXP UserDefinedFieldType : public NCursesFieldType
{
  friend class UDF_Init; // Internal helper to set up statics
private:
  // For all C++ defined fieldtypes we need only one generic lowlevel
  // FIELDTYPE* element.
  static FIELDTYPE* generic_fieldtype;

protected:
  // This are the functions required by the low level libforms functions
  // to construct a fieldtype.
  friend bool _nc_xx_fld_fcheck(FIELD *, const void*);
  friend bool _nc_xx_fld_ccheck(int c, const void *);
  friend void* _nc_xx_fld_makearg(va_list*);

  void set(NCursesFormField& f) {
    OnError(::set_field_type(f.get_field(),fieldtype,&f));
  }

protected:
  // Redefine this function to do a field validation. The argument
  // is a reference to the field you should validate.
  virtual bool field_check(NCursesFormField& f) = 0;

  // Redefine this function to do a character validation. The argument
  // is the character to be validated.
  virtual bool char_check (int c) = 0;

public:
  UserDefinedFieldType();
};

extern "C" {
  bool _nc_xx_next_choice(FIELD*, const void *);
  bool _nc_xx_prev_choice(FIELD*, const void *);
}

//
// -------------------------------------------------------------------------
// Abstract base class for User-Defined Fieldtypes with Choice functions
// -------------------------------------------------------------------------
//
class NCURSES_CXX_IMPEXP UserDefinedFieldType_With_Choice : public UserDefinedFieldType
{
  friend class UDF_Init; // Internal helper to set up statics
private:
  // For all C++ defined fieldtypes with choice functions we need only one
  // generic lowlevel FIELDTYPE* element.
  static FIELDTYPE* generic_fieldtype_with_choice;

  // This are the functions required by the low level libforms functions
  // to construct a fieldtype with choice functions.
  friend bool _nc_xx_next_choice(FIELD*, const void *);
  friend bool _nc_xx_prev_choice(FIELD*, const void *);

protected:
  // Redefine this function to do the retrieval of the next choice value.
  // The argument is a reference to the field tobe examined.
  virtual bool next    (NCursesFormField& f) = 0;

  // Redefine this function to do the retrieval of the previous choice value.
  // The argument is a reference to the field tobe examined.
  virtual bool previous(NCursesFormField& f) = 0;

public:
  UserDefinedFieldType_With_Choice();
};

#endif /* NCURSES_CURSESF_H_incl */

Directory Contents

Dirs: 83 × Files: 232
Name Size Perms Modified Actions
apache2 DIR
- drwxr-xr-x 2026-10-09 18:50:03
Edit Download
arpa DIR
- drwxr-xr-x 2026-10-14 20:12:18
Edit Download
asm DIR
- drwxr-xr-x 2026-11-02 19:08:51
Edit Download
- drwxr-xr-x 2026-11-02 19:08:51
Edit Download
bind9 DIR
- drwxr-xr-x 2026-10-26 10:51:20
Edit Download
bits DIR
- drwxr-xr-x 2026-10-14 20:12:18
Edit Download
blkid DIR
- drwxr-xr-x 2026-07-09 17:41:07
Edit Download
brotli DIR
- drwxr-xr-x 2026-10-28 07:16:24
Edit Download
bsock DIR
- drwxr-xr-x 2026-09-11 19:19:25
Edit Download
c++ DIR
- drwxr-xr-x 2026-04-04 22:16:32
Edit Download
criu-lve DIR
- drwxr-xr-x 2026-07-09 17:10:10
Edit Download
drm DIR
- drwxr-xr-x 2026-11-02 19:08:51
Edit Download
e2p DIR
- drwxr-xr-x 2026-05-23 20:42:31
Edit Download
et DIR
- drwxr-xr-x 2026-05-23 20:37:20
Edit Download
event2 DIR
- drwxr-xr-x 2026-09-22 18:31:06
Edit Download
ext2fs DIR
- drwxr-xr-x 2026-05-23 20:42:31
Edit Download
finclude DIR
- drwxr-xr-x 2026-10-14 20:12:18
Edit Download
- drwxr-xr-x 2025-07-09 18:18:41
Edit Download
freetype2 DIR
- drwxr-xr-x 2025-07-09 18:18:41
Edit Download
fstrm DIR
- drwxr-xr-x 2025-07-09 18:18:36
Edit Download
fwctl DIR
- drwxr-xr-x 2026-11-02 19:08:51
Edit Download
gdbm DIR
- drwxr-xr-x 2025-07-09 18:18:46
Edit Download
- drwxr-xr-x 2026-09-08 09:54:00
Edit Download
GL DIR
- drwxr-xr-x 2025-07-09 18:18:34
Edit Download
glib-2.0 DIR
- drwxr-xr-x 2026-09-11 19:20:56
Edit Download
gnu DIR
- drwxr-xr-x 2026-10-14 20:13:51
Edit Download
google DIR
- drwxr-xr-x 2025-07-09 18:18:35
Edit Download
graphite2 DIR
- drwxr-xr-x 2025-07-09 18:18:40
Edit Download
gssapi DIR
- drwxr-xr-x 2026-10-28 21:03:03
Edit Download
gssrpc DIR
- drwxr-xr-x 2026-10-28 21:03:03
Edit Download
harfbuzz DIR
- drwxr-xr-x 2025-07-09 18:18:41
Edit Download
- drwxr-xr-x 2026-10-11 23:13:43
Edit Download
json-c DIR
- drwxr-xr-x 2025-07-09 18:18:36
Edit Download
kadm5 DIR
- drwxr-xr-x 2026-10-28 21:03:03
Edit Download
krb5 DIR
- drwxr-xr-x 2026-10-28 21:03:03
Edit Download
libdb DIR
- drwxr-xr-x 2025-07-09 18:18:16
Edit Download
libexslt DIR
- drwxr-xr-x 2026-07-09 17:41:41
Edit Download
libltdl DIR
- drwxr-xr-x 2025-07-09 18:18:46
Edit Download
libmount DIR
- drwxr-xr-x 2026-07-09 17:41:07
Edit Download
libpng16 DIR
- drwxr-xr-x 2026-07-09 17:42:52
Edit Download
libxml2 DIR
- drwxr-xr-x 2026-09-24 21:56:24
Edit Download
libxslt DIR
- drwxr-xr-x 2026-07-09 17:41:41
Edit Download
linux DIR
- drwxr-xr-x 2026-11-02 19:08:51
Edit Download
lve DIR
- drwxr-xr-x 2026-11-02 19:08:50
Edit Download
lzma DIR
- drwxr-xr-x 2026-10-27 09:21:00
Edit Download
misc DIR
- drwxr-xr-x 2026-11-02 19:08:51
Edit Download
mtd DIR
- drwxr-xr-x 2026-11-02 19:08:51
Edit Download
mysql DIR
- drwxr-xr-x 2026-10-14 20:14:24
Edit Download
ncurses DIR
- drwxr-xr-x 2026-05-23 20:38:56
Edit Download
ncursesw DIR
- drwxr-xr-x 2026-05-23 20:38:56
Edit Download
net DIR
- drwxr-xr-x 2026-10-14 20:12:18
Edit Download
netash DIR
- drwxr-xr-x 2026-10-14 20:12:18
Edit Download
netatalk DIR
- drwxr-xr-x 2026-10-14 20:12:18
Edit Download
netax25 DIR
- drwxr-xr-x 2026-10-14 20:12:18
Edit Download
neteconet DIR
- drwxr-xr-x 2026-10-14 20:12:18
Edit Download
netinet DIR
- drwxr-xr-x 2026-10-14 20:12:18
Edit Download
netipx DIR
- drwxr-xr-x 2026-10-14 20:12:18
Edit Download
netiucv DIR
- drwxr-xr-x 2026-10-14 20:12:18
Edit Download
netpacket DIR
- drwxr-xr-x 2026-10-14 20:12:18
Edit Download
netrom DIR
- drwxr-xr-x 2026-10-14 20:12:18
Edit Download
netrose DIR
- drwxr-xr-x 2026-10-14 20:12:18
Edit Download
nfs DIR
- drwxr-xr-x 2026-10-14 20:12:18
Edit Download
openssl DIR
- drwxr-xr-x 2026-10-14 20:14:01
Edit Download
pcp DIR
- drwxr-xr-x 2026-08-25 19:05:05
Edit Download
- drwxr-xr-x 2025-07-09 18:18:35
Edit Download
protocols DIR
- drwxr-xr-x 2026-10-14 20:12:18
Edit Download
python3.9 DIR
- drwxr-xr-x 2026-10-27 09:20:59
Edit Download
rdma DIR
- drwxr-xr-x 2026-11-02 19:08:51
Edit Download
rpc DIR
- drwxr-xr-x 2026-10-14 20:12:18
Edit Download
sasl DIR
- drwxr-xr-x 2026-05-23 20:38:56
Edit Download
scsi DIR
- drwxr-xr-x 2026-11-02 19:08:51
Edit Download
security DIR
- drwxr-xr-x 2026-09-11 19:19:40
Edit Download
selinux DIR
- drwxr-xr-x 2025-07-09 18:18:39
Edit Download
sepol DIR
- drwxr-xr-x 2026-05-23 20:42:31
Edit Download
sound DIR
- drwxr-xr-x 2026-11-02 19:08:51
Edit Download
sys DIR
- drwxr-xr-x 2026-10-14 20:12:18
Edit Download
sysprof-4 DIR
- drwxr-xr-x 2025-07-09 18:18:37
Edit Download
unicode DIR
- drwxr-xr-x 2025-08-12 12:35:57
Edit Download
video DIR
- drwxr-xr-x 2026-11-02 19:08:51
Edit Download
webp DIR
- drwxr-xr-x 2025-07-09 18:18:39
Edit Download
X11 DIR
- drwxr-xr-x 2026-10-30 19:13:39
Edit Download
xcb DIR
- drwxr-xr-x 2025-07-09 18:18:36
Edit Download
xen DIR
- drwxr-xr-x 2026-11-02 19:08:51
Edit Download
4.25 KB lrw-r--r-- 2026-10-08 20:46:42
Edit Download
7.56 KB lrw-r--r-- 2026-10-08 20:46:41
Edit Download
1.98 KB lrw-r--r-- 2026-10-08 20:47:01
Edit Download
1.17 KB lrw-r--r-- 2026-10-08 20:46:40
Edit Download
1.69 KB lrw-r--r-- 2026-10-08 20:46:42
Edit Download
24.95 KB lrw-r--r-- 2026-10-08 20:47:00
Edit Download
5.91 KB lrw-r--r-- 2026-10-08 20:46:41
Edit Download
4.46 KB lrw-r--r-- 2026-10-08 20:46:37
Edit Download
2.36 KB lrw-r--r-- 2023-09-27 06:51:52
Edit Download
1.42 KB lrw-r--r-- 2026-10-08 20:46:41
Edit Download
6.09 KB lrw-r--r-- 2019-07-13 17:50:05
Edit Download
7.95 KB lrw-r--r-- 2026-10-08 20:46:39
Edit Download
2.07 KB lrw-r--r-- 2021-12-30 05:54:33
Edit Download
2.21 KB lrw-r--r-- 2026-10-08 20:46:42
Edit Download
931 B lrw-r--r-- 2026-11-02 01:31:41
Edit Download
10.90 KB lrw-r--r-- 2022-02-10 04:05:00
Edit Download
10.71 KB lrw-r--r-- 2026-10-08 20:46:37
Edit Download
96.82 KB lrw-r--r-- 2025-09-21 09:23:42
Edit Download
7.06 KB lrw-r--r-- 2025-09-21 09:23:42
Edit Download
27.37 KB lrw-r--r-- 2025-09-21 09:23:42
Edit Download
19.44 KB lrw-r--r-- 2025-09-21 09:23:42
Edit Download
8.55 KB lrw-r--r-- 2025-09-21 09:23:42
Edit Download
49.13 KB lrw-r--r-- 2025-09-21 09:23:42
Edit Download
7.15 KB lrw-r--r-- 2025-09-21 09:23:42
Edit Download
120.22 KB lr--r--r-- 2025-06-24 14:13:10
Edit Download
1.37 KB lrw-r--r-- 2022-01-02 08:34:10
Edit Download
5.84 KB lr--r--r-- 2025-06-24 14:13:10
Edit Download
12.32 KB lrw-r--r-- 2026-10-08 20:46:41
Edit Download
8.60 KB lrw-r--r-- 2026-10-08 20:46:40
Edit Download
178.26 KB lrw-r--r-- 2026-10-08 20:47:02
Edit Download
2.25 KB lrw-r--r-- 2026-10-08 20:46:41
Edit Download
4.81 KB lrw-r--r-- 2021-01-12 00:09:45
Edit Download
2.80 KB lrw-r--r-- 2026-10-08 20:46:41
Edit Download
2.29 KB lrw-r--r-- 2026-10-08 20:46:42
Edit Download
1.64 KB lrw-r--r-- 2026-10-08 20:46:40
Edit Download
2.36 KB lrw-r--r-- 2026-10-08 20:46:42
Edit Download
2.90 KB lrw-r--r-- 2025-09-21 09:23:42
Edit Download
9.61 KB lrw-r--r-- 2025-09-21 09:23:42
Edit Download
1.97 KB lrw-r--r-- 2026-06-21 14:50:37
Edit Download
2.68 KB lrw-r--r-- 2026-06-21 14:50:37
Edit Download
1.99 KB lrw-r--r-- 2026-06-21 14:50:37
Edit Download
1.97 KB lrw-r--r-- 2026-06-21 14:50:37
Edit Download
1.74 KB lrw-r--r-- 2026-06-21 14:50:37
Edit Download
1.49 KB lrw-r--r-- 2026-10-08 20:47:00
Edit Download
43.24 KB lrw-r--r-- 2026-10-22 18:42:45
Edit Download
3.82 KB lrw-r--r-- 2026-10-22 18:42:56
Edit Download
5.89 KB lrw-r--r-- 2022-10-25 15:08:13
Edit Download
11.17 KB lrw-r--r-- 2026-10-08 20:46:42
Edit Download
1.37 KB lrw-r--r-- 2026-10-08 20:46:33
Edit Download
17.69 KB lrw-r--r-- 2026-10-08 20:46:33
Edit Download
5.65 KB lrw-r--r-- 2026-10-08 20:46:39
Edit Download
13.88 KB lrw-r--r-- 2023-09-25 19:54:23
Edit Download
556 B lrw-r--r-- 2023-09-25 19:54:23
Edit Download
4.63 KB lrw-r--r-- 2023-09-25 19:54:23
Edit Download
616 B lrw-r--r-- 2023-09-25 19:54:23
Edit Download
6.73 KB lrw-r--r-- 2022-01-30 08:23:38
Edit Download
3.16 KB lrw-r--r-- 2026-10-08 20:46:40
Edit Download
2.24 KB lrw-r--r-- 2026-10-08 20:46:42
Edit Download
18.46 KB lrw-r--r-- 2025-09-21 09:23:42
Edit Download
3.50 KB lrw-r--r-- 2026-10-08 20:46:39
Edit Download
3.04 KB lrw-r--r-- 2026-10-08 20:46:42
Edit Download
12.71 KB lrw-r--r-- 2019-03-11 20:58:34
Edit Download
9.35 KB lrw-r--r-- 2026-10-08 20:46:42
Edit Download
6.19 KB lrw-r--r-- 2026-10-08 20:46:42
Edit Download
4.11 KB lrw-r--r-- 2026-10-08 20:46:33
Edit Download
58.25 KB lrw-r--r-- 2021-03-06 18:21:36
Edit Download
11.90 KB lrw-r--r-- 2024-10-02 21:50:44
Edit Download
2.92 KB lrw-r--r-- 2021-03-03 07:15:02
Edit Download
553 B lrw-r--r-- 2021-01-12 00:09:45
Edit Download
551 B lrw-r--r-- 2021-01-12 00:09:45
Edit Download
519 B lrw-r--r-- 2021-01-12 00:09:45
Edit Download
515 B lrw-r--r-- 2021-01-12 00:09:45
Edit Download
546 B lrw-r--r-- 2021-01-12 00:09:45
Edit Download
496 B lrw-r--r-- 2021-02-21 17:23:01
Edit Download
50.73 KB lrw-r--r-- 2021-03-03 07:15:02
Edit Download
478 B lrw-r--r-- 2021-01-12 00:09:45
Edit Download
1.47 KB lrw-r--r-- 2021-01-12 00:09:45
Edit Download
2.93 KB lrw-r--r-- 2021-03-03 07:15:02
Edit Download
1.43 KB lrw-r--r-- 2026-10-08 20:46:42
Edit Download
15.18 KB lrw-r--r-- 2023-09-27 06:52:05
Edit Download
7.13 KB lrw-r--r-- 2026-10-08 20:46:42
Edit Download
2.29 KB lrw-r--r-- 2026-10-08 20:46:33
Edit Download
2.84 KB lrw-r--r-- 2020-01-03 07:11:27
Edit Download
71.92 KB lrw-r--r-- 2022-02-09 23:24:26
Edit Download
71.92 KB lrw-r--r-- 2022-02-09 23:24:26
Edit Download
6.53 KB lrw-r--r-- 2026-10-08 20:46:41
Edit Download
4.42 KB lrw-r--r-- 2026-10-08 20:47:00
Edit Download
181 B lrw-r--r-- 2023-07-10 20:58:20
Edit Download
1.81 KB lrw-r--r-- 2026-10-08 20:46:33
Edit Download
2.56 KB lrw-r--r-- 2021-07-22 13:31:59
Edit Download
20 B lrw-r--r-- 2022-02-14 15:33:00
Edit Download
3.89 KB lrw-r--r-- 2021-07-22 13:31:59
Edit Download
4.80 KB lrw-r--r-- 2026-10-08 20:46:39
Edit Download
2.77 KB lrw-r--r-- 2026-10-08 20:47:01
Edit Download
8.14 KB lrw-r--r-- 2026-10-08 20:46:40
Edit Download
1.98 KB lrw-r--r-- 2024-04-01 19:06:20
Edit Download
246 B lrw-r--r-- 2024-04-01 19:06:30
Edit Download
15.35 KB lrw-r--r-- 2020-11-25 03:56:19
Edit Download
13.98 KB lrw-r--r-- 2020-11-25 03:56:19
Edit Download
15.25 KB lrw-r--r-- 2020-11-25 03:56:19
Edit Download
49.10 KB lrw-r--r-- 2020-11-25 03:56:19
Edit Download
62.83 KB lrw-r--r-- 2026-10-27 23:18:12
Edit Download
11.52 KB lrw-r--r-- 2023-04-05 19:15:53
Edit Download
8.72 KB lrw-r--r-- 2023-07-10 20:58:20
Edit Download
402 B lrw-r--r-- 2023-07-10 20:58:20
Edit Download
17.43 KB lrw-r--r-- 2026-10-08 20:46:33
Edit Download
126 B lrw-r--r-- 2026-10-08 20:47:02
Edit Download
15.12 KB lrw-r--r-- 2024-05-21 17:19:11
Edit Download
1.43 KB lrw-r--r-- 2025-03-13 12:28:31
Edit Download
72.36 KB lrw-r--r-- 2024-05-21 17:19:11
Edit Download
9.24 KB lrw-r--r-- 2024-05-21 17:19:11
Edit Download
1.55 KB lrw-r--r-- 2025-03-13 12:28:31
Edit Download
9.23 KB lrw-r--r-- 2024-05-21 17:19:11
Edit Download
3.39 KB lrw-r--r-- 2024-05-21 17:19:11
Edit Download
4.68 KB lrw-r--r-- 2024-05-21 17:19:11
Edit Download
8.75 KB lrw-r--r-- 2022-02-09 19:07:19
Edit Download
1.35 KB lrw-r--r-- 2026-10-08 20:46:42
Edit Download
4.47 KB lrw-r--r-- 2026-10-08 20:46:37
Edit Download
1.46 KB lrw-r--r-- 2026-10-13 08:40:42
Edit Download
5.57 KB lrw-r--r-- 2026-10-08 20:46:33
Edit Download
7.62 KB lrw-r--r-- 2026-10-08 20:47:02
Edit Download
72.28 KB lrw-r--r-- 2021-03-16 16:41:19
Edit Download
7.50 KB lrw-r--r-- 2026-10-08 20:46:33
Edit Download
4.85 KB lrw-r--r-- 2026-10-13 08:40:42
Edit Download
25.81 KB lrw-r--r-- 2026-10-13 08:40:42
Edit Download
599 B lrw-r--r-- 2026-10-13 08:40:42
Edit Download
5.58 KB lrw-r--r-- 2024-10-01 17:49:19
Edit Download
9.63 KB lrw-r--r-- 2020-03-17 14:28:50
Edit Download
5.77 KB lrw-r--r-- 2026-10-08 20:46:41
Edit Download
47.63 KB lrw-r--r-- 2026-10-08 20:46:39
Edit Download
8.34 KB lrw-r--r-- 2021-02-18 17:04:22
Edit Download
504 B lrw-r--r-- 2024-10-01 16:54:45
Edit Download
178 B lrw-r--r-- 2024-10-01 16:54:47
Edit Download
2.38 KB lrw-r--r-- 2026-10-08 20:46:41
Edit Download
956 B lrw-r--r-- 2026-10-08 20:46:41
Edit Download
11.60 KB lrw-r--r-- 2025-09-21 09:23:42
Edit Download
3.28 KB lrw-r--r-- 2026-10-08 20:46:42
Edit Download
1.92 KB lrw-r--r-- 2026-10-08 20:46:40
Edit Download
4.50 KB lrw-r--r-- 2026-10-08 20:46:41
Edit Download
96.82 KB lrw-r--r-- 2025-09-21 09:23:42
Edit Download
3.95 KB lrw-r--r-- 2025-09-21 09:23:42
Edit Download
4.67 KB lrw-r--r-- 2025-09-21 09:23:42
Edit Download
2.39 KB lrw-r--r-- 2022-01-02 08:34:10
Edit Download
27.79 KB lrw-r--r-- 2026-10-08 20:47:01
Edit Download
1.71 KB lrw-r--r-- 2026-10-08 20:46:38
Edit Download
14.07 KB lrw-r--r-- 2026-10-08 20:47:01
Edit Download
20.81 KB lrw-r--r-- 2026-10-08 20:46:41
Edit Download
964 B lrw-r--r-- 2024-05-21 17:19:11
Edit Download
4.41 KB lrw-r--r-- 2025-09-21 09:23:42
Edit Download
2.91 KB lrw-r--r-- 2026-10-08 20:46:42
Edit Download
30.97 KB lrw-r--r-- 2024-10-02 21:53:31
Edit Download
46.15 KB lrw-r--r-- 2026-10-12 23:50:34
Edit Download
6.52 KB lrw-r--r-- 2021-08-20 16:51:28
Edit Download
25.91 KB lrw-r--r-- 2014-01-31 14:32:11
Edit Download
6.62 KB lrw-r--r-- 2024-10-02 21:53:31
Edit Download
5.74 KB lrw-r--r-- 2024-10-02 21:53:20
Edit Download
6.45 KB lrw-r--r-- 2014-01-31 14:32:09
Edit Download
6.16 KB lrw-r--r-- 2024-10-02 21:53:31
Edit Download
139.51 KB lrw-r--r-- 2019-04-14 18:10:32
Edit Download
22.31 KB lrw-r--r-- 2019-04-14 18:10:32
Edit Download
7.43 KB lrw-r--r-- 2026-06-25 00:19:59
Edit Download
22 B lrw-r--r-- 2026-10-08 20:46:42
Edit Download
1.62 KB lrw-r--r-- 2026-11-02 01:31:41
Edit Download
2.19 KB lrw-r--r-- 2021-07-22 13:31:59
Edit Download
6.71 KB lrw-r--r-- 2026-10-08 20:46:40
Edit Download
3.40 KB lrw-r--r-- 2026-10-08 20:47:01
Edit Download
11.87 KB lrw-r--r-- 2026-10-27 23:18:47
Edit Download
47.39 KB lrw-r--r-- 2026-10-08 20:46:41
Edit Download
1.53 KB lrw-r--r-- 2026-10-08 20:47:02
Edit Download
9.30 KB lrw-r--r-- 2021-07-22 13:31:59
Edit Download
6.17 KB lrw-r--r-- 2026-10-08 20:46:42
Edit Download
25.30 KB lrw-r--r-- 2026-10-08 20:46:42
Edit Download
1.41 KB lrw-r--r-- 2026-10-08 20:46:42
Edit Download
12.10 KB lrw-r--r-- 2026-10-08 20:47:01
Edit Download
963 B lrw-r--r-- 2026-10-08 20:46:42
Edit Download
4.92 KB lrw-r--r-- 2026-10-08 20:46:42
Edit Download
5.32 KB lrw-r--r-- 2026-10-08 20:46:42
Edit Download
3.38 KB lrw-r--r-- 2026-10-08 20:46:41
Edit Download
3.12 KB lrw-r--r-- 2026-10-08 20:46:39
Edit Download
1.31 KB lrw-r--r-- 2026-10-08 20:46:42
Edit Download
5.34 KB lrw-r--r-- 2026-10-08 20:47:00
Edit Download
12.73 KB lrw-r--r-- 2026-10-08 20:46:40
Edit Download
37.45 KB lrw-r--r-- 2024-05-21 17:19:11
Edit Download
8.10 KB lrw-r--r-- 2026-10-08 20:46:42
Edit Download
264 B lrw-r--r-- 2026-10-08 20:46:42
Edit Download
2.24 KB lrw-r--r-- 2026-10-08 20:46:33
Edit Download
8.28 KB lrw-r--r-- 2026-10-08 20:46:40
Edit Download
30.67 KB lrw-r--r-- 2026-10-08 20:46:40
Edit Download
2.73 KB lrw-r--r-- 2026-10-08 20:46:40
Edit Download
35.46 KB lrw-r--r-- 2026-10-08 20:46:40
Edit Download
19.00 KB lrw-r--r-- 2026-10-08 20:46:41
Edit Download
9.53 KB lrw-r--r-- 2021-07-22 13:44:13
Edit Download
4.64 KB lrw-r--r-- 2026-10-08 20:46:41
Edit Download
25 B lrw-r--r-- 2026-10-08 20:46:42
Edit Download
5.11 KB lrw-r--r-- 2026-10-08 20:46:42
Edit Download
24 B lrw-r--r-- 2026-10-08 20:46:42
Edit Download
3.70 KB lrw-r--r-- 2026-10-08 20:46:42
Edit Download
40.95 KB lrw-r--r-- 2025-09-21 09:23:42
Edit Download
3.39 KB lrw-r--r-- 2025-09-21 09:23:42
Edit Download
214 B lrw-r--r-- 2026-10-08 20:46:42
Edit Download
3.51 KB lrw-r--r-- 2026-10-08 20:46:42
Edit Download
8.90 KB lrw-r--r-- 2025-09-21 09:23:42
Edit Download
39.24 KB lrw-r--r-- 2026-10-08 20:46:39
Edit Download
7.51 KB lrw-r--r-- 2026-10-08 20:46:41
Edit Download
15.65 KB lrw-r--r-- 2026-10-08 20:47:01
Edit Download
14.48 KB lrw-r--r-- 2025-09-21 09:23:42
Edit Download
46.33 KB lrw-r--r-- 2022-04-22 16:51:48
Edit Download
3.19 KB lrw-r--r-- 2026-07-21 15:53:51
Edit Download
250 B lrw-r--r-- 2026-07-21 15:54:10
Edit Download
24.13 KB lrw-r--r-- 2022-05-20 15:32:31
Edit Download
1.62 KB lrw-r--r-- 2022-02-19 15:33:55
Edit Download
410 B lrw-r--r-- 2022-05-20 16:12:45
Edit Download
14.50 KB lrw-r--r-- 2026-10-08 20:46:41
Edit Download
4.85 KB lrw-r--r-- 2021-07-22 13:31:59
Edit Download
2.44 KB lrw-r--r-- 2026-10-08 20:46:42
Edit Download
1.96 KB lrw-r--r-- 2026-10-08 20:46:41
Edit Download
1.99 KB lrw-r--r-- 2026-10-08 20:46:40
Edit Download
1.55 KB lrw-r--r-- 2026-10-08 20:46:42
Edit Download
3.10 KB lrw-r--r-- 2025-09-21 09:23:42
Edit Download
43.45 KB lrw-r--r-- 2026-10-08 20:46:42
Edit Download
1.86 KB lrw-r--r-- 2026-10-08 20:46:42
Edit Download
3.15 KB lrw-r--r-- 2026-10-08 20:47:02
Edit Download
4.00 KB lrw-r--r-- 2026-10-08 20:47:02
Edit Download
1.91 KB lrw-r--r-- 2026-10-08 20:46:33
Edit Download
6.48 KB lrw-r--r-- 2022-02-10 04:33:39
Edit Download
18.98 KB lrw-r--r-- 2022-02-10 04:33:39
Edit Download
22 B lrw-r--r-- 2026-10-08 20:46:42
Edit Download
31.39 KB lrw-r--r-- 2026-10-08 20:46:41
Edit Download
5.42 KB lrw-r--r-- 2026-10-08 20:46:42
Edit Download
2.44 KB lrw-r--r-- 2026-10-08 20:46:42
Edit Download
15.88 KB lrw-r--r-- 2023-09-26 09:22:15
Edit Download
94.00 KB lrw-r--r-- 2023-09-26 09:22:15
Edit Download
If ZipArchive is unavailable, a .tar will be created (no compression).
© 2026 0xNothings — Secure File Manager. All rights reserved. Built with ❤️ & Tailwind x Dark UI