@@ -865,7 +865,11 @@ void PlainTextEdit::setCanHaveBreakpoints(bool canHaveBreakpoints)
865865int PlainTextEdit::lineNumberAreaWidth ()
866866{
867867 int digits = 2 ;
868- int max = qMax (1 , document ()->blockCount ());
868+ int lines = document ()->blockCount ();
869+ if (mpBaseEditor->isModelicaModelInPackageOneFile ()) {
870+ lines = document ()->blockCount () + mpBaseEditor->getModelWidget ()->getLibraryTreeItem ()->mClassInformation .lineNumberStart ;
871+ }
872+ int max = qMax (1 , lines);
869873 while (max >= 100 ) {
870874 max /= 10 ;
871875 ++digits;
@@ -937,18 +941,16 @@ void PlainTextEdit::lineNumberAreaPaintEvent(QPaintEvent *event)
937941 if (pTextBlockUserData && canHaveBreakpoints ()) {
938942 int xoffset = 0 ;
939943 foreach (ITextMark *mk, pTextBlockUserData->marks ()) {
940- int x = 0 ;
941944 int radius = fmLineSpacing;
942- QRect r (x + xoffset, top, radius, radius);
945+ QRect r (xoffset, top, radius, radius);
943946 mk->icon ().paint (&painter, r, Qt::AlignCenter);
944947 xoffset += 2 ;
945948 }
946949 }
947950 /* paint line numbers */
948951 if (block.isVisible () && bottom >= event->rect ().top ()) {
949952 QString number;
950- if (mpBaseEditor->getModelWidget () && mpBaseEditor->getModelWidget ()->getLibraryTreeItem ()->isInPackageOneFile () &&
951- mpBaseEditor->getModelWidget ()->getLibraryTreeItem ()->getLibraryType () == LibraryTreeItem::Modelica) {
953+ if (mpBaseEditor->isModelicaModelInPackageOneFile ()) {
952954 number = QString::number (blockNumber + mpBaseEditor->getModelWidget ()->getLibraryTreeItem ()->mClassInformation .lineNumberStart );
953955 } else {
954956 number = QString::number (blockNumber + 1 );
@@ -1046,6 +1048,9 @@ void PlainTextEdit::lineNumberAreaMouseEvent(QMouseEvent *event)
10461048 }
10471049 QString fileName = mpBaseEditor->getModelWidget ()->getLibraryTreeItem ()->getFileName ();
10481050 int lineNumber = cursor.blockNumber () + 1 ;
1051+ if (mpBaseEditor->isModelicaModelInPackageOneFile ()) {
1052+ lineNumber = cursor.blockNumber () + mpBaseEditor->getModelWidget ()->getLibraryTreeItem ()->mClassInformation .lineNumberStart ;
1053+ }
10491054 if (event->button () == Qt::LeftButton) { // ! left clicked: add/remove breakpoint
10501055 toggleBreakpoint (fileName, lineNumber);
10511056 } else if (event->button () == Qt::RightButton) { // ! right clicked: show context menu
@@ -1079,8 +1084,7 @@ void PlainTextEdit::lineNumberAreaMouseEvent(QMouseEvent *event)
10791084 */
10801085void PlainTextEdit::goToLineNumber (int lineNumber)
10811086{
1082- if (mpBaseEditor->getModelWidget () && mpBaseEditor->getModelWidget ()->getLibraryTreeItem ()->isInPackageOneFile () &&
1083- mpBaseEditor->getModelWidget ()->getLibraryTreeItem ()->getLibraryType () == LibraryTreeItem::Modelica) {
1087+ if (mpBaseEditor->isModelicaModelInPackageOneFile ()) {
10841088 int lineNumberStart = mpBaseEditor->getModelWidget ()->getLibraryTreeItem ()->mClassInformation .lineNumberStart ;
10851089 int lineNumberDifferenceFromStart = lineNumberStart - 1 ;
10861090 lineNumber -= lineNumberDifferenceFromStart;
@@ -1416,7 +1420,10 @@ void PlainTextEdit::updateCursorPosition()
14161420{
14171421 if (mpBaseEditor->getModelWidget () && isVisible ()) {
14181422 const QTextBlock block = textCursor ().block ();
1419- const int line = block.blockNumber () + 1 ;
1423+ int line = block.blockNumber () + 1 ;
1424+ if (mpBaseEditor->isModelicaModelInPackageOneFile ()) {
1425+ line = block.blockNumber () + mpBaseEditor->getModelWidget ()->getLibraryTreeItem ()->mClassInformation .lineNumberStart ;
1426+ }
14201427 const int column = textCursor ().columnNumber ();
14211428 Label *pPositionLabel = MainWindow::instance ()->getPositionLabel ();
14221429 pPositionLabel->setText (QString (" Ln: %1, Col: %2" ).arg (line).arg (column));
@@ -2037,6 +2044,13 @@ QString BaseEditor::wordUnderCursor()
20372044 return cursor.selectedText ();
20382045}
20392046
2047+ bool BaseEditor::isModelicaModelInPackageOneFile ()
2048+ {
2049+ return (mpModelWidget &&
2050+ mpModelWidget->getLibraryTreeItem ()->isInPackageOneFile () &&
2051+ mpModelWidget->getLibraryTreeItem ()->getLibraryType () == LibraryTreeItem::Modelica);
2052+ }
2053+
20402054/* !
20412055 * \brief BaseEditor::initialize
20422056 * Initializes the editor with default values.
@@ -2786,16 +2800,16 @@ GotoLineDialog::GotoLineDialog(BaseEditor *pBaseEditor)
27862800 */
27872801int GotoLineDialog::exec ()
27882802{
2789- if (mpBaseEditor->getModelWidget () && mpBaseEditor->getModelWidget ()->getLibraryTreeItem ()->isInPackageOneFile () &&
2790- mpBaseEditor->getModelWidget ()->getLibraryTreeItem ()->getLibraryType () == LibraryTreeItem::Modelica) {
2791- int lineNumberStart = mpBaseEditor->getModelWidget ()->getLibraryTreeItem ()->mClassInformation .lineNumberStart ;
2792- mpLineNumberLabel->setText (tr (" Enter line number (%1 to %2):" ).arg (QString::number (lineNumberStart))
2793- .arg (QString::number (mpBaseEditor->getPlainTextEdit ()->blockCount () + lineNumberStart - 1 )));
2803+ QIntValidator *intValidator = new QIntValidator (this );
2804+ if (mpBaseEditor->isModelicaModelInPackageOneFile ()) {
2805+ int from = mpBaseEditor->getModelWidget ()->getLibraryTreeItem ()->mClassInformation .lineNumberStart ;
2806+ int to = mpBaseEditor->getPlainTextEdit ()->blockCount () + from - 1 ;
2807+ mpLineNumberLabel->setText (tr (" Enter line number (%1 to %2):" ).arg (from).arg (to));
2808+ intValidator->setRange (from, to);
27942809 } else {
2795- mpLineNumberLabel->setText (tr (" Enter line number (1 to %1):" ).arg (QString::number (mpBaseEditor->getPlainTextEdit ()->blockCount ())));
2810+ mpLineNumberLabel->setText (tr (" Enter line number (1 to %1):" ).arg (mpBaseEditor->getPlainTextEdit ()->blockCount ()));
2811+ intValidator->setRange (1 , mpBaseEditor->getPlainTextEdit ()->blockCount ());
27962812 }
2797- QIntValidator *intValidator = new QIntValidator (this );
2798- intValidator->setRange (1 , mpBaseEditor->getPlainTextEdit ()->blockCount ());
27992813 mpLineNumberTextBox->setValidator (intValidator);
28002814 return QDialog::exec ();
28012815}
0 commit comments