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 <[EMAIL PROTECTED]> > * > * 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" >
