diff --git a/mozilla/widget/src/build/makefile.win b/mozilla/widget/src/build/makefile.win new file mode 100644 index 00000000000..7faa4761b7e --- /dev/null +++ b/mozilla/widget/src/build/makefile.win @@ -0,0 +1,73 @@ +#!nmake +# +# The contents of this file are subject to the Netscape Public License +# Version 1.0 (the "NPL"); you may not use this file except in +# compliance with the NPL. You may obtain a copy of the NPL at +# http://www.mozilla.org/NPL/ +# +# Software distributed under the NPL is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL +# for the specific language governing rights and limitations under the +# NPL. +# +# The Initial Developer of this code under the NPL is Netscape +# Communications Corporation. Portions created by Netscape are +# Copyright (C) 1998 Netscape Communications Corporation. All Rights +# Reserved. + +DEPTH=..\..\.. +#IGNORE_MANIFEST=1 + +MODULE=raptor +MAKE_OBJ_TYPE = DLL +DLLNAME = raptorwidget +DLL=.\$(OBJDIR)\$(DLLNAME).dll +#RESFILE = widget.res + +CPPSRCS = nsWidgetSupport.cpp nsWinWidgetFactory.cpp + +CPP_OBJS = .\$(OBJDIR)\nsWidgetSupport.obj .\$(OBJDIR)\nsWinWidgetFactory.obj + +MISCDEP = \ + $(DIST)\lib\raptorbasewidget_s.lib \ + $(DIST)\lib\raptorwidget_s.lib \ + $(DIST)\lib\xpcom32.lib \ + $(DIST)\lib\raptorbase.lib \ + $(DIST)\lib\raptorgfxwin.lib \ + $(DIST)\lib\raptorbasewidget_s.lib + + +DEFINES =-D_IMPL_NS_WIDGET + +LINCS= \ + -I$(PUBLIC)\raptor \ + -I$(PUBLIC)\xpcom \ + -I..\xpwidgets \ + -I..\windows \ + $(NULL) + +LCFLAGS = \ + $(LCFLAGS) \ + -D_IMPL_NS_WIDGET \ + -DNS_DLLNAME=$(DLLNAME).dll \ + $(NULL) + +LLIBS= \ + comctl32.lib \ + comdlg32.lib \ + $(DIST)\lib\xpcom32.lib \ + $(DIST)\lib\raptorgfxwin.lib \ + $(DIST)\lib\raptorbase.lib \ + $(DIST)\lib\raptorbasewidget_s.lib \ + $(DIST)\lib\raptorwidget_s.lib \ + $(LIBNSPR) + +include <$(DEPTH)\config\rules.mak> + +install:: $(DLL) + $(MAKE_INSTALL) .\$(OBJDIR)\$(DLLNAME).dll $(DIST)\bin + $(MAKE_INSTALL) .\$(OBJDIR)\$(DLLNAME).lib $(DIST)\lib + +clobber:: + rm -f $(DIST)\bin\$(DLLNAME).dll + rm -f $(DIST)\lib\$(DLLNAME).lib diff --git a/mozilla/widget/src/build/nsWinWidgetFactory.cpp b/mozilla/widget/src/build/nsWinWidgetFactory.cpp new file mode 100644 index 00000000000..ad041250994 --- /dev/null +++ b/mozilla/widget/src/build/nsWinWidgetFactory.cpp @@ -0,0 +1,283 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- + * + * The contents of this file are subject to the Netscape Public License + * Version 1.0 (the "NPL"); you may not use this file except in + * compliance with the NPL. You may obtain a copy of the NPL at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the NPL is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL + * for the specific language governing rights and limitations under the + * NPL. + * + * The Initial Developer of this code under the NPL is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All Rights + * Reserved. + */ + +#include "nsIFactory.h" +#include "nsISupports.h" +#include "nsdefs.h" +#include "nsWidgetsCID.h" + +#include "nsButton.h" +#include "nsCheckButton.h" +#include "nsComboBox.h" +#include "nsFileWidget.h" +#include "nsListBox.h" +#include "nsLookAndFeel.h" +#include "nsRadioButton.h" +#include "nsRadioGroup.h" +#include "nsScrollbar.h" +#include "nsTextAreaWidget.h" +#include "nsTextHelper.h" +#include "nsTextWidget.h" +#include "nsToolkit.h" +#include "nsTabWidget.h" +#include "nsTooltipWidget.h" +#include "nsWindow.h" +#include "nsDialog.h" +#include "nsLabel.h" +#include "nsMenuBar.h" +#include "nsMenu.h" +#include "nsMenuItem.h" +#include "nsPopUpMenu.h" +#include "nsImageButton.h" +#include "nsMenuButton.h" +#include "nsToolbar.h" +#include "nsToolbarManager.h" +#include "nsToolbarItemHolder.h" +#include "nsAppShell.h" + +static NS_DEFINE_IID(kCWindow, NS_WINDOW_CID); +static NS_DEFINE_IID(kCChild, NS_CHILD_CID); +static NS_DEFINE_IID(kCButton, NS_BUTTON_CID); +static NS_DEFINE_IID(kCCheckButton, NS_CHECKBUTTON_CID); +static NS_DEFINE_IID(kCCombobox, NS_COMBOBOX_CID); +static NS_DEFINE_IID(kCFileOpen, NS_FILEWIDGET_CID); +static NS_DEFINE_IID(kCListbox, NS_LISTBOX_CID); +static NS_DEFINE_IID(kCRadioButton, NS_RADIOBUTTON_CID); +static NS_DEFINE_IID(kCRadioGroup, NS_RADIOGROUP_CID); +static NS_DEFINE_IID(kCHorzScrollbar, NS_HORZSCROLLBAR_CID); +static NS_DEFINE_IID(kCVertScrollbar, NS_VERTSCROLLBAR_CID); +static NS_DEFINE_IID(kCTextArea, NS_TEXTAREA_CID); +static NS_DEFINE_IID(kCTextField, NS_TEXTFIELD_CID); +static NS_DEFINE_IID(kCTabWidget, NS_TABWIDGET_CID); +static NS_DEFINE_IID(kCTooltipWidget, NS_TOOLTIPWIDGET_CID); +static NS_DEFINE_IID(kCAppShell, NS_APPSHELL_CID); +static NS_DEFINE_IID(kCToolkit, NS_TOOLKIT_CID); +static NS_DEFINE_IID(kCLookAndFeel, NS_LOOKANDFEEL_CID); +static NS_DEFINE_IID(kCDialog, NS_DIALOG_CID); +static NS_DEFINE_IID(kCLabel, NS_LABEL_CID); +static NS_DEFINE_IID(kCMenuBar, NS_MENUBAR_CID); +static NS_DEFINE_IID(kCMenu, NS_MENU_CID); +static NS_DEFINE_IID(kCMenuItem, NS_MENUITEM_CID); +static NS_DEFINE_IID(kCImageButton, NS_IMAGEBUTTON_CID); +static NS_DEFINE_IID(kCToolBar, NS_TOOLBAR_CID); +static NS_DEFINE_IID(kCToolBarManager, NS_TOOLBARMANAGER_CID); +static NS_DEFINE_IID(kCToolBarItemHolder, NS_TOOLBARITEMHOLDER_CID); +static NS_DEFINE_IID(kCPopUpMenu, NS_POPUPMENU_CID); +static NS_DEFINE_IID(kCMenuButton, NS_MENUBUTTON_CID); + +static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID); +static NS_DEFINE_IID(kIFactoryIID, NS_IFACTORY_IID); + +class nsWidgetFactory : public nsIFactory +{ +public: + // nsISupports methods + NS_DECL_ISUPPORTS + + // nsIFactory methods + NS_IMETHOD CreateInstance(nsISupports *aOuter, + const nsIID &aIID, + void **aResult); + + NS_IMETHOD LockFactory(PRBool aLock); + + nsWidgetFactory(const nsCID &aClass); + ~nsWidgetFactory(); + +private: + nsCID mClassID; +}; + +NS_IMPL_ADDREF(nsWidgetFactory) +NS_IMPL_RELEASE(nsWidgetFactory) + + +nsWidgetFactory::nsWidgetFactory(const nsCID &aClass) +{ + NS_INIT_REFCNT(); + mClassID = aClass; +} + +nsWidgetFactory::~nsWidgetFactory() +{ + NS_ASSERTION(mRefCnt == 0, "Reference count not zero in destructor"); +} + +nsresult nsWidgetFactory::QueryInterface(const nsIID &aIID, + void **aResult) +{ + if (aResult == NULL) { + return NS_ERROR_NULL_POINTER; + } + + // Always NULL result, in case of failure + *aResult = NULL; + + if (aIID.Equals(kISupportsIID)) { + *aResult = (void *)(nsISupports*)this; + } else if (aIID.Equals(kIFactoryIID)) { + *aResult = (void *)(nsIFactory*)this; + } + + if (*aResult == NULL) { + return NS_NOINTERFACE; + } + + NS_ADDREF_THIS(); // Increase reference count for caller + return NS_OK; +} + + +nsresult nsWidgetFactory::CreateInstance( nsISupports* aOuter, + const nsIID &aIID, + void **aResult) +{ + if (aResult == NULL) { + return NS_ERROR_NULL_POINTER; + } + *aResult = NULL; + if (nsnull != aOuter) { + return NS_ERROR_NO_AGGREGATION; + } + + nsISupports *inst = nsnull; + if (mClassID.Equals(kCWindow)) { + inst = (nsISupports*)new nsWindow(); + } + else if (mClassID.Equals(kCChild)) { + inst = (nsISupports*)new ChildWindow(); + } + else if (mClassID.Equals(kCButton)) { + inst = (nsISupports*)(nsWindow*)new nsButton(); + } + else if (mClassID.Equals(kCCheckButton)) { + inst = (nsISupports*)(nsWindow*)new nsCheckButton(); + } + else if (mClassID.Equals(kCCombobox)) { + inst = (nsISupports*)(nsWindow*)new nsComboBox(); + } + else if (mClassID.Equals(kCRadioButton)) { + inst = (nsISupports*)(nsWindow*)new nsRadioButton(); + } + //else if (mClassID.Equals(kCRadioGroup)) { + // inst = (nsISupports*)(nsObject*)new nsRadioGroup(); + //} + else if (mClassID.Equals(kCFileOpen)) { + inst = (nsISupports*)new nsFileWidget(); + } + else if (mClassID.Equals(kCListbox)) { + inst = (nsISupports*)(nsWindow*)new nsListBox(); + } + else if (mClassID.Equals(kCHorzScrollbar)) { + inst = (nsISupports*)(nsWindow*)new nsScrollbar(PR_FALSE); + } + else if (mClassID.Equals(kCVertScrollbar)) { + inst = (nsISupports*)(nsWindow*)new nsScrollbar(PR_TRUE); + } + else if (mClassID.Equals(kCTextArea)) { + inst = (nsISupports*)(nsWindow*)new nsTextAreaWidget(); + } + else if (mClassID.Equals(kCTextField)) { + inst = (nsISupports*)(nsWindow*)new nsTextWidget(); + } + else if (mClassID.Equals(kCTabWidget)) { + inst = (nsISupports*)(nsWindow*)new nsTabWidget(); + } + else if (mClassID.Equals(kCTooltipWidget)) { + inst = (nsISupports*)(nsWindow*)new nsTooltipWidget(); + } + else if (mClassID.Equals(kCAppShell)) { + inst = (nsISupports*)new nsAppShell(); + } + else if (mClassID.Equals(kCToolkit)) { + inst = (nsISupports*)new nsToolkit(); + } + else if (mClassID.Equals(kCLookAndFeel)) { + inst = (nsISupports*)new nsLookAndFeel(); + } + else if (mClassID.Equals(kCDialog)) { + inst = (nsISupports*)(nsWindow*)new nsDialog(); + } + else if (mClassID.Equals(kCLabel)) { + inst = (nsISupports*)(nsWindow*)new nsLabel(); + } + else if (mClassID.Equals(kCMenuBar)) { + inst = (nsISupports*)new nsMenuBar(); + } + else if (mClassID.Equals(kCMenu)) { + inst = (nsISupports*)new nsMenu(); + } + else if (mClassID.Equals(kCMenuItem)) { + inst = (nsISupports*)new nsMenuItem(); + } + else if (mClassID.Equals(kCImageButton)) { + inst = (nsISupports*)(nsWindow*)new nsImageButton(); + } + else if (mClassID.Equals(kCMenuButton)) { + inst = (nsISupports*)(nsWindow*)new nsMenuButton(); + } + else if (mClassID.Equals(kCToolBar)) { + inst = (nsISupports*)(nsWindow*)new nsToolbar(); + } + else if (mClassID.Equals(kCToolBarManager)) { + inst = (nsISupports*)(nsWindow*)new nsToolbarManager(); + } + else if (mClassID.Equals(kCToolBarItemHolder)) { + inst = (nsISupports*)(nsIToolbarItemHolder *) new nsToolbarItemHolder(); + } + else if (mClassID.Equals(kCPopUpMenu)) { + inst = (nsISupports*)new nsPopUpMenu(); + }/* */ + + if (inst == NULL) { + return NS_ERROR_OUT_OF_MEMORY; + } + + nsresult res = inst->QueryInterface(aIID, aResult); + + if (res != NS_OK) { + // We didn't get the right interface, so clean up + delete inst; + } + + return res; +} + +nsresult nsWidgetFactory::LockFactory(PRBool aLock) +{ + // Not implemented in simplest case. + return NS_OK; +} + +// return the proper factory to the caller +extern "C" NS_WIDGET nsresult NSGetFactory(const nsCID &aClass, nsIFactory **aFactory) +{ + if (nsnull == aFactory) { + return NS_ERROR_NULL_POINTER; + } + + *aFactory = new nsWidgetFactory(aClass); + + if (nsnull == aFactory) { + return NS_ERROR_OUT_OF_MEMORY; + } + + return (*aFactory)->QueryInterface(kIFactoryIID, (void**)aFactory); +} + + diff --git a/mozilla/widget/src/makefile.win b/mozilla/widget/src/makefile.win index 30d58057400..b953c92128a 100644 --- a/mozilla/widget/src/makefile.win +++ b/mozilla/widget/src/makefile.win @@ -14,43 +14,8 @@ # Communications Corporation. Portions created by Netscape are # Copyright (C) 1998 Netscape Communications Corporation. All Rights # Reserved. - DEPTH=..\.. -IGNORE_MANIFEST=1 -DIRS = windows +DIRS=xpwidgets windows build -LIBRARY_NAME=raptorbasewidget_s -MODULE=raptor -REQUIRES=xpcom - -DEFINES= -DWIN32_LEAN_AND_MEAN -D_IMPL_NS_WIDGET - -CPPSRCS= \ - nsBaseWidget.cpp - -EXPORTS=nsBaseWidget.h - -CPP_OBJS=.\$(OBJDIR)\nsBaseWidget.obj \ - .\$(OBJDIR)\nsMenuButton.obj \ - .\$(OBJDIR)\nsToolbarItemHolder.obj \ - .\$(OBJDIR)\nsToolbarManager.obj \ - .\$(OBJDIR)\nsImageButton.obj \ - .\$(OBJDIR)\nsToolBar.obj - - -LINCS= -I$(PUBLIC)\xpcom -I$(PUBLIC)\raptor -Iwindows - -LCFLAGS = \ - $(LCFLAGS) \ - $(DEFINES) \ - $(NULL) - -include <$(DEPTH)\config\rules.mak> - -libs:: $(LIBRARY) - $(MAKE_INSTALL) $(LIBRARY) $(DIST)\lib - - -clobber:: - rm -f $(DIST)\lib\$(LIBRARY_NAME).lib +include <$(DEPTH)\layout\config\rules.mak> \ No newline at end of file diff --git a/mozilla/widget/src/windows/makefile.win b/mozilla/widget/src/windows/makefile.win index 9acb2bcaf25..033e206e4af 100644 --- a/mozilla/widget/src/windows/makefile.win +++ b/mozilla/widget/src/windows/makefile.win @@ -16,23 +16,40 @@ # Reserved. DEPTH=..\..\.. -IGNORE_MANIFEST=1 +#IGNORE_MANIFEST=1 -MAKE_OBJ_TYPE = DLL -DLLNAME = raptorwidget -DLL=.\$(OBJDIR)\$(DLLNAME).dll -RESFILE = widget.res +LIBRARY_NAME = raptorwidget_s +REQUIRES=xpcom gfxwin raptor +DEFINES =-D_IMPL_NS_WIDGET -MISCDEP = \ - $(DIST)\lib\xpcom32.lib \ - $(DIST)\lib\raptorbase.lib \ - $(DIST)\lib\raptorgfxwin.lib \ - $(DIST)\lib\raptorbasewidget_s.lib +CPPSRCS = \ + nsPopUpMenu.cpp \ + nsMenuBar.cpp \ + nsMenu.cpp \ + nsMenuItem.cpp \ + nsObject.cpp \ + nsWindow.cpp \ + nsButton.cpp \ + nsCheckButton.cpp \ + nsRadioButton.cpp \ + nsListBox.cpp \ + nsComboBox.cpp \ + nsTextWidget.cpp \ + nsTextHelper.cpp \ + nsTextAreaWidget.cpp \ + nsFileWidget.cpp \ + nsScrollbar.cpp \ + nsTabWidget.cpp \ + nsTooltipWidget.cpp \ + nsAppShell.cpp \ + nsLookAndFeel.cpp \ + nsDialog.cpp \ + nsLabel.cpp \ + nsToolkit.cpp \ + $(NULL) MODULE=raptor -DEFINES =-D_IMPL_NS_WIDGET - OBJS = \ .\$(OBJDIR)\nsPopUpMenu.obj \ .\$(OBJDIR)\nsMenuBar.obj \ @@ -57,37 +74,24 @@ OBJS = \ .\$(OBJDIR)\nsDialog.obj \ .\$(OBJDIR)\nsLabel.obj \ .\$(OBJDIR)\nsToolkit.obj \ - .\$(OBJDIR)\nsWidgetSupport.obj \ - .\$(OBJDIR)\nsWidgetFactory.obj \ $(NULL) LINCS= \ -I$(PUBLIC)\raptor \ -I$(PUBLIC)\xpcom \ - -I.. \ + -I..\xpwidgets \ $(NULL) LCFLAGS = \ $(LCFLAGS) \ - -D_IMPL_NS_WIDGET \ - -DNS_DLLNAME=$(DLLNAME).dll \ + $(DEFINES) \ $(NULL) -LLIBS= \ - comctl32.lib \ - comdlg32.lib \ - $(DIST)\lib\xpcom32.lib \ - $(DIST)\lib\raptorgfxwin.lib \ - $(DIST)\lib\raptorbase.lib \ - $(DIST)\lib\raptorbasewidget_s.lib \ - $(LIBNSPR) - include <$(DEPTH)\config\rules.mak> -install:: $(DLL) - $(MAKE_INSTALL) .\$(OBJDIR)\$(DLLNAME).dll $(DIST)\bin - $(MAKE_INSTALL) .\$(OBJDIR)\$(DLLNAME).lib $(DIST)\lib +libs:: $(LIBRARY) + $(MAKE_INSTALL) $(LIBRARY) $(DIST)\lib clobber:: - rm -f $(DIST)\bin\$(DLLNAME).dll - rm -f $(DIST)\lib\$(DLLNAME).lib + rm -f $(DIST)\lib\$(LIBRARY_NAME).lib + rm -f $(PDBFILE).pdb diff --git a/mozilla/widget/src/xpwidgets/makefile.win b/mozilla/widget/src/xpwidgets/makefile.win new file mode 100644 index 00000000000..d3b018bbc6c --- /dev/null +++ b/mozilla/widget/src/xpwidgets/makefile.win @@ -0,0 +1,62 @@ +#!nmake +# +# The contents of this file are subject to the Netscape Public License +# Version 1.0 (the "NPL"); you may not use this file except in +# compliance with the NPL. You may obtain a copy of the NPL at +# http://www.mozilla.org/NPL/ +# +# Software distributed under the NPL is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL +# for the specific language governing rights and limitations under the +# NPL. +# +# The Initial Developer of this code under the NPL is Netscape +# Communications Corporation. Portions created by Netscape are +# Copyright (C) 1998 Netscape Communications Corporation. All Rights +# Reserved. + +DEPTH=..\..\.. +#IGNORE_MANIFEST=1 + +LIBRARY_NAME = raptorbasewidget_s +REQUIRES=xpcom gfxwin raptor +DEFINES =-D_IMPL_NS_WIDGET + +CPPSRCS = \ + nsBaseWidget.cpp \ + nsMenuButton.cpp \ + nsToolbarItemHolder.cpp \ + nsToolbarManager.cpp \ + nsImageButton.cpp \ + nsToolBar.cpp \ + $(NULL) + +MODULE=raptor + +OBJS=.\$(OBJDIR)\nsBaseWidget.obj \ + .\$(OBJDIR)\nsMenuButton.obj \ + .\$(OBJDIR)\nsToolbarItemHolder.obj \ + .\$(OBJDIR)\nsToolbarManager.obj \ + .\$(OBJDIR)\nsImageButton.obj \ + .\$(OBJDIR)\nsToolBar.obj \ + $(NULL) + +LINCS= \ + -I$(PUBLIC)\raptor \ + -I$(PUBLIC)\xpcom \ + -I..\windows \ + $(NULL) + +LCFLAGS = \ + $(LCFLAGS) \ + $(DEFINES) \ + $(NULL) + +include <$(DEPTH)\config\rules.mak> + +libs:: $(LIBRARY) + $(MAKE_INSTALL) $(LIBRARY) $(DIST)\lib + +clobber:: + rm -f $(DIST)\lib\$(LIBRARY_NAME).lib + rm -f $(PDBFILE).pdb