diff --git a/src/prefs/filetypes/FileTypeView.cpp b/src/prefs/filetypes/FileTypeView.cpp deleted file mode 100644 index 552963f3e1..0000000000 --- a/src/prefs/filetypes/FileTypeView.cpp +++ /dev/null @@ -1,56 +0,0 @@ -#include - -FileTypeView::FileTypeView(BRect viewFrame) - : BView(viewFrame, "FileTypeView", B_FOLLOW_ALL, - B_FRAME_EVENTS|B_WILL_DRAW) -{ - fFileTypeBox = new BBox(BRect(25,25,325,175),"File Type"); - AddChild(fFileTypeBox); - - fPreferredApplicationBox = new BBox(BRect(25,225,325,375),"Preferred Application"); - AddChild(fPreferredApplicationBox); -} - -FileTypeView::~FileTypeView() -{ -} - -void -FileTypeView::SetFileType(const char * fileType) -{ - fFileType.SetTo(fileType); - // change UI -} - -void -FileTypeView::SetPreferredApplication(const char * preferredApplication) -{ - fPreferredApplication.SetTo(preferredApplication); - // change UI -} - -bool -FileTypeView::IsClean() const -{ - if (fFileType.Compare(GetFileType()) != 0) { - return false; - } - if (fPreferredApplication.Compare(GetPreferredApplication()) != 0) { - return false; - } - return true; -} - -const char * -FileTypeView::GetFileType() const -{ - // return from UI - return ""; -} - -const char * -FileTypeView::GetPreferredApplication() const -{ - // return from UI - return ""; -} diff --git a/src/prefs/filetypes/FileTypeView.h b/src/prefs/filetypes/FileTypeView.h deleted file mode 100644 index fdde49002e..0000000000 --- a/src/prefs/filetypes/FileTypeView.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef FILE_TYPE_VIEW_H -#define FILE_TYPE_VIEW_H - -#include -#include -#include -#include -#include - -class FileTypeView : public BView { -public: - FileTypeView(BRect viewFrame); - ~FileTypeView(); - - void SetFileType(const char * fileType); - void SetPreferredApplication(const char * preferredApplication); - - bool IsClean() const; - const char * GetFileType() const; - const char * GetPreferredApplication() const; -private: - BString fFileType; - BString fPreferredApplication; - - BBox * fFileTypeBox; - BTextView * fFileTypeTextView; - BButton * fFileTypeSelectButton; - BButton * fFileTypeSameAsButton; - BBox * fPreferredApplicationBox; - BPopUpMenu * fPreferredApplicationMenu; - BButton * fPreferredApplicationSelectButton; - BButton * fPreferredApplicationSameAsButton; -}; - -#endif // FILE_TYPE_VIEW_H diff --git a/src/prefs/filetypes/FileTypeWindow.cpp b/src/prefs/filetypes/FileTypeWindow.cpp deleted file mode 100644 index 4750c4af1d..0000000000 --- a/src/prefs/filetypes/FileTypeWindow.cpp +++ /dev/null @@ -1,191 +0,0 @@ -#include -#include -#include -#include - -#include -#include - -FileTypeWindow::FileTypeWindow(BEntryList entries) - : BWindow(BRect(250,150,350,400),"File Type",B_TITLED_WINDOW, - B_NOT_ZOOMABLE|B_NOT_RESIZABLE|B_ASYNCHRONOUS_CONTROLS) -{ - fMenuBar = new BMenuBar(BRect(0,0,0,0),"menubar"); - AddChild(fMenuBar); - - BRect viewFrame = Bounds(); - viewFrame.top = fMenuBar->Bounds().Height()+1; - fView = new FileTypeView(viewFrame); - AddChild(fView); - fView->MakeFocus(true); - - fFileMenu = new BMenu("File"); - fMenuBar->AddItem(fFileMenu); - fSaveItem = new BMenuItem("Save",new BMessage(B_SAVE_REQUESTED), 'S'); - fFileMenu->AddItem(fSaveItem); - fFileMenu->AddSeperator(); - fCloseItem = new BMenuItem("Close",new BMessage(B_QUIT_REQUESTED), 'W'); - fFileMenu->AddItem(fCloseItem); - - SetEntries(entries); - Show(); -} - -FileTypeWindow::~FileTypeWindow() -{ -} - -void -FileTypeWindow::MessageReceived(BMessage *message) -{ - switch(message->what){ - case B_SAVE_REQUESTED: - SaveRequested(); - break; - default: - BWindow::MessageReceived(message); - break; - } -} - -bool -FileTypeWindow::QuitRequested() -{ - if (fView->Clean()) { - return true; - } - - BAlert * saveAlert; - BString alertText("Would you like to save changes to file type attributes of "); - alertText << SummarizeEntries(); - alertText << "? "; - saveAlert = new BAlert("savealert",alertText.String(), "Cancel", "Don't Save","Save", - B_WIDTH_AS_USUAL, B_OFFSET_SPACING, B_WARNING_ALERT); - saveAlert->SetShortcut(0, B_ESCAPE); - saveAlert->SetShortcut(1,'d'); - saveAlert->SetShortcut(2,'s'); - buttonIndex = saveAlert->Go(); - - if (buttonIndex==0) { //"cancel": dont save, dont close the window - return false; - } else if (buttonIndex==1) { // "don't save": just close the window - return true; - } else if (SaveRequested() == B_OK) { - return true; - } else { - // save errors are ignored: there's usually no good way for the user to recover - return true; - } -} - -status_t -FileTypeWindow::SaveRequested(BMessage * message) -{ - status_t result = B_OK; - - const char * fileType = fView->GetFileType(); - const char * preferredApplication = fView->GetPreferredApplication(); - - if ((result = fEntries->Rewind()) != B_OK) { - return result; // can't proceed with no entries - } - BEntry entry; - while (fEntries->GetNextEntry(&entry,true) != B_OK) { - BNode node(&entry); - if ((result = node.InitCheck()) != B_OK) { - // save errors are ignored: there's usually no good way for the user to recover - continue; // can't proceed with an invalid node - } - BNodeInfo nodeInfo(&node); - if ((result = nodeInfo.InitCheck()) != B_OK) { - // save errors are ignored: there's usually no good way for the user to recover - continue; // can't proceed with an invalid nodeinfo - } - if ((result = nodeInfo.SetType(fileType)) != B_OK) { - // save errors are ignored: there's usually no good way for the user to recover - } - if ((result = nodeInfo.SetPreferredApp(preferredApplication)) != B_OK) { - // save errors are ignored: there's usually no good way for the user to recover - } - } - return result; -} - -void -FileTypeWindow::SetEntries(BEntryList entries) -{ - fEntries = entries; - - BString title = SummarizeEntries(); - title.Append(" File Type"); - SetTitle(strdup(title.String())); - - if (fEntries.Rewind() != B_OK) { - return; - } - BString * fileType = 0; - BString * preferredApplication = 0; - BEntry entry; - while (fEntries->GetNextEntry(&entry,true) != B_OK) { - BNode node(&entry); - if ((result = node.InitCheck()) != B_OK) { - // errors are ignored: there's usually no good way for the user to recover - continue; // can't proceed with an invalid node - } - BNodeInfo nodeInfo(&node); - if ((result = nodeInfo.InitCheck()) != B_OK) { - // errors are ignored: there's usually no good way for the user to recover - continue; // can't proceed with an invalid nodeinfo - } - char string[MAXPATHLEN]; - if ((result = nodeInfo.GetType(string)) != B_OK) { - // errors are ignored: there's usually no good way for the user to recover - } else { - if (fileType == 0) { - fileType = new BString(string); - } else if (fileType->Compare(string) != 0) { - fileType->SetTo(""); - if (preferredApplication && (preferredApplication->Length() == 0)) { - break; // stop now, don't waste time checking the rest - } - } - } - if ((result = nodeInfo.GetPreferredApp(string)) != B_OK) { - // errors are ignored: there's usually no good way for the user to recover - } else { - if (preferredApplication == 0) { - preferredApplication = new BString(string); - } else if (preferredApplication->Compare(string) != 0) { - preferredApplication->SetTo(""); - if (fileType && (fileType->Length() == 0)) { - break; // stop now, don't waste time checking the rest - } - } - } - } - 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) { - return ""; - } - const char * result = ""; - dirent dent; - if (fEntries.GetNextDirents(&dent,sizeof(dirent),1) != 0) { - result = strdup(dent.d_name); - if (fEntries.GetNextDirents(&dent,sizeof(dirent),1) != 0) { - result = "[Multiple Files]"; - } - } - return result; -} diff --git a/src/prefs/filetypes/FileTypeWindow.h b/src/prefs/filetypes/FileTypeWindow.h deleted file mode 100644 index 8ee4ef3445..0000000000 --- a/src/prefs/filetypes/FileTypeWindow.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef FILE_TYPE_WINDOW_H -#define FILE_TYPE_WINDOW_H - -#include -#include -#include -#include - -class FileTypeView; - -class FileTypeWindow - : public BWindow -{ -public: - FileTypeWindow(BEntryList entries); - ~FileTypeWindow(); - - virtual bool QuitRequested(); - virtual void MessageReceived(BMessage * message); - -private: - status_t SaveRequested(); - void SetEntries(BEntryList entries); - const char * SummarizeEntries(); - - BMenuBar *fMenuBar; - BMenu *fFileMenu; - BMenuItem *fSaveItem; - BMenuItem *fCloseItem; - - FileTypeView *fView; - - BEntryList fEntries; -}; - -#endif // FILE_TYPE_WINDOW_H diff --git a/src/prefs/filetypes/FileTypesApp.cpp b/src/prefs/filetypes/FileTypesApp.cpp index 1573c7df24..c7755ebe4f 100644 --- a/src/prefs/filetypes/FileTypesApp.cpp +++ b/src/prefs/filetypes/FileTypesApp.cpp @@ -1,6 +1,8 @@ +#include #include +#include -#include +#include #include #include @@ -68,6 +70,7 @@ FileTypesApp::RefsReceived(BMessage *message) void FileTypesApp::ArgvReceived(int32 argc, const char *argv[], const char * cwd) { + BMessage refsReceived(B_REFS_RECEIVED); for (int i = 1 ; (i < argc) ; i++) { BPath path; if (argv[i][0] == '/') { @@ -93,14 +96,26 @@ FileTypesApp::ArgvReceived(int32 argc, const char *argv[], const char * cwd) printf("\".\n"); continue; } - OpenDocument(&ref); } } void FileTypesApp::ReadyToRun() { - if (fWindowCount == 0) { - OpenDocument(); + if (!fArgvOkay) { + Quit(); + return; + } + if (fWindow == 0) { + OpenPanel()->Show(); } } + +BFilePanel * +FileTypesApp::OpenPanel() +{ + if (fOpenPanel == 0) { + fOpenPanel = new BFilePanel(B_OPEN_PANEL); + } + return fOpenPanel; +} diff --git a/src/prefs/filetypes/FileTypesApp.h b/src/prefs/filetypes/FileTypesApp.h index 17e20c8820..973f595b94 100644 --- a/src/prefs/filetypes/FileTypesApp.h +++ b/src/prefs/filetypes/FileTypesApp.h @@ -20,8 +20,12 @@ public: virtual void DispatchMessage(BMessage *an_event, BHandler *handler); private: - BFilePanel * fOpenPanel; + BFilePanel * OpenPanel(); + FileTypesWindow * fWindow; + BFilePanel * fOpenPanel; + + bool fArgvOkay; }; extern FileTypesApp * file_types_app; diff --git a/src/prefs/filetypes/FileTypesView.h b/src/prefs/filetypes/FileTypesView.h index 607418958e..bab5fa4bce 100644 --- a/src/prefs/filetypes/FileTypesView.h +++ b/src/prefs/filetypes/FileTypesView.h @@ -1,7 +1,7 @@ #ifndef FILE_TYPES_VIEW_H #define FILE_TYPES_VIEW_H -#include +#include class FileTypesView : public BView { public: diff --git a/src/prefs/filetypes/FileTypesWindow.cpp b/src/prefs/filetypes/FileTypesWindow.cpp index dfab23bfa0..8b13789179 100644 --- a/src/prefs/filetypes/FileTypesWindow.cpp +++ b/src/prefs/filetypes/FileTypesWindow.cpp @@ -1,4 +1 @@ -#include -#include - diff --git a/src/prefs/filetypes/Jamfile b/src/prefs/filetypes/Jamfile index e818de44d7..f486519521 100644 --- a/src/prefs/filetypes/Jamfile +++ b/src/prefs/filetypes/Jamfile @@ -9,8 +9,6 @@ Preference FileTypes : FileTypesApp.cpp FileTypesView.cpp FileTypesWindow.cpp - FileTypeView.cpp - FileTypeWindow.cpp ; -LinkSharedOSLibs FileTypes : be ; +LinkSharedOSLibs FileTypes : be tracker ;