@@ -5276,66 +5276,72 @@ def edit_server(self):
52765276 """
52775277 edit existing server
52785278 """
5279- dialogs .server .edit ()
5279+ # issue #1114 - do not allow editing of servers when no server is selected nor doesn't exist
5280+ if dialogs .settings .window .list_servers .currentItem ():
5281+ dialogs .server .edit ()
52805282
52815283 @Slot ()
52825284 def copy_server (self ):
52835285 """
52845286 copy existing server
52855287 """
5286- dialogs .server .copy ()
5288+ # issue #1114 - do not allow editing of servers when no server is selected nor doesn't exist
5289+ if dialogs .settings .window .list_servers .currentItem ():
5290+ dialogs .server .copy ()
52875291
52885292 @Slot ()
52895293 def delete_server (self ):
52905294 """
52915295 delete server, stop its thread, remove from config and list
52925296 """
5293- # server to delete from current row in servers list
5294- server = conf .servers [self .window .list_servers .currentItem ().text ()]
5295-
5296- reply = QMessageBox .question (self .window , 'Nagstamon' ,
5297- f'Do you really want to delete monitor server <b>{ server .name } </b>?' ,
5298- QMessageBox .StandardButton .Yes | QMessageBox .StandardButton .No ,
5299- QMessageBox .StandardButton .No )
5300-
5301- if reply == QMessageBox .StandardButton .Yes :
5302- # in case server is enabled delete its vbox
5303- if server .enabled :
5304- for vbox in statuswindow .servers_vbox .children ():
5305- if vbox .server .name == server .name :
5306- # stop thread by falsificate running flag
5307- vbox .table .worker .running = False
5308- vbox .table .worker .finish .emit ()
5309- break
5310-
5311- # kick server out of server instances
5312- servers .pop (server .name )
5313- # dito from config items
5314- conf .servers .pop (server .name )
5315-
5316- # refresh list
5317- # row index 0 to x
5318- row = self .window .list_servers .currentRow ()
5319- # count real number, 1 to x
5320- count = self .window .list_servers .count ()
5297+ # issue #1114 - do not allow editing of servers when no server is selected nor doesn't exist
5298+ if dialogs .settings .window .list_servers .currentItem ():
5299+ # server to delete from current row in servers list
5300+ server = conf .servers [self .window .list_servers .currentItem ().text ()]
5301+
5302+ reply = QMessageBox .question (self .window , 'Nagstamon' ,
5303+ f'Do you really want to delete monitor server <b>{ server .name } </b>?' ,
5304+ QMessageBox .StandardButton .Yes | QMessageBox .StandardButton .No ,
5305+ QMessageBox .StandardButton .No )
5306+
5307+ if reply == QMessageBox .StandardButton .Yes :
5308+ # in case server is enabled delete its vbox
5309+ if server .enabled :
5310+ for vbox in statuswindow .servers_vbox .children ():
5311+ if vbox .server .name == server .name :
5312+ # stop thread by falsificate running flag
5313+ vbox .table .worker .running = False
5314+ vbox .table .worker .finish .emit ()
5315+ break
53215316
5322- # if deleted row was the last line the new current row has to be the new last line, accidently the same as count
5323- if row == count - 1 :
5324- # use the penultimate item as the new current one
5325- row = count - 2
5326- else :
5327- # go down one row
5328- row = row + 1
5317+ # kick server out of server instances
5318+ servers .pop (server .name )
5319+ # dito from config items
5320+ conf .servers .pop (server .name )
5321+
5322+ # refresh list
5323+ # row index 0 to x
5324+ row = self .window .list_servers .currentRow ()
5325+ # count real number, 1 to x
5326+ count = self .window .list_servers .count ()
5327+
5328+ # if deleted row was the last line the new current row has to be the new last line, accidently the same as count
5329+ if row == count - 1 :
5330+ # use the penultimate item as the new current one
5331+ row = count - 2
5332+ else :
5333+ # go down one row
5334+ row = row + 1
53295335
5330- # refresh list and mark new current row
5331- self .refresh_list (list_widget = self .window .list_servers ,
5332- list_conf = conf .servers ,
5333- current = self .window .list_servers .item (row ).text ())
5334- del (row , count )
5336+ # refresh list and mark new current row
5337+ self .refresh_list (list_widget = self .window .list_servers ,
5338+ list_conf = conf .servers ,
5339+ current = self .window .list_servers .item (row ).text ())
5340+ del (row , count )
53355341
5336- # delete server config file from disk
5337- conf .delete_file ('servers' , 'server_{0}.conf' .format (quote (server .name , safe = '' )))
5338- del server
5342+ # delete server config file from disk
5343+ conf .delete_file ('servers' , 'server_{0}.conf' .format (quote (server .name , safe = '' )))
5344+ del server
53395345
53405346 def refresh_list (self , list_widget , list_conf , current = '' ):
53415347 """
@@ -6022,6 +6028,7 @@ def edit(self, server_name=None, show_options=False):
60226028 edit existing server
60236029 when called by Edit button in ServerVBox use given server_name to get server config
60246030 """
6031+
60256032 self .mode = 'edit'
60266033 # shorter server conf
60276034 if server_name is None :
0 commit comments