From f782337cc1dea4ef1cd6d21f6d71f04bb553f37b Mon Sep 17 00:00:00 2001 From: Damien Farrell Date: Sun, 23 Feb 2020 14:38:35 +0000 Subject: [PATCH] fixes and snap re-added --- CHANGES | 1 + gui/dataexplore.desktop | 6 +++++ img/logo.png | Bin 1161 -> 4439 bytes pandastable/app.py | 4 ++-- pandastable/core.py | 47 ++++++++++++++++++++++++++++------------ setup.py | 2 +- snapcraft.yaml | 43 ++++++++++++++++++++++++++++++++++++ 7 files changed, 86 insertions(+), 17 deletions(-) create mode 100644 gui/dataexplore.desktop create mode 100644 snapcraft.yaml diff --git a/CHANGES b/CHANGES index 902584b..4ee240d 100644 --- a/CHANGES +++ b/CHANGES @@ -10,6 +10,7 @@ Added editable parameter to Table Added enable_menus parameter Option to import numbers as string Changed to pickle for dataexplore project files +Fixes to syncing of rowcolors ------ 0.12.1 diff --git a/gui/dataexplore.desktop b/gui/dataexplore.desktop new file mode 100644 index 0000000..128fec2 --- /dev/null +++ b/gui/dataexplore.desktop @@ -0,0 +1,6 @@ +[Desktop Entry] +Name=DataExplore +Exec=dataexplore +Type=Application +Icon=${SNAP}/meta/gui/icon.png +Categories=Education; diff --git a/img/logo.png b/img/logo.png index 99b1a7058963e055c3849f3c4816905e1c419597..0d2ded8271a333b5a06052bffc76caf50b90525e 100644 GIT binary patch literal 4439 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 literal 1161 zcmeAS@N?(olHy`uVBq!ia0y~yU}OYh1`al$$mR`)BY+fJlDE4H!+#K5uy^@npa^Gy zM`SSr1CK8VGhRBk)(f{#{JmD8Z=aS+h8KI?y03EDE_LnkC-3@~e4X_<{_B&Y@8>`Jx;uTQQP#c2 zH8a;eds5|ha{mI~lSZO_2R!)p=CSCRpS)8QRaJG7L&eiSsO-(8v!lst58`kYOt4ZoKvPnes}6fl>gfrCMbp@TtzX&@ONwk$If_fL4rv(0pN z*?iw#xn3eg@&`u z#7v!&5m|iyD`wC6R?7eXW7*j|?~T9KP72HW=d1VG@wbJ1-}9Flen(self.rowcolors): - idx = df.index.difference(self.rowcolors.index) - self.rowcolors = self.rowcolors.append(pd.DataFrame(index=idx)) - - #print (self.rowcolors) + rc.set_index(df.index, inplace=True) + elif len(df)>len(rc): + idx = df.index.difference(rc.index) + self.rowcolors = rc.append(pd.DataFrame(index=idx)) + else: + idx = rc.index.difference(df.index) + rc.drop(idx,inplace=True) + #check columns + cols = list(rc.columns.difference(df.columns)) + if len(cols)>0: + rc.drop(cols,1,inplace=True) + cols = list(df.columns.difference(rc.columns)) + if len(cols)>0: + for col in cols: + rc[col] = np.nan return def set_xviews(self,*args): @@ -977,9 +992,9 @@ def addRows(self, num=None): return self.storeCurrent() keys = self.model.autoAddRows(num) + self.update_rowcolors() self.redraw() self.tableChanged() - self.update_rowcolors() return def addColumn(self, newname=None): @@ -1008,6 +1023,7 @@ def addColumn(self, newname=None): self.storeCurrent() self.model.addColumn(newname, dtype) self.parentframe.configure(width=self.width) + self.update_rowcolors() self.redraw() self.tableChanged() return @@ -1025,6 +1041,7 @@ def deleteRow(self): self.model.deleteRows(rows) self.setSelectedRow(0) self.clearSelected() + self.update_rowcolors() self.redraw() else: n = messagebox.askyesno("Delete", @@ -1036,6 +1053,7 @@ def deleteRow(self): self.model.deleteRows([row]) self.setSelectedRow(row-1) self.clearSelected() + self.update_rowcolors() self.redraw() return @@ -1061,6 +1079,7 @@ def deleteColumn(self): cols = self.multiplecollist self.model.deleteColumns(cols) self.setSelectedCol(0) + self.update_rowcolors() self.redraw() #self.drawSelectedCol() self.tableChanged() @@ -3500,7 +3519,7 @@ def saveAs(self, filename=None): """Save dataframe to file""" if filename == None: - filename = filedialog.asksaveasfilename(parent=self.master, + filename = filedialog.asksaveasfilename(parent=self.master, initialdir = self.currentdir, filetypes=[("pickle","*.pickle"), ("All files","*.*")]) diff --git a/setup.py b/setup.py index b239be4..c7e3a0c 100644 --- a/setup.py +++ b/setup.py @@ -19,7 +19,7 @@ 'datasets/*.csv', 'plugins/*.py','plugins/*.R']}, install_requires=['matplotlib>=2.0', - 'pandas>=0.21', + 'pandas>=0.24', 'numexpr>=2.4', 'xlrd>=0.9', 'future'], diff --git a/snapcraft.yaml b/snapcraft.yaml new file mode 100644 index 0000000..864b1c2 --- /dev/null +++ b/snapcraft.yaml @@ -0,0 +1,43 @@ +name: dataexplore +version: '0.12.2' +#version-script: git describe --abbrev=1 --tags +summary: data plotting and analysis package +description: | + DataExplore is an open source desktop application for data analysis and plotting + intended for use in both research and education. The program allows quick + visualization of data, table manipulation tools and supports large data tables. + +base: core18 +grade: stable +confinement: strict +icon: img/logo.png +#adopt-info: dataexplore + +apps: + dataexplore: + command: desktop-launch $SNAP/bin/dataexplore + plugs: [desktop,desktop-legacy,unity7,home] + +parts: + dataexplore: + plugin: python + python-version: python3 + source: . + stage-packages: + [python3-tk,xsel,fontconfig-config,fonts-freefont-ttf,ttf-ubuntu-font-family, + fonts-liberation,ttf-dejavu-core,ttf-mscorefonts-installer] + after: [desktop-glib-only] + +# files: #to deal with problem finding init.tcl +# plugin: dump +# source: /usr/share/tcltk/ +# organize: +# '*': ./usr/lib/ + desktop-glib-only: + source: https://github.com/ubuntu/snapcraft-desktop-helpers.git + source-subdir: glib-only + plugin: make + build-packages: + - libglib2.0-dev + stage-packages: + - libglib2.0-bin