]> Pileus Git - aweather/commitdiff
Add fullscreen view
authorAndy Spencer <andy753421@gmail.com>
Tue, 24 May 2011 06:51:16 +0000 (06:51 +0000)
committerAndy Spencer <andy753421@gmail.com>
Tue, 24 May 2011 08:10:40 +0000 (08:10 +0000)
data/main.ui.in
src/aweather-gui.c

index 23a049438d3efa46c5ae866c088a7f5ef4971cf3..7f419aaa83e397f2c4fb3936f846a383aa4ecab9 100644 (file)
                         <property name="visible">True</property>
                       </object>
                     </child>
+                    <child>
+                      <object class="GtkCheckMenuItem" id="main_menu_view_fullscreen">
+                        <property name="visible">True</property>
+                        <property name="related_action">fullscreen</property>
+                        <property name="use_action_appearance">True</property>
+                        <property name="use_underline">True</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkSeparatorMenuItem" id="main_menu_view_1">
+                        <property name="visible">True</property>
+                      </object>
+                    </child>
                     <child>
                       <object class="GtkImageMenuItem" id="main_menu_view_refresh">
                         <property name="visible">True</property>
                 <property name="homogeneous">True</property>
               </packing>
             </child>
+            <child>
+              <object class="GtkToggleToolButton" id="main_tb_fullscreen">
+                <property name="visible">True</property>
+                <property name="related_action">fullscreen</property>
+                <property name="use_action_appearance">True</property>
+                <property name="label" translatable="yes">toolbutton1</property>
+                <property name="use_underline">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="homogeneous">True</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkSeparatorToolItem" id="main_tb_1">
+                <property name="visible">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="homogeneous">True</property>
+              </packing>
+            </child>
             <child>
               <object class="GtkToggleToolButton" id="main_tb_offline">
                 <property name="visible">True</property>
               </packing>
             </child>
             <child>
-              <object class="GtkSeparatorToolItem" id="main_tb_1">
+              <object class="GtkSeparatorToolItem" id="main_tb_2">
                 <property name="visible">True</property>
               </object>
               <packing>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkVBox" id="main_1">
+                  <object class="GtkVBox" id="main_sidebar">
                     <property name="visible">True</property>
                     <property name="orientation">vertical</property>
                     <property name="spacing">5</property>
     <property name="border_width">5</property>
     <property name="title" translatable="yes">Preferences - AWeather</property>
     <property name="type_hint">normal</property>
-    <property name="has_separator">False</property>
-    <signal name="response" handler="gtk_widget_hide" object="prefs_window"/>
     <signal name="delete_event" handler="gtk_widget_hide_on_delete"/>
+    <signal name="response" handler="gtk_widget_hide" object="prefs_window"/>
     <child internal-child="vbox">
       <object class="GtkVBox" id="prefs_0">
         <property name="visible">True</property>
     <property name="title" translatable="yes">About - AWeather</property>
     <property name="window_position">center-on-parent</property>
     <property name="type_hint">dialog</property>
-    <property name="has_separator">False</property>
     <property name="program_name">AWeather</property>
     <property name="version">@VERSION@</property>
     <property name="copyright" translatable="yes">Copyright &#xA9;2008-2009 Andy Spencer</property>
@@ -909,8 +942,8 @@ The hypothetical commands `show w' and `show c' should show the appropriate part
 </property>
     <property name="authors">Andy Spencer &lt;andy753421@gmail.com&gt;</property>
     <property name="wrap_license">True</property>
-    <signal name="response" handler="gtk_widget_hide"/>
     <signal name="delete_event" handler="gtk_widget_hide_on_delete"/>
+    <signal name="response" handler="gtk_widget_hide"/>
     <child internal-child="vbox">
       <object class="GtkVBox" id="about_0">
         <property name="visible">True</property>
@@ -958,4 +991,9 @@ The hypothetical commands `show w' and `show c' should show the appropriate part
     <property name="stock_id">gtk-clear</property>
     <signal name="activate" handler="on_cleancache"/>
   </object>
+  <object class="GtkToggleAction" id="fullscreen">
+    <property name="label">Fullscreen</property>
+    <property name="stock_id">gtk-fullscreen</property>
+    <signal name="toggled" handler="on_fullscreen"/>
+  </object>
 </interface>
index 6c5b5a638e925a21aee8bba290c29623eda23c69..7b42818d912452dc08c0a344c45e8d549ec62db4 100644 (file)
@@ -34,8 +34,13 @@ G_MODULE_EXPORT gboolean on_gui_key_press(GtkWidget *widget, GdkEventKey *event,
 {
        g_debug("AWeatherGui: on_gui_key_press - key=%x, state=%x",
                        event->keyval, event->state);
+       GObject *action = aweather_gui_get_object(self, "fullscreen");
+       gboolean full   = gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(action));
        if (event->keyval == GDK_q)
                gtk_widget_destroy(GTK_WIDGET(self));
+       else if (event->keyval == GDK_F11 ||
+               (event->keyval == GDK_Escape && full))
+               gtk_action_activate(GTK_ACTION(action));
        else if (event->keyval == GDK_r && event->state & GDK_CONTROL_MASK)
                grits_viewer_refresh(self->viewer);
        else if (event->keyval == GDK_Tab || event->keyval == GDK_ISO_Left_Tab) {
@@ -109,6 +114,21 @@ G_MODULE_EXPORT void on_zoomout(GtkAction *action, AWeatherGui *self)
        grits_viewer_zoom(self->viewer, 4./3);
 }
 
+G_MODULE_EXPORT void on_fullscreen(GtkToggleAction *action, AWeatherGui *self)
+{
+       g_message("fullscreen");
+       gchar *hide[] = {"main_menu", "main_sidebar", "main_tabs"};
+       if (gtk_toggle_action_get_active(action)) {
+               gtk_window_fullscreen(GTK_WINDOW(self));
+               for (int i = 0; i < G_N_ELEMENTS(hide); i++)
+                       gtk_widget_hide(aweather_gui_get_widget(self, hide[i]));
+       } else {
+               gtk_window_unfullscreen(GTK_WINDOW(self));
+               for (int i = 0; i < G_N_ELEMENTS(hide); i++)
+                       gtk_widget_show(aweather_gui_get_widget(self, hide[i]));
+       }
+}
+
 G_MODULE_EXPORT void on_refresh(GtkAction *action, AWeatherGui *self)
 {
        grits_viewer_refresh(self->viewer);
@@ -246,7 +266,7 @@ static void site_setup(AWeatherGui *self)
                        gtk_tree_store_append(store, &state, NULL);
                        gtk_tree_store_set   (store, &state, 0, cities[i].code,
                                                             1, cities[i].name, -1);
-               } else if (cities[i].type == LOCATION_CITY) {
+               } else {
                        gtk_tree_store_append(store, &city, &state);
                        gtk_tree_store_set   (store, &city, 0, cities[i].code,
                                                            1, cities[i].name, -1);