Display some demo items in the demo tree view.
authorHong Jen Yee (PCMan) <pcman.tw@gmail.com>
Sat, 29 Mar 2008 01:37:35 +0000 (01:37 +0000)
committerHong Jen Yee (PCMan) <pcman.tw@gmail.com>
Sat, 29 Mar 2008 01:37:35 +0000 (01:37 +0000)
README
lxappearance.glade
po/zh_TW.po
src/demo.c
src/main-dlg-ui.c
src/main-dlg.c
src/main.c

diff --git a/README b/README
index a9f5024..d1ed760 100644 (file)
--- a/README
+++ b/README
@@ -1 +1,3 @@
-LXAppearance is a desktop-independent theme swither for GTK+.
\ No newline at end of file
+LXAppearance is part of LXDE project.
+It's a desktop-independent theme swither for GTK+.
+
index 53de8c6..3b966b4 100644 (file)
@@ -8,6 +8,7 @@
   <property name="type">GTK_WINDOW_TOPLEVEL</property>
   <property name="window_position">GTK_WIN_POS_CENTER</property>
   <property name="modal">False</property>
+  <property name="default_height">450</property>
   <property name="resizable">True</property>
   <property name="destroy_with_parent">False</property>
   <property name="decorated">True</property>
index bd60e6f..5708caf 100644 (file)
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: 0.1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-03-28 23:41+0800\n"
-"PO-Revision-Date: 2008-03-28 23:43+0800\n"
+"POT-Creation-Date: 2008-03-29 09:37+0800\n"
+"PO-Revision-Date: 2008-03-29 09:37+0800\n"
 "Last-Translator: 洪任諭 <pcman.tw@gmail.com>\n"
 "Language-Team: zh_TW <LL@li.org>\n"
 "MIME-Version: 1.0\n"
@@ -22,66 +22,74 @@ msgstr ""
 msgid "Appearance Settings"
 msgstr "外觀設定"
 
-#: src/main-dlg-ui.c:88
+#: src/main-dlg-ui.c:90
 msgid "Available Window Themes"
 msgstr "可用的視窗佈景主題"
 
-#: src/main-dlg-ui.c:106
+#: src/main-dlg-ui.c:108
 msgid "_Font:"
 msgstr "字型"
 
-#: src/main-dlg-ui.c:118
+#: src/main-dlg-ui.c:120
 msgid "Window"
 msgstr "視窗"
 
-#: src/main-dlg-ui.c:126
+#: src/main-dlg-ui.c:128
 msgid "Available Icon Themes"
 msgstr "可用的圖示佈景主題"
 
-#: src/main-dlg-ui.c:162
+#: src/main-dlg-ui.c:164
 msgid "_Install"
 msgstr "安裝(_I)"
 
-#: src/main-dlg-ui.c:169
+#: src/main-dlg-ui.c:171
 msgid "Icon"
 msgstr "圖示"
 
-#: src/main-dlg-ui.c:182
+#: src/main-dlg-ui.c:184
 msgid "Toolbar Style: "
 msgstr "工具列樣式:"
 
-#: src/main-dlg-ui.c:190
+#: src/main-dlg-ui.c:192
 msgid "Icons only"
 msgstr "只顯示圖示"
 
-#: src/main-dlg-ui.c:191
+#: src/main-dlg-ui.c:193
 msgid "Text only"
 msgstr "只顯示文字"
 
-#: src/main-dlg-ui.c:192
+#: src/main-dlg-ui.c:194
 msgid "Text below icons"
 msgstr "文字在圖示下方"
 
-#: src/main-dlg-ui.c:193
+#: src/main-dlg-ui.c:195
 msgid "Text beside icons"
 msgstr "文字在圖示旁"
 
-#: src/main-dlg-ui.c:195
+#: src/main-dlg-ui.c:197
 msgid "Other"
 msgstr "其他"
 
-#: src/main-dlg-ui.c:203
+#: src/main-dlg-ui.c:205
 msgid "<b>Preview</b>"
 msgstr "<b>預覽</b>"
 
-#: src/main-dlg.c:324
+#: src/main-dlg.c:354
 msgid "Select an icon theme"
 msgstr "選擇一個圖示佈景主題"
 
-#: src/main-dlg.c:331
+#: src/main-dlg.c:361
 msgid "*.tar.gz, *.tar.bz2 (Icon Theme)"
 msgstr "*.tar.gz, *.tar.bz2 (圖示佈景主題)"
 
+#: src/demo.c:54
+msgid "Column"
+msgstr "欄位"
+
+#: src/demo.c:63
+msgid "Item"
+msgstr "項目"
+
 #: src/demo-ui.c:116
 msgid "_File"
 msgstr "檔案(_F)"
@@ -98,63 +106,61 @@ msgstr "說明(_H)"
 msgid "Back"
 msgstr "上一頁"
 
-#: src/demo-ui.c:201
+#: src/demo-ui.c:202
 msgid "Forward"
 msgstr "下一頁"
 
-#: src/demo-ui.c:206
+#: src/demo-ui.c:207
 msgid "Stop"
 msgstr "停止"
 
-#: src/demo-ui.c:222
+#: src/demo-ui.c:224
 msgid "Tab1"
 msgstr "分頁1"
 
-#: src/demo-ui.c:244
-#: src/demo-ui.c:250
+#: src/demo-ui.c:246 src/demo-ui.c:252
 msgid "Radio Button"
 msgstr "Radio Button"
 
-#: src/demo-ui.c:260
+#: src/demo-ui.c:262
 msgid "Check Button"
 msgstr "Check Button"
 
-#: src/demo-ui.c:269
+#: src/demo-ui.c:271
 msgid "Demo"
 msgstr "展示"
 
-#: src/demo-ui.c:314
+#: src/demo-ui.c:316
 msgid "button"
 msgstr "按鈕"
 
-#: src/demo-ui.c:321
+#: src/demo-ui.c:323
 msgid "Test Item 1"
 msgstr "測試項目1"
 
-#: src/demo-ui.c:322
+#: src/demo-ui.c:324
 msgid "Test Item 2"
 msgstr "測試項目2"
 
-#: src/demo-ui.c:323
+#: src/demo-ui.c:325
 msgid "Test Item 3"
 msgstr "測試項目3"
 
-#: src/demo-ui.c:325
+#: src/demo-ui.c:327
 msgid "Tab2"
 msgstr "分頁2"
 
-#: src/demo-ui.c:338
+#: src/demo-ui.c:340
 msgid "Type some characters here to test currently selected font."
 msgstr "在這裡打一些字測試目前選擇的字型"
 
-#: src/demo-ui.c:340
+#: src/demo-ui.c:342
 msgid "Tab3"
 msgstr "分頁3"
 
-#: src/demo-ui.c:355
+#: src/demo-ui.c:357
 msgid "Tab4"
 msgstr "分頁4"
 
 #~ msgid "Available Fonts"
 #~ msgstr "可用的字型"
-
index 35df6af..ba27cef 100644 (file)
@@ -42,17 +42,46 @@ static void load_demo_icons()
     g_object_unref( demo_icon_list );
 }
 
+static void load_demo_tree_view( GtkTreeView* view )
+{
+    GtkListStore* list;
+    int i;
+    char str[256];
+
+    for( i = 0; i < 3; ++i )
+    {
+        GtkTreeViewColumn* col;
+        g_snprintf( str, 256, "%s %d", _("Column"), i + 1 );
+        col = gtk_tree_view_column_new_with_attributes( "Column 1", gtk_cell_renderer_text_new(), "text", i, NULL );
+        gtk_tree_view_append_column( view, col );
+    }
+
+    list = gtk_list_store_new( 3, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING );
+    for( i = 0; i < 3; ++i )
+    {
+        GtkTreeIter it;
+        g_snprintf( str, 256, "%s %d", _("Item"), i + 1 );
+        gtk_list_store_append( list, &it );
+        gtk_list_store_set( list, &it, 0, str, 1, str, 2, str, -1 );
+    }
+    gtk_tree_view_set_model( view, (GtkTreeModel*)list );
+    g_object_unref( list );
+}
+
 void show_demo( GdkNativeWindow wid )
 {
     GtkWidget* demo = create_demo_window();
     GtkWidget* plug = gtk_plug_new( wid );
     GtkWidget* top_vbox;
     GtkToolbarStyle tb_style;
+    GtkWidget* tree_view;
 
     g_object_get( gtk_settings_get_default(), "gtk-toolbar-style", &tb_style, NULL );
     gtk_toolbar_set_style (GTK_TOOLBAR (lookup_widget(demo, "toolbar")), tb_style );
 
     icon_view = lookup_widget( demo, "icon_view" );
+    tree_view = lookup_widget( demo, "demo_treeview" );
+
     gtk_widget_show_all( demo );
     gtk_container_add( (GtkContainer*)plug, demo );
 
@@ -64,4 +93,5 @@ void show_demo( GdkNativeWindow wid )
     gtk_icon_view_set_row_spacing( icon_view, 8 );
 
     load_demo_icons();
+    load_demo_tree_view( (GtkTreeView*)tree_view );
 }
index ca5c6d9..2086bdf 100644 (file)
@@ -69,6 +69,7 @@ create_dlg (void)
   dlg = gtk_dialog_new ();
   gtk_window_set_title (GTK_WINDOW (dlg), _("Appearance Settings"));
   gtk_window_set_position (GTK_WINDOW (dlg), GTK_WIN_POS_CENTER);
+  gtk_window_set_default_size (GTK_WINDOW (dlg), -1, 450);
   gtk_window_set_type_hint (GTK_WINDOW (dlg), GDK_WINDOW_TYPE_HINT_DIALOG);
 
   dialog_vbox1 = GTK_DIALOG (dlg)->vbox;
index 7d156fd..08ba112 100644 (file)
@@ -8,22 +8,29 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
-
-#include "main-dlg.h"
-#include "main-dlg-ui.h"
-#include "glade-support.h"
+#include <string.h>
 
 /* for kill & waitpid */
 #include <sys/types.h>
 #include <signal.h>
 #include <sys/wait.h>
 
+#include "main-dlg.h"
+#include "main-dlg-ui.h"
+#include "glade-support.h"
+
 #define GET_WIDGET( name )  name = lookup_widget( dlg, #name )
+
 #define INIT_LIST(name, prop) \
     GET_WIDGET( name##_view ); \
     name##_list = init_tree_view( name##_view, G_CALLBACK(on_list_sel_changed), prop ); \
     load_##name##s( name##_list, name##_name );
 
+#define enable_apply()      gtk_dialog_set_response_sensitive( main_dlg, GTK_RESPONSE_APPLY, TRUE )
+#define disable_apply()      gtk_dialog_set_response_sensitive( main_dlg, GTK_RESPONSE_APPLY, FALSE )
+
+extern GtkWidget* main_dlg; /* defined in main.c */
+
 static GtkTreeView* gtk_theme_view = NULL;
 static GtkListStore* gtk_theme_list = NULL;
 
@@ -67,6 +74,9 @@ static void reload_demo_process()
     argv[3] = tmp_rc_file;
     argv[4] = NULL;
     g_spawn_async(NULL, argv, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, &demo_pid, NULL );
+
+    /* reloading demo means the current selected theme is changed */
+    enable_apply();
 }
 
 static void write_rc_file( const char* path )
@@ -294,6 +304,7 @@ void main_dlg_init( GtkWidget* dlg )
 
     gtk_widget_realize( dlg );
     reload_demo_process();
+    disable_apply();
 }
 
 static void reload_all_programs( gboolean icon_only )
@@ -318,6 +329,7 @@ on_apply_clicked                       (GtkButton       *button,
 {
     write_rc_file( rc_file );
     reload_all_programs( FALSE );
+    disable_apply();
 }
 
 
@@ -326,7 +338,7 @@ on_font_changed                        (GtkFontButton   *fontbutton,
                                         gpointer         user_data)
 {
     const char* name = gtk_font_button_get_font_name(fontbutton);
-    if( name && font_name && 0 == strcmp( font_name ) )
+    if( name && font_name && 0 == strcmp( name, font_name ) )
         return;
     g_free( font_name );
     font_name = g_strdup( name );
@@ -358,11 +370,16 @@ on_install_theme_clicked               (GtkButton       *button,
             PACKAGE_DATA_DIR"/lxappearance/install-icon-theme.sh",
             file, NULL };
         int status = 0;
-        if( g_spawn_sync( NULL, argv, NULL, 0, NULL, NULL, NULL, NULL, &status, NULL ) && 0 == status )
+        char* stdo = NULL;
+        if( g_spawn_sync( NULL, argv, NULL, 0, NULL, NULL, &stdo, NULL, &status, NULL ) && 0 == status )
         {
+            char* sep = stdo ? strchr( stdo, '\n' ) : NULL;
+            if( sep )
+                *sep = '\0';
+
             /* reload all icon themes */
             gtk_list_store_clear( icon_theme_list );
-            load_icon_themes( icon_theme_list, "" );
+            load_icon_themes( icon_theme_list, stdo ? stdo : "" );
         }
         g_free( file );
     }
index e3fb94b..676dab8 100644 (file)
 #include "glade-support.h"
 
 char tmp_rc_file[] = "/tmp/gtkrc-2.0-XXXXXX";
+GtkWidget* main_dlg = NULL;
 
 int main (int argc, char *argv[])
 {
-    GtkWidget *dlg;
-
 #ifdef ENABLE_NLS
     bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
     bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
@@ -47,8 +46,8 @@ int main (int argc, char *argv[])
     /* Dirty hack: "gtk-toolbar-style" is installed in class_init of GtkToolbar */
     gtk_widget_destroy( gtk_toolbar_new() );
 
-    dlg = create_dlg ();
-    main_dlg_init( dlg );
+    main_dlg = create_dlg ();
+    main_dlg_init( main_dlg );
 
     gtk_main ();