/[gtktalog]/gtktalog/src/setup.c
ViewVC logotype

Diff of /gtktalog/src/setup.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.25 by chevdor, Tue Oct 21 22:17:07 2003 UTC revision 1.26 by chevdor, Tue Oct 28 22:34:47 2003 UTC
# Line 15  Line 15 
15   *  along with this program; if not, write to the Free Software   *  along with this program; if not, write to the Free Software
16   *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.   *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17   */   */
18    
19  #include <config.h>  #include <config.h>
20  #include <gnome.h>  #include <gnome.h>
21  #include <libgnomevfs/gnome-vfs-mime-info.h>  #include <libgnomevfs/gnome-vfs-mime-info.h>
# Line 157  static GtkWidget *frame_mime; Line 157  static GtkWidget *frame_mime;
157  static GtkWidget *setup_vbox;  static GtkWidget *setup_vbox;
158  static GtkWidget **current_frame;  static GtkWidget **current_frame;
159    
160  static GtkCTreeNode *setup_scan_mime;  //wk: to remove static GtkCTreeNode *setup_scan_mime;
161  static GtkCTreeNode *setup_scan_info;  static GtkCTreeNode *setup_scan_info;
162  static GtkCTreeNode *setup_scan_vfs;  static GtkCTreeNode *setup_scan_vfs;
163    
# Line 171  GTree *local_vfs_extensions; Line 171  GTree *local_vfs_extensions;
171  GTree *local_ei_extensions;  GTree *local_ei_extensions;
172    
173  GList *backupList;        // GList used to backup a list in order to restore the original  GList *backupList;        // GList used to backup a list in order to restore the original
174                            // list if the cancel button is pressed                                   // list if the cancel button is pressed
175    
176  mime_type_to_skip_t mime_type_to_skip_current_selection;  mime_type_to_skip_t mime_type_to_skip_current_selection;
177    vfs_t vfs_current_selection;
178    
179  gchar *date_format;  gchar *date_format;
180  gchar *mount_prog;  gchar *mount_prog;
# Line 1258  _vfs_extensions_free_traverse (gpointer Line 1259  _vfs_extensions_free_traverse (gpointer
1259    return (FALSE);    return (FALSE);
1260  }  }
1261    
1262     //! Creates a model for the VFS treeView
1263     static GtkTreeModel *
1264     vfs_create_model (void)
1265     {
1266       guint i = 0;
1267       guint listLength=0;
1268       GtkListStore *store;
1269       GtkTreeIter iter;
1270       vfs_t *tmp;
1271       GList* item;
1272    
1273       store = gtk_list_store_new (VFS_NUM_COLUMNS,
1274                                              G_TYPE_BOOLEAN,      //State
1275                                              G_TYPE_STRING,
1276                                              G_TYPE_STRING,
1277                                              G_TYPE_STRING);
1278    
1279       // *********** JUNK DATA *********************
1280       gtk_list_store_append (store, &iter);
1281           g_print("adding junk data in the VFS section",tmp->file_type);
1282           gtk_list_store_set (store, &iter,
1283                         VFS_COLUMN_STATE, 1 ,
1284                         VFS_COLUMN_FILE_TYPE, "file type",
1285                         VFS_COLUMN_PLUGIN, "plugin",
1286                         VFS_COLUMN_OPTIONS, "options",
1287                              -1);
1288    
1289       // *********** JUNK DATA *********************        
1290       gtk_list_store_append (store, &iter);
1291           g_print("adding junk data in the VFS section",tmp->file_type);
1292           gtk_list_store_set (store, &iter,
1293                         VFS_COLUMN_STATE, 0 ,
1294                         VFS_COLUMN_FILE_TYPE, "file type again",
1295                         VFS_COLUMN_PLUGIN, "plugin of the death",
1296                         VFS_COLUMN_OPTIONS, "options fucking cool",
1297                              -1);
1298    
1299       /*
1300       item=g_list_first(my_config->vfs_list);
1301       while (item)
1302         {
1303           gtk_list_store_append (store, &iter);
1304           tmp=(vfs_t *)item->data;
1305           g_print("adding %s in the model\n",tmp->file_type);
1306           gtk_list_store_set (store, &iter,
1307                         VFS_COLUMN_STATE, tmp->state ,
1308                         VFS_COLUMN_FILE_TYPE, g_strdup(tmp->file_type),
1309                         VFS_COLUMN_PLUGIN, g_strdup(tmp->plugin),
1310                         VFS_COLUMN_OPTIONS, g_strdup(tmp->options),
1311                              -1);
1312    
1313           item=g_list_next(item);
1314         }
1315         */
1316    
1317       return GTK_TREE_MODEL (store);
1318     }
1319    
1320    
1321  void  void
1322  vfs_extensions_free (GTree * vfsext)  vfs_extensions_free (GTree * vfsext)
1323  {  {
# Line 1452  vfs_add_type_ok_clicked (GtkWidget * w, Line 1512  vfs_add_type_ok_clicked (GtkWidget * w,
1512    gtk_widget_destroy (vfs_add_type_window);    gtk_widget_destroy (vfs_add_type_window);
1513  }  }
1514    
1515    static void vfs_selection_changed(GtkTreeSelection *selection,
1516                                                    gpointer data)
1517    {
1518      GtkTreeModel *model=(GtkTreeModel*)data;
1519      GtkTreeIter iter;
1520      gchar* file_type;
1521      gchar* plugin;
1522      gchar* options;
1523      gint state;
1524      gboolean res;
1525    
1526      res=gtk_tree_selection_get_selected(selection,
1527                                          &model,
1528                                          &iter);
1529    
1530      // if *data is NULL, it means the tree collapses and no data is available
1531      // until the user selects a new row.
1532      if (res)
1533        {
1534          gtk_tree_model_get (model,&iter,
1535                              VFS_COLUMN_STATE, &state,
1536                              VFS_COLUMN_FILE_TYPE, &file_type,
1537                    VFS_COLUMN_PLUGIN, &plugin,
1538                    VFS_COLUMN_OPTIONS, &options,
1539                              -1);
1540          gtk_widget_set_sensitive (GTK_WIDGET (ess_button_del), TRUE);
1541    
1542          //g_print ("\nselection : %s | %d | stamp = %d\n",mime_type, state, iter.stamp);
1543          vfs_current_selection.file_type=file_type;
1544          vfs_current_selection.state=state;
1545        }
1546      else
1547        {
1548          g_print ("\nselection is empty");
1549        }
1550    }
1551    
1552    
1553    //! Change the state in the treeView and in the Glist
1554    static void
1555    vfs_state_toggled (GtkCellRendererToggle *cell,
1556                                      gchar                 *path_str,
1557                                      gpointer               data)
1558    {
1559      GtkTreeModel *model = (GtkTreeModel *)data;
1560      GtkTreeIter  iter;
1561      GtkTreePath *path = gtk_tree_path_new_from_string (path_str);
1562      gboolean state;
1563      gchar *file_type;
1564      gchar *plugin;
1565      gchar *options;
1566    
1567      vfs_t *tmp;
1568      gboolean done;
1569    
1570      GList* item;
1571    
1572      // get toggled iter
1573      gtk_tree_model_get_iter (model, &iter, path);
1574      gtk_tree_model_get (model, &iter, VFS_COLUMN_STATE, &state, -1);
1575      gtk_tree_model_get (model, &iter, VFS_COLUMN_FILE_TYPE, &file_type, -1);
1576      gtk_tree_model_get (model, &iter, VFS_COLUMN_PLUGIN, &plugin, -1);
1577      gtk_tree_model_get (model, &iter, VFS_COLUMN_OPTIONS, &options, -1);
1578    
1579      state ^= 1;
1580    
1581      // set new value
1582      gtk_list_store_set (GTK_LIST_STORE (model), &iter, VFS_COLUMN_STATE, state, -1);
1583    
1584      //update the glist
1585      done=0;
1586      item=g_list_first(my_config->vfs_list);
1587      while (item && !done)
1588        {
1589          tmp=(vfs_t *)item->data;
1590          if (!strcmp(tmp->file_type,file_type))
1591              {
1592                tmp->state=state;
1593                done=1;
1594                g_print ("Lets change state for %s",tmp->file_type);
1595              }
1596          item=g_list_next(item);
1597        }
1598    
1599      // clean up
1600      gtk_tree_path_free (path);
1601    }
1602    
1603    
1604    static void
1605    vfs_add_columns (GtkTreeView *treeview)
1606    {
1607      GtkCellRenderer *renderer;
1608      GtkTreeViewColumn *column;
1609      GtkTreeModel *model = gtk_tree_view_get_model (treeview);
1610    
1611      /* column for fixed toggles */
1612      renderer = gtk_cell_renderer_toggle_new ();
1613      g_signal_connect (G_OBJECT (renderer), "toggled",
1614                        G_CALLBACK (vfs_state_toggled), model);
1615    
1616      column = gtk_tree_view_column_new_with_attributes (_("State"),
1617                                                         renderer,
1618                                                         "active", MIME_TYPES_TO_SKIP_COLUMN_STATE,
1619                                                         NULL);
1620    
1621      /* set this column to a fixed sizing (of 30 pixels) */
1622      gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN (column),
1623                                       GTK_TREE_VIEW_COLUMN_FIXED);
1624      gtk_tree_view_column_set_fixed_width (GTK_TREE_VIEW_COLUMN (column), 30);
1625      gtk_tree_view_append_column (treeview, column);
1626    
1627    
1628      /* column for file type */
1629      renderer = gtk_cell_renderer_text_new ();
1630      column = gtk_tree_view_column_new_with_attributes (_("FILE type"),
1631                                                         renderer, "text",
1632                                                         VFS_COLUMN_FILE_TYPE, NULL);
1633      gtk_tree_view_column_set_sort_column_id (column, VFS_COLUMN_FILE_TYPE);
1634      gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN (column),
1635                                       GTK_TREE_VIEW_COLUMN_FIXED);
1636      gtk_tree_view_column_set_fixed_width (GTK_TREE_VIEW_COLUMN (column), 300);
1637      gtk_tree_view_append_column (treeview, column);
1638    
1639        /* column for plugin */
1640      renderer = gtk_cell_renderer_text_new ();
1641      column = gtk_tree_view_column_new_with_attributes (_("Plugin"),
1642                                                         renderer, "text",
1643                                                         VFS_COLUMN_PLUGIN, NULL);
1644      gtk_tree_view_column_set_sort_column_id (column, VFS_COLUMN_PLUGIN);
1645      gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN (column),
1646                                       GTK_TREE_VIEW_COLUMN_FIXED);
1647      gtk_tree_view_column_set_fixed_width (GTK_TREE_VIEW_COLUMN (column), 150);
1648      gtk_tree_view_append_column (treeview, column);
1649    
1650        /* column for options */
1651      renderer = gtk_cell_renderer_text_new ();
1652      column = gtk_tree_view_column_new_with_attributes (_("Options"),
1653                                                         renderer, "text",
1654                                                         VFS_COLUMN_OPTIONS, NULL);
1655      gtk_tree_view_column_set_sort_column_id (column, VFS_COLUMN_OPTIONS);
1656      gtk_tree_view_column_set_sizing (GTK_TREE_VIEW_COLUMN (column),
1657                                       GTK_TREE_VIEW_COLUMN_FIXED);
1658      gtk_tree_view_column_set_fixed_width (GTK_TREE_VIEW_COLUMN (column), 150);
1659      gtk_tree_view_append_column (treeview, column);
1660    }                                                                    
1661    
1662    
1663  void  void
1664  vfs_add_type (GtkWidget * w, gpointer data)  vfs_add_type (GtkWidget * w, gpointer data)
# Line 1899  gint find_mime_type(mime_type_to_skip_t* Line 2106  gint find_mime_type(mime_type_to_skip_t*
2106  {  {
2107    gchar* str1;    gchar* str1;
2108    gchar* str2;    gchar* str2;
2109                                                  
2110    str1 = el1->mime_type;    str1 = el1->mime_type;
2111    str2 = el2->mime_type;    str2 = el2->mime_type;
2112    
# Line 2172  ess_include_edit_button_clicked (GtkWidg Line 2379  ess_include_edit_button_clicked (GtkWidg
2379      ess_add_type (w, data);      ess_add_type (w, data);
2380  }  }
2381    
2382  // This function dumps the content of a glist into stdout.  //! This function dumps the content of a glist into stdout.
2383  void  void
2384  disp_glist(GList* glist)  disp_glist(GList* glist)
2385  {  {
# Line 2411  setup_ok_clicked (GtkWidget * w, gpointe Line 2618  setup_ok_clicked (GtkWidget * w, gpointe
2618    extensions_free (my_config->mime_extensions);    extensions_free (my_config->mime_extensions);
2619    vfs_extensions_free (my_config->mime_vfs_extensions);    vfs_extensions_free (my_config->mime_vfs_extensions);
2620    ei_free (my_config->mime_icons);    ei_free (my_config->mime_icons);
2621    //ess_free (my_config->mime_to_skip_during_a_scan);    //wk : to remove ess_free (my_config->mime_to_skip_during_a_scan);
2622    
2623    my_config->mime_extensions = local_extensions;    my_config->mime_extensions = local_extensions;
2624    my_config->mime_vfs_extensions = local_vfs_extensions;    my_config->mime_vfs_extensions = local_vfs_extensions;
2625    my_config->mime_icons = local_ei_extensions;    my_config->mime_icons = local_ei_extensions;
2626    //my_config->mime_to_skip_during_a_scan = local_ess_extensions;    //wk: to remove my_config->mime_to_skip_during_a_scan = local_ess_extensions;
2627    
2628    eip_split_default_pix (&(my_config->default_file_pix),    eip_split_default_pix (&(my_config->default_file_pix),
2629                           default_file_pix_string);                           default_file_pix_string);
# Line 3173  mime_types_to_skip_create_model (void) Line 3380  mime_types_to_skip_create_model (void)
3380    return GTK_TREE_MODEL (store);    return GTK_TREE_MODEL (store);
3381  }  }
3382    
3383  // Change the state in the treeView and in the Glist  //! Change the state in the treeView and in the Glist
 // wk: lwh  
3384  static void  static void
3385  mime_types_to_skip_state_toggled (GtkCellRendererToggle *cell,  mime_types_to_skip_state_toggled (GtkCellRendererToggle *cell,
3386                                    gchar                 *path_str,                                    gchar                 *path_str,
# Line 3256  mime_types_to_skip_add_columns (GtkTreeV Line 3462  mime_types_to_skip_add_columns (GtkTreeV
3462  }  }
3463    
3464    
3465    //! Important function. This one draws the whole content of the setup dialog GUI.
3466  void  void
3467  run_setup ()  run_setup ()
3468  {  {
# Line 4387  run_setup () Line 4593  run_setup ()
4593                                           (scrolled_window), main_box);                                           (scrolled_window), main_box);
4594    gtk_widget_show (main_box);    gtk_widget_show (main_box);
4595    
4596    /* The vfs plugin list */    /* setup box to associate vfs plugins to mimes */
4597    scrolled_window = gtk_scrolled_window_new (NULL, NULL);    model=vfs_create_model();
4598    gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),    vfs_include_list_box = gtk_tree_view_new_with_model (GTK_TREE_MODEL(model));
4599                                    GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);    gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (vfs_include_list_box), TRUE);
4600      gtk_tree_view_set_search_column (GTK_TREE_VIEW (vfs_include_list_box), VFS_COLUMN_FILE_TYPE);
4601    
4602      //g_object_unref (G_OBJECT (model));
4603    
4604      // show the clist
4605      // wk : changed scrolled_window -> main_box
4606      gtk_container_add (GTK_CONTAINER (main_box), vfs_include_list_box);
4607      vfs_add_columns(GTK_TREE_VIEW(vfs_include_list_box));
4608      gtk_widget_show (vfs_include_list_box);
4609    
4610    gtk_box_pack_start (GTK_BOX (main_box), scrolled_window, TRUE, TRUE, 0);    g_signal_connect (G_OBJECT (gtk_tree_view_get_selection((GtkTreeView*)vfs_include_list_box)),
4611    gtk_widget_show (scrolled_window);                      "changed",
4612                        GTK_SIGNAL_FUNC (vfs_selection_changed), model);
4613      
4614    
4615    /* setup box to associate vfs plugins to mimes */    // wk: lwh
4616    vfs_include_list_box = gtk_clist_new_with_titles (4, titles);    //vfs_include_list_box = gtk_clist_new_with_titles (4, titles);
4617    g_signal_connect (GTK_OBJECT (vfs_include_list_box),    //g_signal_connect (GTK_OBJECT (vfs_include_list_box),
4618                        "select_row",    //                  "select_row",
4619                        GTK_SIGNAL_FUNC (vfs_include_selection_made), NULL);   //                   GTK_SIGNAL_FUNC (vfs_include_selection_made), NULL);
4620    g_signal_connect (GTK_OBJECT (vfs_include_list_box), "unselect_row",    //g_signal_connect (GTK_OBJECT (vfs_include_list_box), "unselect_row",
4621                        GTK_SIGNAL_FUNC (vfs_include_unselection_made), NULL);  //                    GTK_SIGNAL_FUNC (vfs_include_unselection_made), NULL);
4622    
4623    gtk_clist_set_shadow_type (GTK_CLIST (vfs_include_list_box),    //gtk_clist_set_shadow_type (GTK_CLIST (vfs_include_list_box),
4624                               GTK_SHADOW_OUT);  //                           GTK_SHADOW_OUT);
4625    
4626    gtk_clist_set_column_justification (GTK_CLIST    //gtk_clist_set_column_justification (GTK_CLIST
4627                                        (vfs_include_list_box), 0,  //                                    (vfs_include_list_box), 0,
4628                                        GTK_JUSTIFY_CENTER);  //                                    GTK_JUSTIFY_CENTER);
4629    
4630    gtk_clist_set_compare_func (GTK_CLIST (vfs_include_list_box),    //gtk_clist_set_compare_func (GTK_CLIST (vfs_include_list_box),
4631                                _clist_g_strcasecmp);  //                            _clist_g_strcasecmp);
4632    
4633    gtk_clist_set_sort_column (GTK_CLIST (vfs_include_list_box), 1);    //gtk_clist_set_sort_column (GTK_CLIST (vfs_include_list_box), 1);
4634    gtk_clist_set_sort_type (GTK_CLIST (vfs_include_list_box),    //gtk_clist_set_sort_type (GTK_CLIST (vfs_include_list_box),
4635                             GTK_SORT_ASCENDING);  //                         GTK_SORT_ASCENDING);
4636    
4637    /* fill the clist */    /* fill the clist */
4638    g_tree_traverse (local_vfs_extensions, vfs_extensions_traverse, G_PRE_ORDER,    //g_tree_traverse (local_vfs_extensions, vfs_extensions_traverse, G_PRE_ORDER,
4639                     NULL);  //                 NULL);
4640    
4641    /* show the clist */    /* show the clist */
4642    gtk_container_add (GTK_CONTAINER (scrolled_window), vfs_include_list_box);    //gtk_container_add (GTK_CONTAINER (scrolled_window), vfs_include_list_box);
4643    gtk_widget_show (vfs_include_list_box);    //gtk_widget_show (vfs_include_list_box);
4644    gtk_clist_sort (GTK_CLIST (vfs_include_list_box));    //gtk_clist_sort (GTK_CLIST (vfs_include_list_box));
4645    gtk_clist_columns_autosize (GTK_CLIST (vfs_include_list_box));    //gtk_clist_columns_autosize (GTK_CLIST (vfs_include_list_box));
4646    
4647    hbox = gtk_hbutton_box_new ();    hbox = gtk_hbutton_box_new ();
4648    gtk_button_box_set_layout (GTK_BUTTON_BOX (hbox), GTK_BUTTONBOX_END);    gtk_button_box_set_layout (GTK_BUTTON_BOX (hbox), GTK_BUTTONBOX_END);

Legend:
Removed from v.1.25  
changed lines
  Added in v.1.26

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26