-
Notifications
You must be signed in to change notification settings - Fork 1
/
cdocument.cpp
99 lines (68 loc) · 2.61 KB
/
cdocument.cpp
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
/**************************************************************************
Copyright (C) 2011 Claudio Cannatà.
This file is part of Magnum.
Magnum is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Magnum is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Magnum. If not, see <http://www.gnu.org/licenses/>.
**************************************************************************/
#include "cdocument.h"
CDocument::CDocument(const QString& file){
m_editor = new CCodeEditor();
m_editor->setDocumentOwner( this );
m_fileInfo.setFile( "Untitled.src" );
if( !file.isNull() && file.length() > 0 )
loadFromFile(file);
}
CDocument::~CDocument(){
delete m_editor;
}
CMagnum_TextBlock* CDocument::blockDataAt(int linenumber){
QTextBlock b = editor()->document()->findBlockByLineNumber(linenumber);
return CMagnum_TextBlock::getDataByBlock( &b );
}
CCodeEditor* CDocument::editor(){
return m_editor;
}
const QFileInfo& CDocument::fileInfo(){
return m_fileInfo;
}
bool CDocument::saveToFile(const QString &file){
QString savename( m_fileInfo.absoluteFilePath() );
if( file.length() > 0 )
savename = file;
else if( !m_fileInfo.exists() ){
savename = QFileDialog::getSaveFileName( 0 , "Save to.." );
}
QFile fileq( savename );
if( !fileq.open( QIODevice::WriteOnly ) ){
QMessageBox::critical( 0 , "Save failed!" , "Unable to open the file for save!" );
return false;
}
QByteArray bit8 = m_editor->toPlainText().toLocal8Bit();
qint64 savedBytes = fileq.write( bit8 );
fileq.close();
if( savedBytes != bit8.size() ){
QMessageBox::critical( 0 , "Save failed!" , "Seem that not all bytes have been written." );
return false;
}
editor()->document()->setModified( false );
return true;
}
bool CDocument::loadFromFile(const QString & filename ){
QFile file(filename);
if( !file.open( QIODevice::ReadOnly ) ){
QMessageBox::warning( 0 , "Error" , "Unable to open file!" );
return false;
}
m_editor->setPlainText( file.readAll() );
file.close();
m_fileInfo.setFile( filename );
return true;
}