$ git clone http://tcclient.ion.nu/tc_client.git
commit c369714248f11ba4eec06dbf1c8455217bbd2145
Author: Alicia <...>
Date: Thu Dec 17 17:00:33 2015 +0100
tc_client-gtk: made automatically opening cam streams an option which can be disabled.
diff --git a/ChangeLog b/ChangeLog
index e8be003..fba1096 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -4,6 +4,7 @@ Reimplemented announcement of people cammed up when joining.
Minor build fixes.
libcamera: added support for a virtual "Image" camera.
tc_client-gtk: added workarounds for the camera code (with the platform-agnostic "Image" camera) to work on windows.
+tc_client-gtk: made automatically opening cam streams an option which can be disabled.
libcamera: fixed compiler warnings.
libcamera: added support for cameras on windows through the ESCAPI library.
0.36:
diff --git a/gtkgui.glade b/gtkgui.glade
index ca5fc0c..82c71cb 100644
--- a/gtkgui.glade
+++ b/gtkgui.glade
@@ -963,20 +963,55 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
- <object class="GtkCheckButton" id="camdownonjoin">
+ <object class="GtkBox" id="box11">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">False</property>
- <property name="xalign">0</property>
- <property name="draw_indicator">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
<child>
- <object class="GtkLabel" id="label19">
+ <object class="GtkCheckButton" id="camdownonjoin">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Automatically cam down when someone joins (or "Shy mode")</property>
- <property name="wrap">True</property>
- <property name="wrap_mode">word-char</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="xalign">0</property>
+ <property name="draw_indicator">True</property>
+ <child>
+ <object class="GtkLabel" id="label19">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Automatically cam down when someone joins (or "Shy mode")</property>
+ <property name="wrap">True</property>
+ <property name="wrap_mode">word-char</property>
+ </object>
+ </child>
</object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="autoopencams">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="xalign">0</property>
+ <property name="draw_indicator">True</property>
+ <child>
+ <object class="GtkLabel" id="label20">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Automatically open cam streams</property>
+ <property name="wrap">True</property>
+ <property name="wrap_mode">word-char</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
</child>
</object>
</child>
@@ -991,7 +1026,7 @@
<object class="GtkLabel" id="label18">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="label" translatable="yes">Misc</property>
+ <property name="label" translatable="yes">Cameras</property>
</object>
<packing>
<property name="position">3</property>
diff --git a/utilities/gtk/camviewer.c b/utilities/gtk/camviewer.c
index d410d2f..b7962fd 100644
--- a/utilities/gtk/camviewer.c
+++ b/utilities/gtk/camviewer.c
@@ -405,7 +405,7 @@ gboolean handledata(GIOChannel* iochannel, GIOCondition condition, gpointer data
return 1;
}
// Start a stream when someone cams up
- if(space && !strcmp(space, " cammed up"))
+ if(space && !strcmp(space, " cammed up") && (config_get_bool("autoopencams") || !config_get_set("autoopencams")))
{
space[0]=0;
dprintf(tc_client_in[1], "/opencam %s\n", buf);
diff --git a/utilities/gtk/config.c b/utilities/gtk/config.c
index d14ac6e..1b91c59 100644
--- a/utilities/gtk/config.c
+++ b/utilities/gtk/config.c
@@ -108,6 +108,16 @@ int config_get_int(const char* name)
return 0;
}
+char config_get_set(const char* name)
+{
+ unsigned int i;
+ for(i=0; i<configitemcount; ++i)
+ {
+ if(!strcmp(configitems[i].name, name)){return 1;}
+ }
+ return 0;
+}
+
void config_set(const char* name, const char* value)
{
unsigned int i;
diff --git a/utilities/gtk/config.h b/utilities/gtk/config.h
index a12032c..979bfd2 100644
--- a/utilities/gtk/config.h
+++ b/utilities/gtk/config.h
@@ -20,6 +20,7 @@ extern void config_save(void);
extern char config_get_bool(const char* name);
extern const char* config_get_str(const char* name);
extern int config_get_int(const char* name);
+extern char config_get_set(const char* name);
extern void config_set(const char* name, const char* value);
extern void config_set_int(const char* name, int value);
diff --git a/utilities/gtk/gui.c b/utilities/gtk/gui.c
index 8caa388..c6322d6 100644
--- a/utilities/gtk/gui.c
+++ b/utilities/gtk/gui.c
@@ -63,9 +63,11 @@ void settings_reset(GtkBuilder* gui)
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(option), config_get_bool("youtuberadio_cmd"));
option=GTK_WIDGET(gtk_builder_get_object(gui, "youtubecmd"));
gtk_entry_set_text(GTK_ENTRY(option), config_get_str("youtubecmd"));
- // Misc
+ // Cameras
option=GTK_WIDGET(gtk_builder_get_object(gui, "camdownonjoin"));
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(option), config_get_bool("camdownonjoin"));
+ option=GTK_WIDGET(gtk_builder_get_object(gui, "autoopencams"));
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(option), config_get_set("autoopencams")?config_get_bool("autoopencams"):1);
}
void showsettings(GtkMenuItem* item, GtkBuilder* gui)
@@ -95,9 +97,11 @@ void savesettings(GtkButton* button, GtkBuilder* gui)
config_set("youtubecmd", gtk_entry_get_text(GTK_ENTRY(youtubecmd)));
GtkWidget* youtuberadio_cmd=GTK_WIDGET(gtk_builder_get_object(gui, "youtuberadio_cmd"));
config_set("youtuberadio_cmd", gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(youtuberadio_cmd))?"True":"False");
- // Misc
+ // Cameras
GtkWidget* option=GTK_WIDGET(gtk_builder_get_object(gui, "camdownonjoin"));
config_set("camdownonjoin", gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(option))?"True":"False");
+ option=GTK_WIDGET(gtk_builder_get_object(gui, "autoopencams"));
+ config_set("autoopencams", gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(option))?"True":"False");
config_save();
GtkWidget* settings=GTK_WIDGET(gtk_builder_get_object(gui, "settings"));