NOME is written using Microsoft Visual C++, Microsoft Visual Basic and Visual Basic for Application (VBA)
The source code is organized in three modules:
- Nome module (nome.dll), written in Visual C++, is responsible for implementing the user interface
- Macro module (NOME_RALI.dot), written in VBA, implements the macros to detect the proper names and is the connection between Ms Word and nome.dll
The relationships between the two modules are the following
- Installer module: written in VB.Net, provides the installation program
How to compile Nome
- Download Nome package (version 1.2)
- Unzip the package using Winzip (Window) or unzip (Linux)
Dll and Installer modules:
- Open nome.sln using Visual Studio .Net (version 2003 or later), it contains two projects nome and installer
- Compile the source code using commands in Visual Studio environment (Debug or Release mode)
- nome implements the user interface using MFC Grid Control 2.25 (a fully featured MFC grid control for displaying tabular data) which is freely available at the Code Project website.
Macro module:
- Open NOME_RALI.dot using Microsoft Word (version 2002 or later)
- Open Visual Basic Editor (Tools->Macros->Visual Basic Editor) to view the macros in NOME_RALI.dot
Contact:
More details on source code and the techniques used
Source code in Visual C++ (compiled with Visual Studio version 2003 or later)
- Source code downloaded from
Code Project website
- CColorBox is a simple button that shows a color and lets the user change the color by clicking on it
- Files in GridCtrl_src and NewCellTypes implement MFC grid control for displaying tabular data
- NOME source code
- CColorButton extends CButton to customize the text color
- CGridCellNome extends CGridCell (from GridCtrl) to provide an CNomeEdit object instead of CInPlaceEdit when modifying the cell data
- CNomeEdit extends CInPlaceEdit to prevent the user from editing the cell (copy only)
- CNomeButton extends CButton to implement tool tip enabled button
- CNomeTab extends CTabCtrl to manage the tab pages, each tab page is represented by CTabDlg object
- CNomTabDlg extends CDialog to implement the dialog containing tab page manager (a CNomeTab object)
- CNomeProgress extends CDialog to implement the progressing dialog when NOME detects the proper names
- CTabDlg extends CDialog and is a super class for CSetting and CReplacement
- CSetting extends CTabDlg and implements Setting page
- CReplacement extends CTabDlg and implements Replacement page
- MyGrid (.h and .cpp) and nome.def implement interface API used to communicate with the VBA module
- nome (.h and .cpp) implements DLL entry
Source code in VBA (NOME_RALI.dot) is divided in five modules and four classes
- Modules
- Nome is used to communicate with nome.dll and implements the algorithm to detect proper names
- NomeOptions provides parameters for NOME program such as interface language, the location of inclusion file, exclusion file etc
- NomeWindow wraps window management API in a way that it is more convenient to handle in VBA
- Utils implements useful functions for proper name treatments such as RemoveTitles, RemovePossessive, CreateReplacement etc
- WordFunctions encapsulates the revision tracking functions in Word
- Classes
- MyHook listens Word events such as Close, Open, New
- NomeDocument represents a document analysed by NOME
- NomeName is a data structure for proper name detected by NOME
- NomeNameRep is a data structure for replacement name proposed by NOME
Installer Source Code
This program is written using Visual Basic.NET, it has only one form and three buttons.
It performs the following tasks:
- Update/Install nome.dll: copy the nome.dll to the window system folder (example: C:\Windows\System32)
- Update/Install macros: copy the following files to model directory in WORD
- NOME_RALI.dot
- inclusions-fr.doc
- inclusions-en.doc
- exclusions-en.doc
- exclusions-fr.doc
- titles-en.doc
- titles-fr.doc
- Uninstall NOME: delete all copied files
In order to install NOME manually:
- Copy NOME_RALI.dot to model directory (Tools->Options->Directory->StartUp)
- Copy nome.dll to the widow system folder if you have administrator privileges or specify the location of nome.dll in Nome module in NOME_RALI.dot
For example:
Public Declare Function getWindowHandle Lib "nome" (ByVal id As Long) As Long
becomes
Public Declare Function getWindowHandle Lib "c:\Nome\nome.dll" (ByVal id As Long) As Long
Contact: