Create a widget by copying it from a PhAB widget database, specifying a parent
#include <Ap.h> PtWidget_t *ApCreateDBWidget( ApDBase_t const *db, char const *wgt_name, PtWidget_t *parent, PhPoint_t const *pos, int nargs, PtArg_t const *args );
Ap
This function creates a widget by copying a widget from a PhAB widget database. This is very useful when you need to create many instances of the same widget. For example, a file manager may want to draw a file folder for each directory that it displays.
Before loading widgets from an external database, you should call ApAddClass() for each widget class that you'll likely encounter in it. This will add the widget classes to the internal widget class table. |
ApCreateDBWidget() creates only the widget named by wgt_name regardless of its class. ApCreateDBWidgetFamily() creates the named widget and, for container class widgets, any children of the widget.
If the widget returned by this function contains images, the images reference data in the widget database. Therefore, don't close the widget database while you're using the widget. If you need to close the database, you must remove all references to image data. You can do this by destroying the widgets, unsetting images in the widgets, or changing them into images that don't reference the database by using PiDuplicateImage() to copy the images from the database. |
A pointer to the widget created for wgt_name, or NULL on failure.
ApDBase_t *mydbase; PtArg_t args[2]; PhPoint_t pos; PtWidget_t *my_label; mydbase = ApOpenDBase( ABM_mypicture ); PtSetArg( &args[0], Pt_ARG_TEXT_STRING, "This Widget", 0 ); pos.x = 10; pos.y = 10; ApCreateDBWidget( mydbase, "my_label_widget", my_window, &pos, 1, args ); PtSetArg( &args[0], Pt_ARG_TEXT_STRING, "That Widget", 0 ); PtSetArg( &args[1], Pt_ARG_FILL_COLOR, Pg_WHITE, 0 ); pos.y = 30; my_label = ApCreateDBWidget( mydbase, "my_label_widget", my_window, &pos, 1, args ); if (my_label != NULL) { PtRealizeWidget( my_label ); } ApCloseDBase( mydbase );
Photon
Safety: | |
---|---|
Interrupt handler | No |
Signal handler | No |
Thread | No |
ApCloseDBase(), ApCreateDBWidgetFamily(), ApCreateWidget(), ApCreateWidgetFamily(), ApGetDBWidgetInfo(), ApOpenDBase(), ApOpenDBaseFile(), ApSaveDBaseFile(), PhPoint_t, PtArg_t, PtCreateWidget()
Accessing PhAB Modules from Code chapter of the Photon Programmer's Guide