diff options
| -rw-r--r-- | changes/feature-3407_add-log-filtering | 1 | ||||
| -rw-r--r-- | src/leap/bitmask/gui/loggerwindow.py | 23 | ||||
| -rw-r--r-- | src/leap/bitmask/gui/mainwindow.py | 3 | ||||
| -rw-r--r-- | src/leap/bitmask/gui/ui/loggerwindow.ui | 24 | 
4 files changed, 47 insertions, 4 deletions
diff --git a/changes/feature-3407_add-log-filtering b/changes/feature-3407_add-log-filtering new file mode 100644 index 00000000..f4433af4 --- /dev/null +++ b/changes/feature-3407_add-log-filtering @@ -0,0 +1 @@ +  o Add filter option to the logger window. Closes #3407. diff --git a/src/leap/bitmask/gui/loggerwindow.py b/src/leap/bitmask/gui/loggerwindow.py index 981bf65d..9b4ba55d 100644 --- a/src/leap/bitmask/gui/loggerwindow.py +++ b/src/leap/bitmask/gui/loggerwindow.py @@ -56,6 +56,10 @@ class LoggerWindow(QtGui.QDialog):          self.ui.btnWarning.toggled.connect(self._load_history),          self.ui.btnError.toggled.connect(self._load_history),          self.ui.btnCritical.toggled.connect(self._load_history) +        self.ui.leFilterBy.textEdited.connect(self._filter_by) +        self.ui.cbCaseInsensitive.stateChanged.connect(self._load_history) + +        self._current_filter = ""          # Load logging history and connect logger with the widget          self._logging_handler = handler @@ -95,7 +99,14 @@ class LoggerWindow(QtGui.QDialog):              close_tag = "</td></tr>"              message = open_tag + message + close_tag -            self.ui.txtLogHistory.append(message) +            filter_by = self._current_filter +            msg = message +            if self.ui.cbCaseInsensitive.isChecked(): +                msg = msg.upper() +                filter_by = filter_by.upper() + +            if msg.find(filter_by) != -1: +                self.ui.txtLogHistory.append(message)      def _load_history(self):          """ @@ -120,6 +131,16 @@ class LoggerWindow(QtGui.QDialog):              logging.CRITICAL: self.ui.btnCritical.isChecked()          } +    def _filter_by(self, text): +        """ +        Sets the text to use for filtering logs in the log window. + +        :param text: the text to compare with the logs when filtering. +        :type text: str +        """ +        self._current_filter = text +        self._load_history() +      def _save_log_to_file(self):          """          Lets the user save the current log to a file diff --git a/src/leap/bitmask/gui/mainwindow.py b/src/leap/bitmask/gui/mainwindow.py index 6dd28f04..46def802 100644 --- a/src/leap/bitmask/gui/mainwindow.py +++ b/src/leap/bitmask/gui/mainwindow.py @@ -60,6 +60,7 @@ from leap.bitmask.services.eip.vpnlaunchers import EIPNoTunKextLoaded  from leap.bitmask.util import __version__ as VERSION  from leap.bitmask.util.keyring_helpers import has_keyring +from leap.bitmask.util.leap_log_handler import LeapLogHandler  from leap.bitmask.services.mail.smtpconfig import SMTPConfig @@ -359,7 +360,6 @@ class MainWindow(QtGui.QMainWindow):          :return: a logging handler or None          :rtype: LeapLogHandler or None          """ -        from leap.util.leap_log_handler import LeapLogHandler          leap_logger = logging.getLogger('leap')          for h in leap_logger.handlers:              if isinstance(h, LeapLogHandler): @@ -380,6 +380,7 @@ class MainWindow(QtGui.QMainWindow):              leap_log_handler = self._get_leap_logging_handler()              if leap_log_handler is None:                  logger.error('Leap logger handler not found') +                return              else:                  self._logger_window = LoggerWindow(handler=leap_log_handler)                  self._logger_window.setVisible( diff --git a/src/leap/bitmask/gui/ui/loggerwindow.ui b/src/leap/bitmask/gui/ui/loggerwindow.ui index b08428a9..47a1e717 100644 --- a/src/leap/bitmask/gui/ui/loggerwindow.ui +++ b/src/leap/bitmask/gui/ui/loggerwindow.ui @@ -18,10 +18,30 @@      <normaloff>:/images/mask-icon.png</normaloff>:/images/mask-icon.png</iconset>    </property>    <layout class="QGridLayout" name="gridLayout"> -   <item row="2" column="0" colspan="2"> +   <item row="2" column="0"> +    <widget class="QLabel" name="label"> +     <property name="text"> +      <string>Filter by:</string> +     </property> +    </widget> +   </item> +   <item row="2" column="1"> +    <widget class="QLineEdit" name="leFilterBy"/> +   </item> +   <item row="2" column="2"> +    <widget class="QCheckBox" name="cbCaseInsensitive"> +     <property name="text"> +      <string>Case Insensitive</string> +     </property> +     <property name="checked"> +      <bool>true</bool> +     </property> +    </widget> +   </item> +   <item row="3" column="0" colspan="3">      <widget class="QTextBrowser" name="txtLogHistory"/>     </item> -   <item row="0" column="0" colspan="2"> +   <item row="0" column="0" colspan="3">      <layout class="QHBoxLayout" name="horizontalLayout_2">       <item>        <widget class="QPushButton" name="btnDebug">  | 
