void fullscreen_toggle(GtkCheckMenuItem *item, gpointer data);
void display_help();
+void display_browser();
void create_master_menu() {
GtkWidget *menu_item;
menu_item = gtk_menu_item_new_with_mnemonic ("_Visit terminatorX.cx");
gtk_widget_show (menu_item);
gtk_container_add (GTK_CONTAINER (sub_menu), menu_item);
- //g_signal_connect(menu_item, "activate", (GCallback) mplcfitx, NULL);
+ g_signal_connect(menu_item, "activate", (GCallback) display_browser, NULL);
}
void create_mastergui(int x, int y)
/* Master */
- dummy=gtk_label_new("Master");
+ dummy=gtk_label_new(NULL);
+ //gtk_label_set_markup(GTK_LABEL(dummy),"<span foreground='#000080'>Master</span>");
+ gtk_label_set_markup(GTK_LABEL(dummy),"<b>Master</b>");
gtk_misc_set_alignment(GTK_MISC(dummy), 0.5, 0.5);
gtk_box_pack_start(GTK_BOX(right_hbox), dummy, WID_FIX);
gtk_widget_show(dummy);
add_sep2();
- dummy=gtk_label_new("Status:");
+ dummy=gtk_label_new(NULL);
+ gtk_label_set_markup(GTK_LABEL(dummy), "<b>Status</b>");
gtk_misc_set_alignment(GTK_MISC(dummy), 0.5, 0.5);
gtk_box_pack_end(GTK_BOX(status_box), dummy, WID_FIX);
gtk_widget_show(dummy);
help_tag=gtk_idle_add((GtkFunction) help_checker, NULL);
}
}
+
+pid_t browser_child=0;
+GTimer *browser_timer=NULL;
+int browser_tag=-1;
+
+int browser_checker() {
+ gdouble time;
+ gulong ms;
+ int status;
+ int result=waitpid(browser_child, &status, WNOHANG);
+
+ if (result==0) {
+ time=g_timer_elapsed(browser_timer, &ms);
+ if (time > 5) {
+ /* 5 seconds and it's still running - so we assume everything's OK. */
+ tX_debug("No longer waiting for a browser..");
+ gtk_idle_remove(browser_tag);
+ browser_tag=-1;
+ }
+ } else {
+ /* We are still here and the child exited - that could mean trouble. */
+ tx_note("Failed to run a suitable web browser - if there's one installed on this system, please run it and forward yourself to:\nhttp://terminatorX.cx", true);
+
+ gtk_idle_remove(browser_tag);
+ browser_tag=-1;
+ }
+ return TRUE;
+}
+
+void display_browser() {
+ browser_child=fork();
+
+ if (browser_tag!=-1) {
+ gtk_idle_remove(browser_tag);
+ if (browser_timer) g_timer_destroy(browser_timer);
+ browser_child=0;
+ browser_tag=-1;
+ browser_timer=NULL;
+ }
+
+ if (browser_child==0) {
+ // child
+ execlp("mozilla","mozilla","http://terminatorX.cx", NULL);
+ execlp("netscape","netscape","http://terminatorX.cx", NULL);
+ execlp("galeon","galeon","http://terminatorX.cx", NULL);
+ execlp("konqueror","konqueror","http://terminatorX.cx", NULL);
+ _exit(-1);
+ } else if (browser_child==-1) {
+ tx_note("System error: couldn't fork() to run the browser process.", true);
+ } else {
+ browser_timer=g_timer_new();
+ g_timer_start(browser_timer);
+
+ browser_tag=gtk_idle_add((GtkFunction) browser_checker, NULL);
+ }
+}
#include "tX_panel.h"
#include "tX_pbutton.h"
-
+#include <string.h>
#include <stdio.h>
#define WID_DYN TRUE, TRUE, 0
}
}
+void tX_panel_make_label_bold(GtkWidget *widget) {
+ char label[128];
+ strcpy(label, "<b>");
+ strcat(label, gtk_label_get_text(GTK_LABEL(widget)));
+ strcat(label, "</b>");
+ gtk_label_set_markup(GTK_LABEL (widget), label);
+}
+
tX_panel :: tX_panel (const char *name, GtkWidget *par)
{
GtkWidget *pixmap;
pixmap=tx_pixmap_widget(TX_ICON_MINIMIZE);
gtk_container_add (GTK_CONTAINER (minbutton), pixmap);
labelbutton=gtk_button_new_with_label(name);
-
+ gtk_container_foreach(GTK_CONTAINER(labelbutton), (GtkCallback) tX_panel_make_label_bold, NULL);
mainbox=gtk_vbox_new(FALSE, 0);
topbox=gtk_hbox_new(FALSE, 0);
static void minimize(GtkWidget *w, tX_panel *p);
};
+extern void tX_panel_make_label_bold(GtkWidget *widget);
#endif
GtkWidget *box1;
GtkWidget *label;
GtkWidget *pixmapwid;
-
- /* Create box for xpm and label */
- box1 = gtk_hbox_new (FALSE, 0);
- gtk_container_set_border_width (GTK_CONTAINER (box1), 0);
- if (globals.button_type != BUTTON_TYPE_TEXT)
- {
- pixmapwid=tx_pixmap_widget(icon_id);
- gtk_box_pack_start (GTK_BOX (box1), pixmapwid, FALSE, FALSE, 0);
- gtk_widget_show(pixmapwid);
- }
-
- if ((globals.button_type != BUTTON_TYPE_ICON) || (labelwidget!=NULL))
- {
- label = gtk_label_new (label_text);
- gtk_box_pack_start (GTK_BOX (box1), label, FALSE, FALSE, 0);
- gtk_widget_show(label);
- if (labelwidget!=NULL) {
- *labelwidget=label;
- }
- }
-
- return(box1);
+ switch (globals.button_type) {
+ case BUTTON_TYPE_TEXT:
+ label = gtk_label_new(label_text);
+ gtk_widget_show(label);
+ if (labelwidget!=NULL) *labelwidget=label;
+ return label;
+ break;
+ case BUTTON_TYPE_ICON:
+ pixmapwid=tx_pixmap_widget(icon_id);
+ gtk_widget_show(pixmapwid);
+ return pixmapwid;
+ break;
+ default:
+ box1 = gtk_hbox_new (FALSE, 2);
+ pixmapwid=tx_pixmap_widget(icon_id);
+ gtk_box_pack_start (GTK_BOX (box1), pixmapwid, FALSE, FALSE, 0);
+ gtk_widget_show(pixmapwid);
+ label = gtk_label_new (label_text);
+ gtk_box_pack_start (GTK_BOX (box1), label, FALSE, FALSE, 0);
+ gtk_widget_show(label);
+ if (labelwidget!=NULL) *labelwidget=label;
+ return box1;
+ }
}
//GtkWidget *tx_xpm_button_new(int icon_id, char *label, int toggle)
box=tx_xpm_label_box(icon_id, label, labelwidget);
gtk_widget_show(box);
- gtk_container_set_border_width (GTK_CONTAINER (button), 2);
+ gtk_container_set_border_width (GTK_CONTAINER (button), 3);
gtk_container_add (GTK_CONTAINER (button), box);
return(button);
gtk_signal_emit_by_name(GTK_OBJECT(wid), "released", vtt);
}
+void gui_set_name(vtt_class *vtt, char *newname)
+{
+ char bold_name[128];
+ strcpy(bold_name, "<b>");
+ strcat(bold_name, newname);
+ strcat(bold_name, "</b>");
+
+ gtk_label_set_markup(GTK_LABEL(vtt->gui.audio_label), bold_name);
+ gtk_label_set_markup(GTK_LABEL(vtt->gui.control_label), bold_name);
+ gtk_entry_set_text(GTK_ENTRY(vtt->gui.name), newname);
+
+ if (vtt->gui.audio_minimized_panel_bar_button!=NULL) {
+ gtk_label_set_text(GTK_LABEL(vtt->gui.audio_minimized_panel_bar_label), newname);
+ }
+
+ if (vtt->gui.control_minimized_panel_bar_button!=NULL) {
+ gtk_label_set_text(GTK_LABEL(vtt->gui.control_minimized_panel_bar_label), newname);
+ }
+}
+
#define connect_entry(wid, func); gtk_signal_connect(GTK_OBJECT(g->wid), "activate", (GtkSignalFunc) func, (void *) vtt);
#define connect_adj(wid, func); gtk_signal_connect(GTK_OBJECT(g->wid), "value_changed", (GtkSignalFunc) func, (void *) vtt);
#define connect_button(wid, func); gtk_signal_connect(GTK_OBJECT(g->wid), "clicked", (GtkSignalFunc) func, (void *) vtt);
gtk_box_pack_start(GTK_BOX(g->control_subbox), p->get_widget(), WID_FIX);
dummy=gtk_button_new_with_label("FX");
+ gtk_container_foreach(GTK_CONTAINER(dummy), (GtkCallback) tX_panel_make_label_bold, NULL);
gtk_widget_show(dummy);
g->fx_button=dummy;
gui_set_tooltip(g->fx_button, "Click here to load a LADSPA plugin. You will get a menu from which you can choose which plugin to load.");
gtk_box_pack_start(GTK_BOX(tempbox3), g->solo, WID_FIX);
gtk_signal_connect(GTK_OBJECT(g->solo),"clicked", (GtkSignalFunc) solo_vtt, vtt);
gtk_widget_show(g->solo);
- gui_set_tooltip(g->mute, "Allow only this and other solo-switched turntabels' signal to be routed to the mixer.");
+ gui_set_tooltip(g->solo, "Allow only this and other solo-switched turntabels' signal to be routed to the mixer.");
gtk_box_pack_start(GTK_BOX(tempbox2), tempbox3, WID_FIX);
g->mouse_mapping_menu=NULL;
g->mouse_mapping_menu_x=NULL;
g->mouse_mapping_menu_y=NULL;
+
+ gui_set_name(vtt, vtt->name);
}
void fx_up(GtkWidget *wid, vtt_fx *effect)
gtk_box_pack_start(GTK_BOX(g->control_subbox), p->get_widget(), WID_FIX);
}
-void gui_set_name(vtt_class *vtt, char *newname)
-{
- gtk_label_set_text(GTK_LABEL(vtt->gui.audio_label), newname);
- gtk_label_set_text(GTK_LABEL(vtt->gui.control_label), newname);
- gtk_entry_set_text(GTK_ENTRY(vtt->gui.name), newname);
-
- if (vtt->gui.audio_minimized_panel_bar_button!=NULL) {
- gtk_label_set_text(GTK_LABEL(vtt->gui.audio_minimized_panel_bar_label), newname);
- }
-
- if (vtt->gui.control_minimized_panel_bar_button!=NULL) {
- gtk_label_set_text(GTK_LABEL(vtt->gui.control_minimized_panel_bar_label), newname);
- }
-}
-
void gui_set_filename (vtt_class *vtt, char *newname)
{
gtk_button_set_label(GTK_BUTTON(vtt->gui.file), newname);