From dfd2355c18dae2a054186a12a23b2d24ea4812fb Mon Sep 17 00:00:00 2001 From: Sanel Zukan Date: Mon, 6 Jul 2009 11:51:25 +0000 Subject: [PATCH] Some text alignement in ede-bug-report so it can be easily read in the source. Rewriten ede-crasher. Now is able to call ede-bug-report, display png icon, do backtrace in random temporary files and etc. --- .../ede-bug-report/ede-bug-report.cpp | 5 +- ede-bug-tools/ede-crasher/CoreIcon.h | 374 ++++++++++++ ede-bug-tools/ede-crasher/CrashDialog.cpp | 430 +++++++------- ede-bug-tools/ede-crasher/CrashDialog.h | 57 +- ede-bug-tools/ede-crasher/GdbOutput.cpp | 144 +++++ ede-bug-tools/ede-crasher/GdbOutput.h | 42 ++ ede-bug-tools/ede-crasher/Jamfile | 2 +- ede-bug-tools/ede-crasher/ede-crasher.cpp | 55 +- ede-bug-tools/ede-crasher/fl/crash.fl | 20 +- .../ede-crasher/fl/crash_expanded.fl | 24 +- ede-bug-tools/ede-crasher/icons/core.png | Bin 0 -> 3812 bytes ede-bug-tools/ede-crasher/icons/core.xpm | 532 ++++-------------- 12 files changed, 940 insertions(+), 745 deletions(-) create mode 100644 ede-bug-tools/ede-crasher/CoreIcon.h create mode 100644 ede-bug-tools/ede-crasher/GdbOutput.cpp create mode 100644 ede-bug-tools/ede-crasher/GdbOutput.h create mode 100644 ede-bug-tools/ede-crasher/icons/core.png diff --git a/ede-bug-tools/ede-bug-report/ede-bug-report.cpp b/ede-bug-tools/ede-bug-report/ede-bug-report.cpp index 4bec0de..4ab9048 100644 --- a/ede-bug-tools/ede-bug-report/ede-bug-report.cpp +++ b/ede-bug-tools/ede-bug-report/ede-bug-report.cpp @@ -143,7 +143,10 @@ int main(int argc, char** argv) { title_box->labelsize(14); title_box->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE); - Fl_Box *description_box = new Fl_Box(80, 45, 390, 95, _("To help us to improve the future EDE versions, please describe the problem with much details as possible.\n\nNote: valid email address is required, so developers could contact you for more informations if necessary.")); + Fl_Box *description_box = new Fl_Box(80, 45, 390, 95, _("To help us to improve the future EDE versions, " + "please describe the problem with much details as possible.\n\nNote: valid email address is required, so " + "developers could contact you for more informations if necessary.")); + description_box->align(133|FL_ALIGN_INSIDE); bug_title_input = new Fl_Input(10, 165, 225, 25, _("Short and descriptive title:")); diff --git a/ede-bug-tools/ede-crasher/CoreIcon.h b/ede-bug-tools/ede-crasher/CoreIcon.h new file mode 100644 index 0000000..dc313b0 --- /dev/null +++ b/ede-bug-tools/ede-crasher/CoreIcon.h @@ -0,0 +1,374 @@ +#ifndef __COREICON_H__ +#define __COREICON_H__ + +#include +static unsigned char idata_core[] = +{255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255, +255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0, +255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255, +255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255, +255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0, +255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255, +255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255, +255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0, +255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255, +255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255, +255,255,0,255,255,255,0,255,255,255,0,151,153,156,0,146,148,150,0,147,149,152,0, +149,152,154,0,154,157,159,0,158,160,162,0,160,162,164,0,163,165,167,0,166,169, +171,0,168,170,172,0,169,171,173,0,170,172,174,0,171,173,175,0,170,172,174,0,172, +174,176,0,170,172,174,0,172,174,176,0,183,185,187,0,207,208,210,0,57,58,59,0,0, +0,0,0,41,36,26,0,255,221,158,0,255,224,164,0,255,241,216,0,255,240,215,0,255, +238,209,0,255,238,209,0,255,238,193,32,255,235,85,160,255,222,8,205,255,212,27, +9,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255, +255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0, +255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,151,153, +156,0,146,148,150,0,147,149,152,0,149,152,154,0,154,157,159,0,158,160,162,0,160, +162,164,0,163,165,167,0,166,169,171,0,168,170,172,0,169,171,173,0,170,172,174,0, +171,173,175,0,170,172,174,0,172,174,176,0,170,172,174,0,172,174,176,0,183,185, +187,0,207,208,210,0,57,58,59,0,0,0,0,0,41,38,27,0,255,226,166,0,255,224,161,23, +255,231,127,127,255,233,98,153,255,231,99,150,255,230,80,182,255,226,30,246,255, +206,0,255,255,179,0,172,255,175,0,5,255,255,255,0,255,255,255,0,255,255,255,0, +255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255, +255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255, +255,255,0,255,255,255,0,151,153,156,0,146,148,150,0,147,149,152,0,149,152,154,0, +154,157,159,0,158,160,162,0,160,162,164,0,163,165,167,0,167,169,171,0,169,171, +173,0,171,173,175,0,173,175,177,0,174,176,178,4,173,175,177,5,175,177,179,3,173, +175,177,0,173,175,177,0,184,186,188,0,207,209,211,0,57,58,58,0,0,0,0,0,19,16,13, +0,231,192,113,32,255,207,37,220,255,201,0,255,255,201,0,255,255,195,0,255,255, +180,0,248,255,163,0,188,255,151,0,67,255,161,0,2,255,179,0,0,255,255,255,0,255, +255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0, +255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255, +255,0,255,255,255,0,255,255,255,0,255,255,255,0,151,153,156,0,146,148,150,0,147, +149,152,0,149,152,154,0,154,157,159,0,158,161,163,0,161,164,166,0,165,167,170,8, +167,169,171,66,162,164,166,110,158,160,162,152,153,155,157,195,150,153,155,213, +149,152,154,214,151,154,156,210,156,158,160,187,162,165,167,140,180,182,183,101, +205,207,209,43,81,81,82,59,93,93,92,181,79,83,91,160,154,115,32,179,255,146,0, +255,255,142,0,159,255,184,0,31,255,180,0,36,255,161,0,18,255,155,0,0,255,153,0, +0,255,165,0,0,255,179,0,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255, +255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255, +255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0, +255,255,255,0,151,153,156,0,146,148,150,0,147,149,152,0,149,152,154,0,156,159, +161,0,160,162,164,27,154,157,158,133,141,144,146,213,126,128,130,255,111,113, +115,255,97,99,101,255,87,89,90,255,82,83,85,255,81,83,84,255,85,87,88,255,93,95, +96,255,106,109,110,255,127,130,131,255,159,161,163,247,170,172,173,243,199,200, +201,255,166,166,167,255,81,82,84,255,75,28,9,254,75,27,0,67,92,65,0,0,217,150,0, +0,255,172,0,0,255,163,0,0,255,154,0,0,255,165,0,0,255,179,0,0,255,255,255,0, +255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255, +255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255, +255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,151,153,156,0,146,148,150,0, +148,150,153,0,152,155,157,16,147,150,152,141,129,132,134,242,106,108,110,255,78, +80,81,255,52,54,54,255,42,43,44,255,53,54,54,255,65,66,66,255,71,72,72,255,71, +71,72,255,64,65,65,255,53,53,54,255,40,41,42,255,48,50,51,255,76,78,79,255,109, +111,112,255,125,128,130,255,129,132,133,255,77,79,81,255,6,8,10,255,0,0,0,245,0, +0,0,62,12,8,0,0,86,55,0,0,214,133,0,0,253,159,0,0,255,174,0,0,255,182,0,0,255, +255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0, +255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255, +255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,151,153,156,0,147, +150,152,0,147,150,152,66,131,134,135,221,102,104,106,255,68,70,71,255,36,37,38, +255,61,61,62,255,115,116,116,255,170,170,170,255,220,220,220,255,238,238,238, +255,245,245,245,255,245,245,245,255,236,236,236,255,216,216,216,255,164,164,164, +255,107,107,107,255,61,61,61,255,32,33,34,255,58,60,60,255,89,91,92,255,109,112, +113,255,78,80,82,255,13,13,14,255,0,0,0,153,0,0,0,0,0,0,0,0,0,0,0,0,69,38,0,0, +177,111,0,0,228,157,0,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0, +255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255, +255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255, +255,255,0,153,155,158,0,142,144,146,117,116,118,120,251,80,82,83,255,37,38,39, +255,46,46,47,255,147,147,147,255,231,231,231,255,255,255,255,255,255,255,255, +255,252,252,252,255,250,250,250,255,251,251,251,255,250,250,250,255,246,246,246, +255,241,241,241,255,237,237,237,255,229,229,229,255,201,201,201,255,130,130,130, +255,48,48,48,255,28,29,29,255,66,67,68,255,101,103,105,255,97,99,101,255,66,68, +69,134,73,74,75,0,73,74,75,0,69,72,75,0,59,66,75,0,63,68,75,0,89,85,75,0,255, +255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0, +255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255, +255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,141,143,146,140, +104,106,107,255,65,67,68,255,21,22,22,255,88,88,88,255,214,214,214,255,249,249, +249,255,243,243,243,255,241,241,241,255,242,242,242,255,243,243,243,255,244,244, +244,255,244,244,244,255,243,243,243,255,238,238,238,255,232,232,232,255,223,223, +223,255,212,212,212,255,202,202,202,255,196,195,195,255,166,166,166,255,82,82, +82,255,17,18,18,255,50,51,51,255,91,94,95,255,127,130,132,245,154,156,158,77, +155,158,160,0,153,157,159,0,153,157,159,0,153,156,159,0,148,153,159,0,255,255, +255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255, +255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0, +255,255,255,0,255,255,255,0,255,255,255,0,142,144,147,123,98,100,102,255,57,58, +59,255,12,12,12,255,101,101,101,255,224,224,224,255,229,229,229,255,229,229, +229,255,233,233,233,255,235,235,235,255,237,237,237,255,238,238,238,255,238,238, +238,255,238,238,238,255,236,236,236,255,232,232,232,255,225,225,225,255,217,217, +217,255,207,207,207,255,195,195,195,255,180,180,180,255,167,167,167,255,156,156, +156,255,86,86,86,255,9,10,10,255,41,42,42,255,81,83,84,255,122,124,126,244,145, +148,150,56,144,147,149,0,144,147,149,0,144,147,149,0,144,147,149,0,255,255,255, +0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255, +255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0, +255,255,255,0,255,255,255,0,149,151,154,76,102,104,106,255,56,57,58,255,5,5,5, +255,77,77,77,255,208,208,208,255,211,211,211,255,216,216,216,255,222,222,222, +255,227,227,227,255,230,230,230,255,231,231,231,255,232,232,232,255,232,232,232, +255,231,231,231,255,229,229,229,255,224,224,224,255,218,218,218,255,210,210,210, +255,200,200,200,255,188,188,188,255,173,173,173,255,158,158,158,255,141,141,141, +255,129,129,129,255,62,62,62,255,2,2,2,255,38,38,39,255,82,83,85,255,126,129, +131,216,144,147,149,17,142,145,147,0,142,145,147,0,142,145,147,0,255,255,255,0, +255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255, +255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255, +255,255,0,156,158,161,19,114,116,118,222,62,63,64,255,12,12,12,255,30,30,30,255, +176,176,176,255,193,193,193,255,200,200,200,255,208,208,208,255,214,214,214,255, +219,219,219,255,222,222,222,255,224,224,224,255,225,225,225,255,225,225,225,255, +223,223,223,255,221,221,221,255,216,216,216,255,210,210,210,255,201,201,201,255, +191,191,191,255,179,179,179,255,166,166,166,255,150,150,150,255,133,133,133,255, +114,114,114,255,96,96,96,255,26,26,26,255,1,1,2,255,42,43,43,255,90,92,93,255, +132,135,137,156,140,144,146,0,139,142,144,0,139,142,144,0,255,255,255,0,255,255, +255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255, +255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0, +133,135,137,159,74,76,77,255,24,25,25,255,0,0,0,255,126,126,126,255,176,176,176, +255,180,180,180,255,191,191,191,255,199,199,199,255,205,205,205,255,210,210,210, +255,214,214,214,255,215,215,215,255,216,216,216,255,216,216,216,255,214,214,214, +255,211,211,211,255,207,207,207,255,201,201,201,255,192,192,192,255,182,182,182, +255,170,170,170,255,157,157,157,255,141,141,141,255,124,124,124,255,104,104,104, +255,85,85,85,255,52,52,52,255,0,0,0,255,9,9,9,255,54,55,56,255,104,107,108,255, +135,138,140,75,135,138,140,0,135,138,140,0,255,255,255,0,255,255,255,0,255,255, +255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255, +255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,152,155,158,46,95,97,98,247, +41,42,42,255,0,0,0,255,15,15,15,255,143,143,143,255,161,161,161,255,170,170, +170,255,181,181,181,255,189,189,189,255,195,195,195,255,200,200,200,255,204,204, +204,255,205,205,205,255,207,207,207,255,207,207,207,255,206,206,206,255,202,202, +202,255,197,197,197,255,190,190,190,255,182,182,182,255,172,172,172,255,160,160, +160,255,147,147,147,255,131,131,131,255,113,113,113,255,94,94,94,255,73,73,73, +255,50,50,50,255,10,10,10,255,0,0,0,255,21,21,22,255,72,74,75,255,119,121,123, +188,133,136,138,0,131,134,136,0,255,255,255,0,255,255,255,0,255,255,255,0,255, +255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0, +255,255,255,0,255,255,255,0,255,255,255,0,129,131,134,150,62,63,64,255,15,15,15, +255,0,0,0,255,5,5,5,255,72,72,72,255,151,151,151,255,160,160,160,255,169,169, +169,255,177,177,177,255,183,183,183,255,190,190,190,255,197,197,197,255,199,199, +199,255,195,195,195,255,189,189,189,255,186,186,186,255,185,185,185,255,186,186, +186,255,182,182,182,255,172,172,172,255,161,161,161,255,149,149,149,255,135,135, +135,255,119,119,119,255,102,102,102,255,82,82,82,255,61,61,61,255,39,39,39,255, +13,13,13,255,0,0,0,255,2,2,2,255,42,42,43,255,94,96,97,255,128,131,132,66,127, +130,132,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0, +255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255, +255,0,157,159,162,16,100,102,103,226,35,35,36,255,0,0,0,255,13,13,13,255,22,22, +22,255,13,13,13,255,83,83,83,255,153,153,153,255,158,158,158,255,167,167,167, +255,177,177,177,255,171,171,171,255,152,152,152,255,139,139,139,255,124,124,124, +255,119,119,119,255,120,120,120,255,121,121,121,255,128,128,128,255,139,139,139, +255,145,145,145,255,148,148,148,255,138,138,138,255,122,122,122,255,105,105,105, +255,89,89,89,255,70,70,70,255,48,48,48,255,26,26,26,255,8,8,8,255,0,0,0,255,0,0, +0,255,17,17,18,255,68,70,71,255,116,119,120,140,123,127,127,0,255,255,255,0, +255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255, +255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,145,147,150,77,69, +71,71,255,14,14,15,255,0,0,0,255,32,32,32,255,72,72,72,255,11,11,11,255,19,19, +19,255,85,85,85,255,148,148,148,255,142,142,142,255,109,109,109,255,87,87,87, +255,81,81,81,255,87,87,87,255,94,94,94,255,99,99,99,255,101,101,101,255,101,101, +101,255,98,98,98,255,94,94,94,255,91,91,91,255,96,96,96,255,104,104,104,255,107, +107,107,255,93,93,93,255,75,75,75,255,55,55,55,255,34,34,34,255,15,15,15,255,3, +3,3,255,0,0,0,255,0,0,0,255,3,3,3,255,44,45,46,255,101,103,104,222,121,124, +126,10,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0, +255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255, +255,0,130,131,134,119,46,47,48,255,3,3,3,255,0,0,0,255,31,31,31,255,87,87,87, +255,45,45,45,255,10,10,10,255,23,23,23,255,58,58,58,255,55,55,55,255,51,51,51, +255,63,63,63,255,72,72,72,255,78,78,78,255,82,82,82,255,86,86,86,255,87,87,87, +255,87,87,87,255,86,86,86,255,83,83,83,255,78,78,78,255,71,71,71,255,64,64,64, +255,63,63,63,255,66,66,66,255,59,59,59,255,40,40,40,255,19,19,19,255,5,5,5,255, +0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,24,25,25,255,83,85,86,251,116,119,120, +40,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255, +255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0, +114,116,118,176,29,30,30,255,0,0,0,255,0,0,0,255,20,20,20,255,68,68,68,255,72, +72,72,255,32,32,32,255,13,13,13,255,23,23,23,255,34,34,34,255,44,44,44,255,52, +52,52,255,59,59,59,255,65,65,65,255,68,68,68,255,71,71,71,255,73,73,73,255,73, +73,73,255,72,72,72,255,69,69,69,255,65,65,65,255,60,60,60,255,54,54,54,255,46, +46,46,255,37,37,37,255,32,32,32,255,23,23,23,255,7,7,7,255,1,1,1,255,0,0,0,255, +0,0,0,255,0,0,0,255,0,0,0,255,11,11,12,255,67,69,70,255,110,112,113,73,255, +255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0, +255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,155,157,159,4,96,97,99, +215,17,18,18,255,0,0,0,255,0,0,0,255,0,0,0,255,39,39,39,255,60,60,60,255,27,27, +27,255,2,2,2,255,14,14,14,255,24,24,24,255,32,32,32,255,39,39,39,255,45,45,45, +255,50,50,50,255,54,54,54,255,57,57,57,255,59,59,59,255,59,59,59,255,59,59,59, +255,56,56,56,255,53,53,53,255,49,49,49,255,43,43,43,255,37,37,37,255,29,29,29, +255,19,19,19,255,10,10,10,255,4,4,4,255,4,4,4,255,1,1,1,255,1,1,1,255,0,0,0,255, +0,0,0,255,4,5,5,255,54,55,55,255,102,105,106,116,255,255,255,0,255,255,255,0, +255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255, +255,0,255,255,255,0,255,255,255,0,148,151,154,13,82,84,85,234,10,10,11,255,0,0, +0,255,0,0,0,255,0,0,0,255,8,8,8,255,34,34,34,255,4,4,4,255,0,0,0,255,3,3,3, +255,11,11,11,255,19,19,19,255,26,26,26,255,31,31,31,255,36,36,36,255,40,40,40, +255,43,43,43,255,46,46,46,255,46,46,46,255,46,46,46,255,45,45,45,255,43,43,43, +255,40,40,40,255,35,35,35,255,29,29,29,255,22,22,22,255,15,15,15,255,11,11,11, +255,10,10,10,255,8,8,8,255,6,6,6,255,4,4,4,255,2,2,2,255,0,0,0,255,1,1,1,255,43, +44,45,255,96,99,100,145,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255, +0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255, +255,255,0,158,160,163,18,75,77,78,237,6,6,6,255,0,0,0,255,0,0,0,255,0,0,0,255,0, +0,0,255,3,3,3,255,1,1,1,255,1,1,1,255,1,1,1,255,1,1,1,255,5,5,5,255,12,12,12, +255,17,17,17,255,23,23,23,255,28,28,28,255,31,31,31,255,34,34,34,255,36,36,36, +255,38,38,38,255,38,38,38,255,36,36,36,255,33,33,33,255,29,29,29,255,24,24,24, +255,20,20,20,255,18,18,18,255,18,18,18,255,17,17,17,255,14,14,14,255,12,12,12, +255,9,9,9,255,5,5,5,255,2,2,2,255,0,0,0,255,37,37,38,255,90,92,94,149,255,255, +255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255, +255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,147,149,152,14,74,75,76,234, +4,4,4,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255,1,1,1, +255,1,1,1,255,1,1,1,255,0,0,0,255,1,1,1,255,5,5,5,255,10,10,10,255,16,16,16,255, +21,21,21,255,25,25,25,255,28,28,28,255,30,30,30,255,30,30,30,255,29,29,29,255, +28,28,28,255,27,27,27,255,26,26,26,255,27,27,27,255,27,27,27,255,26,26,26,255, +23,23,23,255,22,22,22,255,19,19,19,255,15,15,15,255,10,10,10,255,5,5,5,255,0,0, +0,255,33,34,35,255,88,90,91,145,255,255,255,0,255,255,255,0,255,255,255,0,255, +255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0, +255,255,255,0,154,156,159,3,81,83,84,213,3,3,3,255,0,0,0,255,0,0,0,255,1,1,1, +255,1,1,1,255,1,1,1,255,1,1,1,255,0,0,0,255,1,1,1,255,1,1,1,255,1,1,1,255,2,2,2, +255,4,4,4,255,7,7,7,255,11,11,11,255,16,16,16,255,20,20,20,255,24,24,24,255,26, +26,26,255,29,29,29,255,31,31,31,255,32,32,32,255,34,34,34,255,35,35,35,255,35, +35,35,255,34,34,34,255,33,33,33,255,31,31,31,255,29,29,29,255,26,26,26,255,21, +21,21,255,15,15,15,255,8,8,8,255,1,1,1,255,34,35,35,255,85,87,88,118,255,255, +255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255, +255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,98,100,101, +172,4,5,4,255,0,0,0,255,0,0,0,255,2,2,2,255,5,5,5,255,6,6,6,255,5,5,5,255,2,2,2, +255,0,0,0,255,1,1,1,255,3,3,3,255,5,5,5,255,9,9,9,255,13,13,13,255,17,17,17,255, +22,22,22,255,26,26,26,255,30,30,30,255,34,34,34,255,36,36,36,255,39,39,39,255, +41,41,41,255,43,43,43,255,43,43,43,255,42,42,42,255,41,41,41,255,40,40,40,255, +38,38,38,255,36,36,36,255,32,32,32,255,28,28,28,255,20,20,20,255,10,10,10,255, +3,3,3,255,38,39,40,255,84,86,87,76,255,255,255,0,255,255,255,0,255,255,255,0, +255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255, +255,0,255,255,255,0,255,255,255,0,114,116,117,116,9,9,9,255,0,0,0,255,1,1,1,255, +6,6,6,255,16,16,16,255,24,24,24,255,22,22,22,255,11,11,11,255,3,3,3,255,2,2,2, +255,4,4,4,255,9,9,9,255,14,14,14,255,18,18,18,255,24,24,24,255,29,29,29,255,33, +33,33,255,38,38,38,255,41,41,41,255,44,44,44,255,47,47,47,255,49,49,49,255,50, +50,50,255,50,50,50,255,50,50,50,255,49,49,49,255,48,48,48,255,45,45,45,255,42, +42,42,255,39,39,39,255,33,33,33,255,24,24,24,255,13,13,13,255,5,5,5,255,46,47, +48,252,83,84,86,42,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255, +255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0, +255,255,255,0,134,135,138,72,21,21,21,255,0,0,0,255,1,1,1,255,11,11,11,255,31, +31,31,255,49,49,49,255,49,49,49,255,31,31,31,255,12,12,12,255,5,5,5,255,7,7,7, +255,13,13,13,255,18,18,18,255,24,24,24,255,29,29,29,255,34,34,34,255,40,40,40, +255,44,44,44,255,48,48,48,255,51,51,51,255,54,54,54,255,56,56,56,255,58,58,58, +255,58,58,58,255,58,58,58,255,56,56,56,255,55,55,55,255,52,52,52,255,48,48,48, +255,45,45,45,255,38,38,38,255,27,27,27,255,12,12,12,255,10,10,10,255,55,56,57, +226,79,79,80,12,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255, +255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255, +255,255,0,163,166,169,11,56,57,58,221,0,0,0,255,2,2,2,255,13,13,13,255,38,38,38, +255,67,67,67,255,72,72,72,255,51,51,51,255,23,23,23,255,11,11,11,255,12,12,12, +255,18,18,18,255,24,24,24,255,29,29,29,255,35,35,35,255,40,40,40,255,46,46,46, +255,50,50,50,255,55,55,55,255,59,59,59,255,62,62,62,255,64,64,64,255,65,65,65, +255,66,66,66,255,65,65,65,255,64,64,64,255,61,61,61,255,58,58,58,255,54,54,54, +255,49,49,49,255,41,41,41,255,28,28,28,255,11,11,11,255,16,17,17,255,69,69,70, +145,87,87,87,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255, +255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255, +255,255,0,255,255,255,0,82,83,85,144,2,2,2,255,0,0,0,255,9,9,9,255,32,32,32,255, +61,61,61,255,73,73,73,255,58,58,58,255,30,30,30,255,15,15,15,255,16,16,16,255, +22,22,22,255,29,29,29,255,34,34,34,255,40,40,40,255,46,46,46,255,52,52,52,255, +57,57,57,255,62,62,62,255,66,66,66,255,69,69,69,255,72,72,72,255,74,74,74,255, +74,74,74,255,73,73,73,255,71,71,71,255,68,68,68,255,64,64,64,255,59,59,59,255, +53,53,53,255,42,42,42,255,25,25,25,255,9,9,9,255,30,31,31,255,91,92,92,70,95, +95,95,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0, +255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255, +255,0,255,255,255,0,31,31,32,39,27,28,28,243,0,0,0,255,4,4,4,255,18,18,18,255, +38,38,38,255,52,52,52,255,45,45,45,255,27,27,27,255,17,17,17,255,20,20,20,255, +26,26,26,255,33,33,33,255,39,39,39,255,45,45,45,255,51,51,51,255,58,58,58,255, +63,63,63,255,68,68,68,255,72,72,72,255,77,77,77,255,80,80,80,255,81,81,81,255, +81,81,81,255,80,80,80,255,78,78,78,255,74,74,74,255,69,69,69,255,63,63,63,255, +53,53,53,255,38,38,38,255,20,20,20,255,12,12,12,255,50,51,51,193,36,36,36,0,11, +11,11,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0, +255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255, +255,0,0,0,0,1,255,255,255,0,35,36,37,149,6,6,6,255,0,0,0,255,6,6,6,255,15,15,15, +255,24,24,24,255,24,24,24,255,18,18,18,255,17,17,17,255,22,22,22,255,30,30,30, +255,37,37,37,255,43,43,43,255,49,49,49,255,56,56,56,255,62,62,62,255,68,68,68, +255,73,73,73,255,79,79,79,255,84,84,84,255,87,87,87,255,89,89,89,255,89,89,89, +255,87,87,87,255,83,83,83,255,79,79,79,255,72,72,72,255,63,63,63,255,49,49,49, +255,31,31,31,255,12,12,12,255,29,29,30,255,39,39,40,83,0,0,0,0,0,0,0,1,255,255, +255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255, +255,255,0,255,255,255,0,255,255,255,0,0,0,0,1,0,0,0,1,0,0,0,3,255,255,255,0,12, +12,13,17,20,20,21,218,0,0,0,255,1,1,1,254,4,4,4,254,7,7,7,255,9,9,9,254,12,12, +12,255,17,17,17,254,25,25,25,254,32,32,32,255,39,39,39,254,46,46,46,255,52,52, +52,254,59,59,59,254,66,66,66,255,72,72,72,254,78,78,78,255,84,84,84,254,90,90, +90,254,94,94,94,255,96,96,96,254,95,95,95,255,92,92,92,255,87,87,87,255,81,81, +81,255,71,71,71,254,56,56,56,255,38,38,38,255,18,18,18,255,14,14,14,255,35,36, +37,165,7,7,7,0,0,0,0,2,0,0,0,1,0,0,0,1,255,255,255,0,255,255,255,0,255,255,255, +0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,0,0,0,1,0,0,0,1,0,0, +0,3,0,0,0,5,0,0,0,10,0,0,0,2,10,10,10,77,8,8,8,252,0,0,0,253,0,0,0,253,1,1,1, +253,3,3,3,253,8,8,8,253,15,15,15,253,25,25,25,254,33,33,33,254,41,41,41,254,48, +48,48,254,55,55,55,253,62,62,62,253,69,69,69,253,75,75,75,253,82,82,82,253,88, +88,88,253,94,94,94,254,98,98,98,254,101,101,101,254,100,100,100,254,95,95,95, +253,88,88,88,254,77,77,77,254,62,62,62,254,43,43,43,254,24,24,24,253,10,10,10, +255,27,28,28,225,11,12,12,33,0,0,0,4,0,0,0,6,0,0,0,3,0,0,0,1,0,0,0,1,255,255, +255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,0,0, +0,1,0,0,0,3,0,0,0,5,0,0,0,10,0,0,0,16,0,0,0,23,0,0,0,20,10,10,10,135,4,4,4, +252,0,0,0,252,0,0,0,252,2,2,2,253,5,5,5,253,12,12,12,253,21,21,21,253,31,31,31, +253,41,41,41,252,49,49,49,253,56,56,56,252,63,63,63,252,70,70,70,252,76,76,76, +253,83,83,83,253,89,89,89,253,95,95,95,253,99,99,99,253,100,100,100,253,98,98, +98,254,90,90,90,252,79,79,79,252,63,63,63,252,43,43,43,253,24,24,24,253,9,9,9, +253,20,20,20,247,15,15,15,86,0,0,0,13,0,0,0,17,0,0,0,11,0,0,0,6,0,0,0,3,0,0,0,1, +0,0,0,1,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,0,0,0,1,0,0,0, +2,0,0,0,5,0,0,0,9,0,0,0,16,0,0,0,24,0,0,0,36,0,0,0,47,1,1,1,55,8,8,8,169,2,2, +2,251,0,0,0,252,0,0,0,251,2,2,2,251,7,7,7,251,14,14,14,252,24,24,24,251,35,35, +35,250,45,45,45,250,53,53,53,250,61,61,61,251,68,68,68,252,74,74,74,251,81,81, +81,252,87,87,87,252,91,91,91,252,92,92,92,252,91,91,91,251,85,85,85,251,72,72, +72,251,57,57,57,252,40,40,40,253,22,22,22,252,9,9,9,253,15,15,15,252,14,14,14, +127,0,0,0,39,0,0,0,38,0,0,0,27,0,0,0,17,0,0,0,10,0,0,0,6,0,0,0,3,0,0,0,1,255, +255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,0,0,0,1,0,0,0,4,0,0,0,8,0,0, +0,14,0,0,0,23,0,0,0,35,0,0,0,50,0,0,0,67,0,0,0,84,1,1,1,96,6,6,6,183,2,2,3, +250,0,0,0,250,0,0,0,249,3,3,3,249,7,7,7,249,14,14,14,249,23,23,23,250,34,34,34, +250,43,43,43,250,52,52,52,249,58,58,58,249,64,64,64,249,69,69,69,249,73,73,73, +250,75,75,75,250,73,73,73,250,68,68,68,249,58,58,58,250,44,44,44,250,30,30,30, +249,17,17,17,250,8,8,8,250,12,13,13,242,11,11,11,148,0,0,0,76,0,0,0,68,0,0,0,52, +0,0,0,38,0,0,0,26,0,0,0,16,0,0,0,9,0,0,0,4,0,0,0,1,0,0,0,1,255,255,255,0,255, +255,255,0,0,0,0,1,0,0,0,2,0,0,0,6,0,0,0,11,0,0,0,19,0,0,0,32,0,0,0,47,0,0,0,64, +0,0,0,84,0,0,0,105,0,0,0,122,4,4,4,139,6,7,7,195,2,2,2,241,0,0,0,247,0,0,0, +246,2,2,2,247,5,5,5,246,11,11,11,247,18,18,18,248,25,25,25,246,33,33,33,248,39, +39,39,247,43,43,43,246,46,46,46,247,48,48,48,246,47,47,47,248,43,43,43,247,37, +37,37,248,27,27,27,248,18,18,18,247,10,10,10,249,7,7,7,248,11,11,11,229,5,5,5, +153,0,0,0,113,0,0,0,105,0,0,0,86,0,0,0,67,0,0,0,50,0,0,0,35,0,0,0,22,0,0,0,12,0, +0,0,7,0,0,0,3,0,0,0,1,255,255,255,0,255,255,255,0,0,0,0,1,0,0,0,3,0,0,0,8,0,0, +0,14,0,0,0,24,0,0,0,39,0,0,0,56,0,0,0,75,0,0,0,96,0,0,0,115,4,4,4,139,6,6,6, +166,1,1,1,176,3,3,3,193,3,3,3,224,1,1,1,236,0,0,0,236,1,1,1,236,3,3,3,238,6,6,6, +238,9,9,9,235,13,13,13,237,17,17,17,237,19,19,19,236,20,20,20,236,21,21,21,237, +19,19,19,236,16,16,16,236,12,12,12,238,8,8,8,239,5,5,5,238,6,6,6,235,6,6,6,210, +4,4,4,172,1,1,1,146,0,0,0,131,0,0,0,116,0,0,0,98,0,0,0,78,0,0,0,60,0,0,0,43,0, +0,0,27,0,0,0,16,0,0,0,9,0,0,0,4,0,0,0,1,255,255,255,0,255,255,255,0,0,0,0,1,0, +0,0,4,0,0,0,8,0,0,0,15,0,0,0,27,0,0,0,43,0,0,0,62,0,0,0,82,0,0,0,99,4,4,4,121, +8,8,8,148,1,1,1,163,2,2,2,173,3,3,3,184,4,4,4,191,4,4,4,204,2,2,2,214,1,1,1, +219,0,0,0,221,0,0,0,222,1,1,1,220,3,3,3,221,4,4,4,221,4,4,4,219,5,5,5,221,5,5,5, +222,4,4,4,221,3,3,3,221,3,3,3,223,3,3,3,218,4,4,4,207,2,2,2,191,0,0,0,176,0,0,0, +168,4,4,4,157,2,2,2,135,0,0,0,118,0,0,0,102,0,0,0,85,0,0,0,65,0,0,0,47,0,0,0,31, +0,0,0,17,0,0,0,10,0,0,0,5,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,4,0,0,0,9,0,0, +0,16,0,0,0,28,0,0,0,44,0,0,0,63,0,0,0,81,2,2,2,98,10,10,10,126,3,3,3,142,2,2, +2,152,4,4,4,159,5,5,5,169,5,5,5,177,4,4,4,183,3,3,3,188,3,3,3,193,2,2,2,197,1, +1,1,198,1,1,1,200,1,1,1,200,1,1,1,199,1,1,1,200,1,1,1,201,1,1,1,201,1,1,1,200, +2,2,2,199,1,1,2,193,0,0,0,187,0,0,0,178,0,0,0,172,0,0,0,164,0,0,0,156,0,0,0, +148,4,4,5,136,1,1,1,115,0,0,0,100,0,0,0,83,0,0,0,65,0,0,0,47,0,0,0,31,0,0,0,18, +0,0,0,9,0,0,0,4,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,3,0,0,0,8,0,0,0,15,0,0, +0,26,0,0,0,41,0,0,0,57,0,0,0,74,9,9,9,98,6,7,7,116,2,2,2,128,5,5,5,135,6,6,6, +145,6,6,6,150,6,6,6,156,5,5,5,161,4,4,4,166,3,3,3,170,2,2,2,173,2,2,2,173,2,2,2, +174,2,2,2,175,1,1,1,175,1,1,1,175,1,1,1,176,1,1,1,175,1,1,1,172,1,1,1,171,0,0,0, +168,1,1,1,164,1,1,1,158,1,1,1,152,1,1,1,146,1,1,1,140,0,0,0,132,2,2,2,127,5,5,5, +110,0,0,0,91,0,0,0,77,0,0,0,61,0,0,0,43,0,0,0,28,0,0,0,17,0,0,0,9,0,0,0,5,0,0,0, +2,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,3,0,0,0,7,0,0,0,13,0,0,0,23,0,0,0,36,0,0,0,49, +4,4,4,66,12,12,13,89,3,3,3,100,4,4,4,109,6,6,6,117,7,7,7,123,7,7,7,127,6,6,6, +133,5,5,5,138,5,5,5,141,4,4,4,145,3,3,3,147,3,3,3,150,2,2,2,149,2,2,2,149,2,2,2, +149,2,2,2,150,2,2,2,150,2,2,2,150,1,1,1,147,1,1,1,146,1,1,1,144,1,1,1,140,2,2,2, +136,3,3,3,129,4,4,4,126,3,3,3,119,1,1,1,114,0,0,0,109,6,6,6,98,3,3,3,80,0,0,0, +65,0,0,0,51,0,0,0,38,0,0,0,24,0,0,0,14,0,0,0,7,0,0,0,4,0,0,0,1,0,0,0,1,255,255, +255,0,0,0,0,1,0,0,0,3,0,0,0,5,0,0,0,10,0,0,0,18,0,0,0,27,0,0,0,38,14,14,15,57,9, +9,9,73,3,3,3,82,6,6,6,89,7,7,7,94,8,8,8,100,8,8,8,105,7,7,7,109,7,7,7,113,6,6, +6,117,5,5,5,119,5,5,5,121,4,4,4,121,4,4,4,122,3,3,3,123,3,3,3,123,3,3,3,122,3, +3,3,122,3,3,3,123,3,3,3,121,3,3,3,119,3,3,3,117,3,3,3,116,4,4,4,111,7,7,7,107, +9,9,9,104,7,7,7,98,3,3,3,94,1,1,1,88,2,2,2,81,9,9,9,68,0,0,0,51,0,0,0,40,0,0, +0,29,0,0,0,19,0,0,0,11,0,0,0,6,0,0,0,3,0,0,0,1,0,0,0,1,255,255,255,0,0,0,0,1, +0,0,0,2,0,0,0,4,0,0,0,7,0,0,0,12,0,0,0,19,3,3,3,29,19,19,19,45,4,4,4,54,5,5,5, +62,7,7,7,69,8,8,8,74,8,8,8,78,8,8,8,82,8,8,8,85,8,8,8,88,7,7,7,90,7,7,7,92,6,6, +6,95,6,6,6,95,5,5,5,97,5,5,5,96,5,5,5,97,4,4,4,96,4,4,4,96,4,4,4,96,4,4,4,96, +3,3,3,94,3,3,3,91,3,3,3,88,6,6,6,87,10,10,10,84,13,13,13,80,11,11,11,76,6,6,6, +72,2,2,2,67,0,0,0,61,10,10,10,53,2,2,2,37,0,0,0,28,0,0,0,20,0,0,0,13,0,0,0,7,0, +0,0,4,0,0,0,2,0,0,0,1,255,255,255,0,255,255,255,0,255,255,255,0,0,0,0,1,0,0,0, +3,0,0,0,4,0,0,0,8,0,0,0,12,13,13,13,20,20,20,21,33,3,3,3,38,6,6,6,44,8,8,8,49, +8,8,8,53,9,9,9,57,9,9,9,60,9,9,9,63,8,8,8,65,8,8,8,67,8,8,8,69,7,7,7,70,7,7,7, +71,6,6,6,72,6,6,6,72,6,6,6,73,5,5,5,72,5,5,5,72,5,5,5,70,4,4,4,70,4,4,4,70,4,4, +4,68,4,4,4,66,5,5,5,65,9,9,9,62,12,12,12,59,11,11,11,56,6,6,6,52,2,2,2,48,0,0, +0,43,9,9,9,38,10,10,10,27,0,0,0,18,0,0,0,13,0,0,0,9,0,0,0,5,0,0,0,2,0,0,0,1, +255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,0,0,0,1,0, +0,0,2,0,0,0,4,0,0,0,7,24,24,25,15,18,18,18,21,3,3,3,25,7,7,7,29,9,9,9,33,9,9, +9,36,9,9,9,38,9,9,9,41,9,9,9,43,9,9,9,45,9,9,9,47,9,9,9,48,8,8,8,49,8,8,8,49, +8,8,8,51,7,7,7,50,7,7,7,51,6,6,6,50,6,6,6,50,5,5,5,50,5,5,5,49,4,4,4,48,4,4,4, +47,3,3,3,46,3,3,3,44,5,5,5,43,8,8,8,40,7,7,7,38,4,4,4,36,2,2,2,32,0,0,0,29,6,6, +6,25,16,16,17,18,0,0,0,11,0,0,0,7,0,0,0,4,0,0,0,2,0,0,0,1,255,255,255,0,255, +255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0,0,0,0,1,0,0,0, +1,0,0,0,2,0,0,0,3,33,34,34,9,16,16,16,13,4,4,4,15,8,8,8,17,9,9,9,20,10,10,10, +22,9,9,9,23,9,9,9,25,10,10,10,27,10,10,10,29,10,10,10,29,10,10,10,30,9,9,9,31, +9,9,9,32,9,9,9,32,8,8,8,33,8,8,8,33,7,7,7,33,7,7,7,33,6,6,6,32,6,6,6,32,5,5,5, +31,4,4,4,31,3,3,3,29,3,3,3,28,3,3,3,27,3,3,3,25,3,3,3,23,2,2,2,22,1,1,1,19,0,0, +0,16,4,4,4,14,21,21,22,11,0,0,0,5,0,0,0,3,0,0,0,2,0,0,0,1,0,0,0,1,255,255,255, +0,255,255,255,0,255,255,255,0}; + +static Fl_RGB_Image image_core(idata_core, 48, 48, 4, 0); + +#endif diff --git a/ede-bug-tools/ede-crasher/CrashDialog.cpp b/ede-bug-tools/ede-crasher/CrashDialog.cpp index c418b51..b5206df 100644 --- a/ede-bug-tools/ede-crasher/CrashDialog.cpp +++ b/ede-bug-tools/ede-crasher/CrashDialog.cpp @@ -1,9 +1,9 @@ /* * $Id$ * - * Ecrasher, a crash handler tool + * ede-crasher, a crash handler tool * Part of Equinox Desktop Environment (EDE). - * Copyright (c) 2008 EDE Authors. + * Copyright (c) 2008-2009 EDE Authors. * * This program is licensed under terms of the * GNU General Public License version 2 or newer. @@ -14,261 +14,217 @@ #include #endif -#include "icons/core.xpm" -#include "CrashDialog.h" - -#include -#include -#include - #include -#include -#include -#include -#include +#include +#include +#include #include +#include +#include +#include +#include +#include +#include + #include -#include +#include +#include +#include #include -#include +#include +#include -#define DIALOG_W 380 -#define DIALOG_H 130 -#define DIALOG_W_EXPANDED 380 -#define DIALOG_H_EXPANDED 340 +#include "CrashDialog.h" +#include "GdbOutput.h" +#include "CoreIcon.h" +#include "icons/core.xpm" -int spawn_backtrace(const char* gdb_path, const char* program, const char* core, const char* output, const char* script) { - const char* gdb_script = "bt\nquit\n"; - const int gdb_script_len = 8; +#define WIN_H_NORMAL 130 +#define WIN_H_EXPANDED 340 - /* file with gdb commands */ - int sfd = open(script, O_WRONLY | O_TRUNC | O_CREAT, 0770); - if(sfd == -1) - return -1; - write(sfd, gdb_script, gdb_script_len); - close(sfd); +EDELIB_NS_USING(String) +EDELIB_NS_USING(alert) +EDELIB_NS_USING(run_async) +EDELIB_NS_USING(file_remove) +EDELIB_NS_USING(file_path) - /* output file with gdb backtrace */ - int ofd = open(output, O_WRONLY | O_TRUNC | O_CREAT, 0770); - if(ofd == -1) - return -1; +static edelib::Window *win; +static Fl_Text_Display *txt_display; +static Fl_Text_Buffer *txt_buf; +static Fl_Button *save_as; +static Fl_Button *show_details; +static GdbOutput *gdb; +static bool info_was_collected; +static const ProgramDetails *pdetails; - pid_t pid = fork(); - - if(pid == -1) { - close(ofd); - return -1; - } else if(pid == 0) { - dup2(ofd, 1); - close(ofd); - - char* argv[8]; - argv[0] = (char*)gdb_path; - argv[1] = "--quiet"; - argv[2] = "--batch"; - argv[3] = "-x"; - argv[4] = (char*)script; - argv[5] = (char*)program; - argv[6] = (char*)core; - argv[7] = 0; - - execvp(argv[0], argv); - return -1; - } else { - int status; - if(waitpid(pid, &status, 0) != pid) - return -1; - } - - return 0; +static void close_cb(Fl_Widget*, void*) { + win->hide(); } -edelib::String get_uname(void) { - struct utsname ut; - uname(&ut); - - edelib::String ret; - ret.printf("%s %s %s %s %s", ut.sysname, ut.nodename, ut.release, ut.version, ut.machine); - return ret; -} - -void show_details_cb(Fl_Widget*, void* cd) { - CrashDialog* c = (CrashDialog*)cd; - c->show_details(); -} - -void close_cb(Fl_Widget*, void* cd) { - CrashDialog* c = (CrashDialog*)cd; - c->hide(); -} - -void save_cb(Fl_Widget*, void* cd) { - CrashDialog* c = (CrashDialog*)cd; - c->save(); -} - -CrashDialog::CrashDialog() : Fl_Window(DIALOG_W, DIALOG_H, _("EDE crash handler")), - appname(NULL), apppath(NULL), bugaddress(NULL), pid(NULL), signal_num(NULL) { - details_shown = false; - - begin(); - pix = new Fl_Pixmap((const char**)core_xpm); - - icon_box = new Fl_Box(10, 10, 70, 75); - icon_box->image(pix); - - txt_box = new Fl_Box(85, 10, 285, 75); - txt_box->align(FL_ALIGN_WRAP | FL_ALIGN_LEFT | FL_ALIGN_INSIDE); - - close = new Fl_Button(280, 95, 90, 25, _("&Close")); - close->callback(close_cb, this); - - details = new Fl_Button(10, 95, 265, 25, _("@> Show details")); - details->box(FL_FLAT_BOX); - details->align(FL_ALIGN_INSIDE | FL_ALIGN_LEFT); - details->callback(show_details_cb, this); - - /* widgets for expanded dialog */ - trace_log = new Fl_Text_Display(10, 130, 360, 165); - trace_buff = new Fl_Text_Buffer(); - trace_log->buffer(trace_buff); - trace_log->hide(); - save_as = new Fl_Button(280, 305, 90, 25, _("&Save As...")); - save_as->callback(save_cb, this); - save_as->hide(); - end(); -} - -CrashDialog::~CrashDialog() { - /* looks like fltk does not clean image() assigned data */ - delete pix; -} - -void CrashDialog::show_details(void) { - if(trace_log->visible()) { - trace_log->hide(); - save_as->hide(); - details->label(_("@> Show details")); - size(DIALOG_W, DIALOG_H); - } else { - trace_log->show(); - save_as->show(); - details->label(_("@< Hide details")); - size(DIALOG_W_EXPANDED, DIALOG_H_EXPANDED); - - if(!details_shown) { - trace_buff->remove(0, trace_buff->length()); - - edelib::String address = _("\nPlease report this at: "); - if(bugaddress) - address += bugaddress; - else - address += "http://bugs.equinox-project.org"; - - trace_buff->append(address.c_str()); - trace_buff->append("\n\n"); - - trace_buff->append("---------- short summary ----------\n"); - trace_buff->append("\nEDE version: " PACKAGE_VERSION); - trace_buff->append("\nSystem info: "); - trace_buff->append(get_uname().c_str()); - - trace_buff->append("\nProgram name: "); - if(appname) - trace_buff->append(appname); - else - trace_buff->append("(unknown)"); - - trace_buff->append("\nExecutable path: "); - if(apppath) - trace_buff->append(apppath); - else - trace_buff->append("(unknown)"); - - trace_buff->append("\nRunning PID: "); - if(pid) - trace_buff->append(pid); - else - trace_buff->append("(unknown)"); - - trace_buff->append("\nSignal received: "); - if(signal_num) - trace_buff->append(signal_num); - else - trace_buff->append("(unknown)"); - - /* try backtrace via gdb */ - trace_buff->append("\n\n---------- backtrace ----------\n"); - - const char* core_file = "core"; - const char* gdb_output = "/tmp/.gdb_output"; - const char* gdb_script = "/tmp/.gdb_script"; - - if(!edelib::file_test(core_file, edelib::FILE_TEST_IS_REGULAR)) { - trace_buff->append("\nUnable to find 'core' file. Backtrace will not be done."); - details_shown = false; - return; - } - - edelib::String gdb_path = edelib::file_path("gdb"); - if(gdb_path.empty()) { - trace_buff->append("\nUnable to find gdb. Please install it first."); - /* set to false so next 'Show Details' click can try again with the debugger */ - details_shown = false; - return; - } - - /* TODO: these files should be unique per session */ - if(spawn_backtrace(gdb_path.c_str(), cmd.c_str(), core_file, gdb_output, gdb_script) == -1) { - trace_buff->append("\nUnable to properly execute gdb"); - details_shown = false; - return; - } - - trace_buff->append("\n"); - if(trace_buff->appendfile(gdb_output) != 0) { - trace_buff->append("Unable to read gdb output file"); - details_shown = false; - return; - } - - edelib::file_remove(gdb_output); - edelib::file_remove(gdb_script); - edelib::file_remove(core_file); - - details_shown = true; - } - } -} - -void CrashDialog::save(void) { - const char* p = fl_file_chooser(_("Save details to..."), "Text Files (*.txt)\tAll Files(*)", "dump.txt"); +static void save_as_cb(Fl_Widget*, void*) { + const char *p = fl_file_chooser(_("Save details to..."), "Text Files (*.txt)\tAll Files(*)", "dump.txt"); if(!p) return; - // so we can have EOL in file - trace_buff->append("\n"); + /* so we can have EOL */ + txt_buf->append("\n"); - if(trace_buff->savefile(p) != 0) - edelib::alert(_("Unable to save to %s. Please check permissions to write in this directory or file"), p); + if(txt_buf->savefile(p) != 0) + alert(_("Unable to save to %s. Please check permissions to write in this directory or file"), p); } -void CrashDialog::run(void) { - edelib::String l; +static void write_host_info(void) { + txt_buf->append("---------- short summary ----------\n"); + txt_buf->append("\nEDE version: " PACKAGE_VERSION); + txt_buf->append("\nedelib version: " EDELIB_VERSION); - if(appname || apppath) { - const char* p = (appname ? appname : apppath); - l.printf(_("Program '%s' just crashed!"), p); - } else - l += _("Program just crashed!"); - l += _("\n\nYou can inspect details about this crash by clicking on 'Show details' below"); + struct utsname ut; + if(uname(&ut) == 0) { + char buf[1024]; + snprintf(buf, sizeof(buf), "%s %s %s %s %s", ut.sysname, ut.nodename, ut.release, ut.version, ut.machine); - txt_box->copy_label(l.c_str()); + txt_buf->append("\nSystem info: "); + txt_buf->append(buf); + } - if(!shown()) - show(); + txt_buf->append("\nProgram name: "); + if(pdetails->name) + txt_buf->append(pdetails->name); + else + txt_buf->append("(unknown)"); - while(shown()) - Fl::wait(); + txt_buf->append("\nProgram path: "); + if(pdetails->path) + txt_buf->append(pdetails->path); + else + txt_buf->append("(unknown)"); + + txt_buf->append("\nProgram PID: "); + if(pdetails->pid) + txt_buf->append(pdetails->pid); + else + txt_buf->append("(unknown)"); + + txt_buf->append("\nSignal received: "); + if(pdetails->sig) + txt_buf->append(pdetails->sig); + else + txt_buf->append("(unknown)"); + + txt_buf->append("\n\n---------- backtrace ----------\n\n"); +} + +static void collect_info_once(void) { + if(info_was_collected) + return; + + write_host_info(); + + if(gdb->fds_opened() && gdb->run()) + txt_buf->appendfile(gdb->output_path()); + + info_was_collected = true; +} + +static void show_details_cb(Fl_Widget*, void*) { + if(save_as->visible()) { + win->size(win->w(), WIN_H_NORMAL); + txt_display->hide(); + save_as->hide(); + show_details->label(_("@> Show details")); + return; + } + + win->size(win->w(), WIN_H_EXPANDED); + txt_display->show(); + save_as->show(); + show_details->label(_("@< Hide details")); + + collect_info_once(); +} + +static void report_cb(Fl_Widget*, void*) { + String bug_tool = file_path("ede-bug-report"); + if(bug_tool.empty()) { + alert(_("Unable to find ede-bug-report tool." + " Please check if PATH variable contains directory where this tool was installed")); + return; + } + + collect_info_once(); + + errno = 0; + int fd; + char tmp[] = "/tmp/.ecrash-dump.XXXXXX"; + + if((fd = mkstemp(tmp)) == -1) { + alert(_("Unable to create temporary file: (%i) %s"), errno, strerror(errno)); + return; + } + + close(fd); + txt_buf->savefile(tmp); + + run_async("%s --gdb-dump %s", bug_tool.c_str(), tmp); + + /* wait some time until the file was read; dumb, I know :( */ + sleep(1); + file_remove(tmp); +} + +int crash_dialog_show(const ProgramDetails& p) { + info_was_collected = false; + pdetails = &p; + + gdb = new GdbOutput(); + gdb->set_program_path(p.path); + gdb->fds_open(); + + win = new edelib::Window(380, WIN_H_NORMAL, _("EDE Crash Handler")); + win->begin(); + Fl_Box* image_box = new Fl_Box(10, 10, 65, 60); + image_box->image(image_core); + + String s; + if(p.name) + s.printf(_("Program '%s' quit unexpectedly."), p.name); + else + s = _("Program quit unexpectedly."); + s += _("\n\nYou can inspect the details about this crash by clicking on \'Show details\' below"); + + Fl_Box* txt_box = new Fl_Box(85, 10, 285, 75, s.c_str()); + txt_box->align(132|FL_ALIGN_INSIDE); + + /* only EDE applications can have 'Report' button for reporting issues on EDE bugzilla */ + if(p.ede_app) { + Fl_Button* report = new Fl_Button(185, 95, 90, 25, _("&Report...")); + report->callback(report_cb); + } + + Fl_Button* close = new Fl_Button(280, 95, 90, 25, _("&Close")); + close->callback(close_cb); + + show_details = new Fl_Button(10, 95, 165, 25, _("@> Show details")); + show_details->box(FL_FLAT_BOX); + show_details->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE); + show_details->callback(show_details_cb); + + txt_display = new Fl_Text_Display(10, 130, 360, 165); + txt_buf = new Fl_Text_Buffer(); + txt_display->buffer(txt_buf); + + txt_display->hide(); + + save_as = new Fl_Button(280, 305, 90, 25, _("&Save As...")); + save_as->hide(); + save_as->callback(save_as_cb); + win->end(); + + win->window_icon(core_xpm); + win->show(); + + int ret = Fl::run(); + delete gdb; + return ret; } diff --git a/ede-bug-tools/ede-crasher/CrashDialog.h b/ede-bug-tools/ede-crasher/CrashDialog.h index c6041a3..1f2815f 100644 --- a/ede-bug-tools/ede-crasher/CrashDialog.h +++ b/ede-bug-tools/ede-crasher/CrashDialog.h @@ -1,9 +1,9 @@ /* * $Id$ * - * Ecrasher, a crash handler tool + * ede-crasher, a crash handler tool * Part of Equinox Desktop Environment (EDE). - * Copyright (c) 2008 EDE Authors. + * Copyright (c) 2008-2009 EDE Authors. * * This program is licensed under terms of the * GNU General Public License version 2 or newer. @@ -13,50 +13,15 @@ #ifndef __CRASHDIALOG_H__ #define __CRASHDIALOG_H__ -#include -#include -#include -#include -#include -#include - -#include - -class CrashDialog : public Fl_Window { - private: - const char* appname; - const char* apppath; - const char* bugaddress; - const char* pid; - const char* signal_num; - - Fl_Pixmap* pix; - Fl_Box* txt_box; - Fl_Box* icon_box; - Fl_Button* close; - Fl_Button* details; - - Fl_Text_Display* trace_log; - Fl_Text_Buffer* trace_buff; - Fl_Button* save_as; - - edelib::String cmd; - bool details_shown; - - public: - CrashDialog(); - ~CrashDialog(); - void show_details(void); - - void set_appname(const char* a) { appname = a; } - void set_apppath(const char* p) { apppath = p; } - void set_bugaddress(const char* a) { bugaddress = a; } - void set_pid(const char* p) { pid = p; } - void set_signal(const char* s) { signal_num = s; } - - void save(void); - - void run(void); +struct ProgramDetails { + bool ede_app; + const char *name; + const char *path; + const char *pid; + const char *sig; + const char *bugaddress; }; +int crash_dialog_show(const ProgramDetails& p); + #endif diff --git a/ede-bug-tools/ede-crasher/GdbOutput.cpp b/ede-bug-tools/ede-crasher/GdbOutput.cpp new file mode 100644 index 0000000..24e3d84 --- /dev/null +++ b/ede-bug-tools/ede-crasher/GdbOutput.cpp @@ -0,0 +1,144 @@ +/* + * $Id$ + * + * ede-crasher, a crash handler tool + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2008-2009 EDE Authors. + * + * This program is licensed under terms of the + * GNU General Public License version 2 or newer. + * See COPYING for details. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "GdbOutput.h" + +/* assume core is placed in current directory */ +#define CORE_FILE "core" + +EDELIB_NS_USING(String) +EDELIB_NS_USING(file_path) +EDELIB_NS_USING(file_test) +EDELIB_NS_USING(file_remove) +EDELIB_NS_USING(FILE_TEST_IS_REGULAR) + +static void close_and_invalidate(int &fd) { + if(fd != -1) { + ::close(fd); + fd = -1; + } +} + +static int write_str(int fd, const char *str) { + int len = strlen(str); + return ::write(fd, str, len); +} + +GdbOutput::~GdbOutput() { + close_and_invalidate(sfd); + close_and_invalidate(ofd); + + if(!gdb_script_path.empty()) + file_remove(gdb_script_path.c_str()); + if(!gdb_output_path.empty()) + file_remove(gdb_output_path.c_str()); + + file_remove(CORE_FILE); +} + +bool GdbOutput::fds_open(void) { + errno = 0; + + char sp[] = "/tmp/.ecrash-script.XXXXXX"; + char op[] = "/tmp/.ecrash-output.XXXXXX"; + + sfd = mkstemp(sp); + if(sfd == -1) { + E_WARNING(E_STRLOC ": Unable to open script file: (%i), %s\n", errno, strerror(errno)); + return false; + } + + /* copy it as fast as possible */ + gdb_script_path = sp; + + ofd = mkstemp(op); + if(ofd == -1) { + E_WARNING(E_STRLOC ": Unable to open output file: (%i), %s\n", errno, strerror(errno)); + return false; + } + + /* copy it as fast as possible */ + gdb_output_path = op; + return true; +} + +bool GdbOutput::run(void) { + E_RETURN_VAL_IF_FAIL(fds_opened(), false); + + /* write script */ + ::write(sfd, "bt\nquit\n", 8); + close_and_invalidate(sfd); + + String gdb_path = file_path("gdb"); + if(gdb_path.empty()) { + /* write straight to the file, so dialog could show it */ + write_str(ofd, "Unable to find gdb. Please install it first"); + + /* see it as valid, so dialog could be shown */ + return true; + } + + if(!file_test(CORE_FILE, FILE_TEST_IS_REGULAR)) { + write_str(ofd, "Unable to find '"CORE_FILE"'. Backtrace will not be done."); + /* see it as valid, so dialog could be shown */ + return true; + } + + pid_t pid = fork(); + + if(pid == -1) { + close_and_invalidate(ofd); + E_WARNING(E_STRLOC ": Unable to fork the process\n"); + return false; + } else if(pid == 0) { + dup2(ofd, 1); + close_and_invalidate(ofd); + + char* argv[8]; + argv[0] = (char*)gdb_path.c_str(); + argv[1] = "--quiet"; + argv[2] = "--batch"; + argv[3] = "-x"; + argv[4] = (char*)gdb_script_path.c_str(); + argv[5] = (char*)program_path; + argv[6] = (char*)CORE_FILE; + argv[7] = 0; + + execvp(argv[0], argv); + return false; + } else { + int status; + + if(waitpid(pid, &status, 0) != pid) { + E_WARNING(E_STRLOC ": Failed to execute waitpid() properly\n"); + return false; + } + } + + return true; +} diff --git a/ede-bug-tools/ede-crasher/GdbOutput.h b/ede-bug-tools/ede-crasher/GdbOutput.h new file mode 100644 index 0000000..f4db45f --- /dev/null +++ b/ede-bug-tools/ede-crasher/GdbOutput.h @@ -0,0 +1,42 @@ +/* + * $Id$ + * + * ede-crasher, a crash handler tool + * Part of Equinox Desktop Environment (EDE). + * Copyright (c) 2008-2009 EDE Authors. + * + * This program is licensed under terms of the + * GNU General Public License version 2 or newer. + * See COPYING for details. + */ + +#ifndef __GDBOUTPUT_H__ +#define __GDBOUTPUT_H__ + +#ifndef PATH_MAX +# define PATH_MAX 256 +#endif + +#include + +class GdbOutput { +private: + int sfd, ofd; + const char *program_path; + edelib::String gdb_output_path; + edelib::String gdb_script_path; + +public: + GdbOutput() : sfd(-1), ofd(-1), program_path(NULL) { } + ~GdbOutput(); + + void set_program_path(const char *p) { program_path = p; } + + bool fds_open(void); + bool fds_opened(void) { return (sfd != 1 && ofd != -1); } + + bool run(void); + const char *output_path(void) { return (gdb_output_path.empty() ? NULL : gdb_output_path.c_str()); } +}; + +#endif diff --git a/ede-bug-tools/ede-crasher/Jamfile b/ede-bug-tools/ede-crasher/Jamfile index c8c45e4..beb80fd 100644 --- a/ede-bug-tools/ede-crasher/Jamfile +++ b/ede-bug-tools/ede-crasher/Jamfile @@ -10,7 +10,7 @@ SubDir TOP ede-bug-tools ede-crasher ; -SOURCE = ede-crasher.cpp CrashDialog.cpp ; +SOURCE = ede-crasher.cpp GdbOutput.cpp CrashDialog.cpp ; EdeProgram ede-crasher : $(SOURCE) ; TranslationStrings locale : $(SOURCE) ; diff --git a/ede-bug-tools/ede-crasher/ede-crasher.cpp b/ede-bug-tools/ede-crasher/ede-crasher.cpp index f04f875..15537b8 100644 --- a/ede-bug-tools/ede-crasher/ede-crasher.cpp +++ b/ede-bug-tools/ede-crasher/ede-crasher.cpp @@ -3,7 +3,7 @@ * * ede-crasher, a crash handler tool * Part of Equinox Desktop Environment (EDE). - * Copyright (c) 2008 EDE Authors. + * Copyright (c) 2008-2009 EDE Authors. * * This program is licensed under terms of the * GNU General Public License version 2 or newer. @@ -30,10 +30,11 @@ static void help(void) { puts("EDE crash handler\n"); puts("Options:"); puts(" -h, --help this help"); + puts(" -e, --edeapp use this flag for EDE applications"); puts(" -b, --bugaddress [ADDRESS] bug address to use"); puts(" -p, --pid [PID] the PID of the program"); puts(" -a, --appname [NAME] name of the program"); - puts(" -e, --apppath [PATH] path to the executable"); + puts(" -t, --apppath [PATH] path to the executable"); puts(" -s, --signal [SIGNAL] the signal number that was caught"); } @@ -43,49 +44,54 @@ int main(int argc, char** argv) { return 0; } - const char* a; - const char* bugaddress = NULL; - const char* appname = NULL; - const char* apppath = NULL; - const char* pid = 0; - const char* signal_num = 0; + const char* a; + ProgramDetails p; + + p.bugaddress = NULL; + p.name = NULL; + p.path = NULL; + p.pid = NULL; + p.sig = NULL; + p.ede_app = false; for(int i = 1; i < argc; i++) { a = argv[i]; if(CHECK_ARGV(a, "-h", "--help")) { help(); return 0; + } else if(CHECK_ARGV(a, "-e", "--edeapp")) { + p.ede_app = true; } else if(CHECK_ARGV(a, "-b", "--bugaddress")) { - bugaddress = next_param(i, argv, argc); - if(!bugaddress) { + p.bugaddress = next_param(i, argv, argc); + if(!p.bugaddress) { puts("Missing bug address parameter"); return 1; } i++; } else if(CHECK_ARGV(a, "-p", "--pid")) { - pid = next_param(i, argv, argc); - if(!pid) { + p.pid = next_param(i, argv, argc); + if(!p.pid) { puts("Missing pid parameter"); return 1; } i++; } else if(CHECK_ARGV(a, "-a", "--appname")) { - appname = next_param(i, argv, argc); - if(!appname) { + p.name = next_param(i, argv, argc); + if(!p.name) { puts("Missing application name"); return 1; } i++; - } else if(CHECK_ARGV(a, "-e", "--apppath")) { - apppath = next_param(i, argv, argc); - if(!apppath) { + } else if(CHECK_ARGV(a, "-t", "--apppath")) { + p.path = next_param(i, argv, argc); + if(!p.path) { puts("Missing application path"); return 1; } i++; } else if(CHECK_ARGV(a, "-s", "--signal")) { - signal_num = next_param(i, argv, argc); - if(!signal_num) { + p.sig = next_param(i, argv, argc); + if(!p.sig) { puts("Missing signal number"); return 1; } @@ -96,14 +102,5 @@ int main(int argc, char** argv) { } } - CrashDialog cd; - cd.set_appname(appname); - cd.set_apppath(apppath); - cd.set_bugaddress(bugaddress); - cd.set_pid(pid); - cd.set_signal(signal_num); - - cd.run(); - - return 0; + return crash_dialog_show(p); } diff --git a/ede-bug-tools/ede-crasher/fl/crash.fl b/ede-bug-tools/ede-crasher/fl/crash.fl index 2af43dd..133f692 100644 --- a/ede-bug-tools/ede-crasher/fl/crash.fl +++ b/ede-bug-tools/ede-crasher/fl/crash.fl @@ -5,24 +5,28 @@ code_name {.cxx} Function {} {open } { Fl_Window {} {open - xywh {354 160 380 130} type Double visible + xywh {424 427 380 130} type Double visible } { Fl_Box {} { - image {../icons/core.xpm} xywh {10 10 70 75} labelsize 14 + image {../icons/core.png} xywh {10 10 65 60} labelsize 14 } Fl_Box {} { - label {Program foo just crashed !!! + label {Program foo quit unexpectedly. -You can inspect details about this crash by clicking on 'Show details' below} selected +You can inspect the details about this crash by clicking on 'Show details' below} xywh {85 10 285 75} align 148 } + Fl_Button {} { + label {@> Show details} + xywh {10 95 165 25} box FLAT_BOX align 20 + } + Fl_Button {} { + label {&Report...} selected + xywh {185 95 90 25} + } Fl_Button {} { label {&Close} xywh {280 95 90 25} } - Fl_Button {} { - label {@> Show details} - xywh {10 95 265 25} box FLAT_BOX align 20 - } } } diff --git a/ede-bug-tools/ede-crasher/fl/crash_expanded.fl b/ede-bug-tools/ede-crasher/fl/crash_expanded.fl index e469f23..593fdb3 100644 --- a/ede-bug-tools/ede-crasher/fl/crash_expanded.fl +++ b/ede-bug-tools/ede-crasher/fl/crash_expanded.fl @@ -2,33 +2,37 @@ version 1.0108 header_name {.h} code_name {.cxx} -Function {} {open selected +Function {} {open } { Fl_Window {} {open - xywh {354 160 380 340} type Double visible + xywh {404 188 380 340} type Double visible } { Fl_Box {} { - image {../icons/core.xpm} xywh {10 10 70 75} labelsize 14 + image {../icons/core.png} xywh {10 10 65 60} labelsize 14 } Fl_Box {} { - label {Program foo just crashed !!! + label {Program foo quit unexpectedly. -You can inspect details about this crash by clicking on 'Show details' below} +You can inspect the details about this crash by clicking on 'Show details' below} xywh {85 10 285 75} align 148 } + Fl_Button {} { + label {@< Hide details} + xywh {10 95 165 25} box FLAT_BOX align 20 + } + Fl_Button {} { + label {&Report...} + xywh {185 95 90 25} + } Fl_Button {} { label {&Close} xywh {280 95 90 25} } - Fl_Button {} { - label {@< Hide details} - xywh {10 95 265 25} box FLAT_BOX align 20 - } Fl_Text_Display {} { xywh {10 130 360 165} labelsize 14 textsize 14 } Fl_Button {} { - label {&Save As...} + label {&Save As...} selected xywh {280 305 90 25} } } diff --git a/ede-bug-tools/ede-crasher/icons/core.png b/ede-bug-tools/ede-crasher/icons/core.png new file mode 100644 index 0000000000000000000000000000000000000000..ef5beb4fd2da613fb0e90c5fa135b407847e96f4 GIT binary patch literal 3812 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 azy1f2sUJzklB0G20000 c #FEFC00", -", c #F7D506", -"' c #E78808", -") c #E88D06", -"! c #D1B46D", -"~ c #C7AF75", -"{ c #C2994A", -"] c #F1BB04", -"^ c #F5CF03", -"/ c #FCEE01", -"( c #EDD426", -"_ c #DCBC76", -": c #E3C06E", -"< c #CCAB4F", -"[ c #E7C16F", -"} c #ECC36B", -"| c #CCB34C", -"1 c #FCFB04", -"2 c #D1C652", -"3 c #D0B76B", -"4 c #DDBA6C", -"5 c #DAB96E", -"6 c #CFBB40", -"7 c #A7A7A7", -"8 c #A8A8A8", -"9 c #A9A9A9", -"0 c #A4A4A4", -"a c #9F9F9F", -"b c #999999", -"c c #919191", -"d c #A5B4BE", -"e c #E7E7E1", -"f c #C3C2C7", -"g c #B3AB9B", -"h c #B5A679", -"i c #C5AF6A", -"j c #D6B86A", -"k c #CDB16B", -"l c #C9B05B", -"m c #B7A27C", -"n c #EBDC19", -"o c #AFAFAF", -"p c #B8B8B8", -"q c #BBBBBB", -"r c #BCBCBC", -"s c #BABABA", -"t c #B4B4B4", -"u c #888888", -"v c #7B7B7B", -"w c #102032", -"x c #808285", -"y c #FBF5F2", -"z c #D9D0BF", -"A c #C6AD71", -"B c #DFBB69", -"C c #D9B86B", -"D c #C0AC7C", -"E c #BBA785", -"F c #AAAAAA", -"G c #ADADAD", -"H c #D6D6D6", -"I c #EBEBEB", -"J c #FCFCFC", -"K c #FEFEFE", -"L c #FFFFFF", -"M c #FBFBFB", -"N c #F5F5F5", -"O c #E7E7E7", -"P c #D2D2D2", -"Q c #868686", -"R c #636363", -"S c #616161", -"T c #6E6E6E", -"U c #3E3E3D", -"V c #3B3A3A", -"W c #161311", -"X c #65605D", -"Y c #C3BCB7", -"Z c #D8CFB0", -"` c #D1B873", -" . c #DFBD6A", -".. c #C8B37E", -"+. c #AAAEBF", -"@. c #FFFD00", -"#. c #B1B1B1", -"$. c #CACACA", -"%. c #E9E9E9", -"&. c #F0F0F0", -"*. c #E5E5E5", -"=. c #E3E3E3", -"-. c #E1E1E1", -";. c #DFDFDF", -">. c #898989", -",. c #3C3C3C", -"'. c #393939", -"). c #262626", -"!. c #1D1D1E", -"~. c #0F0F0F", -"{. c #5A5857", -"]. c #5A5955", -"^. c #4D4D45", -"/. c #918E7A", -"(. c #D3CBA7", -"_. c #E5DCB3", -":. c #E0DECD", -"<. c #AEAEAE", -"[. c #D3D3D3", -"}. c #FAFAFA", -"|. c #FDFDFD", -"1. c #EFEFEF", -"2. c #EAEAEA", -"3. c #DDDDDD", -"4. c #D7D7D7", -"5. c #D0D0D0", -"6. c #C9C9C9", -"7. c #C1C1C1", -"8. c #BDBDBD", -"9. c #7D7D7D", -"0. c #333333", -"a. c #131313", -"b. c #4F4F4F", -"c. c #484848", -"d. c #5F5F60", -"e. c #393C3A", -"f. c #080C09", -"g. c #1F1F1B", -"h. c #817F74", -"i. c #D8D6C6", -"j. c #F2F2E8", -"k. c #DFE7F0", -"l. c #F9F9F9", -"m. c #F3F3F3", -"n. c #EDEDED", -"o. c #E8E8E8", -"p. c #E4E4E4", -"q. c #DEDEDE", -"r. c #CCCCCC", -"s. c #C3C3C3", -"t. c #B9B9B9", -"u. c #ABABAB", -"v. c #A1A1A1", -"w. c #151515", -"x. c #4B4B4B", -"y. c #6B6B6B", -"z. c #3F3F3F", -"A. c #1B1B1B", -"B. c #121211", -"C. c #050604", -"D. c #000000", -"E. c #0C0707", -"F. c #433F37", -"G. c #7E7F79", -"H. c #F7F7F7", -"I. c #ECECEC", -"J. c #E2E2E2", -"K. c #DCDCDC", -"L. c #B0B0B0", -"M. c #A5A5A5", -"N. c #979797", -"O. c #969696", -"P. c #434343", -"Q. c #191919", -"R. c #010101", -"S. c #060001", -"T. c #0C0203", -"U. c #050002", -"V. c #0B0D14", -"W. c #EEEEEE", -"X. c #DADADA", -"Y. c #C6C6C6", -"Z. c #BEBEBE", -"`. c #B6B6B6", -" + c #9C9C9C", -".+ c #909090", -"++ c #848484", -"@+ c #6C6C6C", -"#+ c #1A1A1A", -"$+ c #060606", -"%+ c #020101", -"&+ c #010403", -"*+ c #020405", -"=+ c #010202", -"-+ c #D8D8D8", -";+ c #CFCFCF", -">+ c #C2C2C2", -",+ c #A2A2A2", -"'+ c #878787", -")+ c #787878", -"!+ c #656565", -"~+ c #252525", -"{+ c #080C0D", -"]+ c #F4F4F4", -"^+ c #D9D9D9", -"/+ c #D4D4D4", -"(+ c #CECECE", -"_+ c #C5C5C5", -":+ c #BFBFBF", -"<+ c #B2B2B2", -"[+ c #A0A0A0", -"}+ c #989898", -"|+ c #8E8E8E", -"1+ c #737373", -"2+ c #6D6D6D", -"3+ c #585858", -"4+ c #202020", -"5+ c #070707", -"6+ c #4B4C4C", -"7+ c #767676", -"8+ c #D1D1D1", -"9+ c #A3A3A3", -"0+ c #9B9B9B", -"a+ c #949494", -"b+ c #8C8C8C", -"c+ c #838383", -"d+ c #797979", -"e+ c #6F6F6F", -"f+ c #676767", -"g+ c #4A4A4A", -"h+ c #030303", -"i+ c #181818", -"j+ c #040404", -"k+ c #565656", -"l+ c #D5D5D5", -"m+ c #C7C7C7", -"n+ c #C4C4C4", -"o+ c #ACACAC", -"p+ c #9E9E9E", -"q+ c #7E7E7E", -"r+ c #666666", -"s+ c #606060", -"t+ c #575757", -"u+ c #353535", -"v+ c #383738", -"w+ c #777677", -"x+ c #494949", -"y+ c #CBCBCB", -"z+ c #B5B5B5", -"A+ c #9A9A9A", -"B+ c #939393", -"C+ c #8B8B8B", -"D+ c #7C7C7C", -"E+ c #5E5E5E", -"F+ c #595959", -"G+ c #424242", -"H+ c #171717", -"I+ c #0C0C0C", -"J+ c #5D5D5D", -"K+ c #2F2F2F", -"L+ c #8F8F8F", -"M+ c #8A8A8A", -"N+ c #858585", -"O+ c #7F7F7F", -"P+ c #757575", -"Q+ c #686868", -"R+ c #5B5B5B", -"S+ c #4D4D4D", -"T+ c #6F6D6E", -"U+ c #3B3B3B", -"V+ c #9D9D9D", -"W+ c #959595", -"X+ c #8D8D8D", -"Y+ c #828282", -"Z+ c #6A6A6A", -"`+ c #646464", -" @ c #555555", -".@ c #2E2E2E", -"+@ c #0B0B0B", -"@@ c #020202", -"#@ c #222222", -"$@ c #1D1D1D", -"%@ c #080808", -"&@ c #808080", -"*@ c #7A7A7A", -"=@ c #707070", -"-@ c #5F5F5F", -";@ c #545454", -">@ c #525252", -",@ c #2B2B2B", -"'@ c #0D0D0D", -")@ c #050505", -"!@ c #111111", -"~@ c #5A5A5A", -"{@ c #929292", -"]@ c #717171", -"^@ c #515151", -"/@ c #3D3D3D", -"(@ c #272727", -"_@ c #323232", -":@ c #6D6C6C", -"<@ c #1C1C1C", -"[@ c #535353", -"}@ c #414141", -"|@ c #0A0A0A", -"1@ c #646363", -"2@ c #161616", -"3@ c #696969", -"4@ c #313131", -"5@ c #1F1F1F", -"6@ c #0E0E0E", -"7@ c #090909", -"8@ c #121212", -"9@ c #444444", -"0@ c #464646", -"a@ c #282828", -"b@ c #5C5C5C", -"c@ c #141414", -"d@ c #212121", -"e@ c #101010", -"f@ c #616061", -"g@ c #626262", -"h@ c #232323", -"i@ c #373737", -"j@ c #5B5959", -"k@ c #1E1E1E", -"l@ c #2C2C2C", -"m@ c #505050", -"n@ c #494646", -"o@ c #303030", -"p@ c #626162", -"q@ c #292929", -"r@ c #2A2A2A", -"s@ c #616060", -"t@ c #2D2D2D", -"u@ c #575656", -"v@ c #363636", -"w@ c #3E3E3E", -"x@ c #5F5E5E", -"y@ c #3A3A3A", -"z@ c #242424", -"A@ c #343434", -"B@ c #383838", -"C@ c #474747", -"D@ c #4F4D4D", -"E@ c #737272", -"F@ c #404040", -"G@ c #5B5A5A", -"H@ c #696869", -"I@ c #4E4E4E", -"J@ c #3D3C3C", -"K@ c #5D5B5C", -"L@ c #6A696A", -"M@ c #454545", -"N@ c #5B595A", -"O@ c #6A6969", -"P@ c #515050", -"Q@ c #595859", -"R@ c #656464", -"S@ c #413F3F", -"T@ c #747373", -"U@ c #5F5E5F", -"V@ c #605F5F", -"W@ c #595858", -"X@ c #545252", -" . + ", -" @ # $ % & * ", -" = - ; $ ", -" > , ' ) ", -" > ! ~ { ] ^ ", -" / ( _ : < . ", -" [ } | ", -" 1 2 3 4 5 6 ", -" 7 8 9 0 a b c d e f g h i j k l m n ", -" 8 o p q r s t 8 b u v w x y z A B C D E ", -" F G s H I J K L M N O P t Q R S T U V W X Y Z ` ...+. @. ", -" 7 #.$.%.L L L M N &.%.*.=.-.;.$.>.,.'.).!.~.{.].^./.(._.:. ", -" <.[.}.L L |.N 1.2.=.3.4.5.6.7.8.7.s 9.0.a.b.c.d.e.f.g.h.i.j.k. ", -" #.I L L l.m.n.I o.p.q.4.[.r.s.t.u.v.G u w.x.y.z.A.B.C.D.E.F.G. ", -" #.m.L H.1.I.I.o.*.J.K.H 5.6.7.t.L.M.N.O.u P.S P.Q.R.D.S.T.U.D.V. ", -" 8 W.L &.%.o.O *.J.3.X.[.r.Y.Z.`.G 0 +.+Q ++@+0.#+$+D.R.%+&+*+=+ ", -" c q.L I.-.=.-.;.3.-+[.;+$.>+r t u.,+b c '+9.)+!+~+R.D.R.R.D.D.{+ ", -" )+L.]+o.^+X.^+H /+P (+6._+:+t.<+8 [+}+|+++v 1+2+3+4+D.D.D.D.D.5+6+ ", -" 7+8+%.4.8+8+5.(+$.Y.s.Z.p <+u.9+0+a+b+c+d+e+f+R g+w.D.D.D.h+i+j+k+ ", -" y.>.l+H 6.m+m+n+7.Z.q `.L.o+M.p+O..+u q+7+e+r+s+t+u+5+D.D.D.D.D.D.v+w+ ", -" x+a+y+_+q r q p z+<+<.9 0 a A+B+C+c+D+1+2+!+E+F+G+H+R.D.D.D.D.D.D.I+r+ ", -" J+K+L+Z.z+<.o G F 7 M.[+ +N.c M+N+O+P+e+Q+S R+F+S+~+h+D.D.D.D.D.D.D.D.c.T+ ", -" U+i+2+t 9 a [+V+A+}+W+c X+>.Y+v )+1+Z+`+J+t+ @x..@+@@@h+@@@@D.D.D.D.D.#@P+ ", -" $@%@U+O.0 B+X+|+b+M+'+c+&@*@P+=@@+`+-@F+;@>@c.,@'@j+j+j+j+j+@@D.D.D.D.)@t+ ", -"@++@D.!@~@{@.+&@O+O+v d+7+]@@+Q+!+s+3+ @^@g+/@(@'@)@$+$+j+j+$+$+h+R.D.D.D._@:@ ", -"J+@@D.D.<@~@D+D+7+1+=@T y.r+S -@R+3+[@x.}@K+#+|@)@$+$+$+)@$+5+%@%@h+D.D.D.$@1@ ", -"3+@@D.D.D.2@G+s+3@Q+r+`+S J+F+[@S+g+}@4@5@6@)@$+)@5+5+5+5+%@7@|@+@5+@@D.D.8@E+ ", -";@@@D.D.D.D.|@~+U+9@c.g+g+0@P.U+4@a@$@~.5+$+5+5+5+%@%@7@7@|@+@I+'@'@$+D.D.'@b@ ", -"b.@@D.D.D.D.R.@@+@c@$@d@#@5@<@H+!@7@$+5+5+5+%@|@+@+@7@+@I+'@6@6@e@a.6@h+D.I+~@ ", -"-@)@D.D.D.D.h+h+@@h+j+)@j+$+$+5+$+$+$+5+5+5+7@+@I+I+I+'@~.e@8@a.a.2@2@5+D.e@E+ ", -"-@+@D.D.D.D.h+@@h+j+j+)@)@$+$+5+%@%@%@%@7@|@|@+@'@'@6@~.!@!@a.w.w.2@<@7@D.a.f@ ", -"g@!@D.D.D.D.h+j+$+$+$+$+$+5+5+%@7@7@7@|@+@I+I+'@~.~.e@!@a.c@2@i+Q.#+h@I+D.#@!+ ", -" 5@@@D.D.D.$+$+$+$+5+5+5+%@7@7@|@|@|@+@I+'@e@8@8@c@2@2@H+#+A.<@$@4+a@~.D.i@j@ ", -" P.h+D.D.D.5+%@5+%@|@|@+@|@I+I+'@6@~.~.~.e@8@8@c@H+i+Q.#+<@k@4+d@).l@a.@@m@n@ ", -" Q+I+D.D.D.$+%@7@|@|@+@I+I+'@'@~.e@e@e@e@8@c@2@H+Q.A.$@k@4+h@~+).l@o@c@6@p@ ", -" ++q@@@D.D.%@|@+@I+I++@I+6@e@!@!@8@c@c@c@w.i+A.A.$@5@#@h@~+a@r@l@u+4@a._@s@ ", -" k+5+D.D.%@I+~.6@6@6@~.8@8@a.c@w.H+i+H+Q.<@5@5@d@h@).a@l@t@o@0.,.t@6@u@ ", -" =@).D.D.)@+@8@!@!@a.c@c@w.2@H+i+#+A.<@k@4+#@h@).q@,@.@_@0.v@z.w@<@4@x@ ", -" 3+6@D.R.$+8@2@w.2@H+i+Q.#+#+A.$@5@d@h@~+).a@,@.@o@0.v@y@P.x+K+2@x@ ", -" 9@j+D.@@6@Q.A.Q.Q.A.k@5@k@4+#@h@z@(@r@l@K+_@A@v@B@U+C@S+U+w.x.D@ ", -" E@i@R.D.)@8@k@#@d@5@d@h@z@~+(@q@a@l@K+4@A@B@'.,.P.x.b./@Q.F@G@ ", -" H@4@D.D.$+c@h@r@r@q@(@(@q@,@.@K+_@A@v@y@w@P.g+^@I@B@<@J@K@ ", -" L@0.)@D.)@8@#@o@0.0._@_@_@A@v@i@y@F@M@g+m@^@M@l@k@P.N@ ", -" O@z.6@D.@@|@A.r@i@w@/@w@F@}@P.0@x+x.x.P..@4+).P@Q@ ", -" F+(@+@j+j++@c@#@t@'.}@9@0@G+'..@#@H+z@^@R@S@ ", -" R@k+0.|@5+j+)@@@R.D.D.R.R.j+c@u+F+T@ ", -" U@s@;@,.z@|@'@)@5+i+d@,.E@ ", -" E+V@W@R+W@X@ "}; +". c #FF9F10", +"+ c #FF9904", +"@ c #FF9200", +"# c #717374", +"$ c #727475", +"% c #707273", +"& c #76787B", +"* c #757877", +"= c #6A491D", +"- c #616364", +"; c #777778", +"> c #C7C7C7", +", c #E7E7E7", +"' c #E1E0E0", +") c #AEADAD", +"! c #646465", +"~ c #313740", +"{ c #585A5C", +"] c #646565", +"^ c #E0E0E0", +"/ c #F0F0F0", +"( c #EEEEEE", +"_ c #E5E5E5", +": c #CFCFCF", +"< c #9F9F9F", +"[ c #3C3C3C", +"} c #585A5B", +"| c #131314", +"1 c #8F8F8F", +"2 c #C8C8C8", +"3 c #CDCDCD", +"4 c #C9C9C9", +"5 c #C2C2C2", +"6 c #ADADAD", +"7 c #848484", +"8 c #414140", +"9 c #0A0B0B", +"0 c #6A6C6E", +"a c #454748", +"b c #101010", +"c c #3F3E3E", +"d c #737373", +"e c #686868", +"f c #6A6A6A", +"g c #535353", +"h c #1F1F1F", +"i c #000000", +"j c #353637", +"k c #232424", +"l c #0E0E0E", +"m c #151515", +"n c #292929", +"o c #373737", +"p c #383838", +"q c #2D2D2D", +"r c #1A1A1A", +"s c #070707", +"t c #19191A", +"u c #1C1C1D", +"v c #080808", +"w c #161616", +"x c #1E1E1E", +"y c #1B1B1B", +"z c #171717", +"A c #0B0B0B", +"B c #121313", +"C c #2E2E2F", +"D c #040404", +"E c #191919", +"F c #0C0C0C", +"G c #1C1C1C", +"H c #282828", +"I c #303030", +"J c #323232", +"K c #2E2E2E", +"L c #1B1C1C", +"M c #2C2C2D", +"N c #363636", +"O c #141414", +"P c #3F3F3F", +"Q c #494949", +"R c #4A4A4A", +"S c #424242", +"T c #232323", +"U c #252526", +"V c #060606", +"W c #090909", +"X c #131313", +"Y c #3D3D3D", +"Z c #515151", +"` c #616161", +" . c #5F5F5F", +".. c #212121", +"+. c #3B3B3B", +"@. c #4F4F4F", +"#. c #585858", +"$. c #434343", +"%. c #010101", +"&. c #050505", +"*. c #181818", +"=. c #020202", +"-. c #010102", +" . + @ ", +" # $ % & * = ", +" - ; > , ' ) ! ~ ", +" { ] ^ / ( _ : < [ } ", +" | 1 2 3 4 5 6 7 8 9 0 ", +" a b c d e e f e g h i j ", +" k l m l n o p q r s i t ", +" u i i i v w x h y z A B ", +" C D E D F G H I J K G L ", +" M l N O G I P Q R S T U ", +" V W X n Y Z ` .S r ", +" i s ..+.@.#.$.E V ", +" D %.&.b *.O s %. ", +" &.&.=.i i i %.-. ", +" ", +" "};