[PD-cvs] externals/miXed/shared/hammer file.c,1.4,1.5 file.h,1.3,1.4

Krzysztof Czaja krzyszcz at users.sourceforge.net
Mon Feb 28 14:10:43 CET 2005


Update of /cvsroot/pure-data/externals/miXed/shared/hammer
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1442/shared/hammer

Modified Files:
	file.c file.h 
Log Message:
cyclone alpha53 (see notes.txt for cyclone, bin and shared)

Index: file.c
===================================================================
RCS file: /cvsroot/pure-data/externals/miXed/shared/hammer/file.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** file.c	27 Jan 2005 14:42:54 -0000	1.4
--- file.c	28 Feb 2005 13:10:40 -0000	1.5
***************
*** 59,67 ****
  }
  
- /* FIXME somehow plug the "save changes" dialog into close-by-wm */
- /* FIXME dirty condition */
  static void hammereditor_guidefs(void)
  {
!     sys_gui("proc hammereditor_open {name geometry title} {\n");
      sys_gui(" if {[winfo exists $name]} {\n");
      sys_gui("  $name.text delete 1.0 end\n");
--- 59,65 ----
  }
  
  static void hammereditor_guidefs(void)
  {
!     sys_gui("proc hammereditor_open {name geometry title sendable} {\n");
      sys_gui(" if {[winfo exists $name]} {\n");
      sys_gui("  $name.text delete 1.0 end\n");
***************
*** 70,73 ****
--- 68,76 ----
      sys_gui("  wm title $name $title\n");
      sys_gui("  wm geometry $name $geometry\n");
+     sys_gui("  if {$sendable} {\n");
+     sys_gui("   wm protocol $name WM_DELETE_WINDOW \\\n");
+     sys_gui("    [concat hammereditor_close $name 1]\n");
+     sys_gui("   bind $name <<Modified>> \"hammereditor_dodirty $name\"\n");
+     sys_gui("  }\n");
      sys_gui("  text $name.text -relief raised -bd 2 \\\n");
      sys_gui("   -font -*-courier-medium--normal--12-* \\\n");
***************
*** 79,82 ****
--- 82,102 ----
      sys_gui("}\n");
  
+     sys_gui("proc hammereditor_dodirty {name} {\n");
+     sys_gui(" if {[catch {$name.text edit modified} dirty]} {set dirty 0}\n");
+     sys_gui(" set title [wm title $name]\n");
+     sys_gui(" set dt [string equal -length 1 $title \"*\"]\n");
+     sys_gui(" if {$dirty} {\n");
+     sys_gui("  if {$dt == 0} {wm title $name *$title}\n");
+     sys_gui(" } else {\n");
+     sys_gui("  if {$dt} {wm title $name [string range $title 1 end]}\n");
+     sys_gui(" }\n");
+     sys_gui("}\n");
+ 
+     sys_gui("proc hammereditor_setdirty {name flag} {\n");
+     sys_gui(" if {[winfo exists $name]} {\n");
+     sys_gui("  catch {$name.text edit modified $flag}\n");
+     sys_gui(" }\n");
+     sys_gui("}\n");
+ 
      sys_gui("proc hammereditor_doclose {name} {\n");
      sys_gui(" destroy $name\n");
***************
*** 92,99 ****
      sys_gui("proc hammereditor_send {name} {\n");
      sys_gui(" if {[winfo exists $name]} {\n");
-     sys_gui("  set ii [$name.text index [concat end - 1 lines]]\n");
      sys_gui("  pd [concat miXed$name clear \\;]\n");
      sys_gui("  for {set i 1} \\\n");
!     sys_gui("   {[$name.text compare $i.end < $ii]} \\\n");
      sys_gui("  	{incr i 1} {\n");
      sys_gui("   set lin [$name.text get $i.0 $i.end]\n");
--- 112,118 ----
      sys_gui("proc hammereditor_send {name} {\n");
      sys_gui(" if {[winfo exists $name]} {\n");
      sys_gui("  pd [concat miXed$name clear \\;]\n");
      sys_gui("  for {set i 1} \\\n");
!     sys_gui("   {[$name.text compare $i.end < end]} \\\n");
      sys_gui("  	{incr i 1} {\n");
      sys_gui("   set lin [$name.text get $i.0 $i.end]\n");
***************
*** 111,117 ****
      sys_gui("proc hammereditor_close {name ask} {\n");
      sys_gui(" if {[winfo exists $name]} {\n");
!     sys_gui("  set dirty $ask\n");  /* FIXME */
!     sys_gui("  if {$dirty == 0} {hammereditor_doclose $name} else {\n");
      sys_gui("   set title [wm title $name]\n");
      sys_gui("   set answer [tk_messageBox \\-type yesnocancel \\\n");
      sys_gui("    \\-icon question \\\n");
--- 130,139 ----
      sys_gui("proc hammereditor_close {name ask} {\n");
      sys_gui(" if {[winfo exists $name]} {\n");
!     sys_gui("  if {[catch {$name.text edit modified} dirty]} {set dirty 0}\n");
!     sys_gui("  if {$ask && $dirty} {\n");
      sys_gui("   set title [wm title $name]\n");
+     sys_gui("   if {[string equal -length 1 $title \"*\"]} {\n");
+     sys_gui("    set title [string range $title 1 end]\n");
+     sys_gui("   }\n");
      sys_gui("   set answer [tk_messageBox \\-type yesnocancel \\\n");
      sys_gui("    \\-icon question \\\n");
***************
*** 119,146 ****
      sys_gui("   if {$answer == \"yes\"} {hammereditor_send $name}\n");
      sys_gui("   if {$answer != \"cancel\"} {hammereditor_doclose $name}\n");
!     sys_gui("  }\n");
      sys_gui(" }\n");
      sys_gui("}\n");
  }
  
! void hammereditor_open(t_hammerfile *f, char *title)
  {
!     if (!title) title = class_getname(*f->f_master);
!     sys_vgui("hammereditor_open .%x %dx%d {%s}\n", (int)f, 600, 340, title);
  }
  
  static void hammereditor_tick(t_hammerfile *f)
  {
!     sys_vgui("hammereditor_close .%x %d\n", (int)f, 1);
  }
  
  void hammereditor_close(t_hammerfile *f, int ask)
  {
!     if (ask)
  	/* hack: deferring modal dialog creation in order to allow for
  	   a message box redraw to happen -- LATER investigate */
   	clock_delay(f->f_editorclock, 0);
      else
! 	sys_vgui("hammereditor_close .%x %d\n", (int)f, 0);
  }
  
--- 141,183 ----
      sys_gui("   if {$answer == \"yes\"} {hammereditor_send $name}\n");
      sys_gui("   if {$answer != \"cancel\"} {hammereditor_doclose $name}\n");
!     sys_gui("  } else {hammereditor_doclose $name}\n");
      sys_gui(" }\n");
      sys_gui("}\n");
  }
  
! /* null owner defaults to class name, pass "" to supress */
! void hammereditor_open(t_hammerfile *f, char *title, char *owner)
  {
!     if (!owner)
! 	owner = class_getname(*f->f_master);
!     if (!*owner)
! 	owner = 0;
!     if (!title)
!     {
! 	title = owner;
! 	owner = 0;
!     }
!     if (owner)
! 	sys_vgui("hammereditor_open .%x %dx%d {%s: %s} %d\n",
! 		 (int)f, 600, 340, owner, title, (f->f_editorfn != 0));
!     else
! 	sys_vgui("hammereditor_open .%x %dx%d {%s} %d\n",
! 		 (int)f, 600, 340, (title ? title : "Untitled"),
! 		 (f->f_editorfn != 0));
  }
  
  static void hammereditor_tick(t_hammerfile *f)
  {
!     sys_vgui("hammereditor_close .%x 1\n", (int)f);
  }
  
  void hammereditor_close(t_hammerfile *f, int ask)
  {
!     if (ask && f->f_editorfn)
  	/* hack: deferring modal dialog creation in order to allow for
  	   a message box redraw to happen -- LATER investigate */
   	clock_delay(f->f_editorclock, 0);
      else
! 	sys_vgui("hammereditor_close .%x 0\n", (int)f);
  }
  
***************
*** 151,154 ****
--- 188,197 ----
  }
  
+ void hammereditor_setdirty(t_hammerfile *f, int flag)
+ {
+     if (f->f_editorfn)
+ 	sys_vgui("hammereditor_setdirty .%x %d\n", (int)f, flag);
+ }
+ 
  static void hammereditor_clear(t_hammerfile *f)
  {

Index: file.h
===================================================================
RCS file: /cvsroot/pure-data/externals/miXed/shared/hammer/file.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** file.h	27 Jan 2005 14:42:54 -0000	1.3
--- file.h	28 Feb 2005 13:10:40 -0000	1.4
***************
*** 12,18 ****
  typedef void (*t_hammerembedfn)(t_pd *, t_binbuf *, t_symbol *);
  
! void hammereditor_open(t_hammerfile *f, char *title);
  void hammereditor_close(t_hammerfile *f, int ask);
  void hammereditor_append(t_hammerfile *f, char *contents);
  void hammerpanel_open(t_hammerfile *f, t_symbol *inidir);
  void hammerpanel_setopendir(t_hammerfile *f, t_symbol *dir);
--- 12,19 ----
  typedef void (*t_hammerembedfn)(t_pd *, t_binbuf *, t_symbol *);
  
! void hammereditor_open(t_hammerfile *f, char *title, char *owner);
  void hammereditor_close(t_hammerfile *f, int ask);
  void hammereditor_append(t_hammerfile *f, char *contents);
+ void hammereditor_setdirty(t_hammerfile *f, int flag);
  void hammerpanel_open(t_hammerfile *f, t_symbol *inidir);
  void hammerpanel_setopendir(t_hammerfile *f, t_symbol *dir);





More information about the Pd-cvs mailing list