From f825dfe3706e6ae97b9cf9b7a938b6306795ec6e Mon Sep 17 00:00:00 2001 From: shatty Date: Sun, 17 Aug 2003 14:06:18 +0000 Subject: [PATCH] first cut git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4293 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/prefs/filetypes/FileTypeView.cpp | 6 +- src/prefs/filetypes/FileTypeView.h | 2 +- src/prefs/filetypes/FileTypeWindow.cpp | 29 ++-- src/prefs/filetypes/FileTypes.icons.rdef | 166 +++++++++++++++++++++ src/prefs/filetypes/FileTypes.rdef | 13 ++ src/prefs/filetypes/FileTypes.version.rdef | 20 +++ src/prefs/filetypes/FileTypesApp.cpp | 106 +++++++++++++ src/prefs/filetypes/FileTypesApp.h | 29 ++++ src/prefs/filetypes/FileTypesConstants.h | 15 ++ src/prefs/filetypes/FileTypesView.cpp | 2 + src/prefs/filetypes/FileTypesView.h | 14 ++ src/prefs/filetypes/FileTypesWindow.cpp | 4 + src/prefs/filetypes/FileTypesWindow.h | 22 +++ src/prefs/filetypes/Jamfile | 16 ++ src/prefs/filetypes/main.cpp | 9 ++ 15 files changed, 438 insertions(+), 15 deletions(-) create mode 100644 src/prefs/filetypes/FileTypes.icons.rdef create mode 100644 src/prefs/filetypes/FileTypes.rdef create mode 100644 src/prefs/filetypes/FileTypes.version.rdef create mode 100644 src/prefs/filetypes/FileTypesApp.cpp create mode 100644 src/prefs/filetypes/FileTypesApp.h create mode 100644 src/prefs/filetypes/FileTypesConstants.h create mode 100644 src/prefs/filetypes/FileTypesView.cpp create mode 100644 src/prefs/filetypes/FileTypesView.h create mode 100644 src/prefs/filetypes/FileTypesWindow.cpp create mode 100644 src/prefs/filetypes/FileTypesWindow.h create mode 100644 src/prefs/filetypes/Jamfile create mode 100644 src/prefs/filetypes/main.cpp diff --git a/src/prefs/filetypes/FileTypeView.cpp b/src/prefs/filetypes/FileTypeView.cpp index 68ecca31f6..552963f3e1 100644 --- a/src/prefs/filetypes/FileTypeView.cpp +++ b/src/prefs/filetypes/FileTypeView.cpp @@ -30,7 +30,7 @@ FileTypeView::SetPreferredApplication(const char * preferredApplication) } bool -FileTypeView::Clean() +FileTypeView::IsClean() const { if (fFileType.Compare(GetFileType()) != 0) { return false; @@ -42,14 +42,14 @@ FileTypeView::Clean() } const char * -FileTypeView::GetFileType() +FileTypeView::GetFileType() const { // return from UI return ""; } const char * -FileTypeView::GetPreferredApplication() +FileTypeView::GetPreferredApplication() const { // return from UI return ""; diff --git a/src/prefs/filetypes/FileTypeView.h b/src/prefs/filetypes/FileTypeView.h index ba6c9aee42..fdde49002e 100644 --- a/src/prefs/filetypes/FileTypeView.h +++ b/src/prefs/filetypes/FileTypeView.h @@ -15,7 +15,7 @@ public: void SetFileType(const char * fileType); void SetPreferredApplication(const char * preferredApplication); - bool Clean() const; + bool IsClean() const; const char * GetFileType() const; const char * GetPreferredApplication() const; private: diff --git a/src/prefs/filetypes/FileTypeWindow.cpp b/src/prefs/filetypes/FileTypeWindow.cpp index 0da6b86802..4750c4af1d 100644 --- a/src/prefs/filetypes/FileTypeWindow.cpp +++ b/src/prefs/filetypes/FileTypeWindow.cpp @@ -1,4 +1,7 @@ +#include #include +#include +#include #include #include @@ -115,9 +118,9 @@ FileTypeWindow::SetEntries(BEntryList entries) BString title = SummarizeEntries(); title.Append(" File Type"); - SetTitle(title); + SetTitle(strdup(title.String())); - if (fEntries->Rewind() != B_OK) { + if (fEntries.Rewind() != B_OK) { return; } BString * fileType = 0; @@ -141,7 +144,7 @@ FileTypeWindow::SetEntries(BEntryList entries) if (fileType == 0) { fileType = new BString(string); } else if (fileType->Compare(string) != 0) { - fileType.SetTo(""); + fileType->SetTo(""); if (preferredApplication && (preferredApplication->Length() == 0)) { break; // stop now, don't waste time checking the rest } @@ -153,30 +156,34 @@ FileTypeWindow::SetEntries(BEntryList entries) if (preferredApplication == 0) { preferredApplication = new BString(string); } else if (preferredApplication->Compare(string) != 0) { - preferredApplication.SetTo(""); + preferredApplication->SetTo(""); if (fileType && (fileType->Length() == 0)) { break; // stop now, don't waste time checking the rest } } } } - fView->SetFileType(fileType.String()); - fView->SetPreferredApplication(preferredApplication.String()); - delete fileType; - delete preferredApplication; + if (fileType != 0) { + fView->SetFileType(fileType->String()); + delete fileType; + } + if (preferredApplication != 0) { + fView->SetPreferredApplication(preferredApplication->String()); + delete preferredApplication; + } } const char * FileTypeWindow::SummarizeEntries() { - if (fEntries->Rewind() != B_OK) { + if (fEntries.Rewind() != B_OK) { return ""; } const char * result = ""; dirent dent; - if (fEntries->GetNextDirents(&dent,sizeof(dirent),1) != 0) { + if (fEntries.GetNextDirents(&dent,sizeof(dirent),1) != 0) { result = strdup(dent.d_name); - if (fEntries->GetNextDirents(&dent,sizeof(dirent),1) != 0) { + if (fEntries.GetNextDirents(&dent,sizeof(dirent),1) != 0) { result = "[Multiple Files]"; } } diff --git a/src/prefs/filetypes/FileTypes.icons.rdef b/src/prefs/filetypes/FileTypes.icons.rdef new file mode 100644 index 0000000000..85a9319e7c --- /dev/null +++ b/src/prefs/filetypes/FileTypes.icons.rdef @@ -0,0 +1,166 @@ +/* +** FileTypes.icons.rdef +** +*/ + +resource(0, "BEOS:L:application/x-be-resource") #'ICON' array { + $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02020008FFFFFFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF041B17110802FFFFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF041B3F3F1B150800FFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF021B3F3F1B150A00FFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFF003F00FFFFFFFFFF04151B1B17110800FFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFF003FFD00FFFFFFFFFF02081515150A0800FFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFF003FFDFDFD00FFFFFF00F9000A0A080A00FFFFFFFFFFFFFFFFFF" + $"FFFFFFFFFF003FFDFDFDFD00FFFF003FF97D000000007D0000FFFFFFFFFFFFFF" + $"FFFFFFFF003FFDFDFDFDFDFD00FF00F93F3F7D7D7D7D7D7DF900FFFFFFFFFFFF" + $"FFFFFF003FFDFDFDFD62FDFD00FF00F9F9F93F3FF9F9F9F97D00FFFFFFFFFFFF" + $"FFFF003FFEFDFDFD62FDFDFDFA0000F9F9F9F9F93F3FF97D7D00FFFFFFFFFFFF" + $"FF003FFEFEFDFD89FDFDFDFDFA0000F9F9F9F9F9F9F97D7D7D00FFFFFFFFFFFF" + $"003FFEFEFEFDB0FD62FD62FDFAFA00F9F9F9F9F9F9F97D7D7D00FFFFFFFFFFFF" + $"FF003FFEFEB0FD89FD62FD62FAFA00F9F9F9F9F9F9F97D7D7D00FFFFFFFFFFFF" + $"FF003FFEB0FDB0FDB0FD62FAFAFAFA00F9F90000F9F97D7D7D00FFFFFFFFFFFF" + $"FFFF003FFEB0FDB0FDB0FDFAFA62FA000000606000007D7D7D00FFFFFFFFFFFF" + $"FFFF003FFEFDFDFD89FD62FD62FAFAFA00606060606000007D00FFFFFFFFFFFF" + $"FFFFFF003FFDFDB0FD89FD62FAFAFA0060606060606060600000FFFFFFFFFFFF" + $"FFFFFF003FFDFDFDB0FD89FAFAFA00606060606060606060606000FFFFFFFFFF" + $"FFFFFFFF003FFDB0FDB0FDFDFA006060606060606060606060D5000EFFFFFFFF" + $"FFFFFFFF003FFDFDB0FDFDFD003F60606060606060606060D5D5000EFFFFFFFF" + $"FFFFFFFFFF003FFDFDFDFDFD00AC3F3F60606060606060D5D5D5000E0E0EFFFF" + $"FFFFFFFFFF003FFDFDFDFDFD00ACACAC3F3F60606060D5D5D5D5000E0E0E0E0E" + $"FFFFFFFFFFFF003FFDFDFD0000ACACACACAC3F3F60D5D5D5D5D5000E0E0E0E0E" + $"FFFFFFFFFFFF003FFDFD000E00ACACACACACACACD5D5D5D5D5D5000E0E0E0EFF" + $"FFFFFFFFFFFFFF00FD000E0E00ACACACACACACACD5D5D5D5D5D5000E0E0EFFFF" + $"FFFFFFFFFFFFFFFF000E0E0E00ACACACACACACACD5D5D5D5D5000E0E0EFFFFFF" + $"FFFFFFFFFFFFFFFFFFFFFFFF00ACACACACACACACD5D5D5D5000E0E0EFFFFFFFF" + $"FFFFFFFFFFFFFFFFFFFFFFFFFF0000ACACACACACD5D5D5000E0E0EFFFFFFFFFF" + $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000ACACACD5D5000E0E0EFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000ACD5000E0E0EFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000E0E0EFFFFFFFFFFFFFFFF" +}; + +resource(1, "BEOS:L:application/octet-stream") #'ICON' array { + $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFFFFFFFF0060600000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFFFFFF0060606060600000FFFFFFFFFFFFFFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFFFF00603F603F603F603F0000FFFFFFFFFFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFF00603F603F603F603F603F600000FFFFFFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFF00603F3F3F3F3F3F3F3F3F3F3F3F3F0000FFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFF00603F603F603F603F603F603F603F603F3F0000FFFFFFFFFFFF" + $"FFFFFFFFFF00603F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F0000FFFFFFFF" + $"FFFFFFFF00603F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F0000FFFF" + $"FFFFFF00603F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F603F00FF" + $"FFFF00603F603F603F603F603F603F603F603F603F603F603F603F603F00FFFF" + $"FF00603F603F603F603F603F603F603F603F603F603F603F603F603F00AEAEAE" + $"00003F603F603F603F603F603F603F603F603F603F603F603F603F0000AEAEFF" + $"FFAE0000603F603F603F603F603F603F603F603F603F603F603F00AE8700AEFF" + $"FFFFAE0000006060606060606060606060601B60606060606000AE87870100AE" + $"FFFFFFAE00AE00006060606060606060606060601B60606000AE870000AEAEAE" + $"FFFFFFFFAE00AEAE00006087608760876087608760871B29AE0000AEAEFFFFFF" + $"FFFFFFFFFFAE0087AEAE000087878787878787878787010000AEAEFFFFFFFFFF" + $"FFFFFFFFFFFFAE008787AEAE0000878787878787870100AEAEFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFAE00608787AEAE0000AEAEAEAE00AEAEFFFFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFFAE0060608787AEAE0000AE00AEAEFFFFFFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFFFFAE00606060870000AE00AEAEFFFFFFFFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFFFFFFAE00600000AEAEAEAEAEFFFFFFFFFFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFFFFFFFFAE00AEAEFFFFFFAEFFFFFFFFFFFFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFFFFFFFFFFAEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" +}; + +resource large_icon array { + $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02020000FFFFFFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF041B17110802FFFFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF041B3F3F1B150800FFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF021B3F3F1B150A00FFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFF003F00FFFFFFFFFF04151B1B17110800FFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFF003FFD00FFFFFFFFFF02081515150A0800FFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFF003FFDFDFD00FFFFFF00F9000A0A080A00FFFFFFFFFFFFFFFFFF" + $"FFFFFFFFFF003FFDFDFDFD00FFFF003FF97D000000007D0000FFFFFFFFFFFFFF" + $"FFFFFFFF003FFDFDFDFDFDFD00FF00F93F3F7D7D7D7D7D7DF900FFFFFFFFFFFF" + $"FFFFFF003FFDFDFDFD62FDFD00FF00F9F9F93F3FF9F9F9F97D00FFFFFFFFFFFF" + $"FFFF003FFEFDFDFD62FDFDFDFA0000F9F9F9F9F93F3FF97D7D00FFFFFFFFFFFF" + $"FF003FFEFEFDFD89FDFDFDFDFA0000F9F9F9F9F9F9F97D7D7D00FFFFFFFFFFFF" + $"003FFEFEFEFDB0FD62FD62FD000000F9F9F9F9F9F9F97D7D7D00FFFFFFFFFFFF" + $"FF003FFEFEB0FD89FD62FD007B7B00F9F9F9F9F9F9F97D7D7D00FFFFFFFFFFFF" + $"FF003FFEB0FDB0FDB0FD6200DA7B7B00F9F90000F9F97D7D7D00FFFFFFFFFFFF" + $"FFFF003FFEB0FDB0FDB0002B2CDA7B000000606000007D7D7D00FFFFFFFFFFFF" + $"FFFF003FFEFDFDFD89FD002B2F2F00FA00606060606000007D00FFFFFFFFFFFF" + $"FFFFFF003FFDFDB0FD002B2CEB2F000060606060606060600000FFFFFFFFFFFF" + $"FFFFFF003FFDFDFDB0002B2F2F0000606060606060606060606000FFFFFFFFFF" + $"FFFFFFFF003FFDB0002B2CEB2F006060606060606060606060D5000EFFFFFFFF" + $"FFFF0000003FFDFD002B2F2F003F60606060606060606060D5D5000EFFFFFFFF" + $"FF007B7B7B003F002B2CEB2F00AC3F3F60606060606060D5D5D5000E0E0EFFFF" + $"007B7B7BDA003F002B2F2F0000ACACAC3F3F60606060D5D5D5D5000E0E0E0E0E" + $"002B2CDA7B7B002B2CEB2F0000ACACACACAC3F3F60D5D5D5D5D5000E0E0E0E0E" + $"FF002B2CDA7B2B2CEB2F000E00ACACACACACACACD5D5D5D5D5D5000E0E0E0EFF" + $"FF002B2CDA7B2B2CEB2F000E00ACACACACACACACD5D5D5D5D5D5000E0E0EFFFF" + $"FFFF002B2C2B2B2F2F000E0E00ACACACACACACACD5D5D5D5D5000E0E0EFFFFFF" + $"FFFF002B2C2B2B2F2F00FFFF00ACACACACACACACD5D5D5D5000E0E0EFFFFFFFF" + $"FFFFFF002B2CEB2F00FFFFFFFF0000ACACACACACD5D5D5000E0E0EFFFFFFFFFF" + $"FFFFFF002B2CEB2F00FFFFFFFFFFFF0000ACACACD5D5000E0E0EFFFFFFFFFFFF" + $"FFFFFFFF002B2F000E0F0F0F0F0F0F0F0F0000ACD5000E0E0EFFFFFFFFFFFFFF" + $"FFFFFFFF0000000E0F0F0F0F0F0F0F0F0F0F0F00000E0E0EFFFFFFFFFFFFFFFF" +}; + +resource(0, "BEOS:M:application/x-be-resource") #'MICN' array { + $"FFFFFFFFFFFFFFFF020200FFFFFFFFFF" + $"FFFFFFFFFFFFFF04151E1500FFFFFFFF" + $"FFFFFFFFFFFFFF021D1E1C00FFFFFFFF" + $"FFFFFFFF00FFFF00151B1600FFFFFFFF" + $"FFFFFF003F0000FA0000000000FFFFFF" + $"FFFF003FFD0000F9F9FAFAFAFA00FFFF" + $"FF003FFEFDFD00F9F9F9F97D7D00FFFF" + $"003F62FE89FD00F9F9F900007D00FFFF" + $"FF003FB0FD89FA00F90060600000FFFF" + $"FF003FFEB0FD620000606060606000FF" + $"FFFF003FFD89FA003F3F606060D500FF" + $"FFFF003FFDFDFA00ACAC3F3FD5D5000E" + $"FFFFFF003FFD0000ACACACACD5D5000E" + $"FFFFFF003F000E00ACACACACD5D5000E" + $"FFFFFFFF000E0E0E0000ACACD5000E0E" + $"FFFFFFFFFFFFFFFFFFFF0000000E0EFF" +}; + +resource(1, "BEOS:M:application/octet-stream") #'MICN' array { + $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + $"FFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF" + $"FFFFFFFFFF003F0000FFFFFFFFFFFFFF" + $"FFFFFFFF003F6060600000FFFFFFFFFF" + $"FFFFFF003F6060606060600000FFFFFF" + $"FFFF003F3F3F3F3F3F3F3F60600000FF" + $"FF003F603F603F603F603F3F60600000" + $"00606060606060606060601B600000AE" + $"AE000087878787878787878701870000" + $"FFAE000000878787878787008700AEAE" + $"FFFFAE00AE0000AEAEAE000000AEFFFF" + $"FFFFFFAE0087AE00AE00AEAEFFFFFFFF" + $"FFFFFFFFAE00000000AEAEFFFFFFFFFF" + $"FFFFFFFFFFAE00AEFFAEFFFFFFFFFFFF" +}; + +resource mini_icon array { + $"FFFFFFFFFFFFFFFF020200FFFFFFFFFF" + $"FFFFFFFFFFFFFF04151E1500FFFFFFFF" + $"FFFFFFFFFFFFFF021D1E1C00FFFFFFFF" + $"FFFFFFFF00FFFF00151B1600FFFFFFFF" + $"FFFFFF003F0000FA0000000000FFFFFF" + $"FFFF003FFD0000F9F9FAFAFAFA00FFFF" + $"FF003FFEFDFD00F9F9F9F97D7D00FFFF" + $"003F62FE89007B00F9F900007D00FFFF" + $"FF003FB0FD002F00F90060600000FFFF" + $"FF003FFE002F000000606060606000FF" + $"FF000000002F00003F3F606060D500FF" + $"002B00002F00FA00ACAC3F3FD5D500FF" + $"002B7B2CEB000000ACACACACD5D5000E" + $"FF002B2F00000E00ACACACACD5D5000E" + $"FF002B2F000E0E0F0000ACACD5000E0E" + $"FFFF00000E0F0F0F0F0F0000000E0EFF" +}; diff --git a/src/prefs/filetypes/FileTypes.rdef b/src/prefs/filetypes/FileTypes.rdef new file mode 100644 index 0000000000..1c3f8cf298 --- /dev/null +++ b/src/prefs/filetypes/FileTypes.rdef @@ -0,0 +1,13 @@ +/* +** FileTypes.rdef +** +*/ + +resource app_signature "application/x-vnd.obos.file-types"; + +resource app_flags 0x00000000; + +resource file_types message { + "types" = "application/x-be-resource", + "types" = "application/octet-stream" +}; diff --git a/src/prefs/filetypes/FileTypes.version.rdef b/src/prefs/filetypes/FileTypes.version.rdef new file mode 100644 index 0000000000..37c2b5ed28 --- /dev/null +++ b/src/prefs/filetypes/FileTypes.version.rdef @@ -0,0 +1,20 @@ +/* +** FileTypes.version.rdef +** +*/ + +resource app_version { + + major = 1, + middle = 0, + minor = 0, + + /* 0 = development 1 = alpha 2 = beta + 3 = gamma 4 = golden master 5 = final */ + variety = 0, + + internal = 1, + + short_info = "R1.0.0d1", + long_info = "OpenBeOS 1.0.0d1 ©2002 OpenBeOS Project" +}; diff --git a/src/prefs/filetypes/FileTypesApp.cpp b/src/prefs/filetypes/FileTypesApp.cpp new file mode 100644 index 0000000000..1573c7df24 --- /dev/null +++ b/src/prefs/filetypes/FileTypesApp.cpp @@ -0,0 +1,106 @@ +#include + +#include +#include +#include + +BRect windowRect(7,26,507,426); + +FileTypesApp * file_types_app = 0; + +FileTypesApp::FileTypesApp() + : BApplication(APP_SIGNATURE) +{ + fOpenPanel = new BFilePanel(); + file_types_app = this; +} + +void FileTypesApp::DispatchMessage(BMessage *msg, BHandler *handler) +{ + if ( msg->what == B_ARGV_RECEIVED ) { + int32 argc; + if (msg->FindInt32("argc",&argc) != B_OK) { + argc=0; + } + const char ** argv = new (const char*)[argc]; + for (int arg = 0; (arg < argc) ; arg++) { + if (msg->FindString("argv",arg,&argv[arg]) != B_OK) { + argv[arg] = ""; + } + } + const char * cwd; + if (msg->FindString("cwd",&cwd) != B_OK) { + cwd = ""; + } + ArgvReceived(argc, argv, cwd); + } else { + BApplication::DispatchMessage(msg,handler); + } +} + + +void +FileTypesApp::MessageReceived(BMessage *message) +{ + switch (message->what) { + case FILE_OPEN: + fOpenPanel->Show(); + break; + case B_SILENT_RELAUNCH: + fWindow->Show(); + break; + default: + BApplication::MessageReceived(message); + break; + } +} + +void +FileTypesApp::RefsReceived(BMessage *message) +{ + int32 refNum = 0; + entry_ref ref; + while (message->FindRef("refs", refNum++, &ref) == B_OK) { + + } +} + +void +FileTypesApp::ArgvReceived(int32 argc, const char *argv[], const char * cwd) +{ + for (int i = 1 ; (i < argc) ; i++) { + BPath path; + if (argv[i][0] == '/') { + path.SetTo(argv[i]); + } else { + path.SetTo(cwd,argv[i]); + } + if (path.InitCheck() != B_OK) { + printf("path.InitCheck failed: \""); + if (argv[i][0] == '/') { + printf("%s",argv[i]); + } else { + printf("%s/%s",cwd,argv[i]); + } + printf("\".\n"); + continue; + } + + entry_ref ref; + if (get_ref_for_path(path.Path(), &ref) != B_OK) { + printf("get_ref_for_path failed: \""); + printf("%s",path.Path()); + printf("\".\n"); + continue; + } + OpenDocument(&ref); + } +} + +void +FileTypesApp::ReadyToRun() +{ + if (fWindowCount == 0) { + OpenDocument(); + } +} diff --git a/src/prefs/filetypes/FileTypesApp.h b/src/prefs/filetypes/FileTypesApp.h new file mode 100644 index 0000000000..17e20c8820 --- /dev/null +++ b/src/prefs/filetypes/FileTypesApp.h @@ -0,0 +1,29 @@ +#ifndef FILE_TYPES_APP +#define FILE_TYPES_APP + +#include +#include +#include + +class FileTypesWindow; + +class FileTypesApp + : public BApplication +{ +public: + FileTypesApp(); + virtual void MessageReceived(BMessage *message); + virtual void ArgvReceived(int32 argc, const char *argv[], const char * cwd); + virtual void RefsReceived(BMessage *message); + virtual void ReadyToRun(); + + virtual void DispatchMessage(BMessage *an_event, BHandler *handler); + +private: + BFilePanel * fOpenPanel; + FileTypesWindow * fWindow; +}; + +extern FileTypesApp * file_types_app; + +#endif // FILE_TYPES_APP diff --git a/src/prefs/filetypes/FileTypesConstants.h b/src/prefs/filetypes/FileTypesConstants.h new file mode 100644 index 0000000000..986c81b409 --- /dev/null +++ b/src/prefs/filetypes/FileTypesConstants.h @@ -0,0 +1,15 @@ +#ifndef FILE_TYPES_CONSTANTS_H +#define FILE_TYPES_CONSTANTS_H + +#define APP_SIGNATURE "application/x-vnd.obos.file-types" + +#include + +// File menu +const uint32 FILE_NEW_RESOURCE_FILE = 'Fnrf' ; +const uint32 FILE_OPEN = 'Fopn' ; + +// Settings menu +const uint32 SETTINGS_SHOW_ITERNAL_TYPES = 'Ssit' ; + +#endif // FILE_TYPES_CONSTANTS_H diff --git a/src/prefs/filetypes/FileTypesView.cpp b/src/prefs/filetypes/FileTypesView.cpp new file mode 100644 index 0000000000..1905877b1e --- /dev/null +++ b/src/prefs/filetypes/FileTypesView.cpp @@ -0,0 +1,2 @@ +#include + diff --git a/src/prefs/filetypes/FileTypesView.h b/src/prefs/filetypes/FileTypesView.h new file mode 100644 index 0000000000..607418958e --- /dev/null +++ b/src/prefs/filetypes/FileTypesView.h @@ -0,0 +1,14 @@ +#ifndef FILE_TYPES_VIEW_H +#define FILE_TYPES_VIEW_H + +#include + +class FileTypesView : public BView { +public: + FileTypesView(BRect viewframe); + ~FileTypesView(); + +private: +}; + +#endif // FILE_TYPES_VIEW_H diff --git a/src/prefs/filetypes/FileTypesWindow.cpp b/src/prefs/filetypes/FileTypesWindow.cpp new file mode 100644 index 0000000000..dfab23bfa0 --- /dev/null +++ b/src/prefs/filetypes/FileTypesWindow.cpp @@ -0,0 +1,4 @@ + +#include +#include + diff --git a/src/prefs/filetypes/FileTypesWindow.h b/src/prefs/filetypes/FileTypesWindow.h new file mode 100644 index 0000000000..0d27511a71 --- /dev/null +++ b/src/prefs/filetypes/FileTypesWindow.h @@ -0,0 +1,22 @@ +#ifndef FILE_TYPES_WINDOW_H +#define FILE_TYPES_WINDOW_H + +#include + +class FileTypesView; + +class FileTypesWindow + : public BWindow +{ +public: + FileTypesWindow(BRect frame); + ~FileTypesWindow(); + + virtual void Quit(); + virtual bool QuitRequested(); + virtual void MessageReceived(BMessage *message); + +private: +}; + +#endif // FILE_TYPES_WINDOW_H diff --git a/src/prefs/filetypes/Jamfile b/src/prefs/filetypes/Jamfile new file mode 100644 index 0000000000..e818de44d7 --- /dev/null +++ b/src/prefs/filetypes/Jamfile @@ -0,0 +1,16 @@ +SubDir OBOS_TOP src prefs filetypes ; + +AddResources FileTypes : + FileTypes.rdef FileTypes.icons.rdef FileTypes.version.rdef + ; + +Preference FileTypes : + main.cpp + FileTypesApp.cpp + FileTypesView.cpp + FileTypesWindow.cpp + FileTypeView.cpp + FileTypeWindow.cpp + ; + +LinkSharedOSLibs FileTypes : be ; diff --git a/src/prefs/filetypes/main.cpp b/src/prefs/filetypes/main.cpp new file mode 100644 index 0000000000..e5d837cd4e --- /dev/null +++ b/src/prefs/filetypes/main.cpp @@ -0,0 +1,9 @@ +#include + +int +main() +{ + FileTypesApp fileTypes; + fileTypes.Run(); + return 0; +}