From 0b2e176dc0e6d07f3a383d777bb46ec08c7e74c2 Mon Sep 17 00:00:00 2001 From: shatty Date: Sat, 5 Jul 2003 01:17:02 +0000 Subject: [PATCH] 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 --- src/apps/stylededit/CharacterSet.cpp | 37 +++++++++++++++--------- src/apps/stylededit/CharacterSet.h | 5 ++-- src/apps/stylededit/StyledEditWindow.cpp | 18 ++++++++++-- src/apps/stylededit/StyledEditWindow.h | 2 ++ 4 files changed, 44 insertions(+), 18 deletions(-) diff --git a/src/apps/stylededit/CharacterSet.cpp b/src/apps/stylededit/CharacterSet.cpp index ce76a620e5..80d10007de 100644 --- a/src/apps/stylededit/CharacterSet.cpp +++ b/src/apps/stylededit/CharacterSet.cpp @@ -1,5 +1,5 @@ #include "CharacterSet.h" -#include "UTF8.h" +#include "Font.h" #include 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 * diff --git a/src/apps/stylededit/CharacterSet.h b/src/apps/stylededit/CharacterSet.h index ad38f3d605..e6774e83f8 100644 --- a/src/apps/stylededit/CharacterSet.h +++ b/src/apps/stylededit/CharacterSet.h @@ -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; diff --git a/src/apps/stylededit/StyledEditWindow.cpp b/src/apps/stylededit/StyledEditWindow.cpp index 208b7b90fd..1fc6da3cf5 100644 --- a/src/apps/stylededit/StyledEditWindow.cpp +++ b/src/apps/stylededit/StyledEditWindow.cpp @@ -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); + } } } } diff --git a/src/apps/stylededit/StyledEditWindow.h b/src/apps/stylededit/StyledEditWindow.h index a140fb72dc..47d0d0902e 100644 --- a/src/apps/stylededit/StyledEditWindow.h +++ b/src/apps/stylededit/StyledEditWindow.h @@ -97,6 +97,8 @@ private: BFilePanel *fSavePanel; BTextControl *fSavePanelTextView; BMenu *fSavePanelEncodingMenu; + + uint32 fSaveAsEncoding; };