Cохранение всех открытых документов

  • Автор темы Автор темы George
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

George

I wish I was a monster you think I am
Топикстартер
15 лет на форуме
Сообщения
17 532
Реакции
7 929
Подсобите полезным для всех скриптиком, кто работает с большим количеством открытых публикаций одновременно.
ТЗ:
1. Сохраняет все открытые документы, в т.ч. открытые book;
2. По выполнению диалог: "Закрыть все документы?" YES-NO
3. Если п. 2 есть ДА, закрывает все доки и буки.

Заранее спасибо.
 
Пункт 2 избыточен, если все документы сохранены, то любая команда выхода закроет индизайн без лишних вопросов.
Хотя если нравятся модальные сообщения, то можно просто сообщить что сохранение выполнено.
А можно воспользоваться простыми шорткатами на сохранение и закрытие всех документов http://indesignsecrets.com/save-all-open-documents.php

Не по теме:
А в ворде 2003 зажимаешь shift и плюхаешься на меню файл, но после заменили интерфейс на sdi.
 
  • Спасибо
Реакции: George
Тю блин - в меню не увидел и подумал, что нету. А "закрыть всё" они не прятали?
By default the shortcut is Command-Option-Shift-S / Ctrl+Alt+Shift+S,
 
Последнее редактирование:
Ctrl+alt+shift+w - закрыть все доки, нашёл там в комментах.

Правда тема сейва бука сразу с доками не раскрыта.
 
Насчет book не уверен.
Не закрывает, и вопроса на закрытие нет. В общем моё ТЗ актуально, если у кого из скриптологов есть время.
Но мне уже достаточно шоткатов, о которых чего-то не знал.
 
Код:
var myBook = app.activeBook;
if ( !myBook.isValid )
{
    alert('No open books');
    exit();
}
var myBookContents = myBook.bookContents;

var can_close_book = true;
for ( var k = 0; k < myBookContents.length; k++ )
{
    if ( myBookContents[k].status == BookContentStatus.DOCUMENT_IS_OPEN || myBookContents[k].status == BookContentStatus.DOCUMENT_OUT_OF_DATE )
    {
        var doc = app.documents.item(myBookContents[k].name);
        doc.save();
        doc.close();
    }
    else if ( myBookContents[k].status == BookContentStatus.DOCUMENT_IN_USE )
    {
        alert("Document "+myBookContents[k].name+" in use, try later.");
        can_close_book = false;
    }
    else if ( myBookContents[k].status == BookContentStatus.MISSING_DOCUMENT )
    {
        alert("Document "+myBookContents[k].name+" are missing.");
        can_close_book = false;
    }
}

if ( can_close_book ) myBook.close(SaveOptions.YES);
 
  • Спасибо
Реакции: George
Только он всё не просто сохранил, но и закрыл "без спросу", с буком как положено :)
А можно ли вопрос диалоговый, чтобы задавал - закрыть всё или нет.
 
Код:
var myBook = app.activeBook;
if ( !myBook.isValid )
{
    alert('No open books');
    exit();
}
var myBookContents = myBook.bookContents;

var w = new Window ("dialog","Сохранение книги");
var msg = w.add ("statictext");
msg.text = "Закрыть документы после сохранения?";
var BG = w.add ("group");
BG.alignment = "right";
BG.add ("button", undefined, "Да", {name: "Ok"});
var no = BG.add ("button", undefined, "Нет");
BG.add ("button", undefined, "Отмена", {name: "Cancel"});
no.onClick = function(){ w.close(3); }

var res = w.show();
var bClose= false;
if ( res == 1 ) { bClose = true; }

var can_close_book = true;
for ( var k = 0; k < myBookContents.length; k++ )
{
    if ( myBookContents[k].status == BookContentStatus.DOCUMENT_IS_OPEN || myBookContents[k].status == BookContentStatus.DOCUMENT_OUT_OF_DATE )
    {
        var doc = app.documents.item(myBookContents[k].name);
        doc.save();
        if ( bClose ) { doc.close(); }
    }
    else if ( myBookContents[k].status == BookContentStatus.DOCUMENT_IN_USE )
    {
        alert("Document "+myBookContents[k].name+" in use, try later.");
        can_close_book = false;
    }
    else if ( myBookContents[k].status == BookContentStatus.MISSING_DOCUMENT )
    {
        alert("Document "+myBookContents[k].name+" are missing.");
        can_close_book = false;
    }
}
if ( can_close_book && bClose ) myBook.close(SaveOptions.YES);
else if ( can_close_book ) myBook.save();
 
  • Спасибо
Реакции: George
Код:
if ( res == 1 ) { bClose = true; }
else if ( res == 2 ) { exit(); }
потерялось..
 
Статус
Закрыто для дальнейших ответов.