Support razor 0.5 (atomic transactions).
Don't create repositories with multiple roots.
Filter out "other" arches from yum repositories.
Mark win32 binaries as needing elevated privileges.
2 * Copyright (C) 2010 J. Ali Harlow <ali@juiblex.co.uk>
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License along
15 * with this program; if not, write to the Free Software Foundation, Inc.,
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
23 #include <plover-gtk/package.h>
24 #include <plover-gtk/packageset.h>
25 #include <plover-gtk/packagestore.h>
26 #include <plover-gtk/packagefilestore.h>
27 #include "app-manager.h"
29 GtkTreeView *view=NULL;
30 PloverPackage *active=NULL;
31 gboolean view_files=FALSE;
33 void package_present(PloverPackage *package)
39 buf=GTK_TEXT_BUFFER(gtk_builder_get_object(ui,"description"));
42 s=g_strdup(plover_package_get_description(package));
43 g_strdelimit(s,"\t\n",' ');
47 gtk_text_buffer_set_text(buf,s,-1);
49 w=GTK_WIDGET(gtk_builder_get_object(ui,"PackageDetails"));
53 w=GTK_WIDGET(gtk_builder_get_object(ui,"FilesScrolledWindow"));
55 w=GTK_WIDGET(gtk_builder_get_object(ui,"DescriptionScrolledWindow"));
65 w=GTK_WIDGET(gtk_builder_get_object(ui,"HomepageBox"));
66 text=plover_package_get_URL(package);
72 w=GTK_WIDGET(gtk_builder_get_object(ui,"Homepage"));
73 gtk_link_button_set_uri(GTK_LINK_BUTTON(w),text);
78 s=g_strndup(t,strcspn(t,"/"));
81 gtk_button_set_label(GTK_BUTTON(w),s);
84 w=GTK_WIDGET(gtk_builder_get_object(ui,"Architecture"));
85 gtk_label_set_text(GTK_LABEL(w),plover_package_get_arch(package));
86 w=GTK_WIDGET(gtk_builder_get_object(ui,"License"));
87 gtk_label_set_text(GTK_LABEL(w),
88 plover_package_get_license(package));
90 w=GTK_WIDGET(gtk_builder_get_object(ui,"FilesScrolledWindow"));
95 w=GTK_WIDGET(gtk_builder_get_object(ui,"DescriptionScrolledWindow"));
99 w=GTK_WIDGET(gtk_builder_get_object(ui,"Files"));
100 gtk_tree_view_set_model(GTK_TREE_VIEW(w),
101 GTK_TREE_MODEL(plover_package_get_file_store(package)));
106 /* Without this, Gtk+ 2.18.6 just truncates long license tags */
107 w=GTK_WIDGET(gtk_builder_get_object(ui,"DetailsScrolledWindow"));
108 gtk_widget_queue_resize(w);
113 void package_filelist_present(PloverPackage *package)
117 static void package_selection_changed(GtkTreeSelection *selection)
123 g_object_unref(active);
124 if (gtk_tree_selection_get_selected(selection,NULL,&iter))
126 view=gtk_tree_selection_get_tree_view(selection);
127 model=gtk_tree_view_get_model(view);
128 gtk_tree_model_get(model,&iter,PLOVER_PACKAGE_STORE_OBJ_COLUMN,&active,
133 package_present(active);
136 static void package_activated(GtkTreeView *view,GtkTreePath *path,
137 GtkTreeViewColumn *column,gpointer data)
140 GtkTreeModel *model=gtk_tree_view_get_model(view);
141 PloverPackage *package;
142 if (gtk_tree_model_get_iter(model,&iter,path))
144 gtk_tree_model_get(model,&iter,PLOVER_PACKAGE_STORE_OBJ_COLUMN,&package,
146 package_filelist_present(package);
150 static void package_cell_data_func(GtkTreeViewColumn *column,
151 GtkCellRenderer *cell,GtkTreeModel *model,GtkTreeIter *iter,gpointer data)
154 gchar *summary,*name,*version;
155 g_return_if_fail(GTK_IS_TREE_MODEL(model));
156 gtk_tree_model_get(model,iter,PLOVER_PACKAGE_STORE_SUMMARY_COLUMN,&summary,
157 PLOVER_PACKAGE_STORE_NAME_COLUMN,&name,
158 PLOVER_PACKAGE_STORE_VERSION_COLUMN,&version,-1);
159 markup=g_markup_printf_escaped("<b>%s</b>\n%s %s",summary,name,version);
163 g_object_set(cell,"markup",markup,NULL);
167 void set_package_model(GtkTreeModel *model)
170 GtkTreeViewColumn *column;
171 GtkCellRenderer *renderer;
172 GtkTreeSelection *selection;
175 w=GTK_WIDGET(gtk_builder_get_object(ui,"Packages"));
178 view=GTK_TREE_VIEW(w);
180 column=gtk_tree_view_column_new_with_attributes("Icon",
181 gtk_cell_renderer_pixbuf_new(),"pixbuf",
182 PLOVER_PACKAGE_FILE_STORE_ICON_COLUMN,NULL);
183 gtk_tree_view_append_column(GTK_TREE_VIEW(w),column);
185 column=gtk_tree_view_column_new();
186 gtk_tree_view_column_set_title(column,"Summary");
187 renderer=gtk_cell_renderer_text_new();
188 gtk_tree_view_column_pack_start(column,renderer,FALSE);
189 gtk_tree_view_column_set_cell_data_func(column,renderer,
190 package_cell_data_func,NULL,NULL);
191 gtk_tree_view_append_column(view,column);
192 gtk_widget_show_all(w);
193 gtk_tree_view_set_headers_visible(view,FALSE);
194 w=GTK_WIDGET(gtk_builder_get_object(ui,"SearchEntry"));
195 gtk_tree_view_set_search_entry(view,GTK_ENTRY(w));
196 selection=gtk_tree_view_get_selection(view);
197 g_signal_connect(selection,"changed",
198 G_CALLBACK(package_selection_changed),NULL);
199 g_signal_connect(view,"row-activated",G_CALLBACK(package_activated),
203 g_warning("Packages: no such widget in UI");
204 w=GTK_WIDGET(gtk_builder_get_object(ui,"Files"));
207 column=gtk_tree_view_column_new_with_attributes("Name",
208 gtk_cell_renderer_text_new(),"text",
209 PLOVER_PACKAGE_FILE_STORE_NAME_COLUMN,NULL);
210 gtk_tree_view_append_column(GTK_TREE_VIEW(w),column);
211 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(w),FALSE);
212 gtk_widget_show_all(w);
215 g_warning("Files: no such widget in UI");
219 gtk_tree_view_set_model(view,model);
220 gtk_tree_view_set_search_column(view,
221 PLOVER_PACKAGE_STORE_NAME_COLUMN);
223 package_present(NULL);
226 PloverPackage *get_active_package(void)
232 on_view_files_toggled(GtkCheckMenuItem *menuitem,gpointer data)
234 view_files=gtk_check_menu_item_get_active(menuitem);
235 package_present(active);
239 on_view_details_toggled(GtkCheckMenuItem *menuitem,gpointer data)