// dbGrid.h -- Database grid widget API

#ifndef DBGRID_H
#define DBGRID_H

#include "dvxWgt.h"

typedef struct {
    WidgetT *(*create)(WidgetT *parent);
    void     (*setDataWidget)(WidgetT *w, WidgetT *dataWidget);
    void     (*refresh)(WidgetT *w);
    void     (*setColumnVisible)(WidgetT *w, const char *fieldName, bool visible);
    void     (*setColumnHeader)(WidgetT *w, const char *fieldName, const char *header);
    void     (*setColumnWidth)(WidgetT *w, const char *fieldName, int32_t width);
    int32_t  (*getSelectedRow)(const WidgetT *w);
} DbGridApiT;

static inline const DbGridApiT *dvxDbGridApi(void) {
    return (const DbGridApiT *)wgtGetApi("dbgrid");
}

#define wgtDbGrid(parent)                          dvxDbGridApi()->create(parent)
#define wgtDbGridSetDataWidget(w, dw)              dvxDbGridApi()->setDataWidget(w, dw)
#define wgtDbGridRefresh(w)                        dvxDbGridApi()->refresh(w)
#define wgtDbGridSetColumnVisible(w, field, vis)   dvxDbGridApi()->setColumnVisible(w, field, vis)
#define wgtDbGridSetColumnHeader(w, field, hdr)    dvxDbGridApi()->setColumnHeader(w, field, hdr)
#define wgtDbGridSetColumnWidth(w, field, width)   dvxDbGridApi()->setColumnWidth(w, field, width)
#define wgtDbGridGetSelectedRow(w)                 dvxDbGridApi()->getSelectedRow(w)

#endif // DBGRID_H
