summaryrefslogtreecommitdiffstats
path: root/xparts/xpart_notepad/xp_notepad.cpp
blob: 98f9d5dc092ec81c6feb6b7ffbf733bb70de5e4d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#include <dcopclient.h>
#include <kapplication.h>
#include <tqmultilineedit.h>
#include <tqfile.h>
#include <tqtextstream.h>
#include <stdio.h>
#include <iostream>
#include <xpart.h>
#include <kdebug.h>

#include "xparthost_stub.h"

class XPartNotepad :  public TTQMultiLineEdit, virtual public XPart
{

public:
	XPartNotepad(char *)
	{
		setText("This is a xpart component editor");
		setReadOnly( false );
		resize( 200, 200 );
		TTQMultiLineEdit::setFocus();
	}

	/** needed by XPartManager to embed the part */
	Q_UINT32 windowId()
	{ return winId(); }

	/** used by XPartManager to show the part */
	void show()
	{ printf("show()\n"); TTQWidget::show(); }

	/** sent by the XPartHost to query an url */
	bool openURL( const TTQCString& url )
	{ printf("openURL %s\n", (const char *) url ); 
		TTQFile f(url);
		TTQString s;
		if ( ! f.open(IO_ReadOnly) ) {
			return false;
		}
		TTQTextStream t( &f );
		while ( !t.eof() ) {
			s += t.readLine() + "\n";
		}
		f.close();
		setText(s);
		return true;
	}

	/** sent by the XPartHost to close an url */
	bool closeURL()
	{ printf("closeURL\n"); setText(""); return true; } 

	/** called when an action has been activated. name is
	* the name of the
	*      * action, state is used with Toggle actions to
	*      precise the current state.
	*           */
	void activateAction( const TTQString &name, int state )
	{ printf("activateAction: %s, %d\n", name.latin1(), state ); }	

	/** are extentions available -> browser extension
	 * / TextEditor ? */
	DCOPRef queryExtension( const TTQCString& extension )
	{ printf("query Extension : %s\n", (const char * ) extension ); return DCOPRef(); } 


protected:
	void focusInEvent( TTQFocusEvent * ) 
		{ kdDebug() << "Focus in" << endl; TTQMultiLineEdit::setFocus(); }
	void focusOutEvent( TTQFocusEvent * ) 
		{ kdDebug() << "Focus Out" << endl;TTQMultiLineEdit::setFocus(); }
};

int main( int argc, char **argv )
{
	if (argc < 3) {
		printf("application need arguments");
		return 1;
	}
	printf("args: XPartHost appId = %s , XPartHost_KPart objId = %s\n", argv[1], argv[2] );

    KApplication app( argc, argv, "xp_notepad" );
	XPartNotepad * xpn = new XPartNotepad("xp_notepad");
	app.setMainWidget( xpn );
	app.dcopClient()->attach();	
    TTQCString appId = app.dcopClient()->registerAs("xp_notepad", true);

	XPartHost_stub xph_stub( argv[1], argv[2] );
	DCOPRef xpn_dcopref( xpn );

	DCOPRef xph_dcopref = xph_stub.registerXPart(xpn_dcopref);
	if ( xph_dcopref.isNull() ) {
		printf("could not register\n");
		return 2;
	}
	printf("XPart registered!\n");

	// Initializing actions:
	const char * actions = 
"<!DOCTYPE actionList SYSTEM \"actionlist.dtd\">\n"
"<Actionlist>\n"
"    <Action name=\"open_url\" />\n"
"    <Action name=\"close_url\" />\n"
"    <Action name=\"nonexistant\" />\n"
"    <XMLFile location=\"./xp_notepad.rc\" />\n"
"</Actionlist>\n";
	xph_stub.createActions( actions );

    return app.exec();
}