Added some tentative wxMotif clipboard code; did some file formatting

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1408 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Julian Smart
1999-01-14 15:15:39 +00:00
parent 8de2e39c17
commit 2d120f8391
46 changed files with 9903 additions and 9564 deletions

View File

@@ -31,11 +31,11 @@
#include "wx/motif/private.h"
void wxMenuItemCallback (Widget w, XtPointer clientData,
XtPointer ptr);
XtPointer ptr);
void wxMenuItemArmCallback (Widget w, XtPointer clientData,
XtPointer ptr);
XtPointer ptr);
void wxMenuItemDisarmCallback (Widget w, XtPointer clientData,
XtPointer ptr);
XtPointer ptr);
// ============================================================================
// implementation
@@ -46,7 +46,7 @@ void wxMenuItemDisarmCallback (Widget w, XtPointer clientData,
// ----------------------------------------------------------------------------
#if !USE_SHARED_LIBRARY
IMPLEMENT_DYNAMIC_CLASS(wxMenuItem, wxObject)
IMPLEMENT_DYNAMIC_CLASS(wxMenuItem, wxObject)
#endif //USE_SHARED_LIBRARY
// ----------------------------------------------------------------------------
@@ -60,22 +60,22 @@ wxMenuItem::wxMenuItem(wxMenu *pParentMenu, int id,
const wxString& strName, const wxString& strHelp,
bool bCheckable,
wxMenu *pSubMenu) :
m_strHelp(strHelp),
m_bCheckable(bCheckable),
m_strName(strName)
m_strHelp(strHelp),
m_bCheckable(bCheckable),
m_strName(strName)
{
wxASSERT( pParentMenu != NULL );
m_pParentMenu = pParentMenu;
m_pSubMenu = pSubMenu;
m_idItem = id;
m_bEnabled = TRUE;
m_bChecked = FALSE;
//// Motif-specific
m_menuBar = NULL;
m_buttonWidget = (WXWidget) NULL;
m_topMenu = NULL;
wxASSERT( pParentMenu != NULL );
m_pParentMenu = pParentMenu;
m_pSubMenu = pSubMenu;
m_idItem = id;
m_bEnabled = TRUE;
m_bChecked = FALSE;
//// Motif-specific
m_menuBar = NULL;
m_buttonWidget = (WXWidget) NULL;
m_topMenu = NULL;
}
wxMenuItem::~wxMenuItem()
@@ -88,10 +88,10 @@ wxMenuItem::~wxMenuItem()
// delete the sub menu
void wxMenuItem::DeleteSubMenu()
{
wxASSERT( m_pSubMenu != NULL );
delete m_pSubMenu;
m_pSubMenu = NULL;
wxASSERT( m_pSubMenu != NULL );
delete m_pSubMenu;
m_pSubMenu = NULL;
}
// change item state
@@ -99,266 +99,265 @@ void wxMenuItem::DeleteSubMenu()
void wxMenuItem::Enable(bool bDoEnable)
{
if ( m_bEnabled != bDoEnable )
{
if ( m_pSubMenu == NULL )
{ // normal menu item
if (m_buttonWidget)
XtSetSensitive( (Widget) m_buttonWidget, (Boolean) bDoEnable);
}
else // submenu
if ( m_bEnabled != bDoEnable )
{
// Maybe we should apply this to all items in the submenu?
// Or perhaps it works anyway.
if (m_buttonWidget)
XtSetSensitive( (Widget) m_buttonWidget, (Boolean) bDoEnable);
if ( m_pSubMenu == NULL )
{ // normal menu item
if (m_buttonWidget)
XtSetSensitive( (Widget) m_buttonWidget, (Boolean) bDoEnable);
}
else // submenu
{
// Maybe we should apply this to all items in the submenu?
// Or perhaps it works anyway.
if (m_buttonWidget)
XtSetSensitive( (Widget) m_buttonWidget, (Boolean) bDoEnable);
}
m_bEnabled = bDoEnable;
}
m_bEnabled = bDoEnable;
}
}
void wxMenuItem::Check(bool bDoCheck)
{
wxCHECK_RET( IsCheckable(), "only checkable items may be checked" );
if ( m_bChecked != bDoCheck )
{
if (m_buttonWidget && XtIsSubclass ((Widget) m_buttonWidget, xmToggleButtonGadgetClass))
wxCHECK_RET( IsCheckable(), "only checkable items may be checked" );
if ( m_bChecked != bDoCheck )
{
XtVaSetValues ( (Widget) m_buttonWidget, XmNset, (Boolean) bDoCheck, NULL);
if (m_buttonWidget && XtIsSubclass ((Widget) m_buttonWidget, xmToggleButtonGadgetClass))
{
XtVaSetValues ( (Widget) m_buttonWidget, XmNset, (Boolean) bDoCheck, NULL);
}
m_bChecked = bDoCheck;
}
m_bChecked = bDoCheck;
}
}
//// Motif-specific
void wxMenuItem::CreateItem (WXWidget menu, wxMenuBar * menuBar, wxMenu * topMenu)
{
m_menuBar = menuBar;
m_topMenu = topMenu;
if (GetId() == -2)
m_menuBar = menuBar;
m_topMenu = topMenu;
if (GetId() == -2)
{
// Id=-2 identifies a Title item.
wxStripMenuCodes ((char*) (const char*) m_strName, wxBuffer);
m_buttonWidget = (WXWidget) XtVaCreateManagedWidget (wxBuffer,
xmLabelGadgetClass, (Widget) menu, NULL);
// Id=-2 identifies a Title item.
wxStripMenuCodes ((char*) (const char*) m_strName, wxBuffer);
m_buttonWidget = (WXWidget) XtVaCreateManagedWidget (wxBuffer,
xmLabelGadgetClass, (Widget) menu, NULL);
}
else if ((!m_strName.IsNull() && m_strName != "") && (!m_pSubMenu))
else if ((!m_strName.IsNull() && m_strName != "") && (!m_pSubMenu))
{
wxStripMenuCodes ((char*) (const char*) m_strName, wxBuffer);
if (IsCheckable())
{
m_buttonWidget = (WXWidget) XtVaCreateManagedWidget (wxBuffer,
xmToggleButtonGadgetClass, (Widget) menu,
NULL);
XtVaSetValues ((Widget) m_buttonWidget, XmNset, (Boolean) IsChecked(), NULL);
}
else
m_buttonWidget = (WXWidget) XtVaCreateManagedWidget (wxBuffer,
xmPushButtonGadgetClass, (Widget) menu,
NULL);
char mnem = wxFindMnemonic (m_strName);
if (mnem != 0)
XtVaSetValues ((Widget) m_buttonWidget, XmNmnemonic, mnem, NULL);
//// TODO: proper accelerator treatment. What does wxFindAccelerator
//// look for?
strcpy(wxBuffer, (char*) (const char*) m_strName);
char *accel = wxFindAccelerator (wxBuffer);
if (accel)
XtVaSetValues ((Widget) m_buttonWidget, XmNaccelerator, accel, NULL);
// TODO: What does this do?
strcpy(wxBuffer, (char*) (const char*) m_strName);
XmString accel_str = wxFindAcceleratorText (wxBuffer);
if (accel_str)
{
XtVaSetValues ((Widget) m_buttonWidget, XmNacceleratorText, accel_str, NULL);
XmStringFree (accel_str);
}
if (IsCheckable())
XtAddCallback ((Widget) m_buttonWidget,
XmNvalueChangedCallback,
(XtCallbackProc) wxMenuItemCallback,
(XtPointer) this);
else
XtAddCallback ((Widget) m_buttonWidget,
XmNactivateCallback,
(XtCallbackProc) wxMenuItemCallback,
(XtPointer) this);
XtAddCallback ((Widget) m_buttonWidget,
XmNarmCallback,
(XtCallbackProc) wxMenuItemArmCallback,
(XtPointer) this);
XtAddCallback ((Widget) m_buttonWidget,
XmNdisarmCallback,
(XtCallbackProc) wxMenuItemDisarmCallback,
(XtPointer) this);
wxStripMenuCodes ((char*) (const char*) m_strName, wxBuffer);
if (IsCheckable())
{
m_buttonWidget = (WXWidget) XtVaCreateManagedWidget (wxBuffer,
xmToggleButtonGadgetClass, (Widget) menu,
NULL);
XtVaSetValues ((Widget) m_buttonWidget, XmNset, (Boolean) IsChecked(), NULL);
}
else
m_buttonWidget = (WXWidget) XtVaCreateManagedWidget (wxBuffer,
xmPushButtonGadgetClass, (Widget) menu,
NULL);
char mnem = wxFindMnemonic (m_strName);
if (mnem != 0)
XtVaSetValues ((Widget) m_buttonWidget, XmNmnemonic, mnem, NULL);
//// TODO: proper accelerator treatment. What does wxFindAccelerator
//// look for?
strcpy(wxBuffer, (char*) (const char*) m_strName);
char *accel = wxFindAccelerator (wxBuffer);
if (accel)
XtVaSetValues ((Widget) m_buttonWidget, XmNaccelerator, accel, NULL);
// TODO: What does this do?
strcpy(wxBuffer, (char*) (const char*) m_strName);
XmString accel_str = wxFindAcceleratorText (wxBuffer);
if (accel_str)
{
XtVaSetValues ((Widget) m_buttonWidget, XmNacceleratorText, accel_str, NULL);
XmStringFree (accel_str);
}
if (IsCheckable())
XtAddCallback ((Widget) m_buttonWidget,
XmNvalueChangedCallback,
(XtCallbackProc) wxMenuItemCallback,
(XtPointer) this);
else
XtAddCallback ((Widget) m_buttonWidget,
XmNactivateCallback,
(XtCallbackProc) wxMenuItemCallback,
(XtPointer) this);
XtAddCallback ((Widget) m_buttonWidget,
XmNarmCallback,
(XtCallbackProc) wxMenuItemArmCallback,
(XtPointer) this);
XtAddCallback ((Widget) m_buttonWidget,
XmNdisarmCallback,
(XtCallbackProc) wxMenuItemDisarmCallback,
(XtPointer) this);
}
else if (GetId() == -1)
else if (GetId() == -1)
{
m_buttonWidget = (WXWidget) XtVaCreateManagedWidget ("separator",
xmSeparatorGadgetClass, (Widget) menu, NULL);
m_buttonWidget = (WXWidget) XtVaCreateManagedWidget ("separator",
xmSeparatorGadgetClass, (Widget) menu, NULL);
}
else if (m_pSubMenu)
else if (m_pSubMenu)
{
m_buttonWidget = m_pSubMenu->CreateMenu (menuBar, menu, topMenu, m_strName, TRUE);
m_pSubMenu->SetButtonWidget(m_buttonWidget);
XtAddCallback ((Widget) m_buttonWidget,
XmNcascadingCallback,
(XtCallbackProc) wxMenuItemArmCallback,
(XtPointer) this);
m_buttonWidget = m_pSubMenu->CreateMenu (menuBar, menu, topMenu, m_strName, TRUE);
m_pSubMenu->SetButtonWidget(m_buttonWidget);
XtAddCallback ((Widget) m_buttonWidget,
XmNcascadingCallback,
(XtCallbackProc) wxMenuItemArmCallback,
(XtPointer) this);
}
if (m_buttonWidget)
XtSetSensitive ((Widget) m_buttonWidget, (Boolean) IsEnabled());
if (m_buttonWidget)
XtSetSensitive ((Widget) m_buttonWidget, (Boolean) IsEnabled());
}
void wxMenuItem::DestroyItem(bool full)
{
if (GetId() == -2)
if (GetId() == -2)
{
; // Nothing
; // Nothing
}
else if ((!m_strName.IsNull() && (m_strName != "")) && !m_pSubMenu)
else if ((!m_strName.IsNull() && (m_strName != "")) && !m_pSubMenu)
{
if (m_buttonWidget)
{
if (IsCheckable())
XtRemoveCallback ((Widget) m_buttonWidget, XmNvalueChangedCallback,
wxMenuItemCallback, (XtPointer) this);
else
XtRemoveCallback ((Widget) m_buttonWidget, XmNactivateCallback,
wxMenuItemCallback, (XtPointer) this);
XtRemoveCallback ((Widget) m_buttonWidget, XmNarmCallback,
wxMenuItemArmCallback, (XtPointer) this);
XtRemoveCallback ((Widget) m_buttonWidget, XmNdisarmCallback,
wxMenuItemDisarmCallback, (XtPointer) this);
}
if (m_buttonWidget)
{
if (IsCheckable())
XtRemoveCallback ((Widget) m_buttonWidget, XmNvalueChangedCallback,
wxMenuItemCallback, (XtPointer) this);
else
XtRemoveCallback ((Widget) m_buttonWidget, XmNactivateCallback,
wxMenuItemCallback, (XtPointer) this);
XtRemoveCallback ((Widget) m_buttonWidget, XmNarmCallback,
wxMenuItemArmCallback, (XtPointer) this);
XtRemoveCallback ((Widget) m_buttonWidget, XmNdisarmCallback,
wxMenuItemDisarmCallback, (XtPointer) this);
}
}
else if (GetId() == -1)
else if (GetId() == -1)
{
; // Nothing
; // Nothing
}
else if (GetSubMenu())
else if (GetSubMenu())
{
if (m_buttonWidget)
{
XtRemoveCallback ((Widget) m_buttonWidget, XmNcascadingCallback,
wxMenuItemArmCallback, (XtPointer) this);
}
m_pSubMenu->DestroyMenu(full);
if (full)
m_buttonWidget = NULL;
if (m_buttonWidget)
{
XtRemoveCallback ((Widget) m_buttonWidget, XmNcascadingCallback,
wxMenuItemArmCallback, (XtPointer) this);
}
m_pSubMenu->DestroyMenu(full);
if (full)
m_buttonWidget = NULL;
}
if (m_buttonWidget && full)
if (m_buttonWidget && full)
{
XtDestroyWidget ((Widget) m_buttonWidget);
m_buttonWidget = (WXWidget) 0;
XtDestroyWidget ((Widget) m_buttonWidget);
m_buttonWidget = (WXWidget) 0;
}
}
void wxMenuItem::SetLabel(const wxString& label)
{
char mnem = wxFindMnemonic (label);
wxStripMenuCodes ((char*) (const char*) label, wxBuffer);
m_strName = label;
if (m_buttonWidget)
char mnem = wxFindMnemonic (label);
wxStripMenuCodes ((char*) (const char*) label, wxBuffer);
m_strName = label;
if (m_buttonWidget)
{
XmString label_str = XmStringCreateSimple (wxBuffer);
XtVaSetValues ((Widget) m_buttonWidget,
XmNlabelString, label_str,
NULL);
XmStringFree (label_str);
if (mnem != 0)
XtVaSetValues ((Widget) m_buttonWidget, XmNmnemonic, mnem, NULL);
strcpy(wxBuffer, (char*) (const char*) label);
char *accel = wxFindAccelerator (wxBuffer);
if (accel)
XtVaSetValues ((Widget) m_buttonWidget, XmNaccelerator, accel, NULL);
strcpy(wxBuffer, (char*) (const char*) label);
XmString accel_str = wxFindAcceleratorText (wxBuffer);
if (accel_str)
XmString label_str = XmStringCreateSimple (wxBuffer);
XtVaSetValues ((Widget) m_buttonWidget,
XmNlabelString, label_str,
NULL);
XmStringFree (label_str);
if (mnem != 0)
XtVaSetValues ((Widget) m_buttonWidget, XmNmnemonic, mnem, NULL);
strcpy(wxBuffer, (char*) (const char*) label);
char *accel = wxFindAccelerator (wxBuffer);
if (accel)
XtVaSetValues ((Widget) m_buttonWidget, XmNaccelerator, accel, NULL);
strcpy(wxBuffer, (char*) (const char*) label);
XmString accel_str = wxFindAcceleratorText (wxBuffer);
if (accel_str)
{
XtVaSetValues ((Widget) m_buttonWidget, XmNacceleratorText, accel_str, NULL);
XmStringFree (accel_str);
XtVaSetValues ((Widget) m_buttonWidget, XmNacceleratorText, accel_str, NULL);
XmStringFree (accel_str);
}
}
}
void wxMenuItemCallback (Widget w, XtPointer clientData,
XtPointer ptr)
XtPointer ptr)
{
wxMenuItem *item = (wxMenuItem *) clientData;
if (item)
wxMenuItem *item = (wxMenuItem *) clientData;
if (item)
{
if (item->IsCheckable())
{
Boolean isChecked = FALSE;
XtVaGetValues ((Widget) item->GetButtonWidget(), XmNset, & isChecked, NULL);
item->SetChecked(isChecked);
}
if (item->GetMenuBar() && item->GetMenuBar()->GetMenuBarFrame())
{
wxCommandEvent commandEvent(wxEVT_COMMAND_MENU_SELECTED, item->GetId());
commandEvent.SetEventObject(item->GetMenuBar()->GetMenuBarFrame());
commandEvent.SetInt( item->GetId() );
item->GetMenuBar()->GetMenuBarFrame()->GetEventHandler()->ProcessEvent(commandEvent);
}
else if (item->GetTopMenu())
{
wxCommandEvent event (wxEVT_COMMAND_MENU_SELECTED, item->GetId());
event.SetEventObject(item->GetTopMenu());
event.SetInt( item->GetId() );
item->GetTopMenu()->ProcessCommand (event);
}
if (item->IsCheckable())
{
Boolean isChecked = FALSE;
XtVaGetValues ((Widget) item->GetButtonWidget(), XmNset, & isChecked, NULL);
item->SetChecked(isChecked);
}
if (item->GetMenuBar() && item->GetMenuBar()->GetMenuBarFrame())
{
wxCommandEvent commandEvent(wxEVT_COMMAND_MENU_SELECTED, item->GetId());
commandEvent.SetEventObject(item->GetMenuBar()->GetMenuBarFrame());
commandEvent.SetInt( item->GetId() );
item->GetMenuBar()->GetMenuBarFrame()->GetEventHandler()->ProcessEvent(commandEvent);
}
else if (item->GetTopMenu())
{
wxCommandEvent event (wxEVT_COMMAND_MENU_SELECTED, item->GetId());
event.SetEventObject(item->GetTopMenu());
event.SetInt( item->GetId() );
item->GetTopMenu()->ProcessCommand (event);
}
}
}
void
wxMenuItemArmCallback (Widget w, XtPointer clientData,
XtPointer ptr)
void wxMenuItemArmCallback (Widget w, XtPointer clientData,
XtPointer ptr)
{
wxMenuItem *item = (wxMenuItem *) clientData;
if (item)
wxMenuItem *item = (wxMenuItem *) clientData;
if (item)
{
if (item->GetMenuBar() && item->GetMenuBar()->GetMenuBarFrame())
{
wxMenuEvent menuEvent(wxEVT_MENU_HIGHLIGHT, item->GetId());
menuEvent.SetEventObject(item->GetMenuBar()->GetMenuBarFrame());
item->GetMenuBar()->GetMenuBarFrame()->GetEventHandler()->ProcessEvent(menuEvent);
}
if (item->GetMenuBar() && item->GetMenuBar()->GetMenuBarFrame())
{
wxMenuEvent menuEvent(wxEVT_MENU_HIGHLIGHT, item->GetId());
menuEvent.SetEventObject(item->GetMenuBar()->GetMenuBarFrame());
item->GetMenuBar()->GetMenuBarFrame()->GetEventHandler()->ProcessEvent(menuEvent);
}
}
}
void
wxMenuItemDisarmCallback (Widget w, XtPointer clientData,
XtPointer ptr)
XtPointer ptr)
{
wxMenuItem *item = (wxMenuItem *) clientData;
if (item)
wxMenuItem *item = (wxMenuItem *) clientData;
if (item)
{
if (item->GetMenuBar() && item->GetMenuBar()->GetMenuBarFrame())
{
// TODO: not sure this is correct, since -1 means something
// special to event system
wxMenuEvent menuEvent(wxEVT_MENU_HIGHLIGHT, -1);
menuEvent.SetEventObject(item->GetMenuBar()->GetMenuBarFrame());
item->GetMenuBar()->GetMenuBarFrame()->GetEventHandler()->ProcessEvent(menuEvent);
}
if (item->GetMenuBar() && item->GetMenuBar()->GetMenuBarFrame())
{
// TODO: not sure this is correct, since -1 means something
// special to event system
wxMenuEvent menuEvent(wxEVT_MENU_HIGHLIGHT, -1);
menuEvent.SetEventObject(item->GetMenuBar()->GetMenuBarFrame());
item->GetMenuBar()->GetMenuBarFrame()->GetEventHandler()->ProcessEvent(menuEvent);
}
}
}