Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
sdkjs
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Boris Kocherov
sdkjs
Commits
5b264090
Commit
5b264090
authored
Jun 15, 2016
by
Ilya Kirillov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Рефакторинг функции Add_NewParagraph. Сделан первоначальный вариант этой функции для сносок.
parent
a929970c
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
181 additions
and
151 deletions
+181
-151
word/Editor/Document.js
word/Editor/Document.js
+141
-148
word/Editor/DocumentControllerBase.js
word/Editor/DocumentControllerBase.js
+7
-0
word/Editor/DrawingsController.js
word/Editor/DrawingsController.js
+7
-3
word/Editor/Footnotes.js
word/Editor/Footnotes.js
+18
-0
word/Editor/HeaderFooterController.js
word/Editor/HeaderFooterController.js
+4
-0
word/Editor/LogicDocumentController.js
word/Editor/LogicDocumentController.js
+4
-0
No files found.
word/Editor/Document.js
View file @
5b264090
...
...
@@ -3666,154 +3666,8 @@ CDocument.prototype.Draw_Borders = function(Graphics
*/
CDocument
.
prototype
.
Add_NewParagraph
=
function
(
bRecalculate
,
bForceAdd
)
{
// Работаем с колонтитулом
if
(
docpostype_HdrFtr
===
this
.
CurPos
.
Type
)
{
return
this
.
HdrFtr
.
Add_NewParagraph
(
bRecalculate
);
}
else
if
(
docpostype_DrawingObjects
===
this
.
CurPos
.
Type
)
{
return
this
.
DrawingObjects
.
addNewParagraph
(
bRecalculate
);
}
else
// if ( docpostype_Content === this.CurPos.Type )
{
if
(
this
.
CurPos
.
ContentPos
<
0
)
return
false
;
// Сначала удаляем заселекченую часть
if
(
true
===
this
.
Selection
.
Use
)
{
this
.
Remove
(
1
,
true
);
}
// Добавляем новый параграф
var
Item
=
this
.
Content
[
this
.
CurPos
.
ContentPos
];
// Если мы внутри параграфа, тогда:
// 1. Если мы в середине параграфа, разделяем данный параграф на 2.
// При этом полностью копируем все настройки из исходного параграфа.
// 2. Если мы в конце данного параграфа, тогда добавляем новый пустой параграф.
// Стиль у него проставляем такой какой указан у текущего в Style.Next.
// Если при этом у нового параграфа стиль будет такой же как и у старого,
// в том числе если стиля нет у обоих, тогда копируем еще все прямые настройки.
// (Т.е. если стили разные, а у исходный параграф был параграфом со списком, тогда
// новый параграф будет без списка).
if
(
type_Paragraph
==
Item
.
GetType
())
{
// Если текущий параграф пустой и с нумерацией, тогда удаляем нумерацию и отступы левый и первой строки
if
(
true
!==
bForceAdd
&&
undefined
!=
Item
.
Numbering_Get
()
&&
true
===
Item
.
IsEmpty
({
SkipNewLine
:
true
})
&&
true
===
Item
.
Cursor_IsStart
())
{
Item
.
Numbering_Remove
();
Item
.
Set_Ind
({
FirstLine
:
undefined
,
Left
:
undefined
,
Right
:
Item
.
Pr
.
Ind
.
Right
},
true
);
}
else
{
var
ItemReviewType
=
Item
.
Get_ReviewType
();
// Создаем новый параграф
var
NewParagraph
=
new
Paragraph
(
this
.
DrawingDocument
,
this
,
0
,
0
,
0
,
0
,
0
);
// Проверим позицию в текущем параграфе
if
(
true
===
Item
.
Cursor_IsEnd
())
{
var
StyleId
=
Item
.
Style_Get
();
var
NextId
=
undefined
;
if
(
undefined
!=
StyleId
)
{
NextId
=
this
.
Styles
.
Get_Next
(
StyleId
);
if
(
null
===
NextId
)
NextId
=
StyleId
;
}
if
(
StyleId
===
NextId
)
{
// Продолжаем (в плане настроек) новый параграф
Item
.
Continue
(
NewParagraph
);
}
else
{
// Простое добавление стиля, без дополнительных действий
if
(
NextId
===
this
.
Styles
.
Get_Default_Paragraph
())
NewParagraph
.
Style_Remove
();
else
NewParagraph
.
Style_Add
(
NextId
,
true
);
}
var
SectPr
=
Item
.
Get_SectionPr
();
if
(
undefined
!==
SectPr
)
{
Item
.
Set_SectionPr
(
undefined
);
NewParagraph
.
Set_SectionPr
(
SectPr
);
}
}
else
{
Item
.
Split
(
NewParagraph
);
}
this
.
Internal_Content_Add
(
this
.
CurPos
.
ContentPos
+
1
,
NewParagraph
);
this
.
CurPos
.
ContentPos
++
;
// Отмечаем, что последний измененный элемент - предыдущий параграф
this
.
ContentLastChangePos
=
this
.
CurPos
.
ContentPos
-
1
;
if
(
true
===
this
.
Is_TrackRevisions
())
{
NewParagraph
.
Remove_PrChange
();
NewParagraph
.
Set_ReviewType
(
ItemReviewType
);
Item
.
Set_ReviewType
(
reviewtype_Add
);
}
else
if
(
reviewtype_Common
!==
ItemReviewType
)
{
NewParagraph
.
Set_ReviewType
(
ItemReviewType
);
Item
.
Set_ReviewType
(
reviewtype_Common
);
}
}
if
(
false
!=
bRecalculate
)
{
this
.
Recalculate
();
this
.
Document_UpdateInterfaceState
();
//this.Document_UpdateRulersState()
this
.
Document_UpdateSelectionState
();
}
}
else
if
(
type_Table
==
Item
.
GetType
())
{
// Если мы находимся в начале первого параграфа первой ячейки, и
// данная таблица - первый элемент, тогда добавляем параграф до таблицы.
if
(
0
===
this
.
CurPos
.
ContentPos
&&
Item
.
Cursor_IsStart
(
true
))
{
// Создаем новый параграф
var
NewParagraph
=
new
Paragraph
(
this
.
DrawingDocument
,
this
,
0
,
0
,
0
,
0
,
0
);
this
.
Internal_Content_Add
(
0
,
NewParagraph
);
this
.
ContentLastChangePos
=
0
;
this
.
CurPos
.
ContentPos
=
0
;
if
(
false
!=
bRecalculate
)
{
this
.
Recalculate
();
this
.
Document_UpdateInterfaceState
();
//this.Document_UpdateRulersState()
this
.
Document_UpdateSelectionState
();
}
if
(
true
===
this
.
Is_TrackRevisions
())
{
NewParagraph
.
Remove_PrChange
();
NewParagraph
.
Set_ReviewType
(
reviewtype_Add
);
}
}
else
Item
.
Add_NewParagraph
(
bRecalculate
);
}
}
// TODO: Пересчит нужно перенести сюда, и убрать из контроллеров
this
.
Controller
.
AddNewParagraph
(
bRecalculate
,
bForceAdd
);
};
/**
* Расширяем документ до точки (X,Y) с помощью новых параграфов.
...
...
@@ -16316,6 +16170,145 @@ CDocument.prototype.controller_GetCurPage = function()
return
-
1
;
};
CDocument
.
prototype
.
controller_AddNewParagraph
=
function
(
bRecalculate
,
bForceAdd
)
{
if
(
this
.
CurPos
.
ContentPos
<
0
)
return
false
;
// Сначала удаляем заселекченую часть
if
(
true
===
this
.
Selection
.
Use
)
{
this
.
Remove
(
1
,
true
);
}
// Добавляем новый параграф
var
Item
=
this
.
Content
[
this
.
CurPos
.
ContentPos
];
// Если мы внутри параграфа, тогда:
// 1. Если мы в середине параграфа, разделяем данный параграф на 2.
// При этом полностью копируем все настройки из исходного параграфа.
// 2. Если мы в конце данного параграфа, тогда добавляем новый пустой параграф.
// Стиль у него проставляем такой какой указан у текущего в Style.Next.
// Если при этом у нового параграфа стиль будет такой же как и у старого,
// в том числе если стиля нет у обоих, тогда копируем еще все прямые настройки.
// (Т.е. если стили разные, а у исходный параграф был параграфом со списком, тогда
// новый параграф будет без списка).
if
(
type_Paragraph
==
Item
.
GetType
())
{
// Если текущий параграф пустой и с нумерацией, тогда удаляем нумерацию и отступы левый и первой строки
if
(
true
!==
bForceAdd
&&
undefined
!=
Item
.
Numbering_Get
()
&&
true
===
Item
.
IsEmpty
({
SkipNewLine
:
true
})
&&
true
===
Item
.
Cursor_IsStart
())
{
Item
.
Numbering_Remove
();
Item
.
Set_Ind
({
FirstLine
:
undefined
,
Left
:
undefined
,
Right
:
Item
.
Pr
.
Ind
.
Right
},
true
);
}
else
{
var
ItemReviewType
=
Item
.
Get_ReviewType
();
// Создаем новый параграф
var
NewParagraph
=
new
Paragraph
(
this
.
DrawingDocument
,
this
,
0
,
0
,
0
,
0
,
0
);
// Проверим позицию в текущем параграфе
if
(
true
===
Item
.
Cursor_IsEnd
())
{
var
StyleId
=
Item
.
Style_Get
();
var
NextId
=
undefined
;
if
(
undefined
!=
StyleId
)
{
NextId
=
this
.
Styles
.
Get_Next
(
StyleId
);
if
(
null
===
NextId
)
NextId
=
StyleId
;
}
if
(
StyleId
===
NextId
)
{
// Продолжаем (в плане настроек) новый параграф
Item
.
Continue
(
NewParagraph
);
}
else
{
// Простое добавление стиля, без дополнительных действий
if
(
NextId
===
this
.
Styles
.
Get_Default_Paragraph
())
NewParagraph
.
Style_Remove
();
else
NewParagraph
.
Style_Add
(
NextId
,
true
);
}
var
SectPr
=
Item
.
Get_SectionPr
();
if
(
undefined
!==
SectPr
)
{
Item
.
Set_SectionPr
(
undefined
);
NewParagraph
.
Set_SectionPr
(
SectPr
);
}
}
else
{
Item
.
Split
(
NewParagraph
);
}
this
.
Internal_Content_Add
(
this
.
CurPos
.
ContentPos
+
1
,
NewParagraph
);
this
.
CurPos
.
ContentPos
++
;
// Отмечаем, что последний измененный элемент - предыдущий параграф
this
.
ContentLastChangePos
=
this
.
CurPos
.
ContentPos
-
1
;
if
(
true
===
this
.
Is_TrackRevisions
())
{
NewParagraph
.
Remove_PrChange
();
NewParagraph
.
Set_ReviewType
(
ItemReviewType
);
Item
.
Set_ReviewType
(
reviewtype_Add
);
}
else
if
(
reviewtype_Common
!==
ItemReviewType
)
{
NewParagraph
.
Set_ReviewType
(
ItemReviewType
);
Item
.
Set_ReviewType
(
reviewtype_Common
);
}
}
if
(
false
!=
bRecalculate
)
{
this
.
Recalculate
();
this
.
Document_UpdateInterfaceState
();
//this.Document_UpdateRulersState()
this
.
Document_UpdateSelectionState
();
}
}
else
if
(
type_Table
==
Item
.
GetType
())
{
// Если мы находимся в начале первого параграфа первой ячейки, и
// данная таблица - первый элемент, тогда добавляем параграф до таблицы.
if
(
0
===
this
.
CurPos
.
ContentPos
&&
Item
.
Cursor_IsStart
(
true
))
{
// Создаем новый параграф
var
NewParagraph
=
new
Paragraph
(
this
.
DrawingDocument
,
this
,
0
,
0
,
0
,
0
,
0
);
this
.
Internal_Content_Add
(
0
,
NewParagraph
);
this
.
ContentLastChangePos
=
0
;
this
.
CurPos
.
ContentPos
=
0
;
if
(
false
!=
bRecalculate
)
{
this
.
Recalculate
();
this
.
Document_UpdateInterfaceState
();
//this.Document_UpdateRulersState()
this
.
Document_UpdateSelectionState
();
}
if
(
true
===
this
.
Is_TrackRevisions
())
{
NewParagraph
.
Remove_PrChange
();
NewParagraph
.
Set_ReviewType
(
reviewtype_Add
);
}
}
else
Item
.
Add_NewParagraph
(
bRecalculate
);
}
};
CDocument
.
prototype
.
controller_CursorMoveLeft
=
function
(
AddToSelect
,
Word
)
{
if
(
this
.
CurPos
.
ContentPos
<
0
)
...
...
word/Editor/DocumentControllerBase.js
View file @
5b264090
...
...
@@ -197,6 +197,13 @@ CDocumentControllerBase.prototype.RecalculateCurPos = function(){};
* @returns {number} -1 - значит, номер страницы определеить невозможно
*/
CDocumentControllerBase
.
prototype
.
GetCurPage
=
function
(){
return
-
1
;};
/**
* Добавляем новый параграф.
* @param {boolean} bRecalculate - Пересчитывать или нет.
* @param {boolean} bForceAdd - Добавляем параграф, пропуская всякие проверки типа пустого параграфа с нумерацией.
* @constructor
*/
CDocumentControllerBase
.
prototype
.
AddNewParagraph
=
function
(
bRecalculate
,
bForceAdd
){
return
false
;};
/**
* Смещаем курсор влево
* @param {boolean} AddToSelect Добавлять ли к селекту смещение
...
...
word/Editor/DrawingsController.js
View file @
5b264090
...
...
@@ -36,6 +36,10 @@ CDrawingsController.prototype.GetCurPage = function()
return
-
1
;
};
CDrawingsController
.
prototype
.
AddNewParagraph
=
function
(
bRecalculate
,
bForceAdd
)
{
return
this
.
DrawingObjects
.
addNewParagraph
(
bRecalculate
,
bForceAdd
);
};
CDrawingsController
.
prototype
.
Cursor_MoveLeft
=
function
(
AddToSelect
,
Word
)
{
return
this
.
DrawingObjects
.
cursorMoveLeft
(
AddToSelect
,
Word
);
...
...
@@ -50,9 +54,9 @@ CDrawingsController.prototype.AddToParagraph = function(oItem, bRecalculate)
return
;
this
.
DrawingObjects
.
paragraphAdd
(
oItem
,
bRecalculate
);
this
.
Logic
d
ocument
.
Document_UpdateSelectionState
();
this
.
Logic
d
ocument
.
Document_UpdateUndoRedoState
();
this
.
Logic
d
ocument
.
Document_UpdateInterfaceState
();
this
.
Logic
D
ocument
.
Document_UpdateSelectionState
();
this
.
Logic
D
ocument
.
Document_UpdateUndoRedoState
();
this
.
Logic
D
ocument
.
Document_UpdateInterfaceState
();
};
word/Editor/Footnotes.js
View file @
5b264090
...
...
@@ -272,6 +272,24 @@ CFootnotesController.prototype.GetCurPage = function()
return
-
1
;
};
CFootnotesController
.
prototype
.
AddNewParagraph
=
function
(
bRecalculate
,
bForceAdd
)
{
var
bRetValue
=
false
;
// TODO: Доделать селект и курсор
if
(
true
===
this
.
Selection
.
Use
)
{
}
else
{
if
(
null
!==
this
.
CurFootnote
)
bRetValue
=
this
.
CurFootnote
.
Add_NewParagraph
(
bRecalculate
,
bForceAdd
);
}
return
bRetValue
;
};
CFootnotesController
.
prototype
.
Cursor_MoveLeft
=
function
(
AddToSelect
,
Word
)
{
var
bRetValue
=
false
;
...
...
word/Editor/HeaderFooterController.js
View file @
5b264090
...
...
@@ -39,6 +39,10 @@ CHdrFtrController.prototype.GetCurPage = function()
return
-
1
;
};
CHdrFtrController
.
prototype
.
AddNewParagraph
=
function
(
bRecalculate
,
bForceAdd
)
{
return
this
.
HdrFtr
.
Add_NewParagraph
(
bRecalculate
,
bForceAdd
);
};
CHdrFtrController
.
prototype
.
Cursor_MoveLeft
=
function
(
AddToSelect
,
Word
)
{
return
this
.
HdrFtr
.
Cursor_MoveLeft
(
AddToSelect
,
Word
);
...
...
word/Editor/LogicDocumentController.js
View file @
5b264090
...
...
@@ -29,6 +29,10 @@ CLogicDocumentController.prototype.GetCurPage = function()
{
return
this
.
LogicDocument
.
controller_GetCurPage
();
};
CLogicDocumentController
.
prototype
.
AddNewParagraph
=
function
(
bRecalculate
,
bForceAdd
)
{
return
this
.
LogicDocument
.
controller_AddNewParagraph
(
bRecalculate
,
bForceAdd
);
};
CLogicDocumentController
.
prototype
.
Cursor_MoveLeft
=
function
(
AddToSelect
,
Word
)
{
return
this
.
LogicDocument
.
controller_CursorMoveLeft
(
AddToSelect
,
Word
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment