]> git.lyx.org Git - lyx.git/blob - src/frontends/xforms/FormSplash.C
change X-windows to X window
[lyx.git] / src / frontends / xforms / FormSplash.C
1 /**
2  * \file FormSplash.C
3  * Copyright 2001 the LyX Team
4  * Read the file COPYING
5  *
6  * \author Allan Rae
7  * \author John Levon
8  */
9
10 #include <config.h>
11
12 #include FORMS_H_LOCATION
13
14 #ifdef __GNUG__
15 #pragma implementation
16 #endif
17
18 #include "ControlSplash.h"
19 #include "FormSplash.h"
20 #include "form_splash.h"
21 #include "form_splash.h"
22 #include "support/LAssert.h"
23
24 extern "C" {
25         
26         static
27         int C_FormSplashCloseCB(FL_FORM * form, void *)
28         {
29                 lyx::Assert(form && form->u_vdata);
30                 FormSplash * pre = static_cast<FormSplash *>(form->u_vdata);
31                 pre->Hide();
32                 return FL_CANCEL;
33         }
34         
35         void C_FormSplashCB(FL_OBJECT * ob, long)
36         {
37                 lyx::Assert(ob && ob->form && ob->form->u_vdata);
38                 FormSplash * pre = static_cast<FormSplash*>(ob->form->u_vdata);
39                 pre->Hide();
40         }
41         
42 }
43
44  
45 FormSplash::FormSplash(ControlSplash & c)
46         : ViewSplash(c)
47 {}
48
49
50 ControlSplash & FormSplash::controller() const
51 {
52         return static_cast<ControlSplash &>(controller_);
53         //return dynamic_cast<ControlSplash &>(controller_);
54 }
55
56
57 void FormSplash::show()
58 {
59         if (!dialog_.get()) {
60                 build();
61                 fl_set_form_atclose(dialog_->form, C_FormSplashCloseCB, 0);
62         }
63
64         int const xpos = WidthOfScreen(ScreenOfDisplay(fl_get_display(),
65                                                        fl_screen));
66         int const ypos = HeightOfScreen(ScreenOfDisplay(fl_get_display(),
67                                                         fl_screen));
68
69         fl_set_form_position(dialog_->form, xpos, ypos);
70
71         // Show the title form at most 5 secs
72         fl_set_timer(dialog_->splash_timer, 5);
73
74         if (dialog_->form->visible)
75                 fl_raise_form(dialog_->form);
76         else
77                 // Workaround dumb xforms sizing bug
78                 fl_set_form_minsize(dialog_->form,
79                                     dialog_->form->w,
80                                     dialog_->form->h);
81                 fl_show_form(dialog_->form, FL_PLACE_CENTER, FL_NOBORDER, "");
82 }
83
84
85 void FormSplash::hide()
86 {
87         if (dialog_->form && dialog_->form->visible)
88                 fl_hide_form(dialog_->form);
89 }
90
91  
92 void FormSplash::build()
93 {
94         dialog_.reset(build_splash());
95
96         fl_set_form_dblbuffer(dialog_->form, 1); // use dbl buffer
97         fl_addto_form(dialog_->form);
98         FL_OBJECT * obj = fl_add_pixmapbutton(FL_NORMAL_BUTTON, 0, 0, 425, 290, "");
99         fl_set_pixmapbutton_file(obj, controller().bannerFile().c_str());
100         
101         fl_set_pixmapbutton_focus_outline(obj, 3);
102         fl_set_button_shortcut(obj, "^M ^[", 1);
103         fl_set_object_boxtype(obj, FL_NO_BOX);
104         fl_set_object_callback(obj, C_FormSplashCB, 0);
105         
106         obj = fl_add_text(FL_NORMAL_TEXT, 248, 265, 170, 16,
107                           controller().LyXVersion().c_str());
108         fl_set_object_lsize(obj, FL_NORMAL_SIZE);
109 //      fl_mapcolor(FL_FREE_COL2, 0x05, 0x2e, 0x4c);
110         fl_mapcolor(FL_FREE_COL2, 0x2b, 0x47, 0x82);
111         fl_mapcolor(FL_FREE_COL3, 0xe1, 0xd2, 0x9b);
112         fl_set_object_color(obj, FL_FREE_COL2, FL_FREE_COL2);
113         fl_set_object_lcol(obj, FL_FREE_COL3);
114         fl_set_object_lalign(obj, FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
115         fl_set_object_lstyle(obj, FL_BOLD_STYLE);
116         fl_end_form();
117 }