second encodings menu up for save as with field

git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3853 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
shatty 2003-07-05 01:17:02 +00:00
parent e6903129a7
commit 0b2e176dc0
4 changed files with 44 additions and 18 deletions

View File

@ -1,5 +1,5 @@
#include "CharacterSet.h"
#include "UTF8.h"
#include "Font.h"
#include <strings.h>
CharacterSet::CharacterSet()
@ -16,12 +16,21 @@ CharacterSet::CharacterSet()
CharacterSetRoster::CharacterSetRoster()
{
// this information should be loaded from a file
character_sets_count = 10;
character_sets_count = 11;
character_sets = new (CharacterSet*)[character_sets_count];
CharacterSet * cs;
{
cs = new CharacterSet();
cs->id = B_ISO1_CONVERSION; // a.k.a. 0
cs->id = B_UNICODE_UTF8; // a.k.a. 0
cs->MIBenum = 106;
strcpy(cs->print_name,"Unicode");
strcpy(cs->iana_name,"UTF-8");
cs->mime_name = cs->iana_name;
character_sets[cs->id] = cs;
}
{
cs = new CharacterSet();
cs->id = B_ISO_8859_1;
cs->MIBenum = 4;
strcpy(cs->print_name,"Latin 1");
strcpy(cs->iana_name,"ISO_8859-1:1987");
@ -39,7 +48,7 @@ CharacterSetRoster::CharacterSetRoster()
}
{
cs = new CharacterSet();
cs->id = B_ISO2_CONVERSION;
cs->id = B_ISO_8859_2;
cs->MIBenum = 5;
strcpy(cs->print_name,"Latin 2");
strcpy(cs->iana_name,"ISO_8859-2:1987");
@ -55,7 +64,7 @@ CharacterSetRoster::CharacterSetRoster()
}
{
cs = new CharacterSet();
cs->id = B_ISO3_CONVERSION;
cs->id = B_ISO_8859_3;
cs->MIBenum = 6;
strcpy(cs->print_name,"Latin 3");
strcpy(cs->iana_name,"ISO_8859-3:1988");
@ -72,7 +81,7 @@ CharacterSetRoster::CharacterSetRoster()
}
{
cs = new CharacterSet();
cs->id = B_ISO4_CONVERSION;
cs->id = B_ISO_8859_4;
cs->MIBenum = 7;
strcpy(cs->print_name,"Latin 4");
strcpy(cs->iana_name,"ISO_8859-4:1988");
@ -88,7 +97,7 @@ CharacterSetRoster::CharacterSetRoster()
}
{
cs = new CharacterSet();
cs->id = B_ISO5_CONVERSION;
cs->id = B_ISO_8859_5;
cs->MIBenum = 8;
strcpy(cs->print_name,"Cyrillic");
strcpy(cs->iana_name,"ISO_8859-5:1988");
@ -103,7 +112,7 @@ CharacterSetRoster::CharacterSetRoster()
}
{
cs = new CharacterSet();
cs->id = B_ISO6_CONVERSION;
cs->id = B_ISO_8859_6;
cs->MIBenum = 9;
strcpy(cs->print_name,"Arabic");
strcpy(cs->iana_name,"ISO_8859-6:1987");
@ -120,7 +129,7 @@ CharacterSetRoster::CharacterSetRoster()
}
{
cs = new CharacterSet();
cs->id = B_ISO7_CONVERSION;
cs->id = B_ISO_8859_7;
cs->MIBenum = 10;
strcpy(cs->print_name,"Greek");
strcpy(cs->iana_name,"ISO_8859-7:1987");
@ -138,7 +147,7 @@ CharacterSetRoster::CharacterSetRoster()
}
{
cs = new CharacterSet();
cs->id = B_ISO8_CONVERSION;
cs->id = B_ISO_8859_8;
cs->MIBenum = 11;
strcpy(cs->print_name,"Hebrew");
strcpy(cs->iana_name,"ISO_8859-8:1988");
@ -153,7 +162,7 @@ CharacterSetRoster::CharacterSetRoster()
}
{
cs = new CharacterSet();
cs->id = B_ISO9_CONVERSION;
cs->id = B_ISO_8859_9;
cs->MIBenum = 12;
strcpy(cs->print_name,"Latin 5");
strcpy(cs->iana_name,"ISO_8859-9:1989");
@ -169,7 +178,7 @@ CharacterSetRoster::CharacterSetRoster()
}
{
cs = new CharacterSet();
cs->id = B_ISO10_CONVERSION;
cs->id = B_ISO_8859_10;
cs->MIBenum = 12;
strcpy(cs->print_name,"Latin 6");
strcpy(cs->iana_name,"ISO_8859-10");
@ -209,13 +218,13 @@ CharacterSetRoster::CurrentRoster()
const CharacterSet *
CharacterSetRoster::FindCharacterSetByFontID(uint32 id)
{
return character_sets[id - 1];
return character_sets[id];
}
const CharacterSet *
CharacterSetRoster::FindCharacterSetByConversionID(uint32 id)
{
return character_sets[id];
return character_sets[id+1];
}
const CharacterSet *

View File

@ -16,10 +16,10 @@ class CharacterSetRoster;
class CharacterSet {
public:
//! returns an id suitable for use in BFont::SetEncoding
uint32 GetFontID() const { return id + 1; }
uint32 GetFontID() const { return id; }
//! returns an id suitable for use in convert_to_utf8/convert_from_utf8
uint32 GetConversionID() const { return id; }
uint32 GetConversionID() const { return id - 1; }
//! returns an id for use in MIBs to identify coded character sets
uint32 GetMIBenum() const { return MIBenum; }
@ -70,6 +70,7 @@ public:
const CharacterSet * FindCharacterSetByMIBenum(uint32 MIBenum);
const CharacterSet * FindCharacterSetByPrintName(char * name);
const CharacterSet * FindCharacterSetByName(char * name);
const CharacterSet * GetCharacterSet(uint32 index) { return character_sets[index]; }
uint32 GetCharacterSetCount() const { return character_sets_count; }
private:
CharacterSet ** character_sets;

View File

@ -278,6 +278,8 @@ StyledEditWindow::InitWindow()
/***************************MENUS ADDED***********************/
fSavePanel = 0; // build lazily
fSavePanelEncodingMenu = 0; // build lazily
fSaveAsEncoding = 0; // default UTF-8
} /***StyledEditWindow::Initwindow()***/
void
@ -605,6 +607,15 @@ StyledEditWindow::MessageReceived(BMessage *message)
// clear flags
}
break;
/*********"Document"-menu*************/
case SAVE_AS_ENCODING:
void * ptr;
if (message->FindPointer("source",&ptr) == B_OK) {
if (fSavePanelEncodingMenu != 0) {
fSaveAsEncoding = (uint32)fSavePanelEncodingMenu->IndexOf((BMenuItem*)ptr);
}
}
break;
default:
BWindow::MessageReceived(message);
break;
@ -858,8 +869,8 @@ StyledEditWindow::SaveAs()
status_t status = B_OK;
CharacterSetRoster * roster = CharacterSetRoster::Roster(&status);
if (status == B_OK) {
for (int id = 0; (id < roster->GetCharacterSetCount()) ; id++) {
const CharacterSet * cs = roster->FindCharacterSetByConversionID(id);
for (int index = 0; (index < roster->GetCharacterSetCount()) ; index++) {
const CharacterSet * cs = roster->GetCharacterSet(index);
BString name(cs->GetPrintName());
name.Append(" (");
name.Append(cs->GetMIMEName());
@ -867,6 +878,9 @@ StyledEditWindow::SaveAs()
BMenuItem * item = new BMenuItem(name.String(),new BMessage(SAVE_AS_ENCODING));
item->SetTarget(this);
fSavePanelEncodingMenu->AddItem(item);
if (index == fSaveAsEncoding) {
item->SetMarked(true);
}
}
}
}

View File

@ -97,6 +97,8 @@ private:
BFilePanel *fSavePanel;
BTextControl *fSavePanelTextView;
BMenu *fSavePanelEncodingMenu;
uint32 fSaveAsEncoding;
};