Example #1
0
void SaveAsPanel::handleButtonPressed(Button* button, Button::ActivationVariant variant)
{
    if (button == saveButton)
    {
        String utf8FileName = editField->getTextData()->getAsString();
        String newFileName  = EncodingConverter::convertUtf8ToLocaleStringIgnoreErrors(utf8FileName);
        
        RawPtr<TextData> textData = editorWidget->getTextData();
        
        if (textData->isFileNamePseudo() || textData->getFileName() != newFileName)
        {
            File::Info newFile = File(newFileName).getInfo();
            
            if (newFile.exists())
            {
                if (newFile.isFile() && newFile.isWritable())
                {
                    messageBoxInvoker->call(MessageBoxParameter()
                                            .setTitle("File exists")
                                            .setMessage(String() << "File '" << utf8FileName << "' exists.")
                                            .setDefaultButton("S]ave", newCallback(this, &SaveAsPanel::continueSave))
                                            .setCancelButton("Ca]ncel"));
                }
                else if (!newFile.isFile()) {
                    messageBoxInvoker->call(MessageBoxParameter()
                                            .setTitle("Not a file")
                                            .setMessage(String() << "'" << utf8FileName << "' exists and is not a file."));
                }
                else if (!newFile.isWritable()) {
                    messageBoxInvoker->call(MessageBoxParameter()
                                            .setTitle("Not writable")
                                            .setMessage(String() << "'" << utf8FileName << "' exists and is not writable."));
                }
                else {
                    ASSERT(false);
                }
            }
            else {
                continueSave();
            }
        }
        else {
            continueSave();
        }
    }
    else if (button == cancelButton) {
        requestClose();
    }
}
Example #2
0
    virtual void handleSaveKey()
    {
        try {
            RawPtr<TextData> textData = editorTopWin->textData;

            if (textData->isFileNamePseudo()) {
                editorTopWin->invokeSaveAsPanel(newCallback(this, &ActionInterface::handleSaveKey));
            }
            else {
                editorTopWin->save();
            }
        } catch (...) {
            editorTopWin->handleCatchedException();
        }
    }
Example #3
0
void SaveAsPanel::show()
{
    RawPtr<TextData> textData = editorWidget->getTextData();
    
    String newContent;
    if (textData->isFileNamePseudo()) 
    {
        String dirName = File(textData->getFileName()).getDirName();
        newContent = String() << EncodingConverter::convertLocaleToUtf8StringIgnoreErrors(dirName)
                              << "/";
    } else {
        String absName = File(textData->getFileName()).getAbsoluteName();
        newContent     = EncodingConverter::convertLocaleToUtf8StringIgnoreErrors(absName);
    }
    editField->getTextData()->setToString(newContent);
    editField->getTextData()->clearHistory();
    editField->setCursorPosition(newContent.getLength());

    setFocus(editField);

    DialogPanel::show();
}