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:
@@ -1,5 +1,5 @@
|
|||||||
#include "CharacterSet.h"
|
#include "CharacterSet.h"
|
||||||
#include "UTF8.h"
|
#include "Font.h"
|
||||||
#include <strings.h>
|
#include <strings.h>
|
||||||
|
|
||||||
CharacterSet::CharacterSet()
|
CharacterSet::CharacterSet()
|
||||||
@@ -16,12 +16,21 @@ CharacterSet::CharacterSet()
|
|||||||
CharacterSetRoster::CharacterSetRoster()
|
CharacterSetRoster::CharacterSetRoster()
|
||||||
{
|
{
|
||||||
// this information should be loaded from a file
|
// this information should be loaded from a file
|
||||||
character_sets_count = 10;
|
character_sets_count = 11;
|
||||||
character_sets = new (CharacterSet*)[character_sets_count];
|
character_sets = new (CharacterSet*)[character_sets_count];
|
||||||
CharacterSet * cs;
|
CharacterSet * cs;
|
||||||
{
|
{
|
||||||
cs = new CharacterSet();
|
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;
|
cs->MIBenum = 4;
|
||||||
strcpy(cs->print_name,"Latin 1");
|
strcpy(cs->print_name,"Latin 1");
|
||||||
strcpy(cs->iana_name,"ISO_8859-1:1987");
|
strcpy(cs->iana_name,"ISO_8859-1:1987");
|
||||||
@@ -39,7 +48,7 @@ CharacterSetRoster::CharacterSetRoster()
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
cs = new CharacterSet();
|
cs = new CharacterSet();
|
||||||
cs->id = B_ISO2_CONVERSION;
|
cs->id = B_ISO_8859_2;
|
||||||
cs->MIBenum = 5;
|
cs->MIBenum = 5;
|
||||||
strcpy(cs->print_name,"Latin 2");
|
strcpy(cs->print_name,"Latin 2");
|
||||||
strcpy(cs->iana_name,"ISO_8859-2:1987");
|
strcpy(cs->iana_name,"ISO_8859-2:1987");
|
||||||
@@ -55,7 +64,7 @@ CharacterSetRoster::CharacterSetRoster()
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
cs = new CharacterSet();
|
cs = new CharacterSet();
|
||||||
cs->id = B_ISO3_CONVERSION;
|
cs->id = B_ISO_8859_3;
|
||||||
cs->MIBenum = 6;
|
cs->MIBenum = 6;
|
||||||
strcpy(cs->print_name,"Latin 3");
|
strcpy(cs->print_name,"Latin 3");
|
||||||
strcpy(cs->iana_name,"ISO_8859-3:1988");
|
strcpy(cs->iana_name,"ISO_8859-3:1988");
|
||||||
@@ -72,7 +81,7 @@ CharacterSetRoster::CharacterSetRoster()
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
cs = new CharacterSet();
|
cs = new CharacterSet();
|
||||||
cs->id = B_ISO4_CONVERSION;
|
cs->id = B_ISO_8859_4;
|
||||||
cs->MIBenum = 7;
|
cs->MIBenum = 7;
|
||||||
strcpy(cs->print_name,"Latin 4");
|
strcpy(cs->print_name,"Latin 4");
|
||||||
strcpy(cs->iana_name,"ISO_8859-4:1988");
|
strcpy(cs->iana_name,"ISO_8859-4:1988");
|
||||||
@@ -88,7 +97,7 @@ CharacterSetRoster::CharacterSetRoster()
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
cs = new CharacterSet();
|
cs = new CharacterSet();
|
||||||
cs->id = B_ISO5_CONVERSION;
|
cs->id = B_ISO_8859_5;
|
||||||
cs->MIBenum = 8;
|
cs->MIBenum = 8;
|
||||||
strcpy(cs->print_name,"Cyrillic");
|
strcpy(cs->print_name,"Cyrillic");
|
||||||
strcpy(cs->iana_name,"ISO_8859-5:1988");
|
strcpy(cs->iana_name,"ISO_8859-5:1988");
|
||||||
@@ -103,7 +112,7 @@ CharacterSetRoster::CharacterSetRoster()
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
cs = new CharacterSet();
|
cs = new CharacterSet();
|
||||||
cs->id = B_ISO6_CONVERSION;
|
cs->id = B_ISO_8859_6;
|
||||||
cs->MIBenum = 9;
|
cs->MIBenum = 9;
|
||||||
strcpy(cs->print_name,"Arabic");
|
strcpy(cs->print_name,"Arabic");
|
||||||
strcpy(cs->iana_name,"ISO_8859-6:1987");
|
strcpy(cs->iana_name,"ISO_8859-6:1987");
|
||||||
@@ -120,7 +129,7 @@ CharacterSetRoster::CharacterSetRoster()
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
cs = new CharacterSet();
|
cs = new CharacterSet();
|
||||||
cs->id = B_ISO7_CONVERSION;
|
cs->id = B_ISO_8859_7;
|
||||||
cs->MIBenum = 10;
|
cs->MIBenum = 10;
|
||||||
strcpy(cs->print_name,"Greek");
|
strcpy(cs->print_name,"Greek");
|
||||||
strcpy(cs->iana_name,"ISO_8859-7:1987");
|
strcpy(cs->iana_name,"ISO_8859-7:1987");
|
||||||
@@ -138,7 +147,7 @@ CharacterSetRoster::CharacterSetRoster()
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
cs = new CharacterSet();
|
cs = new CharacterSet();
|
||||||
cs->id = B_ISO8_CONVERSION;
|
cs->id = B_ISO_8859_8;
|
||||||
cs->MIBenum = 11;
|
cs->MIBenum = 11;
|
||||||
strcpy(cs->print_name,"Hebrew");
|
strcpy(cs->print_name,"Hebrew");
|
||||||
strcpy(cs->iana_name,"ISO_8859-8:1988");
|
strcpy(cs->iana_name,"ISO_8859-8:1988");
|
||||||
@@ -153,7 +162,7 @@ CharacterSetRoster::CharacterSetRoster()
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
cs = new CharacterSet();
|
cs = new CharacterSet();
|
||||||
cs->id = B_ISO9_CONVERSION;
|
cs->id = B_ISO_8859_9;
|
||||||
cs->MIBenum = 12;
|
cs->MIBenum = 12;
|
||||||
strcpy(cs->print_name,"Latin 5");
|
strcpy(cs->print_name,"Latin 5");
|
||||||
strcpy(cs->iana_name,"ISO_8859-9:1989");
|
strcpy(cs->iana_name,"ISO_8859-9:1989");
|
||||||
@@ -169,7 +178,7 @@ CharacterSetRoster::CharacterSetRoster()
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
cs = new CharacterSet();
|
cs = new CharacterSet();
|
||||||
cs->id = B_ISO10_CONVERSION;
|
cs->id = B_ISO_8859_10;
|
||||||
cs->MIBenum = 12;
|
cs->MIBenum = 12;
|
||||||
strcpy(cs->print_name,"Latin 6");
|
strcpy(cs->print_name,"Latin 6");
|
||||||
strcpy(cs->iana_name,"ISO_8859-10");
|
strcpy(cs->iana_name,"ISO_8859-10");
|
||||||
@@ -209,13 +218,13 @@ CharacterSetRoster::CurrentRoster()
|
|||||||
const CharacterSet *
|
const CharacterSet *
|
||||||
CharacterSetRoster::FindCharacterSetByFontID(uint32 id)
|
CharacterSetRoster::FindCharacterSetByFontID(uint32 id)
|
||||||
{
|
{
|
||||||
return character_sets[id - 1];
|
return character_sets[id];
|
||||||
}
|
}
|
||||||
|
|
||||||
const CharacterSet *
|
const CharacterSet *
|
||||||
CharacterSetRoster::FindCharacterSetByConversionID(uint32 id)
|
CharacterSetRoster::FindCharacterSetByConversionID(uint32 id)
|
||||||
{
|
{
|
||||||
return character_sets[id];
|
return character_sets[id+1];
|
||||||
}
|
}
|
||||||
|
|
||||||
const CharacterSet *
|
const CharacterSet *
|
||||||
|
|||||||
@@ -16,10 +16,10 @@ class CharacterSetRoster;
|
|||||||
class CharacterSet {
|
class CharacterSet {
|
||||||
public:
|
public:
|
||||||
//! returns an id suitable for use in BFont::SetEncoding
|
//! 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
|
//! 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
|
//! returns an id for use in MIBs to identify coded character sets
|
||||||
uint32 GetMIBenum() const { return MIBenum; }
|
uint32 GetMIBenum() const { return MIBenum; }
|
||||||
@@ -70,6 +70,7 @@ public:
|
|||||||
const CharacterSet * FindCharacterSetByMIBenum(uint32 MIBenum);
|
const CharacterSet * FindCharacterSetByMIBenum(uint32 MIBenum);
|
||||||
const CharacterSet * FindCharacterSetByPrintName(char * name);
|
const CharacterSet * FindCharacterSetByPrintName(char * name);
|
||||||
const CharacterSet * FindCharacterSetByName(char * name);
|
const CharacterSet * FindCharacterSetByName(char * name);
|
||||||
|
const CharacterSet * GetCharacterSet(uint32 index) { return character_sets[index]; }
|
||||||
uint32 GetCharacterSetCount() const { return character_sets_count; }
|
uint32 GetCharacterSetCount() const { return character_sets_count; }
|
||||||
private:
|
private:
|
||||||
CharacterSet ** character_sets;
|
CharacterSet ** character_sets;
|
||||||
|
|||||||
@@ -278,6 +278,8 @@ StyledEditWindow::InitWindow()
|
|||||||
/***************************MENUS ADDED***********************/
|
/***************************MENUS ADDED***********************/
|
||||||
|
|
||||||
fSavePanel = 0; // build lazily
|
fSavePanel = 0; // build lazily
|
||||||
|
fSavePanelEncodingMenu = 0; // build lazily
|
||||||
|
fSaveAsEncoding = 0; // default UTF-8
|
||||||
} /***StyledEditWindow::Initwindow()***/
|
} /***StyledEditWindow::Initwindow()***/
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -605,6 +607,15 @@ StyledEditWindow::MessageReceived(BMessage *message)
|
|||||||
// clear flags
|
// clear flags
|
||||||
}
|
}
|
||||||
break;
|
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:
|
default:
|
||||||
BWindow::MessageReceived(message);
|
BWindow::MessageReceived(message);
|
||||||
break;
|
break;
|
||||||
@@ -858,8 +869,8 @@ StyledEditWindow::SaveAs()
|
|||||||
status_t status = B_OK;
|
status_t status = B_OK;
|
||||||
CharacterSetRoster * roster = CharacterSetRoster::Roster(&status);
|
CharacterSetRoster * roster = CharacterSetRoster::Roster(&status);
|
||||||
if (status == B_OK) {
|
if (status == B_OK) {
|
||||||
for (int id = 0; (id < roster->GetCharacterSetCount()) ; id++) {
|
for (int index = 0; (index < roster->GetCharacterSetCount()) ; index++) {
|
||||||
const CharacterSet * cs = roster->FindCharacterSetByConversionID(id);
|
const CharacterSet * cs = roster->GetCharacterSet(index);
|
||||||
BString name(cs->GetPrintName());
|
BString name(cs->GetPrintName());
|
||||||
name.Append(" (");
|
name.Append(" (");
|
||||||
name.Append(cs->GetMIMEName());
|
name.Append(cs->GetMIMEName());
|
||||||
@@ -867,6 +878,9 @@ StyledEditWindow::SaveAs()
|
|||||||
BMenuItem * item = new BMenuItem(name.String(),new BMessage(SAVE_AS_ENCODING));
|
BMenuItem * item = new BMenuItem(name.String(),new BMessage(SAVE_AS_ENCODING));
|
||||||
item->SetTarget(this);
|
item->SetTarget(this);
|
||||||
fSavePanelEncodingMenu->AddItem(item);
|
fSavePanelEncodingMenu->AddItem(item);
|
||||||
|
if (index == fSaveAsEncoding) {
|
||||||
|
item->SetMarked(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -97,6 +97,8 @@ private:
|
|||||||
BFilePanel *fSavePanel;
|
BFilePanel *fSavePanel;
|
||||||
BTextControl *fSavePanelTextView;
|
BTextControl *fSavePanelTextView;
|
||||||
BMenu *fSavePanelEncodingMenu;
|
BMenu *fSavePanelEncodingMenu;
|
||||||
|
|
||||||
|
uint32 fSaveAsEncoding;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user