Hello folks,
I have been working in optimizing the time that Abiword needs to startup.
These are some enhancements that I have been working on. I'm working against
STABLE because that is what we are delivering for end users. I'm planing to
port these enhancements to HEAD also making the appropriate adjustments.
All of these tests have been done on a Pentium 4 1.30Ghz with 256KB cache with
640Mb of RAM.
* ev_Win32Toolbar.cpp
Disabled drawing while updating repopulating combobox. This reduces the number
of unnecessary drawing events when re-populating the combobox.
* gr_Win32Graphics.cpp
Checking what is the default printer was taking 0.18s (done 5 times at
startup) when the default printer value is no really used.
* ut_Xpm2Bmp
Called 59 times at startup. Increasing the default size of the hashmap to 256
avoids 63 re-organizations of the hash. Saves 0.02s in my machine.
* xap_Prefs.cpp, XAP_PrefsScheme::getNthValue (multiplatform)
Everytime that we do a XAP_PrefsScheme::getNthValue the keys are sorted.
Resulting in 144 calls to qsort at startup. Now, the list is stored once and
keep it in a hash and invalidated when need it. Saves 0.23s in my machine.
* ap_Strings.cpp, AP_DiskStringSet::setValue (multiplaform)
Everytime that the setValue was called we where doing a lineal
search. Loading the Catalan strings was doing 1.624.224 interations of the
search. The same for XAP_DiskStringSet::setValue. Now, we use a hash.
This decreases from around 8.8 seconds loading Abiword with an international
string set in my machine to 0.6 seconds (when using the built-in string this
is not called).
* ap_Toolbar_Icons.cpp, _findIconNameForID and _findIconDataByName
Instead of doing linear search we use now binary searches. That has reduced
the time from 0.12s to 0.05s in my machine. We should keep the lists sorted.
In my Windows box with Pentium 4 1.30Ghz the total time for loading Abiword
went down from 8.6 seconds to 1.1.
In a laptop with Ubuntu 7.1 with Intel Centrino Core Duo 2GB of cache at
1.86Ghz and 2GB of RAM the time decreased from 0.530s loading Abiword to 0.458s.
I believe that difference between the differences in performance gains are due
to the processor cache. In the old Pentium 4 probably the cache is hardly use
and in the new Centrino Core is used.
Any feedback, comments or results are welcome. It will be interesting to see
the gains in your machines.
For those lazy to re-compile the win32 build the one with the performance
patch applied is at: http://www.softcatala.org/~jmas/files/AbiWord.zip
Attached the patch.
Regards,
-- Jordi Mas i Hernāndez, HomePage http://www.softcatala.org/~jmas/ Bloc personal http://www.softcatala.org/~jmas/bloc/ Planeta Softcatalā: http://www.softcatala.org/planet/
Index: src/af/ev/win/ev_Win32Toolbar.cpp
===================================================================
RCS file: /cvsroot/abi/src/af/ev/win/ev_Win32Toolbar.cpp,v
retrieving revision 1.91.2.5
diff -u -r1.91.2.5 ev_Win32Toolbar.cpp
--- src/af/ev/win/ev_Win32Toolbar.cpp 10 Dec 2006 01:18:55 -0000 1.91.2.5
+++ src/af/ev/win/ev_Win32Toolbar.cpp 17 May 2007 11:12:16 -0000
@@ -1351,6 +1351,7 @@
// list of styles to the combo box.
//
// Try this....
+ SendMessage(hwndCombo, WM_SETREDRAW, FALSE, 0);
SendMessage(hwndCombo, CB_RESETCONTENT, 0 , 0);
SendMessage(hwndCombo, CB_SETDROPPEDWIDTH,
@@ -1390,6 +1391,8 @@
//
// Don't need this anymore and we don't like memory leaks in abi
//
+ SendMessage(hwndCombo, WM_SETREDRAW, TRUE, 0);
+ InvalidateRect (hwndCombo, NULL, true);
delete pStyleC;
//
// I think we've finished!
Index: src/af/gr/win/gr_Win32Graphics.cpp
===================================================================
RCS file: /cvsroot/abi/src/af/gr/win/gr_Win32Graphics.cpp,v
retrieving revision 1.227.2.4
diff -u -r1.227.2.4 gr_Win32Graphics.cpp
--- src/af/gr/win/gr_Win32Graphics.cpp 10 Dec 2006 01:18:56 -0000 1.227.2.4
+++ src/af/gr/win/gr_Win32Graphics.cpp 17 May 2007 11:12:19 -0000
@@ -158,9 +158,8 @@
_constructorCommonCode(hdc);
m_pApp = app;
m_hwnd = hwnd;
-
- // init the print HDC with one for the default printer
- m_printHDC = UT_GetDefaultPrinterDC();
+
+ m_printHDC = NULL; // Not used currently
if(m_printHDC)
{
Index: src/af/util/win/ut_Xpm2Bmp.cpp
===================================================================
RCS file: /cvsroot/abi/src/af/util/win/ut_Xpm2Bmp.cpp,v
retrieving revision 1.13
diff -u -r1.13 ut_Xpm2Bmp.cpp
--- src/af/util/win/ut_Xpm2Bmp.cpp 11 Mar 2004 20:05:50 -0000 1.13
+++ src/af/util/win/ut_Xpm2Bmp.cpp 17 May 2007 11:12:19 -0000
@@ -94,7 +94,7 @@
pbmih->biClrUsed = nrColors; // should we verify that they are all actually used ??
pbmih->biClrImportant = 0;
- UT_StringPtrMap hash(61);
+ UT_StringPtrMap hash(256);
UT_RGBColor color(0,0,0);
// walk thru the palette
Index: src/af/xap/xp/xap_Prefs.cpp
===================================================================
RCS file: /cvsroot/abi/src/af/xap/xp/xap_Prefs.cpp,v
retrieving revision 1.84
diff -u -r1.84 xap_Prefs.cpp
--- src/af/xap/xp/xap_Prefs.cpp 27 Jul 2005 19:26:30 -0000 1.84
+++ src/af/xap/xp/xap_Prefs.cpp 17 May 2007 11:12:24 -0000
@@ -72,6 +72,7 @@
{
m_pPrefs = pPrefs;
m_uTick = 0;
+ m_bValidSortedKeys = false;
if (szSchemeName && *szSchemeName)
UT_XML_cloneString((XML_Char *&)m_szName,szSchemeName);
@@ -124,6 +125,7 @@
{
// otherwise, need to add a new entry
m_hash.insert(szKey, UT_strdup(szValue));
+ m_bValidSortedKeys = false;
}
m_pPrefs->_markPrefChange( szKey );
@@ -184,26 +186,30 @@
}
}
-bool XAP_PrefsScheme::getNthValue(UT_uint32 k, const XML_Char ** pszKey, const XML_Char ** pszValue) const
+bool XAP_PrefsScheme::getNthValue(UT_uint32 k, const XML_Char ** pszKey, const XML_Char ** pszValue)
{
if (k >= static_cast<UT_uint32>(m_hash.size()))
return false;
+
//
// Output prefs in alphabetic Order.
//
- UT_GenericVector<const char*> vecKeys;
- UT_GenericVector<const UT_String*> * vecD = m_hash.keys();
- UT_uint32 i=0;
- vecKeys.clear();
- for(i=0; i< vecD->getItemCount(); i++)
- {
- vecKeys.addItem(vecD->getNthItem(i)->c_str());
+ if (!m_bValidSortedKeys) {
+ UT_GenericVector<const UT_String*> * vecD = m_hash.keys();
+ UT_uint32 i=0;
+ m_sortedKeys.clear();
+ for(i=0; i< vecD->getItemCount(); i++)
+ {
+ m_sortedKeys.addItem(vecD->getNthItem(i)->c_str());
+ }
+ m_sortedKeys.qsort(compareStrings);
+ m_bValidSortedKeys = true;
+ delete vecD;
}
- vecKeys.qsort(compareStrings);
- delete vecD;
+
const char * szKey = NULL;
const char * szValue = NULL;
- szKey = vecKeys.getNthItem(k);
+ szKey = m_sortedKeys.getNthItem(k);
szValue = m_hash.pick(szKey);
if(szValue && *szValue)
{
Index: src/af/xap/xp/xap_Prefs.h
===================================================================
RCS file: /cvsroot/abi/src/af/xap/xp/xap_Prefs.h,v
retrieving revision 1.39
diff -u -r1.39 xap_Prefs.h
--- src/af/xap/xp/xap_Prefs.h 23 Oct 2004 11:48:00 -0000 1.39
+++ src/af/xap/xp/xap_Prefs.h 17 May 2007 11:12:25 -0000
@@ -93,11 +93,13 @@
bool getValue(const XML_Char * szKey, const XML_Char ** pszValue) const;
bool getValue(const UT_String &szKey, UT_String &szValue) const;
bool getValueBool(const XML_Char * szKey, bool * pbValue) const;
- bool getNthValue(UT_uint32 k, const XML_Char ** pszKey, const XML_Char ** pszValue) const;
+ bool getNthValue(UT_uint32 k, const XML_Char ** pszKey, const XML_Char ** pszValue);
protected:
XML_Char * m_szName;
- UT_GenericStringMap<XML_Char*> m_hash;
+ UT_GenericStringMap<XML_Char*> m_hash;
+ UT_GenericVector<const char*> m_sortedKeys;
+ bool m_bValidSortedKeys;
XAP_Prefs * m_pPrefs;
UT_uint32 m_uTick; // ticks up every time setValue() or setValueBool() is called
};
Index: src/af/xap/xp/xap_Strings.cpp
===================================================================
RCS file: /cvsroot/abi/src/af/xap/xp/xap_Strings.cpp,v
retrieving revision 1.52
diff -u -r1.52 xap_Strings.cpp
--- src/af/xap/xp/xap_Strings.cpp 17 May 2005 11:44:16 -0000 1.52
+++ src/af/xap/xp/xap_Strings.cpp 17 May 2007 11:12:26 -0000
@@ -178,7 +178,7 @@
//////////////////////////////////////////////////////////////////
XAP_DiskStringSet::XAP_DiskStringSet(XAP_App * pApp)
- : XAP_StringSet(pApp,NULL)
+ : XAP_StringSet(pApp,NULL), m_hash (2048)
{
m_pFallbackStringSet = NULL;
@@ -328,13 +328,26 @@
{
if (!szId || !*szId || !szString || !*szString)
return true;
+
+ char id[1024];
+
+ // Build a hash table the first time that the function is called
+ if (m_hash.size() == 0) {
+ UT_uint32 k, kLimit = NrElements(s_map);
+
+ for (k=0; k<kLimit; k++) {
+ strcpy (id, s_map[k].szName);
+ UT_lowerString (id);
+ m_hash.insert (id, (UT_uint32 *) (k + 1));
+ }
+ }
+
+ strcpy (id, szId);
+ UT_lowerString (id);
+ UT_uint32 pick = (UT_uint32) m_hash.pick (id);
- UT_uint32 kLimit = NrElements(s_map);
- UT_uint32 k;
-
- for (k=0; k<kLimit; k++)
- if (UT_XML_stricmp(s_map[k].szName,szId) == 0)
- return XAP_DiskStringSet::setValue(s_map[k].id,szString);
+ if (pick != 0)
+ return setValue(s_map[pick - 1].id, szString);
// TODO should we promote this message to a message box ??
UT_DEBUGMSG(("Unknown ID in string file [%s=\"%s\"]\n",szId,szString));
Index: src/af/xap/xp/xap_Strings.h
===================================================================
RCS file: /cvsroot/abi/src/af/xap/xp/xap_Strings.h,v
retrieving revision 1.15
diff -u -r1.15 xap_Strings.h
--- src/af/xap/xp/xap_Strings.h 11 Apr 2004 17:51:39 -0000 1.15
+++ src/af/xap/xp/xap_Strings.h 17 May 2007 11:12:26 -0000
@@ -31,6 +31,7 @@
#include "ut_vector.h"
#include "ut_string.h"
#include "ut_string_class.h"
+#include "ut_hash.h"
class XAP_App;
@@ -129,7 +130,7 @@
private:
UT_GenericVector<XML_Char*> m_vecStringsXAP;
-
+ UT_StringPtrMap m_hash;
struct
{
bool m_parserStatus;
Index: src/wp/ap/xp/ap_Strings.cpp
===================================================================
RCS file: /cvsroot/abi/src/wp/ap/xp/ap_Strings.cpp,v
retrieving revision 1.22
diff -u -r1.22 ap_Strings.cpp
--- src/wp/ap/xp/ap_Strings.cpp 21 Jun 2005 17:33:00 -0000 1.22
+++ src/wp/ap/xp/ap_Strings.cpp 17 May 2007 11:13:13 -0000
@@ -197,7 +197,7 @@
//////////////////////////////////////////////////////////////////
AP_DiskStringSet::AP_DiskStringSet(XAP_App * pApp)
- : XAP_DiskStringSet(pApp)
+ : XAP_DiskStringSet(pApp), m_hash (2048)
{
setValue(AP_STRING_ID__FIRST__,0); // bogus zero element
}
@@ -327,7 +327,8 @@
#include "ap_String_Id.h"
};
-#undef dcl
+#undef dcl
+
//////////////////////////////////////////////////////////////////
@@ -335,16 +336,27 @@
{
if (!szId || !*szId || !szString || !*szString)
return true;
+
+ char id[1024];
+ // Build a hash table the first time that the function is called
+ if (m_hash.size() == 0) {
+ UT_uint32 k, kLimit = NrElements(s_map);
+
+ for (k=0; k<kLimit; k++) {
+ strcpy (id, s_map[k].szName);
+ UT_lowerString (id);
+ m_hash.insert (id, (UT_uint32 *) (k + 1));
+ }
+ }
+
+ strcpy (id, szId);
+ UT_lowerString (id);
+ UT_uint32 pick = (UT_uint32) m_hash.pick (id);
+
+ if (pick != 0)
+ return setValue(s_map[pick - 1].id, szString);
- UT_uint32 kLimit = NrElements(s_map);
- UT_uint32 k;
-
- for (k=0; k<kLimit; k++)
- if (UT_XML_stricmp(s_map[k].szName,szId) == 0)
- return setValue(s_map[k].id,szString);
-
// the name (szId) is not in our table, see if the base class knows about it.
-
return XAP_DiskStringSet::setValue(szId,szString);
}
Index: src/wp/ap/xp/ap_Strings.h
===================================================================
RCS file: /cvsroot/abi/src/wp/ap/xp/ap_Strings.h,v
retrieving revision 1.4
diff -u -r1.4 ap_Strings.h
--- src/wp/ap/xp/ap_Strings.h 23 Mar 2004 00:13:28 -0000 1.4
+++ src/wp/ap/xp/ap_Strings.h 17 May 2007 11:13:13 -0000
@@ -74,6 +74,7 @@
protected:
UT_GenericVector<XML_Char*> m_vecStringsAP;
+ UT_StringPtrMap m_hash;
};
Index: src/wp/ap/xp/ap_Toolbar_Iconmap.h
===================================================================
RCS file: /cvsroot/abi/src/wp/ap/xp/ap_Toolbar_Iconmap.h,v
retrieving revision 1.17
diff -u -r1.17 ap_Toolbar_Iconmap.h
--- src/wp/ap/xp/ap_Toolbar_Iconmap.h 5 Jul 2005 14:08:22 -0000 1.17
+++ src/wp/ap/xp/ap_Toolbar_Iconmap.h 17 May 2007 11:13:14 -0000
@@ -26,166 +26,159 @@
/*****************************************************************/
// Mapping sof ID, to default icons
-toolbariconmap(_BOGUS1__,NoIcon)
+// Mappings to ID_LANG to non-default icons
+// We can do specific mappings for some languages. For example,
+// in Spainsh, some applications use N for Negrita instead of B for Bold
+// For now, we do not use this.
+
+// Keep this list alphabetically sorted
+
+toolbariconmap(1COLUMN,tb_1column_xpm)
+toolbariconmap(2COLUMN,tb_2column_xpm)
+toolbariconmap(3COLUMN,tb_3column_xpm)
+toolbariconmap(ADD_COLUMN, tb_add_column_xpm)
+toolbariconmap(ADD_ROW, tb_add_row_xpm)
+toolbariconmap(ALIGN_CENTER,tb_text_center_xpm)
+toolbariconmap(ALIGN_JUSTIFY,tb_text_justify_xpm)
+toolbariconmap(ALIGN_LEFT,tb_text_align_left_xpm)
+toolbariconmap(ALIGN_RIGHT,tb_text_align_right_xpm)
+toolbariconmap(COLOR_BACK,tb_text_bgcolor_xpm)
+toolbariconmap(COLOR_FORE,tb_text_fgcolor_xpm)
+toolbariconmap(DELETE_COLUMN, tb_delete_column_xpm)
+toolbariconmap(DELETE_ROW, tb_delete_row_xpm)
+toolbariconmap(DOUBLE_SPACE,tb_line_double_space_xpm)
+toolbariconmap(EDIT_COPY,tb_copy_xpm)
+toolbariconmap(EDIT_CUT,tb_cut_xpm)
+toolbariconmap(EDIT_FOOTER,tb_edit_editfooter_xpm)
+toolbariconmap(EDIT_HEADER,tb_edit_editheader_xpm)
+toolbariconmap(EDIT_PASTE,tb_paste_xpm)
+toolbariconmap(EDIT_REDO,tb_redo_xpm)
+toolbariconmap(EDIT_REMOVEFOOTER,tb_edit_removefooter_xpm)
+toolbariconmap(EDIT_REMOVEHEADER,tb_edit_removeheader_xpm)
+toolbariconmap(EDIT_UNDO,tb_undo_xpm)
toolbariconmap(FILE_NEW,tb_new_xpm)
toolbariconmap(FILE_OPEN,tb_open_xpm)
-toolbariconmap(FILE_SAVE,tb_save_xpm)
-toolbariconmap(FILE_SAVEAS,tb_save_as_xpm)
toolbariconmap(FILE_PRINT,tb_print_xpm)
toolbariconmap(FILE_PRINT_PREVIEW,tb_print_preview_xpm)
-toolbariconmap(EDIT_UNDO,tb_undo_xpm)
-toolbariconmap(EDIT_REDO,tb_redo_xpm)
-toolbariconmap(EDIT_CUT,tb_cut_xpm)
-toolbariconmap(EDIT_COPY,tb_copy_xpm)
-toolbariconmap(EDIT_PASTE,tb_paste_xpm)
-toolbariconmap(EDIT_HEADER,tb_edit_editheader_xpm)
-toolbariconmap(EDIT_FOOTER,tb_edit_editfooter_xpm)
-toolbariconmap(EDIT_REMOVEHEADER,tb_edit_removeheader_xpm)
-toolbariconmap(EDIT_REMOVEFOOTER,tb_edit_removefooter_xpm)
-toolbariconmap(SPELLCHECK,tb_spellcheck_xpm)
-toolbariconmap(TRANSPARENTLANG,tb_transparent_xpm)
-toolbariconmap(IMG,tb_insert_graphic_xpm)
-toolbariconmap(IMG,tb_remove_graphic_xpm)
-toolbariconmap(FMT_STYLE,NoIcon)
+toolbariconmap(FILE_SAVE,tb_save_xpm)
+toolbariconmap(FILE_SAVEAS,tb_save_as_xpm)
+toolbariconmap(FMT_BOLD,tb_text_bold_xpm)
+toolbariconmap(FMT_BOOKMARK,tb_anchor)
+toolbariconmap(FMT_BOTTOMLINE,tb_text_bottomline_xpm)
+toolbariconmap(FMT_DIR_OVERRIDE_LTR,tb_text_direction_ltr_xpm)
+toolbariconmap(FMT_DIR_OVERRIDE_RTL,tb_text_direction_rtl_xpm)
+toolbariconmap(FMT_DOM_DIRECTION,tb_text_dom_direction_rtl_xpm)
toolbariconmap(FMT_FONT,NoIcon)
toolbariconmap(FMT_HYPERLINK,tb_hyperlink_xpm)
-toolbariconmap(FMT_BOOKMARK,tb_anchor)
-toolbariconmap(FMT_SIZE,NoIcon)
-toolbariconmap(FMT_BOLD,tb_text_bold_xpm)
toolbariconmap(FMT_ITALIC,tb_text_italic_xpm)
-toolbariconmap(FMT_UNDERLINE,tb_text_underline_xpm)
toolbariconmap(FMT_OVERLINE,tb_text_overline_xpm)
+toolbariconmap(FMT_SIZE,NoIcon)
toolbariconmap(FMT_STRIKE,tb_text_strikeout_xpm)
+toolbariconmap(FMT_STYLE,NoIcon)
+toolbariconmap(FMT_SUBSCRIPT,tb_text_subscript_xpm)
+toolbariconmap(FMT_SUPERSCRIPT,tb_text_superscript_xpm)
toolbariconmap(FMT_TOPLINE,tb_text_topline_xpm)
-toolbariconmap(FMT_BOTTOMLINE,tb_text_bottomline_xpm)
+toolbariconmap(FMT_UNDERLINE,tb_text_underline_xpm)
+toolbariconmap(FMTPAINTER,tb_stock_paint_xpm)
+toolbariconmap(FT_LINEBOTTOM, tb_LineBottom_xpm)
+toolbariconmap(FT_LINELEFT, tb_LineLeft_xpm)
+toolbariconmap(FT_LINERIGHT, tb_LineRight_xpm)
+toolbariconmap(FT_LINETOP, tb_LineTop_xpm)
toolbariconmap(HELP,tb_help_xpm)
-toolbariconmap(FMT_SUPERSCRIPT,tb_text_superscript_xpm)
-toolbariconmap(FMT_SUBSCRIPT,tb_text_subscript_xpm)
+toolbariconmap(IMG,tb_insert_graphic_xpm)
+toolbariconmap(IMG,tb_remove_graphic_xpm)
+toolbariconmap(INDENT,tb_text_indent_xpm)
toolbariconmap(INSERT_SYMBOL,tb_symbol_xpm)
-toolbariconmap(ALIGN_LEFT,tb_text_align_left_xpm)
-toolbariconmap(ALIGN_CENTER,tb_text_center_xpm)
-toolbariconmap(ALIGN_RIGHT,tb_text_align_right_xpm)
-toolbariconmap(ALIGN_JUSTIFY,tb_text_justify_xpm)
-toolbariconmap(PARA_0BEFORE,tb_para_0before_xpm)
-toolbariconmap(PARA_12BEFORE,tb_para_12before_xpm)
-toolbariconmap(SINGLE_SPACE,tb_line_single_space_xpm)
-toolbariconmap(MIDDLE_SPACE,tb_line_middle_space_xpm)
-toolbariconmap(DOUBLE_SPACE,tb_line_double_space_xpm)
-toolbariconmap(1COLUMN,tb_1column_xpm)
-toolbariconmap(2COLUMN,tb_2column_xpm)
-toolbariconmap(3COLUMN,tb_3column_xpm)
-toolbariconmap(VIEW_SHOWPARA,tb_view_showpara_xpm)
-toolbariconmap(ZOOM,NoIcon)
+toolbariconmap(INSERT_TABLE, tb_insert_table_xpm)
toolbariconmap(LISTS_BULLETS,tb_lists_bullets_xpm)
toolbariconmap(LISTS_NUMBERS,tb_lists_numbers_xpm)
-toolbariconmap(COLOR_FORE,tb_text_fgcolor_xpm)
-toolbariconmap(COLOR_BACK,tb_text_bgcolor_xpm)
-toolbariconmap(INDENT,tb_text_indent_xpm)
-toolbariconmap(UNINDENT,tb_text_unindent_xpm)
-toolbariconmap(SCRIPT_PLAY,tb_script_play_xpm)
-toolbariconmap(FMTPAINTER,tb_stock_paint_xpm)
-toolbariconmap(FMT_DIR_OVERRIDE_LTR,tb_text_direction_ltr_xpm)
-toolbariconmap(FMT_DIR_OVERRIDE_RTL,tb_text_direction_rtl_xpm)
-toolbariconmap(FMT_DOM_DIRECTION,tb_text_dom_direction_rtl_xpm)
-toolbariconmap(INSERT_TABLE, tb_insert_table_xpm)
-toolbariconmap(ADD_ROW, tb_add_row_xpm)
-toolbariconmap(ADD_COLUMN, tb_add_column_xpm)
-toolbariconmap(DELETE_ROW, tb_delete_row_xpm)
-toolbariconmap(DELETE_COLUMN, tb_delete_column_xpm)
+toolbariconmap(Menu_AbiWord_About,menu_about_xpm)
+toolbariconmap(Menu_AbiWord_Add_Column, menu_add_column_xpm)
+toolbariconmap(Menu_AbiWord_Add_Row, menu_add_row_xpm)
+toolbariconmap(Menu_AbiWord_Align_Center,menu_text_center_xpm)
+toolbariconmap(Menu_AbiWord_Align_Justify,menu_text_justify_xpm)
+toolbariconmap(Menu_AbiWord_Align_Left,menu_text_left_xpm)
+toolbariconmap(Menu_AbiWord_Align_Right,menu_text_right_xpm)
+toolbariconmap(Menu_AbiWord_Bold,menu_text_bold_xpm)
+toolbariconmap(Menu_AbiWord_Book,menu_book_xpm)
+toolbariconmap(Menu_AbiWord_Bookmark,menu_insert_bookmark_xpm)
+toolbariconmap(Menu_AbiWord_Bottomline,menu_text_bottomline_xpm)
+toolbariconmap(Menu_AbiWord_Clear,menu_delete_xpm)
+toolbariconmap(Menu_AbiWord_Close, menu_close_xpm)
+toolbariconmap(Menu_AbiWord_Copy,menu_copy_xpm)
+toolbariconmap(Menu_AbiWord_Credits,menu_credits_xpm)
+toolbariconmap(Menu_AbiWord_Cut,menu_cut_xpm)
+toolbariconmap(Menu_AbiWord_Delete_Column, menu_delete_column_xpm)
+toolbariconmap(Menu_AbiWord_Delete_Row, menu_delete_row_xpm)
+toolbariconmap(Menu_AbiWord_Delete_Table,menu_delete_table_xpm)
+toolbariconmap(Menu_AbiWord_Execute,menu_exec_xpm)
+toolbariconmap(Menu_AbiWord_Exit,menu_exit_xpm)
+toolbariconmap(Menu_AbiWord_Export, menu_export_xpm)
+toolbariconmap(Menu_AbiWord_Font,menu_font_xpm)
+toolbariconmap(Menu_AbiWord_Goto,menu_jump_to_xpm)
+toolbariconmap(Menu_AbiWord_Help,menu_help_xpm)
+toolbariconmap(Menu_AbiWord_Hyperlink,menu_insert_hyperlink_xpm)
+toolbariconmap(Menu_AbiWord_Img,menu_insert_graphic_xpm)
+toolbariconmap(Menu_AbiWord_Import, menu_import_xpm)
+toolbariconmap(Menu_AbiWord_Insert_Symbol,menu_insert_symbol_xpm)
+toolbariconmap(Menu_AbiWord_Insert_Table,menu_insert_table_xpm)
+toolbariconmap(Menu_AbiWord_Italic,menu_text_italic_xpm)
+toolbariconmap(Menu_AbiWord_Merge_Cells, menu_merge_cells_xpm)
+toolbariconmap(Menu_AbiWord_New,menu_new_xpm)
+toolbariconmap(Menu_AbiWord_Open,menu_open_xpm)
+toolbariconmap(Menu_AbiWord_Overline,menu_text_overline_xpm)
+toolbariconmap(Menu_AbiWord_Paste,menu_paste_xpm)
+toolbariconmap(Menu_AbiWord_Preferences,menu_preferences_xpm)
+toolbariconmap(Menu_AbiWord_Print,menu_print_xpm)
+toolbariconmap(Menu_AbiWord_Print_Preview,menu_print_preview_xpm)
+toolbariconmap(Menu_AbiWord_Print_Setup, menu_print_setup_xpm)
+toolbariconmap(Menu_AbiWord_Properties, menu_file_properties_xpm)
+toolbariconmap(Menu_AbiWord_Redo,menu_redo_xpm)
+toolbariconmap(Menu_AbiWord_Replace,menu_search_replace_xpm)
+toolbariconmap(Menu_AbiWord_Revert, menu_revert_xpm)
+toolbariconmap(Menu_AbiWord_Save,menu_save_xpm)
+toolbariconmap(Menu_AbiWord_SaveAs,menu_save_as_xpm)
+toolbariconmap(Menu_AbiWord_Search,menu_search_xpm)
+toolbariconmap(Menu_AbiWord_Spellcheck,menu_spellcheck_xpm)
+toolbariconmap(Menu_AbiWord_Split_Cells, menu_split_cells_xpm)
+toolbariconmap(Menu_AbiWord_Strike,menu_text_strikethrough_xpm)
+toolbariconmap(Menu_AbiWord_Subscript,menu_subscript_xpm)
+toolbariconmap(Menu_AbiWord_Superscript,menu_superscript_xpm)
+toolbariconmap(Menu_AbiWord_Topline,menu_text_topline_xpm)
+toolbariconmap(Menu_AbiWord_Underline,menu_text_underline_xpm)
+toolbariconmap(Menu_AbiWord_Undo,menu_undo_xpm)
toolbariconmap(MERGE_CELLS, tb_merge_cells_xpm)
-toolbariconmap(SPLIT_CELLS, tb_split_cells_xpm)
-toolbariconmap(MERGELEFT, tb_MergeLeft_xpm)
-toolbariconmap(MERGERIGHT, tb_MergeRight_xpm)
toolbariconmap(MERGEABOVE, tb_MergeAbove_xpm)
toolbariconmap(MERGEBELOW, tb_MergeBelow_xpm)
-toolbariconmap(SPLITLEFT, tb_SplitLeft_xpm)
+toolbariconmap(MERGELEFT, tb_MergeLeft_xpm)
+toolbariconmap(MERGERIGHT, tb_MergeRight_xpm)
+toolbariconmap(MIDDLE_SPACE,tb_line_middle_space_xpm)
+toolbariconmap(OPTIONSDLG, tb_LineLeft_xpm)
+toolbariconmap(PARA_0BEFORE,tb_para_0before_xpm)
+toolbariconmap(PARA_12BEFORE,tb_para_12before_xpm)
+toolbariconmap(SCRIPT_PLAY,tb_script_play_xpm)
+toolbariconmap(SINGLE_SPACE,tb_line_single_space_xpm)
+toolbariconmap(SPELLCHECK,tb_spellcheck_xpm)
+toolbariconmap(SPLIT_CELLS, tb_split_cells_xpm)
+toolbariconmap(SPLITABOVE, tb_SplitAbove_xpm)
+toolbariconmap(SPLITBELOW, tb_SplitBelow_xpm)
toolbariconmap(SPLITHORIMID, tb_SplitHoriMid_xpm)
+toolbariconmap(SPLITLEFT, tb_SplitLeft_xpm)
toolbariconmap(SPLITRIGHT, tb_SplitRight_xpm)
-toolbariconmap(SPLITABOVE, tb_SplitAbove_xpm)
toolbariconmap(SPLITVERTMID, tb_SplitVertMid_xpm)
-toolbariconmap(SPLITBELOW, tb_SplitBelow_xpm)
-// Format Table DlgBox
-toolbariconmap(FT_LINEBOTTOM, tb_LineBottom_xpm)
-toolbariconmap(FT_LINETOP, tb_LineTop_xpm)
-toolbariconmap(FT_LINERIGHT, tb_LineRight_xpm)
-toolbariconmap(FT_LINELEFT, tb_LineLeft_xpm)
-
-// Table
-toolbariconmap(TB_ADD_ROW, tb_add_row_xpm)
toolbariconmap(TB_ADD_COLUMN, tb_add_column_xpm)
-toolbariconmap(TB_DELETE_ROW, tb_delete_row_xpm)
+toolbariconmap(TB_ADD_ROW, tb_add_row_xpm)
toolbariconmap(TB_DELETE_COLUMN, tb_delete_column_xpm)
+toolbariconmap(TB_DELETE_ROW, tb_delete_row_xpm)
toolbariconmap(TB_MERGE_CELLS, tb_merge_cells_xpm)
toolbariconmap(TB_SPLIT_CELLS, tb_split_cells_xpm)
-
-
-// Others
-
-toolbariconmap(Menu_AbiWord_New,menu_new_xpm)
-toolbariconmap(Menu_AbiWord_Open,menu_open_xpm)
-toolbariconmap(Menu_AbiWord_Save,menu_save_xpm)
-toolbariconmap(Menu_AbiWord_SaveAs,menu_save_as_xpm)
-toolbariconmap(Menu_AbiWord_Print,menu_print_xpm)
-toolbariconmap(Menu_AbiWord_Print_Preview,menu_print_preview_xpm)
-toolbariconmap(Menu_AbiWord_Exit,menu_exit_xpm)
-toolbariconmap(Menu_AbiWord_Undo,menu_undo_xpm)
-toolbariconmap(Menu_AbiWord_Redo,menu_redo_xpm)
-toolbariconmap(Menu_AbiWord_Cut,menu_cut_xpm)
-toolbariconmap(Menu_AbiWord_Copy,menu_copy_xpm)
-toolbariconmap(Menu_AbiWord_Paste,menu_paste_xpm)
-toolbariconmap(Menu_AbiWord_Img,menu_insert_graphic_xpm)
-toolbariconmap(Menu_AbiWord_Insert_Table,menu_insert_table_xpm)
-toolbariconmap(Menu_AbiWord_Hyperlink,menu_insert_hyperlink_xpm)
-toolbariconmap(Menu_AbiWord_Bookmark,menu_insert_bookmark_xpm)
-toolbariconmap(Menu_AbiWord_Help,menu_help_xpm)
-toolbariconmap(Menu_AbiWord_Bold,menu_text_bold_xpm)
-toolbariconmap(Menu_AbiWord_Italic,menu_text_italic_xpm)
-toolbariconmap(Menu_AbiWord_Underline,menu_text_underline_xpm)
-toolbariconmap(Menu_AbiWord_Overline,menu_text_overline_xpm)
-toolbariconmap(Menu_AbiWord_Strike,menu_text_strikethrough_xpm)
-toolbariconmap(Menu_AbiWord_Topline,menu_text_topline_xpm)
-toolbariconmap(Menu_AbiWord_Bottomline,menu_text_bottomline_xpm)
-toolbariconmap(Menu_AbiWord_Superscript,menu_superscript_xpm)
-toolbariconmap(Menu_AbiWord_Subscript,menu_subscript_xpm)
-toolbariconmap(Menu_AbiWord_Align_Left,menu_text_left_xpm)
-toolbariconmap(Menu_AbiWord_Align_Center,menu_text_center_xpm)
-toolbariconmap(Menu_AbiWord_Align_Right,menu_text_right_xpm)
-toolbariconmap(Menu_AbiWord_Align_Justify,menu_text_justify_xpm)
-toolbariconmap(Menu_AbiWord_Spellcheck,menu_spellcheck_xpm)
-toolbariconmap(Menu_AbiWord_Add_Row, menu_add_row_xpm)
-toolbariconmap(Menu_AbiWord_Add_Column, menu_add_column_xpm)
-toolbariconmap(Menu_AbiWord_Delete_Row, menu_delete_row_xpm)
-toolbariconmap(Menu_AbiWord_Delete_Column, menu_delete_column_xpm)
-toolbariconmap(Menu_AbiWord_Merge_Cells, menu_merge_cells_xpm)
-toolbariconmap(Menu_AbiWord_Split_Cells, menu_split_cells_xpm)
-toolbariconmap(Menu_AbiWord_Insert_Symbol,menu_insert_symbol_xpm)
-toolbariconmap(Menu_AbiWord_Revert, menu_revert_xpm)
-toolbariconmap(Menu_AbiWord_Export, menu_export_xpm)
-toolbariconmap(Menu_AbiWord_Import, menu_import_xpm)
-toolbariconmap(Menu_AbiWord_Properties, menu_file_properties_xpm)
-toolbariconmap(Menu_AbiWord_Print_Setup, menu_print_setup_xpm)
-toolbariconmap(Menu_AbiWord_Close, menu_close_xpm)
-toolbariconmap(Menu_AbiWord_Search,menu_search_xpm)
-toolbariconmap(Menu_AbiWord_Replace,menu_search_replace_xpm)
-toolbariconmap(Menu_AbiWord_Clear,menu_delete_xpm)
-toolbariconmap(Menu_AbiWord_Goto,menu_jump_to_xpm)
-toolbariconmap(Menu_AbiWord_Preferences,menu_preferences_xpm)
-toolbariconmap(Menu_AbiWord_Execute,menu_exec_xpm)
-toolbariconmap(Menu_AbiWord_Book,menu_book_xpm)
-toolbariconmap(Menu_AbiWord_Delete_Table,menu_delete_table_xpm)
-toolbariconmap(Menu_AbiWord_Font,menu_font_xpm)
-toolbariconmap(Menu_AbiWord_Credits,menu_credits_xpm)
-toolbariconmap(Menu_AbiWord_About,menu_about_xpm)
-
-toolbariconmap(OPTIONSDLG, tb_LineLeft_xpm)
+toolbariconmap(TRANSPARENTLANG,tb_transparent_xpm)
+toolbariconmap(UNINDENT,tb_text_unindent_xpm)
+toolbariconmap(VIEW_SHOWPARA,tb_view_showpara_xpm)
+toolbariconmap(ZOOM,NoIcon)
-// Add new default icons here
-toolbariconmap(_BOGUS2__,NoIcon)
-// Mappings to ID_LANG to non-default icons
-// We can do specific mappings for some languages. For example,
-// in Spainsh, some applications use N for Negrita instead of B for Bold
-// For now, we do not use this.
+
//
// SAMPLE: toolbariconmap(LISTS_BULLETS_fi-FI,tb_lists_xpm)
Index: src/wp/ap/xp/ap_Toolbar_Icons.cpp
===================================================================
RCS file: /cvsroot/abi/src/wp/ap/xp/ap_Toolbar_Icons.cpp,v
retrieving revision 1.10
diff -u -r1.10 ap_Toolbar_Icons.cpp
--- src/wp/ap/xp/ap_Toolbar_Icons.cpp 21 Jun 2005 17:33:00 -0000 1.10
+++ src/wp/ap/xp/ap_Toolbar_Icons.cpp 17 May 2007 11:13:15 -0000
@@ -106,19 +106,27 @@
bool bIDFound = false;
if (!szID || !*szID )
- return false;
- UT_uint32 m;
- UT_uint32 mLimit = NrElements(s_imTable);
-
- // Search the map for overloaded ID_LANG to iconname
- for (m=0; m < mLimit; m++)
+ return false;
+
+ UT_uint32 range = NrElements(s_imTable);
+ UT_uint32 middle, right = range - 1, left = 0;
+ UT_sint32 cmp;
+
+ while (left <= right)
{
- if (UT_stricmp(szID, s_imTable[m].m_id ) == 0)
- {
+ middle = (left + right) >> 1;
+ cmp = UT_stricmp(szID, s_imTable[middle].m_id);
+
+ if (cmp == 0) {
bIDFound = true;
- *pName = s_imTable[m].m_iconname;
+ *pName = s_imTable[middle].m_iconname;
break;
}
+
+ if (cmp > 0)
+ left = middle + 1;
+ else
+ right = middle - 1;
}
// Search the toolbariconmap for ID to iconname
@@ -131,16 +139,27 @@
if (pLast)
*pLast = '\0';
-
- for (m=0; m < mLimit; m++)
- {
- if (UT_stricmp(szBaseID, s_imTable[m].m_id ) == 0)
- {
+
+
+ right = range - 1;
+ left = 0;
+
+ while (left <= right)
+ {
+ middle = (left + right) >> 1;
+ cmp = UT_stricmp(szBaseID, s_imTable[middle].m_id);
+
+ if (cmp == 0) {
bIDFound = true;
- *pName = s_imTable[m].m_iconname;
+ *pName = s_imTable[middle].m_iconname;
break;
}
- }
+
+ if (cmp > 0)
+ left = middle + 1;
+ else
+ right = middle - 1;
+ }
}
return bIDFound;
}
@@ -165,20 +184,27 @@
return false;
if( UT_stricmp(szName,"NoIcon") == 0)
- return false;
+ return false;
- UT_uint32 kLimit = NrElements(s_itTable);
- UT_uint32 k;
-
- // Search to match icon name with data
- for (k=0; k < kLimit; k++)
+ UT_uint32 range = NrElements(s_itTable);
+ UT_uint32 middle, right = range - 1, left = 0;
+ UT_sint32 cmp;
+
+ while (left <= right)
{
- if (UT_stricmp(szName,s_itTable[k].m_name) == 0)
- {
- *pIconData = s_itTable[k].m_staticVariable;
- *pSizeofData = s_itTable[k].m_sizeofVariable;
+ middle = (left + right) >> 1;
+ cmp = UT_stricmp(szName,s_itTable[middle].m_name);
+
+ if (cmp == 0) {
+ *pIconData = s_itTable[middle].m_staticVariable;
+ *pSizeofData = s_itTable[middle].m_sizeofVariable;
return true;
}
+
+ if (cmp > 0)
+ left = middle + 1;
+ else
+ right = middle - 1;
}
// Not found - no icon available.
Index: src/wp/ap/xp/ap_Toolbar_Icons_All.h
===================================================================
RCS file: /cvsroot/abi/src/wp/ap/xp/ap_Toolbar_Icons_All.h,v
retrieving revision 1.61
diff -u -r1.61 ap_Toolbar_Icons_All.h
--- src/wp/ap/xp/ap_Toolbar_Icons_All.h 5 Jul 2005 14:08:22 -0000 1.61
+++ src/wp/ap/xp/ap_Toolbar_Icons_All.h 17 May 2007 11:13:18 -0000
@@ -188,156 +188,150 @@
// Declare each toolbar icon that we are building.
- DefineToolbarIcon(tb_text_center_xpm)
- DefineToolbarIcon(tb_text_justify_xpm)
- DefineToolbarIcon(tb_text_align_left_xpm)
- DefineToolbarIcon(tb_text_align_right_xpm)
- DefineToolbarIcon(tb_text_bold_xpm)
- DefineToolbarIcon(tb_text_font_xpm)
- DefineToolbarIcon(tb_text_italic_xpm)
- DefineToolbarIcon(tb_text_strikeout_xpm)
- DefineToolbarIcon(tb_text_topline_xpm)
- DefineToolbarIcon(tb_text_bottomline_xpm)
- DefineToolbarIcon(tb_text_underline_xpm)
- DefineToolbarIcon(tb_text_overline_xpm)
- DefineToolbarIcon(tb_text_superscript_xpm)
- DefineToolbarIcon(tb_text_subscript_xpm)
- DefineToolbarIcon(tb_help_xpm)
- DefineToolbarIcon(tb_stock_font_xpm)
- DefineToolbarIcon(tb_view_full_screen_xpm)
-
-
- DefineToolbarIcon(tb_text_direction_ltr_xpm)
- DefineToolbarIcon(tb_text_direction_rtl_xpm)
- DefineToolbarIcon(tb_text_dom_direction_rtl_xpm)
-
- DefineToolbarIcon(tb_smiley)
- DefineToolbarIcon(tb_anchor)
- DefineToolbarIcon(tb_hyperlink_xpm)
- DefineToolbarIcon(tb_symbol_xpm)
- DefineToolbarIcon(tb_para_0before_xpm)
- DefineToolbarIcon(tb_para_12before_xpm)
+ // Please, keep this list alphabetically sorted since we are doing a binary search
+ // at AP_Toolbar_Icons::_findIconDataByName
+ DefineToolbarIcon(menu_about_xpm)
+ DefineToolbarIcon(menu_add_column_xpm)
+ DefineToolbarIcon(menu_add_row_xpm)
+ DefineToolbarIcon(menu_book_xpm)
+ DefineToolbarIcon(menu_close_xpm)
+ DefineToolbarIcon(menu_copy_xpm)
+ DefineToolbarIcon(menu_credits_xpm)
+ DefineToolbarIcon(menu_cut_xpm)
+ DefineToolbarIcon(menu_delete_column_xpm)
+ DefineToolbarIcon(menu_delete_row_xpm)
+ DefineToolbarIcon(menu_delete_table_xpm)
+ DefineToolbarIcon(menu_delete_xpm)
+ DefineToolbarIcon(menu_exec_xpm)
+ DefineToolbarIcon(menu_exit_xpm)
+ DefineToolbarIcon(menu_export_xpm)
+ DefineToolbarIcon(menu_file_properties_xpm)
+ DefineToolbarIcon(menu_font_xpm)
+ DefineToolbarIcon(menu_help_xpm)
+ DefineToolbarIcon(menu_import_xpm)
+ DefineToolbarIcon(menu_insert_bookmark_xpm)
+ DefineToolbarIcon(menu_insert_graphic_xpm)
+ DefineToolbarIcon(menu_insert_hyperlink_xpm)
+ DefineToolbarIcon(menu_insert_symbol_xpm)
+ DefineToolbarIcon(menu_insert_table_xpm)
+ DefineToolbarIcon(menu_jump_to_xpm)
+ DefineToolbarIcon(menu_merge_cells_xpm)
+ DefineToolbarIcon(menu_new_xpm)
+ DefineToolbarIcon(menu_open_xpm)
+ DefineToolbarIcon(menu_paste_xpm)
+ DefineToolbarIcon(menu_preferences_xpm)
+ DefineToolbarIcon(menu_print_preview_xpm)
+ DefineToolbarIcon(menu_print_setup_xpm)
+ DefineToolbarIcon(menu_print_xpm)
+ DefineToolbarIcon(menu_redo_xpm)
+ DefineToolbarIcon(menu_revert_xpm)
+ DefineToolbarIcon(menu_save_as_xpm)
+ DefineToolbarIcon(menu_save_xpm)
+ DefineToolbarIcon(menu_search_replace_xpm)
+ DefineToolbarIcon(menu_search_xpm)
+ DefineToolbarIcon(menu_spellcheck_xpm)
+ DefineToolbarIcon(menu_split_cells_xpm)
+ DefineToolbarIcon(menu_subscript_xpm)
+ DefineToolbarIcon(menu_superscript_xpm)
+ DefineToolbarIcon(menu_text_bold_xpm)
+ DefineToolbarIcon(menu_text_bottomline_xpm)
+ DefineToolbarIcon(menu_text_center_xpm)
+ DefineToolbarIcon(menu_text_italic_xpm)
+ DefineToolbarIcon(menu_text_justify_xpm)
+ DefineToolbarIcon(menu_text_left_xpm)
+ DefineToolbarIcon(menu_text_overline_xpm)
+ DefineToolbarIcon(menu_text_right_xpm)
+ DefineToolbarIcon(menu_text_strikethrough_xpm)
+ DefineToolbarIcon(menu_text_topline_xpm)
+ DefineToolbarIcon(menu_text_underline_xpm)
+ DefineToolbarIcon(menu_undo_xpm)
DefineToolbarIcon(tb_1column_xpm)
DefineToolbarIcon(tb_2column_xpm)
DefineToolbarIcon(tb_3column_xpm)
-
- DefineToolbarIcon(tb_LineTop_xpm)
+ DefineToolbarIcon(tb_add_column_xpm)
+ DefineToolbarIcon(tb_add_row_xpm)
+ DefineToolbarIcon(tb_anchor)
+ DefineToolbarIcon(tb_copy_xpm)
+ DefineToolbarIcon(tb_cut_xpm)
+ DefineToolbarIcon(tb_delete_column_xpm)
+ DefineToolbarIcon(tb_delete_row_xpm)
+ DefineToolbarIcon(tb_edit_editfooter_xpm)
+ DefineToolbarIcon(tb_edit_editheader_xpm)
+ DefineToolbarIcon(tb_edit_removefooter_xpm)
+ DefineToolbarIcon(tb_edit_removeheader_xpm)
+ DefineToolbarIcon(tb_edit_xpm)
+ DefineToolbarIcon(tb_help_xpm)
+ DefineToolbarIcon(tb_hyperlink_xpm)
+ DefineToolbarIcon(tb_insert_graphic_xpm)
+ DefineToolbarIcon(tb_insert_table_xpm)
+ DefineToolbarIcon(tb_line_double_space_xpm)
+ DefineToolbarIcon(tb_line_middle_space_xpm)
+ DefineToolbarIcon(tb_line_single_space_xpm)
+ DefineToolbarIcon(tb_LineAll_xpm)
DefineToolbarIcon(tb_LineBottom_xpm)
DefineToolbarIcon(tb_LineLeft_xpm)
- DefineToolbarIcon(tb_LineRight_xpm)
DefineToolbarIcon(tb_LineNone_xpm)
- DefineToolbarIcon(tb_LineAll_xpm)
-
+ DefineToolbarIcon(tb_LineRight_xpm)
+ DefineToolbarIcon(tb_LineTop_xpm)
+ DefineToolbarIcon(tb_lists_bullets_xpm)
+ DefineToolbarIcon(tb_lists_numbers_xpm)
+ DefineToolbarIcon(tb_merge_cells_xpm)
DefineToolbarIcon(tb_MergeAbove_xpm)
DefineToolbarIcon(tb_MergeBelow_xpm)
DefineToolbarIcon(tb_MergeLeft_xpm)
DefineToolbarIcon(tb_MergeRight_xpm)
-
-
- DefineToolbarIcon(tb_SplitAbove_xpm)
- DefineToolbarIcon(tb_SplitVertMid_xpm)
- DefineToolbarIcon(tb_SplitBelow_xpm)
- DefineToolbarIcon(tb_SplitLeft_xpm)
- DefineToolbarIcon(tb_SplitHoriMid_xpm)
- DefineToolbarIcon(tb_SplitRight_xpm)
-
- DefineToolbarIcon(tb_line_single_space_xpm)
- DefineToolbarIcon(tb_line_middle_space_xpm)
- DefineToolbarIcon(tb_line_double_space_xpm)
- DefineToolbarIcon(tb_copy_xpm)
- DefineToolbarIcon(tb_cut_xpm)
- DefineToolbarIcon(tb_edit_xpm)
DefineToolbarIcon(tb_new_xpm)
DefineToolbarIcon(tb_open_xpm)
+ DefineToolbarIcon(tb_para_0before_xpm)
+ DefineToolbarIcon(tb_para_12before_xpm)
DefineToolbarIcon(tb_paste_xpm)
- DefineToolbarIcon(tb_print_xpm)
DefineToolbarIcon(tb_print_preview_xpm)
+ DefineToolbarIcon(tb_print_xpm)
DefineToolbarIcon(tb_redo_xpm)
- DefineToolbarIcon(tb_save_xpm)
+ DefineToolbarIcon(tb_remove_graphic_xpm)
DefineToolbarIcon(tb_save_as_xpm)
- DefineToolbarIcon(tb_undo_xpm)
- DefineToolbarIcon(tb_todo_xpm)
- DefineToolbarIcon(tb_lists_numbers_xpm)
- DefineToolbarIcon(tb_lists_bullets_xpm)
+ DefineToolbarIcon(tb_save_xpm)
+ DefineToolbarIcon(tb_script_play_xpm)
+ DefineToolbarIcon(tb_smiley)
+ DefineToolbarIcon(tb_spellcheck_xpm)
+ DefineToolbarIcon(tb_split_cells_xpm)
+ DefineToolbarIcon(tb_SplitAbove_xpm)
+ DefineToolbarIcon(tb_SplitBelow_xpm)
+ DefineToolbarIcon(tb_SplitHoriMid_xpm)
+ DefineToolbarIcon(tb_SplitLeft_xpm)
+ DefineToolbarIcon(tb_SplitRight_xpm)
+ DefineToolbarIcon(tb_SplitVertMid_xpm)
+ DefineToolbarIcon(tb_stock_font_xpm)
+ DefineToolbarIcon(tb_stock_paint_xpm)
+ DefineToolbarIcon(tb_symbol_xpm)
+ DefineToolbarIcon(tb_text_align_left_xpm)
+ DefineToolbarIcon(tb_text_align_right_xpm)
+ DefineToolbarIcon(tb_text_bgcolor_xpm)
+ DefineToolbarIcon(tb_text_bold_xpm)
+ DefineToolbarIcon(tb_text_bottomline_xpm)
+ DefineToolbarIcon(tb_text_center_xpm)
+ DefineToolbarIcon(tb_text_direction_ltr_xpm)
+ DefineToolbarIcon(tb_text_direction_rtl_xpm)
+ DefineToolbarIcon(tb_text_dom_direction_rtl_xpm)
+ DefineToolbarIcon(tb_text_fgcolor_xpm)
+ DefineToolbarIcon(tb_text_font_xpm)
DefineToolbarIcon(tb_text_indent_xpm)
+ DefineToolbarIcon(tb_text_italic_xpm)
+ DefineToolbarIcon(tb_text_justify_xpm)
+ DefineToolbarIcon(tb_text_overline_xpm)
+ DefineToolbarIcon(tb_text_strikeout_xpm)
+ DefineToolbarIcon(tb_text_subscript_xpm)
+ DefineToolbarIcon(tb_text_superscript_xpm)
+ DefineToolbarIcon(tb_text_topline_xpm)
+ DefineToolbarIcon(tb_text_underline_xpm)
DefineToolbarIcon(tb_text_unindent_xpm)
- DefineToolbarIcon(tb_spellcheck_xpm)
- DefineToolbarIcon(tb_insert_graphic_xpm)
- DefineToolbarIcon(tb_remove_graphic_xpm)
+ DefineToolbarIcon(tb_todo_xpm)
+ DefineToolbarIcon(tb_transparent_xpm)
+ DefineToolbarIcon(tb_undo_xpm)
+ DefineToolbarIcon(tb_view_full_screen_xpm)
DefineToolbarIcon(tb_view_showpara_xpm)
- DefineToolbarIcon(tb_text_fgcolor_xpm)
- DefineToolbarIcon(tb_text_bgcolor_xpm)
- DefineToolbarIcon(tb_edit_editheader_xpm)
- DefineToolbarIcon(tb_edit_editfooter_xpm)
- DefineToolbarIcon(tb_edit_removeheader_xpm)
- DefineToolbarIcon(tb_edit_removefooter_xpm)
- DefineToolbarIcon(tb_script_play_xpm)
- DefineToolbarIcon(tb_stock_paint_xpm)
- DefineToolbarIcon(tb_insert_table_xpm)
- DefineToolbarIcon(tb_add_row_xpm)
- DefineToolbarIcon(tb_add_column_xpm)
- DefineToolbarIcon(tb_delete_row_xpm)
- DefineToolbarIcon(tb_delete_column_xpm)
- DefineToolbarIcon(tb_merge_cells_xpm)
- DefineToolbarIcon(tb_split_cells_xpm)
- DefineToolbarIcon(tb_transparent_xpm)
DefineToolbarIcon(tb_WrapButton_xpm)
- DefineToolbarIcon(menu_copy_xpm)
- DefineToolbarIcon(menu_cut_xpm)
- DefineToolbarIcon(menu_exit_xpm)
- DefineToolbarIcon(menu_new_xpm)
- DefineToolbarIcon(menu_open_xpm)
- DefineToolbarIcon(menu_paste_xpm)
- DefineToolbarIcon(menu_print_xpm)
- DefineToolbarIcon(menu_print_preview_xpm)
- DefineToolbarIcon(menu_redo_xpm)
- DefineToolbarIcon(menu_save_xpm)
- DefineToolbarIcon(menu_save_as_xpm)
- DefineToolbarIcon(menu_undo_xpm)
- DefineToolbarIcon(menu_insert_table_xpm)
- DefineToolbarIcon(menu_insert_graphic_xpm)
- DefineToolbarIcon(menu_insert_symbol_xpm)
- DefineToolbarIcon(menu_insert_bookmark_xpm)
- DefineToolbarIcon(menu_insert_hyperlink_xpm)
- DefineToolbarIcon(menu_help_xpm)
- DefineToolbarIcon(menu_text_center_xpm)
- DefineToolbarIcon(menu_text_justify_xpm)
- DefineToolbarIcon(menu_text_left_xpm)
- DefineToolbarIcon(menu_text_right_xpm)
- DefineToolbarIcon(menu_text_bold_xpm)
- DefineToolbarIcon(menu_text_italic_xpm)
- DefineToolbarIcon(menu_text_strikethrough_xpm)
- DefineToolbarIcon(menu_text_underline_xpm)
- DefineToolbarIcon(menu_superscript_xpm)
- DefineToolbarIcon(menu_subscript_xpm)
- DefineToolbarIcon(menu_text_overline_xpm)
- DefineToolbarIcon(menu_text_topline_xpm)
- DefineToolbarIcon(menu_text_bottomline_xpm)
- DefineToolbarIcon(menu_spellcheck_xpm)
- DefineToolbarIcon(menu_add_row_xpm)
- DefineToolbarIcon(menu_add_column_xpm)
- DefineToolbarIcon(menu_delete_row_xpm)
- DefineToolbarIcon(menu_delete_column_xpm)
- DefineToolbarIcon(menu_merge_cells_xpm)
- DefineToolbarIcon(menu_split_cells_xpm)
- DefineToolbarIcon(menu_revert_xpm)
- DefineToolbarIcon(menu_export_xpm)
- DefineToolbarIcon(menu_import_xpm)
- DefineToolbarIcon(menu_print_setup_xpm)
- DefineToolbarIcon(menu_file_properties_xpm)
- DefineToolbarIcon(menu_close_xpm)
- DefineToolbarIcon(menu_search_xpm)
- DefineToolbarIcon(menu_search_replace_xpm)
- DefineToolbarIcon(menu_delete_xpm)
- DefineToolbarIcon(menu_jump_to_xpm)
- DefineToolbarIcon(menu_preferences_xpm)
- DefineToolbarIcon(menu_exec_xpm)
- DefineToolbarIcon(menu_book_xpm)
- DefineToolbarIcon(menu_delete_table_xpm)
- DefineToolbarIcon(menu_font_xpm)
- DefineToolbarIcon(menu_credits_xpm)
- DefineToolbarIcon(menu_about_xpm)
// these are specific to one or more translations
Received on Thu May 17 13:26:14 2007
This archive was generated by hypermail 2.1.8 : Thu May 17 2007 - 13:26:15 CEST