41
GtkDialog *HelpSupportDlg::sDialog = NULL;
45
*-----------------------------------------------------------------------------
47
* cdk::HelpSupportDlg::ShowDlg --
42
*-----------------------------------------------------------------------------
44
* cdk::HelpSupportDlg::HelpSupportDlg --
54
*-----------------------------------------------------------------------------
57
HelpSupportDlg::HelpSupportDlg()
66
*-----------------------------------------------------------------------------
68
* cdk::HelpSupportDlg::~HelpSupportDlg --
78
*-----------------------------------------------------------------------------
81
HelpSupportDlg::~HelpSupportDlg()
87
*-----------------------------------------------------------------------------
89
* cdk::HelpSupportDlg::Run --
49
91
* Displays the help and support dialog.
51
* If no HelpSupportDlg currently exists,
52
* a new one is constructed.
58
* New window is shown or existed window is given focus.
98
* New window is shown or existing window is given focus.
60
100
*-----------------------------------------------------------------------------
64
HelpSupportDlg::ShowDlg(GtkWindow *parent) // IN
104
HelpSupportDlg::Run()
67
gtk_window_present(GTK_WINDOW(sDialog));
108
gtk_window_present(GTK_WINDOW(mDialog));
71
sDialog = GTK_DIALOG(gtk_dialog_new_with_buttons(
72
gtk_window_get_title(parent),
73
parent, GTK_DIALOG_NO_SEPARATOR,
112
mDialog = GTK_DIALOG(gtk_dialog_new_with_buttons(
113
gtk_window_get_title(mParent),
114
mParent, GTK_DIALOG_NO_SEPARATOR,
76
g_object_add_weak_pointer(G_OBJECT(sDialog), (gpointer *)&sDialog);
117
g_object_add_weak_pointer(G_OBJECT(mDialog), (gpointer *)&mDialog);
77
118
GtkButton *button = Util::CreateButton(GTK_STOCK_CLOSE);
78
gtk_box_pack_start(GTK_BOX(sDialog->action_area), GTK_WIDGET(button),
119
gtk_box_pack_start(GTK_BOX(mDialog->action_area), GTK_WIDGET(button),
80
g_signal_connect_swapped(button, "clicked", G_CALLBACK(gtk_widget_destroy),
83
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(sDialog)->vbox),
84
CreateHelpWidget(), true, true, 0);
86
gtk_widget_show(GTK_WIDGET(sDialog));
121
g_signal_connect_swapped(button, "clicked",
122
G_CALLBACK(gtk_widget_destroy), mDialog);
124
GtkWidget *notebook = gtk_notebook_new();
125
gtk_widget_show(notebook);
126
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(mDialog)->vbox),
127
notebook, true, true, 0);
128
gtk_notebook_set_homogeneous_tabs(GTK_NOTEBOOK(notebook), true);
130
GtkLabel *label = GTK_LABEL(gtk_label_new_with_mnemonic(_("_Help")));
131
gtk_misc_set_padding(GTK_MISC(label), VM_SPACING, 0);
132
gtk_notebook_append_page(GTK_NOTEBOOK(notebook), CreateHelpTab(),
134
label = GTK_LABEL(gtk_label_new_with_mnemonic(_("_Support Information")));
135
gtk_misc_set_padding(GTK_MISC(label), VM_SPACING, 0);
136
gtk_notebook_append_page(GTK_NOTEBOOK(notebook), CreateSupportTab(),
139
gtk_widget_show(GTK_WIDGET(mDialog));
117
170
gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolledWindow),
120
Util::string helpText = ReadHelpFile();
122
GtkTextView *textView = GTK_TEXT_VIEW(gtk_text_view_new());
123
gtk_widget_show(GTK_WIDGET(textView));
124
gtk_container_add(GTK_CONTAINER(scrolledWindow), GTK_WIDGET(textView));
125
gtk_text_view_set_editable(textView, false);
126
gtk_text_view_set_wrap_mode(textView, GTK_WRAP_WORD);
173
mHelpTextView = GTK_TEXT_VIEW(gtk_text_view_new());
174
gtk_widget_show(GTK_WIDGET(mHelpTextView));
175
gtk_container_add(GTK_CONTAINER(scrolledWindow), GTK_WIDGET(mHelpTextView));
176
gtk_text_view_set_editable(mHelpTextView, false);
177
gtk_text_view_set_wrap_mode(mHelpTextView, GTK_WRAP_WORD);
178
g_object_add_weak_pointer(G_OBJECT(mHelpTextView),
179
(gpointer *)&mHelpTextView);
183
return scrolledWindow;
188
*-----------------------------------------------------------------------------
190
* cdk::HelpSupportDlg::InsertHelpText --
192
* Reads in help text to mHelpTextView.
200
*-----------------------------------------------------------------------------
204
HelpSupportDlg::InsertHelpText()
206
ASSERT(mHelpTextView);
128
208
GError *error = NULL;
129
if (!gtm_set_markup(gtk_text_view_get_buffer(textView), helpText.c_str(),
209
if (!gtm_set_markup(gtk_text_view_get_buffer(mHelpTextView),
210
ReadHelpFile().c_str(), &error)) {
131
211
Warning("Error parsing help file: %s.\n", error->message);
132
212
g_error_free(error);
135
return scrolledWindow;
246
325
return readSuccess;
330
*-----------------------------------------------------------------------------
332
* cdk::HelpSupportDlg::CreateSupportTab --
334
* Creates the widget to put into the support tab for the notebook.
338
* GtkWidget * containing support dialog contents.
343
*-----------------------------------------------------------------------------
347
HelpSupportDlg::CreateSupportTab()
349
GtkTable *table = GTK_TABLE(gtk_table_new(1, 3, false));
350
gtk_widget_show(GTK_WIDGET(table));
351
gtk_container_set_border_width(GTK_CONTAINER(table), VM_SPACING);
352
gtk_table_set_row_spacings(table, VM_SPACING);
353
gtk_table_set_col_spacings(table, VM_SPACING);
355
GtkTextView *textView = GetSupportView(mSupportFile);
358
AddTitle(table, _("Support Information"));
360
GtkWidget *scrolledWindow = gtk_scrolled_window_new(NULL, NULL);
361
gtk_widget_show(GTK_WIDGET(scrolledWindow));
362
AddWidget(table, GTK_WIDGET(scrolledWindow));
363
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledWindow),
364
GTK_POLICY_AUTOMATIC,
366
gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolledWindow),
369
gtk_container_add(GTK_CONTAINER(scrolledWindow), GTK_WIDGET(textView));
372
CreateProductInformationSection(table);
373
CreateHostInformationSection(table);
374
CreateConnectionInformationSection(table);
376
return GTK_WIDGET(table);
381
*-----------------------------------------------------------------------------
383
* cdk::HelpSupportDlg::CreateProductInformationSection --
385
* Adds the "Product Information" section to the passed in table.
393
*-----------------------------------------------------------------------------
397
HelpSupportDlg::CreateProductInformationSection(GtkTable *table) // IN
399
AddTitle(table, _("Product Information"));
400
AddPair(table, _("Product:"), ProductState_GetName());
401
AddPair(table, _("Version:"), GetVersionString());
406
*-----------------------------------------------------------------------------
408
* cdk::HelpSupportDlg::CreateHostInformationSection --
410
* Adds the "Host Information" section to the passed in table.
418
*-----------------------------------------------------------------------------
422
HelpSupportDlg::CreateHostInformationSection(GtkTable *table) // IN
424
AddTitle(table, _("Host Information"));
425
AddPair(table, _("Host Name:"), Util::GetClientHostName());
426
if (ShowLogLocation()) {
427
AddPair(table, _("Log File:"), Log_GetFileName());
433
*-----------------------------------------------------------------------------
435
* cdk::HelpSupportDlg::CreateConnectionInformationSection --
437
* Adds the "Connection Information" section to the passed in table.
445
*-----------------------------------------------------------------------------
449
HelpSupportDlg::CreateConnectionInformationSection(GtkTable *table) // IN
451
AddTitle(table, _("Connection Information"));
452
AddPair(table, _("VMware View Server:"), mBrokerHostName);
457
*-----------------------------------------------------------------------------
459
* cdk::HelpSupportDlg::CreateLabel --
461
* Creates a left aligned, selectable label with the given text.
462
* gtk_widget_show is called on the new label before it is returned.
470
*-----------------------------------------------------------------------------
474
HelpSupportDlg::CreateLabel(const Util::string &text) // IN
476
GtkLabel *l = GTK_LABEL(gtk_label_new(text.c_str()));
477
gtk_widget_show(GTK_WIDGET(l));
478
gtk_misc_set_alignment(GTK_MISC(l), 0, 0);
479
gtk_label_set_selectable(l, true);
486
*-----------------------------------------------------------------------------
488
* cdk::HelpSupportDlg::AppendRow --
490
* Append a new row to table and return new row number.
493
* The index of the newly added row.
496
* A row is added to the table
498
*-----------------------------------------------------------------------------
502
HelpSupportDlg::AppendRow(GtkTable *table) // IN
506
g_object_get(table, "n-rows", &rows, "n-columns", &columns, NULL);
507
gtk_table_resize(table, rows + 1, columns);
513
*-----------------------------------------------------------------------------
515
* cdk::HelpSupportDlg::AddTitle --
517
* Add a label with bold text into the table.
525
*-----------------------------------------------------------------------------
529
HelpSupportDlg::AddTitle(GtkTable *table, // IN
530
const Util::string &text) // IN
532
guint row = AppendRow(table);
534
GtkLabel *l = CreateLabel("");
535
gtk_table_attach_defaults(table, GTK_WIDGET(l), 0, 3, row, row + 1);
536
gtk_label_set_markup(l, Util::Format("<b>%s</b>", text.c_str()).c_str());
541
*-----------------------------------------------------------------------------
543
* cdk::HelpSupportDlg::AddPair --
545
* Appends two labels to the table: one is a label, the second is data.
553
*-----------------------------------------------------------------------------
557
HelpSupportDlg::AddPair(GtkTable *table, // IN
558
const Util::string &label, // IN
559
const Util::string &data) // IN
561
guint row = AppendRow(table);
563
GtkLabel *l = CreateLabel(label);
564
gtk_table_attach_defaults(table, GTK_WIDGET(l), 1, 2, row, row + 1);
565
l = CreateLabel(data);
566
gtk_table_attach_defaults(table, GTK_WIDGET(l), 2, 3, row, row + 1);
571
*-----------------------------------------------------------------------------
573
* cdk::HelpSupportDlg::AddWidget --
575
* Appends the given widget to the table. It will span the 2nd and 3rd
584
*-----------------------------------------------------------------------------
588
HelpSupportDlg::AddWidget(GtkTable *table, // IN
589
GtkWidget *widget) // IN
591
guint row = AppendRow(table);
593
gtk_table_attach_defaults(table, widget, 1, 3, row, row + 1);
598
*-----------------------------------------------------------------------------
600
* cdk::HelpSupportDlg::GetSupportView --
602
* Read in the contents of the passed in file and return a
603
* GtkTextView with the contents of the file.
611
*-----------------------------------------------------------------------------
615
HelpSupportDlg::GetSupportView(const Util::string &filePath) // IN
617
GError *error = NULL;
618
char *supportText = NULL;
620
if (!g_file_get_contents(filePath.c_str(), &supportText, NULL, &error)) {
621
Log(_("An error occurred while reading the support file: %s.\n"),
627
GtkTextView *textView = GTK_TEXT_VIEW(gtk_text_view_new());
628
gtk_widget_show(GTK_WIDGET(textView));
629
gtk_text_view_set_editable(textView, false);
630
gtk_text_view_set_wrap_mode(textView, GTK_WRAP_WORD);
632
gtk_text_buffer_set_text(gtk_text_view_get_buffer(textView),
249
639
} // namespace cdk