]> granicus.if.org Git - handbrake/commitdiff
LinGui: add fullscreen option to preview
authorjstebbins <jstebbins.hb@gmail.com>
Sun, 5 Apr 2009 01:48:55 +0000 (01:48 +0000)
committerjstebbins <jstebbins.hb@gmail.com>
Sun, 5 Apr 2009 01:48:55 +0000 (01:48 +0000)
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@2299 b64f7644-9d1e-0410-96f1-a4d463321fa5

gtk/src/ghb.ui
gtk/src/internal_defaults.xml
gtk/src/main.c
gtk/src/preview.c
gtk/src/settings.c

index 7496d641de0db7b068ae38684b10cef0b40ee0b9..983fb9c9ed8c2245543cb1fea85c887827f91f2e 100644 (file)
@@ -4855,57 +4855,28 @@ location as the movie.</property>
     <property name="window_position">GTK_WIN_POS_CENTER</property>
     <property name="skip_taskbar_hint">True</property>
     <property name="skip_pager_hint">True</property>
-    <property name="allow-grow">False</property>
+    <property name="resizable">False</property>
     <property name="events">GDK_STRUCTURE_MASK</property>
     <signal handler="preview_configure_cb" name="configure-event"/>
     <signal handler="preview_window_delete_cb" name="delete_event"/>
     <child>
-      <object class="GtkHBox" id="hbox2">
+      <object class="GtkAlignment" id="alignment111">
         <property name="visible">True</property>
-        <property name="spacing">4</property>
+        <property name="xalign">.5</property>
+        <property name="yalign">.5</property>
+        <property name="xscale">0</property>
+        <property name="yscale">0</property>
         <child>
-          <object class="GtkVBox" id="vbox40">
+          <object class="GtkDrawingArea" id="preview_image">
             <property name="visible">True</property>
-            <property name="spacing">5</property>
-            <child>
-              <object class="GtkAlignment" id="alignment52">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-                <property name="xscale">0</property>
-                <property name="yscale">0</property>
-                <property name="top_padding">2</property>
-                <property name="bottom_padding">2</property>
-                <property name="left_padding">2</property>
-                <property name="right_padding">2</property>
-                <child>
-                  <object class="GtkDrawingArea" id="preview_image">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_LEAVE_NOTIFY_MASK</property>
-                    <property name="app_paintable">True</property>
-                    <signal name="motion-notify-event" handler="preview_motion_cb"/>
-                    <signal name="leave-notify-event" handler="preview_leave_cb"/>
-                  </object>
-                </child>
-              </object>
-              <packing>
-                <property name="position">0</property>
-              </packing>
-            </child>
+            <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_LEAVE_NOTIFY_MASK</property>
+            <property name="app_paintable">True</property>
+            <signal name="motion-notify-event" handler="preview_motion_cb"/>
+            <signal name="leave-notify-event" handler="preview_leave_cb"/>
           </object>
           <packing>
-            <property name="position">0</property>
           </packing>
         </child>
-        <child>
-          <object class="GtkVSeparator" id="vseparator2">
-            <property name="visible">True</property>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-
       </object>
     </child>
   </object>
@@ -5059,6 +5030,19 @@ location as the movie.</property>
                 <property name="position">0</property>
               </packing>
             </child>
+            <child>
+              <object class="GtkToggleButton" id="preview_fullscreen">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="tooltip-text" translatable="yes">View Fullscreen Preview</property>
+                <property name="label" translatable="yes">Fullscreen</property>
+                <signal handler="fullscreen_clicked_cb" name="clicked"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
             <child>
               <object class="GtkButton" id="settings_button">
                 <property name="visible">True</property>
@@ -5069,7 +5053,7 @@ location as the movie.</property>
               </object>
               <packing>
                 <property name="expand">False</property>
-                <property name="position">1</property>
+                <property name="position">2</property>
               </packing>
             </child>
           </object>
index 65201e89c9c2a5e2c83bb305661daafbd07f4dff..260f80090cdd866ab7c2889ac64c96b2e5acc85a 100644 (file)
                <false />
                <key>preview_count</key>
                <integer>10</integer>
+               <key>preview_fullscreen</key>
+               <false />
                <key>preview_x</key>
                <integer>-1</integer>
                <key>preview_y</key>
index 2822070ab8e8b19291feb6d18a9365e167dc48ac..4c7952fa3679903cc2bdb2b31b8e82cd3d781b47 100644 (file)
@@ -646,6 +646,13 @@ main (int argc, char *argv[])
        win = widget->window;
        gdk_window_reparent(win, parent, 0, 0);
 
+/*
+       if (ghb_settings_get_boolean(ud->settings, "preview_fullscreen"))
+       {
+               gtk_window_set_resizable(window, TRUE);
+               gtk_window_fullscreen(window);
+       }
+*/
        gtk_main ();
        ghb_backend_close();
        if (ud->queue)
index e188a0413a7fdc8f4a3255abe109818db0e512ca..c18d28015b0887c24325681a19c65c30481560ac 100644 (file)
@@ -800,6 +800,9 @@ picture_settings_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud)
                if (x >= 0 && y >= 0)
                        gtk_window_move(GTK_WINDOW(widget), x, y);
                set_visible(widget, active);
+               // The window may be hidden behind the main window, raise it
+               if (active)
+                       gtk_window_present(GTK_WINDOW(widget));
        }
 }
 
@@ -815,6 +818,45 @@ picture_settings_alt_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud)
        gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(toggle), !active);
 }
 
+static void
+go_full(signal_user_data_t *ud)
+{
+       GtkWindow *window;
+       window = GTK_WINDOW(GHB_WIDGET (ud->builder, "preview_window"));
+       gtk_window_fullscreen(window);
+}
+
+G_MODULE_EXPORT void
+fullscreen_clicked_cb(GtkWidget *toggle, signal_user_data_t *ud)
+{
+       gboolean active;
+       GtkWindow *window;
+
+       g_debug("fullscreen_clicked_cb()");
+       ghb_widget_to_setting (ud->settings, toggle);
+       ghb_check_dependency(ud, toggle);
+       const gchar *name = gtk_widget_get_name(toggle);
+       ghb_pref_save(ud->settings, name);
+
+       window = GTK_WINDOW(GHB_WIDGET (ud->builder, "preview_window"));
+       active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toggle));
+       if (active)
+       {
+               gtk_window_set_resizable(window, TRUE);
+               gtk_button_set_label(GTK_BUTTON(toggle), "Windowed");
+               // Changing resizable property doesn't take effect immediately
+               // need to delay fullscreen till after this callback returns
+               // to mainloop
+               g_idle_add((GSourceFunc)go_full, ud);
+       }
+       else
+       {
+               gtk_window_unfullscreen(window);
+               gtk_window_set_resizable(window, FALSE);
+               gtk_button_set_label(GTK_BUTTON(toggle), "Fullscreen");
+       }
+}
+
 G_MODULE_EXPORT void
 picture_settings_alt2_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud)
 {
index 5912fba5298c9cc8e1e478404e53a09724f3afee..c6657707f64a14b6cef30da2670461738eaaeb43 100644 (file)
@@ -232,6 +232,13 @@ ghb_widget_value(GtkWidget *widget)
                bval = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
                value = ghb_boolean_value_new(bval);
        }
+       else if (type == GTK_TYPE_TOGGLE_BUTTON)
+       {
+               g_debug("\ttoggle_button");
+               gboolean bval;
+               bval = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
+               value = ghb_boolean_value_new(bval);
+       }
        else if (type == GTK_TYPE_TOGGLE_ACTION)
        {
                g_debug("\ttoggle action");
@@ -456,6 +463,11 @@ update_widget(GtkWidget *widget, const GValue *value)
                g_debug("check button");
                gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), ival);
        }
+       else if (type == GTK_TYPE_TOGGLE_BUTTON)
+       {
+               g_debug("toggle button");
+               gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), ival);
+       }
        else if (type == GTK_TYPE_TOGGLE_ACTION)
        {
                g_debug("toggle action");