aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Rostedt <srostedt@redhat.com>2010-06-22 18:54:42 -0400
committerSteven Rostedt <rostedt@goodmis.org>2010-06-22 19:04:38 -0400
commit362dcc67996130a1a0ebd0ac46080887cc3e5cc0 (patch)
treefeb75074d787cff4fe33478cb16804490355a16a
parent6a0b8a7bc2728f8b97db68226794a634984a7c22 (diff)
kernelshark: Restructure capture dialog
Change the capture dialog around to include the events window. Also use table widget instead of vpaned to layout the widgets nicer. Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
-rw-r--r--trace-capture.c189
1 files changed, 105 insertions, 84 deletions
diff --git a/trace-capture.c b/trace-capture.c
index c5248a5..8ce13c7 100644
--- a/trace-capture.c
+++ b/trace-capture.c
@@ -47,7 +47,7 @@
47 47
48#define PLUGIN_NONE "NONE" 48#define PLUGIN_NONE "NONE"
49 49
50#define DIALOG_WIDTH 600 50#define DIALOG_WIDTH 320
51#define DIALOG_HEIGHT 600 51#define DIALOG_HEIGHT 600
52 52
53struct trace_capture { 53struct trace_capture {
@@ -1327,15 +1327,14 @@ static void tracing_dialog(struct shark_info *info, const char *tracing)
1327{ 1327{
1328 struct pevent *pevent; 1328 struct pevent *pevent;
1329 GtkWidget *dialog; 1329 GtkWidget *dialog;
1330 GtkWidget *vbox;
1331 GtkWidget *vbox2;
1332 GtkWidget *button; 1330 GtkWidget *button;
1333 GtkWidget *hbox;
1334 GtkWidget *combo; 1331 GtkWidget *combo;
1335 GtkWidget *label; 1332 GtkWidget *label;
1336 GtkWidget *entry; 1333 GtkWidget *entry;
1337 GtkWidget *hpaned; 1334 GtkWidget *frame;
1338 GtkWidget *scrollwin; 1335 GtkWidget *scrollwin;
1336 GtkWidget *table;
1337 GtkWidget *table2;
1339 GtkWidget *event_tree; 1338 GtkWidget *event_tree;
1340 char **plugins; 1339 char **plugins;
1341 int nr_plugins; 1340 int nr_plugins;
@@ -1369,31 +1368,32 @@ static void tracing_dialog(struct shark_info *info, const char *tracing)
1369 return; 1368 return;
1370 } 1369 }
1371 1370
1372 dialog = gtk_dialog_new_with_buttons("Capture", 1371 dialog = gtk_dialog_new();
1373 NULL, 1372 gtk_window_set_title(GTK_WINDOW(dialog), "Capture");
1374 GTK_DIALOG_MODAL, 1373
1375 "Execute", 1374 button = gtk_button_new_with_label("Run");
1376 GTK_RESPONSE_ACCEPT, 1375 gtk_dialog_add_action_widget(GTK_DIALOG(dialog), button,
1377 GTK_STOCK_CANCEL, 1376 GTK_RESPONSE_ACCEPT);
1378 GTK_RESPONSE_REJECT, 1377 gtk_widget_show(button);
1379 NULL); 1378
1379 gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_CANCEL,
1380 GTK_RESPONSE_REJECT);
1380 1381
1381 cap.main_dialog = dialog; 1382 cap.main_dialog = dialog;
1382 1383
1383 /* --- Top Level Hpaned --- */ 1384 /* --- Top Level Hpaned --- */
1384 1385 table = gtk_table_new(4, 1, FALSE);
1385 hpaned = gtk_hpaned_new();
1386 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), hpaned, TRUE, TRUE, 0);
1387 gtk_widget_show(hpaned);
1388 1386
1389 /* It is possible that no pevents exist. */ 1387 /* It is possible that no pevents exist. */
1390 if (pevent) { 1388 if (pevent) {
1389
1391 scrollwin = gtk_scrolled_window_new(NULL, NULL); 1390 scrollwin = gtk_scrolled_window_new(NULL, NULL);
1392 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin), 1391 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin),
1393 GTK_POLICY_AUTOMATIC, 1392 GTK_POLICY_AUTOMATIC,
1394 GTK_POLICY_AUTOMATIC); 1393 GTK_POLICY_AUTOMATIC);
1395 1394
1396 gtk_paned_add2(GTK_PANED(hpaned), scrollwin); 1395 gtk_table_attach_defaults(GTK_TABLE(table), scrollwin,
1396 0, 1, 1, 2);
1397 gtk_widget_show(scrollwin); 1397 gtk_widget_show(scrollwin);
1398 1398
1399 event_tree = trace_create_event_list_view(pevent, NULL, 1399 event_tree = trace_create_event_list_view(pevent, NULL,
@@ -1409,77 +1409,64 @@ static void tracing_dialog(struct shark_info *info, const char *tracing)
1409 } else { 1409 } else {
1410 /* No events */ 1410 /* No events */
1411 label = gtk_label_new("No events enabled on system"); 1411 label = gtk_label_new("No events enabled on system");
1412 gtk_paned_add2(GTK_PANED(hpaned), label); 1412 gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2,
1413 GTK_EXPAND|GTK_FILL, GTK_EXPAND|GTK_FILL,
1414 0, 10);
1413 gtk_widget_show(label); 1415 gtk_widget_show(label);
1414 cap.event_view = NULL; 1416 cap.event_view = NULL;
1415 } 1417 }
1416 1418
1417 vbox = gtk_vbox_new(TRUE, 0); 1419 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), table, TRUE, TRUE, 0);
1418 gtk_paned_add1(GTK_PANED(hpaned), vbox); 1420 gtk_widget_show(table);
1419 gtk_widget_show(vbox);
1420
1421 hbox = gtk_hbox_new(FALSE, 0);
1422 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
1423 gtk_widget_show(hbox);
1424 1421
1425 combo = trace_create_combo_box(hbox, "Plugin: ", create_plugin_combo_model, plugins); 1422 /*------------------ Frame Settings --------------------------- */
1426 cap.plugin_combo = combo;
1427 1423
1428 if (cap.info->cap_plugin) 1424 frame = gtk_frame_new("Settings");
1429 set_plugin(&cap); 1425 gtk_table_attach(GTK_TABLE(table), frame, 0, 1, 0, 1,
1426 GTK_EXPAND|GTK_FILL, 0, 0, 10);
1427 gtk_widget_show(frame);
1430 1428
1431 vbox2 = gtk_vbox_new(FALSE, 0); 1429 table2 = gtk_table_new(2, 3, FALSE);
1432 gtk_box_pack_start(GTK_BOX(vbox), vbox2, FALSE, FALSE, 0); 1430 gtk_container_add(GTK_CONTAINER(frame), table2);
1433 gtk_widget_show(vbox2); 1431 gtk_widget_show(table2);
1434 1432
1435 label = gtk_label_new("Command:"); 1433 gtk_table_set_col_spacings(GTK_TABLE(table2), 5);
1436 gtk_box_pack_start(GTK_BOX(vbox2), label, FALSE, FALSE, 0);
1437 gtk_widget_show(label);
1438 1434
1439 entry = gtk_entry_new(); 1435 button = gtk_button_new_with_label("Save Settings");
1440 gtk_box_pack_start(GTK_BOX(vbox2), entry, FALSE, FALSE, 0); 1436 gtk_table_attach_defaults(GTK_TABLE(table2), button, 0, 1, 0, 1);
1441 gtk_widget_show(entry); 1437 gtk_widget_show(button);
1442
1443 cap.command_entry = entry;
1444
1445 if (cap.info->cap_command)
1446 gtk_entry_set_text(GTK_ENTRY(entry), cap.info->cap_command);
1447 1438
1448 hbox = gtk_hbox_new(FALSE, 0); 1439 g_signal_connect (button, "clicked",
1449 gtk_box_pack_start(GTK_BOX(vbox2), hbox, TRUE, FALSE, 0); 1440 G_CALLBACK (save_settings_clicked),
1450 gtk_widget_show(hbox); 1441 (gpointer)&cap);
1451 1442
1452 button = gtk_button_new_with_label("Save file: "); 1443 button = gtk_button_new_with_label("Import Settings");
1453 gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 0); 1444 gtk_table_attach_defaults(GTK_TABLE(table2), button, 1, 2, 0, 1);
1454 gtk_widget_show(button); 1445 gtk_widget_show(button);
1455 1446
1456 g_signal_connect (button, "clicked", 1447 g_signal_connect (button, "clicked",
1457 G_CALLBACK (file_clicked), 1448 G_CALLBACK (import_settings_clicked),
1458 (gpointer)&cap); 1449 (gpointer)&cap);
1459 1450
1460 entry = gtk_entry_new();
1461 gtk_box_pack_start(GTK_BOX(hbox), entry, TRUE, TRUE, 0);
1462 gtk_widget_show(entry);
1463 1451
1464 if (cap.info->cap_file) 1452 button = gtk_button_new_with_label("Export Settings");
1465 file = cap.info->cap_file; 1453 gtk_table_attach_defaults(GTK_TABLE(table2), button, 2, 3, 0, 1);
1466 else 1454 gtk_widget_show(button);
1467 file = default_output_file;
1468
1469 gtk_entry_set_text(GTK_ENTRY(entry), file);
1470 cap.file_entry = entry;
1471 1455
1456 g_signal_connect (button, "clicked",
1457 G_CALLBACK (export_settings_clicked),
1458 (gpointer)&cap);
1472 1459
1473 vbox2 = gtk_vbox_new(FALSE, 0); 1460 if (cap.info->cap_settings_name)
1474 gtk_box_pack_start(GTK_BOX(vbox), vbox2, FALSE, FALSE, 0); 1461 set_settings(&cap);
1475 gtk_widget_show(vbox2);
1476 1462
1477 hbox = gtk_hbox_new(FALSE, 0); 1463 label = gtk_label_new("Available Settings: ");
1478 gtk_box_pack_start(GTK_BOX(vbox2), hbox, FALSE, FALSE, 0); 1464 gtk_table_attach_defaults(GTK_TABLE(table2), label, 0, 1, 1, 2);
1479 gtk_widget_show(hbox); 1465 gtk_widget_show(label);
1480 1466
1481 combo = trace_create_combo_box(hbox, "Available Settings: ", 1467 combo = trace_create_combo_box(NULL, NULL,
1482 create_settings_model, NULL); 1468 create_settings_model, NULL);
1469 gtk_table_attach_defaults(GTK_TABLE(table2), combo, 1, 3, 1, 2);
1483 1470
1484 cap.settings_combo = combo; 1471 cap.settings_combo = combo;
1485 1472
@@ -1487,33 +1474,67 @@ static void tracing_dialog(struct shark_info *info, const char *tracing)
1487 G_CALLBACK (settings_changed), 1474 G_CALLBACK (settings_changed),
1488 (gpointer)&cap); 1475 (gpointer)&cap);
1489 1476
1490 button = gtk_button_new_with_label("Save Settings");
1491 gtk_box_pack_start(GTK_BOX(vbox2), button, TRUE, FALSE, 0);
1492 gtk_widget_show(button);
1493 1477
1494 if (cap.info->cap_settings_name)
1495 set_settings(&cap);
1496 1478
1497 g_signal_connect (button, "clicked", 1479 /*------------------ Frame Settings --------------------------- */
1498 G_CALLBACK (save_settings_clicked),
1499 (gpointer)&cap);
1500 1480
1481 frame = gtk_frame_new("Execute");
1482 gtk_table_attach(GTK_TABLE(table), frame, 0, 1, 3, 4,
1483 GTK_EXPAND|GTK_FILL, 0, 0, 10);
1484 gtk_widget_show(frame);
1501 1485
1502 button = gtk_button_new_with_label("Import Settings"); 1486 table2 = gtk_table_new(3, 3, FALSE);
1503 gtk_box_pack_start(GTK_BOX(vbox2), button, TRUE, FALSE, 0); 1487 gtk_container_add(GTK_CONTAINER(frame), table2);
1504 gtk_widget_show(button); 1488 gtk_widget_show(table2);
1505 1489
1506 g_signal_connect (button, "clicked", 1490 label = gtk_label_new("Plugin: ");
1507 G_CALLBACK (import_settings_clicked), 1491 gtk_table_attach_defaults(GTK_TABLE(table2), label, 0, 1, 0, 1);
1508 (gpointer)&cap); 1492 gtk_widget_show(label);
1509 1493
1494 combo = trace_create_combo_box(NULL, NULL, create_plugin_combo_model, plugins);
1495 cap.plugin_combo = combo;
1510 1496
1511 button = gtk_button_new_with_label("Export Settings"); 1497 gtk_table_attach_defaults(GTK_TABLE(table2), combo, 1, 3, 0, 1);
1512 gtk_box_pack_start(GTK_BOX(vbox2), button, TRUE, FALSE, 0); 1498
1499 if (cap.info->cap_plugin)
1500 set_plugin(&cap);
1501
1502
1503 label = gtk_label_new("Command:");
1504 gtk_table_attach_defaults(GTK_TABLE(table2), label, 0, 1, 1, 2);
1505 gtk_widget_show(label);
1506
1507 entry = gtk_entry_new();
1508 gtk_table_attach_defaults(GTK_TABLE(table2), entry, 1, 3, 1, 2);
1509 gtk_widget_show(entry);
1510
1511 cap.command_entry = entry;
1512
1513 if (cap.info->cap_command)
1514 gtk_entry_set_text(GTK_ENTRY(entry), cap.info->cap_command);
1515
1516 label = gtk_label_new("Output file: ");
1517 gtk_table_attach_defaults(GTK_TABLE(table2), label, 0, 1, 2, 3);
1518 gtk_widget_show(label);
1519
1520 entry = gtk_entry_new();
1521 gtk_table_attach_defaults(GTK_TABLE(table2), entry, 1, 2, 2, 3);
1522 gtk_widget_show(entry);
1523
1524 if (cap.info->cap_file)
1525 file = cap.info->cap_file;
1526 else
1527 file = default_output_file;
1528
1529 gtk_entry_set_text(GTK_ENTRY(entry), file);
1530 cap.file_entry = entry;
1531
1532 button = gtk_button_new_with_label("Browse");
1533 gtk_table_attach_defaults(GTK_TABLE(table2), button, 2, 3, 2, 3);
1513 gtk_widget_show(button); 1534 gtk_widget_show(button);
1514 1535
1515 g_signal_connect (button, "clicked", 1536 g_signal_connect (button, "clicked",
1516 G_CALLBACK (export_settings_clicked), 1537 G_CALLBACK (file_clicked),
1517 (gpointer)&cap); 1538 (gpointer)&cap);
1518 1539
1519 gtk_widget_set_size_request(GTK_WIDGET(dialog), 1540 gtk_widget_set_size_request(GTK_WIDGET(dialog),