52642c3c53
Change-Id: I9fb4f4babecbe02d171f38c4d089634e90141937 Signed-off-by: Dave Barach <dave@barachs.net>
197 lines
5.3 KiB
C
197 lines
5.3 KiB
C
/*
|
|
*------------------------------------------------------------------
|
|
* Copyright (c) 2005-2016 Cisco and/or its affiliates.
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at:
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#include "g2.h"
|
|
#include "props.h"
|
|
#include <pwd.h>
|
|
#include <strings.h>
|
|
#include <stdlib.h>
|
|
#include <unistd.h>
|
|
#include <string.h>
|
|
|
|
/*
|
|
* globals
|
|
*/
|
|
|
|
GtkWidget *g_mainwindow; /* The main window */
|
|
|
|
/* Graphical object heirarchy
|
|
*
|
|
* [main window]
|
|
* [main vbox]
|
|
* [main (e.g. file) menubar]
|
|
* [view hbox]
|
|
* [view bottom menu]
|
|
*/
|
|
|
|
GtkWidget *g_mainvbox;
|
|
GtkWidget *g_mainhbox;
|
|
|
|
gint delete_event(GtkWidget *widget, GdkEvent *event, gpointer data)
|
|
{
|
|
/* Allow window to be destroyed */
|
|
return(FALSE);
|
|
}
|
|
|
|
void destroy(GtkWidget *widget, gpointer data)
|
|
{
|
|
gtk_main_quit();
|
|
}
|
|
|
|
int main (int argc, char **argv)
|
|
{
|
|
char tmpbuf [128];
|
|
struct passwd *pw;
|
|
char *event_file = 0;
|
|
char *cpel_file = 0;
|
|
char *clib_file =0;
|
|
char *title = "none";
|
|
int curarg=1;
|
|
char *homedir;
|
|
|
|
gtk_init(&argc, &argv);
|
|
|
|
homedir = getenv ("HOME");
|
|
tmpbuf[0] = 0;
|
|
|
|
if (homedir) {
|
|
sprintf(tmpbuf, "%s/.g2", homedir);
|
|
} else {
|
|
pw = getpwuid(geteuid());
|
|
if (pw) {
|
|
sprintf(tmpbuf, "%s/.g2", pw->pw_dir);
|
|
}
|
|
}
|
|
if (tmpbuf[0])
|
|
readprops(tmpbuf);
|
|
|
|
g_mainwindow = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
|
|
|
gtk_signal_connect (GTK_OBJECT(g_mainwindow), "delete_event",
|
|
GTK_SIGNAL_FUNC (delete_event), NULL);
|
|
|
|
gtk_signal_connect (GTK_OBJECT(g_mainwindow), "destroy",
|
|
GTK_SIGNAL_FUNC (destroy), NULL);
|
|
|
|
gtk_container_set_border_width(GTK_CONTAINER(g_mainwindow), 5);
|
|
|
|
g_mainvbox = gtk_vbox_new(FALSE, 0);
|
|
g_mainhbox = gtk_hbox_new(FALSE, 0);
|
|
|
|
/*
|
|
* init routines
|
|
*/
|
|
|
|
menu1_init();
|
|
point_selector_init();
|
|
view1_init();
|
|
event_init();
|
|
|
|
/*
|
|
* Now that we're ready to rock 'n roll, see if we've been asked to
|
|
* press a few buttons...
|
|
*/
|
|
|
|
while (curarg < argc) {
|
|
if (!strncmp(argv[curarg], "--cpel-input", 4)) {
|
|
curarg++;
|
|
if (curarg < argc) {
|
|
cpel_file = argv[curarg];
|
|
curarg++;
|
|
break;
|
|
}
|
|
g_error("Missing filename after --cpel-input");
|
|
}
|
|
if (!strncmp(argv[curarg], "--clib-input", 4)) {
|
|
curarg++;
|
|
if (curarg < argc) {
|
|
clib_file = argv[curarg];
|
|
curarg++;
|
|
break;
|
|
}
|
|
g_error("Missing filename after --cpel-input");
|
|
}
|
|
|
|
if (!strncmp(argv[curarg], "--pointdefs", 3)) {
|
|
curarg++;
|
|
if (curarg < argc) {
|
|
read_event_definitions(argv[curarg]);
|
|
curarg++;
|
|
continue;
|
|
}
|
|
g_error ("Missing filename after --pointdefs\n");
|
|
}
|
|
if (!strncmp(argv[curarg], "--event-log", 3)) {
|
|
curarg++;
|
|
if (curarg < argc) {
|
|
event_file = argv[curarg];
|
|
curarg++;
|
|
continue;
|
|
}
|
|
g_error ("Missing filename after --event-log\n");
|
|
}
|
|
|
|
if (!strncmp(argv[curarg], "--ticks-per-us", 3)) {
|
|
curarg++;
|
|
if (curarg < argc) {
|
|
ticks_per_ns = 0.0;
|
|
ticks_per_ns = atof(argv[curarg]);
|
|
if (ticks_per_ns == 0.0) {
|
|
g_error("ticks-per-ns (%s) didn't convert properly\n",
|
|
argv[curarg]);
|
|
}
|
|
ticks_per_ns_set = TRUE;
|
|
curarg++;
|
|
continue;
|
|
}
|
|
g_error ("Missing filename after --event-log\n");
|
|
}
|
|
|
|
fprintf(stderr,
|
|
"g2 [--pointdefs <filename>] [--event-log <filename>]\n");
|
|
fprintf(stderr, " [--ticks-per-us <value>]\n");
|
|
fprintf(stderr,
|
|
" [--cpel-input <filename>] [--clib-input <filename]>\n");
|
|
fprintf(stderr,
|
|
"%s\n%s\n", version_string, minor_v_string);
|
|
exit(0);
|
|
}
|
|
|
|
if (clib_file) {
|
|
read_clib_file (clib_file);
|
|
title = clib_file;
|
|
} else if (cpel_file) {
|
|
read_cpel_file(cpel_file);
|
|
title = cpel_file;
|
|
} else if (event_file) {
|
|
read_events(event_file);
|
|
title = event_file;
|
|
}
|
|
|
|
set_window_title(title);
|
|
|
|
gtk_signal_connect (GTK_OBJECT (g_mainwindow), "key_press_event",
|
|
(GtkSignalFunc) view1_handle_key_press_event, NULL);
|
|
gtk_container_add(GTK_CONTAINER(g_mainvbox), g_mainhbox);
|
|
gtk_widget_show(g_mainhbox);
|
|
gtk_container_add(GTK_CONTAINER(g_mainwindow), g_mainvbox);
|
|
gtk_widget_show(g_mainvbox);
|
|
gtk_widget_show(g_mainwindow);
|
|
|
|
gtk_main();
|
|
return(0);
|
|
}
|