From 34b306bf1bb7263d79421d0a99b9d81f0aea18b6 Mon Sep 17 00:00:00 2001
From: Allanis <allanis@saracraft.net>
Date: Sat, 13 Apr 2013 19:40:18 +0100
Subject: [PATCH] [Add] Made resedit a little prettier.

---
 utils/resedit/space.py  |  65 ++++++++++++++++++++++++++++++----------
 utils/resedit/space.pyc | Bin 10533 -> 11155 bytes
 2 files changed, 50 insertions(+), 15 deletions(-)

diff --git a/utils/resedit/space.py b/utils/resedit/space.py
index 212381e..4eead70 100644
--- a/utils/resedit/space.py
+++ b/utils/resedit/space.py
@@ -69,7 +69,9 @@ class space:
     col.add_attribute(cell, 'text', 0)
     self.__swidget("treSystems").set_model(self.tree_systems)
 
+    # Custom widget drawing area thingy.
     self.zoom = 1
+    self.space_sel = ""
     area = self.__swidget("draSpace")
     area.set_events(gtk.gdk.EXPOSURE_MASK
         | gtk.gdk.LEAVE_NOTIFY_MASK
@@ -187,8 +189,11 @@ class space:
     # Important thingies.
     tree = self.__swidget("treSystems")
     model = tree.get_model()
-    iter = tree.get_selection().get_selected()[1]
-    p = model.iter_parent(iter)
+    try:
+      iter = tree.get_selection().get_selected()[1]
+      p = model.iter_parent(iter)
+    except:
+      return None
     if p == None:
       return model.get_value(iter, 0)
     else:
@@ -202,6 +207,7 @@ class space:
 
   def __space_reset(self, wgt=None, event=None):
     self.x = self.y = 0
+    self.space_sel = ""
     self.__space_draw()
 
   def __space_down(self, wgt, event):
@@ -209,20 +215,29 @@ class space:
       x = event.x
       y = event.y
 
+      wx, wy, ww, wh = self.__swidget("draSpace").get_allocation()
+      mx = x - (self.x*self.zoom + ww/2)
+      my = y - (self.y*self.zoom + wh/2)
+
       # Modify the current position.
       if self.__swidget("butReposition").get_active() and self.cur_system != "":
-        wx, wy, ww, wh = self.__swidget("draSpace").get_allocation()
-
-        mx = x - (self.x*self.zoom + ww/2)
-        my = y - (self.y*self.zoom + wh/2)
-
         system = self.systems[self.cur_system]
-        system["pos"]["x"] = str(mx)
-        system["pos"]["y"] = str(-my)
+        system["pos"]["x"] = str(int(mx))
+        system["pos"]["y"] = str(int(-my))
 
         self.__space_draw()
 
         self.__swidget("butReposition").set_active(False)
+      else:
+        r = 15
+        for name, sys in self.systems.items():
+          sx = int(sys["pos"]["x"])
+          sy = -int(sys["pos"]["y"])
+
+          if abs(sx-mx) < r and abs(sy-my) < r:
+            self.space_sel = name
+            self.__space_draw()
+            break
 
       self.lx = x
       self.ly = y
@@ -266,17 +281,28 @@ class space:
 
   def __space_draw(self, wgt=None, event=None):
     area = self.__swidget("draSpace")
-    style = area.get_style()
-    gc = style.fg_gc[gtk.STATE_NORMAL]
-    bg_gc = style.bg_gc[gtk.STATE_NORMAL]
     wx, wy, ww, wh = area.get_allocation()
     cx = self.x*self.zoom + ww/2
     cy = self.y*self.zoom + wh/2
     r = 15
 
+    # Colour stuff.
+    sys_gc = area.window.new_gc()
+    col = area.get_colormap().alloc_color("yellow")
+    sys_gc.foreground = col
+    bg_gc = area.window.new_gc()
+    col = area.get_colormap().alloc_color("black")
+    bg_gc.foreground = col
+    jmp_gc = area.window.new_gc()
+    col = area.get_colormap().alloc_color("blue")
+    jmp_gc.foreground = col
+    sel_gc = area.window.new_gc()
+    col = area.get_colormap().alloc_color("red")
+    sel_gc.foreground = col
+
     # Cleanup.
     area.window.draw_rectangle(bg_gc, True, 0, 0, ww, wh)
-    area.window.draw_rectangle(gc, False, 0, 0, ww-1, wh-1)
+    area.window.draw_rectangle(sys_gc, False, 0, 0, ww-1, wh-1)
 
     for sys_name, system in self.systems.items():
       sx = int(system["pos"]["x"])
@@ -291,11 +317,20 @@ class space:
         jdx = int(cx+jsx*self.zoom)
         jdy = int(cy+jsy*self.zoom)
 
-        area.window.draw_line(gc, dx, dy, jdx, jdy)
+        area.window.draw_line(jmp_gc, dx, dy, jdx, jdy)
 
       # Draw circle.
+      if sys_name == self.space_sel:
+        gc = sel_gc
+      else:
+        gc = sys_gc
+      if sys_name == self.__curSystem():
+        gc2 = jmp_gc
+      else:
+        gc2 = bg_gc
+
       area.window.draw_arc(gc, True, dx-r/2, dy-r/2, r, r, 0, 360*64)
-      area.window.draw_arc(bg_gc, True, dx-r/2+2, dy-r/2+2, r-4, r-4, 0, 360*64)
+      area.window.draw_arc(gc2, True, dx-r/2+2, dy-r/2+2, r-4, r-4, 0, 360*64)
 
       # Draw name.
       layout = area.create_pango_layout(sys_name)
diff --git a/utils/resedit/space.pyc b/utils/resedit/space.pyc
index cdc9586bf3ca128c14fc41bf058821afd94da707..04156e656545c594022b9f4d99a5f1ffc139d424 100644
GIT binary patch
delta 3123
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
PoRP&l5PwwOEPwESzabr)

delta 2693
zcmaJ@Uu;ul6hGhX|36zxyRPj9V*|H!1A&PW6EQN}FbEsuZa4{>wY1&n=r&j{u$nd%
z_kcbS(NBqQB8iD_s51tA^2NkIF~-E0m|*mQ#3z06%@;ktbK7ns(QNm3&pF@u&N<)t
z&N;Vw>V4Dg_^ZYL*sYJ;WsiDg?Pbqhb*4fzAD~>ARuxr!RPoV#Cs{1qO7q(qL>C>d
zi?%nZ?k3ekhk3KY)*$7!5KQi%RYSk#8#rW}S1>={ORGdG*9MJrALRn%1l2Ems>u%s
zKPb+3X_x;e{hR-|mjfUgPwigY8z`%_PlI=r8qrIw`;?(?xBj8hYd1pA8}4UW$vme2
z+>%vCwHdjpM)i-8fgzK{mV+Tz$eJg?xEL;HikI@Hk0~<(m;g)yPU$_-lWKOY7QLrV
zpMhi>LxCT%_48mA*t39XKnCyvU<U9aAkB~x5Br$1ybN=BD{bXhEc2-TBsLpGH0DKs
z#DGZkaA;UBwg=R8{Zjk89VILtU`V+^2|&$U(EH;HYE8cv-_dn}1xP#}QIcI%RN<5}
zO;k1X{dixX;-nnWd4raxbx&ecS$Zxp<6eQKCH+m}bmVg;ORWrKgj7(qtB`&o`Stvl
z5E~FXv&doNc^dLA2KFcyDG{XEF~?!pcTF^r!q#!gT?$)G`;I`3GT1UX)Pla+kskV%
zg(W8gsjw1<L8ftE;xNituNd`%;xHi{?d<Jd{#)F-DCeN_4yv;b$~mR<-1^bZ?wW_%
zDjv$YC>Bqk*q!xI5ir)gjWxe4c<UyU)c{%28(hT|?iM#Ca~?VfnV$k1gkCxbTYfn_
zC=P%#!56_6f;CWTk>hv3a=N7+LAsS#XoWaeD3x(3EUSgdvzIJ0e_^RqunJ3yW*<w;
zUWNivYGwh=WTwK*TF4`BvRJ#hVoK@xiE2`NnXFZ~oHvg`9hZ%I%oK}D*^D@Ol0{|+
zupfXcvUo3*pe9?TcaCI=rM!6@Dq{dxO5vjH`dk3@DxevLW$2H$4LF+xek;||yL4so
zdsdPvA{A0T<#RlwdW@}Vs}WXhDrWeN<l42aA*FitXWM&g>()>ZB`ag)<#^_G_>$OB
zX=Xp*DFzEM9X>TVd18DhJvKaXY(vaAn;kf!|Ifh9cd&W`5PJjoCO`w;0=%u4yJyw!
z`sePO37Fhi(O5?sq@};=i5mZq{-vk<|9W?JL~1TB^Ag4dx&YlMozTI2fFJ3En_LB`
zv1ZG2RXG|h&!z1|7xL7bcT%$I65iG1-J<J8p-wxg>Y=I^^S^3WzNc1ifHt1$T*0w8
zw*Y)`#WQ-jSNwH3k9-GJxs=(FA9Y@FBkA0C{Li~tan;RVhvqWJ(6YYF&6t2KenD;J
z3k3(QHJT40wvm}TYTBS`D^){eg{cy1bYGHtsT$rW^Aco%>J|}lAgpc&8;5R0#6haq
zUno9<h@-Tk#jKB#BQw{i+6KLvL_w7{?sU7`#a~QpAi(vdhTHar+t?<z@rK*>P2xl&
zVH^$LO@t~@s>G?1pj8*Ci?uN|RZkf&amqMuCOC0?842h%NY1>S&K6qrHuKE7at#|c
z@y_^$jl%NIAm`tH;mTU;MmYcMgE>xIvJonOxb0AF-|+`5R+6;p<k)|uDgMq(q%cIr
z*XLCMynF`i59j9bC7;#8Ij;J`A=c9$^o46NChXybv4}ZUvdYE0%%9o0^jucjTsnMW
za(HqyJ$}L*8$K@UXJuWcg3JsV4aZ<`ia`cnZaH%$y`0ZlnZ>zcUIu~rIy4Zdxt9{G
z=U}q1Xz`@yE`xrtu$b4U`w!I6iVu#A=U67*?Km-|Imp}4l<~27dRSP`uGp`##Yd-Q
z^9qzPBSl=YS4(B#ayFMM^G^l6Gqux?X<y8gmo8Z{Uv8zs9RbXZM_7(=8sym#RtfoY
z>wBqA?HKq@?bAODoIHUv*rO9aEzDhjIlyJWIlv%b58w#k8NkDU-2j=McbQ7@g8_F)
ie>m8geB9@W^!xgP9$z5j4mo`ZUxMH6P_Mo}c;{c)k<sq}