File: ErrorHandler.h

package info (click to toggle)
exadrums 0.7.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 5,728 kB
  • sloc: cpp: 2,880; xml: 165; makefile: 76
file content (65 lines) | stat: -rw-r--r-- 1,858 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#ifndef SOURCE_UTIL_ERRORHANDLER_H_
#define SOURCE_UTIL_ERRORHANDLER_H_

#include <libexadrums/Util/ErrorHandling.h>

#include <gtkmm/messagedialog.h>

#include <iostream>

namespace Errors
{

    static void errorDialog(const Util::Exception& e, bool printError = true)
    {
        if(printError)
        {
            std::cerr << e.what() << '\n';
        }

        Gtk::MessageType message_type;
        std::string message;

        switch(e.type())
        {

            case Util::errorType::error_type_success: 
                message = "Success"; 
                message_type = static_cast<Gtk::MessageType>(Util::errorType::error_type_success);
                break;

            case Util::errorType::error_type_warning: 
                message = "Warning"; 
                message_type = static_cast<Gtk::MessageType>(Util::errorType::error_type_warning);
                break;

            case Util::errorType::error_type_question: 
                message = "Question"; 
                message_type = static_cast<Gtk::MessageType>(Util::errorType::error_type_question);
                break;

            case Util::errorType::error_type_error: 
                message = "Error"; 
                message_type = static_cast<Gtk::MessageType>(Util::errorType::error_type_error);
                break;

            default: 
                message = "Information"; 
                message_type = static_cast<Gtk::MessageType>(Util::errorType::error_type_other);
                break;
        }

        Gtk::MessageDialog d(e.what(), false, message_type, Gtk::ButtonsType::BUTTONS_OK, true);
        d.set_title(message);
        d.set_keep_above();
        d.run();
    }

    inline void errorDialog(std::string&& text, const Util::errorType& t)
    {
        errorDialog(Util::Exception(std::move(text), t));
    }

}

#endif