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.
240 lines
5.8 KiB
240 lines
5.8 KiB
#!/usr/bin/env kjscmd
|
|
|
|
//
|
|
// Setup main window
|
|
//
|
|
mw = new KMainWindow();
|
|
ac = mw.actionCollection();
|
|
mb = mw.menuBar();
|
|
sb = mw.statusBar();
|
|
mw.setStandardToolBarMenuEnabled( true );
|
|
|
|
view = new TQScrollView( mw, 'view' );
|
|
|
|
lbl = new TQLabel( view, 'view' );
|
|
lbl.alignment = Qt.AlignCenter;
|
|
lbl.text = 'No Content';
|
|
|
|
view.addChild( lbl );
|
|
|
|
mw.setCentralWidget( view );
|
|
|
|
///////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
// Center the image in the view
|
|
//
|
|
mw.update_layout = function()
|
|
{
|
|
var x = 0;
|
|
var y = 0;
|
|
|
|
if ( lbl.width < view.width )
|
|
x = Math.floor( (view.width - lbl.width) / 2 );
|
|
if ( lbl.height < view.height )
|
|
y = Math.floor( (view.height - lbl.height) / 2 );
|
|
|
|
view.addChild( lbl, x, y );
|
|
}
|
|
|
|
mw.resizeEvent = function(ev)
|
|
{
|
|
this.update_layout();
|
|
}
|
|
|
|
mw.update_view = function()
|
|
{
|
|
lbl.pixmap = this.img.pixmap();
|
|
|
|
lbl.adjustSize();
|
|
this.update_layout();
|
|
}
|
|
|
|
//
|
|
// Load the specified image
|
|
//
|
|
mw.load = function( filename )
|
|
{
|
|
if ( /^\w+:/.test( filename ) )
|
|
filename = filename.replace( /^\w+:/, '' );
|
|
|
|
this.img = new Image();
|
|
this.img.load( filename );
|
|
|
|
if ( !this.img.isOk() ) {
|
|
throw 'Failed to load image ' + filename;
|
|
}
|
|
|
|
sb.message( filename );
|
|
this.imgfile = filename;
|
|
this.update_view();
|
|
}
|
|
|
|
//
|
|
// Save the specified image
|
|
//
|
|
mw.save = function( filename )
|
|
{
|
|
var ok = this.img.save( filename );
|
|
|
|
if ( !ok ) {
|
|
throw 'Failed to save image ' + filename;
|
|
}
|
|
}
|
|
|
|
//
|
|
// Open an image file.
|
|
//
|
|
mw.openFile = function()
|
|
{
|
|
var filename = StdDialog.getOpenFileName( '.' );
|
|
|
|
if ( filename.length > 0 ) {
|
|
this.load( filename );
|
|
openrecent_action.addURL( filename );
|
|
openrecent_action.saveEntries( System.KJSConfig.kconfig(), 'test' );
|
|
System.KJSConfig.sync();
|
|
}
|
|
}
|
|
|
|
//
|
|
// Save an image file.
|
|
//
|
|
mw.saveFile = function()
|
|
{
|
|
this.save( this.imgfile );
|
|
}
|
|
|
|
//
|
|
// Save an image file.
|
|
//
|
|
mw.saveFileAs = function()
|
|
{
|
|
var filename = StdDialog.getSaveFileName( '.' );
|
|
|
|
if ( filename.length > 0 ) {
|
|
if ( this.save( filename ) ) {
|
|
sb.message( filename );
|
|
this.imgfile = filename;
|
|
openrecent_action.addURL( filename );
|
|
openrecent_action.saveEntries( System.KJSConfig.kconfig(), 'test' );
|
|
System.KJSConfig.sync();
|
|
}
|
|
}
|
|
}
|
|
|
|
mw.saveCopyAs = function()
|
|
{
|
|
var filename = StdDialog.getSaveFileName( '.' );
|
|
|
|
if ( filename.length > 0 ) {
|
|
this.save( filename );
|
|
}
|
|
}
|
|
|
|
mw.fileProperties = function()
|
|
{
|
|
var net = new NetAccess( null, 'net' );
|
|
net.propertiesDialog( 'file:' + this.imgfile );
|
|
}
|
|
|
|
mw.run_ksnapshot = function()
|
|
{
|
|
shell( 'ksnapshot' );
|
|
}
|
|
|
|
//
|
|
// Setup the actions
|
|
//
|
|
mw.setup_actions = function()
|
|
{
|
|
// File menu
|
|
open_action = StdAction.open( null, '', ac );
|
|
open_action.connect( open_action, 'activated()', this, 'openFile' );
|
|
|
|
openrecent_action = StdAction.openRecent( null, '', ac );
|
|
openrecent_action.connect( openrecent_action, 'urlSelected(const KURL&)', this, 'load' );
|
|
openrecent_action.loadEntries( System.KJSConfig.kconfig(), 'test' );
|
|
|
|
save_action = StdAction.save( null, '', ac );
|
|
save_action.connect( save_action, 'activated()', this, 'saveFile' );
|
|
|
|
saveas_action = StdAction.saveAs( null, '', ac );
|
|
saveas_action.connect( saveas_action, 'activated()', this, 'saveFileAs' );
|
|
|
|
savecopyas_action = new KAction( ac, 'save_copy_as_action' );
|
|
savecopyas_action.text = 'Save Copy As...';
|
|
savecopyas_action.icon = 'filesaveas';
|
|
savecopyas_action.connect( savecopyas_action, 'activated()', this, 'saveCopyAs' );
|
|
|
|
fileproperties_action = new KAction( ac, 'file_properties_action' );
|
|
fileproperties_action.text = 'Properties...';
|
|
fileproperties_action.connect( fileproperties_action, 'activated()', this, 'fileProperties' );
|
|
|
|
StdAction.quit( application, 'quit()', ac );
|
|
|
|
// View menu
|
|
// StdAction.fitToPage( null, '', ac );
|
|
// StdAction.fitToWidth( null, '', ac );
|
|
// StdAction.fitToHeight( null, '', ac );
|
|
// StdAction.actualSize( null, '', ac );
|
|
|
|
// StdAction.zoomIn( null, '', ac );
|
|
// StdAction.zoomOut( null, '', ac );
|
|
// StdAction.zoom( null, '', ac );
|
|
|
|
// StdAction.redisplay( null, '', ac );
|
|
|
|
// Effects
|
|
browseeffects_action = new KAction( ac, 'browseeffects_action' );
|
|
browseeffects_action.text = 'Browse Effects...';
|
|
browseeffects_action.shortcut = 'Ctrl+E';
|
|
browseeffects_action.connect( browseeffects_action, 'activated()', this, 'browse_effects' );
|
|
|
|
this.create_effect_browser();
|
|
this.create_all_effects( mw, ac );
|
|
this.create_image_operations( mw, ac );
|
|
|
|
// Tools
|
|
ksnapshot_action = new KAction( ac, 'ksnapshot_action' );
|
|
ksnapshot_action.text = 'KSnapshot';
|
|
ksnapshot_action.icon = 'ksnapshot';
|
|
ksnapshot_action.connect( ksnapshot_action, 'activated()', this, 'run_ksnapshot' );
|
|
|
|
scriptconsole_action = new KToggleAction( ac, 'scriptconsole_action' );
|
|
scriptconsole_action.text = 'Script Console';
|
|
scriptconsole_action.icon = 'konsole';
|
|
scriptconsole_action.connect( scriptconsole_action, 'toggled(bool)', part.view(), 'setShown(bool)' );
|
|
|
|
// Settings
|
|
showmenubar_action = StdAction.showMenubar( null, '', ac );
|
|
showmenubar_action.connect( showmenubar_action, 'toggled(bool)', mb, 'setShown(bool)' );
|
|
|
|
showstatusbar_action = StdAction.showStatusbar( null, '', ac );
|
|
showstatusbar_action.connect( showstatusbar_action, 'toggled(bool)', sb, 'setShown(bool)' );
|
|
|
|
// Help
|
|
StdAction.aboutApp( null, '', ac );
|
|
StdAction.aboutKDE( null, '', ac );
|
|
StdAction.help( null, '', ac );
|
|
StdAction.helpContents( null, '', ac );
|
|
}
|
|
|
|
//
|
|
// Activate XMLGUI and show the window
|
|
//
|
|
load( 'imunge_actions.js' );
|
|
mw.setup_actions();
|
|
|
|
cwd = (new TQDir()).absPath();
|
|
mw.createGUI( cwd + '/imungeui.rc' );
|
|
mw.resize( 700, 500 );
|
|
|
|
if ( application.args.length )
|
|
mw.load( application.args[0] );
|
|
|
|
mw.show();
|
|
mw.update_layout();
|
|
|
|
application.exec();
|