SOL9 2.0 Class: PromptDialog

 SOL9 C++ Class Library  SOL9 Samples  SOL9 Tutorial  SOL9 FAQ  SOL9 ClassTree 

Source code

/*
 * PromptDialog.h 
 * Copyright (c) 2011 Antillia.com TOSHIYUKI ARAI. ALL RIGHTS RESERVED. 
 */


// SOL++2000
// 2000.02.18
#pragma once

#include <sol\PopupView.h>
#include <sol\TextField.h>

#include <sol\PushButton.h>
#include <sol/MessageFont.h>


namespace SOL {

class PromptDialog :public PopupView {
private:
    //TextField   textf;
    Text  textf;

    PushButton  ok;
    PushButton  cancel;

private:
    long size(Event& event)
    {
        int w, h;
        event.getSize(w, h);

        ClientDC cdc(this);
        int h1 = cdc.getTextHeight() * 7/4;
        int w1 = (w - 40)/3;

        textf .reshape(10, 10, w-20, h1);
        ok    .reshape(20, h-h1-10, w1, h1);
        cancel.reshape(20+w1*2, h-h1-10, w1, h1);

        update(NULL);

        return NULL;
    }

 
public:
    PromptDialog(): PopupView() { }

public:
    /**
     * Constructor
     */
    PromptDialog(View* parent, const TCHAR* label, Args& args)
    :PopupView(parent, label, 
                args.set(XmNstyle, (ulong)WS_THICKFRAME))
    {
        Args ar;
        textf.create(this, _T(""), ar);

        ar.reset();
        ar.set(XmNid, IDOK);
        ok.create(this, _T("Ok"), ar);

        ar.reset();
        ar.set(XmNid, IDCANCEL);
        cancel.create(this, _T("Cancel"), ar);
        cancel.addCallback(XmNactivateCallback, this, 
                (Callback)&PromptDialog::popdown, NULL);

        addEventHandler(WM_SIZE, this,
            (Handler)&PromptDialog::size, NULL);
        resize();
    }

public:
    ~PromptDialog()
    {
    }


public:
    virtual Boolean create(View* parent, const TCHAR* label, Args& args)
    {
        Boolean rc = PopupView::create(parent, label, 
                args.set(XmNstyle, (ulong)WS_THICKFRAME));

        Args ar;
        textf.create(this, _T(""), ar);

        ar.reset();
        ar.set(XmNid, IDOK);
        ok.create(this, _T("Ok"), ar);

        ar.reset();
        ar.set(XmNid, IDCANCEL);
        cancel.create(this, _T("Cancel"), ar);
        cancel.addCallback(XmNactivateCallback, this, 
                (Callback)&PromptDialog::popdown, NULL);

        addEventHandler(WM_SIZE, this,
            (Handler)&PromptDialog::size, NULL);
        resize();

        return rc;
    }


/*public:
    TextField&   getTextField() { 
        return textf; 
    }
*/
public:
    PushButton&  getOkButton() { 
        return ok; 
    }

public:    
    void    popup(Action& action)
    {
        textf.setSel(0, 256);
        textf.setFocus();
        PopupView::popup(action);
    }
public:
    void addOkCallback(View* object, Callback callback, void* userData)
    {
        ok.addCallback(XmNactivateCallback, this, 
                callback, NULL);
    }

public:
    int getPrompt(StringT<wchar_t>& text)
    {
        wchar_t buff[256];
        HWND hwn = textf.getWindow();
        if (hwn) {
            MessageBox(NULL, _T("this is a window"), _T("Prompter"), MB_OK);
        } else {
            MessageBox(NULL, _T("this is not a window"), _T("Prompter"), MB_OK);
            
        }
        GetWindowText(hwn, buff, 256);
        text = buff;
        return 0;
        //return textf.getText(text);            
    }
};

}




Last modified: 1 Feb 2012

Copyright (c) 2009-2012 Antillia.com ALL RIGHTS RESERVED.