rpms/logjam/F-9 logjam-4.5.3-keep-drafts.patch, NONE, 1.1 logjam-4.5.3-lj-embed.patch, NONE, 1.1 logjam-4.5.3-save-tags.diff, NONE, 1.1 logjam.spec, 1.48, 1.49

Tom Callaway spot at fedoraproject.org
Mon Apr 27 17:27:49 UTC 2009


Author: spot

Update of /cvs/extras/rpms/logjam/F-9
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv22648/F-9

Modified Files:
	logjam.spec 
Added Files:
	logjam-4.5.3-keep-drafts.patch logjam-4.5.3-lj-embed.patch 
	logjam-4.5.3-save-tags.diff 
Log Message:
update logjam with new features, bugfixes

logjam-4.5.3-keep-drafts.patch:

--- NEW FILE logjam-4.5.3-keep-drafts.patch ---
diff -up logjam-4.5.3/src/conf.h.keep_drafts logjam-4.5.3/src/conf.h
--- logjam-4.5.3/src/conf.h.keep_drafts	2009-04-02 13:06:49.000000000 -0400
+++ logjam-4.5.3/src/conf.h	2009-04-02 13:08:45.000000000 -0400
@@ -62,6 +62,7 @@ typedef struct {
 	gboolean showloginhistory;
 	gboolean showmeta[JAM_VIEW_META_COUNT];
 	gboolean start_in_dock;
+	gboolean keepsaveddrafts;
 #endif /* HAVE_GTK */
 } Options;
 
diff -up logjam-4.5.3/src/conf_xml.c.keep_drafts logjam-4.5.3/src/conf_xml.c
--- logjam-4.5.3/src/conf_xml.c.keep_drafts	2009-04-02 13:06:49.000000000 -0400
+++ logjam-4.5.3/src/conf_xml.c	2009-04-02 13:08:15.000000000 -0400
@@ -181,6 +181,7 @@ parseoptions(Configuration *c, xmlDocPtr
 #endif
 		READOPTION(revertusejournal)
 		READOPTION(autosave)
+		READOPTION(keepsaveddrafts)
 		READOPTION(cfautostart)
 		READOPTION(cfusemask)
 		READOPTION(close_when_send)
@@ -326,6 +327,7 @@ writeoptions(Options *options, xmlNodePt
 #endif
 	WRITEOPTION(revertusejournal);
 	WRITEOPTION(autosave);
+	WRITEOPTION(keepsaveddrafts);
 	WRITEOPTION(cfautostart);
 	WRITEOPTION(cfusemask);
 	WRITEOPTION(close_when_send);
diff -up logjam-4.5.3/src/jam.c.keep_drafts logjam-4.5.3/src/jam.c
--- logjam-4.5.3/src/jam.c.keep_drafts	2009-04-02 13:06:49.000000000 -0400
+++ logjam-4.5.3/src/jam.c	2009-04-02 13:06:49.000000000 -0400
@@ -340,7 +340,7 @@ jam_submit_entry(JamWin *jw) {
 	ctx = net_ctx_gtk_new(GTK_WINDOW(jw), NULL);
 	if (jam_host_do_post(jam_account_get_host(acc), ctx, jw->doc, NULL)) {
 		gint type = jam_doc_get_entry_type(jw->doc);
-		if (type == ENTRY_DRAFT) {
+		if (type == ENTRY_DRAFT && !conf.options.keepsaveddrafts) {
 			if (jam_confirm(GTK_WINDOW(jw),
 					_("Delete"), _("Delete this draft from disk?")))
 				delete_draft(jw);
diff -up logjam-4.5.3/src/settings.c.keep_drafts logjam-4.5.3/src/settings.c
--- logjam-4.5.3/src/settings.c.keep_drafts	2009-04-02 13:06:49.000000000 -0400
+++ logjam-4.5.3/src/settings.c	2009-04-02 13:06:49.000000000 -0400
@@ -74,6 +74,10 @@ static SettingsWidget settingswidgets[] 
 
 	{ "ui_allowmultipleinstances", &conf.options.allowmultipleinstances,
 		SW_TOGGLE, N_("Allow multiple _instances of LogJam to run simultaneously") },
+	
+	{ "ui_keepsaveddrafts", &conf.options.keepsaveddrafts, 
+		SW_TOGGLE, N_("_Keep saved drafts after posting") },
+	
 #ifdef HAVE_GTKSPELL
 	{ "ui_spellcheck", &conf.options.usespellcheck, 
 		SW_TOGGLE, N_("_Use spell check") },
@@ -409,6 +413,8 @@ uisettings(JamWin *jw) {
 	gtk_box_pack_start(GTK_BOX(vbox), entry, FALSE, FALSE, 0);
 
 	groupedbox_pack(GROUPEDBOX(entry), sw_make("ui_autosave"), FALSE);
+	
+	groupedbox_pack(GROUPEDBOX(entry), sw_make("ui_keepsaveddrafts"), FALSE);
 
 #ifdef HAVE_GTKSPELL
 	{

logjam-4.5.3-lj-embed.patch:

--- NEW FILE logjam-4.5.3-lj-embed.patch ---
diff -up logjam-4.5.3/src/menu.c.lj-embed logjam-4.5.3/src/menu.c
--- logjam-4.5.3/src/menu.c.lj-embed	2009-04-27 11:21:06.000000000 -0400
+++ logjam-4.5.3/src/menu.c	2009-04-27 11:21:06.000000000 -0400
@@ -274,6 +274,12 @@ static void
 menu_ljcut(JamWin *jw) {
 	tools_ljcut(GTK_WINDOW(jw), jw->doc);
 }
+
+static void
+menu_embedded_media(JamWin *jw) {
+	tools_embedded_media(GTK_WINDOW(jw), jw->doc);
+}
+
 static void
 menu_validate_xml(JamWin *jw) {
 	tools_validate_xml(GTK_WINDOW(jw), jw->doc);
@@ -415,6 +421,7 @@ static GtkItemFactoryEntry menu_items[] 
 { N_("/Insert/_Image..."),        NULL,          menu_insert_image },
 { N_("/Insert/_Journal Link..."), "<ctl><alt>L", menu_make_journal_link },
 { N_("/Insert/lj-_cut..."),       "<ctl><alt>X", menu_ljcut, 0, NULL },
+{ N_("/Insert/_Embedded Media..."), "<ctl><alt>E", menu_embedded_media },
 
 { N_("/_View"),                   NULL, NULL, ACTION_VIEW, "<Branch>" },
 { N_("/View/_Security"),          NULL, menu_view_cb, ACTION_VIEW_SECURITY,     "<CheckItem>" },
diff -up logjam-4.5.3/src/tools.c.lj-embed logjam-4.5.3/src/tools.c
--- logjam-4.5.3/src/tools.c.lj-embed	2009-04-27 11:21:06.000000000 -0400
+++ logjam-4.5.3/src/tools.c	2009-04-27 12:24:39.000000000 -0400
@@ -322,6 +322,65 @@ tools_validate_xml(GtkWindow *win, JamDo
 	g_free(str);
 }
 
+/* FIXME: These two functions are practically identical. Abstract them to minimize code duplication. */
+
+void
+tools_embedded_media(GtkWindow *win, JamDoc *doc) {
+	GtkTextBuffer *buffer, *new_buffer;
+	GtkWidget *dlg, *vbox, *hbox, *label, *entry;
+	gchar *text;
+	GtkTextIter start;
+	GtkTextIter end;
+
+	dlg = gtk_dialog_new_with_buttons(_("Embedded Media"), win,
+			GTK_DIALOG_MODAL,
+			GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+			GTK_STOCK_OK,     GTK_RESPONSE_OK,
+			NULL);
+	gtk_dialog_set_default_response(GTK_DIALOG(dlg), GTK_RESPONSE_OK);
+	gtk_window_set_default_size (GTK_WINDOW (dlg), 450, 140);
+
+	vbox = gtk_vbox_new(FALSE, 2);
+	gtk_container_set_border_width(GTK_CONTAINER(vbox), 10);
+
+	entry = gtk_text_view_new();
+	gtk_text_view_set_wrap_mode(entry, TRUE);
+	//gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE);
+	hbox = labelled_box_new(_("E_mbedded code:"), entry);
+	gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0);
+
+	label = gtk_label_new(NULL);
+	gtk_label_set_markup(GTK_LABEL(label),
+			_("<small>This is where you paste the embedded code, e.g. for a YouTube video.</small>"));
+	gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
+
+	jam_dialog_set_contents(GTK_DIALOG(dlg), vbox);
+
+	if (gtk_dialog_run(GTK_DIALOG(dlg)) != GTK_RESPONSE_OK) {
+		gtk_widget_destroy(dlg);
+		return;
+	}
+	buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(entry));
+	gtk_text_buffer_get_start_iter (buffer, &start);
+	gtk_text_buffer_get_end_iter (buffer, &end);
+	text = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
+	gtk_widget_destroy(dlg);
+	if (text[0] == 0) {
+		g_free(text);
+		text = NULL;
+	}
+	//xml_escape(&text);
+	new_buffer = jam_doc_get_text_buffer(doc);
+	
+	gtk_text_buffer_begin_user_action(new_buffer); /* start undo action */
+	gtk_text_buffer_insert_at_cursor(new_buffer, "<lj-embed>", -1);
+	gtk_text_buffer_insert_at_cursor(new_buffer, text, -1);
+	gtk_text_buffer_insert_at_cursor(new_buffer, "</lj-embed>", -1);
+	g_free(text);
+
+	gtk_text_buffer_end_user_action(new_buffer);
+}
+
 void
 tools_ljcut(GtkWindow *win, JamDoc *doc) {
 	GtkTextBuffer *buffer;
diff -up logjam-4.5.3/src/tools.h.lj-embed logjam-4.5.3/src/tools.h
--- logjam-4.5.3/src/tools.h.lj-embed	2005-02-21 12:46:10.000000000 -0500
+++ logjam-4.5.3/src/tools.h	2009-04-27 11:21:06.000000000 -0400
@@ -16,5 +16,6 @@ void tools_insert_command_output
                             (GtkWindow *win, JamDoc *doc);
 void tools_validate_xml     (GtkWindow *win, JamDoc *doc);
 void tools_ljcut            (GtkWindow *win, JamDoc *doc);
+void tools_embedded_media   (GtkWindow *win, JamDoc *doc);
 
 #endif /* tools_h */

logjam-4.5.3-save-tags.diff:

--- NEW FILE logjam-4.5.3-save-tags.diff ---
diff -up logjam-4.5.3/src/jamview.c.save logjam-4.5.3/src/jamview.c
--- logjam-4.5.3/src/jamview.c.save	2009-04-26 10:26:39.000000000 +0300
+++ logjam-4.5.3/src/jamview.c	2009-04-26 10:28:00.000000000 +0300
@@ -418,7 +424,8 @@ tags_select_cb(JamView *view) {
 
   tags = tags_dialog(toplevel,
 		     JAM_ACCOUNT_LJ(view->account), 
-		     jam_doc_get_usejournal(view->doc));
+		     jam_doc_get_usejournal(view->doc),
+		     (gchar *) gtk_entry_get_text(GTK_ENTRY(view->tags)));
 
   if (tags) {
       gtk_entry_set_text(GTK_ENTRY(view->tags), tags);
diff -up logjam-4.5.3/src/tags.c.save logjam-4.5.3/src/tags.c
--- logjam-4.5.3/src/tags.c.save	2009-04-26 10:05:38.000000000 +0300
+++ logjam-4.5.3/src/tags.c	2009-04-26 15:15:13.000000000 +0300
@@ -78,8 +78,23 @@ create_tag_string (GtkTreeModel *model,
   return FALSE;
 }
 
+static void
+tags_set_fg(GtkTreeViewColumn *column, GtkCellRenderer *cell,
+	    GtkTreeModel *model, GtkTreeIter *iter, gpointer data)
+{
+  GSList *prev = (GSList *) data;
+  gchar *text;
+
+  gtk_tree_model_get(model, iter, 1, &text, -1);
+  if (prev && g_slist_find_custom(prev, text, g_utf8_collate))
+    g_object_set(G_OBJECT(cell), "foreground", "Red", NULL);
+  else
+    g_object_set(G_OBJECT(cell), "foreground", "Black", NULL);
+  g_free(text);
+}
+
 GtkWidget* 
-taglist_create (GSList *l)
+taglist_create (GSList *l, GSList **head)
 {
   GtkWidget *treeview;
   GtkListStore *store;
@@ -87,20 +102,37 @@ taglist_create (GSList *l)
   GtkCellRenderer *renderer;
   GtkTreeViewColumn *column;
   guint i;
+  GSList *prev = *head, *p;
 
   /* create model */
   store = gtk_list_store_new (2, G_TYPE_BOOLEAN, G_TYPE_STRING);
   for (i = 0; i < g_slist_length (l); i++)
     {
       LJTag *t = (LJTag *) g_slist_nth_data (l, i);
+      gboolean check = FALSE;
 
+      if (prev && (p = g_slist_find_custom(prev, t->tag, g_utf8_collate)) != NULL) {
+        check = TRUE;
+        prev = g_slist_remove_link(prev, p);
+        g_free(p->data);
+        g_slist_free1(p);
+      }
       gtk_list_store_append (store, &iter);
       gtk_list_store_set (store, &iter,
-			  0, FALSE,
+			  0, check,
 			  1, t->tag,
 			  -1);
     }
 
+  /* rest of the typed tags */
+  for (p = prev; p; p = g_slist_next(p)) {
+    gtk_list_store_append(store, &iter);
+    gtk_list_store_set(store, &iter,
+      		  0, TRUE,
+      		  1, p->data,
+      		  -1);
+  }
+
   /* create treeview */
   treeview = gtk_tree_view_new_with_model (GTK_TREE_MODEL (store));
   gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (treeview), TRUE);
@@ -120,20 +152,44 @@ taglist_create (GSList *l)
   column = gtk_tree_view_column_new_with_attributes (_("Tag name"), 
 						     renderer, "text", 1,
 						     NULL);
+
+  gtk_tree_view_column_set_cell_data_func(column, renderer, tags_set_fg,
+					  prev, NULL);
+
   gtk_tree_view_column_set_sort_column_id (column, 1);
   gtk_tree_view_append_column (treeview, column);
  
+  /* update head of the prev list */
+  *head = prev;
   g_object_unref (store);
 
   return treeview;
 }
 
+static GSList *
+tags_split(gchar *typed) {
+  GSList *head = NULL;
+  gchar **result, **p;
+
+  if (typed == NULL || *typed == '\0')
+    return NULL;
+
+  for (p = result = g_strsplit(typed, ",", 0); *p; p++) {
+    gchar *token = g_strstrip(*p);
+    if (*token)
+      head = g_slist_prepend(head, g_utf8_strdown(token, -1));
+  }
+  g_strfreev(result);
+  return head;
+}
+
 gchar* 
-tags_dialog (GtkWidget *win, JamAccountLJ *acc, gchar *journal)
+tags_dialog (GtkWidget *win, JamAccountLJ *acc, gchar *journal, gchar *typed)
 {
   GtkWidget *dlg, *sw, *tv;
   GSList *list = NULL;
   gchar *taglist = NULL;
+  GSList *prev;
 
   if (acc == NULL) return NULL;
 
@@ -156,7 +212,8 @@ tags_dialog (GtkWidget *win, JamAccountL
 				  GTK_POLICY_AUTOMATIC);
   gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), sw, TRUE, TRUE, 0);
 
-  tv = taglist_create (list);
+  prev = tags_split(typed);
+  tv = taglist_create (list, &prev);
   gtk_container_add (GTK_CONTAINER (sw), tv);
 
   gtk_window_resize(dlg, 60, 210);
@@ -177,5 +234,14 @@ tags_dialog (GtkWidget *win, JamAccountL
 
   gtk_widget_destroy (dlg);
   
+  /* free rest of prev list */
+  if (prev) {
+    GSList *p;
+    for (p = prev; p; p = g_slist_next(p)) {
+      g_free(p->data);
+    }
+    g_slist_free(prev);
+  }
+
   return taglist;
 }
diff -up logjam-4.5.3/src/tags.h.save logjam-4.5.3/src/tags.h
--- logjam-4.5.3/src/tags.h.save	2009-04-26 10:22:25.000000000 +0300
+++ logjam-4.5.3/src/tags.h	2009-04-26 10:22:03.000000000 +0300
@@ -1,6 +1,6 @@
 #ifndef _TAGS_H_
 #define _TAGS_H_
 
-gchar* tags_dialog (GtkWidget *win, JamAccountLJ *acc, gchar *journal);
+gchar* tags_dialog (GtkWidget *win, JamAccountLJ *acc, gchar *journal, gchar *typed);
 
 #endif /* _TAGS_H_ */


Index: logjam.spec
===================================================================
RCS file: /cvs/extras/rpms/logjam/F-9/logjam.spec,v
retrieving revision 1.48
retrieving revision 1.49
diff -u -r1.48 -r1.49
--- logjam.spec	28 Jul 2008 18:45:42 -0000	1.48
+++ logjam.spec	27 Apr 2009 17:27:19 -0000	1.49
@@ -2,7 +2,7 @@
 
 Name:		logjam
 Version:	4.5.3
-Release:	25%{?dist}
+Release:	29%{?dist}
 Epoch:		1
 Summary:	GTK2 client for LiveJournal
 License:	GPLv2+
@@ -16,7 +16,8 @@
 BuildRequires:	curl-devel, gtk2-devel, gtkspell-devel, gtkhtml3-devel
 BuildRequires:	gettext, desktop-file-utils, aspell-devel, librsvg2-devel
 BuildRequires:	libsoup-devel, sqlite-devel, gnutls-devel, libgcrypt-devel
-BuildRequires:	autoconf, automake, libtool, intltool, popt-devel
+BuildRequires:	autoconf, automake, libtool, intltool, popt-devel, m4
+BuildRequires:	dbus-devel
 Obsoletes:	loserjabber, logjam-gnome
 BuildRoot:	%{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 Patch2:		logjam-4.4.1-backdated.patch
@@ -39,6 +40,11 @@
 Patch19:	logjam-4.5.3-close_when_send.patch
 Patch20:	logjam-4.5.3-imageresize.patch
 Patch21:	logjam-4.5.3-showloginhistory.patch
+Patch22:	logjam-4.5.3-libtool.patch
+Patch23:	logjam-4.5.3-keep-drafts.patch
+Patch24:	logjam-4.5.3-lj-embed.patch
+Patch25:	logjam-4.5.3-mpris.diff
+Patch26:	logjam-4.5.3-save-tags.diff
 
 %description
 This is the new GTK2 client for LiveJournal (http://www.livejournal.com).
@@ -77,6 +83,16 @@
 %patch19 -p1 -b .close_when_send
 %patch20 -p1 -b .imageresize
 %patch21 -p1 -b .showloginhistory
+%patch22 -p1 -b .libtool
+%patch23 -p1 -b .keep_drafts
+%patch24 -p1 -b .lj-embed
+%patch25 -p1 -b .mpris
+%patch26 -p1 -b .save-tags
+
+libtoolize
+rm -rf aclocal.m4
+autoupdate
+intltoolize --force
 
 %build
 touch NEWS README AUTHORS
@@ -121,6 +137,22 @@
 rm -rf $RPM_BUILD_ROOT
 
 %changelog
+* Mon Apr 27 2009 Tom "spot" Callaway <tcallawa at redhat.com> - 4.5.3-29
+- add support for lj-embed tags
+- add support for MPRIS music detection (Andy Shevchenko)
+- improve tag handling (Andy Shevchenko)
+
+* Thu Apr  2 2009 Tom "spot" Callaway <tcallawa at redhat.com> - 4.5.3-28
+- add patch to enable "keep drafts" functionality
+  see: http://community.livejournal.com/logjam_dev/37274.html
+
+* Wed Feb 25 2009 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 1:4.5.3-27
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
+
+* Mon Feb 16 2009 Tom "spot" Callaway <tcallawa at redhat.com> - 4.5.3-26
+- libtoolize to support newer libtool
+- intltoolize so we get translations
+
 * Mon Jul 28 2008 Tom "spot" Callaway <tcallawa at redhat.com> - 4.5.3-25
 - fix docked behavior again (bz 447146)
 - fix config option to start in dock again (bz 445998)




More information about the scm-commits mailing list