Commit (HEAD): Re: Insert Tables for Win32

From: j.m.maurer (j.m.maurer@student.utwente.nl)
Date: Wed Jul 10 2002 - 12:11:57 EDT

  • Next message: William Lachance: "Commit (ABI-GTK2-PORT): About Dialog Fix"

    Great work Jordi, commited!

    Marc

    Win32 Insert Table Dialog

    CVS:
    ----------------------------------------------------------------------
    CVS: Enter Log. Lines beginning with `CVS:' are removed automatically
    CVS:
    CVS: Committing in .
    CVS:
    CVS: Modified Files:
    CVS: Makefile src/wp/ap/win/Makefile
    CVS: src/wp/ap/win/ap_Win32Dialog_All.h
    CVS: src/wp/ap/win/ap_Win32Resources.rc2
    CVS: Added Files:
    CVS: src/wp/ap/win/ap_Win32Dialog_InsertTable.cpp
    CVS: src/wp/ap/win/ap_Win32Dialog_InsertTable.h
    CVS: src/wp/ap/win/ap_Win32Res_InsertTable.rc2
    CVS:
    ----------------------------------------------------------------------

    Op wo 10-07-2002, om 16:16 schreef Jordi Mas:
    > 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 - 12:16:07 EDT