MCPcopy Create free account
hub / github.com/cxasm/notepad-- / reloadEditFile

Method reloadEditFile

src/cceditor/ccnotepad.cpp:3548–3605  ·  view source on GitHub ↗

重新加载文件。这里有个问题,文件的序号会跳动,要解决跳动问题。 这里不能销毁当前pedit,加载编码也要保持不变。而且加载的文件一定是普通文本模式 目前只在文本文件被修改后,外部自动加载的场景 如果isTailfOn == true, 则从startReadSize开始读取文件,不从头读取。startReadSize=-1则还是从头,否则从startReadSize开始

Source from the content-addressed store, hash-verified

3546//目前只在文本文件被修改后,外部自动加载的场景
3547//如果isTailfOn == true, 则从startReadSize开始读取文件,不从头读取。startReadSize=-1则还是从头,否则从startReadSize开始
3548void CCNotePad::reloadEditFile(ScintillaEditView* pEdit, bool isTailfOn, qint64 startReadSize)
3549{
3550 QString filePath = pEdit->property(Edit_View_FilePath).toString();
3551
3552 CODE_ID code = (CODE_ID)getCodeTypeProperty(pEdit);
3553 RC_LINE_FORM lineEnd;
3554 int lineNum = 0;
3555
3556 if (!isTailfOn)
3557 {
3558 lineNum = pEdit->getCurrentLineNumber();
3559}
3560
3561 //下面这个clear会触发文本修改,要避免不必要的消息循环。先屏蔽一些信号
3562 disEnableEditTextChangeSign(pEdit);
3563 if (isTailfOn && startReadSize != -1)
3564 {
3565 //如果是tail模式,则不要直接把文档清空
3566 }
3567 else
3568 {
3569 pEdit->clear();
3570 }
3571 pEdit->setProperty(Edit_Text_Change, QVariant(false));
3572 setSaveButtonStatus(false);
3573
3574 int errCode = 0;
3575
3576 if (isTailfOn && startReadSize != -1)
3577 {
3578 //使用tailf读取尾部一部分数据;而不是全部读取
3579 errCode = FileManager::getInstance().loadFileDataInTextFromOffset(pEdit, filePath, code, this, startReadSize);
3580 }
3581 else
3582 {
3583 errCode = FileManager::getInstance().loadFileDataInText(pEdit, filePath, code, lineEnd, nullptr, false, this);
3584 }
3585
3586 enableEditTextChangeSign(pEdit);
3587
3588 if (6 == errCode)
3589 {
3590 //可能存在乱码,给出警告。还是以编辑模式打开
3591 ui.statusBar->showMessage(tr("File %1 open success. But Exist Garbled code !"));
3592 }
3593 else if (errCode != 0)
3594 {
3595 ui.statusBar->showMessage(tr("reload file %1 failed").arg(filePath));
3596 return;
3597 }
3598
3599 if (isTailfOn)
3600 {
3601 lineNum = pEdit->lines();
3602 }
3603 pEdit->execute(SCI_GOTOLINE, lineNum - 1);
3604
3605}

Callers

nothing calls this directly

Calls 7

getCodeTypePropertyFunction · 0.85
getCurrentLineNumberMethod · 0.80
loadFileDataInTextMethod · 0.80
linesMethod · 0.80
clearMethod · 0.45
executeMethod · 0.45

Tested by

no test coverage detected