/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* ***** BEGIN LICENSE BLOCK ***** * Version: NPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Netscape Public License * Version 1.1 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/NPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is mozilla.org code. * * The Initial Developer of the Original Code is * Netscape Communications Corporation. * Portions created by the Initial Developer are Copyright (C) 1998 * the Initial Developer. All Rights Reserved. * * Contributor(s): * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the NPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the NPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #include "nsButton.h" #include "nsToolkit.h" #include "nsColor.h" #include "nsGUIEvent.h" #include "nsString.h" #include #include "nsILookAndFeel.h" #include "nsWidgetsCID.h" #include "nsIComponentManager.h" #include "nsIDeviceContext.h" #include "nsIFontMetrics.h" #include "nsPhWidgetLog.h" static NS_DEFINE_IID(kLookAndFeelCID, NS_LOOKANDFEEL_CID); static NS_DEFINE_IID(kILookAndFeelIID, NS_ILOOKANDFEEL_IID); NS_IMPL_ISUPPORTS_INHERITED1(nsButton, nsWidget, nsIButton) //------------------------------------------------------------------------- // // nsButton constructor // //------------------------------------------------------------------------- nsButton::nsButton() : nsWidget(), nsIButton() { NS_INIT_ISUPPORTS(); } //------------------------------------------------------------------------- // // nsButton destructor // //------------------------------------------------------------------------- nsButton::~nsButton() { } //------------------------------------------------------------------------- // // Set this button label // //------------------------------------------------------------------------- NS_METHOD nsButton::SetLabel(const nsString& aText) { mLabel = aText; if( mWidget ) { PtArg_t arg; PtSetArg( &arg, Pt_ARG_TEXT_STRING, NS_ConvertUCS2toUTF8(aText).get(), 0 ); PtSetResources( mWidget, 1, &arg ); } return NS_OK; } //------------------------------------------------------------------------- // // Get this button label // //------------------------------------------------------------------------- NS_METHOD nsButton::GetLabel(nsString& aBuffer) { aBuffer = mLabel; return NS_OK; } //------------------------------------------------------------------------- // // move, paint, resizes message - ignore // //------------------------------------------------------------------------- // Not Implemented PRBool nsButton::OnMove(PRInt32, PRInt32) { return PR_FALSE; } // Not Implemented PRBool nsButton::OnPaint() { return PR_FALSE; } // Not Implemented PRBool nsButton::OnResize(nsRect &aWindowRect) { return PR_FALSE; } /** * Renders the Button for Printing * **/ // Not Implemented NS_METHOD nsButton::Paint(nsIRenderingContext& aRenderingContext, const nsRect& aDirtyRect) { return NS_OK; } NS_METHOD nsButton::CreateNative( PtWidget_t* aParent ) { nsresult res = NS_ERROR_FAILURE; PtArg_t arg[5]; PhPoint_t pos; PhDim_t dim; const unsigned short BorderWidth = 2; NS_PRECONDITION(aParent, "nsButton::CreateNative aParent is NULL"); pos.x = mBounds.x; pos.y = mBounds.y; dim.w = mBounds.width - (2*BorderWidth); // Correct for border width dim.h = mBounds.height - (2*BorderWidth); PtSetArg( &arg[0], Pt_ARG_POS, &pos, 0 ); PtSetArg( &arg[1], Pt_ARG_DIM, &dim, 0 ); PtSetArg( &arg[2], Pt_ARG_BORDER_WIDTH, BorderWidth, 0 ); mWidget = PtCreateWidget( PtButton, aParent, 3, arg ); if( mWidget ) { PtAddEventHandler( mWidget, Ph_EV_BUT_PRESS | Ph_EV_BUT_RELEASE |Ph_EV_BOUNDARY, RawEventHandler, this ); res = NS_OK; } NS_POSTCONDITION(mWidget, "nsButton::CreateNative Failed to create Native Button"); return res; }