void wxMenu::SetBackgroundColour(const wxColour& col) { m_backgroundColour = col; if (!col.IsOk()) return; if (m_menuWidget) wxDoChangeBackgroundColour(m_menuWidget, (wxColour&) col); if (m_buttonWidget) wxDoChangeBackgroundColour(m_buttonWidget, (wxColour&) col, true); #if defined(__INTEL_COMPILER) && 1 /* VDM auto patch */ # pragma ivdep # pragma swp # pragma unroll # pragma prefetch # if 0 # pragma simd noassert # endif #endif /* VDM auto patch */ for ( wxMenuItemList::compatibility_iterator node = GetMenuItems().GetFirst(); node; node = node->GetNext() ) { wxMenuItem* item = node->GetData(); if (item->GetButtonWidget()) { // This crashes because it uses gadgets // wxDoChangeBackgroundColour(item->GetButtonWidget(), (wxColour&) col, true); } if (item->GetSubMenu()) item->GetSubMenu()->SetBackgroundColour((wxColour&) col); } }
void wxTextCtrl::ChangeBackgroundColour() { wxWindow::ChangeBackgroundColour(); /* TODO: should scrollbars be affected? Should probably have separate * function to change them (by default, taken from wxSystemSettings) */ if (m_windowStyle & wxTE_MULTILINE) { Widget parent = XtParent ((Widget) m_mainWidget); Widget hsb, vsb; XtVaGetValues (parent, XmNhorizontalScrollBar, &hsb, XmNverticalScrollBar, &vsb, NULL); wxColour backgroundColour = wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE); if (hsb) wxDoChangeBackgroundColour((WXWidget) hsb, backgroundColour, true); if (vsb) wxDoChangeBackgroundColour((WXWidget) vsb, backgroundColour, true); // MBN: why change parent background? // DoChangeBackgroundColour((WXWidget) parent, m_backgroundColour, true); } }
void wxListBox::ChangeBackgroundColour() { wxWindow::ChangeBackgroundColour(); Widget parent = XtParent ((Widget) m_mainWidget); Widget hsb, vsb; XtVaGetValues (parent, XmNhorizontalScrollBar, &hsb, XmNverticalScrollBar, &vsb, NULL); /* TODO: should scrollbars be affected? Should probably have separate * function to change them (by default, taken from wxSystemSettings) */ wxColour backgroundColour = wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE); wxDoChangeBackgroundColour((WXWidget) hsb, backgroundColour, true); wxDoChangeBackgroundColour((WXWidget) vsb, backgroundColour, true); XtVaSetValues (hsb, XmNtroughColor, backgroundColour.AllocColour(XtDisplay(hsb)), NULL); XtVaSetValues (vsb, XmNtroughColor, backgroundColour.AllocColour(XtDisplay(vsb)), NULL); // MBN: why change parent's background? It looks really ugly. // wxDoChangeBackgroundColour((WXWidget) parent, m_backgroundColour, true); }
static void wxChangeListBoxColours(wxWindow* WXUNUSED(win), Widget widget) { wxDoChangeBackgroundColour((WXWidget) widget, *wxWHITE); // Change colour of the scrolled areas of the listboxes Widget listParent = XtParent (widget); #if 0 wxDoChangeBackgroundColour((WXWidget) listParent, *wxWHITE, true); #endif Widget hsb = (Widget) 0; Widget vsb = (Widget) 0; XtVaGetValues (listParent, XmNhorizontalScrollBar, &hsb, XmNverticalScrollBar, &vsb, NULL); /* TODO: should scrollbars be affected? Should probably have separate * function to change them (by default, taken from wxSystemSettings) */ wxColour backgroundColour = wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE); wxDoChangeBackgroundColour((WXWidget) hsb, backgroundColour, true); wxDoChangeBackgroundColour((WXWidget) vsb, backgroundColour, true); if (hsb) XtVaSetValues (hsb, XmNtroughColor, backgroundColour.AllocColour(XtDisplay(hsb)), NULL); if (vsb) XtVaSetValues (vsb, XmNtroughColor, backgroundColour.AllocColour(XtDisplay(vsb)), NULL); }
void wxChoice::ChangeBackgroundColour() { wxDoChangeBackgroundColour(m_formWidget, m_backgroundColour); wxDoChangeBackgroundColour(m_buttonWidget, m_backgroundColour); wxDoChangeBackgroundColour(m_menuWidget, m_backgroundColour); unsigned int i; for (i = 0; i < m_stringArray.GetCount(); i++) wxDoChangeBackgroundColour(m_widgetArray[i], m_backgroundColour); }
void wxChoice::ChangeBackgroundColour() { wxDoChangeBackgroundColour(m_formWidget, m_backgroundColour); wxDoChangeBackgroundColour(m_buttonWidget, m_backgroundColour); wxDoChangeBackgroundColour(m_menuWidget, m_backgroundColour); size_t i; for (i = 0; i < m_noStrings; i++) wxDoChangeBackgroundColour(m_widgetArray[i], m_backgroundColour); }
void wxBitmapButton::ChangeBackgroundColour() { wxDoChangeBackgroundColour(m_mainWidget, m_backgroundColour, true); // Must reset the bitmaps since the colours have changed. DoSetBitmap(); }
// TODO auto-sorting is not supported by the code int wxChoice::DoInsertItems(const wxArrayStringsAdapter& items, unsigned int pos, void **clientData, wxClientDataType type) { #ifndef XmNpositionIndex wxCHECK_MSG( pos == GetCount(), -1, wxT("insert not implemented")); #endif const unsigned int numItems = items.GetCount(); AllocClientData(numItems); for( unsigned int i = 0; i < numItems; ++i, ++pos ) { Widget w = XtVaCreateManagedWidget (GetLabelText(items[i]), #if wxUSE_GADGETS xmPushButtonGadgetClass, (Widget) m_menuWidget, #else xmPushButtonWidgetClass, (Widget) m_menuWidget, #endif #ifdef XmNpositionIndex XmNpositionIndex, pos, #endif NULL); wxDoChangeBackgroundColour((WXWidget) w, m_backgroundColour); if( m_font.IsOk() ) wxDoChangeFont( w, m_font ); m_widgetArray.Insert(w, pos); char mnem = wxFindMnemonic (items[i]); if (mnem != 0) XtVaSetValues (w, XmNmnemonic, mnem, NULL); XtAddCallback (w, XmNactivateCallback, (XtCallbackProc) wxChoiceCallback, (XtPointer) this); if (m_stringArray.GetCount() == 0 && m_buttonWidget) { XtVaSetValues ((Widget) m_buttonWidget, XmNmenuHistory, w, NULL); Widget label = XmOptionButtonGadget ((Widget) m_buttonWidget); wxXmString text( items[i] ); XtVaSetValues (label, XmNlabelString, text(), NULL); } m_stringArray.Insert(items[i], pos); InsertNewItemClientData(pos, clientData, i, type); } return pos - 1; }
// Create menubar bool wxMenuBar::CreateMenuBar(wxFrame* parent) { m_parent = parent; // bleach... override it! PreCreation(); m_parent = NULL; if (m_mainWidget) { XtVaSetValues((Widget) parent->GetMainWidget(), XmNmenuBar, (Widget) m_mainWidget, NULL); /* if (!XtIsManaged((Widget) m_mainWidget)) XtManageChild((Widget) m_mainWidget); */ XtMapWidget((Widget) m_mainWidget); return true; } Widget menuBarW = XmCreateMenuBar ((Widget) parent->GetMainWidget(), wxMOTIF_STR("MenuBar"), NULL, 0); m_mainWidget = (WXWidget) menuBarW; size_t menuCount = GetMenuCount(); for (size_t i = 0; i < menuCount; i++) { wxMenu *menu = GetMenu(i); wxString title(m_titles[i]); menu->SetButtonWidget(menu->CreateMenu (this, menuBarW, menu, i, title, true)); if (strcmp (wxStripMenuCodes(title), "Help") == 0) XtVaSetValues ((Widget) menuBarW, XmNmenuHelpWidget, (Widget) menu->GetButtonWidget(), NULL); // tear off menu support #if (XmVersion >= 1002) if ( menu->IsTearOff() ) { XtVaSetValues(GetWidget(menu), XmNtearOffModel, XmTEAR_OFF_ENABLED, NULL); Widget tearOff = XmGetTearOffControl(GetWidget(menu)); wxDoChangeForegroundColour((Widget) tearOff, m_foregroundColour); wxDoChangeBackgroundColour((Widget) tearOff, m_backgroundColour, true); } #endif } PostCreation(); XtVaSetValues((Widget) parent->GetMainWidget(), XmNmenuBar, (Widget) m_mainWidget, NULL); XtRealizeWidget ((Widget) menuBarW); XtManageChild ((Widget) menuBarW); SetMenuBarFrame(parent); return true; }
bool wxMenuBar::SetBackgroundColour(const wxColour& col) { m_backgroundColour = col; if (m_mainWidget) wxDoChangeBackgroundColour(m_mainWidget, (wxColour&) col); size_t menuCount = GetMenuCount(); for (size_t i = 0; i < menuCount; i++) m_menus.Item(i)->GetData()->SetBackgroundColour((wxColour&) col); return true; }
void wxMenu::SetBackgroundColour(const wxColour& col) { m_backgroundColour = col; if (m_menuWidget) wxDoChangeBackgroundColour(m_menuWidget, (wxColour&) col); if (m_buttonWidget) wxDoChangeBackgroundColour(m_buttonWidget, (wxColour&) col, true); for ( wxMenuItemList::compatibility_iterator node = GetMenuItems().GetFirst(); node; node = node->GetNext() ) { wxMenuItem* item = node->GetData(); if (item->GetButtonWidget()) { // This crashes because it uses gadgets // wxDoChangeBackgroundColour(item->GetButtonWidget(), (wxColour&) col, true); } if (item->GetSubMenu()) item->GetSubMenu()->SetBackgroundColour((wxColour&) col); } }
bool wxMenuBar::SetBackgroundColour(const wxColour& col) { if (!wxWindowBase::SetBackgroundColour(col)) return false; if (!col.IsOk()) return false; if (m_mainWidget) wxDoChangeBackgroundColour(m_mainWidget, (wxColour&) col); size_t menuCount = GetMenuCount(); for (size_t i = 0; i < menuCount; i++) m_menus.Item(i)->GetData()->SetBackgroundColour((wxColour&) col); return true; }
int wxChoice::DoInsert(const wxString& item, unsigned int pos) { #ifndef XmNpositionIndex wxCHECK_MSG( pos == GetCount(), -1, wxT("insert not implemented")); #endif Widget w = XtVaCreateManagedWidget (GetLabelText(item), #if wxUSE_GADGETS xmPushButtonGadgetClass, (Widget) m_menuWidget, #else xmPushButtonWidgetClass, (Widget) m_menuWidget, #endif #ifdef XmNpositionIndex XmNpositionIndex, pos, #endif NULL); wxDoChangeBackgroundColour((WXWidget) w, m_backgroundColour); if( m_font.Ok() ) wxDoChangeFont( w, m_font ); m_widgetArray.Insert(w, pos); char mnem = wxFindMnemonic (item); if (mnem != 0) XtVaSetValues (w, XmNmnemonic, mnem, NULL); XtAddCallback (w, XmNactivateCallback, (XtCallbackProc) wxChoiceCallback, (XtPointer) this); if (m_noStrings == 0 && m_buttonWidget) { XtVaSetValues ((Widget) m_buttonWidget, XmNmenuHistory, w, NULL); Widget label = XmOptionButtonGadget ((Widget) m_buttonWidget); wxXmString text( item ); XtVaSetValues (label, XmNlabelString, text(), NULL); } // need to ditch wxStringList for wxArrayString m_stringList.Insert(pos, MYcopystring(item)); m_noStrings ++; return pos; }
void wxRadioBox::ChangeBackgroundColour() { wxWindow::ChangeBackgroundColour(); wxColour colour = *wxBLACK; WXPixel selectPixel = colour.AllocColour(XtDisplay((Widget)m_mainWidget)); for (unsigned int i = 0; i < m_noItems; i++) { WXWidget radioButton = m_radioButtons[i]; wxDoChangeBackgroundColour(radioButton, m_backgroundColour, true); XtVaSetValues ((Widget) radioButton, XmNselectColor, selectPixel, NULL); } }
int wxChoice::DoAppend(const wxString& item) { Widget w = XtVaCreateManagedWidget (wxStripMenuCodes(item), #if wxUSE_GADGETS xmPushButtonGadgetClass, (Widget) m_menuWidget, #else xmPushButtonWidgetClass, (Widget) m_menuWidget, #endif NULL); wxDoChangeBackgroundColour((WXWidget) w, m_backgroundColour); if( m_font.Ok() ) wxDoChangeFont( w, m_font ); m_widgetArray.Add(w); char mnem = wxFindMnemonic (item); if (mnem != 0) XtVaSetValues (w, XmNmnemonic, mnem, NULL); XtAddCallback (w, XmNactivateCallback, (XtCallbackProc) wxChoiceCallback, (XtPointer) this); if (m_noStrings == 0 && m_buttonWidget) { XtVaSetValues ((Widget) m_buttonWidget, XmNmenuHistory, w, NULL); Widget label = XmOptionButtonGadget ((Widget) m_buttonWidget); wxXmString text( item ); XtVaSetValues (label, XmNlabelString, text(), NULL); } m_stringList.Add(item); m_noStrings ++; return GetCount() - 1; }
bool wxMenuBar::SetBackgroundColour(const wxColour& col) { if (!wxWindowBase::SetBackgroundColour(col)) return false; if (!col.IsOk()) return false; if (m_mainWidget) wxDoChangeBackgroundColour(m_mainWidget, (wxColour&) col); size_t menuCount = GetMenuCount(); #if defined(__INTEL_COMPILER) && 1 /* VDM auto patch */ # pragma ivdep # pragma swp # pragma unroll # pragma prefetch # if 0 # pragma simd noassert # endif #endif /* VDM auto patch */ for (size_t i = 0; i < menuCount; i++) m_menus.Item(i)->GetData()->SetBackgroundColour((wxColour&) col); return true; }
bool wxToolBar::Realize() { if ( m_tools.GetCount() == 0 ) { // nothing to do return true; } bool isVertical = GetWindowStyle() & wxTB_VERTICAL; // Separator spacing const int separatorSize = GetToolSeparation(); // 8; wxSize margins = GetToolMargins(); int packing = GetToolPacking(); int marginX = margins.x; int marginY = margins.y; int currentX = marginX; int currentY = marginY; int buttonHeight = 0, buttonWidth = 0; Widget button; Pixmap pixmap, insensPixmap; wxBitmap bmp, insensBmp; wxToolBarToolsList::compatibility_iterator node = m_tools.GetFirst(); while ( node ) { wxToolBarTool *tool = (wxToolBarTool *)node->GetData(); switch ( tool->GetStyle() ) { case wxTOOL_STYLE_CONTROL: { wxControl* control = tool->GetControl(); wxSize sz = control->GetSize(); wxPoint pos = control->GetPosition(); // Allow a control to specify a y[x]-offset by setting // its initial position, but still don't allow it to // position itself above the top[left] margin. int controlY = (pos.y > 0) ? pos.y : currentY; int controlX = (pos.x > 0) ? pos.x : currentX; control->Move( isVertical ? controlX : currentX, isVertical ? currentY : controlY ); if ( isVertical ) currentY += sz.y + packing; else currentX += sz.x + packing; break; } case wxTOOL_STYLE_SEPARATOR: // skip separators for vertical toolbars if( !isVertical ) { currentX += separatorSize; } break; case wxTOOL_STYLE_BUTTON: button = (Widget) 0; if ( tool->CanBeToggled() && !tool->GetButtonWidget() ) { button = XtVaCreateWidget("toggleButton", xmToggleButtonWidgetClass, (Widget) m_mainWidget, XmNx, currentX, XmNy, currentY, XmNindicatorOn, False, XmNshadowThickness, 2, XmNborderWidth, 0, XmNspacing, 0, XmNmarginWidth, 0, XmNmarginHeight, 0, XmNmultiClick, XmMULTICLICK_KEEP, XmNlabelType, XmPIXMAP, NULL); XtAddCallback ((Widget) button, XmNvalueChangedCallback, (XtCallbackProc) wxToolButtonCallback, (XtPointer) this); XtVaSetValues ((Widget) button, XmNselectColor, m_backgroundColour.AllocColour (XtDisplay((Widget) button)), NULL); } else if( !tool->GetButtonWidget() ) { button = XtVaCreateWidget("button", xmPushButtonWidgetClass, (Widget) m_mainWidget, XmNx, currentX, XmNy, currentY, XmNpushButtonEnabled, True, XmNmultiClick, XmMULTICLICK_KEEP, XmNlabelType, XmPIXMAP, NULL); XtAddCallback (button, XmNactivateCallback, (XtCallbackProc) wxToolButtonCallback, (XtPointer) this); } if( !tool->GetButtonWidget() ) { wxDoChangeBackgroundColour((WXWidget) button, m_backgroundColour, true); tool->SetWidget(button); } else { button = (Widget)tool->GetButtonWidget(); XtVaSetValues( button, XmNx, currentX, XmNy, currentY, NULL ); } // For each button, if there is a mask, we must create // a new wxBitmap that has the correct background colour // for the button. Otherwise the background will just be // e.g. black if a transparent XPM has been loaded. bmp = tool->GetNormalBitmap(); insensBmp = tool->GetDisabledBitmap(); if ( bmp.GetMask() || insensBmp.GetMask() ) { WXPixel backgroundPixel; XtVaGetValues(button, XmNbackground, &backgroundPixel, NULL); wxColour col; col.SetPixel(backgroundPixel); if( bmp.IsOk() && bmp.GetMask() ) { bmp = wxCreateMaskedBitmap(bmp, col); tool->SetNormalBitmap(bmp); } if( insensBmp.IsOk() && insensBmp.GetMask() ) { insensBmp = wxCreateMaskedBitmap(insensBmp, col); tool->SetDisabledBitmap(insensBmp); } } // Create a selected/toggled bitmap. If there isn't a 2nd // bitmap, we need to create it (with a darker, selected // background) WXPixel backgroundPixel; if ( tool->CanBeToggled() ) XtVaGetValues(button, XmNselectColor, &backgroundPixel, NULL); else XtVaGetValues(button, XmNarmColor, &backgroundPixel, NULL); wxColour col; col.SetPixel(backgroundPixel); pixmap = (Pixmap) bmp.GetDrawable(); { wxBitmap tmp = tool->GetDisabledBitmap(); insensPixmap = tmp.IsOk() ? (Pixmap)tmp.GetDrawable() : tool->GetInsensPixmap(); } if (tool->CanBeToggled()) { // Toggle button Pixmap pixmap2 = tool->GetArmPixmap(); Pixmap insensPixmap2 = tool->GetInsensPixmap(); XtVaSetValues (button, XmNfillOnSelect, True, XmNlabelPixmap, pixmap, XmNselectPixmap, pixmap2, XmNlabelInsensitivePixmap, insensPixmap, XmNselectInsensitivePixmap, insensPixmap2, XmNlabelType, XmPIXMAP, NULL); } else { Pixmap pixmap2 = tool->GetArmPixmap(); // Normal button XtVaSetValues(button, XmNlabelPixmap, pixmap, XmNlabelInsensitivePixmap, insensPixmap, XmNarmPixmap, pixmap2, NULL); } XtManageChild(button); { Dimension width, height; XtVaGetValues(button, XmNwidth, &width, XmNheight, & height, NULL); if ( isVertical ) currentY += height + packing; else currentX += width + packing; buttonHeight = wxMax(buttonHeight, height); buttonWidth = wxMax(buttonWidth, width); } XtAddEventHandler (button, EnterWindowMask | LeaveWindowMask, False, wxToolButtonPopupCallback, (XtPointer) this); break; } node = node->GetNext(); } SetSize( -1, -1, isVertical ? buttonWidth + 2 * marginX : -1, isVertical ? -1 : buttonHeight + 2*marginY ); return true; }
void wxDialog::ChangeBackgroundColour() { if (GetMainWidget()) wxDoChangeBackgroundColour(GetMainWidget(), m_backgroundColour); }
int wxFileDialog::ShowModal() { wxBeginBusyCursor(); // static char fileBuf[512]; Widget parentWidget = (Widget) 0; if (m_parent) parentWidget = (Widget) m_parent->GetTopWidget(); else parentWidget = (Widget) wxTheApp->GetTopLevelWidget(); // prepare the arg list Display* dpy = XtDisplay(parentWidget); Arg args[10]; int ac = 0; if (m_backgroundColour.IsOk()) { wxComputeColours (dpy, & m_backgroundColour, NULL); XtSetArg(args[ac], XmNbackground, g_itemColors[wxBACK_INDEX].pixel); ac++; XtSetArg(args[ac], XmNtopShadowColor, g_itemColors[wxTOPS_INDEX].pixel); ac++; XtSetArg(args[ac], XmNbottomShadowColor, g_itemColors[wxBOTS_INDEX].pixel); ac++; XtSetArg(args[ac], XmNforeground, g_itemColors[wxFORE_INDEX].pixel); ac++; } wxFont font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); #if __WXMOTIF20__ && !__WXLESSTIF__ XtSetArg(args[ac], XmNbuttonRenderTable, font.GetFontTypeC(dpy)); ac++; XtSetArg(args[ac], XmNlabelRenderTable, font.GetFontTypeC(dpy)); ac++; XtSetArg(args[ac], XmNtextRenderTable, font.GetFontTypeC(dpy)); ac++; #else XtSetArg(args[ac], XmNbuttonFontList, font.GetFontTypeC(dpy)); ac++; XtSetArg(args[ac], XmNlabelFontList, font.GetFontTypeC(dpy)); ac++; XtSetArg(args[ac], XmNtextFontList, font.GetFontTypeC(dpy)); ac++; #endif Widget fileSel = XmCreateFileSelectionDialog(parentWidget, wxMOTIF_STR("file_selector"), args, ac); #define wxFSChild( name ) \ XmFileSelectionBoxGetChild(fileSel, name) XtUnmanageChild(wxFSChild(XmDIALOG_HELP_BUTTON)); Widget filterWidget = wxFSChild(XmDIALOG_FILTER_TEXT); Widget selectionWidget = wxFSChild(XmDIALOG_TEXT); Widget dirListWidget = wxFSChild(XmDIALOG_DIR_LIST); Widget fileListWidget = wxFSChild(XmDIALOG_LIST); // for changing labels Widget okWidget = wxFSChild(XmDIALOG_OK_BUTTON); Widget applyWidget = wxFSChild(XmDIALOG_APPLY_BUTTON); Widget cancelWidget = wxFSChild(XmDIALOG_CANCEL_BUTTON); Widget dirlistLabel = wxFSChild(XmDIALOG_DIR_LIST_LABEL); Widget filterLabel = wxFSChild(XmDIALOG_FILTER_LABEL); Widget listLabel = wxFSChild(XmDIALOG_LIST_LABEL); Widget selectionLabel = wxFSChild(XmDIALOG_SELECTION_LABEL); #undef wxFSChild // change labels wxXmString btnOK( wxGetStockLabel( wxID_OK, false ) ), btnCancel( wxGetStockLabel( wxID_CANCEL, false ) ), btnFilter( _("Filter") ), lblFilter( _("Filter") ), lblDirectories( _("Directories") ), lblFiles( _("Files" ) ), lblSelection( _("Selection") ); XtVaSetValues( okWidget, XmNlabelString, btnOK(), NULL ); XtVaSetValues( applyWidget, XmNlabelString, btnFilter(), NULL ); XtVaSetValues( cancelWidget, XmNlabelString, btnCancel(), NULL ); XtVaSetValues( dirlistLabel, XmNlabelString, lblDirectories(), NULL ); XtVaSetValues( filterLabel, XmNlabelString, lblFilter(), NULL ); XtVaSetValues( listLabel, XmNlabelString, lblFiles(), NULL ); XtVaSetValues( selectionLabel, XmNlabelString, lblSelection(), NULL ); Widget shell = XtParent(fileSel); if ( !m_message.empty() ) XtVaSetValues(shell, XmNtitle, (const char*)m_message.mb_str(), NULL); if (!m_wildCard.empty()) { // return something understandable by Motif wxString wildCard = ParseWildCard( m_wildCard ); wxString filter; if (!m_dir.empty()) filter = m_dir + wxString("/") + wildCard; else filter = wildCard; XmTextSetString(filterWidget, filter.char_str()); XmFileSelectionDoSearch(fileSel, NULL); } // Suggested by Terry Gitnick, 16/9/97, because of change in Motif // file selector on Solaris 1.5.1. if ( !m_dir.empty() ) { wxXmString thePath( m_dir ); XtVaSetValues (fileSel, XmNdirectory, thePath(), NULL); } wxString entirePath; if (!m_dir.empty()) { entirePath = m_dir + wxString("/") + m_fileName; } else { entirePath = m_fileName; } if (!entirePath.empty()) { XmTextSetString(selectionWidget, entirePath.char_str()); } XtAddCallback(fileSel, XmNcancelCallback, (XtCallbackProc)wxFileSelCancel, (XtPointer)NULL); XtAddCallback(fileSel, XmNokCallback, (XtCallbackProc)wxFileSelOk, (XtPointer)NULL); XtAddCallback(fileSel, XmNunmapCallback, (XtCallbackProc)wxFileSelClose, (XtPointer)this); //#if XmVersion > 1000 // I'm not sure about what you mean with XmVersion. // If this is for Motif1.1/Motif1.2, then check XmVersion>=1200 // (Motif1.1.4 ==> XmVersion 1100 ) // Nevertheless, I put here a #define, so anyone can choose in (I)makefile. // #if !DEFAULT_FILE_SELECTOR_SIZE int width = wxFSB_WIDTH; int height = wxFSB_HEIGHT; XtVaSetValues(fileSel, XmNwidth, width, XmNheight, height, XmNresizePolicy, XmRESIZE_NONE, NULL); #endif wxDoChangeBackgroundColour((WXWidget) filterWidget, *wxWHITE); wxDoChangeBackgroundColour((WXWidget) selectionWidget, *wxWHITE); wxChangeListBoxColours(this, dirListWidget); wxChangeListBoxColours(this, fileListWidget); XtManageChild(fileSel); m_fileSelectorAnswer = wxEmptyString; m_fileSelectorReturned = false; wxEndBusyCursor(); XtAddGrab(XtParent(fileSel), True, False); XtAppContext context = (XtAppContext) wxTheApp->GetAppContext(); XEvent event; while (!m_fileSelectorReturned) { XtAppNextEvent(context, &event); XtDispatchEvent(&event); } XtRemoveGrab(XtParent(fileSel)); XtUnmapWidget(XtParent(fileSel)); XtDestroyWidget(XtParent(fileSel)); // Now process all events, because otherwise // this might remain on the screen wxFlushEvents(XtDisplay(fileSel)); m_path = m_fileSelectorAnswer; m_fileName = wxFileNameFromPath(m_fileSelectorAnswer); m_dir = wxPathOnly(m_path); if (m_fileName.empty()) return wxID_CANCEL; else return wxID_OK; }
void wxFrame::ChangeBackgroundColour() { if (GetClientWidget()) wxDoChangeBackgroundColour(GetClientWidget(), m_backgroundColour); }