Ejemplo n.º 1
0
        	privileges operator~() const
		{
			return privileges(~m_value);
		}
ctlSecurityPanel::ctlSecurityPanel(wxNotebook *nb, const wxString &privList, const char *privChars, wxImageList *imgList)
: wxPanel(nb, -1, wxDefaultPosition, wxDefaultSize)
{
    nbNotebook = nb;
    nbNotebook->AddPage(this, _("Privileges"));

    connection = 0;
    privilegeChars=privChars;
    allPrivileges=0;

    privCheckboxes=0;

    wxStringTokenizer privileges(privList, wxT(","));
    privilegeCount=privileges.CountTokens();
    
    wxFlexGridSizer *item0 = new wxFlexGridSizer(3, 1, 5, 5);
    item0->AddGrowableCol(0);
    item0->AddGrowableRow(0);

    if (privilegeCount)
    {
        bool needAll=(privilegeCount > 1);
        privCheckboxes = new wxCheckBox*[privilegeCount*2];
        int i=0;

        wxFlexGridSizer *itemSizer1 = new wxFlexGridSizer(1, 1, 5, 5);
        itemSizer1->AddGrowableCol(0);
        itemSizer1->AddGrowableRow(0);
        lbPrivileges = new ctlListView(this, CTL_LBPRIV, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER|wxLC_REPORT);
        lbPrivileges->SetImageList(imgList, wxIMAGE_LIST_SMALL);
        lbPrivileges->AddColumn(_("User/Group"), 70, wxLIST_FORMAT_LEFT);
        lbPrivileges->AddColumn(_("Privileges"), 70, wxLIST_FORMAT_LEFT);
        itemSizer1->Add(lbPrivileges, 0, wxEXPAND|wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT, 4);
        item0->Add(itemSizer1, 0, wxEXPAND|wxALL, 5);

        wxBoxSizer* itemSizer2 = new wxBoxSizer(wxHORIZONTAL);
        btnAddPriv = new wxButton(this, CTL_ADDPRIV, _("Add/Change"));
        itemSizer2->Add(btnAddPriv, 0, wxEXPAND|wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT, 4);
        btnDelPriv = new wxButton(this, CTL_DELPRIV, _("Remove"));
        itemSizer2->Add(btnDelPriv, 0, wxEXPAND|wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT, 4);
        item0->Add(itemSizer2, 0, wxEXPAND|wxALL, 0);

        wxStaticBox* sb = new wxStaticBox(this, -1, _("Privileges"));
        wxBoxSizer* itemSizer3 = new wxStaticBoxSizer( sb, wxVERTICAL );
        item0->Add(itemSizer3, 0, wxEXPAND|wxALL, 5);

        wxBoxSizer* itemSizer4 = new wxBoxSizer(wxHORIZONTAL);
        stGroup = new wxStaticText(this, CTL_STATICGROUP, _("Group"));
        itemSizer4->Add(stGroup, 0, wxEXPAND|wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT, 4);
        cbGroups = new ctlComboBox(this, CTL_CBGROUP, wxDefaultPosition, wxDefaultSize);
        cbGroups->Append(wxT("public"));
        cbGroups->SetSelection(0);
        itemSizer4->Add(cbGroups, wxEXPAND|wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT);
        itemSizer3->Add(itemSizer4, 0, wxEXPAND|wxALL, 0);

        /* border size depends on the plateform */
        #ifdef __WXMSW__
        int bordersize = 4;
        #endif
        #ifdef __WXMAC__
        int bordersize = 3;
        #endif
        #ifdef __WXGTK__
        int bordersize = 0;
        #endif

        if (needAll)
        {
            wxBoxSizer* itemSizer5 = new wxBoxSizer(wxHORIZONTAL);
            allPrivileges = new wxCheckBox(this, CTL_ALLPRIV, wxT("ALL"));
            itemSizer5->Add(allPrivileges, wxEXPAND|wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT);
            allPrivilegesGrant = new wxCheckBox(this, CTL_ALLPRIVGRANT, wxT("WITH GRANT OPTION"));
            itemSizer5->Add(allPrivilegesGrant, wxEXPAND|wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT);
            allPrivilegesGrant->Disable();
            itemSizer3->Add(itemSizer5, 0, wxALL, bordersize);
        }

        while (privileges.HasMoreTokens())
        {
            wxString priv=privileges.GetNextToken();
            wxCheckBox *cb;
            wxBoxSizer* itemSizer6 = new wxBoxSizer(wxHORIZONTAL);
            cb=new wxCheckBox(this, CTL_PRIVCB+i, priv);
            itemSizer6->Add(cb, wxEXPAND|wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT);
            privCheckboxes[i++] = cb;
            cb=new wxCheckBox(this, CTL_PRIVCB+i, wxT("WITH GRANT OPTION"));
            itemSizer6->Add(cb, wxEXPAND|wxALIGN_CENTRE_VERTICAL|wxTOP|wxLEFT|wxRIGHT);
            cb->Disable();
            privCheckboxes[i++] = cb;
            itemSizer3->Add(itemSizer6, 0, wxALL, bordersize);
        }
    }
    
    this->SetSizer(item0);
    item0->Fit(this);
}
Ejemplo n.º 3
0
        	privileges operator^(privileges other) const
		{
			return privileges(m_value ^ other.m_value);
		}