fix command line execution - thanks BGA
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2043 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
|
|
||||||
#include <Autolock.h>
|
#include <Autolock.h>
|
||||||
|
#include <Path.h>
|
||||||
#include "Constants.h"
|
#include "Constants.h"
|
||||||
#include "StyledEditApp.h"
|
#include "StyledEditApp.h"
|
||||||
#include "StyledEditWindow.h"
|
#include "StyledEditWindow.h"
|
||||||
@@ -25,6 +26,29 @@ StyledEditApp::StyledEditApp()
|
|||||||
styled_edit_app = this;
|
styled_edit_app = this;
|
||||||
} /***StyledEditApp::StyledEditApp()***/
|
} /***StyledEditApp::StyledEditApp()***/
|
||||||
|
|
||||||
|
void StyledEditApp::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
|
void
|
||||||
StyledEditApp::MessageReceived(BMessage *message)
|
StyledEditApp::MessageReceived(BMessage *message)
|
||||||
@@ -78,15 +102,39 @@ StyledEditApp::RefsReceived(BMessage *message)
|
|||||||
entry_ref ref;
|
entry_ref ref;
|
||||||
status_t err;
|
status_t err;
|
||||||
|
|
||||||
refNum=0;
|
refNum = 0;
|
||||||
do {
|
do {
|
||||||
if((err= message->FindRef("refs", refNum, &ref)) != B_OK)
|
err = message->FindRef("refs", refNum, &ref);
|
||||||
|
if (err != B_OK)
|
||||||
return;
|
return;
|
||||||
OpenDocument(&ref);
|
OpenDocument(&ref);
|
||||||
refNum++;
|
refNum++;
|
||||||
} while(1);
|
} while (true);
|
||||||
} /***StyledEditApp::RefsReceived();***/
|
} /***StyledEditApp::RefsReceived();***/
|
||||||
|
|
||||||
|
void
|
||||||
|
StyledEditApp::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) {
|
||||||
|
continue; // TODO: alert the user?
|
||||||
|
}
|
||||||
|
|
||||||
|
entry_ref ref;
|
||||||
|
if (get_ref_for_path(path.Path(), &ref) != B_OK) {
|
||||||
|
continue; // TODO: alert the user?
|
||||||
|
}
|
||||||
|
|
||||||
|
OpenDocument(&ref);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
StyledEditApp::ReadyToRun()
|
StyledEditApp::ReadyToRun()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -14,9 +14,12 @@ class StyledEditApp
|
|||||||
public:
|
public:
|
||||||
StyledEditApp();
|
StyledEditApp();
|
||||||
virtual void MessageReceived(BMessage *message);
|
virtual void MessageReceived(BMessage *message);
|
||||||
|
virtual void ArgvReceived(int32 argc, const char *argv[], const char * cwd);
|
||||||
virtual void RefsReceived(BMessage *message);
|
virtual void RefsReceived(BMessage *message);
|
||||||
virtual void ReadyToRun();
|
virtual void ReadyToRun();
|
||||||
|
|
||||||
|
virtual void DispatchMessage(BMessage *an_event, BHandler *handler);
|
||||||
|
|
||||||
int32 NumberOfWindows();
|
int32 NumberOfWindows();
|
||||||
void OpenDocument();
|
void OpenDocument();
|
||||||
void OpenDocument(entry_ref * ref);
|
void OpenDocument(entry_ref * ref);
|
||||||
|
|||||||
@@ -687,30 +687,33 @@ StyledEditWindow::OpenFile(entry_ref *ref)
|
|||||||
BFile file;
|
BFile file;
|
||||||
status_t fileinit;
|
status_t fileinit;
|
||||||
|
|
||||||
fileinit= file.SetTo(ref, B_READ_ONLY);
|
fileinit = file.SetTo(ref, B_READ_ONLY);
|
||||||
|
|
||||||
if (fileinit == B_OK){
|
if (fileinit == B_OK){
|
||||||
status_t result;
|
status_t result;
|
||||||
result = fTextView->GetStyledText(&file); //he he he :)
|
result = fTextView->GetStyledText(&file); //he he he :)
|
||||||
|
|
||||||
if (result == B_OK) {
|
if (result == B_OK) {
|
||||||
be_roster->AddToRecentDocuments(ref,APP_SIGNATURE);
|
// TODO: notify user?
|
||||||
fSaveMessage= new BMessage(B_SAVE_REQUESTED);
|
|
||||||
if(fSaveMessage){
|
|
||||||
BEntry entry(ref, true);
|
|
||||||
BEntry parent;
|
|
||||||
entry_ref parentRef;
|
|
||||||
char name[B_FILE_NAME_LENGTH];
|
|
||||||
|
|
||||||
entry.GetParent(&parent);
|
|
||||||
entry.GetName(name);
|
|
||||||
parent.GetRef(&parentRef);
|
|
||||||
fSaveMessage->AddRef("directory",&parentRef);
|
|
||||||
fSaveMessage->AddString("name", name);
|
|
||||||
SetTitle(name);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
|
fSaveItem->SetEnabled(true); // allow saving new files
|
||||||
|
}
|
||||||
|
|
||||||
|
be_roster->AddToRecentDocuments(ref,APP_SIGNATURE);
|
||||||
|
fSaveMessage = new BMessage(B_SAVE_REQUESTED);
|
||||||
|
if(fSaveMessage){
|
||||||
|
BEntry entry(ref, true);
|
||||||
|
BEntry parent;
|
||||||
|
entry_ref parentRef;
|
||||||
|
char name[B_FILE_NAME_LENGTH];
|
||||||
|
|
||||||
|
entry.GetParent(&parent);
|
||||||
|
entry.GetName(name);
|
||||||
|
parent.GetRef(&parentRef);
|
||||||
|
fSaveMessage->AddRef("directory",&parentRef);
|
||||||
|
fSaveMessage->AddString("name", name);
|
||||||
|
SetTitle(name);
|
||||||
|
}
|
||||||
}/*** StyledEditWindow::OpenFile() ***/
|
}/*** StyledEditWindow::OpenFile() ***/
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
Reference in New Issue
Block a user