viewgit/index.php:465 Only variables should be passed by reference [2048]

viewgit/index.php:466 Non-static method GeSHi::get_language_name_from_extension() should not be called statically [2048]

  1. # -*- coding: utf-8 -*-
  2. ## This library provides User Input fields
  3.  
  4. import gtk, pygtk, gobject, os
  5.  
  6. class LeftAlignedLabel(gtk.Alignment):
  7.  
  8. def __init__(self, markup, left_padding=0):
  9.  
  10. gtk.Alignment.__init__(self, 0,0.5,0,0)
  11.  
  12. label = gtk.Label()
  13. label.set_markup(markup)
  14. plw = PaddingLeftWidget(label, left_padding)
  15.  
  16. self.add(plw)
  17. plw.show()
  18.  
  19. class PaddingLeftWidget(gtk.Table):
  20.  
  21. def __init__(self, widget, padding_left):
  22.  
  23. gtk.Table.__init__(self, 1, 2, False)
  24. label = gtk.Label()
  25. self.set_col_spacing(0, padding_left)
  26. self.attach(label, 0,1,0,1, False, False)
  27. self.attach(widget, 1,2,0,1, False, False)
  28.  
  29. label.show()
  30. widget.show()
  31.  
  32.  
  33. class UsernameField(gtk.Entry):
  34.  
  35. def __init__(self, parent=None, user = None):
  36.  
  37. gtk.Entry.__init__(self)
  38.  
  39. if user is None:
  40. self.set_text( os.getenv("USER") )
  41. else:
  42. self.set_text(user)
  43.  
  44.  
  45. class PasswordField(gtk.Entry):
  46.  
  47. def __init__(self, parent=None):
  48.  
  49. gtk.Entry.__init__(self)
  50.  
  51. self.set_text ("")
  52. self.set_visibility(False)
  53.  
  54. class RemoteHostComboBox(gtk.HBox):
  55.  
  56. def __init__(self, default_hosts):
  57.  
  58. gtk.HBox.__init__(self)
  59. self.combobox = gtk.combo_box_new_text()
  60. for remote_host in default_hosts:
  61. self.combobox.append_text(remote_host)
  62. # Selezioniamo il primo host
  63. self.combobox.set_active(0)
  64.  
  65. self.pack_start(self.combobox)
  66. self.combobox.show()
  67. def get_remote_host(self):
  68. return self.combobox.get_active_text()
  69.  
  70. class AuthBlock(gtk.HBox):
  71.  
  72. def __init__(self, default_spacing=5, left_padding=0, user = None,
  73. default_hosts = ['ssh.dm.unipi.it']):
  74.  
  75. gtk.HBox.__init__(self)
  76.  
  77. self.user_field = UsernameField(user = user)
  78. self.password_field = PasswordField()
  79.  
  80. vbox1 = gtk.VBox(False, default_spacing)
  81. vbox2 = gtk.VBox(False, default_spacing)
  82.  
  83. label = LeftAlignedLabel("Server SSH", 20)
  84. vbox1.pack_start (label)
  85. label.show ()
  86.  
  87. if len(default_hosts) == 0:
  88. raise IndexError('Not remote hosts specified. Aborting')
  89.  
  90. self.remote_host = RemoteHostComboBox(default_hosts)
  91. vbox2.pack_start(self.remote_host)
  92. self.remote_host.show()
  93.  
  94. label = LeftAlignedLabel("Utente", 20)
  95. vbox1.pack_start( label )
  96. label.show()
  97.  
  98. label = LeftAlignedLabel("Password", 20)
  99. vbox1.pack_start( label )
  100. label.show()
  101.  
  102. vbox2.pack_start(self.user_field)
  103. vbox2.pack_start(self.password_field)
  104.  
  105. self.user_field.show()
  106. self.password_field.show()
  107.  
  108. self.pack_start(vbox1)
  109. self.pack_start(vbox2)
  110.  
  111. vbox1.show()
  112. vbox2.show()
  113.  
  114. # If user is given give focus to password,
  115. # otherwise give focus to username
  116. if user is None:
  117. self.user_field.grab_focus ()
  118. else:
  119. self.password_field.grab_focus ()
  120.  
  121. def get_username(self):
  122. return self.user_field.get_text()
  123.  
  124. def get_password(self):
  125. return self.password_field.get_text()
  126.  
  127. def get_remote_host(self):
  128. return self.remote_host.get_remote_host()
  129.  
  130. class PrintButton(gtk.Button):
  131.  
  132. def __init__(self, parent=None):
  133.  
  134. gtk.Button.__init__(self, "Stampa")
  135.  
  136. def set_state(self, state):
  137. if state is "idle":
  138. self.set_label ("Stampa")
  139. elif state is "printing":
  140. self.set_label ("Stampa in corso")
  141. # Questa รจ una sporca soluzione per fare in modo che
  142. # il cambio di stato si veda.
  143. while gtk.events_pending():
  144. gtk.main_iteration (False)
  145. else:
  146. raise RuntimeError('Invalid state %s' % state)
  147.  
  148. class QueueButton(gtk.Button):
  149.  
  150. def __init__(self):
  151. gtk.Button.__init__(self, "Visualizza coda")
  152.  
  153. def set_state(self, state):
  154. if state is "idle":
  155. self.set_label("Visualizza coda")
  156. else:
  157. self.set_label("Recupero coda in corso...")
  158. while gtk.events_pending():
  159. gtk.main_iteration (False)
  160.  
  161.  
  162.  
  163.  
  164. class SelectFileWidget(gtk.HBox):
  165.  
  166. def __init__(self, filename = None):
  167. gtk.HBox.__init__(self)
  168. self.set_spacing (5)
  169.  
  170. self.Filename = gtk.Entry()
  171. if filename is not None:
  172. self.Filename.set_text(filename)
  173.  
  174. self.Browser = gtk.Button("Sfoglia")
  175.  
  176. self.Filename.set_tooltip_text("Se hai bisogno di stampare \
  177. da un programma clicca File -> Stampa -> Stampa su file e crea un \
  178. file .ps da selezionare qui")
  179.  
  180. self.Browser.connect('clicked', self.SelectFile)
  181.  
  182. self.pack_start(self.Filename, 1)
  183. self.pack_start(self.Browser, 1)
  184. self.Filename.show()
  185. self.Browser.show()
  186.  
  187. def SelectFile(self, window):
  188.  
  189. chooser = gtk.FileChooserDialog(
  190. title = "Seleziona file da stampare",
  191. parent = None,
  192. action=gtk.FILE_CHOOSER_ACTION_OPEN,
  193. buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK) )
  194. if chooser.run() == gtk.RESPONSE_OK:
  195. self.Filename.set_text(chooser.get_filename())
  196.  
  197. chooser.destroy()
  198.  
  199. def GetFile(self):
  200. return self.Filename.get_text()
  201.  
  202.  
  203. class PrinterComboBox(gtk.HBox):
  204.  
  205. def __init__(self, printers = []):
  206.  
  207. gtk.HBox.__init__(self)
  208. self.combobox = gtk.combo_box_new_text()
  209. for printer in printers:
  210. self.combobox.append_text(printer)
  211.  
  212. self.combobox.set_active(0)
  213.  
  214. self.pack_start( self.combobox )
  215. self.combobox.show()
  216.  
  217. def get_printer(self):
  218. return self.combobox.get_active_text()
  219.  
  220.  
  221. class PagePerPageComboBox(gtk.HBox):
  222.  
  223. def __init__(self):
  224. gtk.HBox.__init__(self)
  225. self.combobox = gtk.combo_box_new_text()
  226. self.combobox.append_text("1")
  227. self.combobox.append_text("2")
  228. self.combobox.append_text("4")
  229.  
  230. self.combobox.set_active(0)
  231.  
  232. self.pack_start( self.combobox )
  233. self.combobox.show()
  234.  
  235. def get_page_per_page(self):
  236. return self.combobox.get_active_text()
  237.  
  238. class PrinterSettingsBlock(gtk.HBox):
  239.  
  240. def __init__(self, default_spacing = 5, left_padding=0, filename = None, printers = []):
  241.  
  242. gtk.HBox.__init__(self)
  243.  
  244. vbox1 = gtk.VBox(False, default_spacing)
  245. vbox2 = gtk.VBox(False, default_spacing)
  246.  
  247. self.set_spacing(default_spacing)
  248.  
  249. label = LeftAlignedLabel("Stampante", 20)
  250. vbox1.pack_start(label)
  251. label.show()
  252.  
  253. self.printer_chooser = PrinterComboBox(printers = printers)
  254. vbox2.pack_start( self.printer_chooser )
  255. self.printer_chooser.show()
  256.  
  257. label = LeftAlignedLabel("File", 20)
  258. vbox1.pack_start( label )
  259. label.show()
  260.  
  261. self.select_file_widget = SelectFileWidget(filename)
  262. vbox2.pack_start (self.select_file_widget)
  263. self.select_file_widget.show()
  264.  
  265. label = LeftAlignedLabel("Pagine per foglio", 20)
  266. vbox1.pack_start(label)
  267. label.show()
  268.  
  269. self.page_per_page = PagePerPageComboBox()
  270. vbox2.pack_start(self.page_per_page)
  271. self.page_per_page.show()
  272.  
  273. label = LeftAlignedLabel("Numero di copie", 20)
  274. vbox1.pack_start(label)
  275. label.show()
  276.  
  277. self.copies = CopiesField()
  278. vbox2.pack_start(self.copies)
  279. self.copies.show()
  280.  
  281. self.pack_start(vbox1)
  282. self.pack_start(vbox2)
  283.  
  284. vbox1.show()
  285. vbox2.show()
  286.  
  287. def get_filename(self):
  288. return self.select_file_widget.GetFile()
  289.  
  290. def get_printer(self):
  291. return self.printer_chooser.get_printer()
  292.  
  293. def get_page_per_page(self):
  294. return self.page_per_page.get_page_per_page()
  295.  
  296. def get_copies(self):
  297. return self.copies.get_copies()
  298.  
  299.  
  300.  
  301. class PageRangeBlock(gtk.VBox):
  302.  
  303. def __init__(self):
  304.  
  305. gtk.VBox.__init__(self)
  306.  
  307. self.check_button = gtk.CheckButton("Stampa solo una parte del documento",
  308. True)
  309.  
  310. self.check_button.set_active(False)
  311.  
  312. self.check_button.connect('clicked', self.check_button_callback)
  313.  
  314. self.pack_start(self.check_button)
  315. self.check_button.show()
  316.  
  317. self.hbox = gtk.HBox()
  318.  
  319. self.range_field = gtk.Entry()
  320. self.range_field.set_tooltip_text("Indicare pagine e/o intervalli separati da virgole, ad esempio \"1,3-10,12,13,15-17\"")
  321.  
  322. label = LeftAlignedLabel("Range di pagine", 20)
  323. self.hbox.pack_start(label)
  324. self.hbox.pack_start(self.range_field)
  325. label.show()
  326.  
  327. self.pack_start(self.hbox)
  328.  
  329. self.range_field.show()
  330.  
  331. self.hbox.show()
  332. self.hbox.set_spacing( 5 )
  333. self.hbox.set_sensitive(False)
  334.  
  335. def check_button_callback(self, obj):
  336.  
  337. if self.check_button.get_active() == False:
  338. self.hbox.set_sensitive(False)
  339. else:
  340. self.hbox.set_sensitive(True)
  341.  
  342. def get_page_range(self):
  343.  
  344. if self.check_button.get_active() == False:
  345. return None
  346.  
  347. return self.range_field.get_text()
  348.  
  349.  
  350. class CopiesField(gtk.SpinButton):
  351.  
  352. def __init__(self):
  353.  
  354. gtk.SpinButton.__init__(self)
  355. self.set_digits(0)
  356. self.set_increments(1,10)
  357. self.set_range(0,999)
  358. self.set_value(1)
  359.  
  360. def get_copies(self):
  361. return str(self.get_value())
  362.  
  363.  
  364.  
  365. class OrientationSelect(gtk.HBox):
  366.  
  367. def __init__(self):
  368.  
  369. gtk.HBox.__init__(self)
  370.  
  371. # Un etichetta per capire a cosa servono questi radio button
  372. label = LeftAlignedLabel("Orientamento", 20)
  373. self.pack_start( label )
  374. label.show()
  375.  
  376. # I radio button :)
  377. self.landscape = gtk.RadioButton(None,
  378. "Orizzontale",
  379. True)
  380.  
  381. self.portrait = gtk.RadioButton(self.landscape,
  382. "Verticale",
  383. True)
  384. self.pack_start(self.landscape)
  385. self.pack_start(self.portrait)
  386.  
  387. self.landscape.show ()
  388. self.portrait.show ()
  389.  
  390. self.portrait.set_active(True)
  391.  
  392. def get_orientation(self):
  393.  
  394. if self.landscape.get_active():
  395. return "landscape"
  396.  
  397. if self.portrait.get_active():
  398. return ""
  399.  
  400. ## Questo non dovrebbe succedere
  401. return None
  402.  
  403. class SidesSelect(gtk.VBox):
  404.  
  405. def __init__(self):
  406.  
  407. gtk.VBox.__init__(self)
  408.  
  409. self.one_sided = gtk.RadioButton(None,
  410. "Solo fronte",
  411. True)
  412. self.two_sided_short_edge = gtk.RadioButton(self.one_sided,
  413. "Fronte retro sul lato corto",
  414. True)
  415. self.two_sided_long_edge = gtk.RadioButton(self.one_sided,
  416. "Fronte retro sul lato lungo",
  417. True)
  418.  
  419. for widget in (self.one_sided,
  420. self.two_sided_short_edge,
  421. self.two_sided_long_edge) :
  422. a = PaddingLeftWidget(widget, 20)
  423. self.pack_start(a)
  424. a.show()
  425.  
  426. self.two_sided_long_edge.set_active(True)
  427.  
  428. def get_sides_select(self):
  429.  
  430. if( self.one_sided.get_active() ):
  431. return "one-sided"
  432.  
  433. if( self.two_sided_short_edge.get_active() ):
  434. return "two-sided-short-edge"
  435.  
  436. if( self.two_sided_long_edge.get_active() ):
  437. return "two-sided-long-edge"
  438.  
  439.  
  440.  
  441.  
  442.  
  443.  
  444.