wxWidgets/src/motif/statbmp.cpp
Julian Smart dc1efb1d9f Some Motif fixes; makefile fixes; added wxTransferStreamToFile/FileToStream for wxWin
streams; fixed wxSP_... ids that clashed with wxTextCtrl; added generic GetPixel implementation for GTK/Motif


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6262 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2000-02-24 15:04:24 +00:00

143 lines
3.4 KiB
C++

/////////////////////////////////////////////////////////////////////////////
// Name: statbmp.cpp
// Purpose: wxStaticBitmap
// Author: Julian Smart
// Modified by:
// Created: 17/09/98
// RCS-ID: $Id$
// Copyright: (c) Julian Smart
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation "statbmp.h"
#endif
#include "wx/statbmp.h"
#ifdef __VMS__
#pragma message disable nosimpint
#endif
#include <Xm/Xm.h>
#include <Xm/Label.h>
#include <Xm/LabelG.h>
#include <Xm/RowColumn.h>
#ifdef __VMS__
#pragma message enable nosimpint
#endif
#include "wx/motif/private.h"
IMPLEMENT_DYNAMIC_CLASS(wxStaticBitmap, wxControl)
/*
* wxStaticBitmap
*/
bool wxStaticBitmap::Create(wxWindow *parent, wxWindowID id,
const wxBitmap& bitmap,
const wxPoint& pos,
const wxSize& size,
long style,
const wxString& name)
{
m_messageBitmap = bitmap;
SetName(name);
m_backgroundColour = parent->GetBackgroundColour();
m_foregroundColour = parent->GetForegroundColour();
if (parent) parent->AddChild(this);
if ( id == -1 )
m_windowId = (int)NewControlId();
else
m_windowId = id;
m_windowStyle = style;
Widget parentWidget = (Widget) parent->GetClientWidget();
m_mainWidget = (WXWidget) XtVaCreateManagedWidget ("staticBitmap",
#if USE_GADGETS
xmLabelGadgetClass, parentWidget,
#else
xmLabelWidgetClass, parentWidget,
#endif
XmNalignment, XmALIGNMENT_BEGINNING,
NULL);
XtVaSetValues ((Widget) m_mainWidget,
XmNlabelPixmap, (Pixmap) ((wxBitmap&)bitmap).GetLabelPixmap (m_mainWidget),
XmNlabelType, XmPIXMAP,
NULL);
m_font = parent->GetFont();
ChangeFont(FALSE);
SetCanAddEventHandler(TRUE);
wxSize actualSize(size);
if (actualSize.x == -1)
actualSize.x = bitmap.GetWidth();
if (actualSize.y == -1)
actualSize.y = bitmap.GetHeight();
AttachWidget (parent, m_mainWidget, (WXWidget) NULL, pos.x, pos.y, actualSize.x, actualSize.y);
ChangeBackgroundColour ();
return TRUE;
}
wxStaticBitmap::~wxStaticBitmap()
{
SetBitmap(wxNullBitmap);
}
void wxStaticBitmap::SetBitmap(const wxBitmap& bitmap)
{
m_messageBitmap = bitmap;
Widget widget = (Widget) m_mainWidget;
int x, y, w1, h1, w2, h2;
GetPosition(&x, &y);
if (bitmap.Ok())
{
w2 = bitmap.GetWidth();
h2 = bitmap.GetHeight();
XtVaSetValues (widget,
XmNlabelPixmap, ((wxBitmap&)bitmap).GetLabelPixmap (widget),
XmNlabelType, XmPIXMAP,
NULL);
GetSize(&w1, &h1);
if (! (w1 == w2) && (h1 == h2))
SetSize(x, y, w2, h2);
}
else
{
// Null bitmap: must not use current pixmap
// since it is no longer valid.
XtVaSetValues (widget,
XmNlabelType, XmSTRING,
XmNlabelPixmap, XmUNSPECIFIED_PIXMAP,
NULL);
}
}
void wxStaticBitmap::ChangeFont(bool keepOriginalSize)
{
wxWindow::ChangeFont(keepOriginalSize);
}
void wxStaticBitmap::ChangeBackgroundColour()
{
wxWindow::ChangeBackgroundColour();
}
void wxStaticBitmap::ChangeForegroundColour()
{
wxWindow::ChangeForegroundColour();
}