Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. General talk
  3. The Lounge
  4. Questions Concerning colorizing text in Ubuntu terminal.
Forum Updated to NodeBB v4.3 + New Features

Questions Concerning colorizing text in Ubuntu terminal.

Scheduled Pinned Locked Moved Unsolved The Lounge
62 Posts 6 Posters 12.4k Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Cougar 0C Offline
    Cougar 0C Offline
    Cougar 0
    wrote on last edited by
    #39

    Qt (software)
    "Non-GUI programs can also be developed, such as command-line tools and consoles for servers."

    From,
    https://en.wikipedia.org/wiki/Qt_(software)

    Cougar

    Christian EhrlicherC 1 Reply Last reply
    0
    • Cougar 0C Cougar 0

      Qt (software)
      "Non-GUI programs can also be developed, such as command-line tools and consoles for servers."

      From,
      https://en.wikipedia.org/wiki/Qt_(software)

      Christian EhrlicherC Offline
      Christian EhrlicherC Offline
      Christian Ehrlicher
      Lifetime Qt Champion
      wrote on last edited by
      #40

      @Cougar-0 Still no reason to support some kind of coloring for a special terminal type...

      Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
      Visit the Qt Academy at https://academy.qt.io/catalog

      1 Reply Last reply
      0
      • Cougar 0C Offline
        Cougar 0C Offline
        Cougar 0
        wrote on last edited by
        #41

        This is a terminal program for a master webserver.
        If QT does not support colorizing text or changing the text size in a terminal or in programs then I think it should say so.

        Cougar

        Christian EhrlicherC 1 Reply Last reply
        0
        • Cougar 0C Cougar 0

          This is a terminal program for a master webserver.
          If QT does not support colorizing text or changing the text size in a terminal or in programs then I think it should say so.

          Christian EhrlicherC Offline
          Christian EhrlicherC Offline
          Christian Ehrlicher
          Lifetime Qt Champion
          wrote on last edited by
          #42

          @Cougar-0 I'm not aware that any program can modify the text size in a terminal. And coloring is terminal-specifc.
          Not a Qt domain.

          Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
          Visit the Qt Academy at https://academy.qt.io/catalog

          1 Reply Last reply
          0
          • Cougar 0C Offline
            Cougar 0C Offline
            Cougar 0
            wrote on last edited by
            #43

            So are you saying you cannot change the color or size of text in c++?
            Because you can in perl.
            I was not aware that programs do not allow you to control and change text size and color, thanks for the info!

            Cougar

            1 Reply Last reply
            0
            • Christian EhrlicherC Offline
              Christian EhrlicherC Offline
              Christian Ehrlicher
              Lifetime Qt Champion
              wrote on last edited by
              #44

              @Cougar-0 said in Questions Concerning colorizing text in Ubuntu terminal.:

              Because you can in perl.

              You can't change the size of a terminal output in any programming language. It's the terminal which decides what it displays.

              Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
              Visit the Qt Academy at https://academy.qt.io/catalog

              1 Reply Last reply
              0
              • Cougar 0C Offline
                Cougar 0C Offline
                Cougar 0
                wrote on last edited by
                #45

                I realize I was mistaken about size in terminal, that's preset in terminal.
                But when you write a program such as "My first qt program", with that popup window I would think you should be able to control/set the text size and color.
                If not no biggy. I promise I won't lose any sleep over it.

                Cougar

                JonBJ Christian EhrlicherC 2 Replies Last reply
                0
                • Cougar 0C Cougar 0

                  I realize I was mistaken about size in terminal, that's preset in terminal.
                  But when you write a program such as "My first qt program", with that popup window I would think you should be able to control/set the text size and color.
                  If not no biggy. I promise I won't lose any sleep over it.

                  JonBJ Online
                  JonBJ Online
                  JonB
                  wrote on last edited by JonB
                  #46

                  @Cougar-0
                  You are mixing your expectations of what should happen in a terminal versus creating Qt *windows^ and thinking the same code will work there.

                  Perl does not have any particular support for "colorizing text in a terminal". Your Perl script simply writes "escape sequence" characters to the terminal and the terminal interprets that to color the text.

                  You can do what the Perl script does equally from any C or C++ program. Just write the same sequences to stdout, and if you run it from a terminal/Command Prompt it will behave like the Perl script.

                  Qt is not a programming language. It's a toolkit/library you can use from C++ (or Python). It offers many features, most notably the ability to have a UI with windows etc. But once you start using those (QWidget, QLabel, QMainWindow etc.) they don't allow colorized text in the way a terminal does. You can change text color/size/font etc. in a QLabel, and other Qt widgets, just not the same way as when you are writing text to a terminal.

                  In short: in main() just output the same characters as the Perl does via printf() or cout or whatever from C/C++. That is what the Perl program does.

                  1 Reply Last reply
                  2
                  • SGaistS Offline
                    SGaistS Offline
                    SGaist
                    Lifetime Qt Champion
                    wrote on last edited by
                    #47

                    I think there might be some misunderstanding here somehow.

                    I demonstrated how to colorize the output of qDebug. Tested it on Linux, in a terminal, to be sure (the second version of my code).

                    I am currently thinking you might be talking about the output that is within Qt Creator, which I don't know if supports the ANSI/VT100 color codes used for standard terminals.

                    Interested in AI ? www.idiap.ch
                    Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                    1 Reply Last reply
                    3
                    • Cougar 0C Cougar 0

                      I realize I was mistaken about size in terminal, that's preset in terminal.
                      But when you write a program such as "My first qt program", with that popup window I would think you should be able to control/set the text size and color.
                      If not no biggy. I promise I won't lose any sleep over it.

                      Christian EhrlicherC Offline
                      Christian EhrlicherC Offline
                      Christian Ehrlicher
                      Lifetime Qt Champion
                      wrote on last edited by Christian Ehrlicher
                      #48

                      @Cougar-0 said in Questions Concerning colorizing text in Ubuntu terminal.:

                      My first qt program", with that popup window

                      Now you're talking about a GUI, not a terminal. Please clarify to yourself what you really want to achieve.

                      Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
                      Visit the Qt Academy at https://academy.qt.io/catalog

                      1 Reply Last reply
                      0
                      • Cougar 0C Offline
                        Cougar 0C Offline
                        Cougar 0
                        wrote on last edited by
                        #49

                        Both!
                        To know how to control/set text size and color in that popup window is one.
                        To be able to set the color of text in a linux terminal is the second one.
                        Then to be able to compare the code and see its differences.
                        I made a mock up of that code. For the popup window.

                        #include <QApplication>
                        #include <QLabel>
                        #include <QWidget>
                        
                        #include <QTextSize> this is not code!
                        #include <QTextColor>  this is not code!
                        
                        int main(int argc, char *argv[ ])
                        {
                        QApplication app(argc, argv);
                        QLabel hello("<center>Welcome to my first Qt program</center>");
                        QTextSizeHello("<center>12</center>);  this is not code!
                        QTextColorHello("<center>Bold Red</center>");  this is not code!
                        hello.setWindowTitle("My First Qt Program");
                        QtextSizeWindowTitle("14");  this is not code!
                        QTextColorWindowTitle("Bold Blue");  this is not code!
                        hello.resize(400, 400);
                        hello.show();
                        return app.exec();
                        }
                        

                        The above code is is fake and I am sure very wrong but it is just give an idea of how I would think you should be able to control/set text size and color in the popup window instead of losing the popup window with the other code and the color text defaults into the terminal.
                        Hope I cleared things up for you.
                        When I searched the index in QT Creator for "Color Text", it would of been great if instead of those windows showing blank, nothing, for them to say , "Color Text is not supported at this time, or something like that.

                        Cougar

                        1 Reply Last reply
                        0
                        • Christian EhrlicherC Offline
                          Christian EhrlicherC Offline
                          Christian Ehrlicher
                          Lifetime Qt Champion
                          wrote on last edited by
                          #50

                          See QLabel::setText() and supported HTML subset.
                          Enough said about ansi escape sequences.

                          Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
                          Visit the Qt Academy at https://academy.qt.io/catalog

                          1 Reply Last reply
                          0
                          • Cougar 0C Offline
                            Cougar 0C Offline
                            Cougar 0
                            wrote on last edited by
                            #51

                            Will do, Thanks!

                            Cougar

                            1 Reply Last reply
                            0
                            • Cougar 0C Offline
                              Cougar 0C Offline
                              Cougar 0
                              wrote on last edited by Cougar 0
                              #52

                              @JonB, Thanks for pointing out that QT is not a programming language that explains a lot!
                              @JonB said in Questions Concerning colorizing text in Ubuntu terminal.:

                              Do you mean you just want to translate the 10 lines of Perl code you wrote above to C++/Qt? I will post that for you if that's what you want (no charge!).

                              If you will let me except your offer to do that I would really appreciate it!
                              I would be more than happy to compensate you for doing that!
                              Just let me know.
                              Thanks!

                              Cougar

                              1 Reply Last reply
                              0
                              • Cougar 0C Offline
                                Cougar 0C Offline
                                Cougar 0
                                wrote on last edited by Cougar 0
                                #53

                                @JonB said in Questions Concerning colorizing text in Ubuntu terminal.:

                                You are mixing your expectations of what should happen in a terminal versus creating Qt *windows^ and thinking the same code will work there.
                                You can do what the Perl script does equally from any C or C++ program. Just write the same sequences to stdout, and if you run it from a terminal/Command Prompt it will behave like the Perl script.

                                I thought the same code would work, No, I just like seeing the difference.
                                A car's engine cannot run on water, it takes gasoline.
                                But you can see the difference in the two.
                                The problem with my post is that there are two different subjects and I believe that is where I confused some you guys and started upsetting some people, of which I never meant to do that.
                                Now that I have figured all this out, you were correct from the beginning.
                                All I need is the following 8 written in Perl, rewritten in C++.

                                $SIG{__WARN__} = $old;
                                
                                  $type = "\e[1m\e[91m$type\e[0m" if ($type =~ m/(fatal|fail|error|stop)/i);# bold red
                                  $type = "\e[91m$type\e[0m" if ($type =~ m/(refused|nodevice|timeout)/i);  # red
                                  $type = "\e[93m$type\e[0m" if ($type =~ m/(reset|warning|secure|unset)/i);# yellow
                                  $type = "\e[95m$type\e[0m" if ($type =~ m/(add|update|delete)/i);         # magenta
                                  $type = "\e[96m$type\e[0m" if ($type =~ m/(list|uplink)/i);               # cyan
                                  $type = "\e[94m$type\e[0m" if ($type =~ m/(beacon|syncer)/i);             # blue
                                  $type = "\e[92m$type\e[0m" if ($type =~ m/(stat|kfnew)/i);                # green
                                  $type = "\e[1m\e[92m$type\e[0m" if ($type =~ m/(info|debug)/i);           # bold green
                                
                                  # print to stdout if enabled
                                  print "[$time]\t[$type]\t$msg\n" if $self->{printlog};
                                

                                Thank you to all who posted and tried to help this old man!
                                @JonB, I'd be glad to compensate you for doing this, my email address. wpt1114 at yahoo.com
                                Thanks

                                Cougar

                                JonBJ 2 Replies Last reply
                                0
                                • Cougar 0C Cougar 0

                                  @JonB said in Questions Concerning colorizing text in Ubuntu terminal.:

                                  You are mixing your expectations of what should happen in a terminal versus creating Qt *windows^ and thinking the same code will work there.
                                  You can do what the Perl script does equally from any C or C++ program. Just write the same sequences to stdout, and if you run it from a terminal/Command Prompt it will behave like the Perl script.

                                  I thought the same code would work, No, I just like seeing the difference.
                                  A car's engine cannot run on water, it takes gasoline.
                                  But you can see the difference in the two.
                                  The problem with my post is that there are two different subjects and I believe that is where I confused some you guys and started upsetting some people, of which I never meant to do that.
                                  Now that I have figured all this out, you were correct from the beginning.
                                  All I need is the following 8 written in Perl, rewritten in C++.

                                  $SIG{__WARN__} = $old;
                                  
                                    $type = "\e[1m\e[91m$type\e[0m" if ($type =~ m/(fatal|fail|error|stop)/i);# bold red
                                    $type = "\e[91m$type\e[0m" if ($type =~ m/(refused|nodevice|timeout)/i);  # red
                                    $type = "\e[93m$type\e[0m" if ($type =~ m/(reset|warning|secure|unset)/i);# yellow
                                    $type = "\e[95m$type\e[0m" if ($type =~ m/(add|update|delete)/i);         # magenta
                                    $type = "\e[96m$type\e[0m" if ($type =~ m/(list|uplink)/i);               # cyan
                                    $type = "\e[94m$type\e[0m" if ($type =~ m/(beacon|syncer)/i);             # blue
                                    $type = "\e[92m$type\e[0m" if ($type =~ m/(stat|kfnew)/i);                # green
                                    $type = "\e[1m\e[92m$type\e[0m" if ($type =~ m/(info|debug)/i);           # bold green
                                  
                                    # print to stdout if enabled
                                    print "[$time]\t[$type]\t$msg\n" if $self->{printlog};
                                  

                                  Thank you to all who posted and tried to help this old man!
                                  @JonB, I'd be glad to compensate you for doing this, my email address. wpt1114 at yahoo.com
                                  Thanks

                                  JonBJ Online
                                  JonBJ Online
                                  JonB
                                  wrote on last edited by
                                  #54

                                  @Cougar-0
                                  I have just seen your post and will translate just these lines to C++ using Qt to do the regular expression matching. I have to go shopping in 30+ minutes time, I hope to have posted it by then.

                                  1 Reply Last reply
                                  0
                                  • Cougar 0C Cougar 0

                                    @JonB said in Questions Concerning colorizing text in Ubuntu terminal.:

                                    You are mixing your expectations of what should happen in a terminal versus creating Qt *windows^ and thinking the same code will work there.
                                    You can do what the Perl script does equally from any C or C++ program. Just write the same sequences to stdout, and if you run it from a terminal/Command Prompt it will behave like the Perl script.

                                    I thought the same code would work, No, I just like seeing the difference.
                                    A car's engine cannot run on water, it takes gasoline.
                                    But you can see the difference in the two.
                                    The problem with my post is that there are two different subjects and I believe that is where I confused some you guys and started upsetting some people, of which I never meant to do that.
                                    Now that I have figured all this out, you were correct from the beginning.
                                    All I need is the following 8 written in Perl, rewritten in C++.

                                    $SIG{__WARN__} = $old;
                                    
                                      $type = "\e[1m\e[91m$type\e[0m" if ($type =~ m/(fatal|fail|error|stop)/i);# bold red
                                      $type = "\e[91m$type\e[0m" if ($type =~ m/(refused|nodevice|timeout)/i);  # red
                                      $type = "\e[93m$type\e[0m" if ($type =~ m/(reset|warning|secure|unset)/i);# yellow
                                      $type = "\e[95m$type\e[0m" if ($type =~ m/(add|update|delete)/i);         # magenta
                                      $type = "\e[96m$type\e[0m" if ($type =~ m/(list|uplink)/i);               # cyan
                                      $type = "\e[94m$type\e[0m" if ($type =~ m/(beacon|syncer)/i);             # blue
                                      $type = "\e[92m$type\e[0m" if ($type =~ m/(stat|kfnew)/i);                # green
                                      $type = "\e[1m\e[92m$type\e[0m" if ($type =~ m/(info|debug)/i);           # bold green
                                    
                                      # print to stdout if enabled
                                      print "[$time]\t[$type]\t$msg\n" if $self->{printlog};
                                    

                                    Thank you to all who posted and tried to help this old man!
                                    @JonB, I'd be glad to compensate you for doing this, my email address. wpt1114 at yahoo.com
                                    Thanks

                                    JonBJ Online
                                    JonBJ Online
                                    JonB
                                    wrote on last edited by JonB
                                    #55

                                    @Cougar-0
                                    Here are those Perl lines rewritten in C++ + Qt for the reg exs.

                                        QString type;
                                        type = "This is a fatal message";
                                        //type = "This is a debug message";
                                    
                                        if (type.contains(QRegularExpression("(fatal|fail|error|stop)")))
                                            type = QString("\e[1m\e[91m%1\e[0m").arg(type);
                                        if (type.contains(QRegularExpression("(refused|nodevice|timeout)")))
                                            type = QString("\e[91m%1\e[0m").arg(type);
                                        if (type.contains(QRegularExpression("(reset|warning|secure|unset)")))
                                            type = QString("\e[93m%1\e[0m").arg(type);
                                        if (type.contains(QRegularExpression("(add|update|delete)")))
                                            type = QString("\e[95m%1\e[0m").arg(type);
                                        if (type.contains(QRegularExpression("(list|uplink)")))
                                            type = QString("\e[96m%1\e[0m").arg(type);
                                        if (type.contains(QRegularExpression("(beacon|syncer)")))
                                            type = QString("\e[94m%1\e[0m").arg(type);
                                        if (type.contains(QRegularExpression("(stat|kfnew)")))
                                            type = QString("\e[92m%1\e[0m").arg(type);
                                        if (type.contains(QRegularExpression("(info|debug)")))
                                            type = QString("\e[1m\e[92m%1\e[0m").arg(type);
                                    
                                        qDebug() << type;
                                    

                                    You will need #include <QRegularExpression> at the start of your source file. You should put these lines somewhere after the initial QApplication app(argc, argv);.

                                    You will note this is similar to what @SGaist wrote much earlier above. I have stuck to rigidly translating your Perl just as-is.

                                    You have a string variable named type. You need to set it to whatever you want before the code (I show a couple of examples), and after the code it has been changed to the original with the colorizing sequences.

                                    In practice you will want these lines in some re-usable function, so that the outside world can pass in the desired string for type. The function might then output the result string, or it might return that string for use in the caller.

                                    The Perl code as translated will not fare well if the input string contains more than one of the words for different colors (e.g. "This is fatal list info"), but that is how the Perl code has been written.

                                    Finally I would remind you again that this will only show colorized if you send the output to a terminal, e.g. run it as a command-line application in a Windows Command Prompt or Linux xterm. We could adapt this principle to produce, say, a string which you could use on a QLabel in a Qt UI application; just it would not use the same escape sequences as you have (we could do text coloring by HTML which is accepted by a QLabel instead).

                                    1 Reply Last reply
                                    2
                                    • Cougar 0C Offline
                                      Cougar 0C Offline
                                      Cougar 0
                                      wrote on last edited by
                                      #56

                                      alt text
                                      Thanks @JonB, @SGaist , you guys helped me learn a lot!
                                      Which brings me to this.
                                      Now I understand the code you guys gave is for a stand alone program to be ran in terminal.
                                      The code commands the terminal to colorize what words you tell it to.

                                      Below is the file from my friends program "MasterServer" , named "logevent.cpp"

                                      #include "logger.h"
                                      
                                      void Logger::logEvent(const QString &messageType,
                                                            const QString &message)
                                      {
                                          // printing to display suppressed?
                                          if ( ! _suppressDisplay.contains(messageType) and ! _suppressDisplay.contains("all") )
                                          {
                                              QString dateTimeStr(QDateTime::currentDateTime().toString("dd-MM-yyyy HH:mm:ss:zzz"));
                                              logPrimitive() << QStringLiteral("[%1][%2]\t%3").arg(dateTimeStr, messageType, message) << endl;
                                          }
                                      
                                          // printing to logfile suppressed?
                                          if ( ! _suppressLog.contains(messageType) and ! _suppressLog.contains("all") )
                                          {
                                              // write message to log
                                              QString dateTimeStr(QDateTime::currentDateTime().toString("dd-MM-yyyy HH:mm:ss:zzz"));
                                              writeLogFile( QStringLiteral("[%1][%2]\t%3").arg(dateTimeStr, messageType, message) );
                                          }
                                      }
                                      

                                      I believe this is the file that can be used to insert the ansi escape sequence code in. That has the correct syntax and will compile and be read by my friends program telling the terminal what color to color certain words if they appear.

                                      My bad example!

                                      
                                      void Logger::logEvent(const QString &messageType,
                                                            const QString &message)
                                      *********************************************************************
                                      "INSERT , BUT WITH ALL THE CORRECT CODE /SYNTAX!
                                      if (type.contains(QRegularExpression("(fatal|fail|error|stop)")))
                                              type = QString("\e[1m\e[91m%1\e[0m").arg(type);
                                          if (type.contains(QRegularExpression("(refused|nodevice|timeout)")))
                                              type = QString("\e[91m%1\e[0m").arg(type);
                                      
                                      @JonB , I am using your rewrite code for this bad example. I must admit when I saw your code and it had "type" in it I knew this file had type in it so I was hoping with a little work (rewrite) it would work, but no  luck. 
                                      Now if anyone can see a better place to insert or the correct way of doing this please by all means have at it!
                                      If this cannot be done then It can't be done.
                                      
                                      *********************************************************************
                                      {
                                          // printing to display suppressed?
                                          if ( ! _suppressDisplay.contains(messageType) and ! _suppressDisplay.contains("all") )
                                          {
                                              QString dateTimeStr(QDateTime::currentDateTime().toString("dd-MM-yyyy HH:mm:ss:zzz"));
                                              logPrimitive() << QStringLiteral("[%1][%2]\t%3").arg(dateTimeStr, messageType, message) << endl;
                                          }
                                      
                                          // printing to logfile suppressed?
                                          if ( ! _suppressLog.contains(messageType) and ! _suppressLog.contains("all") )
                                          {
                                              // write message to log
                                              QString dateTimeStr(QDateTime::currentDateTime().toString("dd-MM-yyyy HH:mm:ss:zzz"));
                                              writeLogFile( QStringLiteral("[%1][%2]\t%3").arg(dateTimeStr, messageType, message) );
                                          }
                                      }
                                      

                                      Again I want to thank all who replied and tried to help this old man.
                                      I've learned a lot, I just hope most of you still have most of your hair left!
                                      For me, it's been fun!
                                      Thanks!

                                      Cougar

                                      JonBJ 1 Reply Last reply
                                      0
                                      • Cougar 0C Cougar 0

                                        alt text
                                        Thanks @JonB, @SGaist , you guys helped me learn a lot!
                                        Which brings me to this.
                                        Now I understand the code you guys gave is for a stand alone program to be ran in terminal.
                                        The code commands the terminal to colorize what words you tell it to.

                                        Below is the file from my friends program "MasterServer" , named "logevent.cpp"

                                        #include "logger.h"
                                        
                                        void Logger::logEvent(const QString &messageType,
                                                              const QString &message)
                                        {
                                            // printing to display suppressed?
                                            if ( ! _suppressDisplay.contains(messageType) and ! _suppressDisplay.contains("all") )
                                            {
                                                QString dateTimeStr(QDateTime::currentDateTime().toString("dd-MM-yyyy HH:mm:ss:zzz"));
                                                logPrimitive() << QStringLiteral("[%1][%2]\t%3").arg(dateTimeStr, messageType, message) << endl;
                                            }
                                        
                                            // printing to logfile suppressed?
                                            if ( ! _suppressLog.contains(messageType) and ! _suppressLog.contains("all") )
                                            {
                                                // write message to log
                                                QString dateTimeStr(QDateTime::currentDateTime().toString("dd-MM-yyyy HH:mm:ss:zzz"));
                                                writeLogFile( QStringLiteral("[%1][%2]\t%3").arg(dateTimeStr, messageType, message) );
                                            }
                                        }
                                        

                                        I believe this is the file that can be used to insert the ansi escape sequence code in. That has the correct syntax and will compile and be read by my friends program telling the terminal what color to color certain words if they appear.

                                        My bad example!

                                        
                                        void Logger::logEvent(const QString &messageType,
                                                              const QString &message)
                                        *********************************************************************
                                        "INSERT , BUT WITH ALL THE CORRECT CODE /SYNTAX!
                                        if (type.contains(QRegularExpression("(fatal|fail|error|stop)")))
                                                type = QString("\e[1m\e[91m%1\e[0m").arg(type);
                                            if (type.contains(QRegularExpression("(refused|nodevice|timeout)")))
                                                type = QString("\e[91m%1\e[0m").arg(type);
                                        
                                        @JonB , I am using your rewrite code for this bad example. I must admit when I saw your code and it had "type" in it I knew this file had type in it so I was hoping with a little work (rewrite) it would work, but no  luck. 
                                        Now if anyone can see a better place to insert or the correct way of doing this please by all means have at it!
                                        If this cannot be done then It can't be done.
                                        
                                        *********************************************************************
                                        {
                                            // printing to display suppressed?
                                            if ( ! _suppressDisplay.contains(messageType) and ! _suppressDisplay.contains("all") )
                                            {
                                                QString dateTimeStr(QDateTime::currentDateTime().toString("dd-MM-yyyy HH:mm:ss:zzz"));
                                                logPrimitive() << QStringLiteral("[%1][%2]\t%3").arg(dateTimeStr, messageType, message) << endl;
                                            }
                                        
                                            // printing to logfile suppressed?
                                            if ( ! _suppressLog.contains(messageType) and ! _suppressLog.contains("all") )
                                            {
                                                // write message to log
                                                QString dateTimeStr(QDateTime::currentDateTime().toString("dd-MM-yyyy HH:mm:ss:zzz"));
                                                writeLogFile( QStringLiteral("[%1][%2]\t%3").arg(dateTimeStr, messageType, message) );
                                            }
                                        }
                                        

                                        Again I want to thank all who replied and tried to help this old man.
                                        I've learned a lot, I just hope most of you still have most of your hair left!
                                        For me, it's been fun!
                                        Thanks!

                                        JonBJ Online
                                        JonBJ Online
                                        JonB
                                        wrote on last edited by JonB
                                        #57

                                        @Cougar-0 said in Questions Concerning colorizing text in Ubuntu terminal.:

                                        @JonB , I am using your rewrite code for this bad example. I must admit when I saw your code and it had "type" in it I knew this file had type in it so I was hoping with a little work (rewrite) it would work, but no luck.
                                        Now if anyone can see a better place to insert or the correct way of doing this please by all means have at it!
                                        If this cannot be done then It can't be done.

                                        As I said, I translated the Perl code as-is to do exactly the same.

                                        Here I am guessing the const QString &message parameter to logEvent is the string you want to display/save/pass on with colorizing escape sequences, instead of the original $type Perl variable or the type in the C++. Unlike that example, here we cannot alter the const QString &message input parameter because of the const. So we shall need a new variable to put the escape sequences in. Just change my code to something like:

                                        void Logger::logEvent(const QString &messageType,
                                                              const QString &message)
                                        {
                                            QString colorizedMessage(message);
                                        
                                            if (colorizedMessage.contains(QRegularExpression("(fatal|fail|error|stop)")))
                                                colorizedMessage = QString("\e[1m\e[91m%1\e[0m").arg(colorizedMessage);
                                            if (colorizedMessage.contains(QRegularExpression("(refused|nodevice|timeout)")))
                                                colorizedMessage = QString("\e[91m%1\e[0m").arg(colorizedMessage);
                                            ...
                                            // Now `colorizedMessage` holds the original `message` with any escape sequences
                                            // so you can do with it as you will, e.g.
                                            // printing to display suppressed?
                                            if ( ! _suppressDisplay.contains(messageType) and ! _suppressDisplay.contains("all") )
                                            {
                                                QString dateTimeStr(QDateTime::currentDateTime().toString("dd-MM-yyyy HH:mm:ss:zzz"));
                                                logPrimitive() << QStringLiteral("[%1][%2]\t%3").arg(dateTimeStr, messageType, colorizedMessage) << endl;
                                            }
                                        
                                            // printing to logfile suppressed?
                                            if ( ! _suppressLog.contains(messageType) and ! _suppressLog.contains("all") )
                                            {
                                                // write message to log
                                                QString dateTimeStr(QDateTime::currentDateTime().toString("dd-MM-yyyy HH:mm:ss:zzz"));
                                                writeLogFile( QStringLiteral("[%1][%2]\t%3").arg(dateTimeStr, messageType, colorizedMessage) );
                                            }
                                        }
                                        
                                        1 Reply Last reply
                                        0
                                        • Cougar 0C Offline
                                          Cougar 0C Offline
                                          Cougar 0
                                          wrote on last edited by
                                          #58

                                          @JonB , used your updated file and it started comping beautifully until,

                                          Logger/logevent.cpp:1:6: error: ‘Logger’ has not been declared
                                              1 | void Logger::logEvent(const QString &messageType,
                                                |      ^~~~~~
                                          Logger/logevent.cpp:1:29: error: ‘QString’ does not name a type
                                              1 | void Logger::logEvent(const QString &messageType,
                                                |                             ^~~~~~~
                                          Logger/logevent.cpp:2:29: error: ‘QString’ does not name a type
                                              2 |                       const QString &message)
                                                |                             ^~~~~~~
                                          Logger/logevent.cpp: In function ‘void logEvent(const int&, const int&)’:
                                          Logger/logevent.cpp:4:5: error: ‘QString’ was not declared in this scope
                                              4 |     QString colorizedMessage(message);
                                                |     ^~~~~~~
                                          Logger/logevent.cpp:6:9: error: ‘colorizedMessage’ was not declared in this scope
                                              6 |     if (colorizedMessage.contains(QRegularExpression("update")))
                                                |         ^~~~~~~~~~~~~~~~
                                          Logger/logevent.cpp:6:35: error: ‘QRegularExpression’ was not declared in this scope
                                              6 |     if (colorizedMessage.contains(QRegularExpression("update")))
                                                |                                   ^~~~~~~~~~~~~~~~~~
                                          Logger/logevent.cpp:8:9: error: ‘colorizedMessage’ was not declared in this scope
                                              8 |     if (colorizedMessage.contains(QRegularExpression("check")))
                                                |         ^~~~~~~~~~~~~~~~
                                          Logger/logevent.cpp:8:35: error: ‘QRegularExpression’ was not declared in this scope
                                              8 |     if (colorizedMessage.contains(QRegularExpression("check")))
                                                |                                   ^~~~~~~~~~~~~~~~~~
                                          Logger/logevent.cpp:10:5: error: expected primary-expression before ‘...’ token
                                             10 |     ...
                                                |     ^~~
                                          Logger/logevent.cpp:21:12: error: ‘_suppressLog’ was not declared in this scope
                                             21 |     if ( ! _suppressLog.contains(messageType) and ! _suppressLog.contains("all") )
                                                |            ^~~~~~~~~~~~
                                          Logger/logevent.cpp:24:16: error: expected ‘;’ before ‘dateTimeStr’
                                             24 |         QString dateTimeStr(QDateTime::currentDateTime().toString("dd-MM-yyyy HH:mm:ss:zzz"));
                                                |                ^~~~~~~~~~~~
                                                |                ;
                                          Logger/logevent.cpp:25:23: error: ‘QStringLiteral’ was not declared in this scope
                                             25 |         writeLogFile( QStringLiteral("[%1][%2]\t%3").arg(dateTimeStr, messageType, colorizedMessage) );
                                                |                       ^~~~~~~~~~~~~~
                                          Logger/logevent.cpp:25:58: error: ‘dateTimeStr’ was not declared in this scope
                                             25 |         writeLogFile( QStringLiteral("[%1][%2]\t%3").arg(dateTimeStr, messageType, colorizedMessage) );
                                                |                                                          ^~~~~~~~~~~
                                          Logger/logevent.cpp:25:84: error: ‘colorizedMessage’ was not declared in this scope
                                             25 | QStringLiteral("[%1][%2]\t%3").arg(dateTimeStr, messageType, colorizedMessage) );
                                                |                                                              ^~~~~~~~~~~~~~~~
                                          
                                          Logger/logevent.cpp:25:9: error: ‘writeLogFile’ was not declared in this scope
                                             25 |         writeLogFile( QStringLiteral("[%1][%2]\t%3").arg(dateTimeStr, messageType, colorizedMessage) );
                                                |         ^~~~~~~~~~~~
                                          Logger/logevent.cpp:2:38: warning: unused parameter ‘message’ [-Wunused-parameter]
                                              2 |                       const QString &message)
                                                |                       ~~~~~~~~~~~~~~~^~~~~~~
                                          Logger/logevent.cpp: At global scope:
                                          Logger/logevent.cpp:29:1: error: expected unqualified-id before numeric constant
                                             29 | 0
                                                | ^
                                          make: *** [Makefile:819: logevent.o] Error 1
                                          cougarxr7@GoneSpy:~/Programs/TestingQt5/MasterServer-Qt5-master/src$ 
                                          

                                          I am beginning to believe we can't get there from here....
                                          Tell me what I did wrong, please.

                                          Cougar

                                          JonBJ 1 Reply Last reply
                                          0

                                          • Login

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Users
                                          • Groups
                                          • Search
                                          • Get Qt Extensions
                                          • Unsolved