diff --git a/rtbuf.glade b/rtbuf.glade
index fb7477f..ef6003a 100644
--- a/rtbuf.glade
+++ b/rtbuf.glade
@@ -2,6 +2,97 @@
<!-- Generated with glade 3.22.1 -->
<interface>
<requires lib="gtk+" version="3.20"/>
+ <object class="GtkBox" id="input">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkCheckButton" id="input_check">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="input_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">input</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="input_value">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">0.5</property>
+ <property name="width_chars">9</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="input_min">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="has_frame">False</property>
+ <property name="width_chars">9</property>
+ <property name="text" translatable="yes">0.0</property>
+ <property name="caps_lock_warning">False</property>
+ <property name="input_purpose">number</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScale" id="input_slider">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="round_digits">1</property>
+ <property name="digits">3</property>
+ <property name="draw_value">False</property>
+ <property name="value_pos">left</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="input_max">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="has_frame">False</property>
+ <property name="width_chars">9</property>
+ <property name="text" translatable="yes">1.0</property>
+ <property name="input_purpose">number</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ </object>
<object class="GtkWindow" id="modular">
<property name="visible">True</property>
<property name="can_focus">False</property>
@@ -189,25 +280,14 @@
<property name="vexpand">True</property>
<property name="shadow_type">in</property>
<child>
- <object class="GtkLayout">
+ <object class="GtkLayout" id="modular_layout">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<child>
- <object class="GtkDrawingArea">
- <property name="width_request">454</property>
- <property name="height_request">220</property>
- <property name="visible">True</property>
- <property name="app_paintable">True</property>
- <property name="can_focus">False</property>
- <property name="hexpand">True</property>
- <property name="vexpand">True</property>
- </object>
+ <placeholder/>
</child>
- <style>
- <class name="background: #888;"/>
- </style>
</object>
</child>
</object>
@@ -220,93 +300,87 @@
</object>
</child>
</object>
- <object class="GtkOffscreenWindow" id="templates">
+ <object class="GtkBox" id="output">
+ <property name="visible">True</property>
<property name="can_focus">False</property>
<child>
- <placeholder/>
+ <object class="GtkLabel" id="output_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">output</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
</child>
<child>
- <object class="GtkBox" id="rtbuf">
+ <object class="GtkCheckButton" id="output_check">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="halign">start</property>
- <property name="valign">start</property>
- <property name="orientation">vertical</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
<child>
- <object class="GtkLabel" id="rtbuf_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">rtbuf</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
+ <placeholder/>
</child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <object class="GtkBox" id="rtbuf">
+ <property name="width_request">100</property>
+ <property name="height_request">80</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkLabel" id="rtbuf_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">rtbuf</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="rtbuf_inputs">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
<child>
- <object class="GtkGrid" id="rtbuf_constants">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
+ <placeholder/>
</child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="rtbuf_outputs">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
<child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkBox" id="rtbuf_inputs">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <property name="homogeneous">True</property>
- <child>
- <placeholder/>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox" id="rtbuf_outputs">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <property name="homogeneous">True</property>
- <child>
- <placeholder/>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
+ <placeholder/>
</child>
</object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
</child>
</object>
- <menu id="modular_popup">
- <section>
- <item>
- <attribute name="label" translatable="yes">rtbuf</attribute>
- <attribute name="action">rtbuf_gtk_modular_popup_rtbuf</attribute>
- </item>
- </section>
- </menu>
</interface>
diff --git a/rtbuf_gtk.c b/rtbuf_gtk.c
index f49a0e6..c344d63 100644
--- a/rtbuf_gtk.c
+++ b/rtbuf_gtk.c
@@ -1,28 +1,56 @@
#include <gtk/gtk.h>
#include <stdio.h>
-void
-rtbuf_gtk_modular_popup_rtbuf ()
+GObject *modular;
+GObject *modular_layout;
+
+void rtbuf_gtk_modular_close (GtkWidget *widget,
+ gpointer user_data)
+{
+ printf("rtbuf-gtk modular close\n");
+ gtk_main_quit();
+}
+
+gboolean rtbuf_gtk_modular_popup (GtkWidget *widget,
+ GdkEventButton *event,
+ gpointer user_data)
{
- printf("rtbuf\n");
+ if (event->button == 3) {
+ printf("rtbuf-gtk modular popup\n");
+ }
+ return TRUE;
}
-void
-rtbuf_gtk_modular_bg_draw (GtkWidget *widget,
- cairo_t *cr)
+gboolean rtbuf_gtk_modular_draw (GtkWidget *widget,
+ cairo_t *cr,
+ gpointer user_data)
{
(void) widget;
(void) cr;
- printf("draw modular bg\n");
+ (void) user_data;
+ printf("rtbuf-gtk modular draw\n");
+ return TRUE;
}
-int
-main (int argc,
- char *argv[])
+void rtbuf_gtk_modular_window (GtkBuilder *builder)
{
- GtkBuilder *builder;
- GObject *window;
GObject *button;
+
+ modular = gtk_builder_get_object(builder, "modular");
+ g_signal_connect(modular, "destroy", G_CALLBACK(rtbuf_gtk_modular_close), NULL);
+
+ button = gtk_builder_get_object(builder, "quit");
+ g_signal_connect(button, "activate", G_CALLBACK(rtbuf_gtk_modular_close), NULL);
+
+ modular_layout = gtk_builder_get_object(builder, "modular_layout");
+ gtk_widget_add_events(modular_layout, GDK_BUTTON_PRESS_MASK);
+ g_signal_connect(modular_layout, "button-press-event", G_CALLBACK(rtbuf_gtk_modular_popup), NULL);
+ g_signal_connect(modular_layout, "draw", G_CALLBACK(rtbuf_gtk_modular_draw), NULL);
+}
+
+int main (int argc, char *argv[])
+{
+ GtkBuilder *builder;
GError *error = NULL;
gtk_init(&argc, &argv);
@@ -35,12 +63,7 @@ main (int argc,
return 1;
}
- /* Connect signal handlers to the constructed widgets. */
- window = gtk_builder_get_object(builder, "modular");
- g_signal_connect(window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
-
- button = gtk_builder_get_object(builder, "quit");
- g_signal_connect(button, "activate", G_CALLBACK (gtk_main_quit), NULL);
+ rtbuf_gtk_modular_window(builder);
gtk_main ();