Exemplo n.º 1
0
static void NewFilter(HWND hwnd)
{
    const HWND ebox = WinWindowFromID(hwnd, DID_FFILTER_CB);
    const HWND name = WinWindowFromID(hwnd, DID_FILENAME_ED);

    //
    // Get new selection
    //
    const int item = WinQueryLboxSelectedItem(ebox);
    const int len = WinQueryLboxItemTextLength(ebox, item) + 1;

    //
    // set corresponding text in entry field
    //
    char *txt = malloc(len);
    WinQueryLboxItemText(ebox, item, txt, len);
    WinSetWindowText(name, strrchr(txt, '>') + 2);
    lib_free(txt);

    //
    // set focus to entry field and simulate an Apply
    //
    WinSetFocus(HWND_DESKTOP, name);
    WinDefFileDlgProc(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPFROM2SHORT(CMDSRC_PUSHBUTTON, TRUE));
}
Exemplo n.º 2
0
int GetLboxPath(HWND hwnd, int nr, char szpath[CCHMAXPATH])
{
    int len = 0;
    int i;

    for (i = 0; i <= nr; i++) {
        WinQueryLboxItemText(hwnd, i, (szpath + len), CCHMAXPATH - len - 1);
        len = strlen(szpath);

        if (*(szpath + len - 1) == '\\') {
            continue;
        }

        if (len == CCHMAXPATH - 1) {    // should never happen
            return FALSE;
        }

        strcat(szpath, "\\");
        len++;
    }
    return TRUE;
}
Exemplo n.º 3
0
MRESULT EXPENTRY
SETTINGS :: Page4Procedure (HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
{
    static PSETTINGS   pset = NULL;

    switch (msg)
    {
    case WM_INITDLG:
        {
#ifdef _DOLOGDEBUG_
            LogDebug( "Page4Procedure: start WM_INITDLG" );
#endif
            pset = PSETTINGS (mp2);

            pset->GetLanguages(WinWindowFromID (hwnd, WID_LB_LANGUAGES));

#ifdef _DOLOGDEBUG_
            LogDebug( "Page4Procedure: WM_INITDLG: after GetLanguages()" );
#endif
            HDIR          hdir;
            ULONG         c, fl;
            FILEFINDBUF3  findbuf;
            APIRET        rc;
            PSZ           psz;

            // find all hlps and add the names to the language list
            fl   = FILE_NORMAL;
            hdir = HDIR_CREATE;
            c    = 1;
            rc   = DosFindFirst ("*.hlp", &hdir, fl, &findbuf,
                                 sizeof (findbuf), &c, FIL_STANDARD);
#ifdef _DOLOGDEBUG_
            LogDebug( "Page4Procedure: WM_INITDLG: Entering help file loop ..." );
#endif
            while (!rc)
            {
#ifdef _DOLOGDEBUG_
                LogDebug( "Page4Procedure: WM_INITDLG: Doing '%s' ...", findbuf.achName );
#endif
                if ((psz = _getext (findbuf.achName)))
                    *psz = '\0';
                findbuf.achName[0] = toupper (findbuf.achName[0]);
                WinInsertLboxItem (WinWindowFromID (hwnd, WID_LB_LANGUAGESHELP),
                                   LIT_END, findbuf.achName);
                c = 1;
                rc = DosFindNext (hdir, &findbuf, sizeof (findbuf), &c);
            }
            DosFindClose (hdir);
#ifdef _DOLOGDEBUG_
            LogDebug( "Page4Procedure: WM_INITDLG: help file loop done." );
#endif

            WinSendMsg (hwnd, UM_SETTINGS2DIALOG, 0,0);

            if (pset->fAutoLanguage)
                WinEnableWindow (WinWindowFromID (hwnd, WID_ST_LANGNOTE),
                                 FALSE);
#ifdef _DOLOGDEBUG_
            LogDebug( "Page4Procedure: end WM_INITDLG" );
#endif
        }
        return MRESULT (FALSE);

    case WM_COMMAND:
        if( SHORT1FROMMP( mp1 ) == DID_CANCEL )
            WinPostMsg( g_hwndSettingsDialog, msg, mp1, mp2 );
        return MRESULT( FALSE );

    case UM_SETTINGS2DIALOG:
        {

#ifdef _DOLOGDEBUG_
            LogDebug( "Page4Procedure: start UM_SETTINGS2DIALOG" );
#endif
            // select the appropriate entry in the language-listbox
            CHAR     ach[_MAX_FNAME];
            HWND     hwndLB = WinWindowFromID (hwnd, WID_LB_LANGUAGES);
            ULONG    c, i;

            c = WinQueryLboxCount (hwndLB);

            for (i = 0; i < c; i++)
            {
#ifdef _DOLOGDEBUG_
                LogDebug( "Page4Procedure: UM_SETTINGS2DIALOG: i.1 = %d", i );
#endif
                PSZ psz = PSZ(WinSendDlgItemMsg (hwnd, WID_LB_LANGUAGES,
                                                 LM_QUERYITEMHANDLE,
                                                 MPFROMLONG(i), NULL));
//                WinQueryLboxItemText (hwndLB, i, ach, sizeof (ach));
                if (stricmp (pset->QueryString(SEI_LANGUAGE), psz) == 0)
                    break;
            }
#ifdef _DOLOGDEBUG_
            LogDebug( "Page4Procedure: UM_SETTINGS2DIALOG: after loop 1" );
#endif
            if (i < c)
                WinSendDlgItemMsg (hwnd, WID_LB_LANGUAGES, LM_SELECTITEM,
                                   MPFROMSHORT (i), MPFROMSHORT (TRUE));
            else
                WinSendDlgItemMsg (hwnd, WID_LB_LANGUAGES, LM_SELECTITEM,
                                   MPFROMSHORT (0), MPFROMSHORT (TRUE));
            hwndLB = WinWindowFromID (hwnd, WID_LB_LANGUAGESHELP);
            c = WinQueryLboxCount (hwndLB);

            for (i = 0; i < c; i++)
            {
#ifdef _DOLOGDEBUG_
                LogDebug( "Page4Procedure: UM_SETTINGS2DIALOG: i.2 = %d", i );
#endif
                WinQueryLboxItemText (hwndLB, i, ach, sizeof (ach));
                if (stricmp (pset->QueryString (SEI_LANGUAGEHELP), ach) == 0)
                    break;
            }
#ifdef _DOLOGDEBUG_
            LogDebug( "Page4Procedure: UM_SETTINGS2DIALOG: after loop 2" );
#endif
            if (i < c)
                WinSendDlgItemMsg (hwnd, WID_LB_LANGUAGESHELP, LM_SELECTITEM,
                                   MPFROMSHORT (i), MPFROMSHORT (TRUE));
            else
                WinSendDlgItemMsg (hwnd, WID_LB_LANGUAGESHELP, LM_SELECTITEM,
                                   MPFROMSHORT (0), MPFROMSHORT (TRUE));
#ifdef _DOLOGDEBUG_
            LogDebug( "Page4Procedure: end UM_SETTINGS2DIALOG" );
#endif
        }
        return MRESULT (FALSE);

    case WM_DESTROY:
        {
            CHAR   ach[_MAX_FNAME];

            ULONG ul = USHORT (WinSendDlgItemMsg (hwnd, WID_LB_LANGUAGES,
                                                  LM_QUERYSELECTION,
                                                  MPFROMLONG (LIT_FIRST), 0L));
            PSZ psz = PSZ(WinSendDlgItemMsg (hwnd, WID_LB_LANGUAGES,
                                             LM_QUERYITEMHANDLE,
                                             MPFROMLONG(ul), NULL));
            pset->SetString(SEI_LANGUAGE, psz);

            ul = USHORT (WinSendDlgItemMsg (hwnd, WID_LB_LANGUAGESHELP,
                                            LM_QUERYSELECTION,
                                            MPFROMLONG (LIT_FIRST), 0L));
            WinSendDlgItemMsg (hwnd, WID_LB_LANGUAGESHELP, LM_QUERYITEMTEXT,
                               MPFROM2SHORT (ul, sizeof (ach)), MPFROMP (ach));
            pset->SetString (SEI_LANGUAGEHELP, ach);
        }
        return MRESULT (FALSE);
    }

    return WinDefDlgProc (hwnd, msg, mp1, mp2);
}
Exemplo n.º 4
0
MRESULT CreInstDlg::wmCommand(HM12){
USE_HM12;
USHORT command;
char typename[MAXNAMELENGTH]="";
char propname[MAXNAMELENGTH]="";
char newvalue[MAXNAMELENGTH]="";
int index,dbtype,oktype,i;
ODB_INT intval;
ODB_REAL realval;
ODB_SET coll;
object *obj,*o;
command=SHORT1FROMMP( mp1 ) ;
	switch(command)
	{
	case DID_OK:  //ok button pressed. Create object
		index=WinQueryLboxSelectedItem(hwndlbtypes);
		WinQueryLboxItemText(hwndlbtypes,index,typename,MAXNAMELENGTH);
		if (strlen(typename)<1) {
			//type not specified
			WinMessageBox(HWND_DESKTOP,hwndOwner,(PCH) "A type must be spec.",
			(PCH)"Alert",0,MB_NOICON|MB_OK);
			break;
			}
		else {
			obj=odb.create_instance(typename);
			if (obj==NULL) {
				//object could not be created, possibly because
				//extentless type selectd
				WinMessageBox(HWND_DESKTOP,hwndOwner,(PCH) "Could not create object",
				(PCH)"Alert",0,MB_NOICON|MB_OK);
				break;
			};
			i=WinQueryLboxCount(hwndassignedprop);
			i--;
			while(i>=0){
				//check that the data for each prop is ok
				//and set the properies for the object
				WinQueryLboxItemText(hwndassignedprop,i,propname,MAXNAMELENGTH);
				WinQueryLboxItemText(hwndassignedprop,i,propname,MAXNAMELENGTH);
				WinQueryLboxItemText(hwndpropval,i,newvalue,MAXNAMELENGTH);
				dbtype=odb.getpropertytype(typename,propname);

				if (dbtype==_INT_) {
					validate_integer(newvalue,intval);
					(*obj).setproperty_value(propname,intval);
					};
				if (dbtype==_OTHER_) {
					validate_integer(newvalue,intval);
					o=odb.getobjectwithoid("Usertypes",intval);
					(*obj).setproperty_value(propname,o);
					};
				if (dbtype==_REAL_) {
					validate_real(newvalue,realval);
					(*obj).setproperty_value(propname,realval);
					};
				if (dbtype==_COLLECTION_){
					coll=new collection(_OTHER_);
					if (validate_set(newvalue,&odb,coll)<0) (*coll).~collection();
					(*obj).setproperty_value(propname,coll);
					};
				if (dbtype==_INT_COLLECTION_){
					coll=new collection(_INT_);
					if (validate_set(newvalue,&odb,coll)<0) (*coll).~collection();
					(*obj).setproperty_value(propname,coll);
					};
				if (dbtype==_REAL_COLLECTION_){
					coll=new collection(_REAL_);
					if (validate_set(newvalue,&odb,coll)<0) (*coll).~collection();
					(*obj).setproperty_value(propname,coll);
					};
				if (dbtype==_CHAR_COLLECTION_){
					coll=new collection(_CHAR_);
					if (validate_set(newvalue,&odb,coll)<0) (*coll).~collection();
					(*obj).setproperty_value(propname,coll);
					};
				if (dbtype==_CHAR_) (*obj).setproperty_value(propname,newvalue);
				i--;
				}; //end while all properties set.
				//deleta all unassigned praps
			(*this).clearlbox(hwndassignedprop);
			clearlbox(hwndpropval);
			clearlbox(hwndlbprops);
			WinSetWindowText(hwndviewval,(PSZ)"");
			populate_props(hwndlbprops,typename,  odb);
			noassignedprops=0; //no assigned properties anymore
			WinMessageBox(HWND_DESKTOP,hwndOwner,(PCH) "Instance created.",
			(PCH)"Success",0,MB_NOICON|MB_OK);
		}; //else		//create the object and set properties
		return (MRESULT) FALSE;
		//break;
	case DID_CANCEL:  //quit this window
	  if(WinMessageBox(HWND_DESKTOP,hwndOwner,(PCH) "Quit this window?",
			(PCH)"Sanity Check",0,
			MB_NOICON|MB_OKCANCEL)==MBID_OK)
		WinDismissDlg( hwnd, TRUE );  // Removes the dialog box
	  return (MRESULT) FALSE;
	case PB_SET:
		//assign property a value. The prop is moved to assignedprops
		//and value is validated and moved to hidden listbox
		index=WinQueryLboxSelectedItem(hwndlbtypes); //typename
		WinQueryLboxItemText(hwndlbtypes,index,typename,MAXNAMELENGTH);
		index=WinQueryLboxSelectedItem(hwndlbprops); //propname
		WinQueryLboxItemText(hwndlbprops,index,propname,MAXNAMELENGTH);
		WinQueryWindowText(hwndnewvalue,MAXNAMELENGTH,newvalue);
		dbtype=odb.getpropertytype(typename,propname);
		if (dbtype==_INT_)
			oktype=validate_integer(newvalue,intval);
		if (dbtype==_OTHER_){
			oktype=validate_integer(newvalue,intval);
			if (oktype!=0) {
				//check that there is an object with the oid
				obj=odb.getobjectwithoid("Usertypes",intval);
				if (obj==NULL) oktype=0;
				}
			};
		if (dbtype==_REAL_)
			oktype=validate_real(newvalue,realval);
		if (dbtype==_CHAR_) oktype=1;
		if ((strlen(newvalue)>0)&&(strlen(propname)>0)&&(oktype!=0)){
			//move assigned prop from prop cmb box to assigned props
			WinInsertLboxItem(hwndassignedprop,noassignedprops,(PSZ)propname);
			WinInsertLboxItem(hwndpropval,noassignedprops,(PSZ)newvalue);
			noassignedprops++;
			WinDeleteLboxItem(hwndlbprops,index);
			WinSetWindowText(hwnddatatype,(PSZ)"");
			WinSetWindowText(hwndnewvalue,(PSZ)"");
			}
		else
		WinMessageBox(HWND_DESKTOP,hwndOwner,(PCH) "Missing or erroneous data",
			(PCH)"Alert",0,MB_OKCANCEL);
		break;
	default:
	  return  WinDefDlgProc( hwnd, msg, mp1, mp2 );
      }