зеркало из https://github.com/mozilla/gecko-dev.git
328 строки
9.0 KiB
C++
328 строки
9.0 KiB
C++
|
/* $Id: icons.cpp,v 1.1 1998/09/25 18:01:34 ramiro%netscape.com Exp $
|
||
|
*
|
||
|
* The contents of this file are subject to the Netscape Public License
|
||
|
* Version 1.0 (the "NPL"); you may not use this file except in
|
||
|
* compliance with the NPL. You may obtain a copy of the NPL at
|
||
|
* http://www.mozilla.org/NPL/
|
||
|
*
|
||
|
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||
|
* for the specific language governing rights and limitations under the
|
||
|
* NPL.
|
||
|
*
|
||
|
* The Initial Developer of this code under the NPL is Arnt
|
||
|
* Gulbrandsen. Further developed by Warwick Allison, Kalle Dalheimer,
|
||
|
* Eirik Eng, Matthias Ettrich, Arnt Gulbrandsen, Haavard Nord and
|
||
|
* Paul Olav Tvete. Copyright (C) 1998 Warwick Allison, Kalle
|
||
|
* Dalheimer, Eirik Eng, Matthias Ettrich, Arnt Gulbrandsen, Haavard
|
||
|
* Nord and Paul Olav Tvete. All Rights Reserved.
|
||
|
*/
|
||
|
|
||
|
#include "icons.h"
|
||
|
|
||
|
#include <qapp.h>
|
||
|
#include <qdict.h>
|
||
|
#include <qregexp.h>
|
||
|
|
||
|
#include "il_icons.h"
|
||
|
|
||
|
RCSTAG("$Id: icons.cpp,v 1.1 1998/09/25 18:01:34 ramiro%netscape.com Exp $");
|
||
|
|
||
|
// generated file with heaps of icons
|
||
|
#include "icon-pixmaps.inc"
|
||
|
|
||
|
/*
|
||
|
Extracted wisdom of the ancients, mapping IL_ constants to file names.
|
||
|
|
||
|
This is generated from xfe/icons.c by a quick-and-dirty Perl
|
||
|
script and massaged by hand. We put this in the source code
|
||
|
since we do not want to depend on xfe/ files.
|
||
|
*/
|
||
|
static struct {
|
||
|
unsigned int code;
|
||
|
const char *name;
|
||
|
} icon_map_vec[] = {
|
||
|
{IL_IMAGE_DELAYED, "IReplace"},
|
||
|
{IL_IMAGE_NOT_FOUND, "IconUnknown"},
|
||
|
{IL_IMAGE_BAD_DATA, "IBad"},
|
||
|
{IL_IMAGE_EMBED, "IconUnknown"},
|
||
|
{IL_IMAGE_INSECURE, "SEC_Replace"},
|
||
|
#if 0
|
||
|
{IL_ICON_DESKTOP_NAVIGATOR, "Desk_Navigator"},
|
||
|
{IL_ICON_DESKTOP_MSGCENTER, "Desk_MsgCenter"},
|
||
|
{IL_ICON_DESKTOP_ABOOK, "Desk_Address"},
|
||
|
{IL_ICON_DESKTOP_BOOKMARK, "Desk_Bookmark"},
|
||
|
{IL_ICON_DESKTOP_NOMAIL, "Desk_Messenger"},
|
||
|
{IL_ICON_DESKTOP_YESMAIL, "Desk_NewMail"},
|
||
|
{IL_ICON_DESKTOP_NEWS, "Desk_Collabra"},
|
||
|
{IL_ICON_DESKTOP_MSGCOMPOSE, "Desk_MsgCompose"},
|
||
|
{IL_ICON_DESKTOP_EDITOR, "Desk_Composer"},
|
||
|
{IL_ICON_DESKTOP_COMMUNICATOR, "Desk_Communicator"},
|
||
|
{IL_ICON_DESKTOP_HISTORY, "Desk_History"},
|
||
|
{IL_ICON_DESKTOP_SEARCH, "Desk_Search"},
|
||
|
{IL_ICON_DESKTOP_JAVACONSOLE, "Desk_JavaConsole"},
|
||
|
#endif
|
||
|
{IL_GOPHER_TEXT, "GText"},
|
||
|
{IL_GOPHER_IMAGE, "GImage"},
|
||
|
{IL_GOPHER_BINARY, "GBinary"},
|
||
|
{IL_GOPHER_SOUND, "GAudio"},
|
||
|
{IL_GOPHER_MOVIE, "GMovie"},
|
||
|
{IL_GOPHER_FOLDER, "GFolder"},
|
||
|
{IL_GOPHER_SEARCHABLE, "GFind"},
|
||
|
{IL_GOPHER_TELNET, "GTelnet"},
|
||
|
{IL_GOPHER_UNKNOWN, "GUnknown"},
|
||
|
#if 0
|
||
|
{IL_EDITOR_NEW, "ed_new"},
|
||
|
{IL_EDITOR_NEW_GREY, "ed_new.i"},
|
||
|
{IL_EDITOR_OPEN, "ed_open"},
|
||
|
{IL_EDITOR_OPEN_GREY, "ed_open.i"},
|
||
|
{IL_EDITOR_SAVE, "ed_save"},
|
||
|
{IL_EDITOR_SAVE_GREY, "ed_save.i"},
|
||
|
{IL_EDITOR_BROWSE, "ed_browse"},
|
||
|
{IL_EDITOR_BROWSE_GREY, "ed_browse.i"},
|
||
|
{IL_EDITOR_CUT, "ed_cut"},
|
||
|
{IL_EDITOR_CUT_GREY, "ed_cut.i"},
|
||
|
{IL_EDITOR_COPY, "ed_copy"},
|
||
|
{IL_EDITOR_COPY_GREY, "ed_copy.i"},
|
||
|
{IL_EDITOR_PASTE, "ed_paste"},
|
||
|
{IL_EDITOR_PASTE_GREY, "ed_paste.i"},
|
||
|
{IL_EDITOR_PRINT, "ed_print"},
|
||
|
{IL_EDITOR_PRINT_GREY, "ed_print.i"},
|
||
|
{IL_EDITOR_FIND, "ed_find"},
|
||
|
{IL_EDITOR_FIND_GREY, "ed_find.i"},
|
||
|
{IL_EDITOR_PUBLISH, "ed_publish"},
|
||
|
{IL_EDITOR_PUBLISH_GREY, "ed_publish.i"},
|
||
|
{IL_ICON_BACK_GREY, "TB_Back.i"},
|
||
|
{IL_ICON_LOAD_GREY, "TB_LoadImages.i"},
|
||
|
{IL_ICON_FWD_GREY, "TB_Forward.i"},
|
||
|
{IL_ICON_STOP_GREY, "TB_Stop.i"},
|
||
|
{IL_ALIGN4_RAISED, "ImgB2B_r"},
|
||
|
{IL_ALIGN5_RAISED, "ImgB2D_r"},
|
||
|
{IL_ALIGN3_RAISED, "ImgC2B_r"},
|
||
|
{IL_ALIGN2_RAISED, "ImgC2C_r"},
|
||
|
{IL_ALIGN7_RAISED, "ImgWL_r"},
|
||
|
{IL_ALIGN6_RAISED, "ImgWR_r"},
|
||
|
{IL_ALIGN1_RAISED, "ImgT2T_r"},
|
||
|
{IL_EDITOR_NEW_PT, "ed_new_pt"},
|
||
|
{IL_EDITOR_OPEN_PT, "ed_open_pt"},
|
||
|
{IL_EDITOR_SAVE_PT, "ed_save_pt"},
|
||
|
{IL_EDITOR_BROWSE_PT, "ed_browse_pt"},
|
||
|
{IL_EDITOR_CUT_PT, "ed_cut_pt"},
|
||
|
{IL_EDITOR_COPY_PT, "ed_copy_pt"},
|
||
|
{IL_EDITOR_PASTE_PT, "ed_paste_pt"},
|
||
|
{IL_EDITOR_PRINT_PT, "ed_print_pt"},
|
||
|
{IL_EDITOR_FIND_PT, "ed_find_pt"},
|
||
|
{IL_EDITOR_PUBLISH_PT, "ed_publish_pt"},
|
||
|
{IL_EDITOR_NEW_PT_GREY, "ed_new_pt.i"},
|
||
|
{IL_EDITOR_OPEN_PT_GREY, "ed_open_pt.i"},
|
||
|
{IL_EDITOR_SAVE_PT_GREY, "ed_save_pt.i"},
|
||
|
{IL_EDITOR_BROWSE_PT_GREY, "ed_browse_pt.i"},
|
||
|
{IL_EDITOR_CUT_PT_GREY, "ed_cut_pt.i"},
|
||
|
{IL_EDITOR_COPY_PT_GREY, "ed_copy_pt.i"},
|
||
|
{IL_EDITOR_PASTE_PT_GREY, "ed_paste_pt.i"},
|
||
|
{IL_EDITOR_PRINT_PT_GREY, "ed_print_pt.i"},
|
||
|
{IL_EDITOR_FIND_PT_GREY, "ed_find_pt.i"},
|
||
|
{IL_EDITOR_PUBLISH_PT_GREY, "ed_publish_pt.i"},
|
||
|
{IL_ICON_BACK_GREY, "TB_Back.i"},
|
||
|
{IL_ICON_LOAD_GREY, "TB_LoadImages.i"},
|
||
|
{IL_ICON_FWD_GREY, "TB_Forward.i"},
|
||
|
{IL_ICON_STOP_GREY, "TB_Stop.i"},
|
||
|
{IL_EDITOR_BOLD, "ed_bold"},
|
||
|
{IL_EDITOR_BULLET, "ed_bullet"},
|
||
|
{IL_EDITOR_CENTER, "ed_center"},
|
||
|
{IL_EDITOR_CLEAR, "ed_clear"},
|
||
|
{IL_EDITOR_COLOR, "ed_color"},
|
||
|
{IL_EDITOR_FIXED, "ed_fixed"},
|
||
|
{IL_EDITOR_GROW, "ed_grow"},
|
||
|
{IL_EDITOR_GROW_GREY, "ed_grow.i"},
|
||
|
{IL_EDITOR_HRULE, "ed_hrule"},
|
||
|
{IL_EDITOR_IMAGE, "ed.image"},
|
||
|
{IL_EDITOR_INDENT, "ed.indent"},
|
||
|
{IL_EDITOR_ITALIC, "ed.italic"},
|
||
|
{IL_EDITOR_LEFT, "ed_left"},
|
||
|
{IL_EDITOR_LINK, "ed_link"},
|
||
|
{IL_EDITOR_NUMBER, "ed_number"},
|
||
|
{IL_EDITOR_OUTDENT, "ed_outdent"},
|
||
|
{IL_EDITOR_PROPS, "ed_props"},
|
||
|
{IL_EDITOR_RIGHT, "ed_right"},
|
||
|
{IL_EDITOR_SHRINK, "ed_shrink"},
|
||
|
{IL_EDITOR_SHRINK_GREY, "ed_shrink.i"},
|
||
|
{IL_EDITOR_TARGET, "ed_target"},
|
||
|
{IL_EDITOR_TABLE, "ed_table"},
|
||
|
#endif
|
||
|
{IL_EDIT_UNSUPPORTED_TAG, "ed_tag"},
|
||
|
{IL_EDIT_UNSUPPORTED_END_TAG, "ed_tage"},
|
||
|
{IL_EDIT_FORM_ELEMENT, "ed_form"},
|
||
|
{IL_EDIT_NAMED_ANCHOR, "ed_target"},
|
||
|
{IL_SA_SIGNED, "A_Signed"},
|
||
|
{IL_SA_ENCRYPTED, "A_Encrypt"},
|
||
|
{IL_SA_NONENCRYPTED, "A_NoEncrypt"},
|
||
|
{IL_SA_SIGNED_BAD, "A_SignBad"},
|
||
|
{IL_SA_ENCRYPTED_BAD, "A_EncrypBad"},
|
||
|
{IL_SMIME_ATTACHED, "M_Attach"},
|
||
|
{IL_SMIME_SIGNED, "M_Signed"},
|
||
|
{IL_SMIME_ENCRYPTED, "M_Encrypt"},
|
||
|
{IL_SMIME_ENC_SIGNED, "M_SignEncyp"},
|
||
|
{IL_SMIME_SIGNED_BAD, "M_SignBad"},
|
||
|
{IL_SMIME_ENCRYPTED_BAD, "M_EncrypBad"},
|
||
|
{IL_SMIME_ENC_SIGNED_BAD, "M_SgnEncypBad"},
|
||
|
{IL_MSG_ATTACH, "M_ToggleAttach"},
|
||
|
{0, 0 }
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
static QDict<QIconSet> * icons = 0;
|
||
|
static QDict<QPixmap> * pixmaps = 0;
|
||
|
|
||
|
static const char *map_il_to_filename[IL_MSG_LAST+1];
|
||
|
|
||
|
static void clean()
|
||
|
{
|
||
|
delete icons;
|
||
|
icons = 0;
|
||
|
delete pixmaps;
|
||
|
pixmaps = 0;
|
||
|
}
|
||
|
|
||
|
|
||
|
static void make()
|
||
|
{
|
||
|
if ( !icons ) {
|
||
|
qAddPostRoutine( clean );
|
||
|
icons = new QDict<QIconSet>( 129 );
|
||
|
icons->setAutoDelete( TRUE );
|
||
|
pixmaps = new QDict<QPixmap>( 129 );
|
||
|
pixmaps->setAutoDelete( TRUE );
|
||
|
int i = 0;
|
||
|
while ( icon_map_vec[i].name ) {
|
||
|
map_il_to_filename[icon_map_vec[i].code] = icon_map_vec[i].name;
|
||
|
i++;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
static int look( const char * name )
|
||
|
{
|
||
|
int i = 0;
|
||
|
QString tmp;
|
||
|
tmp.sprintf( "/%s.gif$", name );
|
||
|
QRegExp r( tmp );
|
||
|
while( embed_vec[i].size && r.match( embed_vec[i].name ) < 0 )
|
||
|
i++;
|
||
|
if ( embed_vec[i].size )
|
||
|
return i;
|
||
|
return -1;
|
||
|
}
|
||
|
|
||
|
static int find( const char * name )
|
||
|
{
|
||
|
int i = look( name );
|
||
|
if ( i < 0 )
|
||
|
fatal( "could not find icon/movie '%s'", name );
|
||
|
return i;
|
||
|
}
|
||
|
|
||
|
static QIconSet findIconSet( const char * name )
|
||
|
{
|
||
|
make();
|
||
|
|
||
|
QIconSet * s = icons->find( name );
|
||
|
if ( s )
|
||
|
return *s;
|
||
|
|
||
|
int i = find( name );
|
||
|
QPixmap pm;
|
||
|
pm.loadFromData( embed_vec[i].data, embed_vec[i].size );
|
||
|
s = new QIconSet( pm, QIconSet::Large );
|
||
|
|
||
|
// .i
|
||
|
QString add;
|
||
|
add = name;
|
||
|
add += ".i";
|
||
|
i = find( add );
|
||
|
pm.loadFromData( embed_vec[i].data, embed_vec[i].size );
|
||
|
s->setPixmap( pm, QIconSet::Large, QIconSet::Disabled );
|
||
|
|
||
|
// .mo
|
||
|
add = name;
|
||
|
add += ".mo";
|
||
|
i = find( add );
|
||
|
pm.loadFromData( embed_vec[i].data, embed_vec[i].size );
|
||
|
s->setPixmap( pm, QIconSet::Large, QIconSet::Active );
|
||
|
|
||
|
icons->insert( name, s );
|
||
|
return *s;
|
||
|
}
|
||
|
|
||
|
|
||
|
Icon::Icon( const char * name )
|
||
|
: QIconSet( findIconSet( name ) )
|
||
|
{
|
||
|
// nothing
|
||
|
}
|
||
|
|
||
|
|
||
|
static QPixmap findPixmap( const char * name )
|
||
|
{
|
||
|
make();
|
||
|
|
||
|
QPixmap * pm = pixmaps->find( name );
|
||
|
if ( pm )
|
||
|
return *pm;
|
||
|
|
||
|
int i = look( name );
|
||
|
if ( i < 0 )
|
||
|
i = look( "IconUnknown" );
|
||
|
|
||
|
|
||
|
pm = new QPixmap();
|
||
|
if ( i >= 0 )
|
||
|
pm->loadFromData( embed_vec[i].data, embed_vec[i].size );
|
||
|
else
|
||
|
pm->fill( red );
|
||
|
pixmaps->insert( name, pm );
|
||
|
return *pm;
|
||
|
}
|
||
|
|
||
|
static QPixmap findPixmap( int il_id )
|
||
|
{
|
||
|
make();
|
||
|
const char *s = map_il_to_filename[il_id];
|
||
|
if ( !s )
|
||
|
s = "IconUnknown.gif";
|
||
|
return findPixmap( s );
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
Pixmap::Pixmap( const char * name )
|
||
|
: QPixmap( findPixmap( name ) )
|
||
|
{
|
||
|
|
||
|
}
|
||
|
|
||
|
Pixmap::Pixmap( int il_id )
|
||
|
: QPixmap( findPixmap( il_id ) )
|
||
|
{
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
static QByteArray * findMovie( const char * name )
|
||
|
{
|
||
|
int i = find( name );
|
||
|
QByteArray * a = new QByteArray();
|
||
|
a->setRawData( (const char *)(embed_vec[i].data), embed_vec[i].size );
|
||
|
return a;
|
||
|
}
|
||
|
|
||
|
|
||
|
Movie::Movie( const char * name )
|
||
|
: QMovie( *findMovie( name ) )
|
||
|
{
|
||
|
// nothing
|
||
|
}
|