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.
This commit is contained in:
Sanel Zukan 2009-07-06 11:51:25 +00:00
parent cccaf1b72f
commit dfd2355c18
12 changed files with 940 additions and 745 deletions

View File

@ -143,7 +143,10 @@ int main(int argc, char** argv) {
title_box->labelsize(14); title_box->labelsize(14);
title_box->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE); 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); description_box->align(133|FL_ALIGN_INSIDE);
bug_title_input = new Fl_Input(10, 165, 225, 25, _("Short and descriptive title:")); bug_title_input = new Fl_Input(10, 165, 225, 25, _("Short and descriptive title:"));

View File

@ -0,0 +1,374 @@
#ifndef __COREICON_H__
#define __COREICON_H__
#include <FL/Fl_Image.H>
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

View File

@ -1,9 +1,9 @@
/* /*
* $Id$ * $Id$
* *
* Ecrasher, a crash handler tool * ede-crasher, a crash handler tool
* Part of Equinox Desktop Environment (EDE). * 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 * This program is licensed under terms of the
* GNU General Public License version 2 or newer. * GNU General Public License version 2 or newer.
@ -14,261 +14,217 @@
#include <config.h> #include <config.h>
#endif #endif
#include "icons/core.xpm"
#include "CrashDialog.h"
#include <FL/Fl.H>
#include <FL/Fl_Pixmap.H>
#include <FL/Fl_File_Chooser.H>
#include <sys/utsname.h> #include <sys/utsname.h>
#include <sys/types.h> #include <stdio.h>
#include <sys/stat.h> #include <errno.h>
#include <sys/wait.h> #include <string.h>
#include <fcntl.h>
#include <unistd.h> #include <unistd.h>
#include <FL/Fl.H>
#include <FL/Fl_Box.H>
#include <FL/Fl_Button.H>
#include <FL/Fl_Text_Display.H>
#include <FL/Fl_Text_Buffer.H>
#include <FL/Fl_File_Chooser.H>
#include <edelib/Nls.h> #include <edelib/Nls.h>
#include <edelib/File.h> #include <edelib/Window.h>
#include <edelib/String.h>
#include <edelib/Version.h>
#include <edelib/MessageBox.h> #include <edelib/MessageBox.h>
#include <edelib/FileTest.h> #include <edelib/Run.h>
#include <edelib/File.h>
#define DIALOG_W 380 #include "CrashDialog.h"
#define DIALOG_H 130 #include "GdbOutput.h"
#define DIALOG_W_EXPANDED 380 #include "CoreIcon.h"
#define DIALOG_H_EXPANDED 340 #include "icons/core.xpm"
int spawn_backtrace(const char* gdb_path, const char* program, const char* core, const char* output, const char* script) { #define WIN_H_NORMAL 130
const char* gdb_script = "bt\nquit\n"; #define WIN_H_EXPANDED 340
const int gdb_script_len = 8;
/* file with gdb commands */ EDELIB_NS_USING(String)
int sfd = open(script, O_WRONLY | O_TRUNC | O_CREAT, 0770); EDELIB_NS_USING(alert)
if(sfd == -1) EDELIB_NS_USING(run_async)
return -1; EDELIB_NS_USING(file_remove)
write(sfd, gdb_script, gdb_script_len); EDELIB_NS_USING(file_path)
close(sfd);
/* output file with gdb backtrace */ static edelib::Window *win;
int ofd = open(output, O_WRONLY | O_TRUNC | O_CREAT, 0770); static Fl_Text_Display *txt_display;
if(ofd == -1) static Fl_Text_Buffer *txt_buf;
return -1; 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(); static void close_cb(Fl_Widget*, void*) {
win->hide();
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;
} }
edelib::String get_uname(void) { static void save_as_cb(Fl_Widget*, void*) {
struct utsname ut; const char *p = fl_file_chooser(_("Save details to..."), "Text Files (*.txt)\tAll Files(*)", "dump.txt");
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");
if(!p) if(!p)
return; return;
// so we can have EOL in file /* so we can have EOL */
trace_buff->append("\n"); txt_buf->append("\n");
if(trace_buff->savefile(p) != 0) if(txt_buf->savefile(p) != 0)
edelib::alert(_("Unable to save to %s. Please check permissions to write in this directory or file"), p); alert(_("Unable to save to %s. Please check permissions to write in this directory or file"), p);
} }
void CrashDialog::run(void) { static void write_host_info(void) {
edelib::String l; txt_buf->append("---------- short summary ----------\n");
txt_buf->append("\nEDE version: " PACKAGE_VERSION);
txt_buf->append("\nedelib version: " EDELIB_VERSION);
if(appname || apppath) { struct utsname ut;
const char* p = (appname ? appname : apppath); if(uname(&ut) == 0) {
l.printf(_("Program '%s' just crashed!"), p); char buf[1024];
} else snprintf(buf, sizeof(buf), "%s %s %s %s %s", ut.sysname, ut.nodename, ut.release, ut.version, ut.machine);
l += _("Program just crashed!");
l += _("\n\nYou can inspect details about this crash by clicking on 'Show details' below");
txt_box->copy_label(l.c_str()); txt_buf->append("\nSystem info: ");
txt_buf->append(buf);
}
if(!shown()) txt_buf->append("\nProgram name: ");
show(); if(pdetails->name)
txt_buf->append(pdetails->name);
else
txt_buf->append("(unknown)");
while(shown()) txt_buf->append("\nProgram path: ");
Fl::wait(); 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;
} }

View File

@ -1,9 +1,9 @@
/* /*
* $Id$ * $Id$
* *
* Ecrasher, a crash handler tool * ede-crasher, a crash handler tool
* Part of Equinox Desktop Environment (EDE). * 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 * This program is licensed under terms of the
* GNU General Public License version 2 or newer. * GNU General Public License version 2 or newer.
@ -13,50 +13,15 @@
#ifndef __CRASHDIALOG_H__ #ifndef __CRASHDIALOG_H__
#define __CRASHDIALOG_H__ #define __CRASHDIALOG_H__
#include <FL/Fl_Box.H> struct ProgramDetails {
#include <FL/Fl_Button.H> bool ede_app;
#include <FL/Fl_Pixmap.H> const char *name;
#include <FL/Fl_Text_Display.H> const char *path;
#include <FL/Fl_Text_Buffer.H> const char *pid;
#include <FL/Fl_Window.H> const char *sig;
const char *bugaddress;
#include <edelib/String.h>
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);
}; };
int crash_dialog_show(const ProgramDetails& p);
#endif #endif

View File

@ -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 <sys/utsname.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/wait.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#include <stdlib.h>
#include <string.h>
#include <edelib/Missing.h>
#include <edelib/File.h>
#include <edelib/Debug.h>
#include <edelib/File.h>
#include <edelib/FileTest.h>
#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;
}

View File

@ -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 <edelib/String.h>
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

View File

@ -10,7 +10,7 @@
SubDir TOP ede-bug-tools ede-crasher ; 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) ; EdeProgram ede-crasher : $(SOURCE) ;
TranslationStrings locale : $(SOURCE) ; TranslationStrings locale : $(SOURCE) ;

View File

@ -3,7 +3,7 @@
* *
* ede-crasher, a crash handler tool * ede-crasher, a crash handler tool
* Part of Equinox Desktop Environment (EDE). * 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 * This program is licensed under terms of the
* GNU General Public License version 2 or newer. * GNU General Public License version 2 or newer.
@ -30,10 +30,11 @@ static void help(void) {
puts("EDE crash handler\n"); puts("EDE crash handler\n");
puts("Options:"); puts("Options:");
puts(" -h, --help this help"); puts(" -h, --help this help");
puts(" -e, --edeapp use this flag for EDE applications");
puts(" -b, --bugaddress [ADDRESS] bug address to use"); puts(" -b, --bugaddress [ADDRESS] bug address to use");
puts(" -p, --pid [PID] the PID of the program"); puts(" -p, --pid [PID] the PID of the program");
puts(" -a, --appname [NAME] name 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"); puts(" -s, --signal [SIGNAL] the signal number that was caught");
} }
@ -44,48 +45,53 @@ int main(int argc, char** argv) {
} }
const char* a; const char* a;
const char* bugaddress = NULL; ProgramDetails p;
const char* appname = NULL;
const char* apppath = NULL; p.bugaddress = NULL;
const char* pid = 0; p.name = NULL;
const char* signal_num = 0; p.path = NULL;
p.pid = NULL;
p.sig = NULL;
p.ede_app = false;
for(int i = 1; i < argc; i++) { for(int i = 1; i < argc; i++) {
a = argv[i]; a = argv[i];
if(CHECK_ARGV(a, "-h", "--help")) { if(CHECK_ARGV(a, "-h", "--help")) {
help(); help();
return 0; return 0;
} else if(CHECK_ARGV(a, "-e", "--edeapp")) {
p.ede_app = true;
} else if(CHECK_ARGV(a, "-b", "--bugaddress")) { } else if(CHECK_ARGV(a, "-b", "--bugaddress")) {
bugaddress = next_param(i, argv, argc); p.bugaddress = next_param(i, argv, argc);
if(!bugaddress) { if(!p.bugaddress) {
puts("Missing bug address parameter"); puts("Missing bug address parameter");
return 1; return 1;
} }
i++; i++;
} else if(CHECK_ARGV(a, "-p", "--pid")) { } else if(CHECK_ARGV(a, "-p", "--pid")) {
pid = next_param(i, argv, argc); p.pid = next_param(i, argv, argc);
if(!pid) { if(!p.pid) {
puts("Missing pid parameter"); puts("Missing pid parameter");
return 1; return 1;
} }
i++; i++;
} else if(CHECK_ARGV(a, "-a", "--appname")) { } else if(CHECK_ARGV(a, "-a", "--appname")) {
appname = next_param(i, argv, argc); p.name = next_param(i, argv, argc);
if(!appname) { if(!p.name) {
puts("Missing application name"); puts("Missing application name");
return 1; return 1;
} }
i++; i++;
} else if(CHECK_ARGV(a, "-e", "--apppath")) { } else if(CHECK_ARGV(a, "-t", "--apppath")) {
apppath = next_param(i, argv, argc); p.path = next_param(i, argv, argc);
if(!apppath) { if(!p.path) {
puts("Missing application path"); puts("Missing application path");
return 1; return 1;
} }
i++; i++;
} else if(CHECK_ARGV(a, "-s", "--signal")) { } else if(CHECK_ARGV(a, "-s", "--signal")) {
signal_num = next_param(i, argv, argc); p.sig = next_param(i, argv, argc);
if(!signal_num) { if(!p.sig) {
puts("Missing signal number"); puts("Missing signal number");
return 1; return 1;
} }
@ -96,14 +102,5 @@ int main(int argc, char** argv) {
} }
} }
CrashDialog cd; return crash_dialog_show(p);
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;
} }

View File

@ -5,24 +5,28 @@ code_name {.cxx}
Function {} {open Function {} {open
} { } {
Fl_Window {} {open Fl_Window {} {open
xywh {354 160 380 130} type Double visible xywh {424 427 380 130} type Double visible
} { } {
Fl_Box {} { 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 {} { 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 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 {} { Fl_Button {} {
label {&Close} label {&Close}
xywh {280 95 90 25} xywh {280 95 90 25}
} }
Fl_Button {} {
label {@> Show details}
xywh {10 95 265 25} box FLAT_BOX align 20
}
} }
} }

View File

@ -2,33 +2,37 @@
version 1.0108 version 1.0108
header_name {.h} header_name {.h}
code_name {.cxx} code_name {.cxx}
Function {} {open selected Function {} {open
} { } {
Fl_Window {} {open Fl_Window {} {open
xywh {354 160 380 340} type Double visible xywh {404 188 380 340} type Double visible
} { } {
Fl_Box {} { 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 {} { 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 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 {} { Fl_Button {} {
label {&Close} label {&Close}
xywh {280 95 90 25} xywh {280 95 90 25}
} }
Fl_Button {} {
label {@< Hide details}
xywh {10 95 265 25} box FLAT_BOX align 20
}
Fl_Text_Display {} { Fl_Text_Display {} {
xywh {10 130 360 165} labelsize 14 textsize 14 xywh {10 130 360 165} labelsize 14 textsize 14
} }
Fl_Button {} { Fl_Button {} {
label {&Save As...} label {&Save As...} selected
xywh {280 305 90 25} xywh {280 305 90 25}
} }
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@ -1,416 +1,122 @@
/* XPM */ /* XPM */
static char * core_xpm[] = { static char * core_xpm[] = {
"48 48 365 2", "16 16 103 2",
" c None", " c None",
". c #FAE601", ". c #FF9F10",
"+ c #FCF001", "+ c #FF9904",
"@ c #FEF800", "@ c #FF9200",
"# c #F9E202", "# c #717374",
"$ c #F2BE04", "$ c #727475",
"% c #F2BD04", "% c #707273",
"& c #F5CC03", "& c #76787B",
"* c #FBE901", "* c #757877",
"= c #FBEC01", "= c #6A491D",
"- c #EB9A06", "- c #616364",
"; c #EEAA05", "; c #777778",
"> c #FEFC00", "> c #C7C7C7",
", c #F7D506", ", c #E7E7E7",
"' c #E78808", "' c #E1E0E0",
") c #E88D06", ") c #AEADAD",
"! c #D1B46D", "! c #646465",
"~ c #C7AF75", "~ c #313740",
"{ c #C2994A", "{ c #585A5C",
"] c #F1BB04", "] c #646565",
"^ c #F5CF03", "^ c #E0E0E0",
"/ c #FCEE01", "/ c #F0F0F0",
"( c #EDD426", "( c #EEEEEE",
"_ c #DCBC76", "_ c #E5E5E5",
": c #E3C06E", ": c #CFCFCF",
"< c #CCAB4F", "< c #9F9F9F",
"[ c #E7C16F", "[ c #3C3C3C",
"} c #ECC36B", "} c #585A5B",
"| c #CCB34C", "| c #131314",
"1 c #FCFB04", "1 c #8F8F8F",
"2 c #D1C652", "2 c #C8C8C8",
"3 c #D0B76B", "3 c #CDCDCD",
"4 c #DDBA6C", "4 c #C9C9C9",
"5 c #DAB96E", "5 c #C2C2C2",
"6 c #CFBB40", "6 c #ADADAD",
"7 c #A7A7A7", "7 c #848484",
"8 c #A8A8A8", "8 c #414140",
"9 c #A9A9A9", "9 c #0A0B0B",
"0 c #A4A4A4", "0 c #6A6C6E",
"a c #9F9F9F", "a c #454748",
"b c #999999", "b c #101010",
"c c #919191", "c c #3F3E3E",
"d c #A5B4BE", "d c #737373",
"e c #E7E7E1", "e c #686868",
"f c #C3C2C7", "f c #6A6A6A",
"g c #B3AB9B", "g c #535353",
"h c #B5A679", "h c #1F1F1F",
"i c #C5AF6A", "i c #000000",
"j c #D6B86A", "j c #353637",
"k c #CDB16B", "k c #232424",
"l c #C9B05B", "l c #0E0E0E",
"m c #B7A27C", "m c #151515",
"n c #EBDC19", "n c #292929",
"o c #AFAFAF", "o c #373737",
"p c #B8B8B8", "p c #383838",
"q c #BBBBBB", "q c #2D2D2D",
"r c #BCBCBC", "r c #1A1A1A",
"s c #BABABA", "s c #070707",
"t c #B4B4B4", "t c #19191A",
"u c #888888", "u c #1C1C1D",
"v c #7B7B7B", "v c #080808",
"w c #102032", "w c #161616",
"x c #808285", "x c #1E1E1E",
"y c #FBF5F2", "y c #1B1B1B",
"z c #D9D0BF", "z c #171717",
"A c #C6AD71", "A c #0B0B0B",
"B c #DFBB69", "B c #121313",
"C c #D9B86B", "C c #2E2E2F",
"D c #C0AC7C", "D c #040404",
"E c #BBA785", "E c #191919",
"F c #AAAAAA", "F c #0C0C0C",
"G c #ADADAD", "G c #1C1C1C",
"H c #D6D6D6", "H c #282828",
"I c #EBEBEB", "I c #303030",
"J c #FCFCFC", "J c #323232",
"K c #FEFEFE", "K c #2E2E2E",
"L c #FFFFFF", "L c #1B1C1C",
"M c #FBFBFB", "M c #2C2C2D",
"N c #F5F5F5", "N c #363636",
"O c #E7E7E7", "O c #141414",
"P c #D2D2D2", "P c #3F3F3F",
"Q c #868686", "Q c #494949",
"R c #636363", "R c #4A4A4A",
"S c #616161", "S c #424242",
"T c #6E6E6E", "T c #232323",
"U c #3E3E3D", "U c #252526",
"V c #3B3A3A", "V c #060606",
"W c #161311", "W c #090909",
"X c #65605D", "X c #131313",
"Y c #C3BCB7", "Y c #3D3D3D",
"Z c #D8CFB0", "Z c #515151",
"` c #D1B873", "` c #616161",
" . c #DFBD6A", " . c #5F5F5F",
".. c #C8B37E", ".. c #212121",
"+. c #AAAEBF", "+. c #3B3B3B",
"@. c #FFFD00", "@. c #4F4F4F",
"#. c #B1B1B1", "#. c #585858",
"$. c #CACACA", "$. c #434343",
"%. c #E9E9E9", "%. c #010101",
"&. c #F0F0F0", "&. c #050505",
"*. c #E5E5E5", "*. c #181818",
"=. c #E3E3E3", "=. c #020202",
"-. c #E1E1E1", "-. c #010102",
";. c #DFDFDF", " . + @ ",
">. c #898989", " # $ % & * = ",
",. c #3C3C3C", " - ; > , ' ) ! ~ ",
"'. c #393939", " { ] ^ / ( _ : < [ } ",
"). c #262626", " | 1 2 3 4 5 6 7 8 9 0 ",
"!. c #1D1D1E", " a b c d e e f e g h i j ",
"~. c #0F0F0F", " k l m l n o p q r s i t ",
"{. c #5A5857", " u i i i v w x h y z A B ",
"]. c #5A5955", " C D E D F G H I J K G L ",
"^. c #4D4D45", " M l N O G I P Q R S T U ",
"/. c #918E7A", " V W X n Y Z ` .S r ",
"(. c #D3CBA7", " i s ..+.@.#.$.E V ",
"_. c #E5DCB3", " D %.&.b *.O s %. ",
":. c #E0DECD", " &.&.=.i i i %.-. ",
"<. 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@ "};