示例#1
0
  def leftcol_btn_press_db(button):
    # update the list of tables and associated buttons
    db_tables = user_info.db_obj.gettables(user_info.db_conn)
    table_buttons = urwid.Pile(
      [urwid.AttrWrap( urwid.Button(txt, leftcol_btn_press_table), 'btn', 'btnf') for txt in db_tables ])
    left_column.original_widget = urwid.Padding (urwid.Pile([
          blank,
          urwid.Text(text_leftcol1_1, align='center'),
          db_button,
          urwid.Divider("="),
          blank,
          urwid.Text(text_leftcol2_1, align='center'),
          table_buttons,
          blank
        ])
      , left=1, right=2)

    # update the top menu button selection
    secondary_top.original_widget = urwid.AttrWrap(urwid.Padding(blank), 'bg')   
    main_top.original_widget = urwid.Columns([
      ('fixed', 13, db_structure_button),
      ('fixed', 3, urwid.Text(u"  ")),
      ('fixed', 16, db_createtable_button)
    ])

    main_padding.original_widget = urwid.Pile([
      #tool bar menu
      urwid.AttrWrap( urwid.Divider("-"), 'topmenu'),
      urwid.AttrWrap( main_top, 'topmenu'),
      urwid.AttrWrap( urwid.Divider("-"), 'topmenu'),
      blank,
      blank,
      #main body
      main_body
    ])

    main_body.original_widget = DBstructure.show_db_structure(user_info)
    selected.set_text([u" Selected Database: ", button.get_label()])
示例#2
0
def show_main_view(frame, body, user_info):
  blank = urwid.Divider()

  text_instructions = (u"This program allows you to connect to a PostgreSQL or MySQL database and then perform operations on that database. The program is written in python and is an ncurses based command line tool. Anything within < > brackets is a selectable button. If the tables do not look right, please make the console window wider.")

  #--------------------------------------------------------------------
  #This creates the widget for the top most bar

  #Signal Handler for the Run SQL button
  def run_sql(button):
    #run the code that generates the run sql input view
    main_body.original_widget = runsql.show_runsql(frame, body, user_info)

  #Creating the widget that holds the top bar information
  selected = urwid.Text([u" Selected Database: ", user_info.db_name])
  top_bar = urwid.Columns([
    urwid.AttrWrap( selected, 'topmenu'),
    ('fixed', 15, urwid.AttrWrap( urwid.Padding( urwid.Button(
          u"Run SQL", run_sql), 
        right=4), 
      'btnf', 'btn'))
  ])
  #END~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


  #--------------------------------------------------------------------
  #This creates the left column widget
  text_leftcol1_1 = (u"Database:")
  text_leftcol2_1 = (u"Tables:")

  #signal handler for left column database button
  def leftcol_btn_press_db(button):
    # update the list of tables and associated buttons
    db_tables = user_info.db_obj.gettables(user_info.db_conn)
    table_buttons = urwid.Pile(
      [urwid.AttrWrap( urwid.Button(txt, leftcol_btn_press_table), 'btn', 'btnf') for txt in db_tables ])
    left_column.original_widget = urwid.Padding (urwid.Pile([
          blank,
          urwid.Text(text_leftcol1_1, align='center'),
          db_button,
          urwid.Divider("="),
          blank,
          urwid.Text(text_leftcol2_1, align='center'),
          table_buttons,
          blank
        ])
      , left=1, right=2)

    # update the top menu button selection
    secondary_top.original_widget = urwid.AttrWrap(urwid.Padding(blank), 'bg')   
    main_top.original_widget = urwid.Columns([
      ('fixed', 13, db_structure_button),
      ('fixed', 3, urwid.Text(u"  ")),
      ('fixed', 16, db_createtable_button)
    ])

    main_padding.original_widget = urwid.Pile([
      #tool bar menu
      urwid.AttrWrap( urwid.Divider("-"), 'topmenu'),
      urwid.AttrWrap( main_top, 'topmenu'),
      urwid.AttrWrap( urwid.Divider("-"), 'topmenu'),
      blank,
      blank,
      #main body
      main_body
    ])

    main_body.original_widget = DBstructure.show_db_structure(user_info)
    selected.set_text([u" Selected Database: ", button.get_label()])

  #signal handler for left column table buttons
  def leftcol_btn_press_table(button):
    tablename = button.get_label()
    truncate_text = "Truncate '" + tablename + "'"
    drop_text = "Drop '" + tablename + "'"
    table_truncate_btn = urwid.AttrWrap( urwid.Button(truncate_text, btn_press_table_truncate, button), 'btnf', 'btn')
    table_drop_btn = urwid.AttrWrap( urwid.Button(drop_text, btn_press_table_drop, button), 'btnf', 'btn')
    secondary_top.original_widget = urwid.AttrWrap(urwid.Padding( urwid.Columns([
      ('fixed', (len(truncate_text) + 4), table_truncate_btn),
      ('fixed', 3, urwid.Text(u"  ")),
      ('fixed', (len(drop_text) + 4), table_drop_btn)
    ]), left=2, right=2), 'topmenu')

    db_table_structure_btn = urwid.AttrWrap( urwid.Button(u"Structure", leftcol_btn_press_table_structure, button.get_label()), 'btnf', 'btn')
    db_table_browse_btn = urwid.AttrWrap( urwid.Button(u"Browse", leftcol_btn_press_table_browse, button.get_label()), 'btnf', 'btn')
    db_table_edit_btn = urwid.AttrWrap( urwid.Button(u"Edit", leftcol_btn_press_table_edit, button.get_label()), 'btnf', 'btn')
    main_top.original_widget = urwid.Columns([
      ('fixed', 13, db_table_structure_btn),
      ('fixed', 3, urwid.Text(u"   ")),
      ('fixed', 8, db_table_edit_btn),
      ('fixed', 3, urwid.Text(u"  ")),
      ('fixed', 10, db_table_browse_btn),
    ])

    main_padding.original_widget = urwid.Pile([
      #tool bar menu
      urwid.AttrWrap( urwid.Divider("-"), 'topmenu'),
      urwid.AttrWrap( main_top, 'topmenu'),
      urwid.AttrWrap( urwid.Divider("-"), 'topmenu'),
      urwid.AttrWrap( secondary_top, 'topmenu'),
      urwid.AttrWrap( urwid.Divider("-"), 'topmenu'),
      #main body
      main_body
    ])

    main_body.original_widget = TableStructure.show_table_structure(user_info, tablename)
    selected.set_text([u" Selected Table: ", button.get_label()])

  #signal handler for the table 'structure' button
  def leftcol_btn_press_table_structure(button, tablename):
    main_body.original_widget = TableStructure.show_table_structure(user_info, tablename)

  #signal handler for the table 'browse' button
  def leftcol_btn_press_table_browse(button, tablename):
    main_body.original_widget = TableBrowse.showTables(user_info.db_obj.getcolnames(user_info.db_conn, tablename), user_info.db_obj.allrows(user_info.db_conn, tablename), leftcol_btn_press_table_browse, button, tablename, user_info, frame)

  # signal handler for the table 'edit' button
  def leftcol_btn_press_table_edit(button, tablename):
    main_body.original_widget = TableEdit.show_table_edit(frame, body, main_body, user_info, tablename)

  #signal handler for table 'truncate' button
  def btn_press_table_truncate(button, tablebutton):
    main_body.original_widget = TableTruncate.show_table_trunc(frame, user_info, leftcol_btn_press_table, tablebutton)

  #signal handler for table 'drop' button
  def btn_press_table_drop(button, tablebutton):
    main_body.original_widget = TableDrop.show_table_drop(frame, body, user_info,leftcol_btn_press_table, tablebutton)

  #store database name that user is connected to
  db_name = user_info.db_name

  #store the table names
  db_tables = user_info.db_obj.gettables(user_info.db_conn)

  #create the table button widgets
  table_buttons = urwid.Pile(
    [urwid.AttrWrap( urwid.Button(txt, leftcol_btn_press_table), 'btn', 'btnf') for txt in db_tables ])

  #creating variable for database button widget
  db_button = urwid.AttrWrap( urwid.Button(db_name, leftcol_btn_press_db), 'btn', 'btnf')

  #left column widget variable build
  left_column = urwid.AttrWrap( urwid.Padding (urwid.Pile([
          blank,
          urwid.Text(text_leftcol1_1, align='center'),
          db_button,
          urwid.Divider("="),
          blank,
          urwid.Text(text_leftcol2_1, align='center'),
          table_buttons,
          blank
        ])
      , left=1, right=2)
    , 'leftside')
  #END~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


  #--------------------------------------------------------------------
  #This will be the tool bar top widget of the main body
  def db_structure_btn_press(button):
    #replace main body with structure data table
    main_body.original_widget = DBstructure.show_db_structure(user_info)

  def db_createtable_btn_press(button):
    #create a table in the database, if error message, show error
    main_body.original_widget = DBcreatetable.show_db_createtable(frame, body, main_body, user_info)

  text_maintop = u" This is the top section of the main body"
  db_structure_button = urwid.AttrWrap( urwid.Button(u"Structure", db_structure_btn_press), 'btnf', 'btn')
  db_createtable_button = urwid.AttrWrap( urwid.Button(u"Create Table", db_createtable_btn_press), 'btnf', 'btn')

  main_top = urwid.Padding( urwid.Columns([
      ('fixed', 13, db_structure_button),
      ('fixed', 3, urwid.Text(u"  ")),
      ('fixed', 16, db_createtable_button)
    ])
  , left=2, right=2)

  secondary_top = urwid.Padding(blank)
  #END~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


  #--------------------------------------------------------------------
  #This will be the main body widget
  #default view upon first render of screen is database-show structure
  main_body = DBstructure.show_db_structure(user_info)
  #END~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


  #--------------------------------------------------------------------
  #This is creating the listbox that makes up the body of the main frame

  main_padding = urwid.Padding( urwid.Pile([
    #tool bar menu
    urwid.AttrWrap( urwid.Divider("-"), 'topmenu'),
    urwid.AttrWrap( main_top, 'topmenu'),
    urwid.AttrWrap( urwid.Divider("-"), 'topmenu'),
    blank,
    blank,
    #main body
    main_body
  ]), left=0, right=0)

  #This listbox is the main body of the UI
  listbox_content = [
    blank,
    #instructions section
    urwid.Padding(urwid.Text(text_instructions), left=2, right=2),
    blank,
    urwid.AttrWrap( urwid.Divider(), 'topmenu'),
    #top most bar
    top_bar,
    urwid.AttrWrap( urwid.Divider(), 'topmenu'),
    #the 2 columns holding the left and right side of main body
    urwid.Columns([
      #left column menu
      ('fixed', 17, left_column),
      #right column tool bar and main body
      urwid.AttrWrap(main_padding, 'body')
    ])
  ]
  #END~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  
  #this is the widget that acts as the body of the frame and is a ListBox
  listbox = urwid.ListBox(urwid.SimpleListWalker(listbox_content))
  listbox.set_focus(6)
  listbox = urwid.AttrWrap(listbox, 'bg')

  #this substitutes in the old body for this new listbox body
  body.original_widget = listbox
示例#3
0
 def db_structure_btn_press(button):
   #replace main body with structure data table
   main_body.original_widget = DBstructure.show_db_structure(user_info)