]> git.ipfire.org Git - thirdparty/newt.git/blobdiff - newt.h
install python modules to purelib and platlib
[thirdparty/newt.git] / newt.h
diff --git a/newt.h b/newt.h
index 9b3f6d789d650ebc7e94472c0f646eaf3e957302..07becc75bf4bb9d83a26b6e5f526deee06365916 100644 (file)
--- a/newt.h
+++ b/newt.h
@@ -31,6 +31,11 @@ extern "C" {
 #define NEWT_COLORSET_ACTSELLISTBOX    23
 #define NEWT_COLORSET_SELLISTBOX       24
 
+#define NEWT_COLORSET_CUSTOM(x)                (30 + (x))
+
+#define NEWT_ARG_LAST                  -100000
+#define NEWT_ARG_APPEND                        -1
+
 struct newtColors {
     char * rootFg, * rootBg;
     char * borderFg, * borderBg;
@@ -62,12 +67,26 @@ enum newtFlagsSense { NEWT_FLAGS_SET, NEWT_FLAGS_RESET, NEWT_FLAGS_TOGGLE };
 #define NEWT_FLAG_HIDDEN       (1 << 1)
 #define NEWT_FLAG_SCROLL       (1 << 2)
 #define NEWT_FLAG_DISABLED     (1 << 3)
-#define NEWT_FLAG_NOSCROLL     (1 << 4)        /* for listboxes */
-#define NEWT_FLAG_DOBORDER     (1 << 5)
+/* OBSOLETE #define NEWT_FLAG_NOSCROLL         (1 << 4)        for listboxes */
+#define NEWT_FLAG_BORDER       (1 << 5)
 #define NEWT_FLAG_WRAP         (1 << 6)
 #define NEWT_FLAG_NOF12                (1 << 7)
 #define NEWT_FLAG_MULTIPLE      (1 << 8)
 #define NEWT_FLAG_SELECTED     (1 << 9)
+#define NEWT_FLAG_CHECKBOX     (1 << 10)
+#define NEWT_FLAG_PASSWORD      (1 << 11)  /* draw '*'  of chars in entrybox */
+#define NEWT_FLAG_SHOWCURSOR    (1 << 12) /* Only applies to listbox for now */
+#define NEWT_FD_READ           (1 << 0)
+#define NEWT_FD_WRITE          (1 << 1)
+#define NEWT_FD_EXCEPT         (1 << 2)
+
+#define NEWT_CHECKBOXTREE_UNSELECTABLE (1 << 12)
+#define NEWT_CHECKBOXTREE_HIDE_BOX     (1 << 13)
+
+#define NEWT_CHECKBOXTREE_COLLAPSED    '\0'
+#define NEWT_CHECKBOXTREE_EXPANDED     '\1'
+#define NEWT_CHECKBOXTREE_UNSELECTED   ' '
+#define NEWT_CHECKBOXTREE_SELECTED     '*'
 
 /* Backwards compatibility */
 #define NEWT_LISTBOX_RETURNEXIT NEWT_FLAG_RETURNEXIT
@@ -80,12 +99,15 @@ enum newtFlagsSense { NEWT_FLAGS_SET, NEWT_FLAGS_RESET, NEWT_FLAGS_TOGGLE };
 #define NEWT_TEXTBOX_SCROLL    NEWT_FLAG_SCROLL
 #define NEWT_FORM_NOF12                NEWT_FLAG_NOF12
 
+#define newtListboxAddEntry    newtListboxAppendEntry
+
+
 typedef struct newtComponent_struct * newtComponent;
 
-extern struct newtColors newtDefaultColorPalette;
+extern const struct newtColors newtDefaultColorPalette;
 
 typedef void (*newtCallback)(newtComponent, void *);
-typedef void (*newtSuspendCallback)(void);
+typedef void (*newtSuspendCallback)(void * data);
 
 int newtInit(void);
 int newtFinished(void);
@@ -93,22 +115,28 @@ void newtCls(void);
 void newtResizeScreen(int redraw);
 void newtWaitForKey(void);
 void newtClearKeyBuffer(void);
-void newtDelay(int usecs);
+void newtDelay(unsigned int usecs);
 /* top, left are *not* counting the border */
-int newtOpenWindow(int left, int top, int width, int height, 
-                         const char * title);
-int newtCenteredWindow(int width, int height, const char * title);
+int newtOpenWindow(int left,int top, 
+                  unsigned int width,unsigned  int height, 
+                 const char * title);
+int newtCenteredWindow(unsigned int width,unsigned int height, const char * title);
 void newtPopWindow(void);
+void newtPopWindowNoRefresh(void);
 void newtSetColors(struct newtColors colors);
+void newtSetColor(int colorset, char *fg, char *bg);
 void newtRefresh(void);
 void newtSuspend(void);
-void newtSetSuspendCallback(newtSuspendCallback cb);
-void newtResume(void);
+void newtSetSuspendCallback(newtSuspendCallback cb, void * data);
+void newtSetHelpCallback(newtCallback cb);
+int  newtResume(void);
 void newtPushHelpLine(const char * text);
 void newtRedrawHelpLine(void);
 void newtPopHelpLine(void);
-void newtDrawRootText(int row, int col, const char * text);
+void newtDrawRootText(int col, int row, const char * text);
 void newtBell(void);
+void newtCursorOff(void);
+void newtCursorOn(void);
 
 /* Components */
 
@@ -116,30 +144,34 @@ newtComponent newtCompactButton(int left, int top, const char * text);
 newtComponent newtButton(int left, int top, const char * text);
 newtComponent newtCheckbox(int left, int top, const char * text, char defValue,
                           const char * seq, char * result);
+char newtCheckboxGetValue(newtComponent co);
+void newtCheckboxSetValue(newtComponent co, char value);
+void newtCheckboxSetFlags(newtComponent co, int flags, enum newtFlagsSense sense);
+
+    
 newtComponent newtRadiobutton(int left, int top, const char * text, int isDefault,
                              newtComponent prevButton);
 newtComponent newtRadioGetCurrent(newtComponent setMember);
-newtComponent newtListitem(int left, int top, const char * text, int isDefault,
-                             newtComponent prevItem, const void * data, int flags);
-void newtListitemSet(newtComponent co, const char * text);
-void * newtListitemGetData(newtComponent co);
+void newtRadioSetCurrent(newtComponent setMember);
 void newtGetScreenSize(int * cols, int * rows);
 
 newtComponent newtLabel(int left, int top, const char * text);
 void newtLabelSetText(newtComponent co, const char * text);
+void newtLabelSetColors(newtComponent co, int colorset);
 newtComponent newtVerticalScrollbar(int left, int top, int height,
                                    int normalColorset, int thumbColorset);
 void newtScrollbarSet(newtComponent co, int where, int total);
+void newtScrollbarSetColors(newtComponent co, int normal, int thumb);
 
 newtComponent newtListbox(int left, int top, int height, int flags);
 void * newtListboxGetCurrent(newtComponent co);
 void newtListboxSetCurrent(newtComponent co, int num);
-void newtListboxSetText(newtComponent co, int num, const char * text);
+void newtListboxSetCurrentByKey(newtComponent co, void * key);
 void newtListboxSetEntry(newtComponent co, int num, const char * text);
 void newtListboxSetWidth(newtComponent co, int width);
-/* return the data passed to AddEntry */
 void newtListboxSetData(newtComponent co, int num, void * data);
-int newtListboxAddEntry(newtComponent co, const char * text, const void * data);
+int newtListboxAppendEntry(newtComponent co, const char * text, 
+                          const void * data);
 /* Send the key to insert after, or NULL to insert at the top */
 int newtListboxInsertEntry(newtComponent co, const char * text, const void * data, void * key);
 int newtListboxDeleteEntry(newtComponent co, void * data);
@@ -148,26 +180,56 @@ void newtListboxGetEntry(newtComponent co, int num, char **text, void **data);
 /* Returns an array of data pointers from items, last element is NULL */
 void **newtListboxGetSelection(newtComponent co, int *numitems);
 void newtListboxClearSelection(newtComponent co);
-void newtListboxSelectItem(newtComponent co, int item,
+void newtListboxSelectItem(newtComponent co, const void * key,
        enum newtFlagsSense sense);
-
-    
-newtComponent newtTextbox(int left, int top, int with, int height, int flags);
+/* Returns number of items currently in listbox. */
+int newtListboxItemCount(newtComponent co);
+
+newtComponent newtCheckboxTree(int left, int top, int height, int flags);
+newtComponent newtCheckboxTreeMulti(int left, int top, int height, char *seq, int flags);
+const void ** newtCheckboxTreeGetSelection(newtComponent co, int *numitems);
+const void * newtCheckboxTreeGetCurrent(newtComponent co);
+void newtCheckboxTreeSetCurrent(newtComponent co, void * item);
+const void ** newtCheckboxTreeGetMultiSelection(newtComponent co, int *numitems, char seqnum);
+/* last item is NEWT_ARG_LAST for all of these */
+int newtCheckboxTreeAddItem(newtComponent co, 
+                           const char * text, const void * data,
+                           int flags, int index, ...);
+int newtCheckboxTreeAddArray(newtComponent co, 
+                            const char * text, const void * data,
+                            int flags, int * indexes);
+int * newtCheckboxTreeFindItem(newtComponent co, void * data);
+void newtCheckboxTreeSetEntry(newtComponent co, const void * data,
+                             const char * text);
+void newtCheckboxTreeSetWidth(newtComponent co, int width);
+char newtCheckboxTreeGetEntryValue(newtComponent co, const void * data);
+void newtCheckboxTreeSetEntryValue(newtComponent co, const void * data,
+                                  char value);
+newtComponent newtTextboxReflowed(int left, int top, char * text, int width,
+                                 int flexDown, int flexUp, int flags);
+newtComponent newtTextbox(int left, int top, int width, int height, int flags);
 void newtTextboxSetText(newtComponent co, const char * text);
 void newtTextboxSetHeight(newtComponent co, int height);
 int newtTextboxGetNumLines(newtComponent co);
+void newtTextboxSetColors(newtComponent co, int normal, int active);
 char * newtReflowText(char * text, int width, int flexDown, int flexUp,
                      int * actualWidth, int * actualHeight);
 
 struct newtExitStruct {
-    enum { NEWT_EXIT_HOTKEY, NEWT_EXIT_COMPONENT } reason;
+    enum { NEWT_EXIT_HOTKEY, NEWT_EXIT_COMPONENT, NEWT_EXIT_FDREADY,
+          NEWT_EXIT_TIMER, NEWT_EXIT_ERROR } reason;
     union {
+       int watch;
        int key;
        newtComponent co;
     } u;
 } ;
 
-newtComponent newtForm(newtComponent vertBar, const char * help, int flags);
+newtComponent newtForm(newtComponent vertBar, void * helpTag, int flags);
+void newtFormSetTimer(newtComponent form, int millisecs);
+void newtFormWatchFd(newtComponent form, int fd, int fdFlags);
+void newtFormSetSize(newtComponent co);
 newtComponent newtFormGetCurrent(newtComponent co);
 void newtFormSetBackground(newtComponent co, int color);
 void newtFormSetCurrent(newtComponent co, newtComponent subco);
@@ -179,27 +241,51 @@ newtComponent newtRunForm(newtComponent form);            /* obsolete */
 void newtFormRun(newtComponent co, struct newtExitStruct * es);
 void newtDrawForm(newtComponent form);
 void newtFormAddHotKey(newtComponent co, int key);
+int newtFormGetScrollPosition(newtComponent co);
+void newtFormSetScrollPosition(newtComponent co, int position);
 
+typedef int (*newtEntryFilter)(newtComponent entry, void * data, int ch,
+                              int cursor);
 newtComponent newtEntry(int left, int top, const char * initialValue, int width,
-                       char ** resultPtr, int flags);
+                       const char ** resultPtr, int flags);
 void newtEntrySet(newtComponent co, const char * value, int cursorAtEnd);
+void newtEntrySetFilter(newtComponent co, newtEntryFilter filter, void * data);
+char * newtEntryGetValue(newtComponent co);
 void newtEntrySetFlags(newtComponent co, int flags, enum newtFlagsSense sense);
+void newtEntrySetColors(newtComponent co, int normal, int disabled);
+int newtEntryGetCursorPosition(newtComponent co);
+void newtEntrySetCursorPosition(newtComponent co, int position);
 
 newtComponent newtScale(int left, int top, int width, long long fullValue);
 void newtScaleSet(newtComponent co, unsigned long long amount);
+void newtScaleSetColors(newtComponent co, int empty, int full);
 
 void newtComponentAddCallback(newtComponent co, newtCallback f, void * data);
 void newtComponentTakesFocus(newtComponent co, int val);
 
+void newtComponentGetPosition(newtComponent co, int * left, int * top);
+void newtComponentGetSize(newtComponent co, int * width, int * height);
+
+/* This callback is called when a component is destroyed. */
+void newtComponentAddDestroyCallback(newtComponent co,
+                                     newtCallback f, void * data);
+
 /* this also destroys all of the components (including other forms) on the 
    form */
 void newtFormDestroy(newtComponent form);      
 
+/* NB: You SHOULD NOT call this for components which have been added
+ * to a form (ie. almost all components).  They are destroyed along
+ * with the form when you call newtFormDestroy.
+ */
+void newtComponentDestroy(newtComponent co);
+
 /* Key codes */
 
 #define NEWT_KEY_TAB                   '\t'
 #define NEWT_KEY_ENTER                 '\r'
 #define NEWT_KEY_SUSPEND               '\032'                  /* ctrl - z*/
+#define NEWT_KEY_ESCAPE                        '\e'
 #define NEWT_KEY_RETURN                        NEWT_KEY_ENTER
 
 #define NEWT_KEY_EXTRA_BASE            0x8000
@@ -214,6 +300,7 @@ void newtFormDestroy(newtComponent form);
 #define NEWT_KEY_UNTAB                 NEWT_KEY_EXTRA_BASE + 10
 #define NEWT_KEY_PGUP                  NEWT_KEY_EXTRA_BASE + 11
 #define NEWT_KEY_PGDN                  NEWT_KEY_EXTRA_BASE + 12
+#define NEWT_KEY_INSERT                        NEWT_KEY_EXTRA_BASE + 13
 
 #define NEWT_KEY_F1                    NEWT_KEY_EXTRA_BASE + 101
 #define NEWT_KEY_F2                    NEWT_KEY_EXTRA_BASE + 102
@@ -230,6 +317,7 @@ void newtFormDestroy(newtComponent form);
 
 /* not really a key, but newtGetKey returns it */
 #define NEWT_KEY_RESIZE                        NEWT_KEY_EXTRA_BASE + 113
+#define NEWT_KEY_ERROR                 NEWT_KEY_EXTRA_BASE + 114
 
 #define NEWT_ANCHOR_LEFT               (1 << 0)
 #define NEWT_ANCHOR_RIGHT              (1 << 1)
@@ -244,16 +332,30 @@ enum newtGridElement { NEWT_GRID_EMPTY = 0,
                       NEWT_GRID_COMPONENT, NEWT_GRID_SUBGRID };
 
 newtGrid newtCreateGrid(int cols, int rows);
+/* TYPE, what, TYPE, what, ..., NULL */
+newtGrid newtGridVStacked(enum newtGridElement type, void * what, ...);
+newtGrid newtGridVCloseStacked(enum newtGridElement type, void * what, ...);
+newtGrid newtGridHStacked(enum newtGridElement type1, void * what1, ...);
+newtGrid newtGridHCloseStacked(enum newtGridElement type1, void * what1, ...);
+newtGrid newtGridBasicWindow(newtComponent text, newtGrid middle,
+                            newtGrid buttons);
+newtGrid newtGridSimpleWindow(newtComponent text, newtComponent middle,
+                            newtGrid buttons);
 void newtGridSetField(newtGrid grid, int col, int row, 
                      enum newtGridElement type, void * val, int padLeft,
                      int padTop, int padRight, int padBottom, int anchor,
                      int flags);
 void newtGridPlace(newtGrid grid, int left, int top);
+#define newtGridDestroy newtGridFree
 void newtGridFree(newtGrid grid, int recurse);
 void newtGridGetSize(newtGrid grid, int * width, int * height);
 void newtGridWrappedWindow(newtGrid grid, char * title);
+void newtGridWrappedWindowAt(newtGrid grid, char * title, int left, int top);
+void newtGridAddComponentsToForm(newtGrid grid, newtComponent form, 
+                                int recurse);
 
 /* convienve */
+newtGrid newtButtonBarv(char * button1, newtComponent * b1comp, va_list args);
 newtGrid newtButtonBar(char * button1, newtComponent * b1comp, ...);
 
 /* automatically centered and shrink wrapped */
@@ -261,16 +363,33 @@ void newtWinMessage(char * title, char * buttonText, char * text, ...);
 void newtWinMessagev(char * title, char * buttonText, char * text, 
                     va_list argv);
 
-/* Returns 0 if button 1 is pressed, 1 if button2 is pressed, 2 if F12
-   is pressed. If button2 is NULL, this behaves like newtWinMessage */
+/* having separate calls for these two seems silly, but having two separate
+   variable length-arg lists seems like a bad idea as well */
+
+/* Returns 0 if F12 was pressed, 1 for button1, 2 for button2 */
 int newtWinChoice(char * title, char * button1, char * button2, 
                   char * text, ...);
-
 /* Returns 0 if F12 was pressed, 1 for button1, 2 for button2, 
    3 for button3 */
 int newtWinTernary(char * title, char * button1, char * button2, 
                   char * button3, char * message, ...);
 
+/* Returns the button number pressed, 0 on F12 */
+int newtWinMenu(char * title, char * text, int suggestedWidth, int flexDown, 
+               int flexUp, int maxListHeight, char ** items, int * listItem,
+               char * button1, ...);
+
+struct newtWinEntry {
+    char * text;
+    char ** value;             /* may be initialized to set default */
+    int flags;
+};
+
+/* Returns the button number pressed, 0 on F12. The final values are
+   dynamically allocated, and need to be freed. */
+int newtWinEntries(char * title, char * text, int suggestedWidth, int flexDown, 
+                  int flexUp, int dataWidth, 
+                  struct newtWinEntry * items, char * button1, ...);
 
 #ifdef __cplusplus
 } /* End of extern "C" { */