xref: /haiku/src/add-ons/translators/rtf/main.cpp (revision 25a7b01d15612846f332751841da3579db313082)
19949213aSStephan Aßmus /*
2db904228SAxel Dörfler  * Copyright 2004-2010, Axel Dörfler, axeld@pinc-software.de.
39949213aSStephan Aßmus  * Distributed under the terms of the MIT License.
49949213aSStephan Aßmus  */
59949213aSStephan Aßmus 
69949213aSStephan Aßmus 
79949213aSStephan Aßmus #include <stdio.h>
89949213aSStephan Aßmus #include <string.h>
970d59669SSiarzhuk Zharski #include <syslog.h>
109949213aSStephan Aßmus 
11db904228SAxel Dörfler #include <Application.h>
1270d59669SSiarzhuk Zharski #include <Catalog.h>
13db904228SAxel Dörfler #include <FileIO.h>
14db904228SAxel Dörfler #include <TranslatorRoster.h>
15db904228SAxel Dörfler 
16db904228SAxel Dörfler #include "TranslatorWindow.h"
17db904228SAxel Dörfler 
18db904228SAxel Dörfler #include "convert.h"
19db904228SAxel Dörfler #include "RTF.h"
20db904228SAxel Dörfler #include "RTFTranslator.h"
21db904228SAxel Dörfler 
22*546208a5SOliver Tappe #undef B_TRANSLATION_CONTEXT
23*546208a5SOliver Tappe #define B_TRANSLATION_CONTEXT "main"
2470d59669SSiarzhuk Zharski 
259949213aSStephan Aßmus 
269949213aSStephan Aßmus int
main(int argc,char ** argv)27db904228SAxel Dörfler main(int argc, char** argv)
289949213aSStephan Aßmus {
29db904228SAxel Dörfler 	if (argc > 1) {
30db904228SAxel Dörfler 		// Convert input files to plain text directly
31db904228SAxel Dörfler 		BFileIO output(stdout);
32db904228SAxel Dörfler 		int result = 0;
33db904228SAxel Dörfler 
34db904228SAxel Dörfler 		for (int i = 1; i < argc; i++) {
35db904228SAxel Dörfler 			BFile input;
36db904228SAxel Dörfler 			status_t status = input.SetTo(argv[i], B_READ_ONLY);
37db904228SAxel Dörfler 			if (status != B_OK) {
3870d59669SSiarzhuk Zharski 				syslog(LOG_ERR,
3970d59669SSiarzhuk Zharski 						"RTFTranslator:Could not open file \"%s\": %s\n",
4070d59669SSiarzhuk Zharski 											argv[i], strerror(status));
41db904228SAxel Dörfler 				result = 1;
42db904228SAxel Dörfler 				continue;
43db904228SAxel Dörfler 			}
44db904228SAxel Dörfler 
45db904228SAxel Dörfler 			RTF::Parser parser(input);
46db904228SAxel Dörfler 			RTF::Header header;
47db904228SAxel Dörfler 
48db904228SAxel Dörfler 			status = parser.Parse(header);
49db904228SAxel Dörfler 			if (status != B_OK) {
5070d59669SSiarzhuk Zharski 				syslog(LOG_ERR,
5170d59669SSiarzhuk Zharski 						"RTFTranslator:Could not convert file \"%s\": %s\n",
5270d59669SSiarzhuk Zharski 											argv[i], strerror(status));
53db904228SAxel Dörfler 				result = 1;
54db904228SAxel Dörfler 				continue;
55db904228SAxel Dörfler 			}
56db904228SAxel Dörfler 
57db904228SAxel Dörfler 			convert_to_plain_text(header, output);
58db904228SAxel Dörfler 		}
59db904228SAxel Dörfler 
60eb5f3639SJerome Duval 		return result;
61db904228SAxel Dörfler 	}
62db904228SAxel Dörfler 
6397c99097SRyan Leavengood 	BApplication app("application/x-vnd.Haiku-RTFTranslator");
649949213aSStephan Aßmus 
659949213aSStephan Aßmus 	status_t result;
6670d59669SSiarzhuk Zharski 	result = LaunchTranslatorWindow(new RTFTranslator,
6770d59669SSiarzhuk Zharski 		B_TRANSLATE("RTF Settings"), BRect(0, 0, 225, 175));
689949213aSStephan Aßmus 	if (result != B_OK)
699949213aSStephan Aßmus 		return 1;
709949213aSStephan Aßmus 
719949213aSStephan Aßmus 	app.Run();
729949213aSStephan Aßmus 	return 0;
739949213aSStephan Aßmus }
749949213aSStephan Aßmus 
75