You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdebindings/tdejava/koala/test/kbase/KBase.java

597 lines
17 KiB

import java.util.*;
import org.trinitydesktop.qt.*;
import org.trinitydesktop.koala.*;
/**
* The base class for JavaApiTest application windows. It sets up the main
* window and reads the config file as well as providing a menubar, toolbar
* and statusbar. An instance of KBaseView creates your center view, which is connected
* to the window's Doc object.
* KBase reimplements the methods that TDEMainWindow provides for main window handling and supports
* full session management as well as using TDEActions.
* @see TDEMainWindow
* @see TDEApplication
* @see TDEConfig
*
* @author Source Framework Automatically Generated by KDevelop, (c) The KDevelop Team.
* @version KDevelop version 1.2 code generation
*/
public class KBase extends TDEMainWindow
{
public static final int ID_STATUS_MSG = 1;
/** the configuration object of the application */
private TDEConfig config;
/** view is the main widget which represents your working area. The View
* class should handle all events of the view widget. It is kept empty so
* you can create your view according to your application's needs by
* changing the view class.
*/
private KBaseView view;
/** doc represents your actual document and is created only once. It keeps
* information such as filename and does the serialization of your files.
*/
private KBaseDoc doc;
// TDEAction references to enable/disable actions
private TDEAction fileNewWindow;
private TDEAction fileNew;
private TDEAction fileOpen;
private TDERecentFilesAction fileOpenRecent;
private TDEAction fileSave;
private TDEAction fileSaveAs;
private TDEAction fileClose;
private TDEAction filePrint;
private TDEAction fileQuit;
private TDEAction editCut;
private TDEAction editCopy;
private TDEAction editPaste;
private TDEToggleAction viewToolBar;
private TDEToggleAction viewStatusBar;
/** construtor of KBase, calls all init functions to create the application.
*/
public KBase(TQWidget parent, String name)
{
super(parent, name, 0);
TDEApplication kapp = TDEApplication.kApplication();
config=kapp.config();
///////////////////////////////////////////////////////////////////
// call inits to invoke all other construction parts
initStatusBar();
initActions();
initDocument();
initView();
readOptions();
///////////////////////////////////////////////////////////////////
// disable actions at startup
fileSave.setEnabled(false);
fileSaveAs.setEnabled(false);
filePrint.setEnabled(false);
editCut.setEnabled(false);
editCopy.setEnabled(false);
}
public KBase()
{
this(null, null);
}
/** initializes the TDEActions of the application */
protected void initActions()
{
fileNewWindow = new TDEAction(tr("New &Window"), "", new TDEShortcut(), this, TQ_SLOT("slotFileNewWindow()"), actionCollection(),"file_new_window");
fileNew = KStdAction.openNew(this, TQ_SLOT("slotFileNew()"), actionCollection());
fileOpen = KStdAction.open(this, TQ_SLOT("slotFileOpen()"), actionCollection());
fileOpenRecent = (TDERecentFilesAction) KStdAction.openRecent(this, TQ_SLOT("slotFileOpenRecent(KURL)"), actionCollection());
fileSave = KStdAction.save(this, TQ_SLOT("slotFileSave()"), actionCollection());
fileSaveAs = KStdAction.saveAs(this, TQ_SLOT("slotFileSaveAs()"), actionCollection());
// this one crashes for me...
// fileClose = KStdAction.close(this, TQ_SLOT(slotFileClose()), actionCollection());
filePrint = KStdAction.print(this, TQ_SLOT("slotFilePrint()"), actionCollection());
fileQuit = KStdAction.quit(this, TQ_SLOT("slotFileQuit()"), actionCollection());
editCut = KStdAction.cut(this, TQ_SLOT("slotEditCut()"), actionCollection());
editCopy = KStdAction.copy(this, TQ_SLOT("slotEditCopy()"), actionCollection());
editPaste = KStdAction.paste(this, TQ_SLOT("slotEditPaste()"), actionCollection());
createStandardStatusBarAction();
// viewToolBar = KStdAction.showToolbar(this, TQ_SLOT("slotViewToolBar()"), actionCollection());
viewStatusBar = KStdAction.showStatusbar(this, TQ_SLOT("slotViewStatusBar()"), actionCollection());
fileNewWindow.setToolTip(tr("Opens a new application window"));
fileNew.setToolTip(tr("Creates a new document"));
fileOpen.setToolTip(tr("Opens an existing document"));
fileOpenRecent.setToolTip(tr("Opens a recently used file"));
fileSave.setToolTip(tr("Saves the actual document"));
fileSaveAs.setToolTip(tr("Saves the actual document as..."));
// fileClose.setToolTip(tr("Closes the actual document"));
filePrint .setToolTip(tr("Prints out the actual document"));
fileQuit.setToolTip(tr("Quits the application"));
editCut.setToolTip(tr("Cuts the selected section and puts it to the clipboard"));
editCopy.setToolTip(tr("Copies the selected section to the clipboard"));
editPaste.setToolTip(tr("Pastes the clipboard contents to actual position"));
// viewToolBar.setToolTip(tr("Enables/disables the toolbar"));
viewStatusBar.setToolTip(tr("Enables/disables the statusbar"));
// use the absolute path to your kbaseui.rc file for testing purpose in createGUI();
createGUI();
}
/** sets up the kstatusBar for the main window by initialzing a statuslabel.
*/
protected void initStatusBar()
{
///////////////////////////////////////////////////////////////////
// STATUSBAR
// TODO: add your own items you need for displaying current application status.
kstatusBar().insertItem(tr("Ready."), ID_STATUS_MSG);
}
/** initializes the document object of the main window that is connected to the view in initView().
* @see initView();
*/
public void initDocument()
{
doc = new KBaseDoc(this, null);
doc.newDocument();
}
/** creates the centerwidget of the KTMainWindow instance and sets it as the view
*/
protected void initView()
{
////////////////////////////////////////////////////////////////////
// create the main widget here that is managed by KTMainWindow's view-region and
// connect the widget to your document to display document contents.
view = new KBaseView(this, null);
doc.addView(view);
setCentralWidget(view);
setCaption(doc.URL().fileName(),false);
}
/** opens a file specified by commandline option
*/
public void openDocumentFile(KURL url)
{
slotStatusMsg(tr("Opening file..."));
// doc.openDocument( url);
fileOpenRecent.addURL( url );
slotStatusMsg(tr("Ready."));
}
public void openDocumentFile()
{
openDocumentFile(new KURL(""));
return;
}
/** returns a pointer to the current document connected to the KTMainWindow instance and is used by
* the View class to access the document object's methods
*/
public KBaseDoc getDocument()
{
return doc;
}
/** save general Options like all bar positions and status as well as the geometry and the recent file list to the configuration
* file
*/
protected void saveOptions()
{
config.setGroup("General Options");
config.writeEntry("Geometry", size());
// config.writeEntry("Show Toolbar", viewToolBar.isChecked());
config.writeEntry("Show Statusbar",viewStatusBar.isChecked());
// config.writeEntry("ToolBarPos", (int) toolBar("mainToolBar").barPos());
fileOpenRecent.saveEntries(config,"Recent Files");
}
/** read general Options again and initialize all variables like the recent file list
*/
protected void readOptions()
{
config.setGroup("General Options");
// bar status settings
// boolean bViewToolbar = config.readBoolEntry("Show Toolbar", true);
// viewToolBar.setChecked(bViewToolbar);
// slotViewToolBar();
boolean bViewStatusbar = config.readBoolEntry("Show Statusbar", true);
viewStatusBar.setChecked(bViewStatusbar);
slotViewStatusBar();
// bar position settings
// int toolBarPos;
//Pos=(int) config.readNumEntry("ToolBarPos", TDEToolBar.Top);
// toolBar("mainToolBar").setBarPos(toolBarPos);
// initialize the recent file list
fileOpenRecent.loadEntries(config,"Recent Files");
TQSize size=config.readSizeEntry("Geometry", null);
if(!size.isEmpty())
{
resize(size);
}
}
/** saves the window properties for each open window during session end to the session config file, including saving the currently
* opened file by a temporary filename provided by TDEApplication.
* @see KTMainWindow#saveProperties
*/
protected void saveProperties(TDEConfig _cfg)
{
if(doc.URL().fileName()!=tr("Untitled") && !doc.isModified())
{
// saving to tempfile not necessary
}
else
{
KURL url=doc.URL();
_cfg.writeEntry("filename", url.url());
_cfg.writeEntry("modified", doc.isModified());
String tempname = TDEApplication.kApplication().tempSaveName(url.url());
String tempurl= KURL.encode_string(tempname, 0);
KURL _url = new KURL(tempurl);
doc.saveDocument(_url);
}
}
/** reads the session config file and restores the application's state including the last opened files and documents by reading the
* temporary files saved by saveProperties()
* @see KTMainWindow#readProperties
*/
protected void readProperties(TDEConfig _cfg)
{
String filename = _cfg.readEntry("filename", "");
KURL url = new KURL(filename);
boolean modified = _cfg.readBoolEntry("modified", false);
if(modified)
{
boolean canRecover = false;
String tempname = TDEApplication.kApplication().checkRecoverFile(filename, canRecover);
KURL _url = new KURL(tempname);
if(canRecover)
{
doc.openDocument(_url);
doc.setModified();
setCaption(_url.fileName(),true);
TQFile.remove(tempname);
}
}
else
{
if(filename.length() > 0)
{
doc.openDocument(url);
setCaption(url.fileName(),false);
}
}
}
/** queryClose is called by KTMainWindow on each closeEvent of a window. Against the
* default implementation (only returns true), this calles saveModified() on the document object to ask if the document shall
* be saved if Modified; on cancel the closeEvent is rejected.
* @see KTMainWindow#queryClose
* @see KTMainWindow#closeEvent
*/
protected boolean queryClose()
{
return doc.saveModified();
}
/** queryExit is called by KTMainWindow when the last window of the application is going to be closed during the closeEvent().
* Against the default implementation that just returns true, this calls saveOptions() to save the settings of the last window's
* properties.
* @see KTMainWindow#queryExit
* @see KTMainWindow#closeEvent
*/
protected boolean queryExit()
{
saveOptions();
return true;
}
/////////////////////////////////////////////////////////////////////
// SLOT IMPLEMENTATION
/////////////////////////////////////////////////////////////////////
/** open a new application window by creating a new instance of KBase */
public void slotFileNewWindow()
{
slotStatusMsg(tr("Opening a new application window..."));
KBase new_window= new KBase();
new_window.show();
slotStatusMsg(tr("Ready."));
}
/** clears the document in the actual view to reuse it as the new document */
public void slotFileNew()
{
slotStatusMsg(tr("Creating new document..."));
if(!doc.saveModified())
{
// here saving wasn't successful
}
else
{
doc.newDocument();
setCaption(doc.URL().fileName(), false);
}
slotStatusMsg(tr("Ready."));
}
/** open a file and load it into the document*/
public void slotFileOpen()
{
System.out.println("ENTER slotFileOpen()");
slotStatusMsg(tr("Opening file..."));
if(!doc.saveModified())
{
// here saving wasn't successful
}
else
{
KURL url=KFileDialog.getOpenURL("",
tr("*|All files"), this, tr("Open File..."));
if(!url.isEmpty())
{
doc.openDocument(url);
setCaption(url.fileName(), false);
fileOpenRecent.addURL( url );
}
}
slotStatusMsg(tr("Ready."));
}
/** opens a file from the recent files menu */
public void slotFileOpenRecent(KURL url)
{
slotStatusMsg(tr("Opening file..."));
if(!doc.saveModified())
{
// here saving wasn't successful
}
else
{
doc.openDocument(url);
setCaption(url.fileName(), false);
}
slotStatusMsg(tr("Ready."));
}
/** save a document */
public void slotFileSave()
{
slotStatusMsg(tr("Saving file..."));
doc.saveDocument(doc.URL());
slotStatusMsg(tr("Ready."));
}
/** save a document by a new filename*/
public void slotFileSaveAs()
{
slotStatusMsg(tr("Saving file with a new filename..."));
KURL url=KFileDialog.getSaveURL(TQDir.currentDirPath(),
tr("*|All files"), this, tr("Save as..."));
if(!url.isEmpty())
{
doc.saveDocument(url);
fileOpenRecent.addURL(url);
setCaption(url.fileName(),doc.isModified());
}
slotStatusMsg(tr("Ready."));
}
/** asks for saving if the file is modified, then closes the actual file and window*/
public void slotFileClose()
{
slotStatusMsg(tr("Closing file..."));
close();
slotStatusMsg(tr("Ready."));
}
/** print the actual file */
public void slotFilePrint()
{
slotStatusMsg(tr("Printing..."));
TQPrinter printer = new TQPrinter();
if (printer.setup(this))
{
view.print(printer);
}
slotStatusMsg(tr("Ready."));
}
/** closes all open windows by calling close() on each memberList item until the list is empty, then quits the application.
* If queryClose() returns false because the user canceled the saveModified() dialog, the closing breaks.
*/
public void slotFileQuit()
{
slotStatusMsg(tr("Exiting..."));
saveOptions();
// close the first window, the list makes the next one the first again.
// This ensures that queryClose() is called on each window to ask for closing
TDEMainWindow w;
Iterator it = memberList().iterator();
while(it.hasNext())
{
w=(TDEMainWindow)it.next();
// only close the window if the closeEvent is accepted. If the user presses Cancel on the saveModified() dialog,
// the window and the application stay open.
if(!w.close())
break;
}
slotStatusMsg(tr("Ready."));
}
/** put the marked text/object into the clipboard and remove
* it from the document
*/
public void slotEditCut()
{
slotStatusMsg(tr("Cutting selection..."));
slotStatusMsg(tr("Ready."));
}
/** put the marked text/object into the clipboard
*/
public void slotEditCopy()
{
slotStatusMsg(tr("Copying selection to clipboard..."));
slotStatusMsg(tr("Ready."));
}
/** paste the clipboard into the document
*/
public void slotEditPaste()
{
slotStatusMsg(tr("Inserting clipboard contents..."));
slotStatusMsg(tr("Ready."));
}
/** toggles the toolbar
*/
public void slotViewToolBar()
{
slotStatusMsg(tr("Toggling toolbar..."));
///////////////////////////////////////////////////////////////////
// turn Toolbar on or off
// if(!viewToolBar.isChecked())
// {
// toolBar("mainToolBar").hide();
// }
// else
// {
// toolBar("mainToolBar").show();
// }
slotStatusMsg(tr("Ready."));
}
/** toggles the statusbar
*/
public void slotViewStatusBar()
{
slotStatusMsg(tr("Toggle the statusbar..."));
///////////////////////////////////////////////////////////////////
//turn Statusbar on or off
if(!viewStatusBar.isChecked())
{
kstatusBar().hide();
}
else
{
kstatusBar().show();
}
slotStatusMsg(tr("Ready."));
}
/** changes the statusbar contents for the standard label permanently, used to indicate current actions.
* @param text the text that is displayed in the statusbar
*/
public void slotStatusMsg(String text)
{
///////////////////////////////////////////////////////////////////
// change status message permanently
kstatusBar().clear();
kstatusBar().changeItem(text, ID_STATUS_MSG);
}
static String description =
"JavaApiTest";
// INSERT A DESCRIPTION FOR YOUR APPLICATION HERE
static String[][] options =
{
{ "+[File]", "file to open", null }
// INSERT YOUR COMMANDLINE OPTIONS HERE
};
static String VERSION = "0.1";
public static void main(String[] cmdLineArgs)
{
TDEAboutData aboutData = new TDEAboutData( "kbase", "JavaApiTest",
VERSION, description, TDEAboutData.License_GPL,
"(c) 2001, Richard Dale");
aboutData.addAuthor("Richard Dale",null, "Lost_Highway@tipitina.demon.co.uk");
TDECmdLineArgs.init( cmdLineArgs, aboutData );
TDECmdLineArgs.addCmdLineOptions( options ); // Add our own options.
TDEApplication app = new TDEApplication();
if (app.isRestored())
{
RESTORE("KBase");
}
else
{
KBase kbase = new KBase();
kbase.show();
TDECmdLineArgs args = TDECmdLineArgs.parsedArgs();
if (args.count() > 0)
{
kbase.openDocumentFile(new KURL(args.arg(0)));
}
else
{
kbase.openDocumentFile();
}
args.clear();
}
app.exec();
return;
}
static {
qtjava.initialize();
tdejava.initialize();
}
}