    /* $Id: picklist.cpp 1.1 1995/01/16 12:11:45 leon Exp $
     * Copyright (c) 1993, 1994 Leon Kos & FINCY d.o.o.
     */

    #include <afc/adsapp.hpp>

    /**
     ** Za tabelo stringov /table/ se iz /filename/.dcl uporabi dialog
     ** /dialogKey/, ki mora imeti listbox s kljucem /lb/. Zacetni izbor je -1,
     ** kar pomeni, da izbire ni bilo.
     **/
    PickList::PickList(const char *filename, const char *dialogKey,
                       const char *table[], int size)
      : Dialog(filename, dialogKey)
    {
      lb = new ListBox("lb", 1);
      fillListBox(table, size);
      insert(lb);
      selected = -1;
    }

    /**
     ** Odpre dialog in vrne stevilko vrstice, ki jo je uporabnik izbral.
     ** Ce je pritisnil /Cancel/ funkcija vrne -1
     **/
    int PickList::Pick()
    {
      Run();
      return (selected);
    }

    /** Napolni ListBox s stringi podani v /table/ velikosti /size/ **/
    virtual void PickList::fillListBox(const char *table[], int size)
    {
      lb->newList();
      for (int i = 0; i < size; i++)
          lb->add(table[i]);
    }

    /** {docInSuper} **/
    void PickList::HandleListBoxMsg(int , ads_callback_packet *cbpkt)
    {
      if (cbpkt->reason == CBR_DOUBLE_CLICK)
        {
          selected = atoi(cbpkt->value);
          ads_done_dialog(hdlg, 4);
        }
    }

    #if 0

    static void testPick(void)
    {
      const char *tekst[] = {"three", "two", "three"};
      PickList test("jctsetup", "TempZoneSelect", tekst, 3);
      ads_retint(test.Pick());
    }

    void main (int argc, char *argv[])
    {
        ADSApplication test;
        test.Register(testPick, "c:test");
        test.Run(argc, argv);
    }

    #endif

syntax highlighted by Code2HTML, v. 0.9.1