From: Jordi Mas (jmas@softcatala.org)
Date: Wed Jul 10 2002 - 10:16:45 EDT
Hi guys,
I have implented the InsertTable class for win32. The  tree new files that 
implement the class and also the diff.txt that should be applied (makefiles, etc)
Can any one commit these changes?
Best Regards,
Jordi,
--Jordi Mas http://www.softcatala.org
/* AbiWord
 * Copyright (C) 2002 Jordi Mas i Hernāndez <jmas@softcatala.org>
 * 
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  
 * 02111-1307, USA.
 */
#include <windows.h>
#include <commdlg.h>
#include <commctrl.h>
#include "ut_types.h"
#include "ut_string.h"
#include "ut_assert.h"
#include "ut_debugmsg.h"
#include "ut_Win32OS.h"
#include "xap_App.h"
#include "xap_Win32App.h"
#include "xap_Win32Frame.h"
#include "ap_Win32App.h"
#include "ap_Win32Frame.h"
#include "ap_Strings.h"
#include "ap_Dialog_Id.h"
#include "AP_Win32Dialog_InsertTable.h"
#include "ap_Win32Resources.rc2"
#define BUFSIZE		128
/*****************************************************************/
XAP_Dialog* AP_Win32Dialog_InsertTable::static_constructor(XAP_DialogFactory* pDlgFactory, XAP_Dialog_Id id)
{
        AP_Win32Dialog_InsertTable* dlg = new AP_Win32Dialog_InsertTable (pDlgFactory, id);
        return dlg;
}
//
// Init
//
AP_Win32Dialog_InsertTable::AP_Win32Dialog_InsertTable (XAP_DialogFactory *pDlgFactory, XAP_Dialog_Id id)
: AP_Dialog_InsertTable (pDlgFactory, id), m_pWin32Frame(NULL), m_hwndDlg(NULL)
{
        
}
AP_Win32Dialog_InsertTable::~AP_Win32Dialog_InsertTable()
{
}
void AP_Win32Dialog_InsertTable::runModal(XAP_Frame *pFrame)
{
        UT_ASSERT(pFrame);	
        
        // raise the dialog
        XAP_Win32App * pWin32App = static_cast<XAP_Win32App *>(m_pApp);
        m_pWin32Frame = static_cast<XAP_Win32Frame *>(pFrame);
        LPCTSTR lpTemplate = NULL;
        UT_ASSERT(m_id == AP_DIALOG_ID_INSERT_TABLE);
        lpTemplate = MAKEINTRESOURCE(AP_RID_DIALOG_INSERT_TABLE);
        int result = DialogBoxParam(pWin32App->getInstance(),lpTemplate,
                                                                m_pWin32Frame->getTopLevelWindow(),
                                                                (DLGPROC)s_dlgProc,(LPARAM)this);
        UT_ASSERT((result != -1));
}
/*****************************************************************/
#define GWL(hwnd)		(AP_Win32Dialog_InsertTable*)GetWindowLong((hwnd), DWL_USER)
#define SWL(hwnd, d)	(AP_Win32Dialog_InsertTable*)SetWindowLong((hwnd), DWL_USER,(LONG)(d))
BOOL CALLBACK AP_Win32Dialog_InsertTable::s_dlgProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
                
        AP_Win32Dialog_InsertTable * pThis;
        
        switch (msg)
        {
        case WM_INITDIALOG:
                pThis = (AP_Win32Dialog_InsertTable *)lParam;
                SWL(hWnd,lParam);
                return pThis->_onInitDialog(hWnd,wParam,lParam);
                
        case WM_COMMAND:
                pThis = GWL(hWnd);
                return pThis->_onCommand(hWnd,wParam,lParam);
        default:
                return 0;
        }
}
#define _DS(c,s)	SetDlgItemText(hWnd,AP_RID_DIALOG_INSERTTABLE_##c,pSS->getValue(AP_STRING_ID_##s))
#define _DSX(c,s)	SetDlgItemText(hWnd,AP_RID_DIALOG_INSERTTABLE_##c,pSS->getValue(XAP_STRING_ID_##s))
// This handles the WM_INITDIALOG message for the top-level dialog.
BOOL AP_Win32Dialog_InsertTable::_onInitDialog(HWND hWnd, WPARAM wParam, LPARAM lParam)
{	
        const XAP_StringSet * pSS = m_pApp->getStringSet();
        
        m_hwndDlg = hWnd;
                
        // localize controls (TODO: add the missing controls)
        _DSX(BTN_OK,		DLG_OK);
        _DSX(BTN_CANCEL,	DLG_Cancel);		
        // Set Spin range (TODO: check if the max value is correct, copied from the unix version)
        SendMessage(GetDlgItem(hWnd,AP_RID_DIALOG_INSERTTABLE_SPIN_COLUMN),UDM_SETRANGE,(WPARAM)1,(WPARAM)9999);
        SendMessage(GetDlgItem(hWnd,AP_RID_DIALOG_INSERTTABLE_SPIN_ROW),UDM_SETRANGE,(WPARAM)1,(WPARAM)9999);
        
        // Limit to four chars
        SendMessage(GetDlgItem(hWnd,AP_RID_DIALOG_INSERTTABLE_TEXT_COLUMN),EM_LIMITTEXT,(WPARAM)5,(WPARAM)0);
        SendMessage(GetDlgItem(hWnd,AP_RID_DIALOG_INSERTTABLE_TEXT_ROW),EM_LIMITTEXT,(WPARAM)5,(WPARAM)0);
        
        return 1;		
}
//
// Gets the values from the spin controls
//
void AP_Win32Dialog_InsertTable::getCtrlValues(void)
{	
        char 	szValue[BUFSIZE];
                
        if (GetDlgItemText(m_hwndDlg, AP_RID_DIALOG_INSERTTABLE_VAL_COLUMN, szValue, BUFSIZE ))	
                m_numCols = atoi(szValue);
        
        if (GetDlgItemText(m_hwndDlg, AP_RID_DIALOG_INSERTTABLE_VAL_ROW, szValue, BUFSIZE ))	
                m_numRows = atoi(szValue);
        
        
}
BOOL AP_Win32Dialog_InsertTable::_onCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
{
        WORD wNotifyCode = HIWORD(wParam);
        WORD wId = LOWORD(wParam);
        HWND hWndCtrl = (HWND)lParam;	
        switch (wId)
        {
        case IDCANCEL:						
                m_answer = a_CANCEL;		
                // fall through
        case IDOK:		
        
                 m_answer = a_OK;
                getCtrlValues();		
                EndDialog(hWnd,0);
                return 1;
        default:							// we did not handle this notification
                UT_DEBUGMSG(("WM_Command for id %ld\n",wId));
                return 0;						// return zero to let windows take care of it.
        }
}
// AbiWord
// Copyright (C) 2000 AbiSource, Inc.
// 
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
// 
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
// 
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  
// 02111-1307, USA.
//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////
// THIS FILE IS INCLUDED BY .cpp AND .rc FILES.
//
// *** RC.exe IS BRAIN-DAMAGED.  GIVING THIS FILE AN .rc2
// *** EXTENSION MAKES #INCLUDING THIS FILE FROM Win32Main.rc
// *** WORK -- IF THE SUFFIX IS .h ONLY THE #DEFINES WORK, THE
// *** DIALOGS DO NOT GET COMPILED.
//
//////////////////////////////////////////////////////////////////
#define AP_RID_DIALOG_INSERTTABLE_BTN_CANCEL			IDCANCEL
#define AP_RID_DIALOG_INSERTTABLE_BTN_OK			IDOK
#define AP_RID_DIALOG_INSERTTABLE_COLUMN			1200
#define AP_RID_DIALOG_INSERTTABLE_SPIN_COLUMN			1201
#define AP_RID_DIALOG_INSERTTABLE_VAL_COLUMN			1202
#define AP_RID_DIALOG_INSERTTABLE_TEXT_COLUMN			1203
#define AP_RID_DIALOG_INSERTTABLE_SPIN_ROW			1204
#define AP_RID_DIALOG_INSERTTABLE_TEXT_ROW			1205
#define AP_RID_DIALOG_INSERTTABLE_VAL_ROW			1206
#ifdef RC_INVOKED
// NOTE -- these placeholder strings get overridden at runtime 
// NOTE -- they're just here to make sizing easier
//AP_RID_DIALOG_INSERT_TABLE DIALOG DISCARDABLE  0, 0, 200, 120
//STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
//CAPTION "Insert Table"
//FONT 8, "MS Sans Serif"
//BEGIN
//    LTEXT           "Statistics:",		AP_RID_DIALOG_WORDCOUNT_TEXT_STATS,	7,19,43,8
//    GROUPBOX        "",					AP_RID_DIALOG_WORDCOUNT_BOX,		7,24,119,70
//    LTEXT           "Pages",			AP_RID_DIALOG_WORDCOUNT_TEXT_PAGE,	12,32,109,8
//    LTEXT           "Words",			AP_RID_DIALOG_WORDCOUNT_TEXT_WORD,	12,42,109,8
//    LTEXT           "Characters (no spaces)",	
//										AP_RID_DIALOG_WORDCOUNT_TEXT_CH,	12,52,109,8
//    LTEXT           "Characters (with spaces)",	
//										AP_RID_DIALOG_WORDCOUNT_TEXT_CHSP,	12,62,109,8
//    LTEXT           "Paragraphs",		AP_RID_DIALOG_WORDCOUNT_TEXT_PARA,	12,72,109,8
//    LTEXT           "Lines",			AP_RID_DIALOG_WORDCOUNT_TEXT_LINE,	12,82,109,8
//    GROUPBOX        "",					AP_RID_DIALOG_WORDCOUNT_BOX,		125,24,67,70
//    RTEXT           "100,000,000",		AP_RID_DIALOG_WORDCOUNT_VAL_PAGE,	136,32,51,8
//    RTEXT           "100,000,000",		AP_RID_DIALOG_WORDCOUNT_VAL_WORD,	136,42,51,8
//    RTEXT           "100,000,000",		AP_RID_DIALOG_WORDCOUNT_VAL_CH,		136,52,51,8
//    RTEXT           "100,000,000",		AP_RID_DIALOG_WORDCOUNT_VAL_CHSP,	136,62,51,8
//    RTEXT           "100,000,000",		AP_RID_DIALOG_WORDCOUNT_VAL_PARA,	136,72,51,8
//    RTEXT           "100,000,000",		AP_RID_DIALOG_WORDCOUNT_VAL_LINE,	136,82,51,8
//    DEFPUSHBUTTON   "&Close",			AP_RID_DIALOG_WORDCOUNT_BTN_CLOSE,	130,101,62,14
//    PUSHBUTTON      "&Update",			AP_RID_DIALOG_WORDCOUNT_BTN_UPDATE,	7,101,62,14
//    AUTOCHECKBOX    "&Auto Update",	AP_RID_DIALOG_WORDCOUNT_CHK_AUTOUPDATE,7,7,60,10
//    EDITTEXT        					AP_RID_DIALOG_WORDCOUNT_EDIT_RATE,69,7,23,10, ES_LEFT | WS_BORDER | WS_TABSTOP
//    CONTROL         "Spin",				AP_RID_DIALOG_WORDCOUNT_SPIN_RATE,	
//										"msctls_updown32",UDS_SETBUDDYINT | UDS_ALIGNRIGHT | 
//										UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,94,7,8,8
//	LTEXT           "Seconds between updates",AP_RID_DIALOG_WORDCOUNT_TEXT_RATE,93,8,114,8
//END
AP_RID_DIALOG_INSERT_TABLE DIALOG DISCARDABLE  0, 0, 157, 87
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Insert Table"
FONT 8, "MS Sans Serif"
BEGIN
    DEFPUSHBUTTON   "OK!",AP_RID_DIALOG_INSERTTABLE_BTN_OK,17,65,50,14
    PUSHBUTTON      "Cancel",AP_RID_DIALOG_INSERTTABLE_BTN_CANCEL,77,65,50,14
    EDITTEXT        AP_RID_DIALOG_INSERTTABLE_VAL_COLUMN,103,19,20,14,ES_AUTOHSCROLL
    CONTROL         "Spin2",AP_RID_DIALOG_INSERTTABLE_SPIN_COLUMN,"msctls_updown32",UDS_SETBUDDYINT | 
                    UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS ,122,19,
                    11,14
    LTEXT           "Number of columns",AP_RID_DIALOG_INSERTTABLE_TEXT_COLUMN,13,21,82,12
    EDITTEXT        AP_RID_DIALOG_INSERTTABLE_VAL_ROW,103,39,20,14,ES_AUTOHSCROLL
    CONTROL         "Spin2",AP_RID_DIALOG_INSERTTABLE_SPIN_ROW,"msctls_updown32",UDS_SETBUDDYINT | 
                    UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,123,39,
                    11,14
    LTEXT           "Number of rows", AP_RID_DIALOG_INSERTTABLE_TEXT_ROW,14,42,80,12
    LTEXT           "Table size", -1,5,5,37,8
END
#endif /* RC_INVOKED */
/* AbiWord
 * Copyright (C) 2001 AbiSource, Inc.
 * 
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  
 * 02111-1307, USA.
 */
#ifndef AP_Win32Dialog_InsertTable_H
#define AP_Win32Dialog_InsertTable_H
#include "ap_Dialog_InsertTable.h"
class AP_Win32Dialog_InsertTable : public AP_Dialog_InsertTable
{
public:
        
        AP_Win32Dialog_InsertTable (XAP_DialogFactory *pDlgFactory, XAP_Dialog_Id id);
        virtual ~AP_Win32Dialog_InsertTable (void);
        virtual void			runModal(XAP_Frame * pFrame);
        static XAP_Dialog *		static_constructor(XAP_DialogFactory *, XAP_Dialog_Id id);
        
        static BOOL CALLBACK		s_dlgProc(HWND,UINT,WPARAM,LPARAM);	
protected:
        XAP_Win32Frame *	m_pWin32Frame;		
        HWND			m_hwndDlg;	//  dialog box Windows
        
        
        BOOL			_onInitDialog(HWND hWnd, WPARAM wParam, LPARAM lParam);
        BOOL			_onCommand(HWND hWnd, WPARAM wParam, LPARAM lParam);   
        
        void 			getCtrlValues(void);
};
#endif
Index: src/wp/ap/win/Makefile
===================================================================
RCS file: /cvsroot/abi/src/wp/ap/win/Makefile,v
retrieving revision 1.54
diff -c -r1.54 Makefile
*** src/wp/ap/win/Makefile	25 May 2002 17:42:33 -0000	1.54
--- src/wp/ap/win/Makefile	10 Jul 2002 14:07:22 -0000
***************
*** 29,34 ****
--- 29,35 ----
                          ap_$(ABI_FE)DialogFactory.cpp		\
                          ap_$(ABI_FE)Dialog_New.cpp		\
                          ap_$(ABI_FE)Dialog_Break.cpp		\
+ 			ap_$(ABI_FE)Dialog_InsertTable.cpp	\
                          ap_$(ABI_FE)Dialog_Field.cpp		\
                          ap_$(ABI_FE)Dialog_Insert_DateTime.cpp	\
                          ap_$(ABI_FE)Dialog_Lists.cpp		\
Index: src/wp/ap/win/ap_Win32Dialog_All.h
===================================================================
RCS file: /cvsroot/abi/src/wp/ap/win/ap_Win32Dialog_All.h,v
retrieving revision 1.47
diff -c -r1.47 ap_Win32Dialog_All.h
*** src/wp/ap/win/ap_Win32Dialog_All.h	25 May 2002 17:42:32 -0000	1.47
--- src/wp/ap/win/ap_Win32Dialog_All.h	10 Jul 2002 14:07:22 -0000
***************
*** 65,72 ****
  #	include "ap_Win32Dialog_InsertBookmark.h"
  #	include "ap_Win32Dialog_InsertHyperlink.h"
  #	include "ap_Win32Dialog_New.h"
! #   include "ap_Win32Dialog_MarkRevisions.h"
! #   include "ap_Win32Dialog_ListRevisions.h"
          // ... add new dialogs here ...
  
  #else
--- 65,73 ----
  #	include "ap_Win32Dialog_InsertBookmark.h"
  #	include "ap_Win32Dialog_InsertHyperlink.h"
  #	include "ap_Win32Dialog_New.h"
! #  	include "ap_Win32Dialog_MarkRevisions.h"
! #  	include "ap_Win32Dialog_ListRevisions.h"
! #   	include "ap_Win32Dialog_InsertTable.h"
          // ... add new dialogs here ...
  
  #else
***************
*** 115,120 ****
--- 116,122 ----
          DeclareDialog(AP_DIALOG_ID_FILE_NEW,		AP_Win32Dialog_New)
          DeclareDialog(AP_DIALOG_ID_MARK_REVISIONS,	AP_Win32Dialog_MarkRevisions)
          DeclareDialog(AP_DIALOG_ID_LIST_REVISIONS,	AP_Win32Dialog_ListRevisions)
+ 	DeclareDialog(AP_DIALOG_ID_INSERT_TABLE,	AP_Win32Dialog_InsertTable)
           // ... also add new dialogs here ...
  
  #endif
Index: src/wp/ap/win/ap_Win32Resources.rc2
===================================================================
RCS file: /cvsroot/abi/src/wp/ap/win/ap_Win32Resources.rc2,v
retrieving revision 1.31
diff -c -r1.31 ap_Win32Resources.rc2
*** src/wp/ap/win/ap_Win32Resources.rc2	25 May 2002 17:42:33 -0000	1.31
--- src/wp/ap/win/ap_Win32Resources.rc2	10 Jul 2002 14:07:22 -0000
***************
*** 59,64 ****
--- 59,65 ----
  #define AP_RID_DIALOG_NEW						229
  #define AP_RID_DIALOG_MARK_REVISIONS            230
  #define AP_RID_DIALOG_LIST_REVISIONS            231
+ #define AP_RID_DIALOG_INSERT_TABLE		232
  
  
  #include "ap_Win32Res_DlgPageSetup.rc2"
***************
*** 85,87 ****
--- 86,89 ----
  #include "ap_Win32Res_DlgNew.rc2"
  #include "ap_Win32Res_DlgMarkRevisions.rc2"
  #include "ap_Win32Res_DlgListRevisions.rc2"
+ #include "ap_Win32Res_InsertTable.rc2"
This archive was generated by hypermail 2.1.4 : Wed Jul 10 2002 - 10:20:50 EDT